Hi list,
in cases where the validity time is set via the sendsms HTTP interface
(in minutes), and the MT message is not directly disposed to an SMSC,
i.e. since the target smsc-id is in "re-connecting" state, we would
cycle the message inside the sms_router() loop constantly UNTIL the
SMSC gets available again, and then send it to the SMSC, leaving it
to take care about the validity time.
This is semantically wrong, since we can timeout the message while
re-cycling inside the sms_router() loop on our own, avoiding to send
a message to the SMSC which hasn't any validity time anyway.
We now do a quick check on the validity every time we enter smsc2_rout()
to ensure we're "still valid" to route the message to a
lower SMSC module layer. If not, then the message gets DISCARDED and an
corresponding DLR SMSC FAIL event is escalated.
The following ChangeSet has been applied to the SVN trunk:
2013-12-28 Stipe Tolj <stolj at kannel.org>
* gw/bb_[boxc|smscconn].c: handle new SMSCCONN_FAILED_TIMEOUT case as
return value of smsc2_rout(), which now checks internally if the
message
is still valid according to the validity timestamp. If not, i.e.
since
there was a continues looping in sms_router() since no SMSC was
available
for a particular time, it makes no sense to shift the message to
the SMSC
since the validity has expired. In that case semantically it is
cleaner
to DISCARD the message in the bearerbox scope directly, and avoid
sending
the message to the upstream SMSC with a logically expired validity.
* gw/bb_smscconn_cb.h: add SMSCCONN_FAILED_TIMEOUT enum value to
indicate
that the validity time fo the message expired while trying to
route it.
Stipe
--
-------------------------------------------------------------------
Kölner Landstrasse 419
40589 Düsseldorf, NRW, Germany
tolj.org system architecture Kannel Software Foundation (KSF)
http://www.tolj.org/ http://www.kannel.org/
mailto:st_{at}_tolj.org mailto:stolj_{at}_kannel.org
-------------------------------------------------------------------