All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] mmsd: (resending) Support Delivery Report notification
@ 2012-08-24 13:05 Ronald Tessier
  2012-08-24 13:06 ` [PATCH 01/12] mmsutil: Define mms_delivery_ind struct Ronald Tessier
                   ` (11 more replies)
  0 siblings, 12 replies; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:05 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1562 bytes --]

These patches concern mmsd and add delivery report notification support.
Add MMS M-Delivery.ind PDU decoding support.
Update meta file of the sent message to store the received msg_id and to add a
group [delivery_status] if delivery_report is requested.
Upon MMS M-Delivery.ind PDU reception, update delivery_status recipient entry
with the received status (this is described in doc/storage.txt) and signal the
new delivery_report status for the recipient concerned.
Modify the monitor_mms test script to add report_changed monitoring.
Update message-api.txt doc to describe new ReportChanged signal.

Ronald Tessier (12):
  mmsutil: Define mms_delivery_ind struct
  mmsutil: Decode delivery_ind msg
  service: Store msg_id provided by M-Send.conf PDU
  service: Move mms_address_to_string() up
  service: Add a group [delivery_status] in the msg status
  service: Support M-Delivery.ind in mms_service_push_notify()
  service: Support delivery_ind notif on start
  store: Define MMS_META_UUID_XXX len and suffix
  service: Process delivery_ind notification
  service: Send a delivery changed signal
  test: Add ReportChanged to monitored signals
  doc: Add ReportChanged signal description

 doc/message-api.txt |    7 ++
 src/mmsutil.c       |   22 ++++-
 src/mmsutil.h       |    8 ++
 src/service.c       |  260 ++++++++++++++++++++++++++++++++++++++++++++++-----
 src/store.c         |    8 +-
 src/store.h         |    5 +
 test/monitor-mms    |   10 ++
 7 files changed, 292 insertions(+), 28 deletions(-)

--
1.7.9.5


^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH 01/12] mmsutil: Define mms_delivery_ind struct
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 13:41   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 02/12] mmsutil: Decode delivery_ind msg Ronald Tessier
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 703 bytes --]

---
 src/mmsutil.h |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/mmsutil.h b/src/mmsutil.h
index cc3ec67..e32c761 100644
--- a/src/mmsutil.h
+++ b/src/mmsutil.h
@@ -122,6 +122,13 @@ struct mms_notification_resp_ind {
 	enum mms_message_notify_status notify_status;
 };
 
