Not sure why you want to go through all this trouble.
But the function sql_to_bearerbox does not do still what you want.
Here goes:
/* 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;
send_msg(boxc->bearerbox_connection, boxc, msg);
/* message is sent with validity in absolute seconds */
gw_sql_save_msg(msg, octstr_imm("MT"));
/* message is saved in sent_sms in absolute seconds */
From: Alexander Malysh [mailto:[email protected]] On Behalf Of Alexander
Malysh
Sent: maandag 18 februari 2013 10:02
To: Rene Kluwen
Cc: [email protected]
Subject: Re: Validity perdiod
Hi,
just found a typo in my patch and changed it to:
msg_escaped = msg_duplicate(msg);
/* convert validity & deferred to minutes */
if (msg_escaped->sms.validity != SMS_PARAM_UNDEFINED)
msg_escaped->sms.validity = (msg_escaped->sms.validity -
time(NULL))/60;
if (msg_escaped->sms.deferred != SMS_PARAM_UNDEFINED)
msg_escaped->sms.deferred = (msg_escaped->sms.deferred -
time(NULL))/60;
gw_sql_save_msg(msg_escaped, octstr_imm("MT"));
This should fix this issue.
Alex
Am 18.02.2013 um 09:57 schrieb Rene Kluwen <[email protected]>:
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 < <mailto:[email protected]>
[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