Re: Crazy DLRs because of ts
Julien Buratto <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
Sorry this is same problem as bug 0000193
Julien
Julien Buratto wrote:
> Hello there,
>
> upon a simple test I think kannel mixes the DLR-URL badly in the MySQL
> storage.
>
> I don't know how does kannel identify each dlr but I think is using a
> timestamp (ts)?
>
> That's very bad because with fast SMSC it happens that kannel deletes
> wrong dlrs from the DB and call bad URLs - that is really bad behaviour.
>
> Does anyone has an idea how to solve this ?
>
>
> Thanks
> Julien
>
>
> --------------------
> Here is an example:
>
> I'm sending 4 messages to phone A B C and D
> The phone B is switched off
>
> Phones A,C,D receive the SMS correcly but in the MySQL storage table I
> can still see a waiting DLR not for the phone B but for another phone.
> The phone B result as a 'delivered' and the line from the table is DELETED.
>
>
> ----- PHONE B -----
> Adding DLR smsc=smsitaly, ts=160305115627, src=Test, dst=** PHONE B **,
> mask=31, boxc=
>
> 2005-03-16 11:56:27 [8997] [8] DEBUG: sql: INSERT INTO gatewayDelivery
> (smsc, ts, source, destination, service, url, mask, boxc, status) VALUES
> ('italy', '160305115627', 'Test', '** PHONE B **', 'italy',
> 'http://www.censored.it/dlr.php?smsc_id=%i&status=%d&answer=%A&from=%P&to=%p&ts=%t&idmessaggio=4208',
> '31', '', '0');
>
> ----- PHONE A -----
> Adding DLR smsc=italy, ts=160305115627, src=Test, dst=** PHONE A **,
> mask=31, boxc=
>
> 2005-03-16 11:56:27 [8997] [8] DEBUG: sql: INSERT INTO gatewayDelivery
> (smsc, ts, source, destination, service, url, mask, boxc, status) VALUES
> ('italy', '160305115627', 'Test', '** PHONE B **', 'smsitaly',
> 'http://www.censored.it/dlr.php?smsc_id=%i&status=%d&answer=%A&from=%P&to=%p&ts=%t&idmessaggio=4209',
> '31', '', '0');
>
> As you can see, both the DLR have the same ts value, but the PHONE-B-DLR
> is inserted before A (that's ok, no problem).
>
> As soon as the delivery arrives from the SMSC for PHONE A (phone B il
> switched OFF), kannel says:
>
> 2005-03-16 11:56:43 [8997] [8] DEBUG: DLR[mysql]: Looking for DLR
> smsc=smsitaly, ts=160305115627, dst=** PHONE A **, type=1
>
> but the query to look for it is:
> SELECT mask, service, url, source, destination, boxc FROM
> gatewayDelivery WHERE smsc='italy' AND ts='160305115627';
>
> this will not return the DLR for ** PHONE A ** but the one for PHONE B
> because it has been inserted before resulting in a misleading DLR call back
>
> it fetches a wrong URL: created DLR message for URL
>
> and it deletes a wrong DLR entry
> DELETE FROM gatewayDelivery WHERE smsc='italy' AND ts='160305115627'
> LIMIT 1;
>
>
>