From: Mark Kogan Date: Thu, 2 Jul 2020 16:37:43 +0000 (+0300) Subject: rgw: fix boost::asio::async_write() does not return error... X-Git-Tag: v15.2.5~51^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c43f71056322e1a149a444735bf65d80fec7a7ae;p=ceph.git rgw: fix boost::asio::async_write() does not return error... although remote has closed the connection Fixes: https://tracker.ceph.com/issues/46332 Signed-off-by: Mark Kogan (cherry picked from commit c997eb6ad77deebd8e903fe84da7af6fcf50d528) --- diff --git a/src/rgw/rgw_asio_frontend.cc b/src/rgw/rgw_asio_frontend.cc index 5d0977336246..c8158db9eb33 100644 --- a/src/rgw/rgw_asio_frontend.cc +++ b/src/rgw/rgw_asio_frontend.cc @@ -69,6 +69,10 @@ class StreamIO : public rgw::asio::ClientIO { yield[ec]); if (ec) { ldout(cct, 4) << "write_data failed: " << ec.message() << dendl; + if (ec==boost::asio::error::broken_pipe) { + boost::system::error_code ec_ignored; + stream.lowest_layer().shutdown(tcp::socket::shutdown_both, ec_ignored); + } throw rgw::io::Exception(ec.value(), std::system_category()); } return bytes;