[tor-commits] [tor/master] Remember to set `reached_eof` when our handles are reporting errors.

nickm at torproject.org nickm at torproject.org
Thu Dec 20 16:44:56 UTC 2018


commit 36e24782f87c25d13b4c918c66cd4affaab8df79
Author: Alexander Færøy <ahf at torproject.org>
Date:   Thu Dec 20 13:02:22 2018 +0100

    Remember to set `reached_eof` when our handles are reporting errors.
    
    This patch adds some missing calls to set `reached_eof` of our handles
    when various error conditions happens or when we close our handle (which
    happens at `process_terminate()`.
    
    See: https://bugs.torproject.org/28179
---
 src/lib/process/process_win32.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/process/process_win32.c b/src/lib/process/process_win32.c
index 71dd4001c..358765f79 100644
--- a/src/lib/process/process_win32.c
+++ b/src/lib/process/process_win32.c
@@ -367,6 +367,7 @@ process_win32_write(struct process_t *process, buf_t *buffer)
   if (! ret) {
     log_warn(LD_PROCESS, "WriteFileEx() failed: %s",
              format_win32_error(GetLastError()));
+    win32_process->stdin_handle.reached_eof = true;
     return 0;
   }
 
@@ -749,6 +750,7 @@ process_win32_cleanup_handle(process_win32_handle_t *handle)
   if (handle->pipe != INVALID_HANDLE_VALUE) {
     CloseHandle(handle->pipe);
     handle->pipe = INVALID_HANDLE_VALUE;
+    handle->reached_eof = true;
   }
 }
 
@@ -930,6 +932,7 @@ process_win32_read_from_handle(process_win32_handle_t *handle,
   if (! ret) {
     log_warn(LD_PROCESS, "ReadFileEx() failed: %s",
              format_win32_error(GetLastError()));
+    handle->reached_eof = true;
     return bytes_available;
   }
 





More information about the tor-commits mailing list