Commit graph

63 commits

Author SHA1 Message Date
Jilles Tjoelker
2142f6910e Fix a possible crash with SSL connections closing early.
libratbox r25356 (jilles)
2008-05-12 19:54:24 +02:00
Jilles Tjoelker
3c95b6e72f Fix kqueue sometimes dropping updates.
(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)
2008-05-12 18:54:20 +02:00
Jilles Tjoelker
365d91a86f patricia: remove ugly abuse of K&R style function declaration
It left the argument types unspecified in a function
pointer, then called it using different numbers of
arguments.
libratbox r25229
2008-04-13 18:20:18 +02:00
Jilles Tjoelker
39930c6602 Remove linebuf's per-line flushing flag, as it's per-head state.
In rare cases, this sharing caused the ircd to skip
part of outgoing traffic, e.g. appearing as "not enough
parameters" errors on the other side.
The purpose of this flag can be fulfilled by the writeofs
in the bufhead.
libratbox r25227
2008-04-13 00:44:21 +02:00
Jilles Tjoelker
ba1721d144 read/write return type should be ssize_t, not int or size_t.
The writev emulation used size_t, which is unsigned,
preventing negative values to be seen.
libratbox r25225
2008-04-12 16:43:12 +02:00
Jilles Tjoelker
7b224e33b5 kqueue: also use EV_ONESHOT for read events
This makes the kernel's state agree with our handler pointer.
SSL may need to suspend selecting for reading to write
something, e.g. with renegotiation.
libratbox r25223
2008-04-11 11:08:37 +02:00
Valery Yatsko
73d6283cfc Importing r25217, r25219 and r25221 from ratbox3 2008-04-10 20:37:42 +04:00
Valery Yatsko
715ffadfd9 Importing changes from ircd-ratbox revision r25203, this fixes libratbox/src/openssl.c a bit 2008-04-06 18:28:56 +04:00
Jilles Tjoelker
9d9a4f6015 Fix SET_SS_LEN so that it also works correctly outside libratbox.
Use RB_SOCKADDR_HAS_SA_LEN instead of SOCKADDR_IN_HAS_LEN
which is only defined inside libratbox.
This fixes creating own sockaddr structs in other programs
using SET_SS_LEN, then passing them to libratbox, on
4.4BSD based systems.
2008-04-05 21:08:48 +02:00
Valery Yatsko
398b6a7372 ok, trying to work on blockheap's stuff 2008-04-02 04:28:05 +04:00
William Pitcock
a8f0b117ba Make this link without OpenSSL. This patch should go upstream. 2008-04-01 14:57:52 -05:00
William Pitcock
b676ea3bd5 Run autoreconf. 2008-04-01 11:53:46 -05:00
William Pitcock
db13786793 Pull in libratbox from ircd-ratbox-3.0.0beta1 and integrate into the build system. 2008-04-01 11:52:26 -05:00