diff options
author | Nils Durner <durner@gnunet.org> | 2010-12-27 09:53:48 +0000 |
---|---|---|
committer | Nils Durner <durner@gnunet.org> | 2010-12-27 09:53:48 +0000 |
commit | 22e893cbfab6d19abb860a13778850e9df4e82d7 (patch) | |
tree | 188d8ff64c6504b73b60606414d3c55ec992feca /src/util/network.c | |
parent | ee21c6d2cf75966df5876476d50179d9c1b2f0ad (diff) | |
download | gnunet-22e893cbfab6d19abb860a13778850e9df4e82d7.tar.gz gnunet-22e893cbfab6d19abb860a13778850e9df4e82d7.zip |
shutdown via control pipe (#0001616)
Diffstat (limited to 'src/util/network.c')
-rw-r--r-- | src/util/network.c | 21 |
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 | ||