aboutsummaryrefslogtreecommitdiff
path: root/src/mm-sms.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-sms.c')
-rw-r--r--src/mm-sms.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/mm-sms.c b/src/mm-sms.c
index 54fa4dbd..88a9ad3d 100644
--- a/src/mm-sms.c
+++ b/src/mm-sms.c
@@ -562,9 +562,20 @@ mm_sms_multipart_take_part (MMSms *self,
mm_warn ("Couldn't assemble SMS: '%s'",
inner_error->message);
g_error_free (inner_error);
- } else
- /* Only export once properly assembled */
- mm_sms_export (self);
+ } else {
+ /* Completed AND assembled */
+ MMSmsState state = MM_SMS_STATE_UNKNOWN;
+
+ /* Change state RECEIVING->RECEIVED, and signal completeness */
+ g_object_get (self,
+ "state", &state,
+ NULL);
+ if (state == MM_SMS_STATE_RECEIVING) {
+ g_object_set (self,
+ "state", MM_SMS_STATE_RECEIVED,
+ NULL);
+ }
+ }
}
return TRUE;
@@ -613,6 +624,11 @@ mm_sms_multipart_new (MMBaseModem *modem,
{
MMSms *self;
+ /* If this is the first part of a RECEIVED SMS, we overwrite the state
+ * as RECEIVING, to indicate that it is not completed yet. */
+ if (state == MM_SMS_STATE_RECEIVED)
+ state = MM_SMS_STATE_RECEIVING;
+
self = mm_sms_new (modem);
g_object_set (self,
MM_SMS_IS_MULTIPART, TRUE,