summaryrefslogtreecommitdiffstats
path: root/libexec/talkd/table.c
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/talkd/table.c')
-rw-r--r--libexec/talkd/table.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/libexec/talkd/table.c b/libexec/talkd/table.c
index 70b71b2..f742cf6 100644
--- a/libexec/talkd/table.c
+++ b/libexec/talkd/table.c
@@ -60,7 +60,7 @@ static const char rcsid[] =
#define NIL ((TABLE_ENTRY *)0)
-static struct timeval tp;
+static struct timespec ts;
typedef struct table_entry TABLE_ENTRY;
@@ -82,14 +82,15 @@ static TABLE_ENTRY *table = NIL;
CTL_MSG *
find_match(CTL_MSG *request)
{
- TABLE_ENTRY *ptr;
+ TABLE_ENTRY *ptr, *next;
time_t current_time;
- gettimeofday(&tp, NULL);
- current_time = tp.tv_sec;
+ clock_gettime(CLOCK_MONOTONIC_FAST, &ts);
+ current_time = ts.tv_sec;
if (debug)
print_request("find_match", request);
- for (ptr = table; ptr != NIL; ptr = ptr->next) {
+ for (ptr = table; ptr != NIL; ptr = next) {
+ next = ptr->next;
if ((ptr->time - current_time) > MAX_LIFE) {
/* the entry is too old */
if (debug)
@@ -115,18 +116,19 @@ find_match(CTL_MSG *request)
CTL_MSG *
find_request(CTL_MSG *request)
{
- TABLE_ENTRY *ptr;
+ TABLE_ENTRY *ptr, *next;
time_t current_time;
- gettimeofday(&tp, NULL);
- current_time = tp.tv_sec;
+ clock_gettime(CLOCK_MONOTONIC_FAST, &ts);
+ current_time = ts.tv_sec;
/*
* See if this is a repeated message, and check for
* out of date entries in the table while we are it.
*/
if (debug)
print_request("find_request", request);
- for (ptr = table; ptr != NIL; ptr = ptr->next) {
+ for (ptr = table; ptr != NIL; ptr = next) {
+ next = ptr->next;
if ((ptr->time - current_time) > MAX_LIFE) {
/* the entry is too old */
if (debug)
@@ -155,8 +157,8 @@ insert_table(CTL_MSG *request, CTL_RESPONSE *response)
TABLE_ENTRY *ptr;
time_t current_time;
- gettimeofday(&tp, NULL);
- current_time = tp.tv_sec;
+ clock_gettime(CLOCK_MONOTONIC_FAST, &ts);
+ current_time = ts.tv_sec;
request->id_num = new_id();
response->id_num = htonl(request->id_num);
/* insert a new entry into the top of the list */
OpenPOWER on IntegriCloud