1. 06 Aug, 2020 1 commit
  2. 03 Aug, 2020 1 commit
    • Nick Mathewson's avatar
      Remove channel_is_canonical_is_reliable() · 435f31ae
      Nick Mathewson authored
      This function once served to let circuits continue to be built over
      version-1 link connections.  But such connections are long-obsolete,
      and it's time to remove this check.
      
      Closes #40081.
      435f31ae
  3. 16 Jan, 2019 1 commit
  4. 05 Jul, 2018 3 commits
    • Nick Mathewson's avatar
      Fix every include path changed in the previous commit (automated) · ef486e3c
      Nick Mathewson authored
      I am very glad to have written this script.
      ef486e3c
    • Nick Mathewson's avatar
      Move literally everything out of src/or · 63b4ea22
      Nick Mathewson authored
      This commit won't build yet -- it just puts everything in a slightly
      more logical place.
      
      The reasoning here is that "src/core" will hold the stuff that every (or
      nearly every) tor instance will need in order to do onion routing.
      Other features (including some necessary ones) will live in
      "src/feature".  The "src/app" directory will hold the stuff needed
      to have Tor be an application you can actually run.
      
      This commit DOES NOT refactor the former contents of src/or into a
      logical set of acyclic libraries, or change any code at all.  That
      will have to come in the future.
      
      We will continue to move things around and split them in the future,
      but I hope this lays a reasonable groundwork for doing so.
      63b4ea22
    • Nick Mathewson's avatar
      Move handles.h to src/lib/container · 0e4b1781
      Nick Mathewson authored
      There might be a better place for it in the long run, but this is
      the best we can think of for now.
      0e4b1781
  5. 01 Jul, 2018 4 commits
  6. 20 Jun, 2018 2 commits
  7. 15 Feb, 2018 1 commit
    • David Goulet's avatar
      cmux: Make EWMA policy mandatory · 6b1dba21
      David Goulet authored
      
      
      To achieve this, a default value for the CircuitPriorityHalflife option was
      needed. We still look in the options and then the consensus but in case no
      value can be found, the default CircuitPriorityHalflifeMsec=30000 is used. It
      it the value we've been using since 0.2.4.4-alpha.
      
      This means that EWMA, our only policy, can not be disabled anymore fallbacking
      to the round robin algorithm. Unneeded code to control that is removed in this
      commit.
      
      Part of #25268
      Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
      6b1dba21
  8. 07 Feb, 2018 1 commit
  9. 30 Jan, 2018 1 commit
  10. 13 Dec, 2017 1 commit
    • Nick Mathewson's avatar
      Use monotime_coarse for transfer times and padding times · 219c969d
      Nick Mathewson authored
      Using absolute_msec requires a 64-bit division operation every time
      we calculate it, which gets expensive on 32-bit architectures.
      Instead, just use the lazy "monotime_coarse_get()" operation, and
      don't convert to milliseconds until we absolutely must.
      
      In this case, it seemed fine to use a full monotime_coarse_t rather
      than a truncated "stamp" as we did to solve this problem for the
      timerstamps in buf_t and packed_cell_t: There are vastly more cells
      and buffer chunks than there are channels, and using 16 bytes per
      channel in the worst case is not a big deal.
      
      There are still more millisecond operations here than strictly
      necessary; let's see any divisions show up in profiles.
      219c969d
  11. 08 Dec, 2017 5 commits
  12. 22 Nov, 2017 5 commits
    • David Goulet's avatar
    • David Goulet's avatar
      channel: Remove nickname attribute from channel_t · 1dc4f96d
      David Goulet authored
      
      
      This was never set thus never could have been used. Get rid of it to simplify
      the code.
      Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
      1dc4f96d
    • David Goulet's avatar
      channel: Remove dead code · 163477b1
      David Goulet authored
      
      
      This removed code that was either never reached or irrelevant after the
      incoming/outgoing queue removal such as the "timestamp_drained".
      
      Lots of things are also removed from channel.h that do not exists anymore or
      not used.
      Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
      163477b1
    • David Goulet's avatar
      channel: Remove unused write cell functions · 6d1ea776
      David Goulet authored
      
      
      The channel_write_cell() and channel_write_var_cell() can't be possibly called
      nor are used by tor. We only write on the connection outbuf packed cell coming
      from the scheduler that takes them from the circuit queue.
      
      This makes channel_write_packed_cell() the only usable function. It is
      simplify and now returns a code value. The reason for this is that in the next
      commit(s), we'll re-queue the cell onto the circuit queue if the write fails.
      
      Finally, channel unit tests are being removed with this commit because they do
      not match the new semantic. They will be re-written in future commits.
      Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
      6d1ea776
    • David Goulet's avatar
      channel: Remove incoming/outgoing queue · 46a07092
      David Goulet authored
      
      
      For the rationale, see ticket #23709.
      
      This is a pretty massive commit. Those queues were everywhere in channel.c and
      it turns out that it was used by lots of dead code.
      
      The channel subsystem *never* handles variable size cell (var_cell_t) or
      unpacked cells (cell_t). The variable ones are only handled in channeltls and
      outbound cells are always packed from the circuit queue so this commit removes
      code related to variable and unpacked cells.
      
      However, inbound cells are unpacked (cell_t), that is untouched and is handled
      via channel_process_cell() function.
      
      In order to make the commit compile, test have been modified but not passing
      at this commit. Also, many tests have been removed but better improved ones
      get added in future commits.
      
      This commit also adds a XXX: which indicates that the handling process of
      outbound cells isn't fully working. This as well is fixed in a future commit.
      
      Finally, at this commit, more dead code remains, it will be cleanup in future
      commits.
      
      Fixes #23709
      Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
      46a07092
  13. 22 Sep, 2017 2 commits
  14. 15 Sep, 2017 2 commits
  15. 21 Jun, 2017 1 commit
  16. 08 May, 2017 3 commits
    • Nick Mathewson's avatar
      Fix some clang-i386 warnings in master. · 4d6c79d1
      Nick Mathewson authored
      4d6c79d1
    • Mike Perry's avatar
      Bug 17604: Converge on only one long-lived TLS conn between relays. · 76c9330f
      Mike Perry authored
      Accomplished via the following:
      
      1. Use NETINFO cells to determine if both peers will agree on canonical
         status. Prefer connections where they agree to those where they do not.
      2. Alter channel_is_better() to prefer older orconns in the case of multiple
         canonical connections, and use the orconn with more circuits on it in case
         of age ties.
      
      Also perform some hourly accounting on how many of these types of connections
      there are and log it at info or notice level.
      76c9330f
    • Mike Perry's avatar
      Netflow record collapsing defense. · b0e92634
      Mike Perry authored
      This defense will cause Cisco, Juniper, Fortinet, and other routers operating
      in the default configuration to collapse netflow records that would normally
      be split due to the 15 second flow idle timeout.
      
      Collapsing these records should greatly reduce the utility of default netflow
      data for correlation attacks, since all client-side records should become 30
      minute chunks of total bytes sent/received, rather than creating multiple
      separate records for every webpage load/ssh command interaction/XMPP chat/whatever
      else happens to be inactive for more than 15 seconds.
      
      The defense adds consensus parameters to govern the range of timeout values
      for sending padding packets, as well as for keeping connections open.
      
      The defense only sends padding when connections are otherwise inactive, and it
      does not pad connections used solely for directory traffic at all. By default
      it also doesn't pad inter-relay connections.
      
      Statistics on the total padding in the last 24 hours are exported to the
      extra-info descriptors.
      b0e92634
  17. 02 May, 2017 1 commit
  18. 15 Mar, 2017 1 commit
  19. 22 Feb, 2017 1 commit
  20. 08 Dec, 2016 3 commits