[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