Skip to content

Commit fa7ce91

Browse files
committed
Log session length in disconnection message
1 parent c20f741 commit fa7ce91

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

packet.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@ struct session_state {
193193
u_int32_t rekey_interval; /* how often in seconds */
194194
time_t rekey_time; /* time of last rekeying */
195195

196+
/* Start time of session */
197+
time_t session_start_time;
198+
196199
/* roundup current message to extra_pad bytes */
197200
u_char extra_pad;
198201

@@ -249,6 +252,7 @@ ssh_alloc_session_state(void)
249252
state->packet_timeout_ms = -1;
250253
state->p_send.packets = state->p_read.packets = 0;
251254
state->initialized = 1;
255+
state->session_start_time = monotime();
252256
/*
253257
* ssh_packet_send2() needs to queue packets until
254258
* we've done the initial key exchange.
@@ -2008,7 +2012,10 @@ sshpkt_vfatal(struct ssh *ssh, int r, const char *fmt, va_list ap)
20082012
ssh->state->server_side ? "from" : "to", remote_id);
20092013
case SSH_ERR_DISCONNECTED:
20102014
ssh_packet_clear_keys(ssh);
2011-
logdie("Disconnected from %s", remote_id);
2015+
time_t session_end_time = monotime();
2016+
time_t session_length = session_end_time - ssh->state->session_start_time;
2017+
logdie("Disconnected from %s. Session length: %lu:%02lu:%02lu", remote_id,
2018+
session_length / 3600, (session_length % 3600) / 60, session_length % 60);
20122019
case SSH_ERR_SYSTEM_ERROR:
20132020
if (errno == ECONNRESET) {
20142021
ssh_packet_clear_keys(ssh);

0 commit comments

Comments
 (0)