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:
George Kadianakis
2017-07-31 17:59:12 +03:00
committed by Nick Mathewson
parent 400ba2f636
commit 5c4f4acedb
4 changed files with 39 additions and 11 deletions
+1 -2
View File
@@ -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;
}
+1 -9
View File
@@ -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);
+34
View File
@@ -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();
}
}
+3
View File
@@ -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);