aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml3
-rw-r--r--src/mm-sms.c14
2 files changed, 12 insertions, 5 deletions
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml b/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml
index aef5063c..d16dc9cd 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Messaging.xml
@@ -55,7 +55,8 @@
The '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Number">Number</link>'
and
- '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Text">Text</link>'
+ either '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Text">Text</link>' or
+ '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Sms.Data">Data</link>'
properties are mandatory, others are optional.
If the SMSC is not specified and one is required, the default SMSC is
diff --git a/src/mm-sms.c b/src/mm-sms.c
index f3f89871..d32b4aa4 100644
--- a/src/mm-sms.c
+++ b/src/mm-sms.c
@@ -982,14 +982,17 @@ assemble_sms (MMSms *self,
return FALSE;
}
+ /* When the user creates the SMS, it will have either 'text' or 'data',
+ * not both */
+
parttext = mm_sms_part_get_text (sorted_parts[idx]);
partdata = mm_sms_part_get_data (sorted_parts[idx]);
- if (!parttext || !partdata) {
+ if (!parttext && !partdata) {
g_set_error (error,
MM_CORE_ERROR,
MM_CORE_ERROR_FAILED,
- "Cannot assemble SMS, part at index (%u) has no text or data",
+ "Cannot assemble SMS, part at index (%u) has neither text nor data",
idx);
g_string_free (fulltext, TRUE);
g_byte_array_free (fulldata, TRUE);
@@ -997,8 +1000,10 @@ assemble_sms (MMSms *self,
return FALSE;
}
- g_string_append (fulltext, parttext);
- g_byte_array_append (fulldata, partdata->data, partdata->len);
+ if (parttext)
+ g_string_append (fulltext, parttext);
+ if (partdata)
+ g_byte_array_append (fulldata, partdata->data, partdata->len);
}
/* If we got all parts, we also have the first one always */
@@ -1207,6 +1212,7 @@ mm_sms_new_from_properties (MMBaseModem *modem,
part = mm_sms_part_new (SMS_PART_INVALID_INDEX);
mm_sms_part_set_text (part, mm_sms_properties_get_text (properties));
+ mm_sms_part_take_data (part, mm_sms_properties_get_data_bytearray (properties));
mm_sms_part_set_number (part, mm_sms_properties_get_number (properties));
mm_sms_part_set_smsc (part, mm_sms_properties_get_smsc (properties));
mm_sms_part_set_validity (part, mm_sms_properties_get_validity (properties));