summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--session.h3
-rw-r--r--svr-chansession.c5
-rw-r--r--svr-session.c3
3 files changed, 7 insertions, 4 deletions
diff --git a/session.h b/session.h
index 128214b..20a90a4 100644
--- a/session.h
+++ b/session.h
@@ -211,6 +211,9 @@ struct serversession {
/* The numeric address they connected from, used for logging */
char * addrstring;
+ /* The resolved remote address, used for lastlog etc */
+ char *remotehost;
+
#ifdef __uClinux__
pid_t server_pid;
#endif
diff --git a/svr-chansession.c b/svr-chansession.c
index 782e97f..5ecc57f 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -253,12 +253,9 @@ static int newchansess(struct Channel *channel) {
static struct logininfo*
chansess_login_alloc(struct ChanSess *chansess) {
- char *remotehost;
struct logininfo * li;
- get_socket_address(ses.sock_in, NULL, NULL, &remotehost, NULL, 1);
li = login_alloc_entry(chansess->pid, ses.authstate.username,
- remotehost, chansess->tty);
- m_free(remotehost);
+ svr_ses.remotehost, chansess->tty);
return li;
}
diff --git a/svr-session.c b/svr-session.c
index a509906..da49e1a 100644
--- a/svr-session.c
+++ b/svr-session.c
@@ -101,6 +101,9 @@ void svr_session(int sock, int childpipe) {
m_free(host);
m_free(port);
+ get_socket_address(ses.sock_in, NULL, NULL,
+ &svr_ses.remotehost, NULL, 1);
+
/* set up messages etc */
ses.remoteclosed = svr_remoteclosed;