diff options
author | Andrew Stitcher <astitcher@apache.org> | 2011-05-26 20:38:56 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2011-05-26 20:38:56 +0000 |
commit | 517f85dcab8e9de7196716e2bf456d7fa6c6d68d (patch) | |
tree | 38bfd32bc2ffd2ae78292cb8b8de829783ffb082 | |
parent | 266fc1d8eea16d35359c2afe7fb09905ef51dafe (diff) | |
download | qpid-python-517f85dcab8e9de7196716e2bf456d7fa6c6d68d.tar.gz |
NO-JIRA: Small improvements to Socket code
- Rewrite SocketAddress::operator= in terms of copy constructor
- Improve error diagnostic
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1128066 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp b/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp index 8f5f29d793..542c6f7691 100644 --- a/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp +++ b/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp @@ -27,6 +27,8 @@ #include <string.h> #include <netdb.h> +#include <algorithm> + namespace qpid { namespace sys { @@ -46,15 +48,9 @@ SocketAddress::SocketAddress(const SocketAddress& sa) : SocketAddress& SocketAddress::operator=(const SocketAddress& sa) { - if (&sa != this) { - host = sa.host; - port = sa.port; + SocketAddress temp(sa); - if (addrInfo) { - ::freeaddrinfo(addrInfo); - addrInfo = 0; - } - } + std::swap(temp, *this); return *this; } @@ -88,7 +84,7 @@ const ::addrinfo& getAddrInfo(const SocketAddress& sa) int n = ::getaddrinfo(node, service, &hints, &sa.addrInfo); if (n != 0) - throw Exception(QPID_MSG("Cannot resolve " << sa.host << ": " << ::gai_strerror(n))); + throw Exception(QPID_MSG("Cannot resolve " << sa.asString() << ": " << ::gai_strerror(n))); } return *sa.addrInfo; |