[reSIProcate] Frustration with TCP transport

Paul Kurmas pkurmas at mutualink.net
Mon Sep 14 10:19:56 CDT 2009


I have frustration with the TCP transport - specifically with the
behavior when an existing socket is "stale" and a write on the socket
fails.  

 

TcpBaseTransport::processAllWriteRequests will create a new socket if
there is no active connection, but there's no verification that the
socket is truly functional.  Control passes into
TcpBaseTransport::processSomeWrites (and below) where the write fails.
There's no feedback that the write has failed, so I'm stuck waiting for
the protocol timer to declare the failure before a retry is possible.
Meanwhile, another request enqueued gets processed just fine because
TcpBaseTransport::processAllWriteRequests recognizes there is no
connection available & opens a new one.

 

Does the community have any vision of what a more complete handling of
transmission error cases should look like?  My sense is that either we
should verify the socket is OK before sending (requires a write,
probably) or provide better handling of the error condition, ideally
opening a new socket for the connection immediately.

 

Thanks for any feedback you may have.

PK

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20090914/19a6a085/attachment.htm>


More information about the resiprocate-devel mailing list