From 44722a3ab867cb9b12292d86dd1c099ecba193df Mon Sep 17 00:00:00 2001 From: Ronald Landheer-Cieslak Date: Thu, 14 Feb 2008 22:02:30 -0500 Subject: [PATCH] Debug session: handle port numbers correctly and add clearPeekBuffer --- lib/Spin/UDPSocket.cpp | 14 +++++++++++--- lib/Spin/UDPSocket.h | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/Spin/UDPSocket.cpp b/lib/Spin/UDPSocket.cpp index f42551b..0df3030 100644 --- a/lib/Spin/UDPSocket.cpp +++ b/lib/Spin/UDPSocket.cpp @@ -1,4 +1,5 @@ #include "UDPSocket.h" +#include #include #include "Exceptions/Socket.h" extern "C" { @@ -42,7 +43,7 @@ namespace Spin memset(&in_address, 0, sizeof(in_address)); in_address.sin_addr.s_addr = address.u_.u32_; in_address.sin_family = AF_INET; - in_address.sin_port = port; + in_address.sin_port = htons(port); SOCKET_CALL(bind(fd_, (const sockaddr *)(&in_address), sizeof(sockaddr_in)), < 0, "bind failed", "UDPSocket constructor"); } else @@ -62,7 +63,7 @@ namespace Spin memset(&remote_address, 0, sizeof(remote_address)); remote_address.sin_addr.s_addr = to.u_.u32_; remote_address.sin_family = AF_INET; - remote_address.sin_port = port; + remote_address.sin_port = htons(port); const char * curr(&data[0]); const char * end(curr + data.size()); @@ -139,7 +140,7 @@ namespace Spin buffer.resize(received); else { /* we don't own the buffer size, so let the called take care of it */ } - return boost::make_tuple(Details::Address(remote_address.sin_addr.s_addr), remote_address.sin_port, received); + return boost::make_tuple(Details::Address(remote_address.sin_addr.s_addr), ntohs(remote_address.sin_port), received); } else { @@ -163,6 +164,12 @@ namespace Spin return boost::make_tuple(boost::tuples::get<0>(peek_buffer_), boost::tuples::get<1>(peek_buffer_), boost::tuples::get<2>(peek_buffer_)); } + void UDPSocket::clearPeekBuffer() + { + boost::recursive_mutex::scoped_lock sentinel(peek_buffer_lock_); + boost::tuples::get<3>(peek_buffer_).clear(); + } + bool UDPSocket::poll() const { checkStatus("UDPSocket::poll"); @@ -220,6 +227,7 @@ namespace Spin boost::recursive_mutex::scoped_lock sentinel(fd_lock_); if (data_handler_) { + AGELENA_DEBUG_1("Detaching FD %1% from the connection handler", fd_); Private::ConnectionHandler::getInstance().detach(fd_); data_handler_ = 0; } diff --git a/lib/Spin/UDPSocket.h b/lib/Spin/UDPSocket.h index 751b0bb..59496d0 100644 --- a/lib/Spin/UDPSocket.h +++ b/lib/Spin/UDPSocket.h @@ -50,6 +50,8 @@ namespace Spin boost::tuple< Details::Address, unsigned short, std::size_t > recv(std::vector< char > & buffer, unsigned long timeout = ~0); boost::tuple< Details::Address, unsigned short, std::size_t > peek(std::vector< char > & buffer, unsigned long timeout = ~0); + void clearPeekBuffer(); + bool poll() const; void close(); -- 2.11.4.GIT