]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Log the client process ID for Windows named pipes too.
authorSimon Tatham <anakin@pobox.com>
Mon, 18 May 2015 15:00:13 +0000 (16:00 +0100)
committerSimon Tatham <anakin@pobox.com>
Mon, 18 May 2015 15:00:13 +0000 (16:00 +0100)
Turns out it didn't take much googling to find the right API function.

windows/winhsock.c

index 6b088bb8217336d10cb693e311d1ec99be600402..f52d5211572f3ad1e98d6194dd6793e777f9b11e 100644 (file)
@@ -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;
 }