Alexis Sellier
156a3a576a
Enforce max size for `Message` type on wire
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 15:44:06 +02:00
Alexis Sellier
f5e881b5a9
Move message size constant to `Message` type
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:06:45 +02:00
Alexis Sellier
c306392d13
Improve wire module
...
* Set `Size` correctly to `u16`
* Remove `usize` support, since it's OS-dependent
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:04:12 +02:00
Alexis Sellier
874386540a
Document service constants
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:04:12 +02:00
Alexis Sellier
ae95b229f5
Activate lint for dead-code checking
...
For test code, we need it in a couple of places.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:03:34 +02:00
Alexis Sellier
1df5cf0c45
Remove redundant docs from trait impl
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:00:55 +02:00
Alexis Sellier
2499317589
Implement `Handle::listening`
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:00:50 +02:00
Alexis Sellier
d3523ccf78
Remove unused type
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 12:37:01 +02:00
Alexis Sellier
fbd4fd9fea
Use session RNG for ping
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 12:33:12 +02:00
Alexis Sellier
86ed10fca9
Move timestamp columns to the right table
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-17 20:39:30 +02:00
Slack Coder
14690d1951
Service: drop unresponsive peers
...
Use pings to check connection health with network peers and drop them if
they prove unresponsive.
Signed-off-by: Slack Coder <slackcoder@server.ky>
2022-10-17 10:22:43 -05:00
Alexis Sellier
7936ba8773
node: use consistent terminology for tests
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 18:55:30 +02:00
Alexis Sellier
d9517cc966
node: add more tests for refs relay
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 18:51:53 +02:00
Alexis Sellier
7c45971998
node: handle announcement relay correctly
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 13:09:06 +02:00
Alexis Sellier
45ea9cc97d
node: refactor announcement timestamp handling
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 12:14:26 +02:00
Alexis Sellier
4c1aa65f90
node: correct handling of announcement timestamps
...
Since we now have three announcement message types, we need at least
three timestamps per peer. But even that is not enough, since we don't
want to conflate ref announcements for different projects with each
other.
The solution is to also keep a map of timestamps per peer, for each
tracked project. That way we are able to know when a ref announcement is
interesting to us or not.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 11:59:54 +02:00
Alexis Sellier
07add86bb6
node: Handle node announcements
...
To build an address book, peers communicate via gossip, sending
`NodeAnnouncement` messages.
These need to be handled by storing the addresses in an address book
and the addresses need to be persisted to disk.
Node announcement messages should also be relayed to peers like other
gossip messages.
2022-10-14 11:58:17 +02:00
Alexis Sellier
a06ed9f6de
Statically link sqlite3
2022-10-12 13:27:45 +02:00
Alexis Sellier
fde0af09f7
Handle errors correctly in storage
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-11 09:31:48 +02:00
Alexis Sellier
d652df7c30
node: Handle error in handshake call
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-10 14:47:50 +02:00
Alexis Sellier
832c6ad53f
Improve error handling in a few places
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-10 11:29:22 +02:00
Alexis Sellier
78545c2f0f
Implement routing table pruning functions
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-08 13:45:15 +02:00
Alexis Sellier
b8c2ab5316
Switch to a lighter sqlite dependency
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-08 12:13:59 +02:00
Alexis Sellier
e909e04c6c
Implement proper `node::Features` type
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-07 22:49:58 +02:00
Alexis Sellier
2d52a53ce5
Add variable bloom filter sizes
...
This should help small nodes waste less bandwidth, while standardizing
on set sizes.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-05 15:58:34 +02:00
Alexis Sellier
85ac8a1d4d
Implement routing table persistence
...
Uses SQLite for persistence.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-05 12:13:12 +02:00
Alexis Sellier
15f525299e
Add commnads to query internal service state
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-04 21:07:57 +02:00
Alexis Sellier
af06ad6451
Use message timestamp for filtering
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-29 10:48:41 +02:00
Alexis Sellier
e35ec2f715
Rebroadcast logic for stored gossip messages
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-29 10:02:52 +02:00
Slack Coder
f9ad3ac155
git: Use RefString types for git::refs
...
Lean on rust's type system to improve safety.
Signed-off-by: Slack Coder <slackcoder@server.ky>
2022-09-28 16:11:03 -05:00
Alexis Sellier
27e39c0df5
Make `Id` a `Copy`
2022-09-27 14:13:20 +02:00
Alexis Sellier
ca2f766d19
Add `Profile::connect`
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-26 14:27:56 +02:00
Alexis Sellier
8605946703
node: Add CLI options
2022-09-26 11:25:20 +02:00
Alexis Sellier
116eaa79e6
Use `Profile` in client
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-23 20:21:21 +02:00
Alexis Sellier
fcb1007f9d
Refactor service
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-23 15:43:55 +02:00
Alexis Sellier
7169881849
Remove peer timestamp
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 18:17:51 +02:00
Alexis Sellier
1fa85f0da3
Rename `Peer` to `Session`
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 17:49:20 +02:00
Alexis Sellier
e382bc4eb9
Remove `Project` type
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 15:59:20 +02:00
Alexis Sellier
c2b599f068
Implement node handle to control node
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 12:36:12 +02:00
Alexis Sellier
46501507be
Split repository into two creates
...
* `radicle`: core library
* `radicle-node`: node
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-21 15:11:17 +02:00
Alexis Sellier
d1ccf1b807
node: Rename folder to `radicle-node`
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-21 11:38:09 +02:00