From 22e893cbfab6d19abb860a13778850e9df4e82d7 Mon Sep 17 00:00:00 2001 From: Nils Durner Date: Mon, 27 Dec 2010 09:53:48 +0000 Subject: shutdown via control pipe (#0001616) --- src/util/network.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/util/network.c') diff --git a/src/util/network.c b/src/util/network.c index 08121928d..9e85a3be9 100644 --- a/src/util/network.c +++ b/src/util/network.c @@ -1127,15 +1127,26 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds, { if (!PeekNamedPipe (fh->h, NULL, 0, NULL, &dwBytes, NULL)) { - retcode = -1; - SetErrnoFromWinError (GetLastError ()); + DWORD error_code = GetLastError (); + switch (error_code) + { + case ERROR_BROKEN_PIPE: + GNUNET_CONTAINER_slist_add (handles_read, + GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, + fh, sizeof (struct GNUNET_DISK_FileHandle)); + retcode++; + break; + default: + retcode = -1; + SetErrnoFromWinError (error_code); #if DEBUG_NETWORK - GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, - "PeekNamedPipe"); + GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, + "PeekNamedPipe"); #endif - goto select_loop_end; + goto select_loop_end; + } } else if (dwBytes) -- cgit v1.2.3