Commit Graph

5106 Commits

Author SHA1 Message Date
Jason Rhinelander
6fdfb4cef6
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.
2023-12-15 19:51:18 -04:00
dr7ana
47be3cefe1 lets see which gets rejected 2023-12-15 15:42:22 -08:00
Jason Rhinelander
7417c59286
Get rid of IterDir
It's a gross implementation, and even if it wasn't, using it takes more
code than not using it.
2023-12-15 19:12:31 -04:00
dr7ana
f41bcd00c6 loop call 2023-12-15 14:58:20 -08:00
dr7ana
2a090b6e42 btreq destructor
- try closing the connection via link::Endpoint like we probably should be doing..
- testing out dropping stream constructor, godspeed
2023-12-15 14:53:04 -08:00
dr7ana
87ae0686d0 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
2023-12-15 14:11:29 -08:00
dr7ana
b63733381f libquic/oxenc vbumps 2023-12-15 12:52:58 -08:00
dr7ana
49794295b1 booyakasha 2023-12-15 10:52:36 -08:00
Jason Rhinelander
5c13a0e7b4
Revert me: print out the failed bootstrap response 2023-12-15 14:30:44 -04:00
dr7ana
c71e767511 full mesh proto implementation 2023-12-15 10:27:50 -08:00
dr7ana
42aa92ab95 gossip fetch and response handling implemented 2023-12-15 08:43:58 -08:00
dr7ana
ef1897c25a Added connection keepalive
- implemented ngtcp2 ping to keep connections alive
- fixed weird lambda captures
- fetch logic
- lets see what happens
2023-12-15 07:51:20 -08:00
dr7ana
575494c3da actually have rid in command registration 2023-12-13 13:27:00 -08:00
dr7ana
2c3763b61c libquic vbump 2023-12-13 11:50:56 -08:00
dr7ana
08c2c26c29 bootstrap tweaking 2023-12-13 11:13:22 -08:00
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