Loading ChangeLog +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,9 @@ Changes in version 0.1.2.20 - 2008-??-?? would stop building circuits and start refusing connections after 24 hours, since we falsely believed that Tor was dormant. Reported by nwf. - Ensure that two circuits can never exist on the same connection with the same circuit ID, even if one is marked for close. This is conceivably a bugfix for bug 779; fixes a bug on 0.1.0.4-rc. o Minor bugfixes: - Stop recommending that every server operator send mail to tor-ops. Loading src/or/circuitbuild.c +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ get_unique_circ_id_by_conn(or_connection_t *conn) return 0; } test_circ_id |= high_bit; } while (circuit_get_by_circid_orconn(test_circ_id, conn)); } while (circuit_id_in_use_on_orconn(test_circ_id, conn)); return test_circ_id; } Loading src/or/circuitlist.c +8 −0 Original line number Diff line number Diff line Loading @@ -615,6 +615,14 @@ circuit_get_by_circid_orconn(uint16_t circ_id, or_connection_t *conn) return circ; } /** Return true iff the circuit ID <b>circ_id</b> is currently used by a * circuit, marked or not, on <b>conn</b>. */ int circuit_id_in_use_on_orconn(uint16_t circ_id, or_connection_t *conn) { return circuit_get_by_circid_orconn_impl(circ_id, conn) != NULL; } /** Return the circuit that a given edge connection is using. */ circuit_t * circuit_get_by_edge_conn(edge_connection_t *conn) Loading src/or/command.c +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn) return; } if (circuit_get_by_circid_orconn(cell->circ_id, conn)) { if (circuit_id_in_use_on_orconn(cell->circ_id, conn)) { routerinfo_t *router = router_get_by_digest(conn->identity_digest); log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Received CREATE cell (circID %d) for known circ. " Loading src/or/or.h +1 −0 Original line number Diff line number Diff line Loading @@ -1997,6 +1997,7 @@ origin_circuit_t *origin_circuit_new(void); or_circuit_t *or_circuit_new(uint16_t p_circ_id, or_connection_t *p_conn); circuit_t *circuit_get_by_circid_orconn(uint16_t circ_id, or_connection_t *conn); int circuit_id_in_use_on_orconn(uint16_t circ_id, or_connection_t *conn); circuit_t *circuit_get_by_edge_conn(edge_connection_t *conn); void circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason); origin_circuit_t *circuit_get_by_global_id(uint32_t id); Loading Loading
ChangeLog +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,9 @@ Changes in version 0.1.2.20 - 2008-??-?? would stop building circuits and start refusing connections after 24 hours, since we falsely believed that Tor was dormant. Reported by nwf. - Ensure that two circuits can never exist on the same connection with the same circuit ID, even if one is marked for close. This is conceivably a bugfix for bug 779; fixes a bug on 0.1.0.4-rc. o Minor bugfixes: - Stop recommending that every server operator send mail to tor-ops. Loading
src/or/circuitbuild.c +1 −1 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ get_unique_circ_id_by_conn(or_connection_t *conn) return 0; } test_circ_id |= high_bit; } while (circuit_get_by_circid_orconn(test_circ_id, conn)); } while (circuit_id_in_use_on_orconn(test_circ_id, conn)); return test_circ_id; } Loading
src/or/circuitlist.c +8 −0 Original line number Diff line number Diff line Loading @@ -615,6 +615,14 @@ circuit_get_by_circid_orconn(uint16_t circ_id, or_connection_t *conn) return circ; } /** Return true iff the circuit ID <b>circ_id</b> is currently used by a * circuit, marked or not, on <b>conn</b>. */ int circuit_id_in_use_on_orconn(uint16_t circ_id, or_connection_t *conn) { return circuit_get_by_circid_orconn_impl(circ_id, conn) != NULL; } /** Return the circuit that a given edge connection is using. */ circuit_t * circuit_get_by_edge_conn(edge_connection_t *conn) Loading
src/or/command.c +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ command_process_create_cell(cell_t *cell, or_connection_t *conn) return; } if (circuit_get_by_circid_orconn(cell->circ_id, conn)) { if (circuit_id_in_use_on_orconn(cell->circ_id, conn)) { routerinfo_t *router = router_get_by_digest(conn->identity_digest); log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Received CREATE cell (circID %d) for known circ. " Loading
src/or/or.h +1 −0 Original line number Diff line number Diff line Loading @@ -1997,6 +1997,7 @@ origin_circuit_t *origin_circuit_new(void); or_circuit_t *or_circuit_new(uint16_t p_circ_id, or_connection_t *p_conn); circuit_t *circuit_get_by_circid_orconn(uint16_t circ_id, or_connection_t *conn); int circuit_id_in_use_on_orconn(uint16_t circ_id, or_connection_t *conn); circuit_t *circuit_get_by_edge_conn(edge_connection_t *conn); void circuit_unlink_all_from_or_conn(or_connection_t *conn, int reason); origin_circuit_t *circuit_get_by_global_id(uint32_t id); Loading