On Fri, Dec 28, 2007 at 09:05:18PM +0000, Thomas Hurst <[EMAIL PROTECTED]>
wrote:
> Servers don't serve much; they serve one client and exit even in the
> exception-free case, including the example echo server. Multiple
> clients will be served if they manage to connect before the rest close,
> but once the listen queue's empty Rev::Loop#run returns.
>
> This is tested with FreeBSD 6.2, using kqueue, select and poll.
And not having had a look at the source code, could it be that there is a
thread that accept()'s connections (without registering any libev watcher)?
In that case, the loop would return when there are no active watchers
anymore (i.e. deadlock). If that is the case, one can increase or decrease
refcounts manually.
(The opposite case also exists, with watchers that should not keep the
event loop alive, in the perl interface, one can set the keepalive flag on
any watcher to 0, so it doesn't keep the watcher alive).
Again, this was a quick stab in the dark.
--
The choice of a Deliantra, the free code+content MORPG
-----==- _GNU_ http://www.deliantra.net
----==-- _ generation
---==---(_)__ __ ____ __ Marc Lehmann
--==---/ / _ \/ // /\ \/ / [EMAIL PROTECTED]
-=====/_/_//_/\_,_/ /_/\_\
_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev