Hi,

I believe we should get user possibility to send longer messages if he
wants. Attached simple patch allows it.

Anybody write userguide for it?

Stipe Tolj wrote:

> Andreas Fink schrieb:
>> The known GSM SMSC's dont accept longer SMS because the GSM
>> infrastructure does not allow longer SMS than the 140 octets.
>> some CDMA SMSC's might accept longer SMS and some GSM SMSc's might split
>> it on their side but so far I have not seen any really supporting it or
>> at least not with asking a fortune to the operator for a useless feature.
>> 
>> I don't see a real need for this.
> 
> I do. From an achitecure point of view we (kannel) is beyond the signaling
> layer. So taking it strictly, we COULD use protocols towards SMSC that
> allow long messages to be passed in one PDU, as SMPP per spec does. Or
> consider HTTP as a simple example.
> 
> I understand that most vendors leaverage the underlying signaling limits
> (140 octets per GSM SMS message) to the SMSC clients, but this is actually
> not conceptualls correct.
> 
> What I want is to give the user an "option" to define the max octets we
> are allowed to pass to the SMSC. Which SHOULD BE allowed, hence we're
> still above the signaling layer.
> 
> Think of Kannel instance concatenation as another example:
> 
> client <-> smsbox(2) <-> bearerbox(2)[smsc_http] <-> smsbox(1) <->
> bearerbox(1)[smsc_smpp] <-> SMSC
> 
> so if a client injects a large msg at the left hand side, this would
> result in a sms_split() segmentation within bearerbox(2), even while we
> know that smsbox(1) could handle the "whole message".
> 
> 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
> -------------------------------------------------------------------

-- 
Thanks,
Alex
diff --git a/gw/smscconn.c b/gw/smscconn.c
index 21e824d..6654665 100644
--- a/gw/smscconn.c
+++ b/gw/smscconn.c
@@ -229,6 +229,9 @@ SMSCConn *smscconn_create(CfgGroup *grp, int start_as_stopped)
     if (cfg_get_integer(&conn->log_level, grp, octstr_imm("log-level")) == -1)
         conn->log_level = 0;
 
+    if (cfg_get_integer(&conn->max_sms_octets, grp, octstr_imm("max-sms-octets")) == -1)
+        conn->max_sms_octets = MAX_SMS_OCTETS;
+
     /* open a smsc-id specific log-file in exlusive mode */
     if (conn->log_file)
         conn->log_idx = log_open(octstr_get_cstr(conn->log_file), 
@@ -512,7 +515,7 @@ int smscconn_send(SMSCConn *conn, Msg *msg)
 
         /* split msg */
         parts = sms_split(msg, NULL, NULL, NULL, NULL, 1, 
-            counter_increase(split_msg_counter) & 0xff, 0xff, MAX_SMS_OCTETS);
+            counter_increase(split_msg_counter) & 0xff, 0xff, conn->max_sms_octets);
         if (gwlist_len(parts) == 1) {
             /* don't create split_parts of sms fit into one */
             gwlist_destroy(parts, msg_destroy_item);
diff --git a/gw/smscconn_p.h b/gw/smscconn_p.h
index 866f2f7..89bdcf1 100644
--- a/gw/smscconn_p.h
+++ b/gw/smscconn_p.h
@@ -202,6 +202,7 @@ struct smscconn {
     Octstr *reroute_to_smsc;    /* define a smsc-id to reroute to */
     int reroute_dlr;            /* should DLR's are rereouted too? */
 
+    long max_sms_octets; /* max allowed octets for this SMSC */
 
     /* XXX: move rest global data from Smsc here
      */
diff --git a/gwlib/cfg.def b/gwlib/cfg.def
index 5a29f61..b0dcd9f 100644
--- a/gwlib/cfg.def
+++ b/gwlib/cfg.def
@@ -381,6 +381,7 @@ MULTI_GROUP(smsc,
     OCTSTR(status-success-regex)
     OCTSTR(status-permfail-regex)
     OCTSTR(status-tempfail-regex)
+    OCTSTR(max-sms-octets)
 )
 
 

Reply via email to