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

When we choose to abandon a new entry guard because we think our

older ones might be better, close any circuits pending on that
new entry guard connection. Bugfix on 0.1.2.8-beta; found by lodger.


svn:r14417
parent bc95a4db
Loading
Loading
Loading
Loading
+3 −1
Changes for ChangeLog: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -37,6 +37,9 @@ Changes in version 0.2.1.1-alpha - 2008-??-??
      Patch from mwenge.  Fixes bug 646.
    - Correctly notify one-hop connections when a circuit build has
      failed.  Possible fix for bug 669.  Found by lodger.
    - When we choose to abandon a new entry guard because we think our
      older ones might be better, close any circuits pending on that
      new entry guard connection. Bugfix on 0.1.2.8-beta; found by lodger.

  o Minor features:
    - Allow separate log levels to be configured for different logging
@@ -46,7 +49,6 @@ Changes in version 0.2.1.1-alpha - 2008-??-??
    - Add a malloc_good_size implementation to OpenBSD_malloc_linux.c,
      to avoid unused RAM in buffer chunks and memory pools.
    - Downgrade "sslv3 alert handshake failure" message to INFO.
    - Only log guard node status when guard node status has changed.
    - Add a couple of extra warnings to --enable-gcc-warnings for GCC 4.3,
      and stop using a warning that had become unfixably verbose under GCC
      4.3.
+6 −1
Changes for src/or/connection_or.c: 6 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -889,7 +889,12 @@ connection_or_set_state_open(or_connection_t *conn)
    rep_hist_note_connect_succeeded(conn->identity_digest, now);
    if (entry_guard_register_connect_status(conn->identity_digest,
                                            1, now) < 0) {
      /* pending circs get closed in circuit_about_to_close_connection() */
      /* Close any circuits pending on this conn. We leave it in state
       * 'open' though, because it didn't actually *fail* -- we just
       * chose not to use it. (Otherwise
       * connection_about_to_close_connection() will call a big pile of
       * functions to indicate we shouldn't try it again.) */
      circuit_n_conn_done(conn, 0);
      return -1;
    }
    router_set_status(conn->identity_digest, 1);