diff --git a/src/net/socket_ws.cpp b/src/net/socket_ws.cpp index 63e684b99..80cd00a85 100644 --- a/src/net/socket_ws.cpp +++ b/src/net/socket_ws.cpp @@ -134,9 +134,9 @@ code socket::set_websocket(const http::request& request) NOEXCEPT { if (secure()) { - // Upgrade to ws::ssl::socket. - socket_.emplace( - std::move(std::get(socket_))); + // Extract before emplacing back to same variant. + auto ws = std::move(std::get(socket_)); + socket_.emplace(std::move(ws)); auto& sock = std::get(socket_); sock.read_message_max(maximum_); @@ -154,9 +154,9 @@ code socket::set_websocket(const http::request& request) NOEXCEPT } else { - // Upgrade to ws::socket. - socket_.emplace( - std::move(std::get(socket_))); + // Extract before emplacing back to same variant. + auto ws = std::move(std::get(socket_)); + socket_.emplace(std::move(ws)); auto& sock = std::get(socket_); sock.read_message_max(maximum_);