mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
prop224: Function to inc/decrement num rendezvous stream
Add a common function for both legacy and prop224 hidden service to increment and decrement the rendezvous stream counter on an origin circuit. Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
committed by
Nick Mathewson
parent
400ba2f636
commit
5c4f4acedb
+1
-2
@@ -1383,8 +1383,7 @@ circuit_detach_stream(circuit_t *circ, edge_connection_t *conn)
|
||||
* number of streams on the circuit associated with the rend service.
|
||||
*/
|
||||
if (circ->purpose == CIRCUIT_PURPOSE_S_REND_JOINED) {
|
||||
tor_assert(origin_circ->rend_data);
|
||||
origin_circ->rend_data->nr_streams--;
|
||||
hs_dec_rdv_stream_counter(origin_circ);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3139,15 +3139,7 @@ handle_hs_exit_conn(circuit_t *circ, edge_connection_t *conn)
|
||||
conn->on_circuit = circ;
|
||||
assert_circuit_ok(circ);
|
||||
|
||||
if (origin_circ->rend_data) {
|
||||
origin_circ->rend_data->nr_streams++;
|
||||
} else if (origin_circ->hs_ident) {
|
||||
origin_circ->hs_ident->num_rdv_streams++;
|
||||
} else {
|
||||
/* The previous if/else at the start of the function guarantee that we'll
|
||||
* never end up in a else situation unless it's freed in between. */
|
||||
tor_assert(0);
|
||||
}
|
||||
hs_inc_rdv_stream_counter(origin_circ);
|
||||
|
||||
/* Connect tor to the hidden service destination. */
|
||||
connection_exit_connect(conn);
|
||||
|
||||
@@ -1333,3 +1333,37 @@ hs_free_all(void)
|
||||
hs_cache_free_all();
|
||||
}
|
||||
|
||||
/* For the given origin circuit circ, decrement the number of rendezvous
|
||||
* stream counter. This handles every hidden service version. */
|
||||
void
|
||||
hs_dec_rdv_stream_counter(origin_circuit_t *circ)
|
||||
{
|
||||
tor_assert(circ);
|
||||
|
||||
if (circ->rend_data) {
|
||||
circ->rend_data->nr_streams--;
|
||||
} else if (circ->hs_ident) {
|
||||
circ->hs_ident->num_rdv_streams--;
|
||||
} else {
|
||||
/* Should not be called if this circuit is not for hidden service. */
|
||||
tor_assert_nonfatal_unreached();
|
||||
}
|
||||
}
|
||||
|
||||
/* For the given origin circuit circ, increment the number of rendezvous
|
||||
* stream counter. This handles every hidden service version. */
|
||||
void
|
||||
hs_inc_rdv_stream_counter(origin_circuit_t *circ)
|
||||
{
|
||||
tor_assert(circ);
|
||||
|
||||
if (circ->rend_data) {
|
||||
circ->rend_data->nr_streams++;
|
||||
} else if (circ->hs_ident) {
|
||||
circ->hs_ident->num_rdv_streams++;
|
||||
} else {
|
||||
/* Should not be called if this circuit is not for hidden service. */
|
||||
tor_assert_nonfatal_unreached();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -222,6 +222,9 @@ void hs_get_responsible_hsdirs(const ed25519_public_key_t *blinded_pk,
|
||||
|
||||
int hs_set_conn_addr_port(const smartlist_t *ports, edge_connection_t *conn);
|
||||
|
||||
void hs_inc_rdv_stream_counter(origin_circuit_t *circ);
|
||||
void hs_dec_rdv_stream_counter(origin_circuit_t *circ);
|
||||
|
||||
#ifdef HS_COMMON_PRIVATE
|
||||
|
||||
STATIC void get_disaster_srv(uint64_t time_period_num, uint8_t *srv_out);
|
||||
|
||||
Reference in New Issue
Block a user