aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-09-12 15:39:19 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-09-14 07:05:26 +0200
commit1304a628f8b7e3ebc1b41101533c2eb5ff2f25ec (patch)
treec147b9384be0e6be45d540daf331c18c523108aa /src
parent8e6a6035780da3ccc18e5eb9c30eb40ab4ea9885 (diff)
sms-part: include user data, if passed, when building the PDU
Diffstat (limited to 'src')
-rw-r--r--src/mm-sms-part.c13
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 ();