1
Fork 0
Commit Graph

223 Commits

Author SHA1 Message Date
Juliusz Chroboczek 0ec9f92dad Make 'clearchat' into a user message. 2021-01-03 17:47:56 +01:00
Juliusz Chroboczek e393819eda Carry raw SDP in the protocol. 2021-01-03 17:00:58 +01:00
Juliusz Chroboczek f53276b89e Simplify the protocol and the protocol interface.
Split the id field into id and source, where source indicates the sender
of the message and id the entity being sent.  Remove the label request,
just use the offerer's username.  Maintain the username within the
ServerConnection, this removes a parameter from some methods.
2021-01-03 12:17:30 +01:00
Juliusz Chroboczek 450601f0e8 Move ICE code into own module, add tests. 2021-01-02 00:21:17 +01:00
Juliusz Chroboczek dbec9df288 Use Pion's JSON support for ICE configuration. 2021-01-01 22:28:38 +01:00
Juliusz Chroboczek a0418d26ec Send RTC configuration with joined message.
This avoids one HTTP request, and is potentially more flexible.
2020-12-28 02:55:19 +01:00
Juliusz Chroboczek d09c0f0a80 Make the value field of client messages carry arbitrary types. 2020-12-28 01:49:27 +01:00
Juliusz Chroboczek 9e4aede72a Fix issues with unaligned atomic operations.
This could be solved by simply reordering the fields, but it
is more robust to move the atomics into their own structure,
and the extra indirection should not cost much.
2020-12-27 01:31:31 +01:00
Juliusz Chroboczek e88942c9a9 Reduce the NACK delay.
We bound the NACK delay to 2 packets, which is what TCP does.
Thus, reducing the delay should be safe.
2020-12-26 22:09:26 +01:00
Juliusz Chroboczek 5d38b0a231 Allow various codecs.
It is now possible to specify codecs other than VP8 and Opus.  This
turns out not to be very useful, since VP8 is the only codec supported
by all browsers (in violation of the WebRTC spec, which mandates support
for H.264), and there is no good reason to use anything other than Opus
for audio.
2020-12-26 19:46:37 +01:00
Juliusz Chroboczek 2785fa9f77 Store labels early.
This avoids spurious up.complete indications.
2020-12-25 22:32:30 +01:00
Juliusz Chroboczek f4379f7a8c Protect against negotiation inconsistencies.
This is not an issue in the current code, assuming that clients
negotiate correctly, but will become one once we implement codec
flexibility.
2020-12-25 20:50:33 +01:00
Juliusz Chroboczek 3c04d48b85 Push a connection even if all tracks didn't arrive.
We used to push a connection when we got all tracks.  However, it may
happen that some tracks fail; in that case, the connection would never
get pushed.
2020-12-25 20:23:46 +01:00
Juliusz Chroboczek e5fec68acf Start RTCP up sender early. 2020-12-25 20:10:12 +01:00
Juliusz Chroboczek d5c7a13aae Implement abort in the client->server direction. 2020-12-25 18:51:17 +01:00
Juliusz Chroboczek cc35931ad1 Make isKeyframe codec-agnostic. 2020-12-25 16:40:38 +01:00
Juliusz Chroboczek d43a2b0104 Implement WallOps to send a warning to all operators. 2020-12-23 23:15:36 +01:00
Juliusz Chroboczek 4c07953ee0 Update dependencies. 2020-12-19 19:03:14 +01:00
Juliusz Chroboczek 4fde2c40e6 Run gofmt. 2020-12-19 17:38:47 +01:00
Juliusz Chroboczek 325f288189 Move to github. 2020-12-19 17:37:48 +01:00
Juliusz Chroboczek a2f5bb82d1 Delete unrequested connections in addDownConnTracks.
We don't renegotiate down connections yet, but this is a latent bug.
2020-12-18 18:56:07 +01:00
Antonin Décimo f5de94cf3e Correct spelling of privileged. 2020-12-15 14:52:46 +01:00
Juliusz Chroboczek da8c592232 Fix log message.
Thanks to Antonin Décimo.
2020-12-12 23:21:49 +01:00
Juliusz Chroboczek 4de2953037 Fix incorrect closure in pushConnsAction.
This was causing us to lose connections.
2020-12-09 01:05:24 +01:00
Juliusz Chroboczek f7048e4dae Fix codec check in rtpwriter. 2020-12-07 19:50:10 +01:00
Juliusz Chroboczek ef1c211b7f SFU is now called Galène. 2020-12-06 19:51:02 +01:00
Juliusz Chroboczek 2d07c5d317 Move to Pion v3 API. 2020-12-06 11:15:59 +01:00
Juliusz Chroboczek e8c732c54c Fix error handling at websocket close. 2020-12-05 03:07:22 +01:00
Juliusz Chroboczek 26e6ecc3bc Fix error handling on negotiation failure. 2020-12-05 00:32:01 +01:00
Juliusz Chroboczek 0e7bf0b348 Carry group around when pushing connections.
This avoids a race condition if the group changes before the connections
are pushed.
2020-12-05 00:07:34 +01:00
Juliusz Chroboczek b134bfcf13 Improve error handling on join failure.
Solves the issue of groups with a name ending in "/".
2020-12-04 22:56:29 +01:00
Juliusz Chroboczek e3098899e1 Log errors from PushConn. 2020-12-04 12:15:37 +01:00
Juliusz Chroboczek ca6c371ec4 Send chat history after joined message.
This was broken when we eliminated the login message.
2020-12-04 11:31:20 +01:00
Juliusz Chroboczek 120bfc92c7 Upgrade pion/rtcp, use nack.Range instead of PacketList. 2020-12-03 23:46:19 +01:00
Juliusz Chroboczek 27a2e45500 Implement /subgroups. 2020-12-02 19:47:32 +01:00
Juliusz Chroboczek 43047fc00e Allow empty values in clientMessage. 2020-12-02 19:33:53 +01:00
Juliusz Chroboczek 2546aae7c1 Eliminate login from protocol.
The login message is replaced with handshake, which only carries
the client id.  Username and password is now in the join message.
Permissions is replaced with joined.
2020-12-02 13:49:53 +01:00
Juliusz Chroboczek b30d4fe537 Add delay after login failure. 2020-12-02 00:07:31 +01:00
Juliusz Chroboczek 6e5348101c Propagate kick originators. 2020-11-30 20:04:58 +01:00
Juliusz Chroboczek ed531cefc2 More spoofing protection. 2020-11-30 20:04:58 +01:00
Juliusz Chroboczek 74b3683cf1 Protect against chat message spoofing. 2020-11-30 20:04:58 +01:00
Juliusz Chroboczek 6040d1943c Allow forwarding usermessages.
They now have the same format as chat messages; the only difference
is that they are not stored in the chat history.

