From 5491bc48ae38a9778b5df2af4b7cf1669768642d Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Thu, 8 Aug 2019 17:14:47 +0800 Subject: [PATCH] crimson/net: throw bad_peer_address when reconnect address doesn't match Signed-off-by: Yingxin Cheng --- src/crimson/net/ProtocolV2.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/crimson/net/ProtocolV2.cc b/src/crimson/net/ProtocolV2.cc index 2cb7b1352c3..70c5e82ba25 100644 --- a/src/crimson/net/ProtocolV2.cc +++ b/src/crimson/net/ProtocolV2.cc @@ -1337,13 +1337,14 @@ ProtocolV2::server_reconnect() reconnect.msg_seq()); // can peer_addrs be changed on-the-fly? - if (conn.peer_addr != reconnect.addrs().front()) { - logger().error("{} peer identifies as {}, while conn.peer_addr={}", - conn, reconnect.addrs().front(), conn.peer_addr); - ceph_assert(false); - } // TODO: change peer_addr to entity_addrvec_t - ceph_assert(conn.peer_addr == conn.target_addr); + if (conn.peer_addr != reconnect.addrs().front()) { + logger().error("{} peer identifies as {}, while conn.peer_addr={}," + " reconnect failed", + conn, reconnect.addrs().front(), conn.peer_addr); + throw std::system_error( + make_error_code(ceph::net::error::bad_peer_address)); + } peer_global_seq = reconnect.global_seq(); SocketConnectionRef existing_conn = messenger.lookup_conn(conn.peer_addr);