Commit graph

65 commits

Author SHA1 Message Date
Joachim Bauch d9210b8b1f
Canonicalize all URLs before comparisons / lookups.
Otherwise urls like "https://server:443/foo/" will fail to find entries for
"https://server/foo/" and vice versa.
2020-11-30 11:43:43 +01:00
Joachim Bauch 5188c159c5
Update virtual sessions for SIP support in Talk. 2020-11-30 11:21:52 +01:00
Joachim Bauch b6ce723a8b
Make sure the backend URL always points to the signaling controller. 2020-11-30 11:21:52 +01:00
Joachim Bauch 669ec5c1af
Support "internal" messages to create/update/remove virtual sessions. 2020-11-30 11:21:51 +01:00
Joachim Bauch 2119993606
Use publisher/subscriber ids that stay the same across reconnections.
Otherwise it could happen that objects were kept in maps (e.g. on the
proxy server) if they reconnected to the WebRTC gateway during their
lifetime. This resulted in incorrect load calculations.
2020-10-26 09:51:33 +01:00
Joachim Bauch e6f6f0a846
Check combining while building pending messages instead of while sending out. 2020-10-21 14:34:53 +02:00
Joachim Bauch dd327a841e
Send MCU messages through the session.
This helps with clients disconnecting / resuming while MCU responses
are being sent to them. With the change, the messages are stored in
the session and sent out when clients resume their session.
2020-10-21 14:19:57 +02:00
Joachim Bauch 644d9a1737
Include load in stats response. 2020-10-15 13:27:08 +02:00
Joachim Bauch 5797111033
Log what backends are added/changed/removed on reload. 2020-10-06 16:37:35 +02:00
Joachim Bauch cd4d930835
Update reload tests
- Add test that reloads without changes.
- Add test that removes backend from shared host.
2020-10-06 16:37:33 +02:00
Joachim Bauch aa0191ef7e
Don't allow reload with old-style backend configurations. 2020-10-06 16:36:53 +02:00
Joachim Bauch f7ed6addb7
Always load backends in the order they are configured. 2020-10-06 16:36:49 +02:00
Joachim Bauch bef54339e3
Merge pull request #52 from hosting-de-labs/feature/reload-backendconfigs
Feature: Reload Backends on SIGHUP
2020-10-06 15:37:59 +02:00
Oliver Dick 8d29c9cda9 Feature:
- Reload Backend Configuration without destroying unchanged backends
	- Only used when configured with backends parameter
