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
Juliusz Chroboczek
d8b984979b
Rename client to webClient.
2020-05-30 03:26:05 +02:00