RE: Extensive DLR testing with SMPP found lots of bugs

Mauricio Ramos <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Hi Andreas and everybody interested in SMPP DLR correctness.

>> 1) Kannel is not doing multiple DLR notifications per message 
>> when requested 
>> (e.g. sendms dlrmask=31) 
> 
> Hmm. this is to be considered a BUG. only when a final state 
> has been reached the db entries should be removed. In a 
> temporary state (buffered), it should be notified and still 
> kept (EMI driver does this correctly).

Well, Kannel never removes db entries in ANY situation.  It gets the SMSC
acknolgedgment through submit_sm_resp PDU as well as gets the SME
acknowledgment through deliver_sm PDU, BUT, it doesn't find the respective
DLR;

>> 2) Kannel is not inserting a record in mysql dlr table when 
>> sendsms dlrmask 
>> is "16" 
> 
> it might insert one but a different one. for status 1, 2, 4 
> the message ID from the remote SMSC are needed. 
> for 8 and 16, a temporary internal ID is used as the message 
> ID is not being received back yet. In the EMI driver the 
> sequence number is used for that. Now in SMPP it might be 
> done different but be aware that it might not even add 
> anything as the answer will be back within seconds (worst 
> case is the timeout of the SMPP session) so the statuses 
> could be very well kept in memory.

Well, but it's not happening.  I didn't see any SMSC's message ID stored in
DLR's MySQL Table.  How Kannel could compare the stored DLR with the
deliver_sm message-id?

>> 3) Kannel is setting the mysql drl field status to "0" when 
>> dlrmask is "4" 
> 
> Thats an appropriate status for a message not being delivered 
> to the SMSC yet. 
> 
>> or "20" and also setting mysql dlr field timestamp to 
>> "000000000000000" 
> 
> correct. this happens when the SMS is being submitted to the 
> SMSC. we dont know if it has been buffered yet and we dont 
> have any update from the other side about the message ID. 
> 
>> 4) Dlrmasks 8,9,10,25,26 or 27 are returning dlr-status equal 
>> to "12" when 
>> should return "8" 
> 
> I've seen that as well. They should return a status 8 and 
> another message with status 4 instead.

My guess is it should return only 8 since the above dlrmasks (8,9,10,25,26
and 27) don't contain the 4 mapped within.

>> 5) In many test cases (dlrmasks 9,10,11,13,14,15,25,26, 
>> 27,29,30 or 31) 
>> Kannel says "DLR not deleted because we wait on more reports" 
>> but after 
>> receiving a correct deliver_sm (DLR) it just didn't find the 
>> mysql row, 
>> telling "no rows found" and then "got DLR but could not find 
>> message or was 
>> not interested in it" 
> 
> then the message-id mapping is wrong. it doesnt find the 
> message in the database. This is SMSC dependent and requires 
> proper configuration for really odd SMSC who once send you 
> message ID in hex, once in alphanumeric and once in decimal 
> (really stupid...). 

I knew this and AFAIK I'm using the correct mapping (default) since the
message-id-format is hexadecimal for submit_sm_resp and decimal for
deliver_sm.  Anyway I'll try the other ones...

>> 6) When Kannel says "removing DLR from database" the 
>> respective mysql row 
>> remains on the dlr table 
> 
> Now this is really odd. edit the dlr.c and enable a variable 
> to do SQL dumps so you see the SQL statements its executing. 
> This helps a lot to debug those things. Maybe its the same 
> issue as above, wrong type of message ID.

Well, maybe, I'll also check those things out.
 
>> Andreas Fink 
>> Fink Consulting GmbH 

Thanks.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.