summaryrefslogtreecommitdiffstats
path: root/src/smsutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/smsutil.c')
-rw-r--r--src/smsutil.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/smsutil.c b/src/smsutil.c
index d45fbc40..7c87b0cc 100644
--- a/src/smsutil.c
+++ b/src/smsutil.c
@@ -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;
}