From: David VaĊĦek Date: Mon, 14 Jul 2025 12:49:03 +0000 (+0200) Subject: server: discriminate between server running and answering (add the ServerAnswering... X-Git-Tag: v3.5.0~47^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be1db77fb5e4553d163e944cb3ad92737b1a1e7d;p=thirdparty%2Fknot-dns.git server: discriminate between server running and answering (add the ServerAnswering state) --- diff --git a/src/knot/server/server.c b/src/knot/server/server.c index f96331de1f..b88ba01717 100644 --- a/src/knot/server/server.c +++ b/src/knot/server/server.c @@ -1027,7 +1027,7 @@ int server_start(server_t *server, bool async) evsched_start(&server->sched); /* Start I/O handlers. */ - server->state |= ServerRunning; + server->state |= ServerRunning | ServerAnswering; for (int proto = IO_UDP; proto <= IO_XDP; ++proto) { if (server->handlers[proto].size > 0) { int ret = dt_start(server->handlers[proto].handler.unit); @@ -1046,6 +1046,7 @@ void server_wait(server_t *server) return; } + assert(!(server->state & ServerRunning)); evsched_join(&server->sched); worker_pool_join(server->workers); @@ -1054,6 +1055,8 @@ void server_wait(server_t *server) server_free_handler(&server->handlers[proto].handler); } } + + server->state &= ~ServerAnswering; } static int reload_conf(conf_t *new_conf) diff --git a/src/knot/server/server.h b/src/knot/server/server.h index a6236b787f..bbe5d923c5 100644 --- a/src/knot/server/server.h +++ b/src/knot/server/server.h @@ -36,8 +36,9 @@ typedef struct { * \brief Server state flags. */ typedef enum { - ServerIdle = 0 << 0, /*!< Server is idle. */ - ServerRunning = 1 << 0, /*!< Server is running. */ + ServerIdle = 0 << 0, /*!< Server is idle. */ + ServerRunning = 1 << 0, /*!< Server is running. */ + ServerAnswering = 1 << 1, /*!< Server is answering queries. */ } server_state_t; /*!