diff options
Diffstat (limited to 'Swiften/Network')
-rw-r--r-- | Swiften/Network/BoostUDPSocket.cpp | 16 | ||||
-rw-r--r-- | Swiften/Network/BoostUDPSocket.h | 4 | ||||
-rw-r--r-- | Swiften/Network/UDPSocket.h | 4 |
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; |