Hi,

> Moreover, I noticed one more minor issue with rerouting. One would
> expect that both source and destination TON/NPI would remain the same
> in submit_sm as they were in deliver_sm, however, they are not. What
> is more, even if, say, destination address has TON = 1, Kannel will
> not treat it as an international number since there are no "+" in the
> beginning and as a result it will set TON to 2 (national number).
> Again, having dest-addr-ton = 1 in the smsc group makes a "workaround"
> for international numbers.
>

That could be caused by receiver SMSC module if sending SMSC doesn't set
ton/npi values to international. It's not a kannel fault but sending SMSC.

No, this is not true. As I said, deliver_sm comes with TON set to
international but after Kannel unpacks it to internal structure and
then packs again, it gets lost since number does not have a '+'
prefix. This is clearly seen from gw/smsc/smsc_smpp.c, pdu_to_msg and
msg_to_pdu() functions. To be more precise, pdu_to_msg() does

msg->sms.sender = pdu->u.deliver_sm.source_addr;

and msg_to_pdu() does a check:

   /*
    * if its a international number starting with +, lets remove the
    * '+' and set number type to international instead
    */
   if (octstr_get_char(pdu->u.submit_sm.destination_addr,0) == '+') {
       octstr_delete(pdu->u.submit_sm.destination_addr, 0,1);
       pdu->u.submit_sm.dest_addr_ton = GSM_ADDR_TON_INTERNATIONAL;
   }

which will never be true since '+' is only for mnemonics and it will
rarely be put before the number. So the problem indeed is that msg
structure does not have such a marker to store the type of src/dst
number.

--
Dziugas

Reply via email to