]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async: use set_sockaddr for getpeername
authorSage Weil <sage@redhat.com>
Fri, 6 May 2016 13:56:29 +0000 (09:56 -0400)
committerSage Weil <sage@redhat.com>
Wed, 11 May 2016 12:12:25 +0000 (08:12 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/msg/async/AsyncConnection.cc

index 0d7ca05d5d29be4031beac201550ba25b36fc023..00e85103d84557a6accfa5a744c62906e1c877da 100644 (file)
@@ -1395,13 +1395,15 @@ ssize_t AsyncConnection::_process_connection()
         ::encode(async_msgr->get_myaddr(), bl);
         port = async_msgr->get_myaddr().get_port();
         // and peer's socket addr (they might not know their ip)
-        socklen_t len = sizeof(socket_addr.ss_addr());
-        r = ::getpeername(sd, (sockaddr*)&socket_addr.ss_addr(), &len);
+       sockaddr_storage ss;
+        socklen_t len = sizeof(ss);
+        r = ::getpeername(sd, (sockaddr*)&ss, &len);
         if (r < 0) {
           ldout(async_msgr->cct, 0) << __func__ << " failed to getpeername "
                               << cpp_strerror(errno) << dendl;
           goto fail;
         }
+       socket_addr.set_sockaddr((sockaddr*)&ss);
         ::encode(socket_addr, bl);
         ldout(async_msgr->cct, 1) << __func__ << " sd=" << sd << " " << socket_addr << dendl;