Avoid calling time(NULL).

In most cases we can use the cached time.
This commit is contained in:
Guus Sliepen 2013-03-08 14:11:15 +01:00
parent af77e5d475
commit 4c30004cb6
11 changed files with 18 additions and 17 deletions

View file

@ -204,7 +204,7 @@ static void check_reachability(void) {
for splay_each(node_t, n, node_tree) { for splay_each(node_t, n, node_tree) {
if(n->status.visited != n->status.reachable) { if(n->status.visited != n->status.reachable) {
n->status.reachable = !n->status.reachable; n->status.reachable = !n->status.reachable;
n->last_state_change = time(NULL); n->last_state_change = now.tv_sec;
if(n->status.reachable) { if(n->status.reachable) {
logger(DEBUG_TRAFFIC, LOG_DEBUG, "Node %s (%s) became reachable", logger(DEBUG_TRAFFIC, LOG_DEBUG, "Node %s (%s) became reachable",

View file

@ -406,7 +406,7 @@ int reload_configuration(void) {
free(fname); free(fname);
} }
last_config_check = time(NULL); last_config_check = now.tv_sec;
return 0; return 0;
} }

View file

@ -458,7 +458,7 @@ static void send_sptps_packet(node_t *n, vpn_packet_t *origpkt) {
logger(DEBUG_TRAFFIC, LOG_INFO, "No valid key known yet for %s (%s)", n->name, n->hostname); logger(DEBUG_TRAFFIC, LOG_INFO, "No valid key known yet for %s (%s)", n->name, n->hostname);
if(!n->status.waitingforkey) if(!n->status.waitingforkey)
send_req_key(n); send_req_key(n);
else if(n->last_req_key + 10 < time(NULL)) { else if(n->last_req_key + 10 < now.tv_sec) {
logger(DEBUG_ALWAYS, LOG_DEBUG, "No key from %s after 10 seconds, restarting SPTPS", n->name); logger(DEBUG_ALWAYS, LOG_DEBUG, "No key from %s after 10 seconds, restarting SPTPS", n->name);
sptps_stop(&n->sptps); sptps_stop(&n->sptps);
n->status.waitingforkey = false; n->status.waitingforkey = false;

View file

@ -751,7 +751,7 @@ static bool setup_myself(void) {
myself->nexthop = myself; myself->nexthop = myself;
myself->via = myself; myself->via = myself;
myself->status.reachable = true; myself->status.reachable = true;
myself->last_state_change = time(NULL); myself->last_state_change = now.tv_sec;
myself->status.sptps = experimental; myself->status.sptps = experimental;
node_add(myself); node_add(myself);
@ -958,7 +958,7 @@ static bool setup_myself(void) {
return false; return false;
} }
last_config_check = time(NULL); last_config_check = now.tv_sec;
return true; return true;
} }

View file

@ -294,7 +294,7 @@ void retry_outgoing(outgoing_t *outgoing) {
void finish_connecting(connection_t *c) { void finish_connecting(connection_t *c) {
logger(DEBUG_CONNECTIONS, LOG_INFO, "Connected to %s (%s)", c->name, c->hostname); logger(DEBUG_CONNECTIONS, LOG_INFO, "Connected to %s (%s)", c->name, c->hostname);
c->last_ping_time = time(NULL); c->last_ping_time = now.tv_sec;
c->status.connecting = false; c->status.connecting = false;
send_id(c); send_id(c);
@ -508,7 +508,7 @@ begin:
c->outdigest = myself->connection->outdigest; c->outdigest = myself->connection->outdigest;
c->outmaclength = myself->connection->outmaclength; c->outmaclength = myself->connection->outmaclength;
c->outcompression = myself->connection->outcompression; c->outcompression = myself->connection->outcompression;
c->last_ping_time = time(NULL); c->last_ping_time = now.tv_sec;
connection_add(c); connection_add(c);
@ -571,7 +571,7 @@ void handle_new_meta_connection(void *data, int flags) {
c->address = sa; c->address = sa;
c->hostname = sockaddr2hostname(&sa); c->hostname = sockaddr2hostname(&sa);
c->socket = fd; c->socket = fd;
c->last_ping_time = time(NULL); c->last_ping_time = now.tv_sec;
logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Connection from %s", c->hostname); logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Connection from %s", c->hostname);
@ -610,7 +610,7 @@ void handle_new_unix_connection(void *data, int flags) {
c->address = sa; c->address = sa;
c->hostname = xstrdup("localhost port unix"); c->hostname = xstrdup("localhost port unix");
c->socket = fd; c->socket = fd;
c->last_ping_time = time(NULL); c->last_ping_time = now.tv_sec;
logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Connection from %s", c->hostname); logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Connection from %s", c->hostname);

View file

@ -195,7 +195,7 @@ bool seen_request(const char *request) {
} else { } else {
new = xmalloc(sizeof *new); new = xmalloc(sizeof *new);
new->request = xstrdup(request); new->request = xstrdup(request);
new->firstseen = time(NULL); new->firstseen = now.tv_sec;
splay_insert(past_request_tree, new); splay_insert(past_request_tree, new);
timeout_add(&past_request_timeout, age_past_requests, NULL, &(struct timeval){10, rand() % 100000}); timeout_add(&past_request_timeout, age_past_requests, NULL, &(struct timeval){10, rand() % 100000});
return false; return false;

View file

@ -160,7 +160,7 @@ bool id_h(connection_t *c, const char *request) {
if(name[0] == '^' && !strcmp(name + 1, controlcookie)) { if(name[0] == '^' && !strcmp(name + 1, controlcookie)) {
c->status.control = true; c->status.control = true;
c->allow_request = CONTROL; c->allow_request = CONTROL;
c->last_ping_time = time(NULL) + 3600; c->last_ping_time = now.tv_sec + 3600;
free(c->name); free(c->name);
c->name = xstrdup("<control>"); c->name = xstrdup("<control>");

View file

@ -111,7 +111,7 @@ bool send_req_key(node_t *to) {
sptps_stop(&to->sptps); sptps_stop(&to->sptps);
to->status.validkey = false; to->status.validkey = false;
to->status.waitingforkey = true; to->status.waitingforkey = true;
to->last_req_key = time(NULL); to->last_req_key = now.tv_sec;
to->incompression = myself->incompression; to->incompression = myself->incompression;
return sptps_start(&to->sptps, to, true, true, myself->connection->ecdsa, to->ecdsa, label, sizeof label, send_initial_sptps_data, receive_sptps_record); return sptps_start(&to->sptps, to, true, true, myself->connection->ecdsa, to->ecdsa, label, sizeof label, send_initial_sptps_data, receive_sptps_record);
} }
@ -169,7 +169,7 @@ static bool req_key_ext_h(connection_t *c, const char *request, node_t *from, in
sptps_stop(&from->sptps); sptps_stop(&from->sptps);
from->status.validkey = false; from->status.validkey = false;
from->status.waitingforkey = true; from->status.waitingforkey = true;
from->last_req_key = time(NULL); from->last_req_key = now.tv_sec;
sptps_start(&from->sptps, from, false, true, myself->connection->ecdsa, from->ecdsa, label, sizeof label, send_sptps_data, receive_sptps_record); sptps_start(&from->sptps, from, false, true, myself->connection->ecdsa, from->ecdsa, label, sizeof label, send_sptps_data, receive_sptps_record);
sptps_receive_data(&from->sptps, buf, len); sptps_receive_data(&from->sptps, buf, len);
return true; return true;

View file

@ -89,7 +89,7 @@ bool termreq_h(connection_t *c, const char *request) {
bool send_ping(connection_t *c) { bool send_ping(connection_t *c) {
c->status.pinged = true; c->status.pinged = true;
c->last_ping_time = time(NULL); c->last_ping_time = now.tv_sec;
return send_request(c, "%d", PING); return send_request(c, "%d", PING);
} }

View file

@ -229,7 +229,7 @@ static void learn_mac(mac_t *address) {
subnet = new_subnet(); subnet = new_subnet();
subnet->type = SUBNET_MAC; subnet->type = SUBNET_MAC;
subnet->expires = time(NULL) + macexpire; subnet->expires = now.tv_sec + macexpire;
subnet->net.mac.address = *address; subnet->net.mac.address = *address;
subnet->weight = 10; subnet->weight = 10;
subnet_add(myself, subnet); subnet_add(myself, subnet);
@ -244,7 +244,7 @@ static void learn_mac(mac_t *address) {
timeout_add(&age_subnets_timeout, age_subnets, NULL, &(struct timeval){10, rand() % 100000}); timeout_add(&age_subnets_timeout, age_subnets, NULL, &(struct timeval){10, rand() % 100000});
} else { } else {
if(subnet->expires) if(subnet->expires)
subnet->expires = time(NULL) + macexpire; subnet->expires = now.tv_sec + macexpire;
} }
} }

View file

@ -346,7 +346,8 @@ int main(int argc, char **argv) {
/* Slllluuuuuuurrrrp! */ /* Slllluuuuuuurrrrp! */
srand(time(NULL)); gettimeofday(&now, NULL);
srand(now.tv_sec + now.tv_usec);
crypto_init(); crypto_init();
if(!read_server_config()) if(!read_server_config())