1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-10-28 04:46:17 +00:00
Commit Graph

3514 Commits

Author SHA1 Message Date
Alexander Barton
f3c89af845 Explicitely cast Conf_MaxPenaltyTime (time_t) to "long"
This fixes the following compiler warning, for example on OpenBSD:

  conf.c: In function 'Conf_Test':
  conf.c:391: warning: format '%ld' expects type 'long int', but argument
                       2 has type 'time_t'

Thanks to Götz Hoffart for reporting this!
2020-12-29 21:45:09 +01:00
Alexander Barton
d777ce6600 Don't set AI_ADDRCONFIG, even when it exists
Basically, the issue described in #281 is that the test suite uses the
IPv4 address 127.0.0.1 on an IPv6-only host. But this is the "safest"
thing to do in (almost) all other setups: relaying on DNS host names
makes things even more complex, as different systems map 127.0.0.1
differently (including the reverse lookup; that's why we switched to
127.0.0.1 back in 2014, see commit 3f807e1045).

But with AI_ADDRCONFIG set, on an IPv6-only host, we prevent 127.0.0.1
to get translated properly, even when the loopback interface has this
address configured! So don't set it any more.

The drawback is that the resolver possibly returns more addresses now,
even of an unsupported/not connected address family; but this shouldn't
do much harm in practice, as ngIRCd iterates over all returned addresses
while trying to establish an outgoing connection.

Closes #281.
2020-12-29 21:12:43 +01:00
Alexander Barton
5ccdb26885 FAQ.txt: There is no "CVS" anymore, we use Git! 2020-11-28 21:22:34 +01:00
Rolf Eike Beer
c7781cf7ef Fix typo in comment: operaor -> operator 2020-11-02 12:13:02 +01:00
Alexander Barton
2056de82ae Revert "Show allowed channel types in ISUPPORT(005) numeric only"
The ISUPPORT(005) numeric lists only channel prefixes which are listed
in the "AllowedChannelTypes" configuration option. And if this is the
empty string ("") for example, this now results in IRC clients assuming
"oh, no channel prefix characters at all, so no channels at all, so no
PRIVMSG can go to any channel" -- which is not the case when there are
pre-defined channel set up or other servers still having channels!

So "allowed channel types" != "supported channel types", and we always
have to list all supported ones in the ISUPPORT(005) numeric!

This reverts commit 4b7e8db418.

Closes #285.
2020-11-02 11:45:41 +01:00
Alexander Barton
5cf0eabd84 Test suite: Wait 2 seconds after reloading the daemon
On reload, all listening ports are closed, configuration updated, and
then opened again. Which leads to subsequent tests running while the
daemon isn't listening on any ports, and that's why the tests fail.

The "proper" way whould be to loop and check for open ports, but waiting
is what the start-server.sh script does right now, so stick with this in
reload-server.sh for now as well.

This fixes the issue, at least on my RaspberryPi ...

Closes #280.
2020-11-01 17:25:39 +01:00
Alexander Barton
6e382889a3 Update Platforms.txt
- Update powerpc/apple/darwin8.11.0 (gcc 4.0.1)
- Add x86_64/apple/darwin19.6.0 (Apple clang 12.0.0)
- Add x86_64/unknown/freebsd12.1 (FreeBSD clang 8.0.1)
- Update x86_64/pc/linux-gnu (gcc 8.3.0)
- Add x86_64/unknown/netbsd9.0 (gcc 7.4.0)
- Add x86_64/unknown/openbsd6.6 (gcc 4.2.1)
- Add x86_64/unknown/openbsd6.6 (OpenBSD clang 8.0.1)

Thanks to Götz Hoffart <goetz@hoffart.de> for the PowerPC test!
2020-10-20 21:48:16 +02:00
Alexander Barton
e699325fd0 platformtest.sh: Try to mangle CLang name more intellligently 2020-10-20 21:47:10 +02:00
xnaas
0ae158a492 Fixed Atheme Links
.org and not .net
2020-08-04 13:44:58 +02:00
Alexander Barton
0f717bfd77 ngIRCd Release 26 2020-06-20 15:54:19 +02:00
Alexander Barton
ed9d8e7950 INSTALL.md: Add instructions for ArchLinux (pacman) 2020-06-20 15:54:02 +02:00
Alexander Barton
4bcf4613f9 ngIRCd Release 26~rc2 2020-06-11 17:22:08 +02:00
Alexander Barton
c55a832806 Update NEWS, ChangeLog and doc/Platforms.txt files 2020-06-11 17:13:06 +02:00
Alexander Barton
3dedd57f7f Add AppStream metadata file: contrib/de.barton.ngircd.metainfo.xml 2020-06-11 17:11:15 +02:00
Alexander Barton
07cb8ed9ae Don't send invalid CHANINFO commands when no key is set
It can happen that a channel is +k, but no key is set: for example by
misconfiguring a pre-defined channel. In this case, ngIRCd sent an
invalud CHANINFO command ("CHANINFO #test +Pk  0 :'", note the unset
key represented by the two spaces) to its peers.

