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.

Reply via email to