Commit Graph

5109 Commits

Author SHA1 Message Date
dr7ana
61718464ae zero cost exception handling my ass
- rework bootstrap loading to move all logic into BootstrapList object
- ability to parse lists and dicts of bootstraps implemented
- netid parsing refers to the correct fallback
- cross your fingers boys here we go
2024-01-31 07:54:12 -08:00
dr7ana
1cbec988fc address parsing of deprecated opts 2024-01-31 07:54:12 -08:00
dr7ana
9cc053608a re-abstraction for client connections
- pending_conns removed in favor of direct creation of link::Connection objects in link::Endpoint::{service,client}_conn containers
- conn lookup maps removed, they were pointless
2024-01-31 07:54:12 -08:00
dr7ana
3e9d5a97a8 ALPN verification
- laying the groundwork for functional client->service node connections. this requires ALPNs verification as a secondary method of identification to the remote key
- refactored btreq stream creation to use improved stream creation logic in libquic
2024-01-31 07:54:12 -08:00
dr7ana
ae38dc7110 gossip storage, logs 2024-01-31 07:54:12 -08:00
Jason Rhinelander
687d6556d5 Add exact argument to get_n_random_rcs
If given and true then return nullopt if we don't find the requested
number; otherwise return them even if there aren't as many as we
requested.
2024-01-31 07:54:12 -08:00
dr7ana
961763d1bb lets see which gets rejected 2024-01-31 07:54:12 -08:00
Jason Rhinelander
86f2906ec3 Get rid of IterDir
It's a gross implementation, and even if it wasn't, using it takes more
code than not using it.
2024-01-31 07:54:12 -08:00
dr7ana
4ce0385b55 loop call 2024-01-31 07:54:12 -08:00
dr7ana
75e31279be btreq destructor
- try closing the connection via link::Endpoint like we probably should be doing..
- testing out dropping stream constructor, godspeed
2024-01-31 07:54:12 -08:00
dr7ana
22879b64ed rc parsing
- new btdc method used to ensure no junk at the end of our bt data
- DRYed out the RC code
- check inbound bootstraps against all registered routers, not just whitelist
- libquic vbump
2024-01-31 07:54:12 -08:00
dr7ana
4251172707 libquic/oxenc vbumps 2024-01-31 07:54:12 -08:00
dr7ana
7b8c8fde52 booyakasha 2024-01-31 07:54:12 -08:00
Jason Rhinelander
4d56c97612 Revert me: print out the failed bootstrap response 2024-01-31 07:54:12 -08:00
dr7ana
7f143bb52f full mesh proto implementation 2024-01-31 07:54:12 -08:00
dr7ana
89975a0b01 gossip fetch and response handling implemented 2024-01-31 07:54:12 -08:00
dr7ana
cc97fe1f5f Added connection keepalive
- implemented ngtcp2 ping to keep connections alive
- fixed weird lambda captures
- fetch logic
- lets see what happens
2024-01-31 07:54:12 -08:00
dr7ana
1364e4ce53 actually have rid in command registration 2024-01-31 07:54:12 -08:00
dr7ana
5ab40a7a7f libquic vbump 2024-01-31 07:54:12 -08:00
dr7ana
42da1b0e68 bootstrap tweaking 2024-01-31 07:54:12 -08:00
dr7ana
bf6e705cbd libquic vbump 2024-01-31 07:54:12 -08:00
dr7ana
9f0766f203 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!
2024-01-31 07:54:12 -08:00
dr7ana
dbad0d596a Fixed pending message queue weirdness 2024-01-31 07:54:12 -08:00
dr7ana
30ea6799db better! 2024-01-31 07:54:12 -08:00
dr7ana
8f99ead7ba doofus 2024-01-31 07:54:12 -08:00
Jason Rhinelander
cb39f64cae Fix std::set move semantics
This is, apparently, the only way to move an element out of a std::set.
2024-01-31 07:54:12 -08:00
dr7ana
fcbfc1919d update seeds before returning no 2024-01-31 07:54:12 -08:00
dr7ana
8bdfb206c2 wrap dat 2024-01-31 07:54:12 -08:00
Jason Rhinelander
6505c7badb 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.
2024-01-31 07:54:12 -08:00
dr7ana
90a530a114 whatever 2024-01-31 07:54:12 -08:00
dr7ana
1e1f4dd40b come on already work already 2024-01-31 07:54:12 -08:00
dr7ana
0e888395d6 who cares 2024-01-31 07:54:12 -08:00
Jason Rhinelander
f00137adeb Bump libquic for message move/copy fixes 2024-01-31 07:54:12 -08:00
Jason Rhinelander
0cf5805a7e DRY duplicated code in RCRemote 2024-01-31 07:54:12 -08:00
dr7ana
cd96497fd6 print but better 2024-01-31 07:54:12 -08:00
dr7ana
97fe3c6271 send localrc, receive as remoterc 2024-01-31 07:54:12 -08:00
dr7ana
b8c8a2c696 log 2024-01-31 07:54:12 -08:00
Jason Rhinelander
31616837e0 Revert me: fix double-hex in debug output 2024-01-31 07:54:12 -08:00
Jason Rhinelander
ff3a495f0e 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).
2024-01-31 07:54:12 -08:00
Jason Rhinelander
329acaf56c Revert me: debug print the msg/sig/signer 2024-01-31 07:54:12 -08:00
dr7ana
4328212c2c shoot 2024-01-31 07:54:12 -08:00
Jason Rhinelander
eb62185160 RemoteRC: explicit single-argument constructors 2024-01-31 07:54:12 -08:00
dr7ana
aabd413ed6 D 2024-01-31 07:54:12 -08:00
Jason Rhinelander
dab6e90f7d 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).
2024-01-31 07:54:12 -08:00
Jason Rhinelander
ba6c8ee320 REVERT ME: debug incoming dict data 2024-01-31 07:54:12 -08:00
dr7ana
384cb7a8bd dont bomb with bootstrap reqs 2024-01-31 07:54:12 -08:00
dr7ana
3d9e3aef7f kiiiiiick 2024-01-31 07:54:12 -08:00
dr7ana
9c92c30180 try queueing 2024-01-31 07:54:12 -08:00
dr7ana
7568b71893 kick 2024-01-31 07:54:12 -08:00
dr7ana
0b7997ef8f kick 2024-01-31 07:54:12 -08:00