sms-part: read message class only if TP-DCS available

This commit is contained in:
Aleksander Morgado
2012-09-12 11:19:21 +02:00
parent 815decb034
commit 64f728b375

View File

@@ -727,9 +727,11 @@ mm_sms_part_new_from_binary_pdu (guint index,
mm_dbg (" PID: %u", (guint)pdu[tp_pid_offset]); mm_dbg (" PID: %u", (guint)pdu[tp_pid_offset]);
} }
/* Grab user data encoding */ /* Grab user data encoding and message class */
if (tp_dcs_offset > 0) { if (tp_dcs_offset > 0) {
PDU_SIZE_CHECK (tp_dcs_offset + 1, "cannot read TP-DCS"); PDU_SIZE_CHECK (tp_dcs_offset + 1, "cannot read TP-DCS");
/* Encoding given in the 'alphabet' bits */
user_data_encoding = sms_encoding_type(pdu[tp_dcs_offset]); user_data_encoding = sms_encoding_type(pdu[tp_dcs_offset]);
switch (user_data_encoding) { switch (user_data_encoding) {
case MM_SMS_ENCODING_GSM7: case MM_SMS_ENCODING_GSM7:
@@ -746,6 +748,11 @@ mm_sms_part_new_from_binary_pdu (guint index,
break; break;
} }
mm_sms_part_set_encoding (sms_part, user_data_encoding); mm_sms_part_set_encoding (sms_part, user_data_encoding);
/* Class */
if (pdu[tp_dcs_offset] & SMS_DCS_CLASS_VALID)
mm_sms_part_set_class (sms_part,
pdu[tp_dcs_offset] & SMS_DCS_CLASS_MASK);
} }
if (tp_user_data_len_offset > 0) { if (tp_user_data_len_offset > 0) {
@@ -856,9 +863,6 @@ mm_sms_part_new_from_binary_pdu (guint index,
mm_sms_part_set_data_coding_scheme (sms_part, mm_sms_part_set_data_coding_scheme (sms_part,
pdu[tp_dcs_offset] & 0xFF); pdu[tp_dcs_offset] & 0xFF);
if (pdu[tp_dcs_offset] & SMS_DCS_CLASS_VALID)
mm_sms_part_set_class (sms_part,
pdu[tp_dcs_offset] & SMS_DCS_CLASS_MASK);
} }
return sms_part; return sms_part;