SMS 8-Bit and 16-Bit ports are not the same

This commit is contained in:
Denis Kenzior 2009-06-16 10:48:27 -05:00
parent 6ea7dba3b6
commit 79e39e4016
2 changed files with 10 additions and 2 deletions

View 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;
}

View 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);