Review at https://gerrit.osmocom.org/2306
osmo_ss7: destroy any ASPs allocated dynamically at accept() time When we accept SCTP connections from clients for whose IP/port we have no matching local configurations, and it is permitted by local configuration, we dynamically allocate osmo_ss7_asp's in this case. Make sure to properly destroy them at the time the SCTP connection is lost. Change-Id: I07d69a0cd52a049a7a4bb0d996e95d39fee9a106 --- M include/osmocom/sigtran/osmo_ss7.h M src/osmo_ss7.c 2 files changed, 13 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/06/2306/1 diff --git a/include/osmocom/sigtran/osmo_ss7.h b/include/osmocom/sigtran/osmo_ss7.h index cbc6a02..bb151d1 100644 --- a/include/osmocom/sigtran/osmo_ss7.h +++ b/include/osmocom/sigtran/osmo_ss7.h @@ -342,6 +342,9 @@ /* Layer Manager to which we talk */ struct osmo_xua_layer_manager *lm; + /*! Were we dynamically allocated */ + bool dyn_allocated; + struct { char *name; char *description; diff --git a/src/osmo_ss7.c b/src/osmo_ss7.c index b32f5d9..78ff3ec 100644 --- a/src/osmo_ss7.c +++ b/src/osmo_ss7.c @@ -1374,6 +1374,15 @@ /* send M-SCTP_RELEASE.ind to Layer Manager */ xua_asp_send_xlm_prim_simple(asp, OSMO_XLM_PRIM_M_SCTP_RELEASE, PRIM_OP_INDICATION); + /* if we were dynamically allocated at accept_cb() time, let's + * self-destruct now. A new connection will re-create the ASP. */ + if (asp->dyn_allocated) { + /* avoid re-entrance via osmo_stream_srv_destroy() which + * called us */ + asp->server = NULL; + osmo_ss7_asp_destroy(asp); + } + return 0; } @@ -1420,6 +1429,7 @@ LOGP(DLSS7, LOGL_INFO, "%s: created dynamicASP %s\n", sock_name, asp->cfg.name); asp->cfg.is_server = true; + asp->dyn_allocated = true; osmo_ss7_asp_restart(asp); } } -- To view, visit https://gerrit.osmocom.org/2306 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I07d69a0cd52a049a7a4bb0d996e95d39fee9a106 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>