aboutsummaryrefslogtreecommitdiff
path: root/src/or/relay.c
Commit message (Collapse)AuthorAge
* Unit tests for connection_edge_process_resolved_cellNick Mathewson2014-04-02
| | | | Also rename a function to be more accurate (resolve->resolved)
* Look at all of a RESOLVED cell; not just the first answer.Nick Mathewson2014-04-02
| | | | | | | | Also, stop accepting the old kind of RESOLVED cells with no TTL fields; they haven't been sent since 0.1.1.6-alpha. This patch won't work without the fix to #10468 -- it will break DNSPorts unless they set the proper ipv4/6 flags on entry_connection_t.
* Extract code to handle RESOLVED cellsNick Mathewson2014-04-01
| | | | No other changes have been made; only code has been moved.
* Test code for implementation of faster circuit_unlink_all_from_channelNick Mathewson2014-03-14
| | | | | | | | This contains the obvious implementation using the circuitmux data structure. It also runs the old (slow) algorithm and compares the results of the two to make sure that they're the same. Needs review and testing.
* Merge branch 'bug10169_025_v2'Nick Mathewson2014-03-04
|\ | | | | | | | | Conflicts: src/test/test.c
| * Merge remote-tracking branch 'public/bug10169_024' into bug10169_025_v2Nick Mathewson2014-03-04
| |\ | | | | | | | | | | | | | | | Conflicts: src/common/compat_libevent.h src/or/relay.c
| | * Merge remote-tracking branch 'public/bug10169_023' into bug10169_024Nick Mathewson2014-03-04
| | |\ | | | | | | | | | | | | | | | | Conflicts: src/or/relay.c
| | | * Monotonize the OOM-killer data timersNick Mathewson2014-02-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a couple of places, to implement the OOM-circuit-killer defense against sniper attacks, we have counters to remember the age of cells or data chunks. These timers were based on wall clock time, which can move backwards, thus giving roll-over results for our age calculation. This commit creates a low-budget monotonic time, based on ratcheting gettimeofday(), so that even in the event of a time rollback, we don't do anything _really_ stupid. A future version of Tor should update this function to do something even less stupid here, like employ clock_gettime() or its kin.
| * | | Refactor OOM-handling functions for more testabilityNick Mathewson2014-02-12
| | | | | | | | | | | | | | | | | | | | | | | | This patch splits out some of the functions in OOM handling so that it's easier to check them without involving the rest of Tor or requiring that the circuits be "wired up".
| * | | Merge remote-tracking branch 'public/bug10169_024' into bug10169_025_v2Nick Mathewson2014-02-12
| |\| | | | | | | | | | | | | | | | | | Conflicts: src/or/circuitlist.c
| | * | Merge remote-tracking branch 'public/bug10169_023' into bug10169_024Nick Mathewson2014-01-03
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/tor.1.txt src/or/config.c src/or/or.h The conflicts were all pretty trivial.
| | | * Rename MaxMemInCellQueues to MaxMemInQueuesNick Mathewson2013-11-20
| | | |
| | | * Have the OOM handler also count the age the data in a stream bufferNick Mathewson2013-11-15
| | | |
* | | | Merge remote-tracking branch 'origin/maint-0.2.4'Nick Mathewson2014-02-11
|\ \ \ \ | |/ / / |/| | |
| * | | Don't treat END_STREAM_REASON_INTERNAL as total circuit failureNick Mathewson2014-02-09
| |/ / | | | | | | | | | | | | | | | | | | It can happen because we sent something that got an ENETUNREACH response. Bugfix on 0.2.4.8-alpha; fixes a part of bug 10777.
* | | Merge remote-tracking branch 'public/no_itime_queue'Nick Mathewson2014-02-10
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The conflicts here were tricky, and required me to eliminate the command-queue as well. That wasn't so hard. Conflicts: src/or/or.h src/or/relay.c
| * | | Excise the insertion_time_elem_t logicNick Mathewson2014-02-10
| |/ / | | | | | | | | | | | | | | | It's now redundant with the inserted_time field in packed_cell_t Fixes bug 10870.
* | | Remove 'struct timeval now' that was shadowing 'struct timeval now'.Nick Mathewson2013-11-18
| | | | | | | | | | | | | | | | | | This was a mistake in the merge commit 7a2b30fe16eacc040b3dd11. It would have made the CellStatistics code give completely bogus results. Bug not in any released Tor.
* | | Merge remote-tracking branch 'origin/maint-0.2.4'Nick Mathewson2013-11-15
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/or/relay.c Conflict changes were easy; compilation fixes required were using using TOR_SIMPLEQ_FIRST to get head of cell queue.
| * | Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4Nick Mathewson2013-11-15
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/or/or.h src/or/relay.c Conflicts were simple to resolve. More fixes were needed for compilation, including: reinstating the tv_to_msec function, and renaming *_conn_cells to *_chan_cells.
| | * Improved circuit queue out-of-memory handlerNick Mathewson2013-11-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, when we ran low on memory, we'd close whichever circuits had the most queued cells. Now, we close those that have the *oldest* queued cells, on the theory that those are most responsible for us running low on memory, and that those are the least likely to actually drain on their own if we wait a little longer. Based on analysis from a forthcoming paper by Jansen, Tschorsch, Johnson, and Scheuermann. Fixes bug 9093.
* | | Add missing includes for circpathbias.hNick Mathewson2013-10-31
| | |
* | | Add some clarity and checks to cell_queue_append_packed_copyNick Mathewson2013-10-30
| | | | | | | | | | | | | | | It's not cool to have "circ may be NULL if use_stats false, but otherwise we crash" as an undocumented API constraint. :)
* | | Merge branch 'morestats4' into morestats5Karsten Loesing2013-10-28
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/tor.1.txt src/or/config.c src/or/connection.h src/or/control.c src/or/control.h src/or/or.h src/or/relay.c src/or/relay.h src/test/test.c
| * | | Tweak CELL_STATS event based on comments by nickm.Karsten Loesing2013-05-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Move cell_command_to_string from control.c to command.c. - Use accessor for global_circuitlist instead of extern. - Add a struct for cell statistics by command instead of six arrays. - Split up control_event_circuit_cell_stats by using two helper functions. - Add TestingEnableCellStatsEvent option. - Prepare functions for testing. - Rename a few variables and document a few things better.
| * | | Add new CELL_STATS event.Karsten Loesing2013-05-16
| | | | | | | | | | | | | | | | Jointly authored with Rob Jansen <jansen@cs.umn.edu>.
* | | | Merge remote-tracking branch 'origin/maint-0.2.4'Nick Mathewson2013-10-08
|\ \ \ \ | | |/ / | |/| | | | | | | | | | Conflicts: src/or/relay.c
| * | | Generate bootstrapping status messages for microdescs tooNick Mathewson2013-10-08
| | | | | | | | | | | | | | | | Fix for 9927.
* | | | don't lie about bootstrap progress when clients use bridgesRoger Dingledine2013-10-08
| | | | | | | | | | | | | | | | | | | | we were listing 50% as soon as we got a bridge's relay descriptor, even if we didn't have any consensus, certificates, etc yet.
* | | | Rename circuit_get_global_list to remove trailing _Nick Mathewson2013-08-15
| | | |
* | | | Merge remote-tracking branch 'majek/bug9108'Nick Mathewson2013-08-15
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: src/or/circuitlist.h
| * | | | Fix #9108 - make global_circuitlist a doubly linked listMarek Majkowski2013-06-20
| | | | |
* | | | | Unit tests for cell queues.Nick Mathewson2013-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | This removes some INLINE markers from functions that probably didn't need them.
* | | | | Use TOR_SIMPLEQ for packed_cell_tNick Mathewson2013-07-18
| | | | |
* | | | | Completely refactor how FILENAME_PRIVATE worksNick Mathewson2013-07-10
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We previously used FILENAME_PRIVATE identifiers mostly for identifiers exposed only to the unit tests... but also for identifiers exposed to the benchmarker, and sometimes for identifiers exposed to a similar module, and occasionally for no really good reason at all. Now, we use FILENAME_PRIVATE identifiers for identifiers shared by Tor and the unit tests. They should be defined static when we aren't building the unit test, and globally visible otherwise. (The STATIC macro will keep us honest here.) For identifiers used only by the unit tests and never by Tor at all, on the other hand, we wrap them in #ifdef TOR_UNIT_TESTS. This is not the motivating use case for the split test/non-test build system; it's just a test example to see how it works, and to take a chance to clean up the code a little.
* | | | Merge remote-tracking branch 'origin/maint-0.2.4'Nick Mathewson2013-06-18
|\| | |
| * | | Merge remote-tracking branch 'origin/maint-0.2.3' into maint-0.2.4Nick Mathewson2013-06-18
| |\ \ \ | | | |/ | | |/| | | | | | | | | | | | | Conflicts: src/or/config.c src/or/relay.c
| | * | Implement a real OOM-killer for too-long circuit queues.Nick Mathewson2013-06-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements "algorithm 1" from my discussion of bug #9072: on OOM, find the circuits with the longest queues, and kill them. It's also a fix for #9063 -- without the side-effects of bug #9072. The memory bounds aren't perfect here, and you need to be sure to allow some slack for the rest of Tor's usage. This isn't a perfect fix; the rest of the solutions I describe on codeable.
* | | | Merge branch 'bug9072-024' into bug9072-025Andrea Shepard2013-06-15
|\| | |
| * | | Merge branch 'bug9072-023' into bug9072-024Andrea Shepard2013-06-15
| |\| |
| | * | Disable middle relay queue overfill detection code due to possible guard ↵Andrea Shepard2013-06-15
| | | | | | | | | | | | | | | | discovery attack
| | * | Don't queue more cells as a middle relay than the spec allows to be in flightAndrea Shepard2013-06-13
| | | |
| * | | Don't queue more cells as a middle relay than the spec allows to be in flightAndrea Shepard2013-06-13
| | | |
* | | | Merge branch 'circuit_queue_cap-0.2.5-squashed'Nick Mathewson2013-06-14
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: src/or/relay.c
| * | | | Fix signed/unsigned comparison warningNick Mathewson2013-06-14
| | | | |
| * | | | Don't queue more cells as a middle relay than the spec allows to be in flightAndrea Shepard2013-06-13
| | | | |
* | | | | Merge remote-tracking branch 'public/bug7912_squashed'Nick Mathewson2013-06-13
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | Add destroy balance tracking and logging to circuitmuxAndrea Shepard2013-06-13
| | | | |
| * | | | Implementation of a fix for bug 7912Nick Mathewson2013-06-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I added the code to pass a destroy cell to a queueing function rather than writing it immediately, and the code to remember that we shouldn't reuse the circuit id until the destroy is actually sent, and the code to release the circuit id once the destroy has been sent... and then I finished by hooking destroy_cell_queue into the rest of Tor.
* | | | | Restore 8093 log messages to WARN severity, but rate limitNick Mathewson2013-05-21
| |/ / / |/| | | | | | | | | | | See #8093 for discussion