This group contains an entry for each message recipients. Each recipient
entry will be updated when the corresponding report will be received
and then remove the temporary stored delivery report.
---
 src/service.c |   33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/src/service.c b/src/service.c
index c3dc40a..ec1b1b9 100644
--- a/src/service.c
+++ b/src/service.c
@@ -69,6 +69,17 @@ static const char *ctl_chars = 
"\x01\x02\x03\x04\x05\x06\x07\x08\x0A"
 
 static const char *sep_chars = "()<>@,;:\\\"/[]?={} \t";
 
+static const char *delivery_status[] = {
+       "none",
+       "expired",
+       "retrieved",
+       "rejected",
+       "deferred",
+       "indeterminate",
+       "forwarded",
+       "unreachable"
+};
+
 struct mms_request;
 
 typedef gboolean (*mms_request_result_cb_t) (struct mms_request *request);
@@ -1058,6 +1069,28 @@ static DBusMessage *send_message(DBusConnection *conn,
 
        g_key_file_set_string(meta, "info", "state", "draft");
 
+       if (service->use_delivery_reports) {
+               char **tos;
+               int i;
+
+               tos = g_strsplit(msg->sr.to, ",", 0);
+
+               for (i = 0; tos[i] != NULL; i++) {
+                       char *to = g_strdup(tos[i]);
+
+                       mms_address_to_string(to);
+
+                       DBG("%s=%s", to, delivery_status[0]);
+
+                       g_key_file_set_string(meta, "delivery_status", to,
+                                                       delivery_status[0]);
+
+                       g_free(to);
+               }
+
+               g_strfreev(tos);
+       }
+
        mms_store_meta_close(service->identity, msg->uuid, meta, TRUE);
 
        if (mms_message_register(service, msg) < 0)
-- 
1.7.9.5

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to