+struct mms_delivery_ind {
+	enum mms_message_delivery_status dr_status;
+	char *msgid;
+	char *to;
+	time_t date;
+};
+
 struct mms_attachment {
 	unsigned char *data;
 	size_t offset;
@@ -143,6 +150,7 @@ struct mms_message {
 		struct mms_send_req sr;
 		struct mms_send_conf sc;
 		struct mms_notification_resp_ind nri;
+		struct mms_delivery_ind di;
 	};
 };
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 02/12] mmsutil: Decode delivery_ind msg
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
  2012-08-24 13:06 ` [PATCH 01/12] mmsutil: Define mms_delivery_ind struct Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 13:41   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 03/12] service: Store msg_id provided by M-Send.conf PDU Ronald Tessier
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1501 bytes --]

---
 src/mmsutil.c |   22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/mmsutil.c b/src/mmsutil.c
index a9a12eb..7042276 100644
--- a/src/mmsutil.c
+++ b/src/mmsutil.c
@@ -964,6 +964,24 @@ static gboolean decode_send_req(struct wsp_header_iter *iter,
 	return TRUE;
 }
 
+static gboolean decode_delivery_ind(struct wsp_header_iter *iter,
+						struct mms_message *out)
+{
+	return mms_parse_headers(iter, MMS_HEADER_MMS_VERSION,
+				HEADER_FLAG_MANDATORY | HEADER_FLAG_PRESET_POS,
+				&out->version,
+				MMS_HEADER_MESSAGE_ID,
+				HEADER_FLAG_MANDATORY, &out->di.msgid,
+				MMS_HEADER_TO,
+				HEADER_FLAG_MANDATORY, &out->di.to,
+				MMS_HEADER_DATE,
+				HEADER_FLAG_MANDATORY, &out->di.date,
+				MMS_HEADER_STATUS,
+				HEADER_FLAG_MANDATORY, &out->di.dr_status,
+				MMS_HEADER_INVALID);
+}
+
+
 #define CHECK_WELL_KNOWN_HDR(hdr)			\
 	if (wsp_header_iter_next(&iter) == FALSE)	\
 		return FALSE;				\
@@ -1016,7 +1034,7 @@ gboolean mms_message_decode(const unsigned char *pdu,
 	case MMS_MESSAGE_TYPE_ACKNOWLEDGE_IND:
 		return FALSE;
 	case MMS_MESSAGE_TYPE_DELIVERY_IND:
-		return FALSE;
+		return decode_delivery_ind(&iter, out);
 	}
 
 	return FALSE;
@@ -1051,6 +1069,8 @@ void mms_message_free(struct mms_message *msg)
 	case MMS_MESSAGE_TYPE_ACKNOWLEDGE_IND:
 		break;
 	case MMS_MESSAGE_TYPE_DELIVERY_IND:
+		g_free(msg->di.msgid);
+		g_free(msg->di.to);
 		break;
 	}
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 03/12] service: Store msg_id provided by M-Send.conf PDU
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
  2012-08-24 13:06 ` [PATCH 01/12] mmsutil: Define mms_delivery_ind struct Ronald Tessier
  2012-08-24 13:06 ` [PATCH 02/12] mmsutil: Decode delivery_ind msg Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 13:45   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 04/12] service: Move mms_address_to_string() up Ronald Tessier
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1164 bytes --]

---
 src/service.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/service.c b/src/service.c
index db9c514..b073ca9 100644
--- a/src/service.c
+++ b/src/service.c
@@ -629,7 +629,7 @@ static gboolean result_request_send_conf(struct mms_request *request)
 
 	uuid = request->msg->uuid;
 
-	path = g_strdup_printf("%s/%s/%s", MMS_PATH, service->identity,	uuid);
+	path = g_strdup_printf("%s/%s/%s", MMS_PATH, service->identity, uuid);
 
 	if (request->status != 200)
 		goto error;
@@ -655,17 +655,21 @@ static gboolean result_request_send_conf(struct mms_request *request)
 
 	mms_debug("response status : %d", msg->sc.rsp_status);
 
-	mms_message_free(msg);
-
 	munmap(pdu, len);
 
 	unlink(request->data_path);
 
 	meta = mms_store_meta_open(service->identity, uuid);
-	if (meta == NULL)
+	if (meta == NULL) {
+		mms_message_free(msg);
+
 		goto error;
+	}
 
 	g_key_file_set_string(meta, "info", "state", "sent");
+	g_key_file_set_string(meta, "info", "id", msg->sc.msgid);
+
+	mms_message_free(msg);
 
 	mms_store_meta_close(service->identity, uuid, meta, TRUE);
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 04/12] service: Move mms_address_to_string() up
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (2 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 03/12] service: Store msg_id provided by M-Send.conf PDU Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 13:46   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 05/12] service: Add a group [delivery_status] in the msg status Ronald Tessier
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1269 bytes --]

---
 src/service.c |   26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/service.c b/src/service.c
index b073ca9..c3dc40a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -354,6 +354,19 @@ static gboolean mmap_file(const char *path, void **out_pdu, size_t *out_len)
 	return TRUE;
 }
 
+static const char *mms_address_to_string(char *mms_address)
+{
+	unsigned int prefix_len;
+
+	if (g_str_has_suffix(mms_address, "/TYPE=PLMN") == TRUE) {
+		prefix_len = strlen(mms_address) - 10;
+
+		mms_address[prefix_len] = '\0';
+	}
+
+	return (const char *) mms_address;
+}
+
 static gboolean send_message_get_recipients(DBusMessageIter *top_iter,
 						struct mms_message *msg)
 {
@@ -1702,19 +1715,6 @@ static void append_msg_attachments(DBusMessageIter *dict, const char *path,
 	}
 }
 
-static const char *mms_address_to_string(char *mms_address)
-{
-	unsigned int prefix_len;
-
-	if (g_str_has_suffix(mms_address, "/TYPE=PLMN") == TRUE) {
-		prefix_len = strlen(mms_address) - 10;
-
-		mms_address[prefix_len] = '\0';
-	}
-
-	return (const char *) mms_address;
-}
-
 static void append_msg_recipients(DBusMessageIter *dict,
 					struct mms_message *msg)
 {
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 05/12] service: Add a group [delivery_status] in the msg status
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (3 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 04/12] service: Move mms_address_to_string() up Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 13:50   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 06/12] service: Support M-Delivery.ind in mms_service_push_notify() Ronald Tessier
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1539 bytes --]

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


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 06/12] service: Support M-Delivery.ind in mms_service_push_notify()
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (4 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 05/12] service: Add a group [delivery_status] in the msg status Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 13:50   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 07/12] service: Support delivery_ind notif on start Ronald Tessier
                   ` (5 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1517 bytes --]

---
 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


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 07/12] service: Support delivery_ind notif on start
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (5 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 06/12] service: Support M-Delivery.ind in mms_service_push_notify() Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 14:25   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 08/12] store: Define MMS_META_UUID_XXX len and suffix Ronald Tessier
                   ` (4 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 864 bytes --]

---
 src/service.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/service.c b/src/service.c
index 8087477..b3ecc1e 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1357,7 +1357,8 @@ static gboolean load_message_from_store(const char *service_id,
 	else if (strcmp(state, "draft") == 0
 			&& msg->type == MMS_MESSAGE_TYPE_SEND_REQ)
 		msg->sr.status = MMS_MESSAGE_STATUS_DRAFT;
-	else if (msg->type != MMS_MESSAGE_TYPE_NOTIFICATION_IND)
+	else if (msg->type != MMS_MESSAGE_TYPE_NOTIFICATION_IND &&
+			msg->type != MMS_MESSAGE_TYPE_DELIVERY_IND)
 		goto out;
 
 	success = TRUE;
@@ -1482,6 +1483,8 @@ register_sr:
 			request = NULL;
 			mms_message_register(service, msg);
 		}
+	} else if (msg->type == MMS_MESSAGE_TYPE_DELIVERY_IND) {
+		request = NULL;
 	} else
 		request = NULL;
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 08/12] store: Define MMS_META_UUID_XXX len and suffix
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (6 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 07/12] service: Support delivery_ind notif on start Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 14:25   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 09/12] service: Process delivery_ind notification Ronald Tessier
                   ` (3 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1770 bytes --]

