--- smsc_smpp.c	2009-01-12 17:46:50.000000000 +0100
+++ smsc_smpp_new.c	2009-03-02 08:37:40.000000000 +0100
@@ -794,6 +794,19 @@
                 }
             }
         }
+        /* lets make it Santa's way */
+        if (octstr_check_range(pdu->u.submit_sm.source_addr, 1, 256, gw_isdigit)){
+            if (octstr_len(pdu->u.submit_sm.source_addr) <7){
+                warning(0, "SMPP[%s]: Santa's way shortcode detected %s.",
+                                   octstr_get_cstr(smpp->conn->id),octstr_get_cstr(pdu->u.submit_sm.source_addr));
+                pdu->u.submit_sm.source_addr_ton = GSM_ADDR_TON_NATIONAL;   /* national */
+                pdu->u.submit_sm.source_addr_npi = GSM_ADDR_NPI_UNKNOWN;    /* short code */
+            }else{
+                pdu->u.submit_sm.source_addr_ton = smpp->source_addr_ton;
+                pdu->u.submit_sm.source_addr_npi = smpp->source_addr_npi;
+            }
+       }
+                                                                                                                                    
     }
 
     /* Check for manual override of destination ton and npi values */
