SMPP Submit_SM sender address

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/OpenBSC@lists.osmocom.org/.

Alexander Chemeris alexander.chemeris at gmail.com
Thu Aug 29 17:00:39 UTC 2013


Yes, I figured that transaction mode should work, but we have to use
async mode here, unfortunately.

Regarding DB schema - Holger's patch looks sane to me. I would do it
the same way if I implemented it. I hope it'll lend to master when we
amend it with the DB update procedure.

On Thu, Aug 29, 2013 at 11:52 AM, Harald Welte <laforge at gnumonks.org> wrote:
> One more comment in addition to Holgers response:
>
> The problem you are describing only exists in store-and-forward mode, it
> doesn' exist when you select SMPP transaction mode.  In the latter case,
> the SMS is not queued but immediately delivered to the MS, and an error
> returned if the MS is not reachable.
>
> And yes, the DB schema has to change, definitely.  It was wrong to put
> the subscriber IDs in the SMS table in the first place.
>
> Regards,
>         Harald
>
> On Wed, Aug 28, 2013 at 11:17:37PM +0400, Alexander Chemeris wrote:
>> Hi Harald,
>>
>> We're trying out SMPP interconnection and found that for Submit_SM
>> (aka MT-SMS) sender is always set to an extension of subscriber ID 1.
>>
>> Looking into the code, this happens because we set "sms->sender" to
>> point to subscriber ID 1 in submit_to_sms() function in SMPP code:
>>
>> /* fill in the source address */
>> sms->sender = subscr_get_by_id(net, 1);
>> sms->src.ton = submit->source_addr_ton;
>> sms->src.npi = submit->source_addr_npi;
>> strncpy(sms->src.addr, (char *)submit->source_addr, sizeof(sms->src.addr)-1);
>>
>> And then src.addr/ton/npi are ignored when we store to the SMS DB and
>> only subscriber ID is stored:
>>
>> /* FIXME: correct validity period */
>> result = dbi_conn_queryf(conn,
>>     "INSERT INTO SMS "
>>     "(created, sender_id, receiver_id, valid_until, "
>>     "reply_path_req, status_rep_req, protocol_id, "
>>     "data_coding_scheme, ud_hdr_ind, dest_addr, "
>>     "user_data, text) VALUES "
>>     "(datetime('now'), %llu, %llu, %u, "
>>     "%u, %u, %u, %u, %u, %s, %s, %s)",
>>     sms->sender->id,
>>     sms->receiver ? sms->receiver->id : 0, validity_timestamp,
>>     sms->reply_path_req, sms->status_rep_req, sms->protocol_id,
>>     sms->data_coding_scheme, sms->ud_hdr_ind,
>>     q_daddr, q_udata, q_text);
>>
>> So when we read SMS back from the DB, sender address is taken from
>> that subscriber.
>>
>> It seems that a solution is to store actual ton/npi/addr in the SMS DB
>> instead of storing ID. Then we could set sms->sender to NULL and just
>> ignore it.
>>
>> Is there anything wrong with this approach? Otherwise we'll work on a
>> patch to implement that.
>>
>> PS What is the current policy about changing DB layouts - just
>> increase SCHEMA_REVISION?
>>
>> --
>> Regards,
>> Alexander Chemeris.
>> CEO, Fairwaves LLC / ООО УмРадио
>> http://fairwaves.ru
>
> --
> - Harald Welte <laforge at gnumonks.org>           http://laforge.gnumonks.org/
> ============================================================================
> "Privacy in residential applications is a desirable marketing option."
>                                                   (ETSI EN 300 175-7 Ch. A6)



-- 
Regards,
Alexander Chemeris.
CEO, Fairwaves LLC / ООО УмРадио
http://fairwaves.ru




More information about the OpenBSC mailing list