summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/relay/relay-client.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/plugins/relay/relay-client.c b/src/plugins/relay/relay-client.c
index 84078a577..dc510e32a 100644
--- a/src/plugins/relay/relay-client.c
+++ b/src/plugins/relay/relay-client.c
@@ -1795,6 +1795,9 @@ relay_client_set_status (struct t_relay_client *client,
enum t_relay_status status)
{
struct t_relay_server *ptr_server;
+ int old_status;
+
+ old_status = client->status;
/*
* IMPORTANT: if changes are made in this function or sub-functions called,
@@ -1820,9 +1823,16 @@ relay_client_set_status (struct t_relay_client *client,
{
client->end_time = time (NULL);
- ptr_server = relay_server_search (client->protocol_string);
- if (ptr_server)
- ptr_server->last_client_disconnect = client->end_time;
+ if (old_status == RELAY_STATUS_CONNECTED)
+ {
+ /*
+ * set the last client disconnect time
+ * (only if the client was connected)
+ */
+ ptr_server = relay_server_search (client->protocol_string);
+ if (ptr_server)
+ ptr_server->last_client_disconnect = client->end_time;
+ }
relay_client_outqueue_free_all (client);