mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 07:07:52 +01:00
No description
The connection_ap_attach_pending() function processes all pending streams in the pending_entry_connections list. It first copy the pointer and then allocates a brand new empty list. It then iterates over that copy pointer to try to attach entry connections onto any fitting circuits using connection_ap_handshake_attach_circuit(). That very function, for onion service, can lead to flagging _all_ streams of the same onion service to be put in state RENDDESC_WAIT from CIRCUIT_WAIT. By doing so, it also tries to remove them from the pending_entry_connections but at that point it is already empty. Problem is that the we are iterating over the previous pending_entry_connections which contains the streams that have just changed state and are no longer in CIRCUIT_WAIT. This lead to this bug warning occuring a lot on busy services: May 01 08:55:43.000 [warn] connection_ap_attach_pending(): Bug: 0x55d8764ae550 is no longer in circuit_wait. Its current state is waiting for rendezvous desc. Why is it on pending_entry_connections? (on Tor 0.4.4.0-alpha-dev ) This fix is minimal and basically allow a state to be not CIRCUIT_WAIT and move on to the next one without logging a warning. Because the pending_entry_connections is emptied before processing, there is no chance for a streams to be stuck there forever thus it is OK to ignore streams not in the right state. Fixes #34083 Signed-off-by: David Goulet <dgoulet@torproject.org> |
||
---|---|---|
.gitlab/issue_templates | ||
changes | ||
contrib | ||
doc | ||
m4 | ||
scripts | ||
src | ||
.appveyor.yml | ||
.clang-format | ||
.editorconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
.travis.yml | ||
acinclude.m4 | ||
autogen.sh | ||
ChangeLog | ||
CODE_OF_CONDUCT | ||
config.rust.in | ||
configure.ac | ||
CONTRIBUTING | ||
Doxyfile.in | ||
INSTALL | ||
LICENSE | ||
Makefile.am | ||
Makefile.nmake | ||
README | ||
ReleaseNotes | ||
warning_flags.in |
Tor protects your privacy on the internet by hiding the connection between your Internet address and the services you use. We believe Tor is reasonably secure, but please ensure you read the instructions and configure it properly. To build Tor from source: ./configure && make && make install To build Tor from a just-cloned git repository: sh autogen.sh && ./configure && make && make install Home page: https://www.torproject.org/ Download new versions: https://www.torproject.org/download/download.html Documentation, including links to installation and setup instructions: https://www.torproject.org/docs/documentation.html Making applications work with Tor: https://gitlab.torproject.org/legacy/trac/-/wikis/doc/TorifyHOWTO Frequently Asked Questions: https://www.torproject.org/docs/faq.html Release timeline: https://gitlab.torproject.org/tpo/core/team/-/wikis/NetworkTeam/CoreTorReleases To get started working on Tor development: See the doc/HACKING directory.