diff --git a/epoll_socket.hpp b/epoll_socket.hpp index 989499b..717f95e 100644 --- a/epoll_socket.hpp +++ b/epoll_socket.hpp @@ -34,8 +34,11 @@ public: std::array events; while (running_) { - int num_events = epoll_wait(epoll_fd_, events.data(), MAX_EVENTS, -1); - if (num_events == -1) break; + int num_events = epoll_wait(epoll_fd_, events.data(), MAX_EVENTS, 1000); + if (num_events == -1) { + if (errno == EINTR) continue; + break; + } for (int i = 0; i < num_events; ++i) { if (events[i].data.fd == server_fd_) { @@ -153,4 +156,4 @@ private: inline void handle_client_event(int client_fd) { if (on_data_) on_data_(client_fd); } -}; +}; \ No newline at end of file diff --git a/main.cpp b/main.cpp index 9496b57..7659fe1 100644 --- a/main.cpp +++ b/main.cpp @@ -7,8 +7,7 @@ HttpServer* server = nullptr; void signal_handler(int sig) { if (server) { std::cout << "\nShutting down server...\n"; - delete server; - exit(0); + server->stop(); } } @@ -87,4 +86,4 @@ int main() { delete server; return 0; -} +} \ No newline at end of file