3c95b6e72f
(ircd wouldn't read or write anymore to certain clients) This happens because kqueue.c will often try to add already closed file descriptors to the kqueue. The kernel tries to report bad file descriptors in the eventlist; if the eventlist has no space, processing of the changelist is silently halted. The fix: 1. allocate two kqlst things, one for what kqlst currently does and one as output buffer this ensures the kevent(2) call in rb_select_kqueue() never drops updates 2. replace the kevent(2) call in kq_update_events() by a loop that processes the updates one at a time that doesn't happen much, and it's the only way to be sure without also getting events out of the queue we cannot process at that time libratbox r25354 (jilles) |
||
---|---|---|
.. | ||
include | ||
src | ||
.indent.pro | ||
acinclude.m4 | ||
aclocal.m4 | ||
ChangeLog | ||
config.guess | ||
config.sub | ||
configure | ||
configure.ac | ||
COPYING | ||
CREDITS | ||
depcomp | ||
INSTALL | ||
install-sh | ||
ltmain.sh | ||
Makefile.am | ||
Makefile.in | ||
missing | ||
README | ||
TODO |
This is libircd from ircd-ratbox. A few notes about this library: 1. Most of this code isn't anywhere near threadsafe at this point. Don't hold your breath on this either. 2. The linebuf code is designed to deal with pretty much 512 bytes per line and that is it. Anything beyond that length unless in raw mode, gets discard. For some non-irc purposes, this can be a problem, but for ircd stuff its fine. 3. The helper code when transmitting data between helpers, the same 512 byte limit applies there as we recycle the linebuf code for this.