diff options
Diffstat (limited to 'Swiften/Network/BoostUDPSocket.cpp')
-rw-r--r-- | Swiften/Network/BoostUDPSocket.cpp | 16 |
1 files changed, 11 insertions, 5 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()); |