On Monday 18 December 2006 18:09, Juha Heinanen wrote: > if there is no way to detect that tcp session does not exist before > sending crlfcrlf to SIP UA, then this indeed may lead to problems.
I know of none. The other endpoint may have been cut off the network right before you want to sent to it so no session closing indication was received. When you send it'll timeout but the timeout delay is too long for realtime handling, unless you have an architecture based around an event driven approach and you can process other things in parallel without blocking. This issue affects more than just the keepalive process. Even if the kernel handles the keepalive at the OS level by sending TCP KEEPALIVES, so presumably OpenSER knows at all times that the connection should be up, this means nothing in the end. Exactly as said above, the other endpoint may be cut of the network and have no chance to signal its leave. Until the kernel will start the keepalive procedure and finish it by declaring the other endpoint dead and closing the connection, any attempt to send a message to the other endpoint will result in a long wait before timing out. When you combine this fact with the blocking nature of OpenSER, it can raise serious issues when many TCP clients are connected and there is a high churn rate among them combined with high SIP traffic. -- Dan _______________________________________________ Devel mailing list [email protected] http://openser.org/cgi-bin/mailman/listinfo/devel
