diff --git a/core/src/dird/socket_server.cc b/core/src/dird/socket_server.cc index a016e5eb9b6..b977f897fd4 100644 --- a/core/src/dird/socket_server.cc +++ b/core/src/dird/socket_server.cc @@ -50,7 +50,7 @@ static alist *sock_fds = NULL; static pthread_t tcp_server_tid; static ConnectionPool *client_connections = NULL; -static std::atomic server_state; +static std::atomic server_state(BnetServerState::kUndefined); struct s_addr_port { char *addr; @@ -146,7 +146,6 @@ bool StartSocketServer(dlist *addrs) if (client_connections == nullptr) { client_connections = New(ConnectionPool()); } - std::atomic_init(&server_state, (int)kUndefined); if ((status = pthread_create(&tcp_server_tid, nullptr, connect_thread, (void *)myaddrs)) != 0) { BErrNo be; Emsg1(M_ABORT, 0, _("Cannot create UA thread: %s\n"), be.bstrerror(status)); @@ -156,12 +155,12 @@ bool StartSocketServer(dlist *addrs) int wait_ms = 100; do { Bmicrosleep(0, wait_ms * 1000); - if (server_state.load() == kStarted) { + if (server_state.load() == BnetServerState::kStarted) { break; } } while (--tries); - if (server_state != kStarted) { + if (server_state != BnetServerState::kStarted) { if (client_connections) { delete (client_connections); client_connections = nullptr; diff --git a/core/src/lib/bnet_server_tcp.cc b/core/src/lib/bnet_server_tcp.cc index d9709bc6c15..4658babf0eb 100644 --- a/core/src/lib/bnet_server_tcp.cc +++ b/core/src/lib/bnet_server_tcp.cc @@ -146,7 +146,7 @@ void BnetThreadServerTcp(dlist *addr_list, void *HandleConnectionRequest(ConfigurationParser *config, void *bsock), ConfigurationParser *config, - std::atomic *const server_state) + std::atomic *const server_state) { int newsockfd, status; socklen_t clilen; @@ -169,7 +169,7 @@ void BnetThreadServerTcp(dlist *addr_list, BNetThreadServerCleanupObject cleanup_object(sockfds, client_wq); - if (server_state) { server_state->store(kStarting); } + if (server_state) { server_state->store(BnetServerState::kStarting); } /* * Remove any duplicate addresses. @@ -254,7 +254,7 @@ void BnetThreadServerTcp(dlist *addr_list, BErrNo be; Emsg2(M_ERROR, 0, _("Cannot bind port %d: ERR=%s.\n"), ntohs(fd_ptr->port), be.bstrerror()); - if (server_state) { server_state->store(kError); } + if (server_state) { server_state->store(BnetServerState::kError); } return; } @@ -301,7 +301,7 @@ void BnetThreadServerTcp(dlist *addr_list, } #endif - if (server_state) { server_state->store(kStarted); } + if (server_state) { server_state->store(BnetServerState::kStarted); } while (!quit) { #ifndef HAVE_POLL @@ -322,7 +322,7 @@ void BnetThreadServerTcp(dlist *addr_list, if (errno == EINTR) { continue; } - if(server_state) { server_state->store(kError); } + if(server_state) { server_state->store(BnetServerState::kError); } Emsg1(M_FATAL, 0, _("Error in select: %s\n"), be.bstrerror()); break; } @@ -413,5 +413,5 @@ void BnetThreadServerTcp(dlist *addr_list, } } } - if(server_state) { server_state->store(kEnded); } + if(server_state) { server_state->store(BnetServerState::kEnded); } } diff --git a/core/src/lib/bnet_server_tcp.h b/core/src/lib/bnet_server_tcp.h index ebb379371d3..ce686b52648 100644 --- a/core/src/lib/bnet_server_tcp.h +++ b/core/src/lib/bnet_server_tcp.h @@ -25,13 +25,13 @@ class ConfigurationParser; -typedef enum { +enum class BnetServerState { kUndefined = 0, kStarting, kError, kStarted, kEnded -}BnetServerState; +}; void BnetThreadServerTcp(dlist *addr_list, int max_clients, @@ -41,7 +41,7 @@ void BnetThreadServerTcp(dlist *addr_list, void *HandleConnectionRequest(ConfigurationParser *config, void *bsock), ConfigurationParser *config, - std::atomic * const server_state = nullptr); + std::atomic * const server_state = nullptr); void BnetStopAndWaitForThreadServerTcp(pthread_t tid); #endif // BAREOS_LIB_BNET_SEVER_TCP_H_