changeset 284:9be2cd100167

Fusion
author David Demelier <markand@malikania.fr>
date Tue, 11 Nov 2014 14:04:36 +0100
parents 88f9d8b406c6 (current diff) d2d5a14bae10 (diff)
children 9b6990fa8fd9
files
diffstat 5 files changed, 12 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/C++/Socket.cpp	Tue Nov 11 14:03:42 2014 +0100
+++ b/C++/Socket.cpp	Tue Nov 11 14:04:36 2014 +0100
@@ -330,8 +330,8 @@
 		throw error::Failure("socket", syserror());
 }
 
-Socket::Socket(Handle handle, std::shared_ptr<SocketInterface> interface)
-	: m_interface(std::move(interface))
+Socket::Socket(Handle handle, std::shared_ptr<SocketInterface> iface)
+	: m_interface(std::move(iface))
 	, m_handle(handle)
 {
 }
--- a/C++/Socket.h	Tue Nov 11 14:03:42 2014 +0100
+++ b/C++/Socket.h	Tue Nov 11 14:04:36 2014 +0100
@@ -297,7 +297,7 @@
 	 * @param handle the handle
 	 * @param interface the interface to use
 	 */
-	Socket(Handle handle, std::shared_ptr<SocketInterface> interface);
+	Socket(Handle handle, std::shared_ptr<SocketInterface> iface);
 
 	/**
 	 * Close the socket.
--- a/C++/SocketAddress.h	Tue Nov 11 14:03:42 2014 +0100
+++ b/C++/SocketAddress.h	Tue Nov 11 14:04:36 2014 +0100
@@ -23,6 +23,7 @@
 
 #if defined(_WIN32)
 #  include <Winsock2.h>
+#  include <Ws2tcpip.h>
 #else
 #  include <sys/socket.h>
 #endif
--- a/C++/SocketListener.cpp	Tue Nov 11 14:03:42 2014 +0100
+++ b/C++/SocketListener.cpp	Tue Nov 11 14:04:36 2014 +0100
@@ -174,7 +174,14 @@
 	{
 		int direction{};
 
-		if (event & POLLIN)
+		/*
+		 * Poll implementations mark the socket differently regarding
+		 * the disconnection of a socket.
+		 *
+		 * At least, even if POLLHUP or POLLIN is set, recv() always
+		 * return 0 so we mark the socket as readable.
+		 */
+		if ((event & POLLIN) || (event & POLLHUP))
 			direction |= Read;
 		if (event & POLLOUT)
 			direction |= Write;
--- a/C++/Tests/Sockets/main.cpp	Tue Nov 11 14:03:42 2014 +0100
+++ b/C++/Tests/Sockets/main.cpp	Tue Nov 11 14:04:36 2014 +0100
@@ -113,7 +113,6 @@
 					if (tries >= 10)
 						running = false;
 				} catch (const Timeout &) {
-					puts("DEBUG: TIMEOUT");
 				}
 			}
 		} catch (const std::exception &ex) {