diff --git a/dap-sdk/net/core/dap_events_socket.c b/dap-sdk/net/core/dap_events_socket.c index c7acd09a14d39e45e357fc860321afdd39a69368..b84098efff64e8abf72f89fb3226e511cb748efe 100644 --- a/dap-sdk/net/core/dap_events_socket.c +++ b/dap-sdk/net/core/dap_events_socket.c @@ -748,7 +748,7 @@ void dap_events_socket_set_writable_unsafe( dap_events_socket_t *sc, bool a_is_r sc->ev.events = events; - if (sc->worker && sc->server->type != DAP_SERVER_UDP) + if ((!sc->server && sc->worker) || (sc->worker && sc->server->type != DAP_SERVER_UDP)) if ( epoll_ctl(sc->worker->epoll_fd, EPOLL_CTL_MOD, sc->socket, &sc->ev) ){ int l_errno = errno; char l_errbuf[128]; diff --git a/dap-sdk/net/core/dap_worker.c b/dap-sdk/net/core/dap_worker.c index 969ce8d232ba5291ccaaa8cb1c237dd7a53478db..f872bacc4a020c6ff95606249842b35863498239 100644 --- a/dap-sdk/net/core/dap_worker.c +++ b/dap-sdk/net/core/dap_worker.c @@ -193,10 +193,10 @@ void *dap_worker_thread(void *arg) break; case DESCRIPTOR_TYPE_SOCKET: l_must_read_smth = true; - if (l_cur->server->type == DAP_SERVER_TCP) { + if (!l_cur->server || l_cur->server->type == DAP_SERVER_TCP) { l_bytes_read = recv(l_cur->fd, (char *) (l_cur->buf_in + l_cur->buf_in_size), sizeof(l_cur->buf_in) - l_cur->buf_in_size, 0); - } else if (l_cur->server->type == DAP_SERVER_UDP) { + } else if (l_cur->server && l_cur->server->type == DAP_SERVER_UDP) { socklen_t l_size = sizeof(l_cur->remote_addr); l_bytes_read = recvfrom(l_cur->fd, (char *) (l_cur->buf_in + l_cur->buf_in_size), sizeof(l_cur->buf_in) - l_cur->buf_in_size, 0, @@ -311,10 +311,10 @@ void *dap_worker_thread(void *arg) int l_errno; switch (l_cur->type){ case DESCRIPTOR_TYPE_SOCKET: - if (l_cur->server->type == DAP_SERVER_TCP) { + if (!l_cur->server || l_cur->server->type == DAP_SERVER_TCP) { l_bytes_sent = send(l_cur->socket, (const char *)l_cur->buf_out, l_cur->buf_out_size, MSG_DONTWAIT | MSG_NOSIGNAL); - } else if (l_cur->server->type == DAP_SERVER_UDP) { + } else if (l_cur->server && l_cur->server->type == DAP_SERVER_UDP) { l_bytes_sent = sendto(l_cur->socket, (const char *)l_cur->buf_out, l_cur->buf_out_size, MSG_DONTWAIT | MSG_NOSIGNAL, (struct sockaddr *)&l_cur->remote_addr, sizeof(l_cur->remote_addr));