2020-10-06 15:10:38 +02:00
Joachim Bauch 67e66c0e5a
Log something when proxy publisher/subscriber is deleted. 2020-09-24 12:43:27 +02:00
Joachim Bauch 7e3a7af9a3
Use dedicated (shorter) timeout for proxy requests.
This will prevent the overall MCU timeout to expire on the first proxy
request if that takes too long. With the shorter proxy timeout, the other
proxy servers will be retried if the first request timed out.
2020-09-16 10:13:09 +02:00
Joachim Bauch 80194c4e1d
Don't perform request to proxy if context is already done. 2020-09-16 09:23:36 +02:00
Joachim Bauch 767d283600
Handle case where etcd cluster is not available during startup. 2020-09-09 14:42:18 +02:00
Joachim Bauch adce45162e
Default to proxy url type "static" if none is configured. 2020-09-07 17:07:48 +02:00
Joachim Bauch 5206490fef
Change log message if session was resumed. 2020-09-07 09:12:32 +02:00
Joachim Bauch 73903315a9
Handle "bye" proxy messages. 2020-09-07 08:56:17 +02:00
Joachim Bauch 34de2b9b58
Merge pull request #47 from strukturag/proxy-list-etcd
Add support for fetching proxy URLs from etcd cluster.
2020-09-01 12:48:46 +02:00
Joachim Bauch 64991a0a0e
Add option to override GeoIP lookups (e.g. for local addresses). 2020-09-01 12:41:00 +02:00
Joachim Bauch dcf533b8f1
Add support for fetching proxy URLs from etcd cluster. 2020-08-31 17:24:04 +02:00
Joachim Bauch 804e558e96
Switch to builtin "context" package now that we can assume Go 1.7 2020-08-31 13:58:28 +02:00
Joachim Bauch 116188c3e3
Reload list of proxy URLs on SIGHUP. 2020-08-31 13:07:03 +02:00
Joachim Bauch 2d73b97882
Move member definition to get consistent formatting across Go versions. 2020-08-28 09:50:52 +02:00
Joachim Bauch 0dcb9f6b2d
Unregister / remove subscriber if reconnection didn't work.
Partial fix from #15.
2020-08-13 14:51:07 +02:00
Joachim Bauch dc1bf2bc9b
Revert "Move processing of deferred method to dedicated DeferredExecutor." 2020-08-13 14:40:06 +02:00
Joachim Bauch 5e3164b5a4
Support loading a GeoIP database from a local file. 2020-08-13 14:07:26 +02:00
Joachim Bauch 968913e32d
Merge pull request #15 from strukturag/keep-mcu-deferred-processing
Move processing of deferred method to dedicated DeferredExecutor.
2020-08-13 13:22:42 +02:00
Joachim Bauch 015fa3565d
Merge pull request #36 from strukturag/multiple-mcu-support
Support connecting to multiple Janus servers
2020-08-13 13:20:28 +02:00
Joachim Bauch ea74a54d11
Select proxy based on country of publisher (if known).
The connections that have been sorted by load are also sorted by country
of publisher and continent of publisher, e.g. for worldwide proxies, the
ones closest to the publisher will be preferred.
2020-08-13 13:17:09 +02:00
Joachim Bauch d9d11b58e1
Shutdown a proxy gracefully on SIGUSR1.
No new publishers will be created by the proxy, existing publishers can
still be subscribed. After all clients have disconnected, the process
will terminate.
2020-08-13 13:17:09 +02:00
Joachim Bauch b7c258b459
Add proxy service implementation. 2020-08-13 13:17:08 +02:00
Joachim Bauch 4446b07951
Add MCU type "proxy" that delegates to one or multiple MCU proxies. 2020-08-13 13:17:06 +02:00
Joachim Bauch 178006faba
Update "janus-go" dependency to handle changed slowlink message.
Janus no longer reports `nacks` since 0.7.3 but changed the field to `lost`.
2020-08-12 16:44:44 +02:00
Joachim Bauch acbb47a100
Add callback on received RTT. 2020-08-07 11:40:35 +02:00
Joachim Bauch f4d4d5fb4d
Add callbacks for when MCU connection is established/list. 2020-08-07 10:23:47 +02:00
Joachim Bauch 5a553fcc2d
Move some signaling-specific functions of client to hub to allow reuse. 2020-08-07 10:22:27 +02:00
Joachim Bauch d23a392a1b
Process NATS messages directly without passing to channel in client.
Already in per-client/-session goroutines, so won't block others.
2020-08-03 14:30:43 +02:00
Joachim Bauch 68477474f8
Don't use "select" with a single case that reads from a channel but read channel directly. 2020-07-31 15:32:42 +02:00
Joachim Bauch 7d874ac1a7
Don't cast bytes to string but use "String()" method. 2020-07-31 15:26:18 +02:00
Joachim Bauch 6ffed30ddc
Remove unused error result (was always "nil"). 2020-07-31 15:23:41 +02:00
Joachim Bauch 5964a98218
Remove unnecessary assignment to "err". 2020-07-31 15:22:18 +02:00
Joachim Bauch efc232fb9c
Don't call "Fatal" from inside a goroutine. 2020-07-31 15:19:11 +02:00
Joachim Bauch 67c5bebdcb
Remove unused members. 2020-07-31 15:00:39 +02:00
Joachim Bauch 3f4693dca4
Remove unnecessary sub-loop. 2020-07-31 14:58:23 +02:00
Joachim Bauch b8c9e816b3
Remove unnecessary assignments to the blank identifier. 2020-07-31 14:57:04 +02:00
Joachim Bauch 1ef50ea18c
Update wording. 2020-07-31 14:07:07 +02:00