From ba1c01dc0d134b1957075088ba6f590f69489dac Mon Sep 17 00:00:00 2001 From: Egor Date: Thu, 5 Jun 2025 02:22:20 +0300 Subject: [PATCH] make libuv required dependency --- Makefile | 3 --- config.example.mk | 1 - src/job.cpp | 45 ++++----------------------------- src/main.cpp | 4 +-- src/netpoll.cpp | 64 ----------------------------------------------- 5 files changed, 6 insertions(+), 111 deletions(-) diff --git a/Makefile b/Makefile index 1d0d8d6..73bd84f 100644 --- a/Makefile +++ b/Makefile @@ -19,10 +19,7 @@ SOURCES := $(ircd_SOURCES) $(filter-out $(ircd_SOURCES),$(setpass_SOURCES)) -include config.mk -ifdef USE_UV -CXXFLAGS += -DHAS_UV WANTLIBS += libuv -endif ifdef USE_TLS CXXFLAGS += -DHAS_TLS diff --git a/config.example.mk b/config.example.mk index 0ecbd90..1828d37 100644 --- a/config.example.mk +++ b/config.example.mk @@ -3,6 +3,5 @@ CXX=clang++ WARNS=-Wall -Wextra -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes #-Wmissing-variable-declarations CXXFLAGS=$(WARNS) -std=c++20 -D_GNU_SOURCE -USE_UV=1 USE_TLS=1 USE_LUA=1 diff --git a/src/job.cpp b/src/job.cpp index ecca38f..d8f2df4 100644 --- a/src/job.cpp +++ b/src/job.cpp @@ -6,6 +6,7 @@ #include #include #include +#include struct jobent { struct client_data *client; @@ -20,18 +21,10 @@ static int joblen = 0, jobcap = 0; static pid_t current_child = -1; static int current_result = 0; -#ifdef HAS_UV -#include static uv_signal_t uvsigchld, uvsigint; -#define HANDLE_ARG [[maybe_unused]] uv_signal_t *handle, -#else -#define HANDLE_ARG -#endif -static void job_child(HANDLE_ARG [[maybe_unused]] int signum) +static void job_child([[maybe_unused]] uv_signal_t *handle, [[maybe_unused]] int signum) { - (void)signum; - int old_errno = errno; int wstatus; pid_t pid; while ((pid = waitpid(-1, &wstatus, WNOHANG)) > 0) { @@ -40,12 +33,11 @@ static void job_child(HANDLE_ARG [[maybe_unused]] int signum) current_result = WIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : -1; } } - errno = old_errno; } -static void job_int(HANDLE_ARG [[maybe_unused]] int signum) +static void job_int([[maybe_unused]] uv_signal_t *handle, [[maybe_unused]] int signum) { - extern volatile sig_atomic_t is_siginted; - is_siginted = 1; + extern bool is_siginted; + is_siginted = true; } void job_init(void) { @@ -57,30 +49,15 @@ void job_init(void) if (sigaction(SIGPIPE, &sa, NULL) == -1) perror("sigaction"); -#ifndef HAS_UV - sa.sa_handler = job_child; - sa.sa_flags = SA_RESTART; - if (sigaction(SIGCHLD, &sa, NULL) == -1) - perror("sigaction"); - - sa.sa_handler = job_int; - /* Note that SA_RESTART doesn't affect select/poll/epoll_wait. */ - sa.sa_flags = SA_RESETHAND | SA_RESTART; - if (sigaction(SIGINT, &sa, NULL) == -1) - perror("sigaction"); -#else uv_signal_init(uv_default_loop(), &uvsigchld); uv_signal_start(&uvsigchld, job_child, SIGCHLD); uv_signal_init(uv_default_loop(), &uvsigint); uv_signal_start_oneshot(&uvsigint, job_int, SIGINT); -#endif } void job_fini(void) { -#ifdef HAS_UV uv_close((uv_handle_t *)&uvsigchld, 0); uv_close((uv_handle_t *)&uvsigint, 0); -#endif } static void job_process(void) { @@ -109,23 +86,11 @@ static void job_process(void) } void job_process_begin(void) { -#ifndef HAS_UV - sigset_t mask; - sigemptyset(&mask); - sigaddset(&mask, SIGCHLD); - sigprocmask(SIG_BLOCK, &mask, 0); -#endif job_process(); } void job_process_end(void) { job_process(); -#ifndef HAS_UV - sigset_t mask; - sigemptyset(&mask); - sigaddset(&mask, SIGCHLD); - sigprocmask(SIG_UNBLOCK, &mask, 0); -#endif } void job_add(struct client_data *cl, jobproc_t job, contproc_t then, char *data, size_t len) diff --git a/src/main.cpp b/src/main.cpp index 1c8058d..4e736dc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,9 +8,7 @@ #include static int is_running = 1; - -#include -volatile sig_atomic_t is_siginted = 0; +bool is_siginted = 0; // Client linked list struct client_data *clients = NULL, *dyingclients = NULL; diff --git a/src/netpoll.cpp b/src/netpoll.cpp index 2d447e9..986c5d3 100644 --- a/src/netpoll.cpp +++ b/src/netpoll.cpp @@ -3,73 +3,13 @@ #include "netpoll.h" #include "util.h" -#ifdef HAS_UV #include -#endif namespace netpoll { #define NETPOLL_MAXFDS 1024 static struct net_pollfd fds[NETPOLL_MAXFDS] = {}; static int nfds = 0; -#ifndef HAS_UV -static struct pollfd pollfds[NETPOLL_MAXFDS] = {}; -static int lastptr = 0; -void init(void) -{ -} -void fini(void) -{ -} -static void add_impl(int i) -{ - memmove(pollfds+i+1, pollfds+i, sizeof(pollfds[0])*(nfds-1-i)); - pollfds[i].fd = fds[i].fd; - pollfds[i].events = 0; - pollfds[i].revents = 0; - if (lastptr >= i) - lastptr++; -} -static void del_impl(int i) -{ - memmove(pollfds+i, pollfds+i+1, sizeof(pollfds[0])*(nfds-(i+1))); - if (lastptr > i) - lastptr--; -} -static void reg_impl(int i, int ev) -{ - pollfds[i].events = 0; - if (ev & NETPOLL_IN) - pollfds[i].events = POLLIN; - if (ev & NETPOLL_OUT) - pollfds[i].events = POLLOUT; -} -int begin(void) -{ - sigset_t mask; - sigprocmask(0, 0, &mask); - sigdelset(&mask, SIGCHLD); - int rv = ppoll(pollfds, nfds, 0, &mask); - lastptr = 0; - return rv; -} -int get(struct net_pollfd *out) -{ - int ev = 0; - while (!ev) { - if (lastptr == nfds) - return 0; - int pev = pollfds[lastptr].revents; - if (pev & POLLIN) - ev |= NETPOLL_IN; - if (pev & POLLOUT) - ev |= NETPOLL_OUT; - lastptr++; - } - *out = fds[lastptr-1]; - return ev; -} -#else #define container_of(ptr, type, member) ((type *)((char *)(ptr) - offsetof(type, member))) struct polldata { uv_poll_t uv; @@ -187,7 +127,6 @@ int get(struct net_pollfd *out) *out = fds[lastptr-1]; return ev; } -#endif static int search(SOCKET fd) { int l = 0, r = nfds; @@ -229,9 +168,6 @@ void del_and_close(SOCKET fd) del_impl(i); memmove(fds+i, fds+i+1, sizeof(fds[0])*(nfds-(i+1))); nfds--; -#ifndef HAS_UV - closesocket(fd); -#endif } void reg(SOCKET fd, int ev) { -- 2.56.0