Fix this and enhance the CHANINFO documentation.
2020-06-11 16:45:30 +02:00
Alexander Barton
b003d469f1 Update NEWS and ChangeLog files 2020-05-31 19:38:59 +02:00
Alexander Barton
15c7444283 Update description text in manual page, too! 2020-05-26 23:00:25 +02:00
Alexander Barton
eb46f3d96d ngircd.spec: Fix name of README.md and INSTALL.md 2020-05-26 19:55:01 +02:00
Alexander Barton
a84cba8f78 Update description texts
Bring them in line with the updated texts on the homepage.
2020-05-26 19:43:14 +02:00
Alexander Barton
d697de3186 IRC_SQUIT(): Fix use-after-free when unregistering the sending client 2020-05-26 00:05:22 +02:00
Alexander Barton
02cf31c0e2 IRC_SERVER: Make sure that the client sent a prefix
The SERVER command is only valid with a prefix when received from other
servers, so make sure that there is one and disconnect the peer if not
(instead of crashing ...).

This obsoletes PR #275.

Thanks Hilko Bengen (hillu) for finding & reporting this as well for the
patch & pull request! But I think this is the "more correct" fix.
2020-05-25 23:51:00 +02:00
Alexander Barton
430bb22376 Enhance debug logging for PONG commands
Distinguish between expected and unexpected PONG commands.
2020-05-25 23:30:07 +02:00
Alexander Barton
dc6807338e Fix PING-PONG handling when processing backlog in read buffers
Prior to this commit, the PONG wasn't registered correctly, becauuse the
"last ping" time was set to time(NULL), which could be bigger than the
"last data" time stamp, for example when handling the read buffer took
more than 1 second -- and this resulted in the PONG time out kicking in
effectively disconnecting a newly linked server for example, because
ngIRCd thought it was still waiting for a PONG: last data < last ping.

Now the "last ping" value has three possible values:

    0: new connection, no PING, no PONG so far.
    1: got a PONG, no longer waiting for a PONG.
  <t>: time stamp of last sent out PING command.
2020-05-25 22:59:58 +02:00
Alexander Barton
0d503945cb Revert "Set the "last data" time to "last ping" time when updating the latter"
This patch completely broke the PING-PONG logic: now ngIRCd never
disconnects any stale peers but keeps sending out PINGs over and over
again ...

The real issue (server disconnects right after connect) will be fixed in
the next commit, but let's revert to the somewhat "half-broken but
'known' state" first ...

This reverts commit 79a917f954.
2020-05-25 22:59:00 +02:00
Hilko Bengen
bae68eb612 testsuite: Add missing files to EXTRA_DIST
26~rc1 as extracted from tarball cannot be built/tested with SSL
support because of a missing script and certificates.
2020-05-22 17:23:42 +02:00
Alexander Barton
03aec7d0b3 ngIRCd Release 26~rc1 2020-05-10 17:13:51 +02:00
Alexander Barton
5d5fdfb3fd Update config.guess and config.sub to recent versions
- config.guess: 2020-04-26
- config.sub: 2020-05-04

And set both scripts +x, they are executable.
2020-05-10 17:09:23 +02:00
Alexander Barton
05261c020e Update NEWS and ChangeLog files 2020-05-10 01:09:34 +02:00
Alexander Barton
e860807500 Add missing authors to AUTHORS, tweak ".mailmap" file 2020-05-10 00:16:11 +02:00
Alexander Barton
e889de9d92 Tweak & update doc/HowToRelease.txt a bit ... 2020-05-10 00:14:04 +02:00
Alexander Barton
fcf2874a9d Allow more characters per line in MOTD and help text files
Change the line buffer in the Read_TextFile() function from 127 to
COMMAND_LEN (=512) bytes. Lines can't even get that long, because they
have to be prefixed before being sent to the client, so this is a sane
maximum.

This allows for even more "fancy" and "wider" MOTDs :-)

Closes #271.
2020-05-07 18:10:41 +02:00
Alexander Barton
4b7e8db418 Show allowed channel types in ISUPPORT(005) numeric only
Don't show the static list of all possibly available channel types ...