---
 src/store.c |    8 +++-----
 src/store.h |    5 +++++
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/store.c b/src/store.c
index b09c17b..f1c5714 100644
--- a/src/store.c
+++ b/src/store.c
@@ -42,8 +42,6 @@
 #define TFR
 #endif
 
-#define MMS_SHA1_UUID_LEN 20
-
 static const char *digest_to_str(const unsigned char *digest)
 {
 	static char buf[MMS_SHA1_UUID_LEN * 2 + 1];
@@ -293,7 +291,7 @@ void mms_store_remove(const char *service_id, const char *uuid)
 
 	unlink(pdu_path);
 
-	meta_path = g_strdup_printf("%s%s", pdu_path, ".status");
+	meta_path = g_strdup_printf("%s%s", pdu_path, MMS_META_UUID_SUFFIX);
 
 	g_free(pdu_path);
 
@@ -312,7 +310,7 @@ GKeyFile *mms_store_meta_open(const char *service_id, const char *uuid)
 	if (pdu_path == NULL)
 		return NULL;
 
-	meta_path = g_strdup_printf("%s%s", pdu_path, ".status");
+	meta_path = g_strdup_printf("%s%s", pdu_path, MMS_META_UUID_SUFFIX);
 
 	g_free(pdu_path);
 
@@ -337,7 +335,7 @@ static void meta_store_sync(const char *service_id, const char *uuid,
 	if (pdu_path == NULL)
 		return;
 
-	meta_path = g_strdup_printf("%s%s", pdu_path, ".status");
+	meta_path = g_strdup_printf("%s%s", pdu_path, MMS_META_UUID_SUFFIX);
 
 	g_free(pdu_path);
 
diff --git a/src/store.h b/src/store.h
index ba2c080..fb2ca9f 100644
--- a/src/store.h
+++ b/src/store.h
@@ -19,6 +19,11 @@
  *
  */
 
+#define MMS_SHA1_UUID_LEN 20
+#define MMS_META_UUID_SUFFIX ".status"
+#define MMS_META_UUID_SUFFIX_LEN 7
+#define MMS_META_UUID_LEN (MMS_SHA1_UUID_LEN * 2)
+
 const char *mms_store(const char *service_id, unsigned char *pdu,
 							unsigned int len);
 const char *mms_store_file(const char *service_id, const char *path);
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 09/12] service: Process delivery_ind notification
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (7 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 08/12] store: Define MMS_META_UUID_XXX len and suffix Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 14:26   ` Denis Kenzior
  2012-08-24 13:06 ` [PATCH 10/12] service: Send a delivery changed signal Ronald Tessier
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 3825 bytes --]

---
 src/service.c |  111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 107 insertions(+), 4 deletions(-)

diff --git a/src/service.c b/src/service.c
index b3ecc1e..44184cb 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1300,6 +1300,104 @@ static void emit_service_removed(struct mms_service *service)
 				&service->path, DBUS_TYPE_INVALID);
 }
 
+static gboolean get_meta_by_msgid(struct mms_service *service,
+						const char *msgid,
+						char *uuid)
+{
+	GDir *dir;
+	GKeyFile *meta;
+	const char *file;
+	const char *homedir;
+	const char *service_id;
+	char *service_path;
+
+	homedir = g_get_home_dir();
+	if (homedir == NULL)
+		return FALSE;
+
+	service_id = service->identity;
+
+	service_path = g_strdup_printf("%s/.mms/%s/", homedir, service_id);
+
+	dir = g_dir_open(service_path, 0, NULL);
+	g_free(service_path);
+	if (dir == NULL)
+		return FALSE;
+
+	while ((file = g_dir_read_name(dir)) != NULL) {
+		char *id;
+
+		if (g_str_has_suffix(file, MMS_META_UUID_SUFFIX) == FALSE)
+			continue;
+
+		if (strlen(file) != MMS_META_UUID_LEN +
+						MMS_META_UUID_SUFFIX_LEN)
+			continue;
+
+		strncpy(uuid, file, MMS_META_UUID_LEN);
+		uuid[MMS_META_UUID_LEN] = 0;
+
+		meta = mms_store_meta_open(service_id, uuid);
+		if (meta == NULL)
+			goto bail;
+
+		id = g_key_file_get_string(meta, "info", "id", NULL);
+		if (id == NULL) {
+			mms_store_meta_close(service_id, uuid, meta, FALSE);
+			continue;
+		}
+
+		if (g_strcmp0(msgid, id) == 0) {
+			mms_store_meta_close(service_id, uuid, meta, FALSE);
+			g_dir_close(dir);
+			return TRUE;
+		}
+
+		mms_store_meta_close(service_id, uuid, meta, FALSE);
+	}
+
+bail:
+	g_dir_close(dir);
+
+	return FALSE;
+}
+
+static void process_delivery_ind_notification(struct mms_service *service,
+						struct mms_message *di_msg)
+{
+	GKeyFile *meta;
+	char uuid[MMS_META_UUID_LEN + 1];
+	char *path;
+	char *to;
+
+	if (get_meta_by_msgid(service, di_msg->di.msgid, uuid) == FALSE)
+		goto bail;
+
+	meta = mms_store_meta_open(service->identity, uuid);
+	if (meta == NULL)
+		return;
+
+	to = g_strdup(di_msg->di.to);
+
+	mms_address_to_string(to);
+
+	g_key_file_set_string(meta, "delivery_status", to,
+				delivery_status[di_msg->di.dr_status - 127]);
+
+	g_free(to);
+
+	mms_store_meta_close(service->identity, uuid, meta, TRUE);
+
+	path = g_strdup_printf("%s/%s/%s", MMS_PATH, service->identity, uuid);
+
+	g_free(path);
+
+bail:
+	mms_store_remove(service->identity, di_msg->uuid);
+
+	mms_message_free(di_msg);
+}
+
 static gboolean load_message_from_store(const char *service_id,
 				const char *uuid, struct mms_message *msg)
 {
@@ -1485,6 +1583,7 @@ register_sr:
 		}
 	} else if (msg->type == MMS_MESSAGE_TYPE_DELIVERY_IND) {
 		request = NULL;
+		process_delivery_ind_notification(service, msg);
 	} else
 		request = NULL;
 
