To decide whether retry or not.
---
 src/service.c |   41 +++++++++++++++++++++++------------------
 1 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/src/service.c b/src/service.c
index 1be0386..f8ad05f 100644
--- a/src/service.c
+++ b/src/service.c
@@ -68,7 +68,7 @@ static const char *sep_chars = "()<>@,;:\\\"/[]?={} \t";
 
 struct mms_request;
 
-typedef void (*mms_request_result_cb_t) (struct mms_request *request);
+typedef gboolean (*mms_request_result_cb_t) (struct mms_request *request);
 
 struct mms_service {
        gint refcount;
@@ -581,7 +581,7 @@ static inline char *create_transaction_id(void)
                                        "0123456789ABCDEF0123456789ABCDEF");
 }
 
-static void result_request_send_conf(struct mms_request *request)
+static gboolean result_request_send_conf(struct mms_request *request)
 {
        struct mms_message *msg;
        struct mms_service *service = request->service;
@@ -592,15 +592,15 @@ static void result_request_send_conf(struct mms_request 
*request)
        char *path;
 
        if (request->status != 200)
-               return;
+               return FALSE;
 
        msg = g_try_new0(struct mms_message, 1);
        if (msg == NULL)
-               return;
+               return FALSE;
 
        if (mmap_file(request->data_path, &pdu, &len) == FALSE) {
                mms_message_free(msg);
-               return;
+               return FALSE;
        }
 
        if (mms_message_decode(pdu, len, msg) == FALSE) {
@@ -610,7 +610,7 @@ static void result_request_send_conf(struct mms_request 
*request)
 
                mms_message_free(msg);
 
-               return;
+               return FALSE;
        }
 
        mms_debug("response status : %d", msg->sc.rsp_status);
@@ -622,13 +622,13 @@ static void result_request_send_conf(struct mms_request 
*request)
        unlink(request->data_path);
 
        if (request->msg == NULL)
-               return;
+               return FALSE;
 
        uuid = request->msg->uuid;
 
        meta = mms_store_meta_open(service->identity, uuid);
        if (meta == NULL)
-               return;
+               return FALSE;
 
        g_key_file_set_string(meta, "info", "state", "sent");
 
@@ -639,6 +639,8 @@ static void result_request_send_conf(struct mms_request 
*request)
        emit_msg_status_changed(path, "sent");
 
        g_free(path);
+
+       return TRUE;
 }
 
 static void append_message(const char *path, const struct mms_service *service,
@@ -1029,8 +1031,8 @@ out:
        return success;
 }
 
-static void result_request_retrieve_conf(struct mms_request *request);
-static void result_request_notify_resp(struct mms_request *request);
+static gboolean result_request_retrieve_conf(struct mms_request *request);
+static gboolean result_request_notify_resp(struct mms_request *request);
 
 static struct mms_request *build_notify_resp_ind(struct mms_service *service,
                                        enum mms_message_notify_status status,
@@ -1693,7 +1695,7 @@ static gboolean bearer_idle_timeout(gpointer user_data)
        return FALSE;
 }
 
-static void result_request_notify_resp(struct mms_request *request)
+static gboolean result_request_notify_resp(struct mms_request *request)
 {
        struct mms_message *msg;
        GKeyFile *meta;
@@ -1703,17 +1705,17 @@ static void result_request_notify_resp(struct 
mms_request *request)
        if (request->status != 200) {
                mms_error("POST m.notify.resp.ind failed with status %d",
                                                request->status);
-               return;
+               return FALSE;
        }
 
        if (request->msg == NULL)
-               return;
+               return FALSE;
 
        msg = mms_request_steal_message(request);
 
        if (mms_message_register(request->service, msg) != 0) {
                mms_message_free(msg);
-               return;
+               return FALSE;
        }
 
        emit_message_added(request->service, msg);
@@ -1721,15 +1723,17 @@ static void result_request_notify_resp(struct 
mms_request *request)
        meta = mms_store_meta_open(request->service->identity,
                                        msg->uuid);
        if (meta == NULL)
-               return;
+               return FALSE;
 
        g_key_file_set_string(meta, "info", "state", "received");
 
        mms_store_meta_close(request->service->identity,
                                msg->uuid, meta, TRUE);
+
+       return TRUE;
 }
 
-static void result_request_retrieve_conf(struct mms_request *request)
+static gboolean result_request_retrieve_conf(struct mms_request *request)
 {
        struct mms_message *msg;
        struct mms_service *service = request->service;
@@ -1741,10 +1745,10 @@ static void result_request_retrieve_conf(struct 
mms_request *request)
        gboolean decode_success;
 
        if (request->status != 200)
-               return;
+               return FALSE;
 
        if (mmap_file(request->data_path, &pdu, &len) == FALSE)
-               return;
+               return FALSE;
 
        uuid = mms_store_file(service->identity, request->data_path);
        if (uuid == NULL)
@@ -1798,6 +1802,7 @@ error:
 
 exit:
        munmap(pdu, len);
+       return TRUE;
 }
 
 static gboolean web_get_cb(GWebResult *result, gpointer user_data)
-- 
1.7.4.4

_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to