mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Must detach before attaching, or else we infinite-loop
svn:r1632
This commit is contained in:
parent
ddc11899b6
commit
880ffd8f64
@ -232,6 +232,7 @@ int connection_edge_process_relay_cell_not_open(
|
||||
addr = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+1));
|
||||
client_dns_set_entry(conn->socks_request->address, addr);
|
||||
conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
|
||||
circuit_detach_stream(circ,conn);
|
||||
if(connection_ap_handshake_attach_circuit(conn) >= 0)
|
||||
return 0;
|
||||
/* else, conn will get closed below */
|
||||
@ -240,6 +241,7 @@ int connection_edge_process_relay_cell_not_open(
|
||||
< MAX_RESOLVE_FAILURES) {
|
||||
/* We haven't retried too many times; reattach the connection. */
|
||||
conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
|
||||
circuit_detach_stream(circ,conn);
|
||||
if(connection_ap_handshake_attach_circuit(conn) >= 0)
|
||||
return 0;
|
||||
/* else, conn will get closed below */
|
||||
@ -256,7 +258,6 @@ int connection_edge_process_relay_cell_not_open(
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if(conn->type == CONN_TYPE_AP && rh->command == RELAY_COMMAND_CONNECTED) {
|
||||
if(conn->state != AP_CONN_STATE_CONNECT_WAIT) {
|
||||
log_fn(LOG_WARN,"Got 'connected' while not in state connect_wait. Dropping.");
|
||||
|
Loading…
Reference in New Issue
Block a user