aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2003-10-04 03:29:09 +0000
committerRoger Dingledine <arma@torproject.org>2003-10-04 03:29:09 +0000
commitbe874358a4385d8d6bd7f82d3f372bb79055033c (patch)
tree72b615a6357820b49e9a66ab32c3554463a7834c /src/or
parentf563bbd2f988cd1f6ca292f89a47a86f98fe0e8d (diff)
downloadtor-be874358a4385d8d6bd7f82d3f372bb79055033c.tar
tor-be874358a4385d8d6bd7f82d3f372bb79055033c.tar.gz
wrap strdup; prefer time() to gettimeofday()
svn:r538
Diffstat (limited to 'src/or')
-rw-r--r--src/or/circuit.c5
-rw-r--r--src/or/command.c16
-rw-r--r--src/or/config.c10
-rw-r--r--src/or/connection.c20
-rw-r--r--src/or/connection_edge.c2
-rw-r--r--src/or/connection_or.c4
-rw-r--r--src/or/cpuworker.c2
-rw-r--r--src/or/directory.c4
-rw-r--r--src/or/dirserv.c12
-rw-r--r--src/or/dns.c4
-rw-r--r--src/or/main.c14
-rw-r--r--src/or/routers.c18
12 files changed, 47 insertions, 64 deletions
diff --git a/src/or/circuit.c b/src/or/circuit.c
index f39b16080..356e89559 100644
--- a/src/or/circuit.c
+++ b/src/or/circuit.c
@@ -58,14 +58,11 @@ void circuit_remove(circuit_t *circ) {
circuit_t *circuit_new(aci_t p_aci, connection_t *p_conn) {
circuit_t *circ;
- struct timeval now;
-
- my_gettimeofday(&now);
circ = (circuit_t *)tor_malloc(sizeof(circuit_t));
memset(circ,0,sizeof(circuit_t)); /* zero it out */
- circ->timestamp_created = now.tv_sec;
+ circ->timestamp_created = time(NULL);
circ->p_aci = p_aci;
circ->p_conn = p_conn;
diff --git a/src/or/command.c b/src/or/command.c
index 6195e5c13..8caabf41d 100644
--- a/src/or/command.c
+++ b/src/or/command.c
@@ -25,11 +25,11 @@ static void command_time_process_cell(cell_t *cell, connection_t *conn,
*num += 1;
- my_gettimeofday(&start);
+ tor_gettimeofday(&start);
(*func)(cell, conn);
- my_gettimeofday(&end);
+ tor_gettimeofday(&end);
time_passed = tv_udiff(&start, &end) ;
if (time_passed > 5000) { /* more than 5ms */
@@ -38,17 +38,13 @@ static void command_time_process_cell(cell_t *cell, connection_t *conn,
*time += time_passed;
}
-
-
void command_process_cell(cell_t *cell, connection_t *conn) {
static int num_create=0, num_created=0, num_relay=0, num_destroy=0;
static int create_time=0, created_time=0, relay_time=0, destroy_time=0;
- static long current_second = 0; /* from previous calls to gettimeofday */
- struct timeval now;
-
- my_gettimeofday(&now);
+ static time_t current_second = 0; /* from previous calls to time */
+ time_t now = time(NULL);
- if(now.tv_sec > current_second) { /* the second has rolled over */
+ if(now > current_second) { /* the second has rolled over */
/* print stats */
log(LOG_INFO,"At end of second:");
log(LOG_INFO,"Create: %d (%d ms)", num_create, create_time/1000);
@@ -61,7 +57,7 @@ void command_process_cell(cell_t *cell, connection_t *conn) {
create_time = created_time = relay_time = destroy_time = 0;
/* remember which second it is, for next time */
- current_second = now.tv_sec;
+ current_second = now;
}
switch(cell->command) {
diff --git a/src/or/config.c b/src/or/config.c
index 0f2b415b4..bf0a59ca7 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -61,8 +61,8 @@ static struct config_line *config_get_commandlines(int argc, char **argv) {
s = argv[i];
while(*s == '-')
s++;
- new->key = strdup(s);
- new->value = strdup(argv[i+1]);
+ new->key = tor_strdup(s);
+ new->value = tor_strdup(argv[i+1]);
log(LOG_DEBUG,"Commandline: parsed keyword '%s', value '%s'",
new->key, new->value);
@@ -85,8 +85,8 @@ static struct config_line *config_get_lines(FILE *f) {
while( (result=parse_line_from_file(line,sizeof(line),f,&key,&value)) > 0) {
new = tor_malloc(sizeof(struct config_line));
- new->key = strdup(key);
- new->value = strdup(value);
+ new->key = tor_strdup(key);
+ new->value = tor_strdup(value);
new->next = front;
front = new;
@@ -131,7 +131,7 @@ static int config_compare(struct config_line *c, char *key, int type, void *arg)
*(int *)arg = i;
break;
case CONFIG_TYPE_STRING:
- *(char **)arg = strdup(c->value);
+ *(char **)arg = tor_strdup(c->value);
break;
case CONFIG_TYPE_DOUBLE:
*(double *)arg = atof(c->value);
diff --git a/src/or/connection.c b/src/or/connection.c
index 918aa6654..bc9064920 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -73,9 +73,7 @@ static int connection_init_accepted_conn(connection_t *conn);
connection_t *connection_new(int type) {
connection_t *conn;
- struct timeval now;
-
- my_gettimeofday(&now);
+ time_t now = time(NULL);
conn = (connection_t *)tor_malloc(sizeof(connection_t));
memset(conn,0,sizeof(connection_t)); /* zero it out to start */
@@ -84,9 +82,9 @@ connection_t *connection_new(int type) {
conn->inbuf = buf_new();
conn->outbuf = buf_new();
- conn->timestamp_created = now.tv_sec;
- conn->timestamp_lastread = now.tv_sec;
- conn->timestamp_lastwritten = now.tv_sec;
+ conn->timestamp_created = now;
+ conn->timestamp_lastread = now;
+ conn->timestamp_lastwritten = now;
return conn;
}
@@ -195,7 +193,7 @@ int connection_handle_listener_read(connection_t *conn, int new_type) {
newconn = connection_new(new_type);
newconn->s = news;
- newconn->address = strdup(inet_ntoa(remote.sin_addr)); /* remember the remote address */
+ newconn->address = tor_strdup(inet_ntoa(remote.sin_addr)); /* remember the remote address */
newconn->addr = ntohl(remote.sin_addr.s_addr);
newconn->port = ntohs(remote.sin_port);
@@ -309,10 +307,8 @@ int retry_all_connections(uint16_t or_listenport, uint16_t ap_listenport, uint16
}
int connection_handle_read(connection_t *conn) {
- struct timeval now;
- my_gettimeofday(&now);
- conn->timestamp_lastread = now.tv_sec;
+ conn->timestamp_lastread = time(NULL);
switch(conn->type) {
case CONN_TYPE_OR_LISTENER:
@@ -433,15 +429,13 @@ int connection_flush_buf(connection_t *conn) {
/* return -1 if you want to break the conn, else return 0 */
int connection_handle_write(connection_t *conn) {
- struct timeval now;
if(connection_is_listener(conn)) {
log_fn(LOG_WARNING,"Got a listener socket. Can't happen!");
return -1;
}
- my_gettimeofday(&now);
- conn->timestamp_lastwritten = now.tv_sec;
+ conn->timestamp_lastwritten = time(NULL);
if(connection_speaks_cells(conn) && conn->state != OR_CONN_STATE_CONNECTING) {
if(conn->state == OR_CONN_STATE_HANDSHAKING) {
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 9bba3c99c..b8a5d3eec 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -577,7 +577,7 @@ static int connection_ap_handshake_socks_reply(connection_t *conn, char *reply,
n_stream = connection_new(CONN_TYPE_EXIT);
memcpy(n_stream->stream_id, cell->payload + RELAY_HEADER_SIZE, STREAM_ID_SIZE);
- n_stream->address = strdup(cell->payload + RELAY_HEADER_SIZE + STREAM_ID_SIZE);
+ n_stream->address = tor_strdup(cell->payload + RELAY_HEADER_SIZE + STREAM_ID_SIZE);
n_stream->port = atoi(colon+1);
n_stream->state = EXIT_CONN_STATE_RESOLVING;
n_stream->s = -1; /* not yet valid */
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index 0a1e41406..5ee63b27d 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -83,10 +83,10 @@ void connection_or_init_conn_from_router(connection_t *conn, routerinfo_t *route
conn->onion_pkey = crypto_pk_dup_key(router->onion_pkey);
conn->link_pkey = crypto_pk_dup_key(router->link_pkey);
conn->identity_pkey = crypto_pk_dup_key(router->identity_pkey);
- conn->nickname = strdup(router->nickname);
+ conn->nickname = tor_strdup(router->nickname);
if(conn->address)
free(conn->address);
- conn->address = strdup(router->address);
+ conn->address = tor_strdup(router->address);
}
connection_t *connection_or_connect(routerinfo_t *router) {
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 1b9e5d8d1..85ba9ec1a 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -184,7 +184,7 @@ static int spawn_cpuworker(void) {
/* set up conn so it's got all the data we need to remember */
conn->s = fd[0];
- conn->address = strdup("localhost");
+ conn->address = tor_strdup("localhost");
if(connection_add(conn) < 0) { /* no space, forget it */
log_fn(LOG_WARNING,"connection_add failed. Giving up.");
diff --git a/src/or/directory.c b/src/or/directory.c
index 88854a35c..c302dcdfc 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -45,8 +45,8 @@ void directory_initiate_command(routerinfo_t *router, int command) {
/* set up conn so it's got all the data we need to remember */
conn->addr = router->addr;
conn->port = router->dir_port;
- conn->address = strdup(router->address);
- conn->nickname = strdup(router->nickname);
+ conn->address = tor_strdup(router->address);
+ conn->nickname = tor_strdup(router->nickname);
if (router->identity_pkey)
conn->identity_pkey = crypto_pk_dup_key(router->identity_pkey);
else {
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index afe91a161..9090f6f62 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -29,12 +29,12 @@ add_fingerprint_to_dir(const char *nickname, const char *fp)
for (i = 0; i < n_fingerprints; ++i) {
if (!strcasecmp(fingerprint_list[i].nickname,nickname)) {
free(fingerprint_list[i].fingerprint);
- fingerprint_list[i].fingerprint = strdup(fp);
+ fingerprint_list[i].fingerprint = tor_strdup(fp);
return;
}
}
- fingerprint_list[n_fingerprints].nickname = strdup(nickname);
- fingerprint_list[n_fingerprints].fingerprint = strdup(fp);
+ fingerprint_list[n_fingerprints].nickname = tor_strdup(nickname);
+ fingerprint_list[n_fingerprints].fingerprint = tor_strdup(fp);
++n_fingerprints;
}
@@ -83,8 +83,8 @@ dirserv_parse_fingerprint_file(const char *fname)
}
}
if(i == n_fingerprints_tmp) { /* not a duplicate */
- fingerprint_list_tmp[n_fingerprints_tmp].nickname = strdup(nickname);
- fingerprint_list_tmp[n_fingerprints_tmp].fingerprint = strdup(fingerprint);
+ fingerprint_list_tmp[n_fingerprints_tmp].nickname = tor_strdup(nickname);
+ fingerprint_list_tmp[n_fingerprints_tmp].fingerprint = tor_strdup(fingerprint);
++n_fingerprints_tmp;
}
}
@@ -427,7 +427,7 @@ size_t dirserv_get_directory(const char **directory)
/* Now read the directory we just made in order to update our own
* router lists. This does more signature checking than is strictly
* necessary, but safe is better than sorry. */
- new_directory = strdup(the_directory);
+ new_directory = tor_strdup(the_directory);
/* use a new copy of the dir, since get_dir_from_string scribbles on it */
if (router_get_dir_from_string(new_directory, get_identity_key())) {
log_fn(LOG_ERR, "We just generated a directory we can't parse. Dying.");
diff --git a/src/or/dns.c b/src/or/dns.c
index 75f17c6e6..fdd974268 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -165,7 +165,7 @@ static int assign_to_dnsworker(connection_t *exitconn) {
return -1;
}
- dnsconn->address = strdup(exitconn->address);
+ dnsconn->address = tor_strdup(exitconn->address);
dnsconn->state = DNSWORKER_STATE_BUSY;
num_dnsworkers_busy++;
@@ -381,7 +381,7 @@ static int spawn_dnsworker(void) {
/* set up conn so it's got all the data we need to remember */
conn->s = fd[0];
- conn->address = strdup("localhost");
+ conn->address = tor_strdup("localhost");
if(connection_add(conn) < 0) { /* no space, forget it */
log_fn(LOG_WARNING,"connection_add failed. Giving up.");
diff --git a/src/or/main.c b/src/or/main.c
index 4c5a296c0..e0bec8c78 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -270,7 +270,7 @@ static int prepare_for_poll(void) {
cell_t cell;
circuit_t *circ;
- my_gettimeofday(&now);
+ tor_gettimeofday(&now);
if(now.tv_sec > current_second) { /* the second has rolled over. check more stuff. */
@@ -656,23 +656,22 @@ static void catch(int the_signal) {
static void dumpstats(void) { /* dump stats to stdout */
int i;
connection_t *conn;
- struct timeval now;
+ time_t now = time(NULL);
printf("Dumping stats:\n");
- my_gettimeofday(&now);
for(i=0;i<nfds;i++) {
conn = connection_array[i];
printf("Conn %d (socket %d) type %d (%s), state %d (%s), created %ld secs ago\n",
i, conn->s, conn->type, conn_type_to_string[conn->type],
- conn->state, conn_state_to_string[conn->type][conn->state], now.tv_sec - conn->timestamp_created);
+ conn->state, conn_state_to_string[conn->type][conn->state], now - conn->timestamp_created);
if(!connection_is_listener(conn)) {
printf("Conn %d is to '%s:%d'.\n",i,conn->address, conn->port);
printf("Conn %d: %d bytes waiting on inbuf (last read %ld secs ago)\n",i,
(int)buf_datalen(conn->inbuf),
- now.tv_sec - conn->timestamp_lastread);
- printf("Conn %d: %d bytes waiting on outbuf (last written %ld secs ago)\n",i,(int)buf_datalen(conn->outbuf),
- now.tv_sec - conn->timestamp_lastwritten);
+ now - conn->timestamp_lastread);
+ printf("Conn %d: %d bytes waiting on outbuf (last written %ld secs ago)\n",i,
+ (int)buf_datalen(conn->outbuf), now - conn->timestamp_lastwritten);
}
circuit_dump_by_conn(conn); /* dump info about all the circuits using this conn */
printf("\n");
@@ -703,7 +702,6 @@ static void dumpstats(void) { /* dump stats to stdout */
if (stats_n_seconds_reading)
printf("Average bandwidth used: %d bytes/sec\n",
(int) (stats_n_bytes_read/stats_n_seconds_reading));
-
}
void daemonize(void) {
diff --git a/src/or/routers.c b/src/or/routers.c
index e687321ef..88f7c2edc 100644
--- a/src/or/routers.c
+++ b/src/or/routers.c
@@ -606,7 +606,7 @@ int router_get_dir_from_string_impl(char *s, directory_t **dest,
log_fn(LOG_WARNING, "Invalid recommended-software line");
goto err;
}
- versions = strdup(tok.val.cmd.args[0]);
+ versions = tor_strdup(tok.val.cmd.args[0]);
NEXT_TOK();
TOK_IS(K_RUNNING_ROUTERS, "running-routers");
@@ -801,8 +801,7 @@ routerinfo_t *router_get_entry_from_string(char**s) {
log_fn(LOG_WARNING,"Wrong # of arguments to \"router\"");
goto err;
}
- if (!(router->nickname = strdup(ARGS[0])))
- goto err;
+ router->nickname = tor_strdup(ARGS[0]);
if (strlen(router->nickname) > MAX_NICKNAME_LEN) {
log_fn(LOG_WARNING,"Router nickname too long.");
goto err;
@@ -814,8 +813,7 @@ routerinfo_t *router_get_entry_from_string(char**s) {
}
/* read router.address */
- if (!(router->address = strdup(ARGS[1])))
- goto err;
+ router->address = tor_strdup(ARGS[1]);
router->addr = 0;
/* Read router->or_port */
@@ -975,8 +973,8 @@ static int router_add_exit_policy(routerinfo_t *router,
if(!colon)
goto policy_read_failed;
*colon = 0;
- newe->address = strdup(arg);
- newe->port = strdup(colon+1);
+ newe->address = tor_strdup(arg);
+ newe->port = tor_strdup(colon+1);
log_fn(LOG_DEBUG,"%s %s:%s",
newe->policy_type == EXIT_POLICY_REJECT ? "reject" : "accept",
@@ -1064,8 +1062,8 @@ int router_rebuild_descriptor(void) {
address = localhostname;
}
ri = tor_malloc(sizeof(routerinfo_t));
- ri->address = strdup(address);
- ri->nickname = strdup(options.Nickname);
+ ri->address = tor_strdup(address);
+ ri->nickname = tor_strdup(options.Nickname);
/* No need to set addr. */
ri->or_port = options.ORPort;
ri->ap_port = options.APPort;
@@ -1205,7 +1203,7 @@ int router_dump_router_to_string(char *s, int maxlen, routerinfo_t *router,
s[written+1] = 0;
#ifdef DEBUG_ROUTER_DUMP_ROUTER_TO_STRING
- s_tmp = s_dup = strdup(s);
+ s_tmp = s_dup = tor_strdup(s);
ri_tmp = router_get_entry_from_string(&s_tmp);
if (!ri_tmp) {
log_fn(LOG_ERR, "We just generated a router descriptor we can't parse: <<%s>>",