Samuel J. Greear <[email protected]> added the comment:

BIND is queuing socket operations (read/write), marking them as queued, but then
not filtering ready events (from kqueue/poll/select) that would result in a
second queued operation and then asserting when they catch it just prior to
queueing (in dispatch_recv() in this case, but it is also possible for it to
happen in dispatch_send()). Raising the number of FD events,
ISC_SOCKET_MAXEVENTS may work around this in our kevent case.

A possible fix might be to change the INSIST()'s in dispatch_send/recv() to if
(sock->pending_recv) return;, but I have not tested this.

There is an underlying bug here and we should re-file this upstream.

_____________________________________________________
DragonFly issue tracker <[email protected]>
<http://bugs.dragonflybsd.org/issue1730>
_____________________________________________________

Reply via email to