Commit Graph

5091 Commits

Author SHA1 Message Date
dr7ana
d6e5aca572 libquic vbump 2023-12-13 10:36:09 -08:00
dr7ana
fd21eb3a00 Big fix!
- pending conns container stops them from being counted towards active conns in the interim
- un-abstracted pendingmessages vs pendingdatamessages vs pendingcontrolmessages (gross)
- fixed bootstrap fetching and storage!
2023-12-13 09:42:09 -08:00
dr7ana
d016951d2f Fixed pending message queue weirdness 2023-12-13 05:49:59 -08:00
dr7ana
ea614ed141 better! 2023-12-12 11:57:15 -08:00
dr7ana
49dbdf1062 doofus 2023-12-12 10:45:14 -08:00
Jason Rhinelander
2f1917040c
Fix std::set move semantics
This is, apparently, the only way to move an element out of a std::set.
2023-12-12 14:31:26 -04:00
dr7ana
63c9bd6e63 update seeds before returning no 2023-12-12 10:24:31 -08:00
dr7ana
eb971265c7 wrap dat 2023-12-12 10:19:56 -08:00
Jason Rhinelander
4c7f9d080f
Replace GetBestNetIF with quic::Address version
It is now called get_best_public_address, and takes (bool, port)
argument to return an optional quic::Address to make life easier: the
caller now can just give the default port to set, and we keep the C
sockaddr* more constrained.
2023-12-12 14:05:50 -04:00
dr7ana
6cb2f57abd whatever 2023-12-12 09:44:59 -08:00
dr7ana
b69f754599 come on already work already 2023-12-12 08:11:34 -08:00
dr7ana
7544436f6a who cares 2023-12-11 13:48:11 -08:00
Jason Rhinelander
cece742cf3
Bump libquic for message move/copy fixes 2023-12-11 17:20:49 -04:00
Jason Rhinelander
a6da88cbbe
DRY duplicated code in RCRemote 2023-12-11 16:35:19 -04:00
dr7ana
88b9d9f976 print but better 2023-12-11 12:20:02 -08:00
dr7ana
f812d5471b send localrc, receive as remoterc 2023-12-11 12:14:03 -08:00
dr7ana
3c521c4923 log 2023-12-11 11:48:14 -08:00
Jason Rhinelander
3509693c49
Revert me: fix double-hex in debug output 2023-12-11 15:42:36 -04:00
Jason Rhinelander
febcd44ea1
Fix pubkey parsing to be read as bytes
from_string was trying to parse it as base32z.snode

Also leave FIXMEs behind for the badly named methods (both in RouterID
itself and in ancestor classes).
2023-12-11 15:42:27 -04:00
Jason Rhinelander
636de93b1a Revert me: debug print the msg/sig/signer 2023-12-11 11:29:36 -08:00
dr7ana
daa3a6fd94 shoot 2023-12-11 11:29:33 -08:00
Jason Rhinelander
5e2c18ff19
RemoteRC: explicit single-argument constructors 2023-12-11 15:14:09 -04:00
dr7ana
f5d959c65a D 2023-12-11 11:09:59 -08:00
Jason Rhinelander
1a7f47f5cd
Fix version encoding
We are reinterpret_cast'ing the version to a string to send it as raw
bytes, but it was sending \x00\x00\x09 instead of \x00\x09\x0a because
the version constant was actually a uint16_t array.

This just makes the version constant a uint8_t array instead so that it
works (and I am not at all worried about any version component getting
larger than 255).
2023-12-11 15:03:52 -04:00
Jason Rhinelander
4c1f6112a7
REVERT ME: debug incoming dict data 2023-12-11 14:46:29 -04:00
dr7ana
f725c07f2d dont bomb with bootstrap reqs 2023-12-11 10:36:46 -08:00
dr7ana
e0c1069790 kiiiiiick 2023-12-11 10:10:04 -08:00
dr7ana
efe5fd3b5b try queueing 2023-12-11 09:17:29 -08:00
dr7ana
0bf3a3323a kick 2023-12-11 09:04:53 -08:00
dr7ana
238cc3d0da kick 2023-12-11 08:16:13 -08:00
dr7ana
5f430a392b kick 2023-12-11 07:46:11 -08:00
dr7ana
63644d3d84 Bootstrap seed
- nodes now send their RC to the bootstrap seed on making a request
- allows the bootstrap seed to distribute RCs
2023-12-11 07:32:52 -08:00
dr7ana
f2feea74ee Crit logging
- TODO: discuss authentication for nodes connecting to bootstrap seed
- crit log num connected/RC's, conn open/closed, etc
2023-12-11 03:45:23 -08:00
Jason Rhinelander
412ce44139 Update libquic 2023-12-11 03:13:39 -08:00
Jason Rhinelander
daeff3ee7e Remove duplicate connection closing method
`deregister_peer` does the exact same thing as `close_connection` so
just remove it.