@@ -1514,15 +1613,17 @@ static void load_messages(struct mms_service *service)
 		return;
 
 	while ((file = g_dir_read_name(dir)) != NULL) {
-		const size_t suffix_len = 7;
 		char *uuid;
+		size_t uuid_len;
 
-		if (g_str_has_suffix(file, ".status") == FALSE)
+		if (g_str_has_suffix(file, MMS_META_UUID_SUFFIX) == FALSE)
 			continue;
-		if (strlen(file) - suffix_len == 0)
+
+		uuid_len = strlen(file) - MMS_META_UUID_SUFFIX_LEN;
+		if (uuid_len == 0)
 			continue;
 
-		uuid = g_strndup(file, strlen(file) - suffix_len);
+		uuid = g_strndup(file, uuid_len);
 
 		process_message_on_start(service, uuid);
 
@@ -2401,6 +2502,8 @@ void mms_service_push_notify(struct mms_service *service,
 
 		mms_store_meta_close(service->identity, uuid, meta, TRUE);
 
+		process_delivery_ind_notification(service, msg);
+
 		return;
 	}
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 10/12] service: Send a delivery changed signal
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (8 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 09/12] service: Process delivery_ind notification Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-24 13:06 ` [PATCH 11/12] test: Add ReportChanged to monitored signals Ronald Tessier
  2012-08-24 13:06 ` [PATCH 12/12] doc: Add ReportChanged signal description Ronald Tessier
  11 siblings, 0 replies; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2801 bytes --]

---
 src/service.c |   48 +++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 45 insertions(+), 3 deletions(-)

diff --git a/src/service.c b/src/service.c
index 44184cb..ba23b4a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -218,6 +218,40 @@ static void emit_msg_status_changed(const char *path, const char *new_status)
 	g_dbus_send_message(connection, signal);
 }
 
