From a26e75f5465aae68f6821d07cce56014e140e8bf Mon Sep 17 00:00:00 2001
From: Dmitriy Gerasimov <naeper@demlabs.net>
Date: Wed, 3 Mar 2021 16:27:18 +0700
Subject: [PATCH] [+] Some MacOS specifics [!] Fixed old bug in worker queue
 allocation

---
 dap-sdk/core/libdap.pri                      |  3 ++-
 dap-sdk/crypto/src/sig_picnic/sig_picnic.pri |  4 +++-
 dap-sdk/net/core/dap_events.c                |  5 ++++-
 dap-sdk/net/core/dap_worker.c                |  6 ++++--
 dap-sdk/net/libdap-net.pri                   |  1 +
 dap-sdk/net/server/libdap-net-server.pri     | 13 +++++++++++--
 6 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/dap-sdk/core/libdap.pri b/dap-sdk/core/libdap.pri
index 1103b77d27..5dc33a68f3 100755
--- a/dap-sdk/core/libdap.pri
+++ b/dap-sdk/core/libdap.pri
@@ -24,7 +24,8 @@ darwin {
     DEFINES += _GNU_SOURCE
     include(src/darwin/darwin.pri)
     DEFINES += DAP_OS_DARWIN DAP_OS_BSD
-    LIBS -= -lrt
+    LIBS+ = -lrt -ljson-c -lmagic
+    QMAKE_LIBDIR += /usr/local/lib
 }
 
 win32 {
diff --git a/dap-sdk/crypto/src/sig_picnic/sig_picnic.pri b/dap-sdk/crypto/src/sig_picnic/sig_picnic.pri
index e2bc692453..bba0efe724 100755
--- a/dap-sdk/crypto/src/sig_picnic/sig_picnic.pri
+++ b/dap-sdk/crypto/src/sig_picnic/sig_picnic.pri
@@ -5,7 +5,9 @@ HEADERS += $$PWD/hash.h \
     $$PWD/picnic_types.h \
     $$PWD/platform.h
 
-macos { HEADERS += $$PWD/macos_specific_endian.h }
+macos {
+    HEADERS += $$PWD/macos_specific_endian.h
+}
 
 SOURCES +=  $$PWD/hash.c \
     $$PWD/lowmc_constants.c \
diff --git a/dap-sdk/net/core/dap_events.c b/dap-sdk/net/core/dap_events.c
index 2b3cfbd9d4..a9fd6bc5e4 100644
--- a/dap-sdk/net/core/dap_events.c
+++ b/dap-sdk/net/core/dap_events.c
@@ -335,7 +335,10 @@ int dap_events_start( dap_events_t *a_events )
     // Link queues between
     for( uint32_t i = 0; i < s_threads_count; i++) {
         dap_worker_t * l_worker = s_workers[i];
-        l_worker->queue_es_io_input = DAP_NEW_S_SIZE(dap_events_socket_t*, sizeof (dap_events_socket_t*)* s_threads_count);
+        l_worker->queue_es_new_input = DAP_NEW_Z_SIZE(dap_events_socket_t*, sizeof (dap_events_socket_t*)* s_threads_count);
+        l_worker->queue_es_delete_input = DAP_NEW_Z_SIZE(dap_events_socket_t*, sizeof (dap_events_socket_t*)* s_threads_count);
+        l_worker->queue_es_reassign_input = DAP_NEW_Z_SIZE(dap_events_socket_t*, sizeof (dap_events_socket_t*)* s_threads_count);
+        l_worker->queue_es_io_input = DAP_NEW_Z_SIZE(dap_events_socket_t*, sizeof (dap_events_socket_t*)* s_threads_count);
         for( uint32_t n = 0; n < s_threads_count; n++) {
             l_worker->queue_es_new_input[n] = dap_events_socket_queue_ptr_create_input(s_workers[n]->queue_es_new);
             l_worker->queue_es_delete_input[n] = dap_events_socket_queue_ptr_create_input(s_workers[n]->queue_es_delete);
diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c
index d4adb1437e..c028bc7c94 100644
--- a/dap-sdk/net/core/dap_worker.c
+++ b/dap-sdk/net/core/dap_worker.c
@@ -219,9 +219,10 @@ void *dap_worker_thread(void *arg)
             l_cur = l_worker->poll_esocket[n];
             //log_it(L_DEBUG, "flags: returned events 0x%0X requested events 0x%0X",l_worker->poll[n].revents,l_worker->poll[n].events );
 #elif defined (DAP_EVENTS_CAPS_KQUEUE)
-        struct kevent * l_kevent_selected = l_cur->kqueue_event_catched = &l_worker->kqueue_events[n];
+        struct kevent * l_kevent_selected = &l_worker->kqueue_events[n];
         l_cur = (dap_events_socket_t*) l_kevent_selected->udata;
         assert(l_cur);
+        l_cur->kqueue_event_catched = l_kevent_selected;
 #ifndef DAP_OS_DARWIN
             u_int l_cur_flags = l_kevent_selected->flags;
 #else
@@ -316,7 +317,8 @@ void *dap_worker_thread(void *arg)
                 dap_events_socket_set_writable_unsafe(l_cur, false);
                 l_cur->buf_out_size = 0;
                 l_cur->flags |= DAP_SOCK_SIGNAL_CLOSE;
-                l_cur->callbacks.error_callback(l_cur, l_sock_err); // Call callback to process error event
+                if(l_cur->callbacks.error_callback)
+                    l_cur->callbacks.error_callback(l_cur, l_sock_err); // Call callback to process error event
             }
 
             /*if (l_flag_hup) {
diff --git a/dap-sdk/net/libdap-net.pri b/dap-sdk/net/libdap-net.pri
index 85f5070083..ee91fe4e2f 100755
--- a/dap-sdk/net/libdap-net.pri
+++ b/dap-sdk/net/libdap-net.pri
@@ -12,6 +12,7 @@ INCLUDEPATH += \
             $$PWD/../net/server/http_server/http_client/include \
             $$PWD/../net/server/http_server/include \
             $$PWD/../net/server/enc_server/include \
+            $$PWD/../net/server/notify_server/include \
             $$PWD/../net/server/json_rpc/include \
             $$PWD/../net/server/http_server \
             $$PWD/../net/stream/session/include \
diff --git a/dap-sdk/net/server/libdap-net-server.pri b/dap-sdk/net/server/libdap-net-server.pri
index 475e026cf2..d7080575da 100755
--- a/dap-sdk/net/server/libdap-net-server.pri
+++ b/dap-sdk/net/server/libdap-net-server.pri
@@ -12,14 +12,21 @@ SOURCES += $$PWD/enc_server/dap_enc_http.c \
     
 #http_server    
 HEADERS += $$PWD/http_server/include/dap_http.h \
+    $$PWD/http_server/include/dap_http_cache.h \
     $$PWD/http_server/include/dap_http_folder.h \
     $$PWD/http_server/include/http_status_code.h \
     $$PWD/http_server/include/dap_http_simple.h
 
 SOURCES += $$PWD/http_server/dap_http.c \
+    $$PWD/http_server/dap_http_cache.c \
     $$PWD/http_server/dap_http_folder.c \
     $$PWD/http_server/dap_http_simple.c
-    
+
+# notify server
+#notify_server
+HEADERS += $$PWD/notify_server/include/dap_notify_srv.h
+SOURCES += $$PWD/notify_server/src/dap_notify_srv.c
+
 include (../server/http_server/http_client/http.pri)
     
     
@@ -43,4 +50,6 @@ SOURCES += $$PWD/json_rpc/src/dap_json_rpc.c \
     $$PWD/json_rpc/src/dap_json_rpc_response_handler.c
     
 INCLUDEPATH += $$PWD/include
-
+darwin{
+    LIBS += -ljson-c -lmagic
+}
-- 
GitLab