Commit Graph

485 Commits

Author SHA1 Message Date
Stephen Shelton
1db6c6ae3b
Make format 2020-02-25 13:39:27 -07:00
Stephen Shelton
c2f719c996
Build endpoint paths at even[ish] intervals 2020-02-25 13:39:25 -07:00
Jeff Becker
d2d109e92c
llarp_time_t is now using std::chrono 2020-02-24 15:25:03 -05:00
Jason Rhinelander
089056ca5b Remove all ABSL_ATTRIBUTE_UNUSED uses 2020-02-24 14:27:44 -04:00
Jason Rhinelander
b4440094b0 De-abseil, part 2: mutex, locks, (most) time
- util::Mutex is now a std::shared_timed_mutex, which is capable of
  exclusive and shared locks.

- util::Lock is still present as a std::lock_guard<util::Mutex>.

- the locking annotations are preserved, but updated to the latest
  supported by clang rather than using abseil's older/deprecated ones.

- ACQUIRE_LOCK macro is gone since we don't pass mutexes by pointer into
  locks anymore (WTF abseil).

- ReleasableLock is gone.  Instead there are now some llarp::util helper
  methods to obtain unique and/or shared locks:
    - `auto lock = util::unique_lock(mutex);` gets an RAII-but-also
      unlockable object (std::unique_lock<T>, with T inferred from
      `mutex`).
    - `auto lock = util::shared_lock(mutex);` gets an RAII shared (i.e.
      "reader") lock of the mutex.
    - `auto lock = util::unique_locks(mutex1, mutex2, mutex3);` can be
      used to atomically lock multiple mutexes at once (returning a
      tuple of the locks).
  This are templated on the mutex which makes them a bit more flexible
  than using a concrete type: they can be used for any type of lockable
  mutex, not only util::Mutex.  (Some of the code here uses them for
  getting locks around a std::mutex).  Until C++17, using the RAII types
  is painfully verbose:

  ```C++
  // pre-C++17 - needing to figure out the mutex type here is annoying:
  std::unique_lock<util::Mutex> lock(mutex);
  // pre-C++17 and even more verbose (but at least the type isn't needed):
  std::unique_lock<decltype(mutex)> lock(mutex);
  // our compromise:
  auto lock = util::unique_lock(mutex);
  // C++17:
  std::unique_lock lock(mutex);
  ```

  All of these functions will also warn (under gcc or clang) if you
  discard the return value.  You can also do fancy things like
  `auto l = util::unique_lock(mutex, std::adopt_lock)` (which lets a
  lock take over an already-locked mutex).

- metrics code is gone, which also removes a big pile of code that was
  only used by metrics:
  - llarp::util::Scheduler
  - llarp:🧵:TimerQueue
  - llarp::util::Stopwatch
2020-02-21 23:22:47 -04:00
Jeff Becker
748be8eec8
handle multiple responses per hidden service lookup 2020-02-20 14:33:54 -05:00
Stephen Shelton
0429bafbb3
Merge pull request #1111 from notlesh/redundant-introset-propagation-2020-02-19
Redundant introset propagation
2020-02-20 10:50:06 -08:00
Jeff
6ac5f19b3a
Merge pull request #1110 from jagerman/no-abseil-optional
De-abseil, part 1: remove absl::optional
2020-02-20 12:38:16 -05:00
Stephen Shelton
4c499fb076
Make format 2020-02-20 08:36:29 -07:00
Stephen Shelton
dff9aeb250
Propagate Introset publishing redundantly 2020-02-19 17:07:46 -07:00
Jeff Becker
dc7828941f
add log statement 2020-02-19 17:06:13 -07:00
Jason Rhinelander
ac1486d0be Replace absl::optional with optional-lite
Step 1 of removing abseil from lokinet.

For the most part this is a drop-in replacement, but there are also a
few changes here to the JSONRPC layer that were needed to work around
current gcc 10 dev snapshot:

- JSONRPC returns a json now instead of an optional<json>.  It doesn't
  make any sense to have a json rpc call that just closes the connection
  with returning anything.  Invoked functions can return a null (default
  constructed) result now if they don't have anything to return (such a
  null value won't be added as "result").
