Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Signaling/Manager.php21
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/Signaling/Manager.php b/lib/Signaling/Manager.php
index 521e7ada9..b5269016b 100644
--- a/lib/Signaling/Manager.php
+++ b/lib/Signaling/Manager.php
@@ -27,16 +27,21 @@ use OCA\Talk\Config;
use OCA\Talk\Room;
use OCP\ICache;
use OCP\ICacheFactory;
+use OCP\IConfig;
class Manager {
+ /** @var IConfig */
+ protected $serverConfig;
/** @var Config */
protected $talkConfig;
/** @var ICache */
private $cache;
- public function __construct(Config $talkConfig,
+ public function __construct(IConfig $serverConfig,
+ Config $talkConfig,
ICacheFactory $cacheFactory) {
+ $this->serverConfig = $serverConfig;
$this->talkConfig = $talkConfig;
$this->cache = $cacheFactory->createDistributed('hpb_servers');
}
@@ -81,11 +86,19 @@ class Manager {
return $servers[$serverId];
}
- $randomServerId = random_int(0, count($servers) - 1);
+ $serverIdToAssign = random_int(0, count($servers) - 1);
+ $hardcodedServers = $this->serverConfig->getSystemValue('talk_hardcoded_hpb', []);
+ if (isset($hardcodedServers[$room->getToken()])) {
+ $hardcodedServerId = $hardcodedServers[$room->getToken()];
+ if (isset($servers[$hardcodedServerId])) {
+ $serverIdToAssign = $hardcodedServerId;
+ }
+ }
+
$serverId = $this->cache->get($room->getToken());
if ($serverId === null) {
- $this->cache->set($room->getToken(), $randomServerId);
- $serverId = $randomServerId;
+ $this->cache->set($room->getToken(), $serverIdToAssign);
+ $serverId = $serverIdToAssign;
$room->setAssignedSignalingServer($serverId);
}