From 82814e18ec55ff08134222b7582090783f8c2513 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Mon, 18 May 2015 16:00:13 +0100 Subject: [PATCH] Log the client process ID for Windows named pipes too. Turns out it didn't take much googling to find the right API function. (cherry picked from commit 5fc4bbf59d420af5019dc086e558e18454eab6b5) --- windows/winhsock.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/windows/winhsock.c b/windows/winhsock.c index 6b088bb8..f52d5211 100644 --- a/windows/winhsock.c +++ b/windows/winhsock.c @@ -236,6 +236,26 @@ static const char *sk_handle_socket_error(Socket s) static char *sk_handle_peer_info(Socket s) { + Handle_Socket ps = (Handle_Socket) s; + ULONG pid; + static HMODULE kernel32_module; + DECL_WINDOWS_FUNCTION(static, BOOL, GetNamedPipeClientProcessId, + (HANDLE, PULONG)); + + if (!kernel32_module) { + kernel32_module = load_system32_dll("kernel32.dll"); + GET_WINDOWS_FUNCTION(kernel32_module, GetNamedPipeClientProcessId); + } + + /* + * Of course, not all handles managed by this module will be + * server ends of named pipes, but if they are, then it's useful + * to log what we can find out about the client end. + */ + if (p_GetNamedPipeClientProcessId && + p_GetNamedPipeClientProcessId(ps->send_H, &pid)) + return dupprintf("process id %lu", (unsigned long)pid); + return NULL; } -- 2.45.2