Commit 48cd0962 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

Merge commit 'mikeperry/bug1739' into maint-0.2.2

parents 474e4d27 4caf39f1
Loading
Loading
Loading
Loading

changes/bug1739

0 → 100644
+4 −0
Original line number Diff line number Diff line
 o Minor bugfixes:
   - Fix to resume generating CIRC FAILED REASON=TIMEOUT control port
     messages, which were disabled by the circuit build timeout changes
     in 0.2.2.14-alpha. Bugfix on 0.2.2.14-alpha; fixes bug #1739.
+2 −1
Original line number Diff line number Diff line
@@ -1005,7 +1005,8 @@
      Reason = "NONE" / "TORPROTOCOL" / "INTERNAL" / "REQUESTED" /
               "HIBERNATING" / "RESOURCELIMIT" / "CONNECTFAILED" /
               "OR_IDENTITY" / "OR_CONN_CLOSED" / "TIMEOUT" /
               "FINISHED" / "DESTROYED" / "NOPATH" / "NOSUCHSERVICE"
               "FINISHED" / "DESTROYED" / "NOPATH" / "NOSUCHSERVICE" /
               "MEASUREMENT_EXPIRED"

   The path is provided only when the circuit has been extended at least one
   hop.
+1 −1
Original line number Diff line number Diff line
@@ -368,7 +368,7 @@ circuit_purpose_to_controller_string(uint8_t purpose)
    case CIRCUIT_PURPOSE_TESTING:
      return "TESTING";
    case CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT:
      return "EXPIRED";
      return "MEASURE_TIMEOUT";
    case CIRCUIT_PURPOSE_CONTROLLER:
      return "CONTROLLER";

+7 −1
Original line number Diff line number Diff line
@@ -389,6 +389,9 @@ circuit_expire_building(time_t now)
        /* Circuits are allowed to last longer for measurement.
         * Switch their purpose and wait. */
        if (victim->purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) {
          control_event_circuit_status(TO_ORIGIN_CIRCUIT(victim),
                                       CIRC_EVENT_FAILED,
                                       END_CIRC_REASON_TIMEOUT);
          victim->purpose = CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT;
          /* Record this failure to check for too many timeouts
           * in a row. This function does not record a time value yet
@@ -430,6 +433,9 @@ circuit_expire_building(time_t now)
               circuit_state_to_string(victim->state), victim->purpose);

    circuit_log_path(LOG_INFO,LD_CIRC,TO_ORIGIN_CIRCUIT(victim));
    if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT)
      circuit_mark_for_close(victim, END_CIRC_REASON_MEASUREMENT_EXPIRED);
    else
      circuit_mark_for_close(victim, END_CIRC_REASON_TIMEOUT);
  }
}
+4 −0
Original line number Diff line number Diff line
@@ -614,6 +614,10 @@ typedef enum {

/* Negative reasons are internal: we never send them in a DESTROY or TRUNCATE
 * call; they only go to the controller for tracking  */
/** Our post-timeout circuit time measurement period expired.
 * We must give up now */
#define END_CIRC_REASON_MEASUREMENT_EXPIRED -3

/** We couldn't build a path for this circuit. */
#define END_CIRC_REASON_NOPATH          -2
/** Catch-all "other" reason for closing origin circuits. */
Loading