Hi,

attached patch adds new config option for smpp driver that allow not removing 
of leading plus in source/destination addr because some operators need them. 

Comments please...

-- 
Best Regards / Mit besten Gr��en aus K�ln

Dipl.-Ing.
Alexander Malysh
___________________________________

Centrium GmbH
Ehrenstrasse 2
50672 K�ln

Fon: +49 (0221) 277 49 240
Fax: +49 (0221) 277 49 109

email: [EMAIL PROTECTED]
web: http://www.centrium.de
msn: [EMAIL PROTECTED]
? doc/alligata/alligata.tex
? test/test_dbpool
Index: gw/smsc/smsc_smpp.c
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smsc_smpp.c,v
retrieving revision 1.31
diff -a -u -r1.31 smsc_smpp.c
--- gw/smsc/smsc_smpp.c	19 Mar 2003 17:43:11 -0000	1.31
+++ gw/smsc/smsc_smpp.c	25 Mar 2003 17:28:03 -0000
@@ -106,6 +106,7 @@
     int smpp_msg_id_type;  /* msg id in C string, hex or decimal */
     int autodetect_addr;
     Octstr *alt_charset;
+    int remove_leading_plus;
     SMSCConn *conn; 
 } SMPP; 
  
@@ -120,7 +121,7 @@
                          int max_pending_submits, int version, int priority,
                          Octstr *my_number, int smpp_msg_id_type, 
                          int autodetect_addr, Octstr *alt_charset, 
-                         Octstr *service_type) 
+                         Octstr *service_type, int remove_leading_plus) 
 { 
     SMPP *smpp; 
      
@@ -157,6 +158,7 @@
     smpp->smpp_msg_id_type = smpp_msg_id_type;    
     smpp->autodetect_addr = autodetect_addr;
     smpp->alt_charset = octstr_duplicate(alt_charset);
+    smpp->remove_leading_plus = remove_leading_plus;
  
     return smpp; 
 } 
@@ -366,7 +368,8 @@
                 pdu->u.submit_sm.source_addr_npi = GSM_ADDR_NPI_UNKNOWN;    /* short code */ 
             } else { 
                /* numeric sender address with + in front -> international (remove the +) */ 
-               octstr_delete(pdu->u.submit_sm.source_addr, 0, 1); 
+               if (smpp->remove_leading_plus)
+                   octstr_delete(pdu->u.submit_sm.source_addr, 0, 1); 
                pdu->u.submit_sm.source_addr_ton = GSM_ADDR_TON_INTERNATIONAL; 
     	    } 
         } else { 
@@ -394,7 +397,8 @@
      * '+' and set number type to international instead  
      */ 
     if (octstr_get_char(pdu->u.submit_sm.destination_addr,0) == '+') { 
-        octstr_delete(pdu->u.submit_sm.destination_addr, 0,1); 
+        if (smpp->remove_leading_plus)
+            octstr_delete(pdu->u.submit_sm.destination_addr, 0,1); 
         pdu->u.submit_sm.dest_addr_ton = GSM_ADDR_TON_INTERNATIONAL; 
     } 
  
@@ -1295,6 +1299,7 @@
     long smpp_msg_id_type;
     int autodetect_addr;
     Octstr *alt_charset;
+    int remove_leading_plus;
  
     my_number = alt_charset = NULL; 
     transceiver_mode = 0;
@@ -1405,13 +1410,17 @@
     /* check for an alternative charset */
     alt_charset = cfg_get(grp, octstr_imm("alt-charset"));
 
+    /* for not removing of leading '+' in dst/src set this to 0 */
+    if (cfg_get_bool(&remove_leading_plus, grp, octstr_imm("remove-leading-plus")) == -1)
+        remove_leading_plus = 1;
+
     smpp = smpp_create(conn, host, port, receive_port, system_type,  
     	    	       username, password, address_range,
                        source_addr_ton, source_addr_npi, dest_addr_ton,  
                        dest_addr_npi, alt_dcs, enquire_link_interval, 
                        max_pending_submits, version, priority, my_number, 
                        smpp_msg_id_type, autodetect_addr, alt_charset, 
-                       service_type); 
+                       service_type, remove_leading_plus); 
  
     conn->data = smpp; 
     conn->name = octstr_format("SMPP:%S:%d/%d:%S:%S",  
Index: gwlib/cfg.def
===================================================================
RCS file: /home/cvs/gateway/gwlib/cfg.def,v
retrieving revision 1.84
diff -a -u -r1.84 cfg.def
--- gwlib/cfg.def	19 Mar 2003 17:40:11 -0000	1.84
+++ gwlib/cfg.def	25 Mar 2003 17:28:03 -0000
@@ -244,6 +244,7 @@
     OCTSTR(notification-pid)
     OCTSTR(notification-addr)
     OCTSTR(msg-id-type)
+    OCTSTR(remove-leading-plus)
 )
 
 

Attachment: smime.p7s
Description: signature

Reply via email to