diff --git a/3rdparty/asio/include/asio/detail/win_iocp_socket_accept_op.hpp b/3rdparty/asio/include/asio/detail/win_iocp_socket_accept_op.hpp index fe54da43840..c25cb172484 100644 --- a/3rdparty/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +++ b/3rdparty/asio/include/asio/detail/win_iocp_socket_accept_op.hpp @@ -53,8 +53,8 @@ public: protocol_(protocol), peer_endpoint_(peer_endpoint), enable_connection_aborted_(enable_connection_aborted), - cancel_requested_(0), proxy_op_(0), + cancel_requested_(0), handler_(ASIO_MOVE_CAST(Handler)(handler)), work_(handler_, io_ex) { diff --git a/src/emu/http.cpp b/src/emu/http.cpp index 42d8120d32e..f36244e31ac 100644 --- a/src/emu/http.cpp +++ b/src/emu/http.cpp @@ -331,7 +331,7 @@ http_manager::http_manager(bool active, short port, const char *root) }; m_server->on_upgrade = [this](auto socket, auto request) { - auto connection = std::make_shared(socket); + auto connection = std::make_shared(*m_io_context, socket); connection->method = std::move(request->method); connection->path = std::move(request->path); connection->http_version = std::move(request->http_version); diff --git a/src/lib/util/server_ws_impl.hpp b/src/lib/util/server_ws_impl.hpp index dab73b63a67..c1ba9f1a392 100644 --- a/src/lib/util/server_ws_impl.hpp +++ b/src/lib/util/server_ws_impl.hpp @@ -74,10 +74,10 @@ namespace webpp { public: virtual ~Connection() {} - explicit Connection(const std::shared_ptr &socket) : super(0), socket(socket), strand(socket->get_io_service()), closed(false) { } + Connection(asio::io_context &context, const std::shared_ptr &socket) : super(0), socket(socket), strand(context), closed(false) { } private: - explicit Connection(socket_type *socket): super(0), socket(socket), strand(socket->get_io_service()), closed(false) { } + Connection(asio::io_context &context, socket_type *socket): super(0), socket(socket), strand(context), closed(false) { } class SendData { public: @@ -361,7 +361,7 @@ namespace webpp { std::shared_ptr get_timeout_timer(const std::shared_ptr &connection, size_t seconds) { if (seconds == 0) return nullptr; - auto timer = std::make_shared(connection->socket->get_io_service()); + auto timer = std::make_shared(connection->socket->get_executor()); timer->expires_at(std::chrono::system_clock::now() + std::chrono::seconds(static_cast(seconds))); timer->async_wait([connection](const std::error_code& ec){ if(!ec) { @@ -652,7 +652,7 @@ namespace webpp { void timer_idle_init(const std::shared_ptr &connection) { if(config.timeout_idle>0) { - connection->timer_idle= std::make_unique(connection->socket->get_io_service()); + connection->timer_idle= std::make_unique(connection->socket->get_executor()); connection->timer_idle->expires_from_now(std::chrono::seconds(static_cast(config.timeout_idle))); timer_idle_expired_function(connection); } @@ -693,7 +693,7 @@ namespace webpp { void accept() override { //Create new socket for this connection (stored in Connection::socket) //Shared_ptr is used to pass temporary objects to the asynchronous functions - std::shared_ptr connection(new Connection(new WS(*io_context))); + std::shared_ptr connection(new Connection(*io_context, new WS(*io_context))); acceptor->async_accept(*connection->socket, [this, connection](const std::error_code& ec) { //Immediately start accepting a new connection (if io_context hasn't been stopped)