diff options
Diffstat (limited to 'Swiften/Network/BoostUDPSocket.cpp')
-rw-r--r-- | Swiften/Network/BoostUDPSocket.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Swiften/Network/BoostUDPSocket.cpp b/Swiften/Network/BoostUDPSocket.cpp index dff941f..cedaad4 100644 --- a/Swiften/Network/BoostUDPSocket.cpp +++ b/Swiften/Network/BoostUDPSocket.cpp @@ -76,11 +76,13 @@ void BoostUDPSocket::connect(const HostAddressPort &address) void BoostUDPSocket::connectToFirstIncoming() { - boost::shared_ptr<SafeByteArray> buf = boost::make_shared<SafeByteArray>(1); + readBuffer_ = boost::make_shared<SafeByteArray>(1); socket_.async_receive_from( - boost::asio::buffer(*buf), + boost::asio::buffer(*readBuffer_), remoteEndpoint_, - boost::bind(&BoostUDPSocket::handleFirstRead, shared_from_this(), boost::asio::placeholders::error)); + boost::bind(&BoostUDPSocket::handleFirstRead, shared_from_this(), + boost::asio::placeholders::error, + boost::asio::placeholders::bytes_transferred)); } void BoostUDPSocket::close() { @@ -89,6 +91,16 @@ void BoostUDPSocket::close() { socket_.close(); } +HostAddressPort BoostUDPSocket::getLocalAddress() const +{ + return HostAddressPort(socket_.local_endpoint()); +} + +HostAddressPort BoostUDPSocket::getRemoteAddress() const +{ + return HostAddressPort(socket_.remote_endpoint()); +} + void BoostUDPSocket::send(const SafeByteArray& data) { boost::lock_guard<boost::mutex> lock(sendMutex_); @@ -129,7 +141,7 @@ void BoostUDPSocket::handleSocketRead(const boost::system::error_code& error, si // } } -void BoostUDPSocket::handleFirstRead(const boost::system::error_code &error) +void BoostUDPSocket::handleFirstRead(const boost::system::error_code &error, std::size_t /*bytes_transferred*/) { if (!error) { socket_.connect(remoteEndpoint_); // TODO: handle errors |