From 517f85dcab8e9de7196716e2bf456d7fa6c6d68d Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Thu, 26 May 2011 20:38:56 +0000 Subject: 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 --- qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'qpid/cpp/src') 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 #include +#include + 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; -- cgit v1.2.1