Missing closed session event when connection times out
Description
From the client point of view, when the TCP connection holds but the OPC UA connection times out, usually the applicative layer will call SOPC_ToolkitClient_AsyncCloseSession
, which issues a CloseSessionRequest. If the TCP connection still holds but this server is still not responding, the latter request also times out.
In this latter case, the timeout event is not received by the applicative layer, which cannot declare the connection closed.
Analysis
The timeout of the CloseSessionRequest is handled in internal_client_request_timeout
, which does not call cli_request_timeout
, because the message is not applicative.
Recommendations
The B operations internal_client_request_timeout
and client_snd_msg_failure
should be merged, as they do have lots of similarities.