From 3131d8bc717b2fad9b5e13a1ac1b1c1b726b3dd4 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Fri, 31 Dec 1999 09:42:24 +1100 Subject: - Fill in ut_utaddr utmp field. Report from Benjamin Charron --- ChangeLog | 2 ++ TODO | 14 ++++++++++++++ acconfig.h | 6 ++++++ configure.in | 10 ++++++++++ login.c | 8 +++++++- 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d36fbc079..9221ae962 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,8 @@ - Prevent typedefs from being compiled more than once. Report from Marc G. Fournier + - Fill in ut_utaddr utmp field. Report from Benjamin Charron + 19991230 - OpenBSD CVS updates: diff --git a/TODO b/TODO index ddd54621b..5d0ba5fd0 100644 --- a/TODO +++ b/TODO @@ -7,3 +7,17 @@ - Replace the horror in acconfig.h which tries to comphensate for the lack of u_intXX_t types. There must be a better way. +- Hanging on logout: + +localhost$ ssh remotehost +remotehost$ sleep 20 & +remotehost$ logout +(ssh hangs at logout for 20 seconds) + +Worse: + +localhost$ ssh root@remotehost +remotehost# httpd +remotehost# logout +(ssh hangs at logout forever) + diff --git a/acconfig.h b/acconfig.h index 3331a13f9..d0feb370d 100644 --- a/acconfig.h +++ b/acconfig.h @@ -43,6 +43,12 @@ /* Define is utmpx.h has a ut_host field */ #undef HAVE_HOST_IN_UTMPX +/* Define is utmp.h has a ut_addr field */ +#undef HAVE_ADDR_IN_UTMP + +/* Define is utmpx.h has a ut_addr field */ +#undef HAVE_ADDR_IN_UTMPX + /* Define is utmpx.h has a syslen field */ #undef HAVE_SYSLEN_IN_UTMPX diff --git a/configure.in b/configure.in index dd3e16841..e9b2e69b0 100644 --- a/configure.in +++ b/configure.in @@ -325,6 +325,16 @@ AC_EGREP_HEADER(ut_id, utmp.h, [AC_DEFINE(HAVE_ID_IN_UTMP) AC_MSG_RESULT(yes); ], [AC_MSG_RESULT(no)] ) +AC_MSG_CHECKING([whether utmp.h has ut_addr field]) +AC_EGREP_HEADER(ut_addr, utmp.h, + [AC_DEFINE(HAVE_ADDR_IN_UTMP) AC_MSG_RESULT(yes); ], + [AC_MSG_RESULT(no)] +) +AC_MSG_CHECKING([whether utmpx.h has ut_addr field]) +AC_EGREP_HEADER(ut_addr, utmpx.h, + [AC_DEFINE(HAVE_ADDR_IN_UTMP) AC_MSG_RESULT(yes); ], + [AC_MSG_RESULT(no)] +) dnl Look for lastlog location AC_ARG_WITH(lastlog, diff --git a/login.c b/login.c index 5c58d814d..3dd208aa8 100644 --- a/login.c +++ b/login.c @@ -18,7 +18,7 @@ */ #include "includes.h" -RCSID("$Id: login.c,v 1.15 1999/12/28 15:32:22 damien Exp $"); +RCSID("$Id: login.c,v 1.16 1999/12/30 22:42:24 damien Exp $"); #if defined(HAVE_UTMPX_H) && defined(USE_UTMPX) # include @@ -159,6 +159,9 @@ record_login(int pid, const char *ttyname, const char *user, uid_t uid, #if defined(HAVE_HOST_IN_UTMP) strncpy(u.ut_host, host, sizeof(u.ut_host)); #endif +#if defined(HAVE_ADDR_IN_UTMP) + u.ut_addr = addr->sin_addr.s_addr; +#endif #if defined(HAVE_UTMPX_H) && defined(USE_UTMPX) memset(&utx, 0, sizeof(utx)); @@ -176,6 +179,9 @@ record_login(int pid, const char *ttyname, const char *user, uid_t uid, strncpy(utx.ut_host, host, sizeof(utx.ut_host)); # endif /* HAVE_SYSLEN_IN_UTMPX */ # endif +# if defined(HAVE_ADDR_IN_UTMPX) + utx.ut_addr = addr->sin_addr.s_addr; +# endif #endif /* defined(HAVE_UTMPX_H) && defined(USE_UTMPX) */ /*#if defined(HAVE_UTMPX_H) && defined(USE_UTMPX) && !defined(HAVE_LOGIN)*/ -- cgit v1.2.3