When a user triggers panic_wipe(), the local session is closed (stream_writer.shutdown()), but:
- No protocol message: The peer has no way to know the session is closed. They may continue trying to send messages or assume the session is still active.
- Silent failure: The peer's receive_loop will eventually timeout on I2P side, but there's no explicit "session_closed" signal sent over the protocol.
- Asymmetric state: One peer sees "session closed", the other thinks it's still waiting for messages.
This is a security AND usability issue:
- Security: Information leakage (one side doesn't know when data should stop flowing)
- UX: Peer doesn't know why messages are no longer reaching the other side
Proposed solution: Add a "session_end" message type to the protocol (like X3DH's "end" message) that gets sent before shutdown.
When a user triggers panic_wipe(), the local session is closed (stream_writer.shutdown()), but:
This is a security AND usability issue:
Proposed solution: Add a "session_end" message type to the protocol (like X3DH's "end" message) that gets sent before shutdown.