From 46b43f4ed1210f7f1d624194b68e7089b2173add Mon Sep 17 00:00:00 2001
From: Pekka Ervasti <pekka.ervasti@haltian.com>
Date: Tue, 18 Aug 2015 09:38:39 +0300
Subject: [PATCH] ts_engine/connectors: pass negative error code to process
 function

Signed-off-by: Pekka Ervasti <pekka.ervasti@haltian.com>
---
 apps/ts_engine/kii-connector/conn_comm.c     | 13 +++++++++++--
 apps/ts_engine/meshblu-connector/conn_comm.c | 13 +++++++++++--
 apps/ts_engine/ts-connector/conn_comm.c      | 13 +++++++++++--
 3 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/apps/ts_engine/kii-connector/conn_comm.c b/apps/ts_engine/kii-connector/conn_comm.c
index 4f2d565e..7dd228c8 100644
--- a/apps/ts_engine/kii-connector/conn_comm.c
+++ b/apps/ts_engine/kii-connector/conn_comm.c
@@ -251,18 +251,24 @@ static int execute_task_conn_request(struct conn_network_task_s *task)
 
   if (ret == OK)
     {
-      int status_code;
+      int status_code = INT_MIN;
       char *content = NULL;
 
       ret = execute_http_request(&con->srv_ip4addr, con->port,
           hdr, hdrlen, data, datalen, &status_code, &content,
           task->context);
-      if (ret == OK)
+      if (ret < 0)
+        {
+          status_code = ret;
+        }
+
+      if (status_code != INT_MIN)
         {
           next_task = task->process(task->context, status_code, content);
           if (next_task != NULL)
             ret = conn_network_give_new_conn_task(next_task);
         }
+
       conn_free_pointer((void**)&content);
       conn_free_pointer((void**)&hdr);
     }
@@ -322,6 +328,9 @@ static void *conn_network_thread(void *param)
             if (ret < 0)
               {
                 con_dbg("request_connection on failed, skipping task\n");
+
+                task.conn->process(task.conn->context, NETWORK_ERROR, NULL);
+                conn_complete_task_workflow(task.conn->context, ret);
                 conn_destroy_task(task.conn);
                 break;
               }
diff --git a/apps/ts_engine/meshblu-connector/conn_comm.c b/apps/ts_engine/meshblu-connector/conn_comm.c
index 945dda8c..45f993c2 100644
--- a/apps/ts_engine/meshblu-connector/conn_comm.c
+++ b/apps/ts_engine/meshblu-connector/conn_comm.c
@@ -251,18 +251,24 @@ static int execute_task_conn_request(struct conn_network_task_s *task)
 
   if (ret == OK)
     {
-      int status_code;
+      int status_code = INT_MIN;
       char *content = NULL;
 
       ret = execute_http_request(&con->srv_ip4addr, con->port,
           hdr, hdrlen, data, datalen, &status_code, &content,
           task->context);
-      if (ret == OK)
+      if (ret < 0)
+        {
+          status_code = ret;
+        }
+
+      if (status_code != INT_MIN)
         {
           next_task = task->process(task->context, status_code, content);
           if (next_task != NULL)
             ret = conn_network_give_new_conn_task(next_task);
         }
+
       conn_free_pointer((void**)&content);
       conn_free_pointer((void**)&hdr);
     }
@@ -322,6 +328,9 @@ static void *conn_network_thread(void *param)
             if (ret < 0)
               {
                 con_dbg("request_connection on failed, skipping task\n");
+
+                task.conn->process(task.conn->context, NETWORK_ERROR, NULL);
+                conn_complete_task_workflow(task.conn->context, ret);
                 conn_destroy_task(task.conn);
                 break;
               }
diff --git a/apps/ts_engine/ts-connector/conn_comm.c b/apps/ts_engine/ts-connector/conn_comm.c
index 9b215b79..d3660596 100644
--- a/apps/ts_engine/ts-connector/conn_comm.c
+++ b/apps/ts_engine/ts-connector/conn_comm.c
@@ -251,18 +251,24 @@ static int execute_task_conn_request(struct conn_network_task_s *task)
 
   if (ret == OK)
     {
-      int status_code;
+      int status_code = INT_MIN;
       char *content = NULL;
 
       ret = execute_http_request(&con->srv_ip4addr, con->port,
           hdr, hdrlen, data, datalen, &status_code, &content,
           task->context);
-      if (ret == OK)
+      if (ret < 0)
+        {
+          status_code = ret;
+        }
+
+      if (status_code != INT_MIN)
         {
           next_task = task->process(task->context, status_code, content);
           if (next_task != NULL)
             ret = conn_network_give_new_conn_task(next_task);
         }
+
       conn_free_pointer((void**)&content);
       conn_free_pointer((void**)&hdr);
     }
@@ -322,6 +328,9 @@ static void *conn_network_thread(void *param)
             if (ret < 0)
               {
                 con_dbg("request_connection on failed, skipping task\n");
+
+                task.conn->process(task.conn->context, NETWORK_ERROR, NULL);
+                conn_complete_task_workflow(task.conn->context, ret);
                 conn_destroy_task(task.conn);
                 break;
               }
-- 
GitLab