Commit graph

14 commits

Author SHA1 Message Date
Daniel Calviño Sánchez e86baba54d Discard unneeded messages based on their "sid" parameter
If a message includes a "sid" parameter and it does not match the one
from the publisher or the subscriber the message is ignored. However, if
the message does not include a "sid" parameter it is processed just like
before for backwards compatibility.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-04-27 11:14:59 +02:00
Daniel Calviño Sánchez 3636e69dba Add specific ID for connections
A new ID is introduced for publishers and subscribers to be able to
identify different connections in the same session. While it was
possible to do that from the Janus handles this ID is meant to be shared
with the clients and set by the peer sending the offer, so it is set by
the client for publishers and by the signaling server for subscribers
(in which case the Janus handle is used).

This will make possible to know without any ambiguity if an offer/answer
belongs to an already existing connection or not. This can be used, for
example, to know if an offer represents an update or a new connection,
or to discard unneeded messages that might be sent in some corner cases
by the clients.

The ID name is "sid" for consistency with the property name used by the
internal signaling server of Talk.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-04-27 11:14:59 +02:00
Joachim Bauch 5101b16df3
Return dedicated error if proxy receives token that is not valid yet.
This can happen for example if the times of the machines running the
signaling server and proxy don't match.
2022-03-23 13:13:32 +01:00
Joachim Bauch 9f86c80c33
Only stop MCU if started before. 2022-03-23 11:46:17 +01:00
Joachim Bauch 414f78dd87
Fix formatting of non-string variable. 2022-01-10 15:03:54 +01:00
Joachim Bauch 707b125730
Check individual audio/video permissions on change.
If a client publishes audio/video and no longer has the video permission,
the whole publisher will be closed. Previously this was only checking
the generic "media" permission.
2021-11-08 12:08:14 +01:00
Joachim Bauch e09022c78d
deps: Migrate to "github.com/golang-jwt/jwt".
The previous "gopkg.in/dgrijalva/jwt-go.v3" is no longer maintained.
2021-10-11 14:02:57 +02:00
Joachim Bauch 4c77ae04ef
Close publishers/subscribers if proxy session is closed. 2021-08-10 09:24:59 +02:00
Joachim Bauch c01caa94e6
Add prometheus metrics. 2021-08-10 08:50:39 +02:00
Joachim Bauch 0a8ce3bda3
Add API to select a simulcast substream / temporal layer. 2021-06-08 13:49:08 +02:00
Joachim Bauch 9b83993d48
Assume one Janus server is only used by one signaling server / -proxy.
With that, we can notify publisher events locally instead of through NATS
and can remove code that looks up publisher rooms by their ids on Janus.
2021-06-04 14:52:23 +02:00
Joachim Bauch c8e4bfe007
Fix various issues found by golangci-lint. 2021-04-26 17:25:52 +02:00
Joachim Bauch 1ceb806c20
Support defining maximum bandwidths at diferent levels.
- Individually for each backend.
- For the proxy client (i.e. signaling server using cluster of proxies).
- For the proxy server / MCU.

The smallest bandwidth configured will be used, e.g. if a backend has a
larger limit than the MCU assigned for the stream, the limit of the MCU
server will be used.
2021-04-23 09:18:05 +02:00
Joachim Bauch 8ba2e0ad64
Switch dependency tracking to Go modules.
With that bump minimum required version to Go 1.13.
2021-04-09 16:15:00 +02:00
Renamed from src/proxy/proxy_server.go (Browse further)