From: Timo Sirainen Date: Sat, 19 Jun 2004 21:24:55 +0000 (+0300) Subject: if socket is leaked, show also the remote side of it X-Git-Tag: 1.1.alpha1~3923 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d7d26315bf62164c2b95635ae724da11bd608e9;p=thirdparty%2Fdovecot%2Fcore.git if socket is leaked, show also the remote side of it --HG-- branch : HEAD --- diff --git a/src/lib/fd-close-on-exec.c b/src/lib/fd-close-on-exec.c index 214e4ed8bb..3ac139108a 100644 --- a/src/lib/fd-close-on-exec.c +++ b/src/lib/fd-close-on-exec.c @@ -24,8 +24,8 @@ void fd_close_on_exec(int fd, int set) void fd_debug_verify_leaks(int first_fd, int last_fd) { - struct ip_addr addr; - unsigned int port; + struct ip_addr addr, raddr; + unsigned int port, rport; struct stat st; while (first_fd < last_fd) { @@ -46,8 +46,14 @@ void fd_debug_verify_leaks(int first_fd, int last_fd) first_fd, sa.sun_path); } - i_panic("Leaked socket fd %d: %s:%u", - first_fd, net_ip2addr(&addr), port); + if (net_getpeername(first_fd, + &raddr, &rport) < 0) { + memset(&raddr, 0, sizeof(raddr)); + rport = 0; + } + i_panic("Leaked socket fd %d: %s:%u -> %s:%u", + first_fd, net_ip2addr(&addr), port, + net_ip2addr(&raddr), rport); } if (fstat(first_fd, &st) == 0) {