diff options
Diffstat (limited to 'Swiften/Network/BoostUDPSocket.cpp')
-rw-r--r-- | Swiften/Network/BoostUDPSocket.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Swiften/Network/BoostUDPSocket.cpp b/Swiften/Network/BoostUDPSocket.cpp index cedaad4..4405091 100644 --- a/Swiften/Network/BoostUDPSocket.cpp +++ b/Swiften/Network/BoostUDPSocket.cpp @@ -52,24 +52,28 @@ BoostUDPSocket::~BoostUDPSocket() { } -void BoostUDPSocket::bind(int port) +void BoostUDPSocket::bind(const HostAddressPort& addr) { if (!socket_.is_open()) - socket_.open(boost::asio::ip::udp::v4()); - socket_.bind(boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port)); + socket_.open(addr.toEndpoint().protocol()); + socket_.bind(addr.toEndpoint()); +} + +void BoostUDPSocket::bindOnAvailablePort(const HostAddress &addr) +{ + bind(HostAddressPort(addr, 0)); } void BoostUDPSocket::listen() { - if (!socket_.is_open()) - socket_.open(boost::asio::ip::udp::v4()); - doRead(); + if (socket_.is_open()) + doRead(); } void BoostUDPSocket::connect(const HostAddressPort &address) { - if (!socket_.is_open()) - socket_.open(boost::asio::ip::udp::v4()); +// if (!socket_.is_open()) +// socket_.open(boost::asio::ip::udp::v4()); socket_.connect(address.toEndpoint()); // TODO: handle errors eventLoop->postEvent(boost::bind(boost::ref(onConnected)), shared_from_this()); } |