SMSC: Store&Forward not working for subscribed but unregistered MS
The following issue is specific to the splitted NITB components (MSC, BSC, HLR, etc). Using NITB the following is handled correctly.
While writing osmo-gsm-tester smpp test to check use of Store&Forward mode, I run into the following scenario:
- Core network + BTS is turned on, no MS available yet
- An esme connects to the SMSC, and sends an SMS ("submit_sm" message with mode="Store&Forward") to an MS which is still not registered into the network (but it is subscribed, ie. it is on the database).
- the SMSC should store the SMS and send a submit_sm_resp message with everything correct, but instead it sends an error:
smpplib.exceptions.PDUError: ('(11) submit_sm_resp: Invalid Destination Address', 11)
I asked Neels about this and here's his detailed answer on the topic:
<neels> pespin: makes sense, because in the NITB we have the HLR information in the local database. With the MSC we need to ask the HLR to know whether a subscriber exists -- and so far we do this only for location updating and authentication when the subscriber attaches. <neels> pespin: it seems we need to either store all SMS unconditionally or add an FSM that asks the HLR whether to accept an SMS for a given number
The esme_ms_sms_storeforward.py test contains commnented code to trigger the issue. Once this is fixed, that part of the test needs to be uncommented and validated with it.