Hi, Eric. Can you attach the confess() stack trace? It confesses because of an internal error somewhere. Release 1.312 adds a message to the confess() asking for the stack trace.
If possible, could you also check against the development version in git? I found and fixed one cause for that confess() this week, but it's not released yet. I'll expedite the 1.313 release if it fixes your problem. -- Rocco Caputo <rcap...@pobox.com> On Aug 19, 2011, at 14:43, Eric Martel wrote: > Hi folks, > > I'm quite new to POE. I wrote a server using POE::Wheel::SocketFactory and > handling clients with POE::Wheel::ReadWrite, and everything works fine but for > one thing: there are moments when a client and the server will cross-exchange > much data (that is, the client sends data to the server, which replies with > other data, an this multiple times until they are finished), and I happened to > notice that if the client is killed before the end, the server will die, which > is not what I want... > > The server crashes in Kernel.pm, at the line "confess unless defined > $session;" > (line 1012 as of v1.311) within _dispatch_event(). What I guess is happening > (but I may be wrong) is that a '$client_wheel->put($data)' is made before the > client is killed, and when POE tries to actually handle the put(), the client > wheel session is already no longer accessible, before any ErrorEvent handler > could be called. Am I right on this? > > I could not find any way I could prevent this, but surely there must be...? I > wonder if replacing the "confess" line by a simple "warn + return" (or the > like) > could do the trick? Any help would be greatly appreciated. > > -- > Eric Martel > Québec (Québec) > Canada > > Ce courriel est signé numériquement avec la clef suivante: > This e-mail is digitally signed with the following key: > ED3F191C (key://pgp.mit.edu, http://key.ericmartel.net/) > Pour plus d'information: http://gpg.ericmartel.net/ > For more info: http://www.gnupg.org/ > > > <eric.vcf>