hardly ever seen (unless you have +s +j set). For example a bad link::bind-ip only caused
"Couldn't connect to xxxxxx" without any meaningful error message. Additionally, errors
sent to report_baderror() are now logged.
^^ way too long description for a small tweak :p
multiple reference count bugs, one related to sptr->serv->conf, and another one related
to sptr->serv->class. Both caused problems when someone did a /rehash when a server
was in the process of connecting (so it might also happen when connfreq was hit and you
did a /rehash). Original bug was reported by sh0 (#0001872).
introduce throttling of other msgs (or making this configurable)... this is just
an exception because this msg is sent to _all opers_ and you cannot disable it by
unsetting certain snomasks. Anything lower than 15s would be bad anyway since this
is a very serious error condition. Requested by LoVeR (#0001412).
this will currently produce a lot of warnings with -Wall.
- Fixed 159 of 184 warnings detected by the above, the other warnings are false.
Most warnings had to do with long vs int, and thus the format strings (%d->%ld)
or the vars (int->long) have been changed (many of these were time_t/TS vs int).
Only a few rare crashbugs were discovered.
- Module coders: for HOOKTYPE_LOCAL_CHANMODE the 'sendts' parameter was changed
from type 'int' to 'time_t', while in most circumstances (like on ia32)
you won't notice, I suggest you to update your callback functions anyway.
- Possibly fixed an issue with set::modes-on-join and mode +f, it could have
set random remove-chanmode times in the default chanmode line.
If BUFFERPOOL dbuf_put would return -1, but at some places !dbuf_put was used,
I've changed it so it will return 0 (so use !dbuf_put now, don't use dbuf_put(...) < 0 :P).
I also added some nice warning thing. I couldn't send from the send routine because that's risky ;).
And...... I also doubled the default BUFFERPOOL, so if you leave everything the default then
BUFFERPOOL is now 52Mb instead of 26Mb, which should be ok for now.
This is more usefull than the no nameserver + useip solution since with this no resolving
is done for incomming clients, but connecting to other servers (with hostnames) still works fine ;P.
multihomed issue:
Instead of binding cptr->listener->ip it now uses getsockname(), otherwise it
won't work if you have a listen *:6667 thing + multihomed (it will connect for
example from 33.33.33.1 while the client connected to 33.33.33.5.
connect issue:
there was some kind of file descriptor race condition because of the way our
whole read_message() thing is coded... an ident socket might have been closed
+ a new might have been accepted... blablabla ;)
I wonder if anyone reads these CVS logs lol :).
* same for scan message
* don't say "you have not registered" on NOTICE in unregistered state.
* made a send_prot(aClient, ConfigItem_link) for sending PROTOCTL message,
takes care of sending ZIP in token in case of a ziplink (indeed, I don't
send "ZIP" if it's not marked as a ziplink).
* added automatic fallback tot uncompressed link in case one of the sides
has zip turned off or not compiled in.
* added configcheck for link::options::zip turned on when not compiled
in (just like we do with ssl).
- Made async resolve-and-connect work
- Added link::options::nodnscache which means Unreal will not cache the host forever for
outgoing server connections, you could for example enable this if you are linking two servers
with an often changing host (like dyndns.org).
instead of using a 2nd flag here for the special case of "the first zip msg"
like in hybrid/etc I use cptr->zip->first to flag that. Except for the many
#ifdef ZIP_LINKS blocks added I also had to do some stuff outside it, like
crc32->our_crc32 because zlib defines it, made a READBUF define (8192),
added a msg var to parsing/send functions.. blah.. etc ;P.
I've also put the patch online at www.vulnscan.org/tmp/zip_links.diff so you
can easily look what I've changed.
TODO: ask in ./Config if ziplinks should be enabled and let ./configure check
for zlib + add the library to IRCDLIBS in Makefile if enabled.
TODO: some little code cleanups
'getsockopt(IP_OPTIONS)' reported in bug #0000616. There's still one around
somewhere, but it's a start. Also modified report_error so it reports both
the socket error AND the system error if they are different.