summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-06-23 18:14:51 +0200
committerneels <nhofmeyr@sysmocom.de>2020-06-24 11:19:12 +0000
commitec20a6164b046f9b6190dc886c3cc8a8e1445739 (patch)
tree3ba12c25da149f97b0054d094ad3d1994110e735
parent468731d414c72a2b56ed67061f56a9e1da11ecb9 (diff)
sccp_simple_client: only restart ASP if it was created
In osmo_sccp_simple_client_on_ss7_id(), only call osmo_ss7_asp_restart() if the ASP was created by that function. If a previously existing ASP was re-used, do not restart it. Background: Recently, osmo-bsc started calling osmo_sccp_simple_client_on_ss7_id() multiple times, once for each configured MSC in an MSC pool. Normally, that ends up re-using the same ASP and SCCP client, so should not change anything. Still, it turns out that the SCTP association was re-launched for every configured MSC, which is obviously not necessary when using the same SCCP connection and SCCP user for multiple MSCs. That happened because osmo_sccp_simple_client_on_ss7_id() calls osmo_ss7_asp_restart() even if a pre-existing ASP is re-used. The rapid restarts also uncovered a problem in osmo-stp, causing it to crash -- that is a separate issue. Independently from an osmo-stp fix, this change should in fact avoid the osmo-stp crash and fix the sporadic massive ttcn3-bsc-test fallout we're seeing since merging the MSC pooling feature to osmo-bsc. Related: OS#4625 Change-Id: I62443edd681a2ec1b38f958520e907f9a7ef285e
-rw-r--r--src/sccp_user.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/sccp_user.c b/src/sccp_user.c
index d8a7357..1278fae 100644
--- a/src/sccp_user.c
+++ b/src/sccp_user.c
@@ -597,16 +597,16 @@ osmo_sccp_simple_client_on_ss7_id(void *ctx, uint32_t ss7_id, const char *name,
talloc_free(asp_name);
osmo_ss7_as_add_asp(as, asp->cfg.name);
- }
- /* Ensure that the ASP we use is set to client mode. */
- asp->cfg.is_server = false;
- asp->cfg.role = OSMO_SS7_ASP_ROLE_ASP;
+ /* Ensure that the ASP we use is set to client mode. */
+ asp->cfg.is_server = false;
+ asp->cfg.role = OSMO_SS7_ASP_ROLE_ASP;
- /* Restart ASP */
- if (prot != OSMO_SS7_ASP_PROT_IPA)
- osmo_ss7_asp_use_default_lm(asp, LOGL_DEBUG);
- osmo_ss7_asp_restart(asp);
+ /* Restart ASP */
+ if (prot != OSMO_SS7_ASP_PROT_IPA)
+ osmo_ss7_asp_use_default_lm(asp, LOGL_DEBUG);
+ osmo_ss7_asp_restart(asp);
+ }
LOGP(DLSCCP, LOGL_NOTICE, "%s: Using ASP instance %s\n", name,
asp->cfg.name);