diff --git a/enc_server/dap_enc_http.c b/enc_server/dap_enc_http.c
index 58116090b3db649397541354019f7238e0c59b38..5b5f1b4113cf7c87af7e9b98791d60fbb23ab583 100644
--- a/enc_server/dap_enc_http.c
+++ b/enc_server/dap_enc_http.c
@@ -107,23 +107,30 @@ void enc_http_add_proc(struct dap_http * sh, const char * url)
     dap_http_simple_proc_add(sh,url,40000,enc_http_proc);
 }
 
-enc_http_delegate_t *enc_http_request_decode(struct dap_http_simple *cl_st)
+/**
+ * @brief enc_http_request_decode
+ * @param a_http_simple
+ * @return
+ */
+enc_http_delegate_t *enc_http_request_decode(struct dap_http_simple *a_http_simple)
 {
 
-    dap_enc_key_t * key= dap_enc_ks_find_http(cl_st->http);
-    if(key){
+    dap_enc_key_t * l_key= dap_enc_ks_find_http(a_http_simple->http);
+    if(l_key){
         enc_http_delegate_t * dg = DAP_NEW_Z(enc_http_delegate_t);
-        dg->key=key;
-        dg->http=cl_st->http;
+        dg->key=l_key;
+        dg->http=a_http_simple->http;
         dg->isOk=true;
 
-        strncpy(dg->action,cl_st->http->action,sizeof(dg->action)-1);
-        if(cl_st->http->in_cookie[0])
-            dg->cookie=strdup(cl_st->http->in_cookie);
+        strncpy(dg->action,a_http_simple->http->action,sizeof(dg->action)-1);
+        if(a_http_simple->http->in_cookie[0])
+            dg->cookie=strdup(a_http_simple->http->in_cookie);
 
-        if(cl_st->request_size){
-            //  dg->request=calloc(1,cl_st->request_size+1);
-            dg->request_size=dap_enc_decode(key, cl_st->request, cl_st->request_size,&dg->request,DAP_ENC_DATA_TYPE_RAW);
+        if(a_http_simple->request_size){
+            size_t l_dg_request_size_max = a_http_simple->request_size;
+            dg->request= DAP_NEW_SIZE( void , l_dg_request_size_max+1);
+            dg->request_size=dap_enc_decode(l_key, a_http_simple->request, a_http_simple->request_size,dg->request,
+                                            l_dg_request_size_max, DAP_ENC_DATA_TYPE_RAW);
             dg->request_str[dg->request_size] = 0;
             log_it(L_DEBUG,"Request after decode '%s'",dg->request_str);
             // log_it(L_DEBUG,"Request before decode: '%s' after decode '%s'",cl_st->request_str,dg->request_str);
@@ -136,25 +143,25 @@ enc_http_delegate_t *enc_http_request_decode(struct dap_http_simple *cl_st)
         else
             l_enc_type = DAP_ENC_DATA_TYPE_B64;
 
-        size_t url_path_size=strlen(cl_st->http->url_path);
-        if(url_path_size){
-            //    dg->url_path=calloc(1,url_path_size+1);
-            dg->url_path_size=dap_enc_decode(key, cl_st->http->url_path,url_path_size,&dg->url_path,l_enc_type);
+        size_t l_url_path_size_max = strlen(a_http_simple->http->url_path);
+        if(l_url_path_size_max){
+            dg->url_path= DAP_NEW_SIZE(char,l_url_path_size_max+1);
+            dg->url_path_size=dap_enc_decode(l_key, a_http_simple->http->url_path,l_url_path_size_max,dg->url_path, dg->url_path_size, l_enc_type);
             dg->url_path[dg->url_path_size] = 0;
             log_it(L_DEBUG,"URL path after decode '%s'",dg->url_path );
             // log_it(L_DEBUG,"URL path before decode: '%s' after decode '%s'",cl_st->http->url_path,dg->url_path );
         }
 
-        size_t in_query_size=strlen(cl_st->http->in_query_string);
+        size_t l_in_query_size=strlen(a_http_simple->http->in_query_string);
 
-        if(in_query_size){
-            // dg->in_query=calloc(1,in_query_size+1);
-            dg->in_query_size=dap_enc_decode(key, cl_st->http->in_query_string,in_query_size,&dg->in_query,l_enc_type);
+        if(l_in_query_size){
+            dg->in_query= DAP_NEW_SIZE(char, l_in_query_size+1);
+            dg->in_query_size=dap_enc_decode(l_key, a_http_simple->http->in_query_string,l_in_query_size,dg->in_query,l_in_query_size,  l_enc_type);
             dg->in_query[dg->in_query_size] = 0;
             log_it(L_DEBUG,"Query string after decode '%s'",dg->in_query);
         }
-        dg->response = calloc(1,cl_st->reply_size_max+1);
-        dg->response_size_max=cl_st->reply_size_max;
+        dg->response = calloc(1,a_http_simple->reply_size_max+1);
+        dg->response_size_max=a_http_simple->reply_size_max;
 
         return dg;
     }else{
@@ -163,18 +170,29 @@ enc_http_delegate_t *enc_http_request_decode(struct dap_http_simple *cl_st)
     }
 }
 
-void enc_http_reply_encode(struct dap_http_simple *cl_st,enc_http_delegate_t * dg)
+/**
+ * @brief enc_http_reply_encode
+ * @param a_http_simple
+ * @param a_http_delegate
+ */
+void enc_http_reply_encode(struct dap_http_simple *a_http_simple,enc_http_delegate_t * a_http_delegate)
 {
-    dap_enc_key_t * key = dap_enc_ks_find_http(cl_st->http);
+    dap_enc_key_t * key = dap_enc_ks_find_http(a_http_simple->http);
     if( key == NULL ) {
         log_it(L_ERROR, "Can't find http key.");
         return;
     }
-    if(dg->response){
+    if(a_http_delegate->response){
+
+        if(a_http_simple->reply)
+            free(a_http_simple->reply);
 
-        if(cl_st->reply)
-            free(cl_st->reply);
-        cl_st->reply_size = dap_enc_code(dg->key,dg->response,dg->response_size,&cl_st->reply,DAP_ENC_DATA_TYPE_RAW);
+        size_t l_reply_size_max = a_http_delegate->response_size*2; // TODO make proper size calculations
+        a_http_simple->reply = DAP_NEW_SIZE(void,l_reply_size_max);
+        a_http_simple->reply_size = dap_enc_code( a_http_delegate->key,
+                                                  a_http_delegate->response, a_http_delegate->response_size,
+                                                  a_http_simple->reply, l_reply_size_max,
+                                                  DAP_ENC_DATA_TYPE_RAW);
     }
 
 }
diff --git a/enc_server/dap_enc_http.h b/enc_server/dap_enc_http.h
index f4f2a733df5415c5123d7014d41faabd763fc2c6..9ef627ff5178b14855db1e4f748f91bf7f7bc06c 100644
--- a/enc_server/dap_enc_http.h
+++ b/enc_server/dap_enc_http.h
@@ -62,19 +62,19 @@ typedef struct enc_http_delegate{
     struct dap_http_client *http;
 } enc_http_delegate_t;
 
-extern int enc_http_init();
-extern void enc_http_deinit();
+int enc_http_init();
+void enc_http_deinit();
 
-extern size_t enc_http_reply(enc_http_delegate_t * dg, void * data, size_t data_size);
-extern size_t enc_http_reply_f(enc_http_delegate_t * dg, const char * data, ...);
+size_t enc_http_reply(enc_http_delegate_t * dg, void * data, size_t data_size);
+size_t enc_http_reply_f(enc_http_delegate_t * dg, const char * data, ...);
 
 
-extern enc_http_delegate_t *enc_http_request_decode(struct dap_http_simple *cl_st);
+enc_http_delegate_t *enc_http_request_decode(struct dap_http_simple *a_http_simple);
 
-extern void enc_http_reply_encode(struct dap_http_simple *cl_st,enc_http_delegate_t * dg);
+void enc_http_reply_encode(struct dap_http_simple *a_http_simple,enc_http_delegate_t * a_http_delegate);
 
-extern void enc_http_delegate_delete(enc_http_delegate_t * dg);
+void enc_http_delegate_delete(enc_http_delegate_t * dg);
 
-extern void enc_http_add_proc(struct dap_http * sh, const char * url);
+void enc_http_add_proc(struct dap_http * sh, const char * url);
 
 #endif
diff --git a/http_server/dap_http_simple.c b/http_server/dap_http_simple.c
index 94689481f300f384e39c5655bb7a94fe886651df..cf5db6bc469e8b7cf2025dd47bf7a23234f36ed0 100644
--- a/http_server/dap_http_simple.c
+++ b/http_server/dap_http_simple.c
@@ -240,18 +240,23 @@ void dap_http_simple_data_write(dap_http_client_t * a_http_client,void * a_arg)
     (void) a_arg;
     dap_http_simple_t * cl_st = DAP_HTTP_SIMPLE(a_http_client);
 
-    cl_st->reply_sent += dap_client_remote_write(a_http_client->client,
-                                          cl_st->reply + cl_st->reply_sent,
-                                          a_http_client->out_content_length - cl_st->reply_sent);
+    if ( cl_st->reply ) {
+        cl_st->reply_sent += dap_client_remote_write(a_http_client->client,
+                                              cl_st->reply + cl_st->reply_sent,
+                                              a_http_client->out_content_length - cl_st->reply_sent);
+
+        if(cl_st->reply_sent>=a_http_client->out_content_length) {
+            log_it(L_INFO, "All the reply (%u) is sent out",a_http_client->out_content_length);
+            //cl_ht->client->signal_close=cl_ht->keep_alive;
+            a_http_client->client->signal_close=true;
+            //dap_client_ready_to_write(cl_ht->client,false);
+        }
 
-    if(cl_st->reply_sent>=a_http_client->out_content_length) {
-        log_it(L_INFO, "All the reply (%u) is sent out",a_http_client->out_content_length);
-        //cl_ht->client->signal_close=cl_ht->keep_alive;
+        free(cl_st->reply);
+    }else{
         a_http_client->client->signal_close=true;
-        //dap_client_ready_to_write(cl_ht->client,false);
+        log_it(L_WARNING,"No reply to write, close connection");
     }
-
-    free(cl_st->reply);
 }
 
 /**
diff --git a/udp_server/dap_udp_client.c b/udp_server/dap_udp_client.c
index dfdc939662026c5ba84aefcbbf39382624444dcc..78249b2b33333bedb31ffef2e9fe74d84bade79c 100644
--- a/udp_server/dap_udp_client.c
+++ b/udp_server/dap_udp_client.c
@@ -89,8 +89,8 @@ dap_client_remote_t * dap_udp_client_create(dap_server_t * sh, ev_io* w_client,
  */
 void dap_udp_client_get_address(dap_client_remote_t *client, unsigned int* host,unsigned short* port){
     dap_udp_client_t* udp_client = DAP_UDP_CLIENT(client);    
-    *host = udp_client->host_key >> 32;
-    *port = udp_client->host_key - (*host<<32);
+    *host =  udp_client->host_key >> 32;
+    *port =  udp_client->host_key - ( *host<<32);
 }
 
 /**