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/.
Vadim Yanitskiy gerrit-no-reply at lists.osmocom.orgVadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/12048
Change subject: SS/USSD: make SS session timeout configurable
......................................................................
SS/USSD: make SS 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
ss-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(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/48/12048/1
diff --git a/src/hlr.c b/src/hlr.c
index 78d6c91..f1f251c 100644
--- a/src/hlr.c
+++ b/src/hlr.c
@@ -604,6 +604,9 @@
INIT_LLIST_HEAD(&g_hlr->ss_sessions);
INIT_LLIST_HEAD(&g_hlr->ussd_routes);
+ /* Init default SS guard timeout value */
+ g_hlr->ss_guard_timeout = SS_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..5236356 100644
--- a/src/hlr.h
+++ b/src/hlr.h
@@ -45,6 +45,9 @@
struct hlr_euse *euse_default;
struct llist_head iuse_list;
+ /* SS session guard timer value */
+ int ss_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 ba373f3..5991148 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->ss_guard_timeout > 0)
+ osmo_timer_schedule(&ss->timeout, g_hlr->ss_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..5c15874 100644
--- a/src/hlr_ussd.h
+++ b/src/hlr_ussd.h
@@ -7,6 +7,8 @@
#include "gsup_server.h"
+#define SS_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..be49113 100644
--- a/src/hlr_vty.c
+++ b/src/hlr_vty.c
@@ -288,9 +288,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->ss_guard_timeout > 0)
+ vty_out(vty, " ss-guard-timeout %i%s",
+ g_hlr->ss_guard_timeout, VTY_NEWLINE);
+
return 0;
}
+DEFUN(cfg_ss_guard_timeout, cfg_ss_guard_timeout_cmd,
+ "ss-guard-timeout <0-255>",
+ "Set guard timer for SS/USSD session activity\n"
+ "Guard timer value (sec.), or 0 to disable")
+{
+ g_hlr->ss_guard_timeout = atoi(argv[0]);
+ return CMD_SUCCESS;
+}
+
/***********************************************************************
* Common Code
***********************************************************************/
@@ -353,6 +366,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_ss_guard_timeout_cmd);
hlr_vty_subscriber_init();
}
diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty
index a9d4ac4..d824de2 100644
--- a/tests/test_nodes.vty
+++ b/tests/test_nodes.vty
@@ -77,6 +77,7 @@
no ussd route prefix PREFIX
ussd default-route external EUSE
no ussd default-route
+ ss-guard-timeout <0-255>
OsmoHLR(config-hlr)# gsup
OsmoHLR(config-hlr-gsup)# list
@@ -118,4 +119,5 @@
bind ip 127.0.0.1
ussd route prefix *#100# internal own-msisdn
ussd route prefix *#101# internal own-imsi
+ ss-guard-timeout 30
end
--
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: newchange
Gerrit-Change-Id: I971fc2cee6fd46d4d5d6dac6c634e0b22fff183d
Gerrit-Change-Number: 12048
Gerrit-PatchSet: 1
Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181130/15e2c818/attachment.htm>