From 7490db6dd1f27d0c7a4d7a82a8f6cd0f40412f89 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 30 Nov 2018 10:28:56 -0600 Subject: [PATCH] msg/async/ProtocolV2: be flexible with server identity check Signed-off-by: Sage Weil --- src/msg/async/ProtocolV2.cc | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc index 77c6f4ec26aa3..aefbefb86e00f 100644 --- a/src/msg/async/ProtocolV2.cc +++ b/src/msg/async/ProtocolV2.cc @@ -1365,26 +1365,24 @@ CtPtr ProtocolV2::handle_server_addrvec_and_identify(char *buffer, int r) { lderr(cct) << __func__ << " decode peer addr failed " << dendl; return _fault(); } - ldout(cct, 20) << __func__ << " connect read peer addr " << peer_addr + ldout(cct, 20) << __func__ << " read peer addr " << peer_addr << " of " << paddrs << " on socket " << connection->cs.fd() << dendl; - if (peer_addr != connection->peer_addrs.msgr2_addr()) { - ldout(cct, 10) << __func__ << " connect claims to be " << peer_addr - << " not " - << connection->peer_addrs.msgr2_addr() << dendl; - return _fault(); - } - if (paddrs != connection->peer_addrs) { - ldout(cct, 10) << __func__ << " connect claims to be " << paddrs - << " not " + // Be somewhat flexible with our identity check. In particular, we + // may be trying to connect to a v2 addr, and the remote may + // identify themselves by several other addrs as well. This happens + // with mon discovery. + if (!connection->peer_addrs.contains(peer_addr)) { + ldout(cct, 10) << __func__ << " server claims to be " << peer_addr + << " (of " << paddrs << "), but we are trying to reach " << connection->peer_addrs << dendl; return _fault(); } connection->set_peer_addrs(paddrs); - ldout(cct, 20) << __func__ << " connect peer addr for me is " + ldout(cct, 20) << __func__ << " peer addr for me is " << peer_addr_for_me << dendl; connection->lock.unlock(); bool learned = messenger->learned_addr(peer_addr_for_me); -- 2.39.5