aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald Tessier <ronald.tessier@linux.intel.com>2012-08-24 15:06:04 +0200
committerDenis Kenzior <denkenz@gmail.com>2012-08-28 08:49:41 -0500
commit09eb84a0c5aa94829b1804b8895c867715437f6b (patch)
treeea741b66db4d6d42e85090fe2396364cd79c9653
parenta17febfbbd707dcb98ae0009dffaabab2d08675a (diff)
downloadmmsd-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.c33
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)