mirror of
https://github.com/smogon/pokemon-showdown-client.git
synced 2026-04-24 07:08:08 -05:00
Stop autodetecting serverid for loginserver rqs
The automatic server detection just loops through all registered servers and tries each of them to find the correct one. This process will hang if any registered server isn't responding to DNS queries, which at the number we currently have, makes all servers not sending serverid fail. We now hard-require the Config.serverid setting, to prevent this problem.
This commit is contained in:
parent
be31237b96
commit
00a877333f
|
|
@ -82,16 +82,12 @@ class ActionDispatcher {
|
|||
$ip = $this->getIp();
|
||||
if (!isset($PokemonServers[$serverid])) {
|
||||
// Try to find the server by source IP, rather than by serverid.
|
||||
foreach ($PokemonServers as &$i) {
|
||||
if (!isset($i['ipcache'])) {
|
||||
$i['ipcache'] = gethostbyname($i['server']);
|
||||
}
|
||||
if ($i['ipcache'] === $ip) {
|
||||
$server =& $i;
|
||||
break;
|
||||
if ($serverid === 'testtimeout') {
|
||||
foreach ($PokemonServers as &$i) {
|
||||
gethostbyname($i['server']);
|
||||
}
|
||||
}
|
||||
if (!$server) return null;
|
||||
return null;
|
||||
} else {
|
||||
$server =& $PokemonServers[$serverid];
|
||||
if (empty($server['skipipcheck']) && empty($server['token']) && $serverid !== 'showdown') {
|
||||
|
|
@ -102,7 +98,7 @@ class ActionDispatcher {
|
|||
}
|
||||
}
|
||||
if (!empty($server['token'])) {
|
||||
if ($server['token'] !== md5($this->reqData['servertoken'])) return null;
|
||||
if ($server['token'] !== md5($this->reqData['servertoken'] ?? '')) return null;
|
||||
}
|
||||
return $server;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,10 +101,10 @@ class NTBBSession {
|
|||
}
|
||||
|
||||
function getIp() {
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
$ip = $_SERVER['REMOTE_ADDR'] ?? '';
|
||||
foreach ($this->trustedproxies as &$proxyip) {
|
||||
if ($this->cidr_match($ip, $proxyip)) {
|
||||
$parts = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
|
||||
$parts = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'] ?? '');
|
||||
$ip = array_pop($parts);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user