ok, here we go again, with corresponding change:
+ /* If we want message_payload to be used as PDU field, and no
'max-sms-octets'
+ * is given, then we can switch to use a max-sms-octets size of 64K
to support
+ * the full size of the message_payload field. */
+ if (cfg_get_bool(&smpp->message_payload, grp,
octstr_imm("message-payload")) == 1 &&
+ cfg_get_integer(&conn->max_sms_octets, grp,
octstr_imm("max-sms-octets")) == -1)
+ conn->max_sms_octets = 65536;
in order to switch only to the 64K size IF no other value has been given
to be respected due to user configuration.
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
-------------------------------------------------------------------
Index: doc/userguide/userguide.xml
===================================================================
--- doc/userguide/userguide.xml (revision 5090)
+++ doc/userguide/userguide.xml (working copy)
@@ -3639,6 +3639,17 @@
Defaults to 3.
</entry></row>
+ <row><entry><literal>message-payload</literal></entry>
+ <entry><literal>boolean</literal></entry>
+ <entry valign="bottom">
+ Optional, defines if we are using the
+ <literal>submit_sm.message_payload</literal> field
+ for SMPP v3.4 or higher connections instead of the
+ <literal>submit_sm.short_message</literal> field.
+ Which also means that no segmentation of SMS messages
+ is performed up to a size of 64K.
+ </entry></row>
+
</tbody></tgroup></informaltable>
</sect2>
Index: gw/smsc/smsc_smpp.c
===================================================================
--- gw/smsc/smsc_smpp.c (revision 5090)
+++ gw/smsc/smsc_smpp.c (working copy)
@@ -173,6 +173,7 @@
long wait_ack;
int wait_ack_action;
int esm_class;
+ int message_payload;
Load *load;
SMSCConn *conn;
} SMPP;
@@ -995,6 +996,13 @@
pdu->u.submit_sm.sm_length = octstr_len(pdu->u.submit_sm.short_message);
+ /* Use .message_payload if configured to do so. */
+ if (smpp->version > 0x33 && smpp->message_payload) {
+ pdu->u.submit_sm.message_payload = pdu->u.submit_sm.short_message;
+ pdu->u.submit_sm.short_message = NULL;
+ pdu->u.submit_sm.sm_length = 0;
+ }
+
/*
* check for validity and deferred settings
* were message value has higher priority then smsc config group value
@@ -2478,6 +2486,10 @@
/* convert decimal to BCD */
version = ((version / 10) << 4) + (version % 10);
+ /* check if 'message-payload' is allowed based on SMPP version used. */
+ if (cfg_get_bool(&ok, grp, octstr_imm("message-payload")) == 1 && version
< SMPP_DEFAULT_VERSION)
+ panic(0, "SMPP: Configuration can't set 'message-payload' if interface
version is v3.3.");
+
/* check for any specified priority value in range [0-5] */
if (cfg_get_integer(&priority, grp, octstr_imm("priority")) == -1)
priority = SMPP_DEFAULT_PRIORITY;
@@ -2546,6 +2558,13 @@
smpp->ssl_client_certkey_file = cfg_get(grp,
octstr_imm("ssl-client-certkey-file"));
#endif
+ /* If we want message_payload to be used as PDU field, and no
'max-sms-octets'
+ * is given, then we can switch to use a max-sms-octets size of 64K to
support
+ * the full size of the message_payload field. */
+ if (cfg_get_bool(&smpp->message_payload, grp,
octstr_imm("message-payload")) == 1 &&
+ cfg_get_integer(&conn->max_sms_octets, grp,
octstr_imm("max-sms-octets")) == -1)
+ conn->max_sms_octets = 65536;
+
conn->data = smpp;
conn->name = octstr_format("SMPP:%S:%d/%d:%S:%S",
host, port,
Index: gwlib/cfg.def
===================================================================
--- gwlib/cfg.def (revision 5077)
+++ gwlib/cfg.def (working copy)
@@ -373,6 +373,7 @@
OCTSTR(bind-addr-npi)
OCTSTR(service-type)
OCTSTR(esm-class)
+ OCTSTR(message-payload)
OCTSTR(source-addr-autodetect)
OCTSTR(enquire-link-interval)
OCTSTR(max-pending-submits)