RE: Validity perdiod

"Rene Kluwen" <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
This looks plain wrong: msg->sms.validity = (msg->sms.validity -
time(NULL))/60;

 

It assumes that validity is in the same unit as time(NULL) (Seconds?) and
then divides by 60.

It's around line 291 of sqlbox.c But I have the feeling that the same bug is
on other places as well.

 

== Rene

 

 

From: [email protected] [mailto:[email protected]] On Behalf
Of Rene Kluwen
Sent: maandag 18 februari 2013 9:57
To: 'Alexander Malysh'
Cc: [email protected]
Subject: RE: Validity perdiod

 

In sqlbox, two different things happen.

 

1.       Select rows from send_sms and send them to bearerbox (with validity
in minutes)

2.       Relay rows from smsbox to bearerbox and store them in sent_sms on
the fly. These messages have been processed by smsbox already and should not
be reprocessed.

 

I am not sure what exactly you did because I don't have time to look at the
code now. But something is going very wrong here. Even without using sqlbox
we are getting invalid validity_period fields in smsc_smpp.

 

On a side note, I see now that opensmppbox never sends a validity field to
its connected entity, now I look at it. But that's a different story.

 

== Rene

 

From: Alexander Malysh [mailto:[email protected]] On Behalf Of Alexander
Malysh
Sent: maandag 18 februari 2013 9:29
To: Rene Kluwen
Cc: [email protected]
Subject: Re: Validity perdiod

 

Hi Rene,

 

I converted validity & deferred to be unix timestamp internally, they were
in minutes before.

Due to the fact that I didn't know how sqlbox works, I assumed that validity
& deferred in the

sqlbox tables also stored in minutes therefore this conversion:

            if validity set then (now - unix timestamp) / 60 -> minutes

 

the counter part is when selecting values from DB and sending to bearerbox:

 

            /* convert validity and deferred to unix timestamp */

            if (msg->sms.validity != SMS_PARAM_UNDEFINED)

                msg->sms.validity = time(NULL) + msg->sms.validity * 60;

            if (msg->sms.deferred != SMS_PARAM_UNDEFINED)

                msg->sms.deferred = time(NULL) + msg->sms.deferred * 60;

 

Alex

 

Am 16.02.2013 um 15:36 schrieb Rene Kluwen <[email protected]>:

 

Also: in sqlbox.c (function smsbox_to_bearerbox()):

 

               /* convert validity & deferred to minutes */

                if (msg->sms.validity != SMS_PARAM_UNDEFINED)

                    msg->sms.validity = (msg->sms.validity - time(NULL))/60;

                if (msg->sms.deferred != SMS_PARAM_UNDEFINED)

                    msg->sms.deferred = (msg->sms.deferred - time(NULL))/60;

 

Isn't this field encoded twice now? Once in smsbox and another time in
sqlbox?

 

Alexander, you made this change. Please shed some light.

 

From:  <mailto:[email protected]> [email protected]
[mailto:devel- <mailto:[email protected]> [email protected]] On Behalf Of
Rene Kluwen
Sent: vrijdag 15 februari 2013 15:16
To:  <mailto:[email protected]> [email protected]
Subject: Validity perdiod

 

I came across an issue since svn version 4956 of smsbox.c, using smpp.

 

The logs show the following:

 

2013-02-15 14:52:45 [3144] [7] DEBUG:   validity_period: "711110215159000+"

 

This was this afternoon at 14:52. The validity field of the sendsms
interface was not set.

 

How do I interpret this as "YYMMDDhhmmsstnnp"?

 

One of my clients needed to downgrade because of this issue.

 

== Rene
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.