Commit Graph

7389 Commits (f9395cd5dda6c9512e9873a6bf9fa0106114a8dd)
 

Author SHA1 Message Date
Jason Rhinelander f9395cd5dd Cleanup: avoid pointless copy of `this` pointer 3 years ago
Jason Rhinelander 9844d358e6 Fix packet delay creep
- Make the main PumpLL also pump hidden services, rather than using
  separate wakers in each TunEndpoint.  It seems there is some
  interactions that just one or the other is not enough.

- Eliminate TunEndpoint send queue -- it isn't needed as we can just
  send directly.
3 years ago
Jason Rhinelander 99b12940ad Cleanups 3 years ago
Jason Rhinelander e47d3098ac Increase plaintext queue size from 32 to 512
In testing we were sometimes hitting a full queue error, which makes
sense because the queue size seems really small.

Increase it to 512.
3 years ago
Jason Rhinelander 78cc466bf2 Rename PumpLL -> TriggerPump
And rename the actual pump implementation back to PumpLL.
3 years ago
Jason Rhinelander 031ea7aa37 Get rid of external event loop direct wakeups
If something needs to wake up the event loop it should be using an
async, as we are now with PumpLL(); but we had various code triggering a
wakeup, expecting that PumpLL gets called on every wakeup, which isn't
true anymore.
3 years ago
Jason Rhinelander 74215fc44c Fix link layer delivery race condition (fix random ping delays)
We trigger a pump immediately, but this is racey because we add to our
plaintext data in a worker thread; if the worker thread runs after the
pump then it ends up leaving plaintext to be handled, but there's no
wakeup until the next one.

This was the cause of seeing a random +1s and bunching added to ping
responses sometimes: it wasn't until the *next* ping goes through the
network that the plaintext queue gets processed, at which point it
flushes the old one and often the new one together.

The fix here gets rid of the map of sessions needing wakeups and instead
adds an atomic flag to all of them to let us figure out which ones
need to be flushed.
3 years ago
Jason Rhinelander aa1dc83459 Simplify 3 years ago
Jason Rhinelander 362fda5a56 Combine empty + pop into single call 3 years ago
Jason Rhinelander b03f3c2d79 Remove another unwanted unconditional PumpLL 3 years ago
Jason Rhinelander 9113a6b36b Triggered pumping
This redoes how/when we pump so that we should only be calling the
idempotent PumpLL() when we actually have (or may have) something to
pump.
3 years ago
Jason Rhinelander bfc6d35b33 Simplifications & C++17
- Modernize some iterator loops
- Simplify a couple places by using `if (init; ...)`
- Replace various std::binds with lambdas
3 years ago
Jason Rhinelander 41807f1763 transit hop: drop instead of flushing when full
If full happens we are going to trigger a bunch of flushes which
probably isn't very useful, so drop instead.
3 years ago
Jason Rhinelander cf5c4e7284 outbound_message_handler: skip instead of aborting on removed paths 3 years ago
Jason Rhinelander 633431be66 Make outbound message queue PumpLL again if it doesn't send all 3 years ago
Jason Rhinelander faf95cbd0a Allow a nullptr callback for event loop PumpLL 3 years ago
Jeff Becker 8a9025e234 only pump path context in idempotent pumpll 3 years ago
Jeff Becker bb86996acf make event loop pump function non idempotent 3 years ago
Jeff Becker 8744c93944 prevent 100% cpu usage on service nodes
call_soon wakes up the mainloop and is often reentrant, we dont want to
ever way up the event loop but we also want to always defer the call so
we always use the workers
3 years ago
Jeff Becker 22d4b88edc
make PumpLL idempotent to reduce cpu use a bit 3 years ago
Jason Rhinelander 1ddfb7420a
Merge pull request #1791 from majestrate/exclude-failing-from-queue-2021-10-29
exclude fully failed nodes from service node testing list
3 years ago
Jason Rhinelander 0ec50e6624 Fix comment typo 3 years ago
Jeff Becker fcba709fcb
do not requeue nodes for testing from failing queue if we do not have them marked as failing anymore 3 years ago
Jeff 60c1b69ea3
Merge pull request #1784 from jagerman/deb-docker-images
Generate CI images with much DRY-er Python dockerfile generating script
3 years ago
Jason Rhinelander e6622c1d46 Install g++-8 on bionic 3 years ago
Jason Rhinelander cd49031bd2 Fix race condition in interactive output 3 years ago
Jason Rhinelander fd81ee76af
Merge pull request #1778 from majestrate/net-range-detection-bug-2021-10-22
check for intersecting ip ranges correctly, add unit test
3 years ago
Jason Rhinelander 52f8273dc1
Merge pull request #1781 from majestrate/bump-static-deps-2021-10-25
bump libunbound static dep hashpin
3 years ago
Jason Rhinelander 0b4c56dff5 Add hacks; add --distro to rebuild just one
Bionic is broken and needs a hack to create some dumb pgm include
directory.

Add --distro cli argument so that you can rebuild just one distro.
3 years ago
Jason Rhinelander 0572713533 Fix i386 builds 3 years ago
Jason Rhinelander 09e97eef77 Make it snazzy
Shows statuses that "fill in" when run interactively.
3 years ago
Jason Rhinelander 2064ca049d Parallelize builds 3 years ago
Jason Rhinelander 9b7ec7dd50 Add --no-cache option; fix manifest generation 3 years ago
Jason Rhinelander 1c4332ad6a Replace dockerfiles with a Python script 3 years ago
Jason Rhinelander cbbee59774 Add a bunch of base CI images for building debs
Installs just the base tools (which are quite substantial), but not the
deps (which get installed as part of the build).
3 years ago
Jeff Becker b5f5d07f03
bump libunbound static dep hashpin 3 years ago
Jason Rhinelander 808c2df6cc
Merge pull request #1779 from jagerman/ci-python-deps
Add python packages to ci images
3 years ago
Jason Rhinelander f3bac4ae72 Pass DOCKER_BUILD_OPTS env var to docker build 3 years ago
Jason Rhinelander c7410660c8 Make sure we apt-get update in the build
The base image can get out of date.
3 years ago
Jason Rhinelander 78e829a03f Add python build deps to ci images 3 years ago
Jeff Becker 6c70022dcc
check for intersecting ip ranges correctly, add unit test 3 years ago
Jeff Becker 1a360c1a36
version bump to 0.9.7 3 years ago
Jason Rhinelander 410e98f4eb
Merge pull request #1775 from jagerman/parallel-submodules
Fetch CI submodules in parallel
3 years ago
Jason Rhinelander 45249422b1 Fetch CI submodules in parallel 3 years ago
Jeff dce6c1e3b6
Merge pull request #1774 from jagerman/clang-13
Docker + clang updates
3 years ago
Jason Rhinelander 7bc86ff983 Reorder pipelines to put static builds together 3 years ago
Jason Rhinelander b64a38ff2c Add missing xz-utils to buster 3 years ago
Jason Rhinelander 31d2242cc6 Disable ABI warnings on buster/armhf 3 years ago
Jason Rhinelander d27a095f1f Fix arch-specific docker repo names 3 years ago
Jason Rhinelander f71d795f1d Make sure we always pull the latest image 3 years ago