Re: Interesting issue with DLRs

Ben Suffolk <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Stipe,

> ok, interesting thing indeed... We need to discuss here if this is  
> a logical PDU flow "problem" of the SMPP SMSC, or even if we  
> (kannel) misbehave in terms of how threads are processing... But  
> (!) receiver thread inside the smsc_smpp.c module handles all PDUs  
> from SMSC. So, if DLR (deliver_sm or data_sm) arrive before the  
> submit_sm_resp, then I assume this is a logical misbehaviour of SMSC.

I had assumed that the deliver_sm would come in on the RX bind, and  
the submit_sm_resp as the reply on the TX bind. Are you saying the  
same thread handles both these binds? If so is it possible that the  
SMSC did in fact deliver the submit_sm_resp fractionally before the  
deliver_sm but the thread was processing the RX at the time (say  
several deliver_sm PDUs were coming in at the same time - which given  
the nature of my app happens a lot as the message flow is pretty  
bursty like that) and so got to the deliver_sm before the  
submit_sm_resp. However its more than possible that the SMSC could be  
to blame.

> hmmm... good point. I face also some connectivity issues when  
> connecting 2 independant SMPP client systems with the same SMPP  
> upstream account. Kannel receives DLRs for which it has no temp  
> data in DLR storage and hence "discards" the DLRs without any  
> meaningfull processing.

Assuming you used a database to store the DLRs and used the same one  
for each system it should find them? Or by 2 independent SMPP systems  
do you not mean 2 bearerbox instances connected to the same SMSC?

> We may put any receiving DLRs that we can't match in teh "DLR MT"  
> storage table to the "DLR MO" storage table. Hence run 2 tables.  
> When we insert into "DLR MT"  table at the point we receive  
> submit_sm_resp, we may check that there is no existing entry in  
> "DLR MO" table. If there is, then we have already received a DLR  
> for this MT message.
>
> This solves 2 issues:
>
> a) DLR MO tables holds any DLRs that can't be resolved... that  
> means external applications can "fetch" the DLRs from DLR MO table  
> to process further on.
>
> b) "race conditioning" between submit_sm_resp with message id and  
> DLR itself can be hooked together, so we get the usual HTTP  
> callback even while SMSC sends DLRs before.
>
> Opinions by the others for this approach?

Regards

Ben
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.