aboutsummaryrefslogtreecommitdiff
path: root/src/util/network.c
diff options
context:
space:
mode:
authorNils Durner <durner@gnunet.org>2010-12-27 09:53:48 +0000
committerNils Durner <durner@gnunet.org>2010-12-27 09:53:48 +0000
commit22e893cbfab6d19abb860a13778850e9df4e82d7 (patch)
tree188d8ff64c6504b73b60606414d3c55ec992feca /src/util/network.c
parentee21c6d2cf75966df5876476d50179d9c1b2f0ad (diff)
downloadgnunet-22e893cbfab6d19abb860a13778850e9df4e82d7.tar.gz
gnunet-22e893cbfab6d19abb860a13778850e9df4e82d7.zip
shutdown via control pipe (#0001616)
Diffstat (limited to 'src/util/network.c')
-rw-r--r--src/util/network.c21
1 files changed, 16 insertions, 5 deletions
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,
1127 { 1127 {
1128 if (!PeekNamedPipe (fh->h, NULL, 0, NULL, &dwBytes, NULL)) 1128 if (!PeekNamedPipe (fh->h, NULL, 0, NULL, &dwBytes, NULL))
1129 { 1129 {
1130 retcode = -1; 1130 DWORD error_code = GetLastError ();
1131 SetErrnoFromWinError (GetLastError ()); 1131 switch (error_code)
1132 {
1133 case ERROR_BROKEN_PIPE:
1134 GNUNET_CONTAINER_slist_add (handles_read,
1135 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
1136 fh, sizeof (struct GNUNET_DISK_FileHandle));
1137 retcode++;
1138 break;
1139 default:
1140 retcode = -1;
1141 SetErrnoFromWinError (error_code);
1132 1142
1133 #if DEBUG_NETWORK 1143 #if DEBUG_NETWORK
1134 GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, 1144 GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR,
1135 "PeekNamedPipe"); 1145 "PeekNamedPipe");
1136 1146
1137 #endif 1147 #endif
1138 goto select_loop_end; 1148 goto select_loop_end;
1149 }
1139 } 1150 }
1140 else if (dwBytes) 1151 else if (dwBytes)
1141 1152