Comments (3)
Resolved a lot of issues but still some unresolved stuff:
- When proxy propagation is done, if it fails, backtrack and try new nodes until they succeed or exhausted. Alternatively, or additionally, try to spread to more than 1 host per hop.
- When nodes join the network, and as gateways tend to be filled, those may be placed at the edges of the network. Making the network loosely connected at some nodes and "unreachable". In theory this should be fixed by propagation, but I believe due to the first point we reach some situations where the network is "stalled" and new nodes cannot connect any more.
from freenet-core.
After some discussion, we may want to change how things are done in the future re. join op, between other alternatives.
- Send, from the requester, multiple join requests to the gateway, in parallel, which return independently. For this to work we should work out a way to only assign one location per requester for subsequent/parallel requests (this implies, at the very least, searching at the gateway for those parallel requests).
- Return immediately, at each hop, if the connection was accepted or not. This can be done directly to the requester without having to rewind the connection chain per hop (as is done now), in fact is a good idea to change this and return immediately to the requester. Important: when we done real network connection, verify that the requester peer is reachable by the node which potentially is accepting the connection, otherwise don't accept it.
- Do multiple requests from each hop, this could not return immediately which adding back significant complexity to the callback chain in order to synchronize the number of connections accepted so far, or adding additional verification (we already do that so maybe we would just not verify the "excess" connections). Although the first change may run into similar problems and we potentially have to discard potential connections.
This could be also probably solved by splitting evenly and keeping track of the number of accepted connections so far. All in all still will need to improve this, but leaving any additional work for when we start adding real networking.
from freenet-core.
Will come back to do the improvements in other issues/pr for now this is "good enough".
from freenet-core.
Related Issues (20)
- Discord link expired HOT 1
- Proposal: Rename "locutus" repository to "core" HOT 7
- document crypto algorithms for end user HOT 2
- document threat model
- Lack of trait implementation prevents freenet-email-app from building HOT 2
- Limit Router to select from N nearest peers for improved network clustering HOT 1
- Lots of "cannot find x in this scope" errors HOT 21
- MacOS Email App Example Broken HOT 1
- MacOS brew install rust incompatibility with fdev HOT 1
- Any end-user getting-started guide? HOT 1
- Compilation failure using Rust 1.74 Complete on Fedora 39 --- Raw Terminal logs included. HOT 4
- RUSTSEC-2023-0071: Marvin Attack: potential key recovery through timing sidechannels HOT 1
- expose a simple friendlier GET API for retrieving contract state, eg. for use with curl. HOT 7
- force rsa signature of the contract before publish it. HOT 1
- Use absolute path to freenet-stdlib in git submodules
- improve freenet library documentation HOT 1
- Error while building email app HOT 7
- freenet local ; command is absouletly broken HOT 25
- document how to build freenet from source in details
- assign me to a cryptographic issue please
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from freenet-core.