diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-08-20 14:52:56 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-08-20 14:52:56 -0400 |
commit | 1bb4a4f9bdf24706a459e4aefb2b0fb75622f7ac (patch) | |
tree | d613e68826eb910fe85d313cff7639dda7e30aa9 /src/or/connection_or.c | |
parent | edaea773e57cc39e892643bcce12c755810f508b (diff) | |
download | tor-1bb4a4f9bdf24706a459e4aefb2b0fb75622f7ac.tar.gz tor-1bb4a4f9bdf24706a459e4aefb2b0fb75622f7ac.zip |
Send NETINFO on receiving a NETINFO if we have not yet sent one.
Relays previously, when initiating a connection, would only send a
NETINFO after sending an AUTHENTICATE. But bridges, when receiving a
connection, would never send AUTH_CHALLENGE. So relays wouldn't
AUTHENTICATE, and wouldn't NETINFO, and then bridges would be
surprised to be receiving CREATE cells on a non-open circuit.
Fixes bug 9546.
Diffstat (limited to 'src/or/connection_or.c')
-rw-r--r-- | src/or/connection_or.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 3616363505..31cc9c78d8 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -2042,6 +2042,12 @@ connection_or_send_netinfo(or_connection_t *conn) tor_assert(conn->handshake_state); + if (conn->handshake_state->sent_netinfo) { + log_warn(LD_BUG, "Attempted to send an extra netinfo cell on a connection " + "where we already sent one."); + return 0; + } + memset(&cell, 0, sizeof(cell_t)); cell.command = CELL_NETINFO; @@ -2083,6 +2089,7 @@ connection_or_send_netinfo(or_connection_t *conn) } conn->handshake_state->digest_sent_data = 0; + conn->handshake_state->sent_netinfo = 1; connection_or_write_cell_to_buf(&cell, conn); return 0; |