Repository navigation
Packet mumcord p2p
Part of the Plugin data protocol. Flow: Flow-Direct-Connection.
Purpose. Introduces two Mumcord clients so they can open a direct, encrypted connection for large data (full images, screen share media). There is no STUN, TURN or relay server by design: candidates are the machine's IPv6 and LAN addresses and a router port mapping (PCP, NAT-PMP or UPnP). If no path works, features fall back to plugin data or are not available.
dataID |
mumcord.p2p |
| Encoding | JSON object |
| Version sent / accepted |
1 / 1 and higher (0 is dropped) |
| Sent to | one person who announced p2p, and only after the user allowed direct connections |
| Defined in | crates/p2p/src/signal.rs |
| Field | Type | Meaning |
|---|---|---|
v |
integer | Sent as 1. |
t |
string |
offer, answer or decline. |
s |
string | Connection attempt id, exactly 16 lowercase hex digits. The answer repeats the offer's id. |
c |
array of strings | Address candidates ip:port (IPv6 in brackets), at most 8 (MAX_CANDIDATES). Port 0, unspecified, multicast, broadcast, IPv6 link-local and IPv4-mapped IPv6 addresses are rejected. Omitted when empty. |
r |
string | Only for decline: declined (user did not allow it) or unavailable (allowed, but could not be set up). |
Addresses are documentation addresses, not real ones.
{"v":1,"t":"offer","s":"00ff00ff00ff00ff","c":["203.0.113.5:40000","[2001:db8::1]:40000"]}
{"v":1,"t":"answer","s":"00ff00ff00ff00ff","c":["198.51.100.7:41000"]}
{"v":1,"t":"decline","s":"00ff00ff00ff00ff","r":"declined"}QUIC with mutual TLS and the ALPN mumcord-p2p/1. Each side presents its Mumble client certificate and accepts the other only if the certificate's hash equals the hash the Mumble server reports for that user (UserState.hash). There is one connection per pair of users on a server, shared by all features. The streams on it are in Flow-Direct-Connection.
- Signals are at most 1000 bytes (
MAX_SIGNAL_BYTES). - An offer waits 15 seconds for an answer; a wanted connection waits 60 seconds for the user's consent answer.
The candidates are IP addresses of the user's machine, including LAN addresses. That is why nothing is sent without the user's consent. An offer that arrives before the user decided is declined. Receivers must never dial addresses they did not ask for.
Flow-Direct-Connection, and through it Flow-Full-Image and Flow-Screen-Share.
Mumcord is licensed under the AGPL-3.0 (versions up to 0.1.1: MIT) · Source code · Website · Website source
Mumcord
- Home
- Features
- Roadmap
- Epic 1: Foundation
- Epic 2: Multi-server and themes (0.4.0)
- Epic 3: Comfort and polish (0.5.0)
- Settings and setup wizard
- Updates
- Public server browser
- Notifications and Do Not Disturb
- Blocking and private messages
- Hotkeys, whisper and shout
- Channel audio profiles
- Community relay
- Watch party and screen sharing
- Themes
- Message cards
- Installation
- Troubleshooting
- Privacy and code signing
Contributing