aboutsummaryrefslogtreecommitdiff
path: root/src/or/connection_or.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-09-20 11:00:43 -0400
committerNick Mathewson <nickm@torproject.org>2013-09-20 11:00:43 -0400
commit07bb17185681f875be461c4fea6c661fae2dfde9 (patch)
tree77c7e5eb273099e36593ff51cc329f94f425543b /src/or/connection_or.c
parent0c807cf3e48cca5f4f93e8b1082bd62f2978cba4 (diff)
parent39bb59d36322f3092bcb8c80c54ce4930dddef3a (diff)
downloadtor-07bb17185681f875be461c4fea6c661fae2dfde9.tar
tor-07bb17185681f875be461c4fea6c661fae2dfde9.tar.gz
Merge branch 'no_client_timestamps_024_v2' into maint-0.2.4
Diffstat (limited to 'src/or/connection_or.c')
-rw-r--r--src/or/connection_or.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index d5dd4470e..39a5317cf 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -2051,8 +2051,9 @@ connection_or_send_netinfo(or_connection_t *conn)
memset(&cell, 0, sizeof(cell_t));
cell.command = CELL_NETINFO;
- /* Timestamp. */
- set_uint32(cell.payload, htonl((uint32_t)now));
+ /* Timestamp, if we're a relay. */
+ if (! conn->handshake_state->started_here)
+ set_uint32(cell.payload, htonl((uint32_t)now));
/* Their address. */
out = cell.payload + 4;
@@ -2286,19 +2287,11 @@ connection_or_compute_authenticate_cell_body(or_connection_t *conn,
if (server)
return V3_AUTH_FIXED_PART_LEN; // ptr-out
- /* Time: 8 octets. */
- {
- uint64_t now = time(NULL);
- if ((time_t)now < 0)
- return -1;
- set_uint32(ptr, htonl((uint32_t)(now>>32)));
- set_uint32(ptr+4, htonl((uint32_t)now));
- ptr += 8;
- }
-
- /* Nonce: 16 octets. */
- crypto_rand((char*)ptr, 16);
- ptr += 16;
+ /* 8 octets were reserved for the current time, but we're trying to get out
+ * of the habit of sending time around willynilly. Fortunately, nothing
+ * checks it. That's followed by 16 bytes of nonce. */
+ crypto_rand((char*)ptr, 24);
+ ptr += 24;
tor_assert(ptr - out == V3_AUTH_BODY_LEN);