osmo-msc/src/libmsc
Neels Hofmeyr d553c085e7 sms queue: avoid repeated Paging for a failed SMS
So far, sms_pending_failed() starts a new sms_queue_trigger() run. The
intention behind that might have been to fill up the queue when sending SMS has
failed, but the practical effect is actually bad:

As current ttcn3-msc-test runs show, a failed MT SMS gets triggered multiple
times in short succession, i.e. osmo-msc repeatedly sends Paging Requests for
the same subscriber.

This special case happens actually only when there are few SMS still in the DB
to be delivered. In the TTCN3 test, there is exactly one MT SMS for one
subscriber, and retriggering the queue brings up the same SMS every time.

See f_tc_lu_and_mt_sms_paging_and_nothing() and f_tc_sgsap_mt_sms_and_nothing()
which say:
"/* Expect the MSC to page exactly 10 times before giving up */"

This is bad because an MSC should send a Paging Request exactly once. Retrying
failed Paging is clearly the task of the BSC, not the MSC. The remaining code
around Paging correctly follows this paradigm, but this retrigger doesn't.

Do not immediately trigger the SMS queue on a failed MT SMS. Instead, leave it
up to the periodical SMS queue trigger to decide.

This patch will cause the MT SMS tests in ttcn3-msc-tests to fail, because the
test expectations are bogus. The patch fixing the test run is listed 'Related'
below.

Related: I7dce12942a65eaaf97f78ca69401c7f93faacb9e (osmo-ttcn3-hacks)
Change-Id: I24bf9f1c1167efe1080ae4cf47ed2ef0bd981e49
2019-04-12 02:15:25 +02:00
..
Makefile.am Add SGs Interface 2019-02-04 13:36:26 +01:00
a_iface.c a_iface: OSMO_ASSERT() if we ever want to send BSSAP with invalid length 2019-03-19 13:39:14 +00:00
a_iface_bssap.c Handle LCLS-NOTIFICATION message from BSS 2019-01-24 17:37:08 +00:00
a_reset.c combine several small .h in msc_common.h 2018-11-30 22:46:15 +01:00
ctrl_commands.c cosmetic: remove forgotten debug printf 2018-11-08 11:10:15 +01:00
db.c libmsc/db.c: cosmetic: mark missing breaks in switch as intended 2018-11-21 19:48:16 +07:00
gsm_04_08.c libvlr: Allow 2G auth tuples to be re-used without going through AUTH 2019-03-19 15:24:01 +00:00
gsm_04_08_cc.c transaction: clarify magic 0xff transaction ID 2019-02-15 02:19:30 +07:00
gsm_04_11.c transaction: drop meaningless ti_flag of trans_assign_trans_id() 2019-02-15 02:19:24 +07:00
gsm_04_11_gsup.c gsm_04_11_gsup.c: drop unused conn lookup 2019-03-07 04:17:47 +01:00
gsm_04_14.c rename gsm_subscriber_connection to ran_conn 2018-11-30 22:45:42 +01:00
gsm_04_80.c libmsc/gsm_04_80.c: add msc_send_ussd_release_complete_cause() 2019-02-13 12:50:14 +00:00
gsm_09_11.c libmsc/gsm_09_11.c: implement guard timer for NCSS sessions 2019-02-20 03:22:38 +07:00
gsm_subscriber.c use only accepted ran_conns for new transactions 2019-03-07 03:58:29 +01:00
iu_dummy.c refactor log ctx for vlr_subscr and ran_conn 2019-01-12 09:51:22 +00:00
iucs.c use osmo_rat_type from libosmocore 2019-01-04 17:26:14 +00:00
iucs_ranap.c use osmo_rat_type from libosmocore 2019-01-04 17:26:14 +00:00
mncc.c Massive removal of unused code/structs/headers 2018-01-25 00:18:05 +01:00
mncc_builtin.c MNCC: use log wrapper for call processing 2018-12-23 09:51:53 +00:00
mncc_sock.c libmsc/mncc_sock.c: Add lchan_type_offset in queue_hello() 2018-08-10 14:31:30 +00:00
msc_ifaces.c Add SGs Interface 2019-02-04 13:36:26 +01:00
msc_mgcp.c tweak fsm_msc_mgcp FSM and FI name 2019-01-12 09:51:22 +00:00
msc_vty.c msc_vty: add missing header file 2019-03-19 18:52:56 +01:00
osmo_msc.c libmsc/gsm_09_11.c: implement guard timer for NCSS sessions 2019-02-20 03:22:38 +07:00
ran_conn.c use only accepted ran_conns for new transactions 2019-03-07 03:58:29 +01:00
rrlp.c move ran_conn declarations to new ran_conn.h 2018-11-30 22:46:15 +01:00
sgs_iface.c sgs_iface: fix nullpointer dereference 2019-04-11 07:32:48 +00:00
sgs_server.c Add SGs Interface 2019-02-04 13:36:26 +01:00
sgs_vty.c libmsc: fix: properly initialize the SGs server 2019-03-28 17:10:11 +07:00
silent_call.c silent_call: use osmo_strlcpy() instead of strncpy() 2019-03-15 09:51:15 +01:00
smpp_openbsc.c Don't deliver alert notifications to ESME not yet bound. 2019-02-28 14:18:29 +00:00
smpp_smsc.c smpp_smsc: Call destroy_tlv() when using build_tlv() 2019-04-10 10:53:23 +00:00
smpp_smsc.h Make alert notifications vty configurable per ESME 2019-01-17 14:03:27 +00:00
smpp_utils.c dissolve libcommon: drop debug.c 2018-03-22 17:05:42 +01:00
smpp_vty.c Write configuration correctly from vty (alert notifications) 2019-03-29 22:48:38 +00:00
sms_queue.c sms queue: avoid repeated Paging for a failed SMS 2019-04-12 02:15:25 +02:00
transaction.c transaction: fix description of trans_assign_trans_id() 2019-02-15 02:19:30 +07:00