From 317d542afe44e3977be70d965ec94991826a9424 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Al=D0=B5x=D0=B0nder=20Lysik=D0=BEv?=
 <alexander.lysikov@demlabs.net>
Date: Tue, 8 Sep 2020 22:38:30 +0500
Subject: [PATCH] fixed vpn server

---
 dap-sdk/net/core/dap_events_socket.c        |  4 ++++
 dap-sdk/net/core/dap_worker.c               |  2 +-
 modules/service/vpn/dap_chain_net_srv_vpn.c | 11 ++++++-----
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c
index 8dcb64f5f3..542be22e87 100644
--- a/dap-sdk/net/core/dap_events_socket.c
+++ b/dap-sdk/net/core/dap_events_socket.c
@@ -885,6 +885,10 @@ size_t dap_events_socket_write_f_mt(dap_worker_t * a_w,dap_events_socket_t *a_es
  */
 size_t dap_events_socket_write_unsafe(dap_events_socket_t *sc, const void * data, size_t data_size)
 {
+    if(sc->buf_out_size>sizeof(sc->buf_out)){
+        log_it(L_DEBUG,"write buffer already overflow size=%u/max=%u", sc->buf_out_size, sizeof(sc->buf_out));
+        return 0;
+    }
     //log_it(L_DEBUG,"dap_events_socket_write %u sock data %X size %u", sc->socket, data, data_size );
      data_size = ((sc->buf_out_size+data_size)<(sizeof(sc->buf_out)))?data_size:(sizeof(sc->buf_out)-sc->buf_out_size );
      memcpy(sc->buf_out+sc->buf_out_size,data,data_size);
diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c
index c4f1e540a0..ea14d3a1fe 100644
--- a/dap-sdk/net/core/dap_worker.c
+++ b/dap-sdk/net/core/dap_worker.c
@@ -285,7 +285,7 @@ void *dap_worker_thread(void *arg)
                         l_cur->buf_out_zero_count = 0;
                 }
                 //for(total_sent = 0; total_sent < cur->buf_out_size;) { // If after callback there is smth to send - we do it
-                size_t l_bytes_sent =0;
+                ssize_t l_bytes_sent =0;
                 int l_errno;
                 switch (l_cur->type){
                     case DESCRIPTOR_TYPE_SOCKET:
diff --git a/modules/service/vpn/dap_chain_net_srv_vpn.c b/modules/service/vpn/dap_chain_net_srv_vpn.c
index cbd7a4603e..894407cc31 100644
--- a/modules/service/vpn/dap_chain_net_srv_vpn.c
+++ b/modules/service/vpn/dap_chain_net_srv_vpn.c
@@ -1377,16 +1377,17 @@ static size_t s_stream_session_esocket_send(dap_chain_net_srv_stream_session_t *
     }
 
     if(l_data_left_to_send){
-        if ( dap_events_socket_write_unsafe( l_es, a_data +l_direct_wrote,l_data_left_to_send
-                                             ) < l_data_left_to_send ){
-            log_it(L_WARNING,"Loosing data, probably buffers are overfilling, lost %zd bytes", l_data_left_to_send);
+        //if ( dap_events_socket_write_unsafe( l_es, a_data +l_direct_wrote,l_data_left_to_send
+        //                                     ) < l_data_left_to_send ){
+            //log_it(L_WARNING,"Loosing data, probably buffers are overfilling, lost %zd bytes", l_data_left_to_send);
+            log_it(L_WARNING,"Loosing data, lost %zd bytes", l_data_left_to_send);
             l_srv_session->stats.bytes_sent_lost += l_data_left_to_send;
             l_srv_session->stats.packets_sent_lost++;
-        }else{
+        /*}else{
             l_ret += l_data_left_to_send;
             l_srv_session->stats.packets_sent++;
             l_srv_session->stats.bytes_sent+= l_direct_wrote;
-        }
+        }*/
     }
     return l_ret;
 }
-- 
GitLab