http://bugzilla.spamassassin.org/show_bug.cgi?id=3828





------- Additional Comments From [EMAIL PROTECTED]  2004-09-28 11:26 -------
Subject: Re:  spamd parent stops accepting requests

On Tue, Sep 28, 2004 at 10:54:41AM -0700, [EMAIL PROTECTED] wrote:
> there is no active spamc client on the other side of the TCP connection 
> however,
> since they run with a 60 second timeout, so i assume that is why its stuck in
> read() forever?

in theory, the read() should return an EOF since the other end disconnected
and then the spamd code would catch the failure and exit.

it seems like what is happening is that all of the children get made busy with
requests, and requests keep coming in and end up getting queued by the OS
waiting for a child to do an accept().  At some point, the client decides to
give up, and either the OS doesn't clear the connection out of the queue, and/or
IO::Socket isn't doing the right thing.

There's 2 getline() commands.  The first gets the request and explicitly
checks for an error.  The other is a loop to read in the messge:

  while ( $_ = $client->getline() ) {

which lets the while check for the error.  Right after the loop, there's
a call to parse(), without an error check to make sure that there was
actually any data read for the message.  I don't know what parse() will
do at that point, but there should be a quick check in spamd to make
sure a message was actually read in and return an error if there wasn't.

BTW: This seems related to bug 3782.





------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

Reply via email to