Hello

In my case I have to send sms with sender numer covered with alphanumeric characters e.g. 44100100100 with TEST_SENDER.
I've created a patch for this (see at the end).

Now I have problem with long messages and concatanation. When I send message over 160 chars I non readable sms. Could you help me with tracing bug? My smsc proviader send me feedback that my udh header should be aligned with 7 septets, but to be honest I do not know where alignment is taking place.

Than you a lot for your time and support.





diff -ur kannel-1.4.3/gw/smsc/smsc_oisd.c kannel-1.4.3-sisms/gw/smsc/smsc_oisd.c
--- kannel-1.4.3/gw/smsc/smsc_oisd.c    2009-01-12 17:46:50.000000000 +0100
+++ kannel-1.4.3-sisms/gw/smsc/smsc_oisd.c 2010-07-14 10:42:57.000000000 +0200
@@ -524,17 +524,21 @@
         return NULL;
     }

+    /*  patch, part 1 */
+    /*
     if (!parm_valid_address(msg->sms.sender)) {
warning(0, "OISD[%s]: non-digits in originating phone number '%s', discarded",
                 octstr_get_cstr(conn->id),
                 octstr_get_cstr(msg->sms.sender));
         return NULL;
     }
+    */

     packet = packet_create(SUBMIT_SM, BOGUS_SEQUENCE);

     gw_assert(octstr_check_range(msg->sms.receiver, 0,
octstr_len(msg->sms.receiver), isphonedigit));
+
     /* MSISDN length */
     octstr_append_char(packet->data,
                        (unsigned char) octstr_len(msg->sms.receiver));
@@ -554,20 +558,46 @@

     /* Priority 0=high, 1=normal */
     octstr_append_char(packet->data, 1);
+
+    /*  patch, part 2 */
+    /*
     gw_assert(octstr_check_range(msg->sms.sender, 0,
octstr_len(msg->sms.sender), isphonedigit));
+    */

     /* Originating address length */
     octstr_append_char(packet->data,
                        (unsigned char) (octstr_len(msg->sms.sender) + 2));

+    /*  patch, part 3 */
     /* XXX: GSM operator dependent ? */
     /* TON */
-    octstr_append_char(packet->data, 0x42);
-
+    /* octstr_append_char(packet->data, 0x42); */
     /* NPI */
-    octstr_append_char(packet->data, 0x44);
+    /* octstr_append_char(packet->data, 0x44); */

+    if (parm_valid_address(msg->sms.sender)) {
+       if (octstr_len(msg->sms.sender)<10) {
+          /* short code */
+          /* TON */
+          octstr_append_char(packet->data, 0x42);
+          /* NPI */
+          octstr_append_char(packet->data, 0x44);
+      } else {
+          /* international address */
+          /* TON */
+          octstr_append_char(packet->data, 0x39);
+          /* NPI */
+          octstr_append_char(packet->data, 0x31);
+      }
+    } else {
+       /* Invalid name -> probably alphanumeric */
+       /* TON */
+       octstr_append_char(packet->data, 0x44);
+       /* NPI */
+       octstr_append_char(packet->data, 0x30);
+    }
+
     /* Originating address */
     octstr_append(packet->data, msg->sms.sender);


Reply via email to