Keep track of the time of the last message received from any client

This commit is contained in:
Pierre Pronchery 2014-03-30 10:39:40 +02:00
parent 2541d95b28
commit 5b6ce6150c

View File

@ -23,6 +23,7 @@
# include <stdio.h> # include <stdio.h>
#endif #endif
#include <string.h> #include <string.h>
#include <time.h>
#include <limits.h> #include <limits.h>
#include <errno.h> #include <errno.h>
#ifdef __WIN32__ #ifdef __WIN32__
@ -56,6 +57,7 @@ typedef struct _UDPClient
{ {
AppTransportClient * client; AppTransportClient * client;
time_t time;
struct sockaddr * sa; struct sockaddr * sa;
socklen_t sa_len; socklen_t sa_len;
} UDPClient; } UDPClient;
@ -397,6 +399,8 @@ static int _udp_client_init(UDPClient * client, struct sockaddr * sa,
free(client->sa); free(client->sa);
return -1; return -1;
} }
/* XXX we can ignore errors here */
client->time = time(NULL);
memcpy(client->sa, sa, sa_len); memcpy(client->sa, sa, sa_len);
client->sa_len = sa_len; client->sa_len = sa_len;
return 0; return 0;
@ -519,6 +523,8 @@ static void _callback_read_server(UDP * udp, struct sockaddr * sa,
} }
udp->u.server.clients_cnt++; udp->u.server.clients_cnt++;
} }
else
udp->u.server.clients[i]->time = time(NULL);
client = udp->u.server.clients[i]->client; client = udp->u.server.clients[i]->client;
helper->client_receive(helper->transport, client, message); helper->client_receive(helper->transport, client, message);
#ifdef DEBUG #ifdef DEBUG