2020-02-19 18:21:25 -04:00
Jeff
20bc168d1c
Merge pull request #1093 from majestrate/toggle-publishing-introsets-2020-02-11
make publishing introsets optional
2020-02-19 11:50:41 -05:00
Jeff Becker
e907d2ae19
handover fixes 2020-02-18 12:15:14 -05:00
Jeff Becker
02228ded08
spread out path builds 2020-02-17 15:24:18 -05:00
Jason Rhinelander
c3637c81fd Remove another unused randomize parameter 2020-02-14 17:45:22 -04:00
Jason Rhinelander
24469daefb Remove unused parameter
We always randomize now.
2020-02-14 17:45:18 -04:00
Stephen Shelton
906803e387 Refactor DHT introset lookups to use redundant lookup strategy 2020-02-14 17:43:13 -04:00
Jeff Becker
4d4b33607f dont use optional 2020-02-14 17:43:13 -04:00
Jeff Becker
23bcfa4abb revert change 2020-02-14 17:43:13 -04:00
Jeff Becker
df8c56343d refactor GetManyPathsWithUniqueEndpoints to go into service/endpoint_util.hpp 2020-02-14 17:43:13 -04:00
Jeff Becker
fc5e6b4d77 log location 2020-02-14 17:43:13 -04:00
Jeff Becker
3cc2adae31 paralell publish and lookups 2020-02-14 17:43:13 -04:00
Jeff Becker
e30c720446 redundant publish for service endpoint 2020-02-14 17:43:11 -04:00
Jeff Becker
2b6f27d60d
remove connect back logic for dead inbound sessions 2020-02-14 13:12:45 -05:00
Jeff Becker
70eb353c42
make publishing introsets optional using reachable=false to disable 2020-02-11 16:48:36 -05:00
Jeff Becker
99eb7726ff
initial dht key blinding 2020-01-27 16:30:41 -05:00
Jeff Becker
2c0dc12f39
refactor single char variables in DHT (mostly) 2020-01-23 12:10:58 -05:00
Jeff Becker
a17b5f25b5
check for zero'd rc 2020-01-15 10:43:21 -05:00
Jeff Becker
2d82e931da
try doing lookup from close router, randomize when above lookup threshold 2020-01-09 06:26:41 -05:00
Jeff Becker
8a5365d9a6
diversify endpoints 2020-01-07 13:00:15 -05:00
Jeff Becker
5ae428a114
Revert "remove call to link manager"
This reverts commit 3dd36fa11a.
2019-12-30 11:13:17 -05:00
Jeff Becker
a5121c346c
remove call to link manager 2019-12-30 11:13:17 -05:00
Jeff Becker
d1a29884df
client side perf improvement 2019-12-30 11:13:17 -05:00
Jeff Becker
79c3c748e4
limit number of snode sessions client side 2019-12-30 05:19:03 -05:00
Stephen Shelton
2c6226f54a Backup SNApp keys when migrating to new ed25519 crypto 2019-12-06 11:21:14 -07:00
Jeff Becker
0828307906 fix address mapping bug 2019-11-29 19:11:14 -04:00
Jeff Becker
8849173112 try async decrypt then verify 2019-11-29 19:11:14 -04:00
Jeff Becker
ba0fd223d9 reduce number of jobs we put onto the logic thread 2019-11-29 18:45:06 -04:00
Jeff Becker
56dce90de9
add trace log level for tracking logic thread jobs 2019-11-22 16:23:19 -05:00
Jeff Becker
2c5561fc3c
make format 2019-11-05 12:01:34 -05:00
Jeff Becker
7ee026fa50
make path builds work again 2019-11-05 11:58:53 -05:00
jeff
32ed821763 Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography 2019-10-01 10:51:28 -04:00
jeff
7c691cf334 handover should be fixed now 2019-09-19 16:28:12 -04:00
jeff
6c2ebbb925 try fixing handover and add snapp traffic to multithreaded crypto workers 2019-09-19 10:41:31 -04:00
Jeff Becker
327c545530
finish multithread cryptography first pass 2019-09-16 12:12:05 -04:00
jeff
14c9ef15ed try calling stuff in logic thread from event loop 2019-09-16 06:21:12 -04:00
Jeff Becker
1adae338ce
Merge remote-tracking branch 'origin/master' 2019-09-04 07:58:02 -04:00
Michael
edd0ec398f
Move thread stuff to subdirectory 2019-09-03 20:52:28 +01:00
Michael
4d8fe2a8a8
Move meta programming to subdirectory 2019-09-03 20:52:28 +01:00
Jeff Becker
c01112e4b7
tracy lock contention testing and other fun things 2019-09-03 11:56:56 -04:00
Jeff Becker
eabbb83149
use estimated build time instead of expiration time for delta when determining when to space out builds 2019-08-27 16:07:09 -04:00
Jeff Becker
e0424a91a7
bump path build handover window, check cooldown on build. 2019-08-27 16:00:00 -04:00
Jeff Becker
3c3338e801
Merge remote-tracking branch 'origin/master' into memlink 2019-08-21 10:53:25 -04:00
Michael
094b697b01
Replace StatusObject with underlying JSON type 2019-08-19 10:33:26 +01:00
Michael
16cdfbd5f0
clang-tidy modernize pass 2019-08-12 16:52:58 +01:00
Jeff Becker
c1f33bb1ac
initial mempipe implementation 2019-08-07 12:33:29 -04:00
Michael
f9e9227e19
Fix gcc trunk warnings 2019-08-02 10:29:08 +01:00
Jeff Becker
db2206664a
fix crashes in testnet 2019-07-29 11:10:20 -04:00
Jeff Becker
f48754c45d
make hop count and length configurable 2019-07-18 12:28:17 -04:00
Michael
e52492911d
Refactor endpoint state management to a new class 2019-07-15 10:15:51 +01:00
Jeff Becker
1fd6b5ae74
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-07-12 09:53:52 -04:00
Michael
488695047f
Remove redundant else blocks 2019-07-09 22:54:46 +01:00
Jeff Becker
b9bcc2b775
make threadpool consice 2019-07-09 09:47:24 -04:00
Jeff Becker
fd911d0c52
make format 2019-07-08 10:22:47 -04:00
Jeff Becker
6467d21ba0
* fix testnet codepath
* add packet info for osx
2019-07-05 10:13:58 -04:00
Jeff Becker
81cab62bb9
* fix testnet codepath
* add packet info for osx
2019-07-05 08:07:06 -04:00
Jeff Becker
5874c38b38
swap path on inbound convo if expires soon 2019-07-01 17:35:49 -04:00
Jeff Becker
f211ff182a
pick ready paths for reply 2019-07-01 16:45:00 -04:00
Jeff Becker
d6ec528a72
start work on seperating ips out of endpoint 2019-07-01 10:56:56 -04:00
Jeff Becker
64e9622270
start seperating tun and endpoint 2019-07-01 09:44:25 -04:00
Jeff Becker
0146a967d0
fix convotag inbound state setting 2019-06-28 11:49:29 -04:00
Jeff Becker
6bca652182
choose first timestamp 2019-06-28 10:48:00 -04:00
Jeff Becker
0b90acff75
handle reply intro 2019-06-28 10:12:20 -04:00
Jeff Becker
b0612e2ee1
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-21 11:23:53 -04:00
Michael
b6b400baef
Tidy up pathbuilder code 2019-06-20 17:35:40 +01:00
Jeff Becker
5c61df08b5
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-20 10:35:51 -04:00
Michael
08609f9e5a
Rename message files 2019-06-19 23:30:07 +01:00
Michael
8a058fcb34
Move other messages 2019-06-19 21:35:57 +01:00
Michael
d6751e3eeb
Move subset of messages to right directory 2019-06-19 21:35:26 +01:00
Jeff Becker
cd05fa6150
Merge remote-tracking branch 'origin/master' into ipv6-tun 2019-06-18 08:46:35 -04:00
Rick V
c6c31efec9
make format 2019-06-17 23:29:54 -05:00
Jeff Becker
30f6a8ccd2
make format 2019-06-17 09:05:37 -04:00
Jeff Becker
9c24fc15a8
try not spamming network with builds 2019-06-17 08:43:16 -04:00
Jeff Becker
5853e5e3f4
pass in path 2019-06-14 09:13:06 -04:00
Jeff Becker
a323003824
differentiate between inbound and outbound convos 2019-06-14 08:49:45 -04:00
Jeff Becker
2403ab8f86
ipv6 2019-06-11 12:44:05 -04:00
Jeff Becker
9ec41b8831
update RC expiration logic, lookup more often and remove stale entries 2019-06-10 08:47:21 -04:00
Jeff Becker
73c1538518
fix 2019-06-06 07:16:03 -04:00
Jeff Becker
f7ccbf0c78
eh 2019-06-06 07:10:18 -04:00
Jeff Becker
f8e2edae28
fix 2019-06-06 07:06:34 -04:00
Jeff Becker
223f2702d3
Merge branch 'fix-big-ooooofff' 2019-06-06 06:53:54 -04:00
Jeff Becker
a33dbce680
try switching logic 2019-06-06 06:52:27 -04:00
Jeff Becker
f8026b8a2d
use latest tag not oldest tag in inbound convos 2019-06-04 09:53:50 -04:00
Jeff Becker
39b1f104a8
revert 2019-06-04 09:43:49 -04:00
Jeff Becker
471a4bf6dd
use reply intro for inbound sessions 2019-06-04 09:34:24 -04:00
Michael
75430a234c
Convert to use memFn 2019-06-02 22:19:10 +01:00
Michael
491fee206b
Port code to use CryptoManager over passing Crypto pointers 2019-05-28 20:45:08 +01:00
Michael
d49e57aa8d
Fix thread safety issue in service::Endpoint::ProcessDataMessage 2019-05-22 21:28:17 +01:00
Jeff Becker
e85cc1bc8a
fix 2019-05-22 13:47:33 -04:00