From: Sage Weil Date: Fri, 30 Nov 2018 16:28:56 +0000 (-0600) Subject: msg/async/ProtocolV2: be flexible with server identity check X-Git-Tag: v14.1.0~484^2~72 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7490db6dd1f27d0c7a4d7a82a8f6cd0f40412f89;p=ceph.git msg/async/ProtocolV2: be flexible with server identity check Signed-off-by: Sage Weil --- diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc index 77c6f4ec26a..aefbefb86e0 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);