summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Network/BoostUDPSocket.cpp')
-rw-r--r--Swiften/Network/BoostUDPSocket.cpp20
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());
}