[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 1/4] Ensure handles are closed when pipe disconnects
From: Owen Smith <owen.smith@xxxxxxxxxx> Fixes leaks where the pipe handles were not closed, preventing new connections. Fixes the MONITOR_PIPE context leaking when its thread is stopped. Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> --- src/monitor/monitor.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index 3e535e4..112ce65 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -469,6 +469,10 @@ PipeThread( CloseHandle(Overlapped.hEvent); + CloseHandle(Pipe->Pipe); + CloseHandle(Pipe->Thread); + free(Pipe); + Log("<===="); return 0; @@ -525,7 +529,7 @@ ServerThread( 0, NULL); if (Pipe == INVALID_HANDLE_VALUE) - break; + goto fail2; (VOID) ConnectNamedPipe(Pipe, &Overlapped); @@ -534,15 +538,17 @@ ServerThread( Handle, FALSE, INFINITE); - if (Object == WAIT_OBJECT_0) + if (Object == WAIT_OBJECT_0) { + CloseHandle(Pipe); break; + } ResetEvent(Overlapped.hEvent); Instance = (PMONITOR_PIPE)malloc(sizeof(MONITOR_PIPE)); if (Instance == NULL) { CloseHandle(Pipe); - break; + goto fail3; } __InitializeListHead(&Instance->ListEntry); @@ -557,7 +563,7 @@ ServerThread( if (Instance->Thread == INVALID_HANDLE_VALUE) { free(Instance); CloseHandle(Pipe); - break; + goto fail4; } } @@ -567,6 +573,12 @@ ServerThread( return 0; +fail4: + Log("fail4\n"); +fail3: + Log("fail3\n"); +fail2: + Log("fail2\n"); fail1: Error = GetLastError(); -- 2.8.3 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |