aboutsummaryrefslogtreecommitdiffstats
path: root/src/s_bsd.c
Commit message (Expand)AuthorAgeFilesLines
* Various fixes, more info later.Gravatar Bram Matthys2013-11-201-11/+18
* This one is better, and actually compiles ;)Gravatar Bram Matthys2013-05-101-5/+3
* Fix strange issue where linking didn't work because UnrealIRCd would•••bind to (for example) the loopback interface before connecting to the remote server. In addition to that, we now don't bind() at all when bind-ip is not present or is set to "*". Gravatar Bram Matthys2013-05-101-9/+11
* - Windows: Fix strange linking bug. Outgoing connects from a Windows••• IRCd caused a garbled SERVER protocol message, causing 'cannot find server' errors and killing of users. Reported by Sunkat (#4183). Gravatar Bram Matthys2013-04-041-1/+0
* - Pull in poll(2) stuff before any other ircd include files. (#4155)••• This allows us to successfully build on systems where pulling in poll.h pollutes the code with a broken form of ctypes.h due to a few reasons, not limited to, but including, usage of non-namespaced macros which clash with our own. Gravatar William Pitcock2013-01-141-10/+15
* - Fix bug caused by new I/O engine (both with and without USE_POLL):••• queued data on the receive queue (eg: due to fake lag) was not processed unless we got new data from the client. Now, better document this. Also, avoid calling dbuf_put with 0 length. Gravatar Bram Matthys2012-05-021-24/+19
* - Poll I/O engine: get_client_by_pollfd() may return -1 when there's a race••• condition. Don't abort, instead just skip those clients. This fixes a crash I had on /SQUIT. Gravatar Bram Matthys2012-03-261-2/+1
* last change to poll patch for the day.. fixing my own fix ;)Gravatar Bram Matthys2012-02-261-6/+10
* make c-ares use 100% poll. and make sure we never deal with negative fds.Gravatar Bram Matthys2012-02-261-7/+51
* Some more changes and fixes regarding poll patch:•••* use get_client_by_pollfd() function instead of pollfd_to_client[] directly, so we can easily find and debug any mistakes. * add some commenting * add extra debugging and core dumping if fd or slot values are out of bounds * fix race condition in read_authports() where send_authports() 2 lines up could have closed the socket, resulting in a read from fd -1. NOTE: I've updated the select (non-poll) code as well, should be harmless. Gravatar Bram Matthys2012-02-261-20/+44
* regarding poll patch:•••* move all (re-)initalization to reset_pollfd(), i'm much more comfortable with that as it aids debugging a lot. * add parenthesis. update my own fd check code for poll support Gravatar Bram Matthys2012-02-261-14/+25
* - Added patch from Adam for poll() support (#1245).Gravatar Bram Matthys2012-02-261-21/+222
* - Make the accept code check if the fd is within bounds instead of relying••• on OpenFiles to be correct. This fixes a crash when f.e. 3rd party modules have files open but don't increase OpenFiles. Might also fix a curl crash, though nobody ever reported one. Gravatar Bram Matthys2012-02-261-1/+12
* - Module coders: Added HOOKTYPE_HANDSHAKE which is called before the client••• handshake, IOTW: as soon as the connection is established. This can be used to do things prior to accepting any commands, such as sending some text. Gravatar Bram Matthys2011-04-031-0/+2
* - Fixed another compile problem on QNX, reported by chotaire (#3955 too).•••- Fixed incorrect messages regarding clock going backwards on QNX 6 and later, reported by chotaire (#0003956). Gravatar Bram Matthys2010-09-081-1/+2
* - Get rid of any setsockopt(IPV6_V6ONLY) errors in ircd.log (#3944).•••(oh and yeah I removed the prototype of our_crc32 which is totally unrelated...) Gravatar Bram Matthys2010-08-161-3/+1
* - Remove include/nameser.h and reference to nameser.h from s_bsd.c. The assoc...Gravatar binki2010-07-101-6/+0
* - Throw out old USE_POLL code which 1. has no buildsystem support and 2. has ...•••- Removed extraneous apostrophe from a module loader error message. Gravatar binki2010-06-151-467/+0
* - Partially fixed bug where IPv4 addresses were randomly mishandled by the cg...Gravatar binki2010-05-281-1/+1
* linking bug & ipv6 thing (the latter is completely untested):•••- IPv6: it seems some recent Linux dists decided to make IPv6 sockets IPv6-only, instead of accepting both IPv4&IPv6 on them like until now. FreeBSD (and other *BSD's) already did that move a few years back, requiring server admins to sysctl. We now make use of a new option to explicitly disable "IPv6-only". This should work fine on Linux. Whether it provides a complete solution for FreeBSD, I don't know, testing is welcome! In theory setting net.inet6.ip6.v6only to 0 should no longer be needed, but you might still need to enable ipv6_ipv4mapping. - Fix stupid issue where current CVS would no longer link TO an earlier Unreal server (eg: outgoing connect to a 3.2.8 hub). Reported by ohnobinki (#0003901). Gravatar Bram Matthys2010-04-251-6/+26
* - Fixed a /RESTART issue on Linux: Unreal did not properly close all file-••• descriptors. Because of this, Unreal did not restart properly as you would get an "Address already in use" error. This only seemed to happen when logging to syslog. - Fixed a similar issue with syslog (and debugmode) and closing fd's as well: the first port we listened on would not open up, ircd did not log any error. Gravatar Bram Matthys2010-01-041-0/+6
* PROTOCTL EAUTH/SERVERS/new linking protocol:•••- Server protocol: added PROTOCTL EATH=servername, which allows us to authenticate the server very early in the handshake process. That way, certain commands and PROTOCTL tokens can 'trust' the server. See doc/technical/protoctl.txt for details. - Server protocol: between new Unreal servers we now do the handshake a little bit different, so it waits with sending the SERVER command until the first PROTOCTL is received. Needed for next. - Server protocol: added PROTOCTL SERVERS=1,2,3,4,etc by which a server can inform the other server which servers (server numeric, actually) it has linked. See doc/technical/protoctl.txt and next for details. - When our server was trying to link to some server, and at the same time another server was also trying to link with us, this would lead to a server collision: the server would link (twice) ok at first, but then a second later or so both would quit with 'Server Exists' with quite some mess as a result. This isn't unique to Unreal, btw. This happened more often when you had a low connfreq in your link blocks (aka: quick reconnects), or had multiple hubs on autoconnect (with same connfreq), or when you (re)started all servers at the same time. This should now be solved by a new server handshake design, which detects this race condition and solves it by closing one of the two (or more) connections to avoid the issue. This also means that it should now be safe to have multiple hubs with low connfreq's (eg: 10s) without risking that your network falls apart. This new server handshake (protocol updates, etc) was actually quite some work, especially for something that only happened sporadically. I felt it was needed though, because (re)linking stability is extremely important. This new feature/design/fix requires extensive testing. This feature can be disabled by: set { new-linking-protocol 0; }; Gravatar Bram Matthys2010-01-011-3/+7
* - Added support for STARTTLS. This allows users to switch to SSL without••• having to use a special SSL-only port, they can simply switch to SSL on any port. This is currently only supported by few clients (such as KVIrc 4). This functionality can be disabled by setting set::ssl::options::no-starttls, for example if you don't want to offer SSL to your users and only want it to be used for server to server links. Naturally, the IRCd must be compiled with SSL support for STARTTLS to work. - Fixed SSL_ERROR_WANT_READ in IRCd_ssl_write() Gravatar Bram Matthys2009-12-061-4/+11
* - Applied patch from ohnobinki (#0003863) which makes run-time configuration••• of files (tune, pid, motd) possible. Gravatar Bram Matthys2009-11-221-3/+3
* - Don't do show-connect-info on servers-only portsGravatar Bram Matthys2009-04-221-3/+3
* - Added documentation for set::spamfilter::slowdetect-warn,••• set::spamfilter::slowdetect-fatal, set::ssl::server-cipher-list, set::ssl::renegotiate-bytes, set::ssl::renegotiate-timeout, set::watch-away-notification and ./unreal gencloak. Reported by Bock (#0003764). - set::ssl::renegotiate-bytes: fix when specifying a value such as 10m. - './unreal gencloak' now actually works - Fix typo in user mode q notice, reported by Strawberry_Kittens and others (#0003761). - Possible fix for MAC OS X compile problem - UNCONFIRMED. Gravatar Bram Matthys2009-01-031-1/+1
* - Fixed crash which could happen when rehashing while linking to a server,••• this could be #0003689 reported by Monk. Gravatar Bram Matthys2008-12-271-0/+6
* - Added another Mac OS X hack, such as one that should help against••• 'error setting max fd's to 9223372036854775807' which prevents the ircd from booting up. Reported by btcentral and Bock. This hack might not be totally correct though ;). Gravatar Bram Matthys2008-08-081-0/+3
* HOOKTYPE_RAWPACKET_IN: not very useful, it's not meant for packet manipulatio...Gravatar Bram Matthys2008-02-231-0/+7
* - #0002533 reported by Dodge_Ram, patched by WolfSage, regarding notices••• not being sent when /*line and /shun are used to request stats Gravatar stskeeps2007-06-141-9/+15
* #if defined(DEBUGMODE) && !defined(_WIN32)Gravatar Bram Matthys2006-11-051-2/+2
* - Fixed small memory leak in resolver (~40 bytes when connecting to a server)•••- Made Unreal use the original name in case of a CNAME, instead of the forwarded name, reported by jerrcsnet (#0003054). - The "looking up your hostname" message was always sent, regardless of show-connect-info. Gravatar Bram Matthys2006-09-061-1/+1
* - (multiple?) IPv6 listen blocks could cause a crash in config parser. Report...••• (#0002868). Gravatar Bram Matthys2006-05-041-2/+2
* - c-ares (currently, a forked off version) enhancements:••• - '/quote dns i' now shows the nameserver settings (which is taken from /etc/resolv.conf on *NIX, and from the registry on Windows) - We no longer depend on a C++ compiler (was useless c-ares dependency caused by libtool) - '/REHASH -dns' now rereads the resolver data from resolv.conf/registry, no IRCd restart needed anymore. It's currently kinda experimental however, but I *think* it will work ok. Unfortunately the above features required some ugly hacks if curl was enabled, so if you use curl (Remote includes), feel free to test on your OS (Linux, but especially FreeBSD and the other *NIXes) to see if things still compile (make clean; ./Config && make). Gravatar Bram Matthys2006-04-111-1/+1
* - Fixed CHROOTDIR compilation problem, reported by toshio (#0002854).•••- Improved CHROOTDIR documentation in include/config.h - Added error if CHROOTDIR is defined but IRC_UID isn't (in include/config.h). Gravatar Bram Matthys2006-04-091-0/+2
* - Removed some odd code causing a 'my port is' message to appear in (f.e.) sy...••• by rsc (#0002853). Gravatar Bram Matthys2006-04-091-11/+0
* - Fixed (serious) bug in CGI:IRC code, IP's were often not right, reported by...Gravatar Bram Matthys2006-02-161-1/+4
* - Added CGI:IRC host spoofing support. This means you can mark specific CGI:I...••• "trusted" and the IRCd will show the users' _real_ host/ip everywhere on IRC, instead of the _CGI:IRC-gateway_ host/ip. To do so you must set 'realhost_as_password' to 1 in your cgiirc.conf. And add the CGI:IRC gateway(s) you fully trust to set::cgiirc::hosts. Gravatar Bram Matthys2006-02-141-0/+2
* - When set::options-show-connect-notice was enabled the "*** Looking up your ...••• message was not being shown (all others were). Reported by fbi (#0002820). Gravatar Bram Matthys2006-02-141-0/+2
* - Fixed localhost crash (if no dns record for 127.0.0.1), reported by Trocotr...Gravatar Bram Matthys2006-01-261-2/+5
* - Fixed some more memleaks, thanks to valgrind.Gravatar Bram Matthys2006-01-151-0/+1
* - Fixed serious flood of notices to opers if link::options::dnscache was pres...••• Reported by firstof9. Gravatar Bram Matthys2005-11-151-1/+1
* - Fixed SSL + new resolver problem, would cause an "interesting flood" of mes...••• Reported by Trocotronic (#0002659). - Fixed a problem with entries in the hosts file (such as, usually, localhost), this would cause an unresolved host and a 30s delay for the user, even though resolving succeeded. Gravatar Bram Matthys2005-10-111-3/+20
* - Removed all old resolver code and switched over to c-ares (+our caching rou...••• This should get rid of some annoying untracable (and usually rare) crashbugs in the old resolver. Besides that, it makes things look more clean and understandable. This should be the fix for the following bugids (all the same issue): #2499, #2551, #2558, #2559, #2603, #2642, #2502, #2501, #2618, #2616. Feedback and testing is very much welcomed (syzop@unrealircd.com). Gravatar Bram Matthys2005-10-101-144/+44
* - Fixed ~c not working properly with * and ?'s in channel names.. Now you jus...••• escape them like in all bans (eg: to ban #* you need to +b ~c:#\*). As an additional bonus, real wildcards are now accepted and processed (eg: +b ~c:#*sex*, just don't forget to specify the #). Reported by PhantasyX (#2605). - Sidenote on above: ~c:*chan* is not supported (use ~c:#*chan* instead) because it would cause "hidden bans", therefore it now prints a message (which is useful anyway), but does accept such remote bans. In 3.2.5 or so we could enable support for it, it's not that important though... ;) - Added ifdefs for mass closing of file descriptors on start, can now be disabled by adding -DNOCLOSEFD as a compile option. Useful for valgrind w/--db-attach=yes, mpatrol, and some other debugging tools (not useful for anyone normally running a server). - Fixed a read-after-free: sptr->serv->aconf was freed but not NULL'ed in exit_client, causing close_connection to read from it (when deciding on doing a quick reconnect). Could have caused a crash, although nobody ever reported one... - Removed useless strncpyzt with dest==src. Gravatar Bram Matthys2005-08-191-1/+11
* - Renamed some calls from report_error() to report_baderror() since otherwise...••• 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 Gravatar Bram Matthys2004-11-171-6/+7
* Added documentation for set::options::fail-oper-warn, Removed an extra ) in t...Gravatar codemastr2004-11-131-5/+4
* - IPv6: Fixed hostnames in link::hostname not working, reported by Jasmin (#0...Gravatar Bram Matthys2004-10-071-3/+4
* - Fixed "quickly-rehashing + autoconnect linkblocks = crash"-bug. This involv...••• 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). Gravatar Bram Matthys2004-06-251-0/+3
* - Fixed '/stats P' negative usercount bug (#0001691).Gravatar Bram Matthys2004-06-251-0/+1