+static void emit_msg_delivery_changed(const char *path, const char *rec,
+							const char *status)
+{
+	DBusMessage *signal;
+	DBusMessageIter iter;
+	DBusMessageIter variant;
+	const char *type = "delivery_report";
+
+	signal = dbus_message_new_signal(path, MMS_MESSAGE_INTERFACE,
+							"ReportChanged");
+	if (signal == NULL)
+		return;
+
+	dbus_message_iter_init_append(signal, &iter);
+
+	dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &type);
+
+	dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
+					DBUS_TYPE_STRING_AS_STRING, &variant);
+
+	dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &rec);
+
+	dbus_message_iter_close_container(&iter, &variant);
+
+	dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
+					DBUS_TYPE_STRING_AS_STRING, &variant);
+
+	dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &status);
+
+	dbus_message_iter_close_container(&iter, &variant);
+
+	g_dbus_send_message(connection, signal);
+}
+
 static DBusMessage *msg_mark_read(DBusConnection *conn,
 					DBusMessage *msg, void *user_data)
 {
@@ -269,6 +303,10 @@ static const GDBusMethodTable message_methods[] = {
 static const GDBusSignalTable message_signals[] = {
 	{ GDBUS_SIGNAL("PropertyChanged",
 			GDBUS_ARGS({ "name", "s" }, { "value", "v" })) },
+	{ GDBUS_SIGNAL("ReportChanged",
+			GDBUS_ARGS({ "name", "s" },
+					{ "rec", "v" },
+					{ "status", "v" })) },
 	{ }
 };
 
@@ -1369,6 +1407,7 @@ static void process_delivery_ind_notification(struct mms_service *service,
 	char uuid[MMS_META_UUID_LEN + 1];
 	char *path;
 	char *to;
+	const char *new_status;
 
 	if (get_meta_by_msgid(service, di_msg->di.msgid, uuid) == FALSE)
 		goto bail;
@@ -1381,15 +1420,18 @@ static void process_delivery_ind_notification(struct mms_service *service,
 
 	mms_address_to_string(to);
 
-	g_key_file_set_string(meta, "delivery_status", to,
-				delivery_status[di_msg->di.dr_status - 127]);
+	new_status = delivery_status[di_msg->di.dr_status - 127];
 
-	g_free(to);
+	g_key_file_set_string(meta, "delivery_status", to, new_status);
 
 	mms_store_meta_close(service->identity, uuid, meta, TRUE);
 
 	path = g_strdup_printf("%s/%s/%s", MMS_PATH, service->identity, uuid);
 
+	emit_msg_delivery_changed(path, to, new_status);
+
+	g_free(to);
+
 	g_free(path);
 
 bail:
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 11/12] test: Add ReportChanged to monitored signals
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (9 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 10/12] service: Send a delivery changed signal Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-24 13:06 ` [PATCH 12/12] doc: Add ReportChanged signal description Ronald Tessier
  11 siblings, 0 replies; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1034 bytes --]

---
 test/monitor-mms |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/test/monitor-mms b/test/monitor-mms
index 188d028..ef17a13 100755
--- a/test/monitor-mms
+++ b/test/monitor-mms
@@ -29,6 +29,10 @@ def property_changed(name, value, member, path, interface):
 	iface = interface[interface.rfind(".") + 1:]
 	print "{%s} [%s] %s %s" % (iface, name, member, value)
 
+def report_changed(type, rec, status, path, interface):
+	iface = interface[interface.rfind(".") + 1:]
+	print "{%s} [%s] <%s> %s : %s" % (iface, path, type, rec, status)
+
 if __name__ == '__main__':
 	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 
@@ -75,5 +79,11 @@ if __name__ == '__main__':
 						path_keyword="path",
 						interface_keyword="interface")
 
+	bus.add_signal_receiver(report_changed,
+					bus_name="org.ofono.mms",
+					signal_name = "ReportChanged",
+						path_keyword="path",
+						interface_keyword="interface")
+
 	mainloop = gobject.MainLoop()
 	mainloop.run()
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 12/12] doc: Add ReportChanged signal description
  2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
                   ` (10 preceding siblings ...)
  2012-08-24 13:06 ` [PATCH 11/12] test: Add ReportChanged to monitored signals Ronald Tessier
@ 2012-08-24 13:06 ` Ronald Tessier
  2012-08-28 14:29   ` Denis Kenzior
  11 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-08-24 13:06 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 744 bytes --]

---
 doc/message-api.txt |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/doc/message-api.txt b/doc/message-api.txt
index 2922e5d..274bb98 100644
--- a/doc/message-api.txt
+++ b/doc/message-api.txt
@@ -31,6 +31,13 @@ Signals		PropertyChanged(string name, variant value)
 			The only expected property change is for the
 			message status.
 
+		ReportChanged(string type, variant recipient, variant status)
+
+			Signal that is sent when a report has been received and
+			processed. It contains the type of the report
+			("delivery_report" or other), the recipient concerned
+			and its new status.
+
 Properties	string Status [readonly]
 
 			The status of the message.  Possible values are
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH 02/12] mmsutil: Decode delivery_ind msg
  2012-08-24 13:06 ` [PATCH 02/12] mmsutil: Decode delivery_ind msg Ronald Tessier
@ 2012-08-28 13:41   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 13:41 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1706 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/mmsutil.c |   22 +++++++++++++++++++++-
>   1 file changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/src/mmsutil.c b/src/mmsutil.c
> index a9a12eb..7042276 100644
> --- a/src/mmsutil.c
> +++ b/src/mmsutil.c
> @@ -964,6 +964,24 @@ static gboolean decode_send_req(struct wsp_header_iter *iter,
>   	return TRUE;
>   }
>
> +static gboolean decode_delivery_ind(struct wsp_header_iter *iter,
> +						struct mms_message *out)
> +{
> +	return mms_parse_headers(iter, MMS_HEADER_MMS_VERSION,
> +				HEADER_FLAG_MANDATORY | HEADER_FLAG_PRESET_POS,
> +				&out->version,
> +				MMS_HEADER_MESSAGE_ID,
> +				HEADER_FLAG_MANDATORY,&out->di.msgid,
> +				MMS_HEADER_TO,
> +				HEADER_FLAG_MANDATORY,&out->di.to,
> +				MMS_HEADER_DATE,
> +				HEADER_FLAG_MANDATORY,&out->di.date,
> +				MMS_HEADER_STATUS,
> +				HEADER_FLAG_MANDATORY,&out->di.dr_status,
> +				MMS_HEADER_INVALID);
> +}
> +
> +

Why the double empty line?

>   #define CHECK_WELL_KNOWN_HDR(hdr)			\
>   	if (wsp_header_iter_next(&iter) == FALSE)	\
>   		return FALSE;				\
> @@ -1016,7 +1034,7 @@ gboolean mms_message_decode(const unsigned char *pdu,
>   	case MMS_MESSAGE_TYPE_ACKNOWLEDGE_IND:
>   		return FALSE;
>   	case MMS_MESSAGE_TYPE_DELIVERY_IND:
> -		return FALSE;
> +		return decode_delivery_ind(&iter, out);
>   	}
>
>   	return FALSE;
> @@ -1051,6 +1069,8 @@ void mms_message_free(struct mms_message *msg)
>   	case MMS_MESSAGE_TYPE_ACKNOWLEDGE_IND:
>   		break;
>   	case MMS_MESSAGE_TYPE_DELIVERY_IND:
> +		g_free(msg->di.msgid);
> +		g_free(msg->di.to);
>   		break;
>   	}
>

Regards,
-Denis

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 01/12] mmsutil: Define mms_delivery_ind struct
  2012-08-24 13:06 ` [PATCH 01/12] mmsutil: Define mms_delivery_ind struct Ronald Tessier
@ 2012-08-28 13:41   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 13:41 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 200 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/mmsutil.h |    8 ++++++++
>   1 file changed, 8 insertions(+)
>

Patch has been applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 03/12] service: Store msg_id provided by M-Send.conf PDU
  2012-08-24 13:06 ` [PATCH 03/12] service: Store msg_id provided by M-Send.conf PDU Ronald Tessier
@ 2012-08-28 13:45   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 13:45 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 220 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/service.c |   12 ++++++++----
>   1 file changed, 8 insertions(+), 4 deletions(-)
>

Patch has been applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 04/12] service: Move mms_address_to_string() up
  2012-08-24 13:06 ` [PATCH 04/12] service: Move mms_address_to_string() up Ronald Tessier
@ 2012-08-28 13:46   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 13:46 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 236 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/service.c |   26 +++++++++++++-------------
>   1 file changed, 13 insertions(+), 13 deletions(-)
>

Patch has been applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 05/12] service: Add a group [delivery_status] in the msg status
  2012-08-24 13:06 ` [PATCH 05/12] service: Add a group [delivery_status] in the msg status Ronald Tessier
