1
Fork 0
Commit Graph

214 Commits

Author SHA1 Message Date
Juliusz Chroboczek e7e8a9b555 Add method Addr to client. 2024-05-01 23:38:21 +02:00
Juliusz Chroboczek 2f5c21d161 Implement accessors for stateful tokens. 2024-05-01 22:39:48 +02:00
Juliusz Chroboczek 3409f5a27f Replace uses of os.IsExist and os.IsNotExist with errors.Is.
The former don't properly unwrap errors.
2024-04-14 13:34:32 +02:00
Juliusz Chroboczek 68887f13d5 Rename tokens.Edit to Extend. 2024-04-14 13:21:55 +02:00
Juliusz Chroboczek b8f7c68338 Return correct error message for invalid tokens. 2024-03-03 15:42:46 +01:00
Juliusz Chroboczek 89f947df1f Rework handling of authorisation errors.
We'd sometimes return "Internal server error" on authentication
failures.  This should be gone now.
2024-03-03 13:43:50 +01:00
Juliusz Chroboczek 29e006037c Allow proxyURL to contain a path.
We now support or reasonable values for proxyURL, such as "http:"
or "/galene".
2024-02-24 12:46:30 +01:00
Juliusz Chroboczek dc34350d8f Complete parsing of WHIP candidates. 2023-12-20 01:42:11 +01:00
Juliusz Chroboczek 002d519f91 Use a named type for trackAction kind. 2023-12-09 22:13:24 +01:00
Juliusz Chroboczek 1c042b55af Fix typo in error message. 2023-12-09 17:32:16 +01:00
Juliusz Chroboczek 00fbfafeeb Make unbounded channels explicit.
We used to have unbounded channels embedded within rtpconn
and webClient.  Make the structure explicit and testable.
2023-12-09 17:27:38 +01:00
Juliusz Chroboczek 1e050fa4e3 Implement the WHIP protocol. 2023-07-11 17:25:58 +02:00
Juliusz Chroboczek dc8a78be32 Add test for parseStatefulToken. 2023-05-04 03:32:44 +02:00
Juliusz Chroboczek 76066a1a10 Fix error handling in maketoken. 2023-05-04 03:31:09 +02:00
Juliusz Chroboczek 1879ec81ea Don't send empty version fields.
We used to send a null version field in every message.  Don't.
2023-04-29 19:59:36 +02:00
Juliusz Chroboczek 8775ce6406 Keep track of issuer and creation date in tokens. 2023-04-08 21:13:35 +02:00
Juliusz Chroboczek c501b76d2b Rework selection of simulcast tracks.
We used to hard-wire the rid identifiers.  We now assume that
the simulcast streams are ordered in decreasing order of quality.
2023-04-06 12:40:22 +02:00
Juliusz Chroboczek 4c9e00d874 Report username errors to client.
We now report ErrUsernameRequired and ErrDuplicateUsername
errors by setting the "error" field of messages.
2023-04-04 01:22:05 +02:00
Juliusz Chroboczek 8aa95f5e22 Add protocol messages for managing tokens. 2023-04-04 00:59:54 +02:00
Juliusz Chroboczek aa53b78b2c Distinguish between no username and empty username. 2023-04-03 22:58:38 +02:00
Juliusz Chroboczek a1c1345719 Server-side support for protocol 2.
The "time" field of messages is now a string in RFC 3339 format,
and there is a new "error" field in messages.
2023-04-03 22:58:38 +02:00
Juliusz Chroboczek cba04e7de5 Fix typo in handling of join messages. 2023-04-03 22:33:36 +02:00
Juliusz Chroboczek cc52e39ce4 Make some errors non-fatal.
Don't disconnect the client for some more errors.
2022-12-17 01:00:49 +01:00
Juliusz Chroboczek 8a2357de21 Only send chat history when joining.
When we moved the chat history to the client goroutine back in 0.6,
we started sending the history whenever the group configuration changed.
Only send it when first joining the group.  Thanks to Rémi Nollet.
2022-10-07 00:22:03 +02:00
Juliusz Chroboczek 0fe3ed2e15 Fix chathistory and display of anonymous users.
Chathistory messages were formatted incorrectly.
We were also not formatting correctly messages from
anonymous users.
2022-09-06 19:03:50 +02:00
Juliusz Chroboczek 3a2efbcc7e Send chathistory messages in the client goroutine.
We used to send the chat history from the reader goroutine,
which would cause them to race with the join message.
2022-09-06 03:03:50 +02:00
Juliusz Chroboczek 533e4b9b32 Version the protocol.
The handshake message now contains a list of supported protocol
versions.  Version mismatch is currently a warning, but it will be a
hard error in the future.
2022-09-02 14:30:51 +02:00
Juliusz Chroboczek 4bc873a574 Publish websocket endpoint in group status. 2022-09-01 14:55:52 +02:00
Juliusz Chroboczek fc9f28fd68 Minor cleanups. 2022-04-23 18:43:01 +02:00
Juliusz Chroboczek 461c78b0e3 Fix race condition in estimator. 2022-04-21 01:28:41 +02:00
Juliusz Chroboczek 99055e5cae Make duration functions work with negative values. 2022-04-16 01:20:29 +02:00
Juliusz Chroboczek af462329ab Set time offsets and cname as soon as possible. 2022-03-27 23:32:25 +02:00
Juliusz Chroboczek 1b492114ad Fix typo in permissionsChangedAction. 2022-03-04 22:23:25 +01:00
Juliusz Chroboczek de3a016f4d Set the username in the server when using tokens.
This avoids the need to pass the username in the URL without
requiring the client to parse tokens.
2022-02-20 15:33:11 +01:00
Juliusz Chroboczek a86fb08f6c Replace ClientPermissions with a list of strings.
Now that we support external auth, the permissions list is
open-ended.  Make it a list for simplicity.
2022-02-19 23:44:57 +01:00
Juliusz Chroboczek 03811db37d Implement token authentication. 2022-02-18 13:35:17 +01:00
Juliusz Chroboczek 0ef5d10744 Display correct maxBitrate in statistics. 2022-02-01 15:20:43 +01:00
Juliusz Chroboczek 24187430e8 Rename client status to data, add group data.
We now distinguish between status, which is maintained by the server,
and data, which is provided by the client.  In addition to client data,
we now support group data.
2022-01-29 23:28:08 +01:00
Juliusz Chroboczek 710cc3cc14 Add ability to set initial user status.
Setting the status after joining (using the "setstatus" action)
may cause multiple "user" messages to be sent to clients.  Add
the ability to set the initial status at join time.
2022-01-28 22:21:19 +01:00
Juliusz Chroboczek e8fbfcb9ba Avoid overflow in bitrate computation. 2022-01-25 20:11:28 +01:00
Juliusz Chroboczek 39976d6d0d Protect webClient.actions with its own mutex.
(*webClient).action may be called with the group mutex taken,
and therefore cannot take the client mutex.
2021-12-11 01:33:47 +01:00
Juliusz Chroboczek abed33d654 Fix missing line break in subgroups command. 2021-11-29 17:33:46 +01:00
Juliusz Chroboczek 6af729eeee Reduce delay before sending NACK. 2021-11-27 23:14:42 +01:00
Juliusz Chroboczek c7c3c9c6b0 Export group status in .status.json. 2021-10-30 19:12:06 +02:00
Juliusz Chroboczek c64ec4ccd0 Update dependencies. 2021-10-30 18:54:24 +02:00
Juliusz Chroboczek 019f365981 Remove accessors for group description fields.
Consult the description directly.
2021-10-30 18:34:35 +02:00
Juliusz Chroboczek 869eb9b839 Move password checking into group.go.
It used to be delegated to clients.
2021-10-27 04:15:44 +02:00
Juliusz Chroboczek 09c5ba0d06 Protect against tracks without a stream. 2021-09-16 17:19:19 +02:00
Juliusz Chroboczek e81ee4af5e Remove userId and userName from rtpconn.
They're redundant with the client field.
2021-09-16 16:53:44 +02:00
Juliusz Chroboczek f683675ab4 Use a dedicated error value for anonymous users. 2021-09-09 22:26:08 +02:00