X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=windows%2Fwinhsock.c;h=f52d5211572f3ad1e98d6194dd6793e777f9b11e;hb=a063e522970946bf7d5dc052079d7773c0dee76d;hp=701b46da5d193bc8b748e10e7c791bb0007589a6;hpb=9093071faaddeb52428d6f1f3afccb1ac4d9ad48;p=PuTTY.git diff --git a/windows/winhsock.c b/windows/winhsock.c index 701b46da..f52d5211 100644 --- a/windows/winhsock.c +++ b/windows/winhsock.c @@ -42,8 +42,6 @@ struct Socket_handle_tag { char *error; Plug plug; - - void *privptr; }; static int handle_gotdata(struct handle *h, void *data, int len) @@ -136,18 +134,6 @@ static void sk_handle_flush(Socket s) /* do nothing */ } -static void sk_handle_set_private_ptr(Socket s, void *ptr) -{ - Handle_Socket ps = (Handle_Socket) s; - ps->privptr = ptr; -} - -static void *sk_handle_get_private_ptr(Socket s) -{ - Handle_Socket ps = (Handle_Socket) s; - return ps->privptr; -} - static void handle_socket_unfreeze(void *psv) { Handle_Socket ps = (Handle_Socket) psv; @@ -248,6 +234,31 @@ static const char *sk_handle_socket_error(Socket s) return ps->error; } +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; +} + Socket make_handle_socket(HANDLE send_H, HANDLE recv_H, Plug plug, int overlapped) { @@ -258,10 +269,9 @@ Socket make_handle_socket(HANDLE send_H, HANDLE recv_H, Plug plug, sk_handle_write_oob, sk_handle_write_eof, sk_handle_flush, - sk_handle_set_private_ptr, - sk_handle_get_private_ptr, sk_handle_set_frozen, - sk_handle_socket_error + sk_handle_socket_error, + sk_handle_peer_info, }; Handle_Socket ret;