@ 2012-08-28 13:50   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 13:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 431 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> 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(+)
>

Patch has been applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 06/12] service: Support M-Delivery.ind in mms_service_push_notify()
  2012-08-24 13:06 ` [PATCH 06/12] service: Support M-Delivery.ind in mms_service_push_notify() Ronald Tessier
@ 2012-08-28 13:50   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 13:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 224 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/service.c |   31 +++++++++++++++++++++++++++++++
>   1 file changed, 31 insertions(+)
>

Patch has been applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 07/12] service: Support delivery_ind notif on start
  2012-08-24 13:06 ` [PATCH 07/12] service: Support delivery_ind notif on start Ronald Tessier
@ 2012-08-28 14:25   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 14:25 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 212 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/service.c |    5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>

Patch has been applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 08/12] store: Define MMS_META_UUID_XXX len and suffix
  2012-08-24 13:06 ` [PATCH 08/12] store: Define MMS_META_UUID_XXX len and suffix Ronald Tessier
@ 2012-08-28 14:25   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 14:25 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 245 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/store.c |    8 +++-----
>   src/store.h |    5 +++++
>   2 files changed, 8 insertions(+), 5 deletions(-)
>

Patch has been applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 09/12] service: Process delivery_ind notification
  2012-08-24 13:06 ` [PATCH 09/12] service: Process delivery_ind notification Ronald Tessier
