aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_channel.c
AgeCommit message (Collapse)Author
2020-09-18Add flag for whether an OR conn "counts" for bootstrap trackingNick Mathewson
We set this flag if we've launched the connection in order to satisfy an origin circuit, or when we decide the connection _would_ satisfy an origin circuit. These are the only or_connections we want to consider for bootstrapping: other or_connections are opened because of client EXTEND requests, and they may succeed or fail because of the clients' confusion or misconfiguration. Closes #25061.
2020-08-12Merge branch 'maint-0.4.4'George Kadianakis
2020-08-03Merge branch 'ticket40081_035' into ticket40081_044Nick Mathewson
Resolves conflicts: src/core/or/channel.c src/test/test_channel.c
2020-08-03Remove channel_is_canonical_is_reliable()Nick Mathewson
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.
2020-07-17or_connection_t: replace real_addr with canonical_orport.Nick Mathewson
Instead of replacing connection_t.{addr,port} with a canonical orport, and tracking the truth in real_addr, we now leave connection_t.addr alone, and put the canonical address in canonical_orport. Closes #40042 Closes #33898
2020-07-16Refactor channel description internals.Nick Mathewson
Now that we've clarified that these functions only need to describe the peer in a human-readable way, we can have them delegate to connection_describe_peer().
2020-07-16Minor refactoring on channel_get_remote_addr_if_possible()Nick Mathewson
* We no longer call this an optional method * We document that it returns the real address, not a canonical one. * We have it try harder if the real address hasn't been set yet.
2020-07-13Update channel_matches_target_addr_for_extend test to current APINick Mathewson
2020-07-13Added testsMrSquanchee
Added tests for channel_matches_target_addr_for_extend(). Ticket #33919.
2020-04-29relay/circuitbuild: Re-use IPv6 connections for circuitsteor
Search for existing connections using the remote IPv4 and IPv6 addresses. Part of 33817.
2020-04-15test/channel: Fix a comment typoteor
2020-01-14Merge branch 'ticket32892_043_01_squashed'Nick Mathewson
2020-01-14chan: Remove dead var cell handler from channel_tDavid Goulet
The variable lenght cells are handled directly by channel_tls_handle_var_cell() from an OR connection reading its inbuf. The channel var cell handler (agnostic) was never used. Closes #32892 Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-01-08It's 2020. Update the copyright dates with "make update-copyright"Nick Mathewson
2019-12-20Replace several C identifiers.teor
This is an automated commit, generated by this command: ./scripts/maint/rename_c_identifier.py \ EXPOSE_CLEAN_BACKTRACE BACKTRACE_PRIVATE \ TOR_CHANNEL_INTERNAL_ CHANNEL_OBJECT_PRIVATE \ CHANNEL_PRIVATE_ CHANNEL_FILE_PRIVATE \ EXPOSE_ROUTERDESC_TOKEN_TABLE ROUTERDESC_TOKEN_TABLE_PRIVATE \ SCHEDULER_PRIVATE_ SCHEDULER_PRIVATE
2019-05-16test_channel_listener: free 'chan' explicitlyNick Mathewson
This should fix CID 1437442, where coverity can't tell that channel_free_all() frees the fake channel we allocated.
2019-03-14circ: Remove n_mux and p_mux membersDavid Goulet
They are simply not used apart from assigning a pointer and asserting on the pointer depending on the cell direction. Closes #29196. Signed-off-by: David Goulet <dgoulet@torproject.org>
2019-01-16Bump copyright date to 2019Nick Mathewson
2019-01-16Bump copyright date to 2019.Nick Mathewson
2018-07-05Fix every include path changed in the previous commit (automated)Nick Mathewson
I am very glad to have written this script.
2018-07-03Replace U64_LITERAL with the standard UINT64_CNick Mathewson
2018-06-21Rectify include paths (automated)Nick Mathewson
2018-06-20Run rectify_include_paths.pyNick Mathewson
2018-06-20Update copyrights to 2018.Nick Mathewson
2018-06-15Extract cell type and their queues into new headersNick Mathewson
Since packed_cell and destroy_cell exist only to be queued, they go in the same headers as the queues.
2018-06-15Extract routerstatus_t into its own header.Nick Mathewson
2018-06-15Extract networkstatus_t and ..sr_info_t into their own headersNick Mathewson
2018-06-15Extract {or,origin}_circuit_t into their own headersNick Mathewson
2018-05-11Merge remote-tracking branch 'public/bug25994'Nick Mathewson
2018-05-03Merge remote-tracking branch 'isis/bug24660_r1'Nick Mathewson
2018-05-01Hold monotonic time constant during channel/outbound_cell testNick Mathewson
This change should make it impossible for the monotonic time to roll over from one EWMA tick to the next during this test, and make it so that this test never invokes scale_active_circuits() (which it doesn't test). (Earlier changes during the 0.3.4 series should make this call even rarer than it was before, since we fixed #25927 and removed cached_gettimeofday. Because this test didn't update cached_gettimeofday, the chance of rolling over a 10-second interval was much higher.) Closes ticket 25994; bugfix on 0.3.3.1-alpha when this test was introduced.
2018-04-26Rewrite time-handling in circuitmux_ewma to use monotime_coarseNick Mathewson
This part of the code was the only part that used "cached getttimeofday" feature, which wasn't monotonic, which we updated at slight expense, and which I'd rather not maintain.
2018-04-06crypto: Refactor (P)RNG functionality into new crypto_rand module.Isis Lovecruft
* ADD new /src/common/crypto_rand.[ch] module. * ADD new /src/common/crypto_util.[ch] module (contains the memwipe() function, since all crypto_* modules need this). * FIXES part of #24658: https://bugs.torproject.org/24658
2018-02-15cmux: Remove round-robin circuit policyDavid Goulet
Since 0.2.4, tor uses EWMA circuit policy to prioritize. The previous algorithm, round-robin, hasn't been used since then but was still used as a fallback. Now that EWMA is mandatory, remove that code entirely and enforce a cmux policy to be set. This is part of a circuitmux cleanup to improve performance and reduce complexity in the code. We'll be able to address future optimization with this work. Closes #25268 Signed-off-by: David Goulet <dgoulet@torproject.org>
2018-02-15cmux: Make EWMA policy mandatoryDavid Goulet
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 <dgoulet@torproject.org>
2017-12-21Fix a compilation error in the channel tests.Nick Mathewson
This would only show up on systems like windows where monotime_t and monotime_coarse_t are different types.
2017-12-13Use monotime_coarse for transfer times and padding timesNick Mathewson
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.
2017-12-08Merge branch 'macro_free_v2_squashed'Nick Mathewson
2017-12-08Convert remaining function (mostly static) to new free styleNick Mathewson
2017-12-08test: Make older GCC happy and thus our oniongit pipelineDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-12-08chan: Do not re-queue after a fail cell writeDavid Goulet
Couple things happen in this commit. First, we do not re-queue a cell back in the circuit queue if the write packed cell failed. Currently, it is close to impossible to have it failed but just in case, the channel is mark as closed and we move on. The second thing is that the channel_write_packed_cell() always took ownership of the cell whatever the outcome. This means, on success or failure, it needs to free it. It turns out that that we were using the wrong free function in one case and not freeing it in an other possible code path. So, this commit makes sure we only free it in one place that is at the very end of channel_write_packed_cell() which is the top layer of the channel abstraction. This makes also channel_tls_write_packed_cell_method() return a negative value on error. Two unit tests had to be fixed (quite trivial) due to a double free of the packed cell in the test since now we do free it in all cases correctly. Part of #23709 Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Cleanup unused code in test_channel.cDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Add unit test for channel_listener_tDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Add unit test for channel_get_for_extend()David Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Add unit test for channel_check_for_duplicates()David Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Add channel state unit testDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Fix channel dumpstats testDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Fix channel lifecycle and lifecycle_2David Goulet
They were broken due to previous commit. Fixes are trivial. Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Add outbound channel cell testDavid Goulet
Signed-off-by: David Goulet <dgoulet@torproject.org>
2017-11-22test: Improve the inbound channel cell testDavid Goulet
First, that test was broken from the previous commit because the channel_queue_cell() has been removed. This now tests the channel_process_cell() directly. Second, it wasn't testing much except if the channel subsystem actually went through the cell handler. This commit adds more checks on the state of a channel going from open, receiving a cell and closing. Third, this and the id_map unit test are working, not the others so they've been marked as not working and future commit will improve and fix those. Signed-off-by: David Goulet <dgoulet@torproject.org>