summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2009-10-12 18:03:30 +0000
committerAndrew Stitcher <astitcher@apache.org>2009-10-12 18:03:30 +0000
commit21949d0e09ec5886f7354c7869d71f599a76a48c (patch)
treefc7b478135f5864f1ed6b093194ea67a87fa8de3 /qpid/cpp/src
parent58f391dbda2fd05c627aa820617415a903efd80d (diff)
downloadqpid-python-21949d0e09ec5886f7354c7869d71f599a76a48c.tar.gz
Split Socket::listen
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@824443 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/sys/Socket.h1
-rw-r--r--qpid/cpp/src/qpid/sys/posix/Socket.cpp8
2 files changed, 7 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/sys/Socket.h b/qpid/cpp/src/qpid/sys/Socket.h
index 4a8cf0dd50..76b993fd63 100644
--- a/qpid/cpp/src/qpid/sys/Socket.h
+++ b/qpid/cpp/src/qpid/sys/Socket.h
@@ -56,6 +56,7 @@ public:
*@return The bound port.
*/
QPID_COMMON_EXTERN int listen(uint16_t port = 0, int backlog = 10) const;
+ QPID_COMMON_EXTERN int listen(const SocketAddress&, int backlog = 10) const;
/** Returns the "socket name" ie the address bound to
* the near end of the socket
diff --git a/qpid/cpp/src/qpid/sys/posix/Socket.cpp b/qpid/cpp/src/qpid/sys/posix/Socket.cpp
index be26027405..481aa6c88e 100644
--- a/qpid/cpp/src/qpid/sys/posix/Socket.cpp
+++ b/qpid/cpp/src/qpid/sys/posix/Socket.cpp
@@ -172,15 +172,19 @@ int Socket::listen(uint16_t port, int backlog) const
SocketAddress sa("", boost::lexical_cast<std::string>(port));
createSocket(sa);
+ return listen(sa, backlog);
+}
+int Socket::listen(const SocketAddress& sa, int backlog) const
+{
const int& socket = impl->fd;
int yes=1;
QPID_POSIX_CHECK(setsockopt(socket,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)));
if (::bind(socket, getAddrInfo(sa).ai_addr, getAddrInfo(sa).ai_addrlen) < 0)
- throw Exception(QPID_MSG("Can't bind to port " << port << ": " << strError(errno)));
+ throw Exception(QPID_MSG("Can't bind to port " << sa.asString() << ": " << strError(errno)));
if (::listen(socket, backlog) < 0)
- throw Exception(QPID_MSG("Can't listen on port " << port << ": " << strError(errno)));
+ throw Exception(QPID_MSG("Can't listen on port " << sa.asString() << ": " << strError(errno)));
struct sockaddr_in name;
socklen_t namelen = sizeof(name);