Mercurial > dovecot > core-2.2
changeset 22628:8623737c0129
director: Track connections' last ping time
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 26 Oct 2017 14:07:56 +0300 |
parents | bcb064465b54 |
children | 0281041d5067 |
files | src/director/director-connection.c src/director/director-connection.h |
diffstat | 2 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/director/director-connection.c Thu Oct 26 13:07:30 2017 +0300 +++ b/src/director/director-connection.c Thu Oct 26 14:07:56 2017 +0300 @@ -106,6 +106,9 @@ struct timeval last_input, last_output; size_t peak_bytes_buffered; + struct timeval ping_sent_time; + unsigned int last_ping_msecs; + /* for incoming connections the director host isn't known until ME-line is received */ struct director_host *host; @@ -1703,6 +1706,10 @@ conn->ping_waiting = FALSE; timeout_remove(&conn->to_pong); + int ping_msecs = timeval_diff_msecs(&ioloop_timeval, &conn->ping_sent_time); + if (ping_msecs >= 0) + conn->last_ping_msecs = ping_msecs; + if (conn->verifying_left) { conn->verifying_left = FALSE; if (conn == conn->dir->left) { @@ -2343,6 +2350,7 @@ director_connection_pong_timeout, conn); director_connection_send(conn, "PING\n"); conn->ping_waiting = TRUE; + conn->ping_sent_time = ioloop_timeval; } const char *director_connection_get_name(struct director_connection *conn) @@ -2411,4 +2419,5 @@ status_r->peak_bytes_buffered = conn->peak_bytes_buffered; status_r->last_input = conn->last_input; status_r->last_output = conn->last_output; + status_r->last_ping_msecs = conn->last_ping_msecs; }
--- a/src/director/director-connection.h Thu Oct 26 13:07:30 2017 +0300 +++ b/src/director/director-connection.h Thu Oct 26 14:07:56 2017 +0300 @@ -5,6 +5,7 @@ uoff_t bytes_read, bytes_sent; size_t bytes_buffered, peak_bytes_buffered; struct timeval last_input, last_output; + unsigned int last_ping_msecs; }; struct director_host;