diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-12 15:39:19 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-14 07:05:26 +0200 |
commit | 1304a628f8b7e3ebc1b41101533c2eb5ff2f25ec (patch) | |
tree | c147b9384be0e6be45d540daf331c18c523108aa /src/mm-sms-part.c | |
parent | 8e6a6035780da3ccc18e5eb9c30eb40ab4ea9885 (diff) |
sms-part: include user data, if passed, when building the PDU
Diffstat (limited to 'src/mm-sms-part.c')
-rw-r--r-- | src/mm-sms-part.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/mm-sms-part.c b/src/mm-sms-part.c index 4d4f3a38..c779f235 100644 --- a/src/mm-sms-part.c +++ b/src/mm-sms-part.c @@ -939,7 +939,7 @@ mm_sms_part_get_submit_pdu (MMSmsPart *part, guint8 *udl_ptr; g_return_val_if_fail (part->number != NULL, NULL); - g_return_val_if_fail (part->text != NULL, NULL); + g_return_val_if_fail (part->text != NULL || part->data != NULL, NULL); mm_dbg ("Creating PDU for part..."); @@ -1124,6 +1124,17 @@ mm_sms_part_get_submit_pdu (MMSmsPart *part, memcpy (&pdu[offset], array->data, array->len); offset += array->len; g_byte_array_free (array, TRUE); + } else if (part->encoding == MM_SMS_ENCODING_8BIT) { + /* Set real data length, in octets + * If we had UDH, add 6 octets + */ + *udl_ptr = part->concat_sequence ? (6 + part->data->len) : part->data->len; + mm_dbg (" binary user data length is '%u' octets (%s UDH)", + *udl_ptr, + part->concat_sequence ? "with" : "without"); + + memcpy (&pdu[offset], part->data->data, part->data->len); + offset += part->data->len; } else g_assert_not_reached (); |