Index: gw/smsc/smsc_smpp.c
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smsc_smpp.c,v
retrieving revision 1.123
diff -a -u -r1.123 smsc_smpp.c
--- gw/smsc/smsc_smpp.c	2 Sep 2009 13:10:50 -0000	1.123
+++ gw/smsc/smsc_smpp.c	2 Nov 2009 11:28:33 -0000
@@ -764,17 +764,19 @@
         octstr_duplicate(msg->sms.binfo) : octstr_duplicate(smpp->service_type);
 
     /* Check for manual override of source ton and npi values */
-    if(smpp->source_addr_ton > -1 && smpp->source_addr_npi > -1) {
+    if (smpp->source_addr_ton > -1) {
         pdu->u.submit_sm.source_addr_ton = smpp->source_addr_ton;
-        pdu->u.submit_sm.source_addr_npi = smpp->source_addr_npi;
-        debug("bb.sms.smpp", 0, "SMPP[%s]: Manually forced source addr ton = %d, source add npi = %d",
-              octstr_get_cstr(smpp->conn->id), smpp->source_addr_ton,
-              smpp->source_addr_npi);
-    } else {
-        /* setup default values */
+        debug("bb.sms.smpp", 0, "SMPP[%s]: Manually forced source-addr-ton = %d", octstr_get_cstr(smpp->conn->id), smpp->source_addr_ton);
+    }
+    else
         pdu->u.submit_sm.source_addr_ton = GSM_ADDR_TON_NATIONAL; /* national */
-        pdu->u.submit_sm.source_addr_npi = GSM_ADDR_NPI_E164; /* ISDN number plan */
+
+    if (smpp->source_addr_npi > -1) {
+        pdu->u.submit_sm.source_addr_npi = smpp->source_addr_npi;
+        debug("bb.sms.smpp", 0, "SMPP[%s]: Manually forced source-addr-npi = %d", octstr_get_cstr(smpp->conn->id), smpp->source_addr_npi);
     }
+    else
+        pdu->u.submit_sm.source_addr_npi = GSM_ADDR_NPI_E164; /* ISDN number plan */
 
     if (pdu->u.submit_sm.source_addr && smpp->autodetect_addr) {
         /* lets see if its international or alphanumeric sender */
@@ -813,17 +815,20 @@
         }
     }
 
-    /* Check for manual override of destination ton and npi values */
-    if (smpp->dest_addr_ton > -1 && smpp->dest_addr_npi > -1) {
+/* Check for manual override of destination ton and npi values */
+     if (smpp->dest_addr_ton > -1) {
         pdu->u.submit_sm.dest_addr_ton = smpp->dest_addr_ton;
-        pdu->u.submit_sm.dest_addr_npi = smpp->dest_addr_npi;
-        debug("bb.sms.smpp", 0, "SMPP[%s]: Manually forced dest addr ton = %d, dest add npi = %d",
-              octstr_get_cstr(smpp->conn->id), smpp->dest_addr_ton,
-              smpp->dest_addr_npi);
-    } else {
+        debug("bb.sms.smpp", 0, "SMPP[%s]: Manually forced dest-addr-ton = %d", octstr_get_cstr(smpp->conn->id), smpp->dest_addr_ton);
+     }
+     else
         pdu->u.submit_sm.dest_addr_ton = GSM_ADDR_TON_NATIONAL; /* national */
-        pdu->u.submit_sm.dest_addr_npi = GSM_ADDR_NPI_E164; /* ISDN number plan */
-    }
+     if (smpp->dest_addr_npi > -1) {
+        pdu->u.submit_sm.dest_addr_npi = smpp->dest_addr_npi;
+        debug("bb.sms.smpp", 0, "SMPP[%s]: Manually forced dest-addr-npi = %d", octstr_get_cstr(smpp->conn->id), smpp->dest_addr_npi);
+      }
+      else
+         pdu->u.submit_sm.dest_addr_npi = GSM_ADDR_NPI_E164; /* ISDN number plan */
+
 
     /*
      * if its a international number starting with +, lets remove the
