This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/12048 ) Change subject: SS/USSD: make NCSS session timeout configurable ...................................................................... SS/USSD: make NCSS session timeout configurable It may happen that either the MS or an ESME would become unresponsive, e.g. due to a bug, or a dropped message. This is why we have SS session timeout, that prevents keeping 'stalled' sessions forever. Let's introduce a VTY option, which can be used to configure this timer (by default it's set to 30 seconds): hlr ... ! Use 0 to disable this timer ncss-guard-timeout 30 Change-Id: I971fc2cee6fd46d4d5d6dac6c634e0b22fff183d Related: OS#3717 --- M src/hlr.c M src/hlr.h M src/hlr_ussd.c M src/hlr_ussd.h M src/hlr_vty.c M tests/test_nodes.vty 6 files changed, 29 insertions(+), 4 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/hlr.c b/src/hlr.c index 14945b6..4873a66 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -611,6 +611,9 @@ INIT_LLIST_HEAD(&g_hlr->ss_sessions); INIT_LLIST_HEAD(&g_hlr->ussd_routes); + /* Init default (call independent) SS session guard timeout value */ + g_hlr->ncss_guard_timeout = NCSS_GUARD_TIMEOUT_DEFAULT; + rc = osmo_init_logging2(hlr_ctx, &hlr_log_info); if (rc < 0) { fprintf(stderr, "Error initializing logging\n"); diff --git a/src/hlr.h b/src/hlr.h index 315c3dd..e9cc747 100644 --- a/src/hlr.h +++ b/src/hlr.h @@ -45,6 +45,9 @@ struct hlr_euse *euse_default; struct llist_head iuse_list; + /* NCSS (call independent) session guard timeout value */ + int ncss_guard_timeout; + struct llist_head ussd_routes; struct llist_head ss_sessions; diff --git a/src/hlr_ussd.c b/src/hlr_ussd.c index b7aaba4..16a197c 100644 --- a/src/hlr_ussd.c +++ b/src/hlr_ussd.c @@ -209,10 +209,11 @@ OSMO_STRLCPY_ARRAY(ss->imsi, imsi); ss->session_id = session_id; osmo_timer_setup(&ss->timeout, ss_session_timeout, ss); - /* NOTE: The timeout is currently global and not refreshed with subsequent messages - * within the SS/USSD session. So 30s after the initial SS message, the session will - * timeout! */ - osmo_timer_schedule(&ss->timeout, 30, 0); + /* NOTE: The timeout is currently not refreshed with subsequent messages + * within the SS/USSD session. So X seconds after the initial SS message, + * the session will timeout! */ + if (g_hlr->ncss_guard_timeout > 0) + osmo_timer_schedule(&ss->timeout, g_hlr->ncss_guard_timeout, 0); llist_add_tail(&ss->list, &hlr->ss_sessions); return ss; diff --git a/src/hlr_ussd.h b/src/hlr_ussd.h index 0414924..393ca6c 100644 --- a/src/hlr_ussd.h +++ b/src/hlr_ussd.h @@ -7,6 +7,8 @@ #include "gsup_server.h" +#define NCSS_GUARD_TIMEOUT_DEFAULT 30 + struct hlr_ussd_route { /* g_hlr.routes */ struct llist_head list; diff --git a/src/hlr_vty.c b/src/hlr_vty.c index 2d9b929..6706aa4 100644 --- a/src/hlr_vty.c +++ b/src/hlr_vty.c @@ -35,6 +35,7 @@ #include "hlr.h" #include "hlr_vty.h" #include "hlr_vty_subscr.h" +#include "hlr_ussd.h" #include "gsup_server.h" struct cmd_node hlr_node = { @@ -288,9 +289,22 @@ if (g_hlr->euse_default) vty_out(vty, " ussd default-route external %s%s", g_hlr->euse_default->name, VTY_NEWLINE); + if (g_hlr->ncss_guard_timeout != NCSS_GUARD_TIMEOUT_DEFAULT) + vty_out(vty, " ncss-guard-timeout %i%s", + g_hlr->ncss_guard_timeout, VTY_NEWLINE); + return 0; } +DEFUN(cfg_ncss_guard_timeout, cfg_ncss_guard_timeout_cmd, + "ncss-guard-timeout <0-255>", + "Set guard timer for NCSS (call independent SS) session activity\n" + "Guard timer value (sec.), or 0 to disable") +{ + g_hlr->ncss_guard_timeout = atoi(argv[0]); + return CMD_SUCCESS; +} + /*********************************************************************** * Common Code ***********************************************************************/ @@ -353,6 +367,7 @@ install_element(HLR_NODE, &cfg_ussd_no_route_pfx_cmd); install_element(HLR_NODE, &cfg_ussd_defaultroute_cmd); install_element(HLR_NODE, &cfg_ussd_no_defaultroute_cmd); + install_element(HLR_NODE, &cfg_ncss_guard_timeout_cmd); hlr_vty_subscriber_init(); } diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty index e1f57a9..63d3da0 100644 --- a/tests/test_nodes.vty +++ b/tests/test_nodes.vty @@ -78,6 +78,7 @@ no ussd route prefix PREFIX ussd default-route external EUSE no ussd default-route + ncss-guard-timeout <0-255> OsmoHLR(config-hlr)# gsup OsmoHLR(config-hlr-gsup)# list -- To view, visit https://gerrit.osmocom.org/12048 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-hlr Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I971fc2cee6fd46d4d5d6dac6c634e0b22fff183d Gerrit-Change-Number: 12048 Gerrit-PatchSet: 4 Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder (1000002) Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de> Gerrit-Reviewer: Vadim Yanitskiy <axilirator at gmail.com> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181205/bf97cce2/attachment.htm>