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: v14.2.12~69^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2aecb13e272ddcc8bc16b48625804c020ff9b5a7;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 dc24ce66e762..10e8d35a5559 100644 --- a/src/rgw/rgw_asio_frontend.cc +++ b/src/rgw/rgw_asio_frontend.cc @@ -56,6 +56,10 @@ class StreamIO : public rgw::asio::ClientIO { auto bytes = boost::asio::write(stream, boost::asio::buffer(buf, len), 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;