From: Sage Weil Date: Fri, 25 Jan 2019 20:12:27 +0000 (-0600) Subject: msg/async: never fill out port in myaddr if we didn't bind X-Git-Tag: v14.1.0~271^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5acf7ec1ffc65db6a2e4a17cfa738e3d98dbb6a3;p=ceph.git msg/async: never fill out port in myaddr if we didn't bind If we are a client and didn't bind, then we should not fill in the port for our address. The one the peer sent us is just the random port our outgoing connection happened to land on! Signed-off-by: Sage Weil --- diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index c8403130d420..cbb397279238 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -886,6 +886,9 @@ bool AsyncMessenger::learned_addr(const entity_addr_t &peer_addr_for_me) if (my_addrs->empty()) { auto a = peer_addr_for_me; a.set_nonce(nonce); + if (!did_bind) { + a.set_port(0); + } set_myaddrs(entity_addrvec_t(a)); ldout(cct,10) << __func__ << " had no addrs" << dendl; } else { @@ -895,7 +898,11 @@ bool AsyncMessenger::learned_addr(const entity_addr_t &peer_addr_for_me) if (a.get_family() == peer_addr_for_me.get_family()) { entity_addr_t t = peer_addr_for_me; t.set_type(a.get_type()); - t.set_port(a.get_port()); + if (!did_bind) { + t.set_port(0); + } else { + t.set_port(a.get_port()); + } t.set_nonce(a.get_nonce()); ldout(cct,10) << __func__ << " " << a << " -> " << t << dendl; a = t;