From cbd8bd75f3a6acbf4919aca719bd1cacd84603c7 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Wed, 27 Feb 2019 08:10:23 +0100 Subject: [PATCH] msg/async, v2: clean the ProtocolV2::{front,middle,data} up. Signed-off-by: Radoslaw Zarzynski --- src/msg/async/ProtocolV2.cc | 44 +++++++++++++++---------------------- src/msg/async/ProtocolV2.h | 1 - 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc index f340054f784ae..28e3196a75c41 100644 --- a/src/msg/async/ProtocolV2.cc +++ b/src/msg/async/ProtocolV2.cc @@ -1374,19 +1374,8 @@ CtPtr ProtocolV2::handle_message() { // Reset state data_buf.clear(); - front.clear(); - middle.clear(); - data.clear(); - current_header = header; - - // front - ceph_assert(!front.length()); - front = std::move(rx_segments_data[SegmentIndex::Msg::FRONT]); - - // middle - ceph_assert(!middle.length()); - middle = std::move(rx_segments_data[SegmentIndex::Msg::MIDDLE]); + current_header = header; return read_message_data_prepare(); } @@ -1435,9 +1424,12 @@ CtPtr ProtocolV2::read_message_data() { // FIXME: if (auth_meta->is_mode_secure()) { // ceph_assert(session_stream_handlers.rx); - if (session_stream_handlers.rx && data.length()) { - data = session_stream_handlers.rx->authenticated_decrypt_update( - std::move(data), segment_t::DEFAULT_ALIGNMENT); + if (session_stream_handlers.rx && \ + rx_segments_data[SegmentIndex::Msg::DATA].length()) { + rx_segments_data[SegmentIndex::Msg::DATA] = + session_stream_handlers.rx->authenticated_decrypt_update( + std::move(rx_segments_data[SegmentIndex::Msg::DATA]), + segment_t::DEFAULT_ALIGNMENT); } state = READ_MESSAGE_COMPLETE; @@ -1497,7 +1489,7 @@ CtPtr ProtocolV2::handle_message_data(char *buffer, int r) { unsigned read_len = std::min(bp.length(), msg_left); ceph_assert(read_len < std::numeric_limits::max()); data_blp.advance(read_len); - data.append(bp, 0, read_len); + rx_segments_data[SegmentIndex::Msg::DATA].append(bp, 0, read_len); msg_left -= read_len; return CONTINUE(read_message_data); @@ -1506,12 +1498,6 @@ CtPtr ProtocolV2::handle_message_data(char *buffer, int r) { CtPtr ProtocolV2::handle_message_complete() { ldout(cct, 20) << __func__ << dendl; - ldout(cct, 5) << __func__ - << " got " << front.length() - << " + " << middle.length() - << " + " << data.length() - << " byte message" << dendl; - const auto front_len = \ rx_segments_desc[SegmentIndex::Msg::FRONT].logical.length; const auto middle_len = \ @@ -1519,6 +1505,12 @@ CtPtr ProtocolV2::handle_message_complete() { const auto data_len = \ rx_segments_desc[SegmentIndex::Msg::DATA].logical.length; + ldout(cct, 5) << __func__ + << " got " << front_len + << " + " << middle_len + << " + " << data_len + << " byte message" << dendl; + ceph_msg_header header{current_header.seq, current_header.tid, current_header.type, @@ -1536,7 +1528,10 @@ CtPtr ProtocolV2::handle_message_complete() { current_header.data_crc, 0, current_header.flags}; Message *message = decode_message(cct, messenger->crcflags, header, footer, - front, middle, data, connection); + rx_segments_data[SegmentIndex::Msg::FRONT], + rx_segments_data[SegmentIndex::Msg::MIDDLE], + rx_segments_data[SegmentIndex::Msg::DATA], + connection); if (!message) { ldout(cct, 1) << __func__ << " decode message failed " << dendl; return _fault(); @@ -1653,9 +1648,6 @@ CtPtr ProtocolV2::handle_message_complete() { // clean up local buffer references data_buf.clear(); - front.clear(); - middle.clear(); - data.clear(); // we might have been reused by another connection // let's check if that is the case diff --git a/src/msg/async/ProtocolV2.h b/src/msg/async/ProtocolV2.h index d40887424d873..defc20561b026 100644 --- a/src/msg/async/ProtocolV2.h +++ b/src/msg/async/ProtocolV2.h @@ -124,7 +124,6 @@ private: unsigned msg_left; bufferlist data_buf; bufferlist::iterator data_blp; - bufferlist front, middle, data; bool keepalive; -- 2.39.5