diff --git a/apps/ts_engine/kii-connector/conn_comm.c b/apps/ts_engine/kii-connector/conn_comm.c index 4f2d565e382e27fdb1d87253f894c12d88817fed..7dd228c8709946019a03d818cba1c1150d6bc869 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 945dda8c924fcdbfc1ef0364f4bfddd451091742..45f993c2b7c178fd2c09670930134e2f406f2dab 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 9b215b799f61e4584508519f7c6ac30def7ef4af..d36605963be670c70ec1eb052646c6d5ed86502d 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; }