From f05413912e3617f60e68911f08591ea8ff6bb4a6 Mon Sep 17 00:00:00 2001 From: Anefu Date: Sat, 23 Dec 2023 08:49:47 +0100 Subject: [PATCH] fix: unhandled connection closing in websocker_server_awaitable --- .../awaitable/websocket_server_awaitable.cpp | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/example/websocket/server/awaitable/websocket_server_awaitable.cpp b/example/websocket/server/awaitable/websocket_server_awaitable.cpp index e7267315..aaddbafa 100644 --- a/example/websocket/server/awaitable/websocket_server_awaitable.cpp +++ b/example/websocket/server/awaitable/websocket_server_awaitable.cpp @@ -76,11 +76,18 @@ do_session(stream ws) co_await ws.async_write(buffer.data()); } - catch(boost::system::system_error & se) + catch (const boost::system::system_error& se) { - if (se.code() != websocket::error::closed) - throw; - + if (se.code() == beast::websocket::error::closed || se.code() == boost::asio::error::operation_aborted) + { + std::cout << "Connection closed by client." << std::endl; + co_return; + } + else + { + std::cerr << "Error: " << se.what() << std::endl; + co_return; + } } } @@ -111,12 +118,15 @@ do_listen( do_session(stream(co_await acceptor.async_accept())), [](std::exception_ptr e) { - try + if (e) { - std::rethrow_exception(e); - } - catch (std::exception &e) { - std::cerr << "Error in session: " << e.what() << "\n"; + try + { + std::rethrow_exception(e); + } + catch (std::exception &e) { + std::cerr << "Error in session: " << e.what() << "\n"; + } } }); }