SMS 8-Bit and 16-Bit ports are not the same
authorDenis Kenzior <denkenz@gmail.com>
Tue, 16 Jun 2009 15:48:27 +0000 (10:48 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Tue, 16 Jun 2009 21:38:47 +0000 (16:38 -0500)
src/smsutil.c
src/smsutil.h

index d45fbc4..7c87b0c 100644 (file)
@@ -1703,7 +1703,8 @@ const char *sms_address_to_string(const struct sms_address *addr)
        return buffer;
 }
 
-gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src)
+gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src,
+                               gboolean *is_8bit)
 {
        struct sms_udh_iter iter;
        enum sms_iei iei;
@@ -1711,6 +1712,7 @@ gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src)
 
        int srcport = -1;
        int dstport = -1;
+       gboolean is_addr_8bit;
 
        if (!sms_udh_iter_init(sms, &iter))
                return FALSE;
@@ -1739,6 +1741,7 @@ gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src)
 
                        dstport = addr_hdr[0];
                        srcport = addr_hdr[1];
+                       is_addr_8bit = TRUE;
                        break;
 
                case SMS_IEI_APPLICATION_ADDRESS_16BIT:
@@ -1755,6 +1758,7 @@ gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src)
 
                        dstport = (addr_hdr[0] << 8) | addr_hdr[1];
                        srcport = (addr_hdr[2] << 8) | addr_hdr[3];
+                       is_addr_8bit = FALSE;
                        break;
 
                default:
@@ -1773,6 +1777,9 @@ gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src)
        if (src)
                *src = srcport;
 
+       if (is_8bit)
+               *is_8bit = is_addr_8bit;
+
        return TRUE;
 }
 
index 64d7800..7036335 100644 (file)
@@ -367,7 +367,8 @@ gboolean sms_mwi_dcs_decode(guint8 dcs, enum sms_mwi_type *type,
                                enum sms_charset *charset,
                                gboolean *active, gboolean *discard);
 
-gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src);
+gboolean sms_extract_app_port(const struct sms *sms, int *dst, int *src,
+                               gboolean *is_8bit);
 gboolean sms_extract_concatenation(const struct sms *sms, guint16 *ref_num,
                                        guint8 *max_msgs, guint8 *seq_num);