Add mechanizm for caching local and peer addresses in AsyncSSLSocket.
[folly.git] / folly / io / async / AsyncSocket.cpp
index fa475faa7ba85de7ea7caf7f4efbbc704f1a2e7b..2db3b2962b0bf7a39d82a80f2ea07c961d0c1126 100644 (file)
@@ -1066,7 +1066,10 @@ bool AsyncSocket::isDetachable() const {
 }
 
 void AsyncSocket::getLocalAddress(folly::SocketAddress* address) const {
-  address->setFromLocalAddress(fd_);
+  if (!localAddr_.isInitialized()) {
+    localAddr_.setFromLocalAddress(fd_);
+  }
+  *address = localAddr_;
 }
 
 void AsyncSocket::getPeerAddress(folly::SocketAddress* address) const {