@ 2012-08-28 14:26   ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 14:26 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 4290 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   src/service.c |  111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
>   1 file changed, 107 insertions(+), 4 deletions(-)
>
> diff --git a/src/service.c b/src/service.c
> index b3ecc1e..44184cb 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -1300,6 +1300,104 @@ static void emit_service_removed(struct mms_service *service)
>   				&service->path, DBUS_TYPE_INVALID);
>   }
>
> +static gboolean get_meta_by_msgid(struct mms_service *service,
> +						const char *msgid,
> +						char *uuid)
> +{
> +	GDir *dir;
> +	GKeyFile *meta;
> +	const char *file;
> +	const char *homedir;
> +	const char *service_id;
> +	char *service_path;
> +
> +	homedir = g_get_home_dir();
> +	if (homedir == NULL)
> +		return FALSE;
> +
> +	service_id = service->identity;
> +
> +	service_path = g_strdup_printf("%s/.mms/%s/", homedir, service_id);
> +
> +	dir = g_dir_open(service_path, 0, NULL);
> +	g_free(service_path);
> +	if (dir == NULL)
> +		return FALSE;
> +
> +	while ((file = g_dir_read_name(dir)) != NULL) {
> +		char *id;
> +
> +		if (g_str_has_suffix(file, MMS_META_UUID_SUFFIX) == FALSE)
> +			continue;
> +
> +		if (strlen(file) != MMS_META_UUID_LEN +
> +						MMS_META_UUID_SUFFIX_LEN)
> +			continue;
> +
> +		strncpy(uuid, file, MMS_META_UUID_LEN);
> +		uuid[MMS_META_UUID_LEN] = 0;
> +
> +		meta = mms_store_meta_open(service_id, uuid);
> +		if (meta == NULL)
> +			goto bail;
> +
> +		id = g_key_file_get_string(meta, "info", "id", NULL);
> +		if (id == NULL) {
> +			mms_store_meta_close(service_id, uuid, meta, FALSE);
> +			continue;
> +		}
> +
> +		if (g_strcmp0(msgid, id) == 0) {
> +			mms_store_meta_close(service_id, uuid, meta, FALSE);
> +			g_dir_close(dir);
> +			return TRUE;
> +		}
> +
> +		mms_store_meta_close(service_id, uuid, meta, FALSE);
> +	}
> +
> +bail:
> +	g_dir_close(dir);
> +
> +	return FALSE;
> +}
> +
> +static void process_delivery_ind_notification(struct mms_service *service,
> +						struct mms_message *di_msg)
> +{
> +	GKeyFile *meta;
> +	char uuid[MMS_META_UUID_LEN + 1];
> +	char *path;
> +	char *to;
> +
> +	if (get_meta_by_msgid(service, di_msg->di.msgid, uuid) == FALSE)
> +		goto bail;
> +
> +	meta = mms_store_meta_open(service->identity, uuid);
> +	if (meta == NULL)
> +		return;
> +
> +	to = g_strdup(di_msg->di.to);
> +
> +	mms_address_to_string(to);
> +
> +	g_key_file_set_string(meta, "delivery_status", to,
> +				delivery_status[di_msg->di.dr_status - 127]);
> +
> +	g_free(to);
> +
> +	mms_store_meta_close(service->identity, uuid, meta, TRUE);
> +
> +	path = g_strdup_printf("%s/%s/%s", MMS_PATH, service->identity, uuid);
> +
> +	g_free(path);
> +
> +bail:
> +	mms_store_remove(service->identity, di_msg->uuid);
> +
> +	mms_message_free(di_msg);
> +}
> +
>   static gboolean load_message_from_store(const char *service_id,
>   				const char *uuid, struct mms_message *msg)
>   {
> @@ -1485,6 +1583,7 @@ register_sr:
>   		}
>   	} else if (msg->type == MMS_MESSAGE_TYPE_DELIVERY_IND) {
>   		request = NULL;
> +		process_delivery_ind_notification(service, msg);
>   	} else
>   		request = NULL;
>
> @@ -1514,15 +1613,17 @@ static void load_messages(struct mms_service *service)
>   		return;
>
>   	while ((file = g_dir_read_name(dir)) != NULL) {
> -		const size_t suffix_len = 7;
>   		char *uuid;
> +		size_t uuid_len;
>
> -		if (g_str_has_suffix(file, ".status") == FALSE)
> +		if (g_str_has_suffix(file, MMS_META_UUID_SUFFIX) == FALSE)
>   			continue;
> -		if (strlen(file) - suffix_len == 0)
> +
> +		uuid_len = strlen(file) - MMS_META_UUID_SUFFIX_LEN;
> +		if (uuid_len == 0)
>   			continue;
>
> -		uuid = g_strndup(file, strlen(file) - suffix_len);
> +		uuid = g_strndup(file, uuid_len);
>
>   		process_message_on_start(service, uuid);
>

This chunk should really be in a separate patch since it is related to 
the previous one.

> @@ -2401,6 +2502,8 @@ void mms_service_push_notify(struct mms_service *service,
>
>   		mms_store_meta_close(service->identity, uuid, meta, TRUE);
>
> +		process_delivery_ind_notification(service, msg);
> +
>   		return;
>   	}
>

Regards,
-Denis

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 12/12] doc: Add ReportChanged signal description
  2012-08-24 13:06 ` [PATCH 12/12] doc: Add ReportChanged signal description Ronald Tessier
@ 2012-08-28 14:29   ` Denis Kenzior
  2012-09-04 15:26     ` Ronald Tessier
  0 siblings, 1 reply; 26+ messages in thread
From: Denis Kenzior @ 2012-08-28 14:29 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1058 bytes --]

Hi Ronald,

On 08/24/2012 08:06 AM, Ronald Tessier wrote:
> ---
>   doc/message-api.txt |    7 +++++++
>   1 file changed, 7 insertions(+)
>

Please order any D-Bus API changes before the D-Bus API implementations. 
  E.g. this patch should be #10 in your series.

> diff --git a/doc/message-api.txt b/doc/message-api.txt
> index 2922e5d..274bb98 100644
> --- a/doc/message-api.txt
> +++ b/doc/message-api.txt
> @@ -31,6 +31,13 @@ Signals		PropertyChanged(string name, variant value)
>   			The only expected property change is for the
>   			message status.
>
> +		ReportChanged(string type, variant recipient, variant status)
> +
> +			Signal that is sent when a report has been received and
> +			processed. It contains the type of the report
> +			("delivery_report" or other), the recipient concerned
> +			and its new status.
> +

Why are we not simply changing the 'Status' to delivered/expired, etc?

>   Properties	string Status [readonly]
>
>   			The status of the message.  Possible values are

Regards,
-Denis

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 12/12] doc: Add ReportChanged signal description
  2012-08-28 14:29   ` Denis Kenzior
@ 2012-09-04 15:26     ` Ronald Tessier
  2012-09-04 19:20       ` Denis Kenzior
  0 siblings, 1 reply; 26+ messages in thread
From: Ronald Tessier @ 2012-09-04 15:26 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1360 bytes --]

Hi Denis,

