This is the same way of processing an incoming message (UCP 52)

Here is a review of the patch
(- whites spaces changes to follow coding rules)
(- added E50_MT checks as it's an Optional field on EMI specs 4.6)


diff -rau /gateway-cvs/gw/smsc/smsc_emi.c /gateway/gw/smsc/smsc_emi.c
--- /gateway-cvs/gw/smsc/smsc_emi.c     2006-04-07 14:54:06.000000000 +0200
+++ /gateway/gw/smsc/smsc_emi.c 2006-09-05 13:51:21.000000000 +0200
@@ -751,9 +757,9 @@
           msg->sms.msgdata = emimsg->fields[E50_AMSG];
           emimsg->fields[E50_AMSG] = NULL; /* So it's not freed */

-        /* obey the NRC (national replacement codes) */
-        if (privdata->alt_charset == EMI_NRC_ISO_21)
-            charset_nrc_iso_21_german_to_gsm(msg->sms.msgdata);
+            /* obey the NRC (national replacement codes) */
+            if (privdata->alt_charset == EMI_NRC_ISO_21)
+                charset_nrc_iso_21_german_to_gsm(msg->sms.msgdata);

           charset_gsm_to_latin1(msg->sms.msgdata);
       }
@@ -866,6 +872,14 @@
           else
msg->sms.msgdata = octstr_duplicate(emimsg->fields[E50_AMSG]);
           octstr_hex_to_binary(msg->sms.msgdata);
+
+            if (octstr_get_char(emimsg->fields[E50_MT], 0) == '3') {
+                /* obey the NRC (national replacement codes) */
+                if (privdata->alt_charset == EMI_NRC_ISO_21)
+                    charset_nrc_iso_21_german_to_gsm(msg->sms.msgdata);
+
+                charset_gsm_to_latin1(msg->sms.msgdata);
+            }
           bb_smscconn_receive(conn, msg);
       }
       reply = emimsg_create_reply(53, emimsg->trn, 1, privdata->name);




--
Telemaque - 06200 NICE - (FR)
Service Technique/Reseau - NOC
Developpement SMS/MMS/Kiosques
http://www.telemaque.fr/
[EMAIL PROTECTED]
Tel : +33 4 93 97 71 64 (fax 68)
----- Original Message ----- From: "Andreas Fink" <[EMAIL PROTECTED]>
To: "Vincent CHAVANIS" <[EMAIL PROTECTED]>
Cc: <devel@kannel.org>
Sent: Tuesday, September 05, 2006 12:16 PM
Subject: Re: [PATCH] DLR in EMI/UCP are not decoded to latin1


I agree on the added line

            charset_gsm_to_latin1(msg->sms.msgdata);

as this is most probably the right way to do (but has no effect on
english default DLR messages 90% of the EMI/UCP SMSC's seem to return)

            /* obey the NRC (national replacement codes) */
            if (privdata->alt_charset == EMI_NRC_ISO_21)
                charset_nrc_iso_21_german_to_gsm(msg->sms.msgdata);

especially, why is it german only as you probably more look towards
the french side...


On 05.09.2006, at 11:46, Vincent CHAVANIS wrote:

No objections here ?

regards

Vincent

--
Telemaque - 06200 NICE - (FR)
Service Technique/Reseau - NOC
Developpement SMS/MMS/Kiosques
http://www.telemaque.fr/
[EMAIL PROTECTED]
Tel : +33 4 93 97 71 64 (fax 68)
----- Original Message ----- From: "Vincent CHAVANIS" <[EMAIL PROTECTED]>
To: <devel@kannel.org>
Sent: Friday, August 18, 2006 12:47 PM
Subject: [PATCH] DLR in EMI/UCP are not decoded to latin1



DLR msgdata in EMI/UCP smsc are not decoded.
When a char with an accent arrives to a DLR like "MSISDN porté"
It will not decode the msg and will result in a non-printable char.
IA5 charset can handle these chars as when we are receiving an MO.
We simply obey the NRC (if needed), then convert it to latin1.

regards

Vincent.

--
Telemaque - 06200 NICE - (FR)
Service Technique/Reseau - NOC
Developpement SMS/MMS/Kiosques
http://www.telemaque.fr/
[EMAIL PROTECTED]
Tel : +33 4 93 97 71 64 (fax 68)




diff -rau /gateway-cvs/gw/smsc/smsc_emi.c /gateway/gw/smsc/smsc_emi.c
--- /gateway-cvs/gw/smsc/smsc_emi.c     2006-04-07 14:54:06.000000000 +0200
+++ /gateway/gw/smsc/smsc_emi.c 2006-09-05 13:51:21.000000000 +0200
@@ -751,9 +757,9 @@
           msg->sms.msgdata = emimsg->fields[E50_AMSG];
           emimsg->fields[E50_AMSG] = NULL; /* So it's not freed */

-        /* obey the NRC (national replacement codes) */
-        if (privdata->alt_charset == EMI_NRC_ISO_21)
-            charset_nrc_iso_21_german_to_gsm(msg->sms.msgdata);
+            /* obey the NRC (national replacement codes) */
+            if (privdata->alt_charset == EMI_NRC_ISO_21)
+                charset_nrc_iso_21_german_to_gsm(msg->sms.msgdata);

           charset_gsm_to_latin1(msg->sms.msgdata);
       }
@@ -866,6 +872,14 @@
           else
               msg->sms.msgdata = octstr_duplicate(emimsg->fields[E50_AMSG]);
           octstr_hex_to_binary(msg->sms.msgdata);
+
+            if (octstr_get_char(emimsg->fields[E50_MT], 0) == '3') {
+                /* obey the NRC (national replacement codes) */
+                if (privdata->alt_charset == EMI_NRC_ISO_21)
+                    charset_nrc_iso_21_german_to_gsm(msg->sms.msgdata);
+ + charset_gsm_to_latin1(msg->sms.msgdata);
+            }
           bb_smscconn_receive(conn, msg);
       }
       reply = emimsg_create_reply(53, emimsg->trn, 1, privdata->name);

Reply via email to