summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Network')
-rw-r--r--Swiften/Network/BoostUDPSocket.cpp16
-rw-r--r--Swiften/Network/BoostUDPSocket.h4
-rw-r--r--Swiften/Network/UDPSocket.h4
3 files changed, 15 insertions, 9 deletions
diff --git a/Swiften/Network/BoostUDPSocket.cpp b/Swiften/Network/BoostUDPSocket.cpp
index 4405091..0f66b92 100644
--- a/Swiften/Network/BoostUDPSocket.cpp
+++ b/Swiften/Network/BoostUDPSocket.cpp
@@ -52,16 +52,22 @@ BoostUDPSocket::~BoostUDPSocket()
{
}
-void BoostUDPSocket::bind(const HostAddressPort& addr)
+int BoostUDPSocket::bind(const HostAddressPort& addr)
{
if (!socket_.is_open())
socket_.open(addr.toEndpoint().protocol());
- socket_.bind(addr.toEndpoint());
+
+ boost::system::error_code errorCode;
+ socket_.bind(addr.toEndpoint(), errorCode);
+ if (errorCode)
+ return 0;
+
+ return socket_.local_endpoint().port();
}
-void BoostUDPSocket::bindOnAvailablePort(const HostAddress &addr)
+int BoostUDPSocket::bindOnAvailablePort(const HostAddress& addr)
{
- bind(HostAddressPort(addr, 0));
+ return bind(HostAddressPort(addr, 0));
}
void BoostUDPSocket::listen()
@@ -70,7 +76,7 @@ void BoostUDPSocket::listen()
doRead();
}
-void BoostUDPSocket::connect(const HostAddressPort &address)
+void BoostUDPSocket::connect(const HostAddressPort& address)
{
// if (!socket_.is_open())
// socket_.open(boost::asio::ip::udp::v4());
diff --git a/Swiften/Network/BoostUDPSocket.h b/Swiften/Network/BoostUDPSocket.h
index bb5014e..d1b2e0d 100644
--- a/Swiften/Network/BoostUDPSocket.h
+++ b/Swiften/Network/BoostUDPSocket.h
@@ -37,8 +37,8 @@ namespace Swift {
return ref(new BoostUDPSocket(ioService, eventLoop));
}
- virtual void bind(const HostAddressPort& addr);
- virtual void bindOnAvailablePort(const HostAddress& addr);
+ virtual int bind(const HostAddressPort& addr);
+ virtual int bindOnAvailablePort(const HostAddress& addr);
virtual void listen();
virtual void connect(const HostAddressPort& address);
virtual void connectToFirstIncoming();
diff --git a/Swiften/Network/UDPSocket.h b/Swiften/Network/UDPSocket.h
index 3a239f8..2092c61 100644
--- a/Swiften/Network/UDPSocket.h
+++ b/Swiften/Network/UDPSocket.h
@@ -20,8 +20,8 @@ namespace Swift {
virtual ~UDPSocket() {}
- virtual void bind(const HostAddressPort& addr) = 0;
- virtual void bindOnAvailablePort(const HostAddress& addr) = 0;
+ virtual int bind(const HostAddressPort& addr) = 0;
+ virtual int bindOnAvailablePort(const HostAddress& addr) = 0;
virtual void listen() = 0;
virtual void connect(const HostAddressPort& address) = 0;
virtual void connectToFirstIncoming() = 0;