Comments (3)
Oh, one gotcha to look out for. The current way that events are processed means that everything is an "eventual send" (e.g. when an event is processed, any events it emits are appended to the end of a queue, and the main execute()
loop pulls events from the front of this queue), so the following sequence of events would violate the order of delivery that Order is supposed to provide:
- Order gets non-PAKE message: queues it, emits nothing
- Order gets PAKE message: emits
Key.got_pake
, emitsReceive.got_message
(for queued message) - action queue is now:
[Key.got_pake, Receive.got_message]
- Key.got_pake computes shared key, emits
Receive.got_key
- action queue is now:
[Receive.got_message, Receive.got_key]
- Key.got_message runs, breaks because it hasn't gotten the key yet
I'm not yet sure what a clean solution would be. Maybe change the way execute
works to do more of a depth-first traversal of the action queue (push the emitted events onto the front of the queue, rather than the back).
from magic-wormhole.rs.
I think most of it is implemented. When I get to the receive parts, I will revisit Order state machine.
from magic-wormhole.rs.
This is done now, however that eventual-send issue might still be a problem. I'll open a separate ticket for it.
from magic-wormhole.rs.
Related Issues (20)
- Flaky tests
- rand >= 0.8 break WASM support HOT 3
- Feature suggestion: show bitrate in progress bar HOT 5
- Progress bar bitrate intermittently drops on the sending side HOT 11
- [security] `send --code` does not verify that a nameplate was provided and uses the entire code as the nameplate instead HOT 7
- RUSTSEC-2023-0037: crate has been renamed to `crypto_secretbox` HOT 1
- Release mac binaries HOT 2
- RUSTSEC-2023-0052: webpki: CPU denial of service in certificate path building
- [Feature request] Drop xsalsa20poly1305 dependency HOT 3
- Adapt help message for renamed binary HOT 1
- Windows binary for v0.6.1 HOT 2
- Enable transfers over link scoped addresses
- Expose the TLS implementation features of async-tungstenite
- CI test failures HOT 1
- For Android HOT 3
- Performance issue on Mac with M1 pro HOT 3
- [FR] Please publish binary crate on crates.io, too
- Automatically generate man pages HOT 1
- test_send_many fails on amd64 and armel/hf HOT 6
- RUSTSEC-2024-0357: `MemBio::get_buf` has undefined behavior with empty buffers
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 magic-wormhole.rs.