[patch] OISD alphanumeric sender

Marcin <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.