Hi

>From my understanting - I'm not a developper- the issue is what to do
when only one part of the concatenated fails -resend the whole/failed
part- and how/when to validate the "original" full initial message. it
seems that type of messafe handling will require to have a separate
queue/buffer for concatenated messages in order to be able to track
the whole message.

Maybe you can do a search on the mailing list for concatenated
messages and will find the threads between devs people.

Regards

Alvaro



|-----------------------------------------------------------------------------------------------------------------|
Envíe y Reciba Datos y mensajes de Texto (SMS) hacia y desde cualquier
celular y Nextel
en el Perú, México y en mas de 180 paises. Use aplicaciones 2 vias via
SMS y GPRS online
              Visitenos en www.perusms.NET www.smsglobal.com.mx y
www.pravcom.com



On Thu, Mar 24, 2011 at 2:00 PM, Toby Phipps
<toby.phi...@nexmedia.com.sg> wrote:
> Hi Alvaro,
>
> Thanks for the feedback. Any insight into why it was implemented this way?
> i.e. is there reason why each of the submit_sm_resp PDUs shouldn't generate
> a separate DLR in the DB? The only reason I can come up with offhand is that
> the current way probably handles misbehaving SMPP servers better - servers
> that send one DLR per concatenated message rather than per part. However,
> the current (broken, IMHO) behaviour could easily be maintained with a
> config parameter.
>
> Before I scope a patch to address this, any comments or disagreements?
>
> Also, I haven't tried this with memory-only DLRs - is this an issue limited
> to SQL DLR storage? From looking at my logs, it seems that a DLR is indeed
> created in memory for the second and subsequent message parts, just not
> written to the DB.
>
> Thanks,
> Toby
>
> -----Original Message-----
> From: Alvaro Cornejo [mailto:cornejo.alv...@gmail.com]
> Sent: Friday, March 25, 2011 1:47 AM
> To: Toby Phipps
> Cc: users@kannel.org
> Subject: Re: DLRs for concatenated messages
>
> Hi
>
> That is the way kannel handles dlr for concatenated messages. There has been
> several threads regarding how to improve this but nothing has been done.
>
>
> |---------------------------------------------------------------------------
> --------------------------------------|
> Envíe y Reciba Datos y mensajes de Texto (SMS) hacia y desde cualquier
> celular y Nextel en el Perú, México y en mas de 180 paises. Use aplicaciones
> 2 vias via SMS y GPRS online
>               Visitenos en www.perusms.NET www.smsglobal.com.mx y
> www.pravcom.com
>
>
>
> On Thu, Mar 24, 2011 at 1:29 PM, Toby Phipps <toby.phi...@nexmedia.com.sg>
> wrote:
>> Hi all,
>>
>> I'm seeing some strangeness with DLR handling of concatenated messages
>> sent via SMPP in Kannel 1.5.0.
>>
>> I'm using MySQL for DLR storage and only the first message of the set
>> generates a DLR in the database.  My provider, however, follows the
>> specs and returns a DLR for each part. Kannel recognizes the first DLR
>> and updates the database. When the DLRs for the remaining parts
>> arrive, Kannel tries to find them in the database and fails, spitting out
> an error (see below).
>>
>> Specifically:
>>
>> 1. When the submit_sm_resp PDU for the first message part arrives,
>> Kannel happily creates the DLR in the database:
>>
>> 2011-03-25 02:03:37 [5106] [10] DEBUG: SMPP PDU 0xc8ad960 dump:
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:   type_name: submit_sm_resp
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:   command_id: 2147483652 =
>> 0x80000004
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:   command_status: 0 =
>> 0x00000000
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:   sequence_number: 17 =
>> 0x00000011
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:   message_id:
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:    Octet string at 0xc8cbc50:
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:      len:  20
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:      size: 21
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:      immutable: 0
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:      data: 31 33 30 30 39 38 39
>> 38 31
>> 37 36 36 36 31 38 33   1300989817666183
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:      data: 30 34 30 32
>> 0402
>> 2011-03-25 02:03:37 [5106] [10] DEBUG:    Octet string dump ends.
>> 2011-03-25 02:03:37 [5106] [10] DEBUG: SMPP PDU dump ends.
>> 2011-03-25 02:03:37 [5106] [10] DEBUG: DLR[mysql]: Adding DLR
>> smsc=MY-SMPP-CONNECTION, ts=13009898176661830402, src=test,
>> dst=999999999, mask=31, boxc=smsbox
>> 2011-03-25 02:03:37 [5106] [10] DEBUG: adding DLR entry into database
>> 2011-03-25 02:03:37 [5106] [10] DEBUG: sql: INSERT INTO
>> `smsgw_kannel_sms_dlr` (`smsc`, `timestamp`, `source`, `destination`,
>> `service`, `url`, `mask`, `boxc_id`, `status`) VALUES (?, ?, ?, ?, ?,
>> ?, ?, ?, 0)
>>
>> 2. When the submit_sm_resp PDU for the subsequent message parts
>> arrive, Kannel doesn't create a database DLR but instead appears to
>> create one in memory (note the missing SQL):
>>
>> 2011-03-25 02:03:38 [5106] [10] DEBUG: SMPP PDU 0xc8ad960 dump:
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:   type_name: submit_sm_resp
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:   command_id: 2147483652 =
>> 0x80000004
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:   command_status: 0 =
>> 0x00000000
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:   sequence_number: 18 =
>> 0x00000012
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:   message_id:
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:    Octet string at 0xc8d1d80:
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:      len:  20
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:      size: 21
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:      immutable: 0
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:      data: 31 33 30 30 39 38 39
>> 38 31
>> 37 39 33 34 31 38 34   1300989817934184
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:      data: 30 34 30 32
>> 0402
>> 2011-03-25 02:03:38 [5106] [10] DEBUG:    Octet string dump ends.
>> 2011-03-25 02:03:38 [5106] [10] DEBUG: SMPP PDU dump ends.
>> 2011-03-25 02:03:38 [5106] [10] DEBUG: SMSC[MY-SMPP-CONNECTION]:
>> creating DLR message
>> 2011-03-25 02:03:38 [5106] [10] DEBUG: SMSC[MY-SMPP-CONNECTION]: DLR =
>>
>> 3. When the deliver_sm PDU arrives for the first message part, it's
>> correctly matched against the database, processed and deleted:
>>
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: SMPP PDU 0xc8ad960 dump:
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   type_name: deliver_sm
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   command_id: 5 = 0x00000005
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   command_status: 0 =
>> 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   sequence_number: 8 =
>> 0x00000008
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   service_type: NULL
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   source_addr_ton: 0 =
>> 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   source_addr_npi: 0 =
>> 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   source_addr: "999999999"
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   dest_addr_ton: 0 = 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   dest_addr_npi: 0 = 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   destination_addr: "test"
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   esm_class: 4 = 0x00000004
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   protocol_id: 0 = 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   priority_flag: 0 = 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   schedule_delivery_time: NULL
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   validity_period: NULL
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   registered_delivery: 0 =
>> 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   replace_if_present_flag: 0 =
>> 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   data_coding: 0 = 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   sm_default_msg_id: 0 =
>> 0x00000000
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   sm_length: 165 = 0x000000a5
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:   short_message:
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:    Octet string at 0xc8b00e0:
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      len:  165
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      size: 166
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      immutable: 0
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 69 64 3a 31 33 30 30
>> 39 38
>> 39 38 31 37 36 36 36   id:1300989817666
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 31 38 33 30 34 30 32
>> 20 73
>> 75 62 3a 30 30 31 20   1830402 sub:001
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 64 6c 76 72 64 3a 30
>> 30 31
>> 20 73 75 62 6d 69 74   dlvrd:001 submit
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 20 64 61 74 65 3a 31
>> 31 30
>> 33 32 34 31 39 30 33    date:1103241903
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 20 64 6f 6e 65 20 64
>> 61 74
>> 65 3a 31 31 30 33 32    done date:11032
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 34 31 39 30 33 20 73
>> 74 61
>> 74 3a 44 45 4c 49 56   41903 stat:DELIV
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 52 44 20 65 72 72 3a
>> 30 30
>> 30 20 74 65 78 74 3a   RD err:000 text:
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 20 4d 43 43 3a 35 32
>> 35 20 4d 4e 43 3a 30 31 0a    MCC:525 MNC:01.
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 53 4d 53 43 52 65 63
>> 65 69
>> 70 74 4d 73 67 49 64   SMSCReceiptMsgId
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 3a 31 33 30 30 39 38
>> 39 38
>> 31 37 36 36 36 31 38   :130098981766618
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:      data: 33 30 34 30 32
>> 30402
>> 2011-03-25 02:03:48 [5106] [10] DEBUG:    Octet string dump ends.
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: SMPP PDU dump ends.
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: SMPP[MY-SMPP-CONNECTION]
>> handle_pdu, got DLR
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: DLR[mysql]: Looking for DLR
>> smsc= MY-SMPP-CONNECTION, ts=13009898176661830402, dst=999999999,
>> type=1
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: sql: SELECT `mask`, `service`,
>> `url`, `source`, `destination`, `boxc_id` FROM `smsgw_kannel_sms_dlr`
>> WHERE `smsc`=? AND `timestamp`=?  LIMIT 1
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: column=mask buffer_type=253
>> max_length=0 length=10
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: column=service buffer_type=253
>> max_length=0 length=50
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: column=url buffer_type=253
>> max_length=0 length=255
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: column=source buffer_type=253
>> max_length=0 length=16
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: column=destination
>> buffer_type=253
>> max_length=0 length=16
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: column=boxc_id buffer_type=253
>> max_length=0 length=50
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: DLR[mysql]: created DLR message
>> for URL <>
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: removing DLR from database
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: sql: DELETE FROM
>> `smsgw_kannel_sms_dlr` WHERE `smsc`=? AND `timestamp`=?  LIMIT 1
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: new group created `smpp'
>> 2011-03-25 02:03:48 [5106] [10] DEBUG: group=`smpp' key=`dlr_err'
>> value=`000'
>>
>> 3. When the deliver_sm PDU arrives for the first subsequent message
>> parts, they're not found in the database (as they weren't created
>> there in the first place!) and Kannel throws an error:
>>
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: SMPP[MY-SMPP-CONNECTION]: Got PDU:
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: SMPP PDU 0xc8ad960 dump:
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   type_name: deliver_sm
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   command_id: 5 = 0x00000005
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   command_status: 0 =
>> 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   sequence_number: 9 =
>> 0x00000009
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   service_type: NULL
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   source_addr_ton: 0 =
>> 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   source_addr_npi: 0 =
>> 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   source_addr: "999999999"
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   dest_addr_ton: 0 = 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   dest_addr_npi: 0 = 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   destination_addr: "test"
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   esm_class: 4 = 0x00000004
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   protocol_id: 0 = 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   priority_flag: 0 = 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   schedule_delivery_time: NULL
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   validity_period: NULL
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   registered_delivery: 0 =
>> 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   replace_if_present_flag: 0 =
>> 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   data_coding: 0 = 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   sm_default_msg_id: 0 =
>> 0x00000000
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   sm_length: 165 = 0x000000a5
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:   short_message:
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:    Octet string at 0xc8d0c80:
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      len:  165
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      size: 166
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      immutable: 0
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 69 64 3a 31 33 30 30
>> 39 38
>> 39 38 31 37 39 33 34   id:1300989817934
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 31 38 34 30 34 30 32
>> 20 73
>> 75 62 3a 30 30 31 20   1840402 sub:001
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 64 6c 76 72 64 3a 30
>> 30 31
>> 20 73 75 62 6d 69 74   dlvrd:001 submit
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 20 64 61 74 65 3a 31
>> 31 30
>> 33 32 34 31 39 30 33    date:1103241903
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 20 64 6f 6e 65 20 64
>> 61 74
>> 65 3a 31 31 30 33 32    done date:11032
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 34 31 39 30 33 20 73
>> 74 61
>> 74 3a 44 45 4c 49 56   41903 stat:DELIV
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 52 44 20 65 72 72 3a
>> 30 30
>> 30 20 74 65 78 74 3a   RD err:000 text:
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 20 4d 43 43 3a 35 32
>> 35 20 4d 4e 43 3a 30 31 0a    MCC:525 MNC:01.
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 53 4d 53 43 52 65 63
>> 65 69
>> 70 74 4d 73 67 49 64   SMSCReceiptMsgId
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 3a 31 33 30 30 39 38
>> 39 38
>> 31 37 39 33 34 31 38   :130098981793418
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:      data: 34 30 34 30 32
>> 40402
>> 2011-03-25 02:03:56 [5106] [10] DEBUG:    Octet string dump ends.
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: SMPP PDU dump ends.
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: SMPP[MY-SMPP-CONNECTION]
>> handle_pdu, got DLR
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: DLR[mysql]: Looking for DLR
>> smsc= MY-SMPP-CONNECTION, ts=13009898179341840402, dst=999999999,
>> type=1
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: sql: SELECT `mask`, `service`,
>> `url`, `source`, `destination`, `boxc_id` FROM ` smsgw_kannel_sms_dlr`
>> WHERE `smsc`=? AND `timestamp`=?  LIMIT 1
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: column=mask buffer_type=253
>> max_length=0 length=10
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: column=service buffer_type=253
>> max_length=0 length=50
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: column=url buffer_type=253
>> max_length=0 length=255
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: column=source buffer_type=253
>> max_length=0 length=16
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: column=destination
>> buffer_type=253
>> max_length=0 length=16
>> 2011-03-25 02:03:56 [5106] [10] DEBUG: column=boxc_id buffer_type=253
>> max_length=0 length=50
>> 2011-03-25 02:03:56 [5106] [10] WARNING: DLR[mysql]: DLR from
>> SMSC<MY-SMPP-CONNECTION > for DST<999999999> not found.
>> 2011-03-25 02:03:56 [5106] [10] ERROR: SMPP[MY-SMPP-CONNECTION]: got
>> DLR but could not find message or was not interested in it
>> id<13009898179341840402> dst<999999999>, type<1>
>>
>> Can anyone shed some light on this behaviour? I've tried this with
>> messages injected via sqlbox and via smsbox/sendsms and both exhibit
>> exactly the same issue.
>>
>> There's another thread on a similar topic
>> (http://www.mail-archive.com/users@kannel.org/msg20976.html) but it
>> seems that my issue is slightly different in that Kannel isn't even
>> creating the second and subsequent message DLRs for matching, so it
>> gets upset when they arrive.
>>
>> Thanks,
>> Toby.
>>
>>
>>
>>
>
>

Reply via email to