Commit Graph

6699 Commits (68826f10bb4c8f52ff17da5980ed49a4a1fbc273)
 

Author SHA1 Message Date
Jeff Becker 68826f10bb use binary mode for writing files 3 years ago
Jeff 9f2f9e0f05
Merge pull request #1598 from majestrate/cherry-pick-for-stable-2021-04-15
new logos and new lokinet-bootstrap backport for stable
3 years ago
Jeff Becker 4daebc0141
catch exception and print out error 3 years ago
Jeff Becker a0d3ab125a
throw on failed writing and port fs namespace changes from oxen-core 3 years ago
Jeff Becker 6cde9062b5
build lokinet-android target only on android 3 years ago
Jeff Becker a80d8b95b3
update lokinet-bootstrap
* compat with old shell script curl wrapper's arguments
* do lazy validation of fetched data
3 years ago
Jeff Becker 77de60af91
require openssl explicitly for lokinet-bootstrap 3 years ago
Jeff Becker 27c80a2638
add include directory for daemon directory so llarp/* includes work 3 years ago
Jeff Becker e8178a032e
lokinet-bootstrap native binary 3 years ago
Jeff Becker 3af465bb5f
rebrand and bump version 3 years ago
Jeff Becker aa0546563a lokimq -> oxenmq artifact
* fix dep to lokimq in macos installer gui target when doing make package, change it to oxenmq
3 years ago
Jeff Becker 80a76c9386
fix segfault 3 years ago
Jeff 0ddea9b103
Merge pull request #1571 from oxen-io/dev
merge dev to stable for 0.8.4
3 years ago
Jason Rhinelander f47e0cf7a2 Fix UB -- use after move 3 years ago
Jeff Becker a8885c5405
update gui hashpin for windows 3 years ago
Jason Rhinelander e0bb7b7d0f Bump oxen-mq submodule to tagged 1.2.4 3 years ago
Jeff 1de2bb7ecf
Merge pull request #1572 from majestrate/tag-v0.8.4-2021-03-09
bump version for 0.8.4
3 years ago
Jeff Becker 084e0aa023
bump version for 0.8.4 3 years ago
Jason Rhinelander 39e2647b1c
Merge pull request #1570 from majestrate/unbreak-android-2021-03-07
Unbreak android
3 years ago
Jeff Becker 324498fe9a
flip order of parameters so it works 3 years ago
Jeff Becker 3d09b94590
make android work again
ip packet on read error was returning an uninitialized ip packet with non zero size so it was thinking it was a valid packet.
value initialize it to set the packet size to zero by default.

this fixed it in an emulator at least...
3 years ago
Jeff Becker 6550aa844c
try to unbreak more 3 years ago
Jeff Becker 7af4807302 correctly set size of OwnedBuffer when using OwnedBuffer::copy_used 3 years ago
Jeff 6daf5c6ea6
Merge pull request #1568 from jagerman/clang-format-11
Clang format 11
3 years ago
Jason Rhinelander 91d6698a9d Reformat with clang-format-11 3 years ago
Jason Rhinelander e5aa96ed7c Upgrade to clang-format 11
The formatting changes here are not too large and also nice: in
particular clang-format-11 appears to do better handling of `{...}`
constructor braces/arguments.
3 years ago
Jeff 76ee6734db
Merge pull request #1557 from jagerman/uvw-overhaul
libuv -> uvw overhaul
3 years ago
Jeff 57a5f8cb15
Merge pull request #1567 from jagerman/loki-core-docker-deps
Add oxen-core deps to docker images
3 years ago
Jeff Becker 27685b1b6e
fix docker lines and dont install recommended packages 3 years ago
Jason Rhinelander 78a43e7163 Add oxen-core deps to docker images 3 years ago
Jason Rhinelander c00de1e4ec Add wakeup call into transit_hop UpstreamHandler 3 years ago
Jason Rhinelander 89b582bf60 Modernize [[maybe_unused]] attribute 3 years ago
Jason Rhinelander 4b5387a078 Remove unused ShouldFlushNow method 3 years ago
Jason Rhinelander f9dc308f75 Tick event loop on data queuing 3 years ago
Jason Rhinelander 895acc45ff EventLoop: add public wakeup() method, and call it from call()
call(), when invoked from the logic thread, wasn't triggering a wakeup
which stalled some traffic (such as client-to-snode packets).

Fix it by triggering a wakeup on `call()`, and expose it because this is
a useful thing to be able to do.
3 years ago
Jason Rhinelander f8d5e106a0 Uncurse SockAddr's sockaddr* operator
The `const sockaddr*` conversion was returning a pointer to the
sockaddr_in6, but with its family set to AF_INET, so the receiving code
would have treated interpreting the result as a sockaddr_in pointer --
but it isn't, and trying to get the IPv4 from the mis-reinterpreted
sockaddr_in6 fails; this then prevented uvw UDP binding (which uses the
sockaddr* operator) from working.

This changes it to always leave the family value at the proper value and
using the ipv6_is_mapped_ipv4 check to determine when we have (and
should return) a pointer to the sockaddr_in rather than the
sockaddr_in6.

Also fixes toString() to compare the full prefix instead of just bytes
10 and 11.
3 years ago
Jason Rhinelander 62fc1bbc48 Make llarp_buffer_t constructible from an rvalue reference 3 years ago
Jason Rhinelander f8486604c4 Export UDP file descriptor (for android) 3 years ago
Jason Rhinelander d995766436 Android & hive fixes 3 years ago
Jason Rhinelander 673d065ed8 Remove HasNextPacket() (and fix win32)
We don't use it anymore (instead we just ReadNextPacket until it returns
an empty result).
3 years ago
Jason Rhinelander 6e05dc693f Remove unused arguments (and ants) 3 years ago
Jason Rhinelander 2c827870c9 Simplify code of many f's
We don't need to go through the contention killer here, that was mainly
for (long ago) debugging reasons.
3 years ago
Jason Rhinelander 36edabd9b0 Rename EventLoop::udp to EventLoop::make_udp
Makes it consistent with the make_waker, etc.

Also removes some debugging.
3 years ago
Jason Rhinelander afd856bca0 Remove unused junk (also fix win32 compilation fail) 3 years ago
Jason Rhinelander ced035d401 Switch uvw to a fork with libuv backwards compat support 3 years ago
Jason Rhinelander 096f37fe4e Fix linux compilation & narrowing conversion warning 3 years ago
Jason Rhinelander e198bfd3e1 Remove unused variable 3 years ago
Jason Rhinelander c4559d158e Make format 3 years ago
Jason Rhinelander ccc7b5c9e9 Merge Logic functions into EventLoop
loop->call(...) is similar to the old logic->Call(...), but is smart
about the current thread: if called from within the event loop it simply
runs the argument directly, otherwise it queues it.

Similarly most of the other event loop calls are also now thread-aware:
for example, `call_later(...)` can queue the job directly when called if
in the event loop rather than having to double-queue through the even
loop (once to call, then inside the call to initiate the time).
3 years ago
Jason Rhinelander 5b555ee5aa Replace libuv with uvw & related refactoring
- removes all the llarp_ev_* functions, replacing with methods/classes/functions in the llarp
  namespace.
- banish ev/ev.h to the void
- Passes various things by const lvalue ref, especially shared_ptr's that don't need to be copied
  (to avoid an atomic refcount increment/decrement).
- Add a llarp::UDPHandle abstract class for UDP handling
- Removes the UDP tick handler; code that needs tick can just do a separate handler on the event
  loop outside the UDP socket.
- Adds an "OwnedBuffer" which owns its own memory but is implicitly convertible to a llarp_buffer_t.
  This is mostly needed to take over ownership of buffers from uvw without copying them as,
  currently, uvw does its own allocation (pending some open upstream issues/PRs).
- Logic:
  - add `make_caller`/`call_forever`/`call_every` utility functions to abstract Call wrapping and
    dependent timed tasks.
  - Add inLogicThread() so that code can tell its inside the logic thread (typically for
    debugging assertions).
  - get rid of janky integer returns and dealing with cancellations on call_later: the other methods
    added here and the event loop code remove the need for them.
- Event loop:
  - redo everything with uvw instead of libuv
  - rename EventLoopWakeup::Wakeup to EventLoopWakeup::Trigger to better reflect what it does.
  - add EventLoopRepeater for repeated events, and replace the code that reschedules itself every
    time it is called with a repeater.
  - Split up `EventLoop::run()` into a non-virtual base method and abstract `run_loop()` methods;
    the base method does a couple extra setup/teardown things that don't need to be in the derived class.
  - udp_listen is replaced with ev->udp(...) which returns a new UDPHandle object rather that
    needing gross C-style-but-not-actually-C-compatible structs.
  - Remove unused register_poll_fd_(un)readable
  - Use shared_ptr for EventLoopWakeup rather than returning a raw pointer; uvw lets us not have to
    worry about having the event loop class maintain ownership of it.
  - Add factory EventLoop::create() function to create a default (uvw-based) event loop (previously
    this was one of the llarp_ev_blahblah unnamespaced functions).
  - ev_libuv: this is mostly rewritten; all of the glue code/structs, in particular, are gone as
    they are no longer needed with uvw.
- DNS:
  - Rename DnsHandler to DnsInterceptor to better describe what it does (this is the code that
    intercepts all DNS to the tun IP range for Android).
- endpoint:
  - remove unused "isolated network" code
  - remove distinct (but actually always the same) variables for router/endpoint logic objects
- llarp_buffer_t
  - make constructors type-safe against being called with points to non-size-1 values
- tun packet reading:
  - read all available packets off the device/file descriptor; previously we were reading one packet
    at a time then returning to the event loop to poll again.
  - ReadNextPacket() now returns a 0-size packet if the read would block (so that we can implement
    the previous point).
  - ReadNextPacket() now throws on I/O error
- Miscellaneous code cleanups/simplifications
3 years ago