Also removes an unnecessary loop dispatch call (because we *have* to be
in the logic thread already to be able to touch the variables we are
touching before the dispatch).
2023-12-11 03:13:39 -08:00
Jason Rhinelander
b3dc23e1bf Remove release motto
This doesn't really have a purpose.
2023-12-11 03:13:39 -08:00
dr7ana
9084d39e5a Squashed misc testnet fixes 2023-12-11 03:13:16 -08:00
Jason Rhinelander
bc2cb46d9c
testnet: don't give oxend and error when testing is disabled 2023-12-07 20:53:09 -04:00
dr7ana
8af38d3d44 TELL ME WHEN IT WORKS 2023-12-07 16:48:40 -08:00
dr7ana
d00257b9f0 address parsing
- straightened out setting of public addr and public port in config vs listen ("bind") addr
- fixed small bug in router contact writing and saving
2023-12-07 16:15:20 -08:00
dr7ana
cef2ff7782 Local router mode
- Up and running locally, no connections yet
- Next: flip testnet and do the gosh dang thing
2023-12-07 09:27:58 -08:00
dr7ana
ed6bd28a35 testnet prep
- redoing link_manager functions again to implement previously ignored review comments on several PRs
- conceptually merging "whitelist_routers" and new "known_{rids,rcs}", s.t. we can completely eliminate white/red/gray/green/etc lists in favor of something that isn't dumb
2023-12-06 12:02:31 -08:00
dr7ana
c9268dceba trust model edge case handling
- Once we have our set of returned rc's and accepted rid's (ones that were found locally), the remainder are placed in an "unconfirmed" state
- Once there, they have five subsequent successful fetches to be found in request response, at which point their verification counter is incremented and their attempt counter is reset
- If they appear three times, they are "promoted" and moved to our "known_{rid,rc}" list
2023-12-06 07:28:21 -08:00
dr7ana
62c37825b0 testnet prep
- disable reachability testing with config option; required to be done on testnet
- reachability testing pipeline through link_manager executes pings similar to storage server. connection established hook reports successful reachability, while connection closed callback (with non-default error code) reports unsuccessful testing
2023-12-04 11:18:18 -08:00
dr7ana
70e9c1ae25 trust model fetch fails
- bootstrap cooldown implemented with 1min timer in case all bootstraps fail
- set comparison implemented in non-initial and non-bootstrap rc fetching; set comparison in rid fetching is done every fetch
- nodedb get_random functions refactored into conditional/non-conditional methods. Conditional search implements reservoir sampling for one-pass accumulation of n random rcs
2023-12-04 07:59:13 -08:00
dr7ana
3508dee8d8 trust model
- greedy evaluation of returned rid's, simplifying post-processing logic to simple frequency comparison per rid against a constant threshold
- tidied up link_manager request/response handling
- TODO:
  - review and decide thresholds
  - evaluate necessity and potential implementation of rc comparison
2023-12-01 12:54:52 -08:00
dr7ana
91121ea22b pull yourself up by your bootstraps sonny
- initial/subsequent fetching combined for RouterContacts and RouterIDs
- bootstraps fallback implemented and looped into fetch logic
2023-11-30 15:16:33 -08:00
dr7ana
f6e651caea move from vectors to unordered_sets
- When receiving a request to fetch RouterID's, the remote endpoint fulfilling the request stores them in an unordered set. When the request caller receives that payload, it is loaded into a vector in the same order. However, we should just load it directly into an unordered set to enforce both the order and that none appear twice
- The trust model will have to operate on multiple large lists of RouterID's and RC's efficiently, and maintaining a sort order ensures the values are workable immediately after deserialization
2023-11-29 06:11:46 -08:00
dr7ana
ba3fffb765 housekeeping pre-trust model 2023-11-29 06:03:54 -08:00
dr7ana
b6cc86e25b fetch RID result handler logic 2023-11-28 12:51:30 -08:00