lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-remsim/+/42133?usp=email )
Change subject: rspro_server: fix releasing timed out clients ......................................................................
rspro_server: fix releasing timed out clients
Fix crash on reconnects of clients if they timed out.
The duplicate check will use conn->peer of the old peer, but conn->peer is NULL because rspro_client_conn_destroy() never destroys the connection if conn->peer is valid when rspro_client_conn_destroy() is called.
void rspro_client_conn_destroy(conn) { if (conn->peer) { peer = conn->peer; conn->peer = NULL; osmo_stream_srv_destroy(peer); /* calls sock_closed_cb() } [..] }
int sock_closed_cb(peer) { [..] if (conn->peer) { osmo_fsm_inst_dispatch(conn->fi, CLNTC_E_TCP_DOWN, NULL); /* calls in the end rspro_client_conn_destroy() */ } return 0; }
Fixes: 8cfe1d808a57 ("Use new osmo_ipa_ka_fsm_inst APIs from libosmo-netif") Related: OS#6957 Change-Id: I1f7faf5ffdd909362c492ab434b63fa7e79ada95 --- M src/server/rspro_server.c 1 file changed, 0 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/33/42133/1
diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c index 4e3666c..5eeb2ae 100644 --- a/src/server/rspro_server.c +++ b/src/server/rspro_server.c @@ -923,7 +923,6 @@ /* this will internally call closed_cb() which will dispatch a TCP_DOWN event */ if (conn->peer) { struct osmo_stream_srv *peer = conn->peer; - conn->peer = NULL; osmo_stream_srv_destroy(peer); return; } /* else: destroy initiated by conn->peer's closed_cb(). */