--- src/service.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) 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; -- 1.7.9.5