Juliusz Chroboczek
5e130122f5
Forward NACKs to sender in case of double loss.
...
We already send NACKs when a packet is missing. Under high packet loss,
however, the recovery packet might get lost two. Forward receiver NACKs
to the sender, but only after a delay and after checking that the packet
has not arrived in the meantime.
2020-10-12 13:00:59 +02:00
Juliusz Chroboczek
962c675ded
Packetcache: implement KeyframeSeqno and Get(nil).
2020-10-12 12:14:19 +02:00
Juliusz Chroboczek
2a516674f2
Request a keyframe every 10s when saving to disk.
2020-10-11 22:56:15 +02:00
Juliusz Chroboczek
5e845eb493
Send FIR if initial keyframe is too old.
2020-10-11 22:56:15 +02:00
Juliusz Chroboczek
a189e0ad46
Implement packetcache.Last.
2020-10-11 22:08:03 +02:00
Juliusz Chroboczek
e6bf9338dd
Document packetcache.
2020-10-08 18:46:52 +02:00
Juliusz Chroboczek
e07a98e355
Deal with reordered keyframes.
2020-10-08 17:58:58 +02:00
Juliusz Chroboczek
69540e23af
Allow anonymous users to chat.
2020-10-08 15:19:29 +02:00
Juliusz Chroboczek
2b4372ad87
Sort usernames case-insensitively in user interface.
2020-10-08 15:11:52 +02:00
Juliusz Chroboczek
90ba4814c8
Discard old history entries.
2020-10-08 14:41:33 +02:00
Juliusz Chroboczek
865848c7bc
Sort files in web interface.
2020-10-08 13:32:50 +02:00
Juliusz Chroboczek
31efabbefc
Disable mDNS gathering by default.
2020-10-06 06:08:29 +02:00
Juliusz Chroboczek
86f7594626
Discard old keyframes.
...
Avoids seqno wraparound. Unlikely, but I'm supersticious.
2020-10-06 05:02:58 +02:00
Juliusz Chroboczek
0eb1593bb8
Delay adding tracks until connection is complete.
...
This avoids losing packets at the beginning of a connection.
2020-10-06 04:18:46 +02:00
Juliusz Chroboczek
aa65164edd
Update dependencies to beta.7.
...
This fixes corruption of the first keyframe of every stream.
2020-10-06 04:18:46 +02:00
Juliusz Chroboczek
179b57a986
Display destination in private messages.
2020-10-05 20:48:44 +02:00
Juliusz Chroboczek
bda58b42c6
Rename disk to diskwriter.
2020-10-04 21:08:34 +02:00
Juliusz Chroboczek
44ae9f82d3
Remodularise packet cache.
2020-10-04 21:08:34 +02:00
Juliusz Chroboczek
a233f10b0b
Make NACK threshold depend on the average packet rate.
2020-10-04 21:08:34 +02:00
Juliusz Chroboczek
4a8e48d146
Take next packet index into account when sending NACKs.
...
This avoids sending NACKs for packets in the future.
2020-10-04 16:07:23 +02:00
Juliusz Chroboczek
67a821ea75
Increase minimum size of packet cache.
...
Now that we cache keyframes, it is worth keeping some history
even when latency is low.
2020-10-03 16:18:28 +02:00
Juliusz Chroboczek
a50e9c6771
Buffer last keyframe.
2020-10-03 16:18:28 +02:00
Juliusz Chroboczek
bbd5ce0c75
Remove dead code (cache.GetLast).
2020-10-03 13:15:30 +02:00
Juliusz Chroboczek
28b7c6d54d
Move RTP writer to separate file.
2020-10-03 12:58:01 +02:00
Juliusz Chroboczek
3083b89db9
Reuse single buffer in RTCP listeners.
2020-10-01 22:22:17 +02:00
Juliusz Chroboczek
0a49dc4569
Store HTTP server in atomic.Value.
...
Keeps the race detector from complaining.
2020-10-01 19:47:04 +02:00
Juliusz Chroboczek
4ff1151fef
Update dependencies.
...
This should fix the deadlock on pc.Close that we have been seeing
(and that was worked around in a previous commit).
2020-10-01 19:25:45 +02:00
Juliusz Chroboczek
66dd71678e
Implement private messages.
2020-10-01 16:59:09 +02:00
Juliusz Chroboczek
bd5cd7c1a2
Avoid calling pc.Close under a lock.
...
Apparently Close can take unbounded amounts of time.
2020-10-01 16:08:12 +02:00
Juliusz Chroboczek
13d6b7ad1f
Don't disconnect clients when negotiation fails.
...
This may happen if we receive an answer for a connection that has been
closed in the meantime.
2020-10-01 15:35:35 +02:00
Juliusz Chroboczek
9ce591e4c5
Override permissions for disk recording.
2020-10-01 13:40:15 +02:00
Juliusz Chroboczek
3bd9a1db4e
Timestamp chat messages.
2020-09-30 00:54:12 +02:00
Juliusz Chroboczek
480922268e
Some more tweaks to JS typing.
2020-09-29 18:16:54 +02:00
Juliusz Chroboczek
f2c8116559
Fix typo in README.
2020-09-24 23:21:05 +02:00
Juliusz Chroboczek
8399ee2c4a
Implement group description.
2020-09-24 22:03:41 +02:00
Juliusz Chroboczek
7183730a68
Make the default list of ICE servers empty, update docs.
2020-09-24 19:38:59 +02:00
Juliusz Chroboczek
6a4784da44
Hide share button if getDisplayMedia doesn't exist.
2020-09-23 21:53:59 +02:00
Juliusz Chroboczek
2e63c0f305
Error handling when attempting chat on closed connection.
2020-09-23 21:53:59 +02:00
Juliusz Chroboczek
667412e6ae
Implement /set command.
2020-09-23 21:53:59 +02:00
Juliusz Chroboczek
cca19444d6
Mark paths in recordings server as relative.
...
Since paths may contain colons, they could otherwise be mistaken for
URLs with a scheme.
2020-09-21 23:03:03 +02:00
Juliusz Chroboczek
0aa77441bd
Improve typing of javascript code.
...
We now enable typing of sfu.js.
2020-09-20 17:25:41 +02:00
Juliusz Chroboczek
4e14c29fbb
Rework recordings server.
...
Simplifies the code, makes the files cachable, fixes permission issues.
2020-09-19 14:54:17 +02:00
Juliusz Chroboczek
eab848f2cf
Add ability to receive nothing.
2020-09-18 20:09:52 +02:00
Juliusz Chroboczek
8a4b2f5d3f
Implement studio and blackboard mode.
2020-09-18 19:58:05 +02:00
Juliusz Chroboczek
b8011371cf
Rework settings handling in sfu.js.
...
There is now a data structure that contains the ultimate truth
about the user's preferences. We no longer grovel through the
UI components.
2020-09-18 19:58:05 +02:00
Juliusz Chroboczek
f5cb2ff328
Rework synchronisation between webserver and main.
...
We now exit with an error code if the webserver couldn't start.
2020-09-18 14:47:33 +02:00
Juliusz Chroboczek
aeb8540ad4
Fix kickability.
2020-09-18 14:47:33 +02:00
Juliusz Chroboczek
6e84b641e6
Improve cachability of the web server.
2020-09-18 14:47:33 +02:00
Juliusz Chroboczek
4d79d10d6e
Reimplement http.FileServer.
...
http.FileServer is inflexible, it is better to reimplement it
rather than trying to work around its limitations.
2020-09-18 13:40:37 +02:00
Juliusz Chroboczek
6d3932b491
Move webserver into its own package.
2020-09-18 13:11:21 +02:00