Commit aab541c8 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

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
parent 2caa74e6
Loading
Loading
Loading
Loading
+3 −5
Changes for src/or/circuituse.c: 3 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -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);
      }
    }
  }
+2 −0
Changes for src/or/rendservice.c: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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;
}