diff --git a/net/server/http_server/include/http_status_code.h b/3rdparty/http_status_code.h
similarity index 100%
rename from net/server/http_server/include/http_status_code.h
rename to 3rdparty/http_status_code.h
diff --git a/net/client/dap_client_http.c b/net/client/dap_client_http.c
index 34560bee394f28ac8ad213f87322dbcedeebabf5..50200f98b59da462936bbd2d3d59218945c6f3a9 100644
--- a/net/client/dap_client_http.c
+++ b/net/client/dap_client_http.c
@@ -67,6 +67,22 @@ static uint32_t s_max_attempts = 5;
 static WOLFSSL_CTX *s_ctx;
 #endif
 
+http_status_code_t s_extract_http_code(void *a_response, size_t a_response_size) {
+    char l_http_code_str[3] = {'\0'};
+    size_t l_first_space = 0;
+    for (;l_first_space < a_response_size; l_first_space++) {
+        if (((const char*)a_response)[l_first_space] == ' ')
+            break;
+    }
+    if (l_first_space + 3 > a_response_size)
+        return 0;
+    l_http_code_str[0] = ((const char*)a_response)[l_first_space+1];
+    l_http_code_str[1] = ((const char*)a_response)[l_first_space+2];
+    l_http_code_str[2] = ((const char*)a_response)[l_first_space+3];
+    http_status_code_t l_http_code = strtoul(l_http_code_str, NULL, 10);
+    return l_http_code;
+}
+
 /**
  * @brief dap_client_http_init
  * @return
@@ -357,7 +373,8 @@ static void s_http_read(dap_events_socket_t * a_es, void * arg)
                 l_client_http->response_callback(
                         l_client_http->response + l_client_http->header_length,
                         l_client_http->content_length,
-                        l_client_http->callbacks_arg);
+                        l_client_http->callbacks_arg, s_extract_http_code(
+                                l_client_http->response, l_client_http->response_size));
             l_client_http->response_size -= l_client_http->header_length;
             l_client_http->response_size -= l_client_http->content_length;
             l_client_http->header_length = 0;
@@ -442,12 +459,12 @@ static void s_es_delete(dap_events_socket_t * a_es, void * a_arg)
                l_response_size);
 
             //l_client_http->error_callback(-10 , l_client_http->callbacks_arg);
-
+            http_status_code_t l_status_code = s_extract_http_code(l_client_http->response, l_client_http->response_size);
             if(l_client_http->response_callback)
                 l_client_http->response_callback(
                         l_client_http->response + l_client_http->header_length,
                         l_response_size,
-                        l_client_http->callbacks_arg);
+                        l_client_http->callbacks_arg, l_status_code);
             l_client_http->were_callbacks_called = true;
         }else if (l_client_http->response_size){
             log_it(L_INFO, "Remote server disconnected with reply. Body is empty, only headers are in");
diff --git a/net/client/dap_client_pvt.c b/net/client/dap_client_pvt.c
index 70eabe795474ade1b3fcd1b3bcd8dde409578bec..8bc48faf8a04d642b64341c50f713523c3a3eff6 100644
--- a/net/client/dap_client_pvt.c
+++ b/net/client/dap_client_pvt.c
@@ -79,7 +79,7 @@ static void s_stream_ctl_error(dap_client_t *a_client, void *a_arg, int a_error)
 static void s_stage_stream_streaming(dap_client_t *a_client, void *a_arg);
 
 // STREAM stage callbacks
-static void s_request_response(void *a_response, size_t a_response_size, void * a_obj);
+static void s_request_response(void *a_response, size_t a_response_size, void * a_obj, http_status_code_t http_status);
 static void s_request_error(int a_error_code, void *a_obj);
 
 // stream callbacks
@@ -916,8 +916,9 @@ static void s_request_error(int a_err_code, void * a_obj)
  * @param a_response_size
  * @param a_obj
  */
-static void s_request_response(void * a_response, size_t a_response_size, void * a_obj)
+static void s_request_response(void * a_response, size_t a_response_size, void * a_obj, http_status_code_t a_http_code)
 {
+    (void)a_http_code;
     dap_client_pvt_t * l_client_pvt = (dap_client_pvt_t *) a_obj;
     assert(l_client_pvt);
     l_client_pvt->http_client = NULL;
diff --git a/net/client/include/dap_client_http.h b/net/client/include/dap_client_http.h
index ad98ce7d3bf83faeaed6cc5410d40b4e8f2f4289..190d52c52cdfbef4515d8d3243d75984292a05f4 100644
--- a/net/client/include/dap_client_http.h
+++ b/net/client/include/dap_client_http.h
@@ -24,13 +24,14 @@
 #include <stdint.h>
 #include <stddef.h>
 #include "dap_worker.h"
+#include "http_status_code.h"
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 typedef void (*dap_client_http_callback_error_t)(int, void *); // Callback for specific http client operations
 typedef void (*dap_client_http_callback_error_ext_t)(int,int , void *,size_t, void *); // Callback with extended error processing
-typedef void (*dap_client_http_callback_data_t)(void *, size_t, void *); // Callback for specific http client operations
+typedef void (*dap_client_http_callback_data_t)(void *, size_t, void *, http_status_code_t); // Callback for specific http client operations
 
 typedef struct dap_client_http {
     // TODO move unnessassary fields to dap_client_http_pvt privat structure
diff --git a/net/server/enc_server/dap_enc_http.c b/net/server/enc_server/dap_enc_http.c
index ff91ffc6ceecf91bd6cfb06633b0bf8f82930fb1..73a1073d10c44538428074c4be24fb9ed55225b5 100644
--- a/net/server/enc_server/dap_enc_http.c
+++ b/net/server/enc_server/dap_enc_http.c
@@ -46,7 +46,7 @@
 #include "include/dap_enc_http.h"
 #include "dap_enc_base64.h"
 #include "dap_enc_msrln.h"
-#include "include/http_status_code.h"
+#include "http_status_code.h"
 #include "dap_http_ban_list_client.h"
 #include "json.h"
 #include "dap_http_ban_list_client.h"
diff --git a/net/server/json_rpc/include/dap_json_rpc.h b/net/server/json_rpc/include/dap_json_rpc.h
index 1b0867e5a29de3a8f22ea919f0ee0fd463239620..f22d90f59b45a12f0de58c3b73e82cccb5446c26 100644
--- a/net/server/json_rpc/include/dap_json_rpc.h
+++ b/net/server/json_rpc/include/dap_json_rpc.h
@@ -25,7 +25,7 @@
 
 #pragma once
 #include "dap_http_simple.h"
-#include "include/http_status_code.h"
+#include "http_status_code.h"
 #include "dap_strfuncs.h"
 #include "dap_json_rpc_request.h"
 #include "dap_json_rpc_request_handler.h"
diff --git a/net/server/json_rpc/rpc_core/include/dap_json_rpc_response_handler.h b/net/server/json_rpc/rpc_core/include/dap_json_rpc_response_handler.h
index 9869db745e0de771a22f7fcb51b09d90a6c44b71..05d0232ea3bc2d15611a9101dc8bc33d718b4bb7 100644
--- a/net/server/json_rpc/rpc_core/include/dap_json_rpc_response_handler.h
+++ b/net/server/json_rpc/rpc_core/include/dap_json_rpc_response_handler.h
@@ -25,6 +25,7 @@
 #pragma once
 
 #include "dap_json_rpc_response.h"
+#include "http_status_code.h"
 #include "uthash.h"
 
 #ifdef __cplusplus
@@ -48,7 +49,7 @@ void dap_json_rpc_response_handler(dap_json_rpc_response_t *a_response);
 
 uint64_t dap_json_rpc_response_get_new_id(void);
 
-void dap_json_rpc_response_accepted(void *a_data, size_t a_size_data, void *a_obj);
+void dap_json_rpc_response_accepted(void *a_data, size_t a_size_data, void *a_obj, http_status_code_t http_code);
 
 #ifdef __cplusplus
 }
diff --git a/net/server/json_rpc/rpc_core/src/dap_json_rpc_response_handler.c b/net/server/json_rpc/rpc_core/src/dap_json_rpc_response_handler.c
index d84c9d4b9e2b2537d079f705de585c7718d63e1b..ed80414c12ef61591bb5e4ef5cbd2bb75e92a7e9 100644
--- a/net/server/json_rpc/rpc_core/src/dap_json_rpc_response_handler.c
+++ b/net/server/json_rpc/rpc_core/src/dap_json_rpc_response_handler.c
@@ -60,9 +60,10 @@ uint64_t dap_json_rpc_response_get_new_id(void)
     return l_ret;
 }
 
-void dap_json_rpc_response_accepted(void *a_data, size_t a_size_data, void *a_obj)
+void dap_json_rpc_response_accepted(void *a_data, size_t a_size_data, void *a_obj, http_status_code_t http_status)
 {
-    (void) a_obj;
+    (void)http_status;
+    (void)a_obj;
     log_it(L_NOTICE, "Pre handling response");
     char *l_str = DAP_NEW_SIZE(char, a_size_data);
     memcpy(l_str, a_data, a_size_data);