Hi Stipe,
seems you ignore my questions ;)
hmm thinking a bit more about this... how SMSC should match re-routed
DLR?? we don't send any message id in deliver_sm_resp.
I'm really confused...
Thanks,
Alex
Am 29.01.2009 um 17:46 schrieb Stipe Tolj:
Hi list,
after we cleared the .registered_delivery DEFINED values for the
[submit|deliver]_sm PDUs, please find an updates patch against CVS
HEAD.
It also requires to "create" the payload msg->sms.msgdata here in
case there is
non (i.e. if the DLR is a v3.4 style DLR without payload text). This
is
necessary, since we otherwise segfault in extract_msgdata_part() ->
octstr_copy() while doing the MT smscconn_send().
Best Regards,
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
-------------------------------------------------------------------
### Eclipse Workspace Patch 1.0
#P gateway-cvs-head
Index: gw/smsc/smsc_smpp.c
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smsc_smpp.c,v
retrieving revision 1.112
diff -u -r1.112 smsc_smpp.c
--- gw/smsc/smsc_smpp.c 29 Jan 2009 11:38:28 -0000 1.112
+++ gw/smsc/smsc_smpp.c 29 Jan 2009 16:38:58 -0000
@@ -407,7 +407,6 @@
}
-
/*
* Convert SMPP PDU to internal Msgs structure.
* Return the Msg if all was fine and NULL otherwise, while getting
@@ -417,7 +416,7 @@
static Msg *pdu_to_msg(SMPP *smpp, SMPP_PDU *pdu, long *reason)
{
Msg *msg;
- int ton, npi;
+ int ton, npi, rd;
gw_assert(pdu->type == deliver_sm);
@@ -559,6 +558,18 @@
/* set priority flag */
msg->sms.priority = pdu->u.deliver_sm.priority_flag;
+
+ /* set DLR mask */
+ rd = pdu->u.deliver_sm.registered_delivery;
+ if (rd == 4 || rd == 8 || rd == 12)
+ msg->sms.dlr_mask = (DLR_SUCCESS | DLR_FAIL);
+
+ /* If we got a v3.4 style DLR, then no message payload was set,
+ * so we need to check that the possibly re-routed msgdata has
+ * at least an empty octstr, otherwise we crash with segfault
+ * later in extract_msgdata_part() while copy_octstr(). */
+ if (msg->sms.msgdata == NULL)
+ msg->sms.msgdata = octstr_create("");
if (msg->sms.meta_data == NULL)
msg->sms.meta_data = octstr_create("");