From 4775f33e1c0b976d79bfe4918cafea88b5376592 Mon Sep 17 00:00:00 2001 From: Nils Durner Date: Mon, 22 Nov 2010 20:15:29 +0000 Subject: named pipes --- src/util/network.c | 56 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 21 deletions(-) (limited to 'src/util/network.c') diff --git a/src/util/network.c b/src/util/network.c index 58d67ed19..452f28706 100644 --- a/src/util/network.c +++ b/src/util/network.c @@ -1137,28 +1137,38 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds, GNUNET_CONTAINER_slist_next (i)) { - HANDLE h; + struct GNUNET_DISK_FileHandle *fh; DWORD dwBytes; - h = *(HANDLE *) GNUNET_CONTAINER_slist_get (i, NULL); - if (!PeekNamedPipe (h, NULL, 0, NULL, &dwBytes, NULL)) + fh = (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (i, NULL); + if (fh->type == GNUNET_PIPE) { - retcode = -1; - SetErrnoFromWinError (GetLastError ()); + if (!PeekNamedPipe (fh->h, NULL, 0, NULL, &dwBytes, NULL)) + { + retcode = -1; + SetErrnoFromWinError (GetLastError ()); -#if DEBUG_NETWORK - GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, - "PeekNamedPipe"); + #if DEBUG_NETWORK + GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, + "PeekNamedPipe"); -#endif - goto select_loop_end; - } - else if (dwBytes) + #endif + goto select_loop_end; + } + else if (dwBytes) + { + GNUNET_CONTAINER_slist_add (handles_read, + GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, + fh, sizeof (struct GNUNET_DISK_FileHandle)); + retcode++; + } + } + else { + /* Should we wait for more bytes to read here (in case of previous EOF)? */ GNUNET_CONTAINER_slist_add (handles_read, GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, - &h, sizeof (HANDLE)); - retcode++; + fh, sizeof (struct GNUNET_DISK_FileHandle)); } } GNUNET_CONTAINER_slist_iter_destroy (i); @@ -1174,16 +1184,20 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds, GNUNET_CONTAINER_slist_next (i)) { - HANDLE h; + struct GNUNET_DISK_FileHandle *fh; DWORD dwBytes; - h = *(HANDLE *) GNUNET_CONTAINER_slist_get (i, NULL); - if (!PeekNamedPipe (h, NULL, 0, NULL, &dwBytes, NULL)) + fh = (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (i, NULL); + if (fh->type == GNUNET_PIPE) { - GNUNET_CONTAINER_slist_add (handles_except, - GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, - &h, sizeof (HANDLE)); - retcode++; + if (!PeekNamedPipe (fh->h, NULL, 0, NULL, &dwBytes, NULL)) + + { + GNUNET_CONTAINER_slist_add (handles_except, + GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, + fh, sizeof (struct GNUNET_DISK_FileHandle)); + retcode++; + } } } GNUNET_CONTAINER_slist_iter_destroy (i); -- cgit v1.2.3