Also adds userMessage method to ServerConnection.

Fix usermessages.
2020-11-30 14:39:36 +01:00
Juliusz Chroboczek 4c0fd01258 Implement hashed passwords. 2020-11-29 22:17:51 +01:00
Juliusz Chroboczek 1ed2540bd7 Don't send permissions with each client message.
Thanks to Antonin Décimo.
2020-11-29 15:46:22 +01:00
Juliusz Chroboczek 21361a87cd Fix kick message. 2020-11-25 00:16:32 +01:00
Juliusz Chroboczek 7ee8cbc45a Don't push incomplete connections.
If a connetion is slow to get established, this would cause it to
be pushed twice, the first time before it is complete.  Thanks to
Roman Koval who noticed the issue.
2020-11-05 20:48:07 +01:00
Juliusz Chroboczek 2efb5b3cea Improve timing of nackWriter. 2020-10-31 23:26:56 +01:00
Juliusz Chroboczek b46da173e5 Don't log rate limited FIR. 2020-10-31 23:26:56 +01:00
Juliusz Chroboczek aae6b460f7 Clean up keyframe handling in rtpwriter. 2020-10-27 19:15:56 +01:00
Juliusz Chroboczek 6c6b0b39c9 Copy id list in setRequested.
Probably not necessary, but I'm supersticious.
2020-10-27 18:24:33 +01:00
Juliusz Chroboczek f8d2bb93e8 Avoid deadlock in DelLocal. 2020-10-27 18:24:33 +01:00
Juliusz Chroboczek c8de6620a7 Send non-trivial bitmaps during NACK forwarding. 2020-10-12 16:18:57 +02:00
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 5e845eb493 Send FIR if initial keyframe is too old. 2020-10-11 22:56:15 +02:00
Juliusz Chroboczek e07a98e355 Deal with reordered keyframes. 2020-10-08 17:58:58 +02:00
Juliusz Chroboczek 90ba4814c8 Discard old history entries. 2020-10-08 14:41:33 +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 bda58b42c6 Rename disk to diskwriter. 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 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 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 aeb8540ad4 Fix kickability. 2020-09-18 14:47:33 +02:00
Juliusz Chroboczek f8ae908d7a Implement message for locked groups. 2020-09-18 11:40:00 +02:00
Juliusz Chroboczek 2347417f83 Merge branch 'modular' into master 2020-09-18 10:33:17 +02:00
Juliusz Chroboczek 6f5ae12f14 Move RTP-specific code into its own package. 2020-09-18 10:28:05 +02:00