[PATCH] BUG on DLR parsing

Alejandro Guerrieri aguerrieri at kannel.org
Thu Apr 30 15:44:47 CEST 2009


Ooook, didn't know about that one :)

Thanks!
--
Alejandro Guerrieri
aguerrieri at kannel.org



On 30/04/2009, at 15:32, Alexander Malysh wrote:

>
> Am 30.04.2009 um 15:20 schrieb Alejandro Guerrieri:
>
>> Ok, I definitely could do that, the only problem is how will I test  
>> for it afterwards (not sure if my test binds work with that tlv).
>>
>> I'll figure out something I guess ;)
>
> modify test/drive_smpp.c ;)
>
>>
>> Regards,
>> --
>> Alejandro Guerrieri
>> aguerrieri at kannel.org
>>
>>
>>
>> On 30/04/2009, at 14:18, Alexander Malysh wrote:
>>
>>> Hi,
>>>
>>> +1 for this patch :)
>>>
>>> As to the original patch, you should first check for  
>>> network_error_code TLV before going to parse
>>> message payload. Only of it's not there you should parse payload.  
>>> So in this form -1 for this patch.
>>>
>>> Thanks,
>>> Alex
>>>
>>> P.S. Please integrate both patches together.
>>>
>>> Am 30.04.2009 um 12:46 schrieb Alejandro Guerrieri:
>>>
>>>> Alex,
>>>>
>>>> What about something like this (in addition to my former patch):
>>>>
>>>> Index: gw/smsc/smsc_smpp.c
>>>> ===================================================================
>>>> --- gw/smsc/smsc_smpp.c	(revision 29)
>>>> +++ gw/smsc/smsc_smpp.c	(working copy)
>>>> @@ -1374,11 +1374,16 @@
>>>>       * we found the delivery report in our storage, so recode the
>>>>       * message structure.
>>>>       * The DLR trigger URL is indicated by msg->sms.dlr_url.
>>>> -         * Add the DLR error code as billing identifier.
>>>> +         * Add the DLR error code to meta-data.
>>>>       */
>>>>      dlrmsg->sms.msgdata = octstr_duplicate(respstr);
>>>>      dlrmsg->sms.sms_type = report_mo;
>>>> -        dlrmsg->sms.binfo = octstr_duplicate(err);
>>>> +        if (err != NULL) {
>>>> +            if (dlrmsg->sms.meta_data == NULL) {
>>>> +            	dlrmsg->sms.meta_data = octstr_create("");
>>>> +            }
>>>> +        	meta_data_set_value(dlrmsg->sms.meta_data, "smpp",  
>>>> octstr_imm("dlr_err"), err, 1);
>>>> +        }
>>>>  } else {
>>>>      error(0,"SMPP[%s]: got DLR but could not find message or was  
>>>> not interested "
>>>>              "in it id<%s> dst<%s>, type<%d>",
>>>>
>>>> Regards,
>>>> --
>>>> Alejandro Guerrieri
>>>> aguerrieri at kannel.org
>>>>
>>>>
>>>>
>>>> On 30/04/2009, at 9:30, Alexander Malysh wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I don't like passing err in binfo field. IMO binfo should be  
>>>>> used for billing identifier but not for smpp error code.
>>>>> I would prefer to see patch that drop err from binfo and make  
>>>>> use of meta-data (group dlr?).
>>>>>
>>>>> Thanks,
>>>>> Alex
>>>>>
>>>>> Am 29.04.2009 um 18:10 schrieb Alejandro Guerrieri:
>>>>>
>>>>>> This patch fixes a bug when parsing DLR's:
>>>>>>
>>>>>> As the code is now, if a DLR having a receipted_message_id, the  
>>>>>> DLR text is not parsed, so the "err" and "stat" fields are empty.
>>>>>>
>>>>>> In particular, the "err" code is being passed on the "binfo"  
>>>>>> field, so this remained empty if a receipted_message_id is  
>>>>>> present (because the sscanf code was not executed).
>>>>>>
>>>>>> Attached patch fixes that part, so the "err" parameter is  
>>>>>> present on the binfo field on all cases.
>>>>>>
>>>>>> Regards,
>>>>>> --
>>>>>> Alejandro Guerrieri
>>>>>> aguerrieri at kannel.org
>>>>>>
>>>>>>
>>>>>> <kannel-smsc-dlr-err.patch>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the devel mailing list