From 69d0c29a5a9bea01ccf2fb05f350137388ed337b Mon Sep 17 00:00:00 2001
From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net>
Date: Mon, 31 Aug 2020 12:31:57 +0700
Subject: [PATCH] [*] Some worker fixes

---
 dap-sdk/net/client/dap_client_pvt.c | 10 ++++++----
 dap-sdk/net/core/dap_worker.c       |  2 +-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/dap-sdk/net/client/dap_client_pvt.c b/dap-sdk/net/client/dap_client_pvt.c
index 8486ad41fd..eea06da029 100644
--- a/dap-sdk/net/client/dap_client_pvt.c
+++ b/dap-sdk/net/client/dap_client_pvt.c
@@ -479,6 +479,8 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt)
             a_client_pvt->stream_es = dap_events_socket_wrap_no_add(a_client_pvt->events,
                     a_client_pvt->stream_socket, &l_s_callbacks);
             dap_worker_t * l_worker = dap_events_worker_get_auto();
+            assert(l_worker);
+            assert(l_worker->_inheritor);
             a_client_pvt->stream_worker = DAP_STREAM_WORKER(l_worker);
             // add to dap_worker
             dap_events_socket_assign_on_worker_mt(a_client_pvt->stream_es, l_worker);
@@ -490,7 +492,7 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt)
 
             // new added, whether it is necessary?
             a_client_pvt->stream->session->key = a_client_pvt->stream_key;
-            a_client_pvt->stream_worker = (dap_stream_worker_t*) l_worker->_inheritor;
+            a_client_pvt->stream->stream_worker = a_client_pvt->stream_worker;
 
 
             // connect
@@ -511,8 +513,8 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt)
                         sizeof(struct sockaddr_in))) != -1) {
                     a_client_pvt->stream_es->flags &= ~DAP_SOCK_SIGNAL_CLOSE;
                     //s_set_sock_nonblock(a_client_pvt->stream_socket, false);
-                    log_it(L_INFO, "Remote address connected (%s:%u) with sock_id %d", a_client_pvt->uplink_addr,
-                            a_client_pvt->uplink_port, a_client_pvt->stream_socket);
+                    log_it(L_INFO, "Remote address connected (%s:%u) with sock_id %d (assign on worker #%u)", a_client_pvt->uplink_addr,
+                            a_client_pvt->uplink_port, a_client_pvt->stream_socket, l_worker->id);
                     a_client_pvt->stage_status = STAGE_STATUS_DONE;
                 }
                 else {
@@ -549,7 +551,7 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt)
 
             const char *l_add_str = "";
 
-            dap_events_socket_write_f_mt(a_client_pvt->stream_es->worker, a_client_pvt->stream_es, "GET /%s HTTP/1.1\r\n"
+            dap_events_socket_write_f_mt(a_client_pvt->stream_worker->worker, a_client_pvt->stream_es, "GET /%s HTTP/1.1\r\n"
                                                                 "Host: %s:%d%s\r\n"
                                                                 "\r\n",
                                        l_full_path, a_client_pvt->uplink_addr, a_client_pvt->uplink_port, l_add_str);
diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c
index ff88a74640..79371f667e 100644
--- a/dap-sdk/net/core/dap_worker.c
+++ b/dap-sdk/net/core/dap_worker.c
@@ -78,7 +78,7 @@ void *dap_worker_thread(void *arg)
     dap_cpu_assign_thread_on(l_worker->id);
     struct sched_param l_shed_params;
     l_shed_params.sched_priority = 0;
-    pthread_setschedparam(pthread_self(),SCHED_FIFO ,&l_shed_params);
+    pthread_setschedparam(pthread_self(),SCHED_OTHER ,&l_shed_params);
 
     l_worker->queue_es_new = dap_events_socket_create_type_queue_ptr_unsafe( l_worker, s_queue_new_es_callback);
     l_worker->queue_es_delete = dap_events_socket_create_type_queue_ptr_unsafe( l_worker, s_queue_delete_es_callback);
-- 
GitLab