From e4af2d77fd9538c6e683f934459fcdc6cb1d3207 Mon Sep 17 00:00:00 2001 From: Haavard Date: Fri, 21 Apr 2017 21:24:52 +0000 Subject: handle sig int in separate thread this is needed since socket handle now masks all signals --- vespalib/src/tests/net/socket/socket_server.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'vespalib') diff --git a/vespalib/src/tests/net/socket/socket_server.cpp b/vespalib/src/tests/net/socket/socket_server.cpp index c14c69caa70..b6af5fa120b 100644 --- a/vespalib/src/tests/net/socket/socket_server.cpp +++ b/vespalib/src/tests/net/socket/socket_server.cpp @@ -38,6 +38,14 @@ void write_msg(SocketHandle &socket, const vespalib::string &msg) { } } +void kill_func() { + while (!SignalHandler::INT.check()) { + std::this_thread::sleep_for(std::chrono::seconds(1)); + } + fprintf(stderr, "exiting...\n"); + kill(getpid(), SIGTERM); +} + int main(int, char **) { ServerSocket server(0); if (!server.valid()) { @@ -57,7 +65,8 @@ int main(int, char **) { HostName::get().c_str(), server.address().port()); fprintf(stderr, "use ^C (SIGINT) to exit\n"); SignalHandler::INT.hook(); - while (!SignalHandler::INT.check()) { + std::thread kill_thread(kill_func); + for (;;) { SocketHandle socket = server.accept(); if (socket.valid()) { fprintf(stderr, "got connection from: %s (local address: %s)\n", -- cgit v1.2.3