Date: Sun, 14 Apr 2002 17:19:33 -0500
   From: Gary Mills <[EMAIL PROTECTED]>
   Cc: [EMAIL PROTECTED]

   On Sun, Apr 14, 2002 at 04:54:35PM -0400, Lawrence Greenfield wrote:
   > the Cyrus software will never interrupt a TCP send to obey the
   > timeouts; this guy isn't responding and a TCP send could take up to a
   > couple of hours to time out I think.

   After 12 days, I'd say it's not going to time out.  Presumably,
   the PC was rebooted in the middle of the send.  The user will be
   calling our support desk to report that her POP session is locked.
   Should I be running a cron command to kill old pop3d processes?
   I had hoped that the daemon would look after this case.

Hmm.  So there's clearly some sort of problem in the socket
implementation then.  If the packet can't be delivered successfully,
the write() system call is suppose to return EPIPE:

       The communications protocols which implement a SOCK_STREAM
       ensure that data is not lost or duplicated.  If a piece of data
       for which the peer protocol has buffer space cannot be
       successfully transmitted within a reasonable length of time,
       then the connection is considered to be dead.  When
       SO_KEEPALIVE is enabled on the socket the protocol checks in a
       protocol-specific manner if the other end is still alive.  A
       SIGPIPE signal is raised if a process sends or receives on a
       broken stream; this causes naive processes, which do not handle
       the signal, to exit.  SOCK_SEQPACKET sockets employ the

I guess I'd like to know if any data is trying to be transmitted to
the client (use "tcpdump host <clientname>" on the server for a couple
of hours?).

I don't consider 12 days a reasonable amount of time to have to wait.

Larry

Reply via email to