Closes #273.
2020-05-07 18:03:06 +02:00
Alexander Barton
bc22f41c51 Platforms.txt: Add x86_64/apple/darwin19.0.0
- Add x86_64/apple/darwin19.0.0 (Apple clang 11.0)
2020-05-07 17:53:13 +02:00
Alexander Barton
d11f13f187 Update Platforms.txt
- Update powerpc/apple/darwin8.11.0 (gcc 4.0.1)
- Add mips/sgi/irix6.5 (SGI C compiler)
- Add mipsel/unknown/netbsd8.0 (gcc 5.5.0)

Thanks to Götz Hoffart <goetz@hoffart.de>!
2020-05-07 17:52:51 +02:00
Alexander Barton
21f33e5911 SSL test server: Use port 6790, like "test server #2"
Don't use the "standard" IRC SSL port 6697, as this easily collides with
real (ng)IRCd instances running on the same machine.

And by reusing port 6790, which is already used by the "test server #2",
we don't need any other port than the test suite already uses.
2020-05-07 00:02:00 +02:00
Alexander Barton
db88b92c8a Git: Ignore generated files of SSL tests 2020-05-06 23:47:28 +02:00
Alexander Barton
02850008f4
Merge pull request #269 from hillu/gnutls-reload-cert
Add support for GnuTLS certificate reload.

Thanks a lot, Hilko Bengen!
2020-05-06 23:36:19 +02:00
Alexander Barton
52d8fa2c09 Update Client_SetHostname() to not use strpbrk()
Not sure about the portability of strpbrk() in really ancient OS, and
this was the only place where it became used recently in ngIRCd ...
So let's play it safe! ;-)
2020-05-04 00:58:24 +02:00
michi
1f40776bc1 Allow hostmask cloaking when rDNS is disabled 2020-05-04 00:58:24 +02:00
Alexander Barton
387a29a7fd Don't wait for the network when read buffers possibly hold commands
There is no point in waiting up to one second for the network receiving
new data when there is still a read buffer holding at least one command;
we shouldn't waste time but handle it immediately!
2020-05-04 00:46:56 +02:00
Alexander Barton
54fac57603 Handle commands in the read buffer before reading more data
If there are more bytes in the read buffer already than a single valid
IRC command can get long (513 bytes, COMMAND_LEN), wait for this/those
command(s) to be handled first and don't try to read even more data from
the network (which most probably would overflow the read buffer of this
connection soon).
2020-05-04 00:46:56 +02:00
Alexander Barton
9f05f5ee61 Read_Request(): Clean up code and add some more comments
No functional changes.
2020-05-04 00:46:56 +02:00
Alexander Barton
629a45ee0f Revert "Increase read buffer size for server connections"
This reverts commit c6e3c13f27.

This sounded like the right approach at first, but I'm not that sure
that it really makes sense to have different sizes of read buffers: the
per-connection read buffer only needs to keep data that is needed to
parse one full command, be it plain text, encrypted and/or compressed.
Then ngIRCd should handle this one command, move leftover data to the
beginning of the buffer and read the next chunk from the network that is
missing to get the next complete command (512 bytes at max).

So I revert this for now and try to fix the logic in Read_Request(),
which is broken nevertheless, as it results in servers becoming
disconnected during "server burst" when "big" lists are transferred.
2020-05-04 00:46:56 +02:00
Alexander Barton
8d414b079c Correctly use Config_Error() instead of Log() in Read_Config()
The name of the Config_Error() function is misleading: it is not only
used to show configuraton errors, but all messages shown during normal
operation as well as for "config testing": it takes care of the correct
formatting of the messages (syslog, forground logging, config testing).

This fixes commit bb1d014aba.
2020-05-03 17:08:51 +02:00
Alexander Barton
8a37695bf3 contrib/nglog.sh: Looks like GNU awk (gawk) is needed ... 2020-05-03 17:07:51 +02:00
Alexander Barton
71e9bb1ca6 Update Travis-CI configuration, "sudo" is depreacted 2020-05-03 03:15:56 +02:00
Alexander Barton
0dc692b1f7 Log G-/K-Line changes only when not initiated by a server
This prevents the log from becomming spammed during "net bursts".
2020-05-03 03:15:49 +02:00
Alexander Barton
79a917f954 Set the "last data" time to "last ping" time when updating the latter
This is required because the PING can be received quite a bit earlier
than it is actually handled, for example during "server burst" or other
heavy operations:
So the times won't match and PING-PONG logic would become garbled,
because we test for "last ping > last data" to determine if a PING
already was sent or not.
2020-05-03 03:15:38 +02:00
Johann Hartwig Hauschild
11ea6a5070 updating testsuite to support ssl-tests 2020-04-25 00:04:38 +02:00
Alexander Barton
42e8654d7b INSTALL.md: Add not about removed legacy options 2020-04-20 19:31:57 +02:00