diff options
author | Ronald Tessier <ronald.tessier@linux.intel.com> | 2012-08-24 15:06:04 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2012-08-28 08:49:41 -0500 |
commit | 09eb84a0c5aa94829b1804b8895c867715437f6b (patch) | |
tree | ea741b66db4d6d42e85090fe2396364cd79c9653 | |
parent | a17febfbbd707dcb98ae0009dffaabab2d08675a (diff) | |
download | mmsd-09eb84a0c5aa94829b1804b8895c867715437f6b.tar.gz |
service: Add a group [delivery_status] in the msg status
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.
-rw-r--r-- | src/service.c | 33 |
1 files changed, 33 insertions, 0 deletions
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) |