From 287d1967a5041f3b39e5c00e08cceb57172dca6b Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Mon, 4 Jul 2016 07:24:04 -0700 Subject: [PATCH] http: Properly stop server on stop server. --- UI/RemoteISOScreen.cpp | 10 +++++++--- ext/native/net/http_server.cpp | 12 +++++++++++- ext/native/net/http_server.h | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/UI/RemoteISOScreen.cpp b/UI/RemoteISOScreen.cpp index 82a0bb17db..7991256b52 100644 --- a/UI/RemoteISOScreen.cpp +++ b/UI/RemoteISOScreen.cpp @@ -79,7 +79,7 @@ static void RegisterServer(int port) { static void ExecuteServer() { setCurrentThreadName("HTTPServer"); - net::Init(); + net::AutoInit netInit; auto http = new http::Server(new threading::SameThreadExecutor()); std::map paths; @@ -156,7 +156,11 @@ static void ExecuteServer() { } if (!http->Listen(g_Config.iRemoteISOPort)) { - http->Listen(0); + if (!http->Listen(0)) { + ERROR_LOG(COMMON, "Unable to listen on any port"); + UpdateStatus(ServerStatus::STOPPED); + return; + } } UpdateStatus(ServerStatus::RUNNING); @@ -173,7 +177,7 @@ static void ExecuteServer() { } } - net::Shutdown(); + http->Stop(); UpdateStatus(ServerStatus::STOPPED); } diff --git a/ext/native/net/http_server.cpp b/ext/native/net/http_server.cpp index 9221d9d37a..27de698b9c 100644 --- a/ext/native/net/http_server.cpp +++ b/ext/native/net/http_server.cpp @@ -162,6 +162,10 @@ bool Server::Listen(int port) { } bool Server::RunSlice(double timeout) { + if (listener_ < 0 || port_ == 0) { + return false; + } + if (timeout <= 0.0) { timeout = 86400.0; } @@ -182,7 +186,9 @@ bool Server::RunSlice(double timeout) { } bool Server::Run(int port) { - Listen(port); + if (!Listen(port)) { + return false; + } while (true) { RunSlice(0.0); @@ -192,6 +198,10 @@ bool Server::Run(int port) { return true; } +void Server::Stop() { + closesocket(listener_); +} + void Server::HandleConnection(int conn_fd) { Request request(conn_fd); if (!request.IsOK()) { diff --git a/ext/native/net/http_server.h b/ext/native/net/http_server.h index 1658e45d18..9035015f98 100644 --- a/ext/native/net/http_server.h +++ b/ext/native/net/http_server.h @@ -74,6 +74,7 @@ public: // for a new connection to handle. bool RunSlice(double timeout); bool Listen(int port); + void Stop(); void RegisterHandler(const char *url_path, UrlHandlerFunc handler); void SetFallbackHandler(UrlHandlerFunc handler);