Looks good, I'll land this. However we should start to think about moving the peer-to-peer protocol out to a separate crate. The "offer", "answer", and "error" structs you're improving in this PR are messages that get emitted by one client and consumed by the other client, rather than being messages consumed by the server (in fact they're encrypted first, so the server can't even read them).
I'll open a separate Issue where we can figure out how this should be organized.
Looks good, I'll land this. However we should start to think about moving the peer-to-peer protocol out to a separate crate. The "offer", "answer", and "error" structs you're improving in this PR are messages that get emitted by one client and consumed by the other client, rather than being messages consumed by the server (in fact they're encrypted first, so the server can't even read them).
I'll open a separate Issue where we can figure out how this should be organized.