From 60af907c91210f60d0009318b8ca2ccd87941bb9 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 6 Oct 2022 13:22:35 -0400 Subject: [PATCH] rgw: beast frontend checks for local_endpoint() errors socket.local_endpoint() throws on error. use the error_code overload instead and return on failure Fixes: https://tracker.ceph.com/issues/57784 Signed-off-by: Casey Bodley --- src/rgw/rgw_asio_frontend.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_asio_frontend.cc b/src/rgw/rgw_asio_frontend.cc index 4b4a8175192f..6763b28e1b9c 100644 --- a/src/rgw/rgw_asio_frontend.cc +++ b/src/rgw/rgw_asio_frontend.cc @@ -247,10 +247,14 @@ void handle_connection(boost::asio::io_context& context, ldout(cct, 1) << "failed to connect client: " << ec.message() << dendl; return; } + const auto& local_endpoint = socket.local_endpoint(ec); + if (ec) { + ldout(cct, 1) << "failed to connect client: " << ec.message() << dendl; + return; + } StreamIO real_client{cct, stream, timeout, parser, yield, buffer, - is_ssl, socket.local_endpoint(), - remote_endpoint}; + is_ssl, local_endpoint, remote_endpoint}; auto real_client_io = rgw::io::add_reordering( rgw::io::add_buffering(cct, -- 2.47.3