1
Fork 0
Commit Graph

51 Commits

Author SHA1 Message Date
Juliusz Chroboczek 6f120f0333 Make disk recording clients kickable.
Kick can no longer be called with groups locked.
2020-09-12 14:00:14 +02:00
Juliusz Chroboczek e37e27036e Implement graceful server shutdown.
This gives the user a friendly message when the server shuts down.
2020-09-12 13:59:55 +02:00
Juliusz Chroboczek 7707775cca Implement user-readable message for kick. 2020-09-12 12:26:07 +02:00
Juliusz Chroboczek 4bdd7c7665 Implement group redirection. 2020-09-10 14:22:34 +02:00
Juliusz Chroboczek c2b1723bd4 Fail early when a group doesn't exist. 2020-09-10 13:41:15 +02:00
Juliusz Chroboczek fc9bbf20ea Don't close writer channel at client shutdown.
Closing the channel could cause a panic if a c.write was pending.
Instead, ensure we send a closeMessage to the writer, and cause the
writer to exit when it receives a closeMessage.
2020-09-08 00:29:30 +02:00
Juliusz Chroboczek 5a91a7aae8 Reset remote connection if SetRemoteDescription fails.
In current versions of pion, SetRemoteDescription fails if ICE is
currently gathering.  Work around the issue by resetting the connection.
2020-09-03 13:40:38 +02:00
Juliusz Chroboczek 240b05a660 Fix typo in renegotiation. 2020-08-13 13:48:17 +02:00
Juliusz Chroboczek 52c4f1a399 Restructure offers. 2020-08-12 13:56:35 +02:00
Juliusz Chroboczek bc7bd36ba2 Restructure user notifications. 2020-08-12 13:51:31 +02:00
Juliusz Chroboczek 675035ab29 Restructure group and client management messages. 2020-08-12 12:40:40 +02:00
Juliusz Chroboczek 88d2a96819 Restructure error and chat messages. 2020-08-12 12:17:56 +02:00
Juliusz Chroboczek 7b51296262 Split handshake into login/join.
For now, join must follow login, but it will make it easier to extend
the protocol for joining multiple groups (think federation).
2020-08-12 11:50:30 +02:00
Juliusz Chroboczek 6bde5f986a Store password in client structure.
No need to carry password around.
2020-08-12 11:49:23 +02:00
Juliusz Chroboczek 6a37033ca8 Allow both sides to initiate renegotiation.
More reliable reaction to network failures when they are detected
by just one side.
2020-08-11 15:49:33 +02:00
Juliusz Chroboczek 7aab79c4c6 Have chat messages go through the server even when sent to oneself. 2020-08-07 11:33:59 +02:00
Juliusz Chroboczek 23c4aea58f Implement renegotiation in the up direction. 2020-08-07 11:15:58 +02:00
Juliusz Chroboczek 9506615272 Restart ICE instead of restarting down connections. 2020-08-07 11:15:58 +02:00
Juliusz Chroboczek e724194ef6 Upgrade to pion/webrtc v3. 2020-08-07 11:15:58 +02:00
Juliusz Chroboczek a4d0741704 Perform congestion control at the connection level.
REMB applies to the whole transport, not to individual tracks.
2020-06-12 20:17:46 +02:00
Juliusz Chroboczek 903e499dd6 Don't reduce video rate in large groups. 2020-06-12 17:27:38 +02:00
Juliusz Chroboczek 23cceba7ba Restart downstream connections on ICE failure. 2020-06-11 20:22:28 +02:00
Juliusz Chroboczek e175ef0e49 Replace changed connections.
We used to destroy and recreate connections, we now replace them atomically.
2020-06-10 20:25:25 +02:00
Juliusz Chroboczek 448bb0374d Use pushConn to delete connections.
The previous mechanism (going through up.local) was racy and complicated.
2020-06-10 19:50:18 +02:00
Juliusz Chroboczek 917fa33d38 Don't duplicate username in call to addClient. 2020-06-08 22:31:12 +02:00
Juliusz Chroboczek 208f023d9e Make upConnections generic. 2020-06-08 22:14:28 +02:00
Juliusz Chroboczek da97560cb3 Protect upConn.tracks by the upConn mutex rather than the client mutex.
Also don't rely on tracks being immutable in sendRR.
2020-06-08 19:11:20 +02:00
Juliusz Chroboczek 8ba50bd2ca Tweak SR sending policy.
Don't send SRs for tracks for which we have no time offset yet.
Send an unscheduled SR when we get our first time offset.
2020-06-04 19:12:52 +02:00
Juliusz Chroboczek ce7f3670bc Resize packet cache dynamically. 2020-06-04 01:51:36 +02:00
Juliusz Chroboczek b1542af47c Remove dead code. 2020-06-03 23:45:45 +02:00
Juliusz Chroboczek 4da03a3ce5 Make rate estimator estimate packet rates too. 2020-06-03 23:45:45 +02:00
Juliusz Chroboczek 19a65318c9 Compute down track RTT. 2020-06-03 23:45:45 +02:00
Juliusz Chroboczek b447a2e9a0 Maintain sender report time in jiffies. 2020-06-03 21:05:03 +02:00
Juliusz Chroboczek 3e305e9827 Use jiffies instead of microseconds. 2020-06-03 20:58:01 +02:00
Juliusz Chroboczek 7ae9a9ea69 Rename mono to rtptime. 2020-06-03 20:12:25 +02:00
Juliusz Chroboczek 4d2bd6e473 Fix initialisation of maxLossBitrate. 2020-06-01 01:48:22 +02:00
Juliusz Chroboczek dcb2111181 Send sender reports. 2020-06-01 01:34:44 +02:00
Juliusz Chroboczek 5b92226860 Maintain full time information from sender reports. 2020-06-01 01:09:15 +02:00
Juliusz Chroboczek 303d15539c Handle sender reports for down tracks.
In principle, we should be receiving receiver reports only, but let's
be robust.
2020-06-01 00:35:37 +02:00
Juliusz Chroboczek 8fda40b544 Set delay in receiver report to 0 if no sender report received. 2020-06-01 00:26:23 +02:00
Juliusz Chroboczek 70dee15f5c Rename rate.Add to rate.Accumulate. 2020-06-01 00:02:17 +02:00
Juliusz Chroboczek c4284a45c5 Delay rtcpUpSender until the connection is complete.
This avoids locking in sendRR.
2020-06-01 00:02:17 +02:00
Juliusz Chroboczek b8128f81a0 Move client notifications into addClient and delClient. 2020-06-01 00:02:17 +02:00
Juliusz Chroboczek e28a390ab9 Move check for incorrect username earlier. 2020-05-30 13:23:31 +02:00
Juliusz Chroboczek 65637c1832 Tweak error message. 2020-05-30 12:53:58 +02:00
Juliusz Chroboczek 32e8f08b8d Move dead errors into webclient. 2020-05-30 12:38:13 +02:00
Juliusz Chroboczek 2dd230ca45 Don't complain about unknown local tracks on close. 2020-05-30 12:33:30 +02:00
Juliusz Chroboczek 37b1994069 Fail addLocal if connection is closed. 2020-05-30 03:44:03 +02:00
Juliusz Chroboczek 0a2c4eb381 Implement recording. 2020-05-30 03:26:05 +02:00
Juliusz Chroboczek 3240225dc3 Make client generic. 2020-05-30 03:26:05 +02:00