On 08/28/2012 04:29 PM, Denis Kenzior wrote:
> Hi Ronald,
>
> On 08/24/2012 08:06 AM, Ronald Tessier wrote:
>> ---
>>   doc/message-api.txt |    7 +++++++
>>   1 file changed, 7 insertions(+)
>>
>
> Please order any D-Bus API changes before the D-Bus API implementations.
>   E.g. this patch should be #10 in your series.
>
>> diff --git a/doc/message-api.txt b/doc/message-api.txt
>> index 2922e5d..274bb98 100644
>> --- a/doc/message-api.txt
>> +++ b/doc/message-api.txt
>> @@ -31,6 +31,13 @@ Signals        PropertyChanged(string name, variant
>> value)
>>               The only expected property change is for the
>>               message status.
>>
>> +        ReportChanged(string type, variant recipient, variant status)
>> +
>> +            Signal that is sent when a report has been received and
>> +            processed. It contains the type of the report
>> +            ("delivery_report" or other), the recipient concerned
>> +            and its new status.
>> +
>
> Why are we not simply changing the 'Status' to delivered/expired, etc?

Unfortunately, we cannot use the message status because there is one 
delivery status per recipient (a message can be sent to 2 (or more) 
recipients, so it can be delivered to one of them and "not yet 
delivered" to the other one).

Regards,

Ronald


^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 12/12] doc: Add ReportChanged signal description
  2012-09-04 15:26     ` Ronald Tessier
@ 2012-09-04 19:20       ` Denis Kenzior
  0 siblings, 0 replies; 26+ messages in thread
From: Denis Kenzior @ 2012-09-04 19:20 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 949 bytes --]

Hi Ronald,

>>> + ReportChanged(string type, variant recipient, variant status)
>>> +
>>> + Signal that is sent when a report has been received and
>>> + processed. It contains the type of the report
>>> + ("delivery_report" or other), the recipient concerned
>>> + and its new status.
>>> +
>>
>> Why are we not simply changing the 'Status' to delivered/expired, etc?
>
> Unfortunately, we cannot use the message status because there is one
> delivery status per recipient (a message can be sent to 2 (or more)
> recipients, so it can be delivered to one of them and "not yet
> delivered" to the other one).
>

So how do you expect this to work? Is the application responsible for 
aggregating the recipients?  If so, then that is not a good idea, mmsd 
should be doing as much work as possible here.

Can't we use delivered/partially_delivered/expired and provide exact 
status details as a dictionary?

Regards,
-Denis

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH 12/12] doc: Add ReportChanged signal description
  2012-08-17 14:35 [PATCH 00/12] mmsd: Support Delivery Report notification Ronald Tessier
@ 2012-08-17 14:35 ` Ronald Tessier
  0 siblings, 0 replies; 26+ messages in thread
From: Ronald Tessier @ 2012-08-17 14:35 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 744 bytes --]

---
 doc/message-api.txt |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/doc/message-api.txt b/doc/message-api.txt
index 2922e5d..274bb98 100644
--- a/doc/message-api.txt
+++ b/doc/message-api.txt
@@ -31,6 +31,13 @@ Signals		PropertyChanged(string name, variant value)
 			The only expected property change is for the
 			message status.
 
+		ReportChanged(string type, variant recipient, variant status)
+
+			Signal that is sent when a report has been received and
+			processed. It contains the type of the report
+			("delivery_report" or other), the recipient concerned
+			and its new status.
+
 Properties	string Status [readonly]
 
 			The status of the message.  Possible values are
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2012-09-04 19:20 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-24 13:05 [PATCH 00/12] mmsd: (resending) Support Delivery Report notification Ronald Tessier
2012-08-24 13:06 ` [PATCH 01/12] mmsutil: Define mms_delivery_ind struct Ronald Tessier
2012-08-28 13:41   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 02/12] mmsutil: Decode delivery_ind msg Ronald Tessier
2012-08-28 13:41   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 03/12] service: Store msg_id provided by M-Send.conf PDU Ronald Tessier
2012-08-28 13:45   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 04/12] service: Move mms_address_to_string() up Ronald Tessier
2012-08-28 13:46   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 05/12] service: Add a group [delivery_status] in the msg status Ronald Tessier
2012-08-28 13:50   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 06/12] service: Support M-Delivery.ind in mms_service_push_notify() Ronald Tessier
2012-08-28 13:50   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 07/12] service: Support delivery_ind notif on start Ronald Tessier
2012-08-28 14:25   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 08/12] store: Define MMS_META_UUID_XXX len and suffix Ronald Tessier
2012-08-28 14:25   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 09/12] service: Process delivery_ind notification Ronald Tessier
2012-08-28 14:26   ` Denis Kenzior
2012-08-24 13:06 ` [PATCH 10/12] service: Send a delivery changed signal Ronald Tessier
2012-08-24 13:06 ` [PATCH 11/12] test: Add ReportChanged to monitored signals Ronald Tessier
2012-08-24 13:06 ` [PATCH 12/12] doc: Add ReportChanged signal description Ronald Tessier
2012-08-28 14:29   ` Denis Kenzior
2012-09-04 15:26     ` Ronald Tessier
2012-09-04 19:20       ` Denis Kenzior
  -- strict thread matches above, loose matches on Subject: below --
2012-08-17 14:35 [PATCH 00/12] mmsd: Support Delivery Report notification Ronald Tessier
2012-08-17 14:35 ` [PATCH 12/12] doc: Add ReportChanged signal description Ronald Tessier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.