aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald Tessier <ronald.tessier@linux.intel.com>2012-08-24 15:06:05 +0200
committerDenis Kenzior <denkenz@gmail.com>2012-08-28 08:49:47 -0500
commitfe0a84f5702759cdfdafe61784a38e3abdae9cef (patch)
tree76aa6bc39829b6a27bdeed38b07dabb48cb722ae
parent09eb84a0c5aa94829b1804b8895c867715437f6b (diff)
downloadmmsd-fe0a84f5702759cdfdafe61784a38e3abdae9cef.tar.gz
service: Support M-Delivery.ind in mms_service_push_notify()
-rw-r--r--src/service.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c
index ec1b1b9..8087477 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2325,6 +2325,21 @@ static void process_request_queue(struct mms_service *service)
bearer_idle_timeout, service);
}
+static void dump_delivery_ind(struct mms_message *msg)
+{
+ char buf[128];
+
+ strftime(buf, 127, "%Y-%m-%dT%H:%M:%S%z", localtime(&msg->di.date));
+ buf[127] = '\0';
+
+ mms_info("MMS version: %u.%u\n", (msg->version & 0x70) >> 4,
+ msg->version & 0x0f);
+ mms_info("Msg ID: %s\n", msg->di.msgid);
+ mms_info("To: %s\n", msg->di.to);
+ mms_info("Date: %s\n", buf);
+ mms_info("Delivery Report status: %d\n", msg->di.dr_status);
+}
+
static void dump_notification_ind(struct mms_message *msg)
{
char buf[128];
@@ -2370,6 +2385,22 @@ void mms_service_push_notify(struct mms_service *service,
if (mms_message_decode(data + nread, len - nread, msg) == FALSE)
goto error;
+ if (msg->type == MMS_MESSAGE_TYPE_DELIVERY_IND) {
+ msg->uuid = g_strdup(uuid);
+
+ dump_delivery_ind(msg);
+
+ meta = mms_store_meta_open(service->identity, uuid);
+ if (meta == NULL)
+ goto error;
+
+ g_key_file_set_string(meta, "info", "state", "notification");
+
+ mms_store_meta_close(service->identity, uuid, meta, TRUE);
+
+ return;
+ }
+
if (msg->type != MMS_MESSAGE_TYPE_NOTIFICATION_IND)
goto error;