Hi Arsen,
Have you got a fix for following issue?
https://groups.google.com/forum/?fromgroups#!searchin/unimrcp/peer$20disconnect/unimrcp/RaCymP0D8SQ/sMPEhl5rujYJ
I think fix for this issue will solve "unreleased engine channel"problem. In our system, there are occasional cases where the client will cause SIP/MRCPv2 connections (from mrcpv2transport's mrcp_server_connection.c, connection agent) to exit ( error is
An existing connection was forcibly closed by the remote host: 730054). This will leave the related sofia-session, mrcp-server-session, mrcp-engine-channel, and mrcp-channel and etc unreleased.
I have traced mrcp code, thinking the following solution. Appreciate it if you could check whether it is a feasible and clear solution.
1 the (not properly closed peer disconnected) connection (mrcpv2) contains "channel_table", which contains all the channels using the connection
2 each mrcp_control_channel_t in "channel_table" will contain ( in its "obj") the mrcp_channel_t, whose "obj" will contains the mrcp_session_t (also mrcp_server_sessiont_t). that mrcp_session's "obj" will contains the sofia_session(mrcp_sofia_session_t).
Am I right on this.
So, for the problem connection, I could just get a list of different sofia_session associated with it. If I just call " nua_bye(sofia_session ), the sofia task will eventually call mrcp_sofia_on_state_change to terminate the session through mrcp_sofia_event_callback. This might sound ad-hoc. Will it work? If not, could I find a way to send a "message" to sofia_agent->nua. Then I could call "nua_bye" inside the mrcp_sofia_event_callback?
Anyway, I am going to try it out.
Appreciate it very much if you could enlighten me a bit.
Rgds,