mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 06:48:05 +01:00
We weren't cannibilizing circuits correctly for
CIRCUIT_PURPOSE_C_ESTABLISH_REND and CIRCUIT_PURPOSE_S_ESTABLISH_INTRO so we were being forced to build those from scratch. This should save us a bit of time. Also fixes bug 173. svn:r4763
This commit is contained in:
parent
2caa74e6ff
commit
aab541c852
2 changed files with 5 additions and 5 deletions
|
@ -751,13 +751,8 @@ circuit_launch_by_extend_info(uint8_t purpose, extend_info_t *info,
|
|||
circ->timestamp_created = time(NULL);
|
||||
switch (purpose) {
|
||||
case CIRCUIT_PURPOSE_C_ESTABLISH_REND:
|
||||
/* it's ready right now */
|
||||
/* XXX should we call control_event_circuit_status() here? */
|
||||
rend_client_rendcirc_has_opened(circ);
|
||||
break;
|
||||
case CIRCUIT_PURPOSE_S_ESTABLISH_INTRO:
|
||||
/* it's ready right now */
|
||||
rend_service_intro_has_opened(circ);
|
||||
break;
|
||||
case CIRCUIT_PURPOSE_C_INTRODUCING:
|
||||
case CIRCUIT_PURPOSE_S_CONNECT_REND:
|
||||
|
@ -942,6 +937,9 @@ circuit_get_open_circ_or_launch(connection_t *conn,
|
|||
if (circ) {
|
||||
/* write the service_id into circ */
|
||||
strlcpy(circ->rend_query, conn->rend_query, sizeof(circ->rend_query));
|
||||
if (circ->purpose == CIRCUIT_PURPOSE_C_ESTABLISH_REND &&
|
||||
circ->state == CIRCUIT_STATE_OPEN)
|
||||
rend_client_rendcirc_has_opened(circ);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -655,6 +655,8 @@ rend_service_launch_establish_intro(rend_service_t *service, const char *nicknam
|
|||
sizeof(launched->rend_query));
|
||||
memcpy(launched->rend_pk_digest, service->pk_digest, DIGEST_LEN);
|
||||
|
||||
if (launched->state == CIRCUIT_STATE_OPEN)
|
||||
rend_service_intro_has_opened(launched);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue