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

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Reschke <lukas@statuscode.ch>2021-07-05 19:38:55 +0300
committerGitHub <noreply@github.com>2021-07-05 19:38:55 +0300
commit3f212b88576fb818d6cbe206f3cf4bb181dadf15 (patch)
tree612835310487b03b8cbc32d57535d1ef18830faa
parentc73070c19d08db0bd8572ccee8b8366ebd6d8b25 (diff)
parentf8db7ce8f5d3255bc6f04617164de1351b8010ab (diff)
Merge pull request #27814 from nextcloud/backport/27758/stable22
[stable22] Fix DnsPinMiddleware resolve pinning bug
-rw-r--r--lib/private/Http/Client/DnsPinMiddleware.php17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/private/Http/Client/DnsPinMiddleware.php b/lib/private/Http/Client/DnsPinMiddleware.php
index 019fde23723..900173bb506 100644
--- a/lib/private/Http/Client/DnsPinMiddleware.php
+++ b/lib/private/Http/Client/DnsPinMiddleware.php
@@ -112,15 +112,22 @@ class DnsPinMiddleware {
$targetIps = $this->dnsResolve($hostName, 0);
- foreach ($targetIps as $ip) {
- $this->localAddressChecker->ThrowIfLocalIp($ip);
+ $curlResolves = [];
- foreach ($ports as $port) {
- $curlEntry = $hostName . ':' . $port . ':' . $ip;
- $options['curl'][CURLOPT_RESOLVE][] = $curlEntry;
+ foreach ($ports as $port) {
+ $curlResolves["$hostName:$port"] = [];
+
+ foreach ($targetIps as $ip) {
+ $this->localAddressChecker->ThrowIfLocalIp($ip);
+ $curlResolves["$hostName:$port"][] = $ip;
}
}
+ // Coalesce the per-host:port ips back into a comma separated list
+ foreach ($curlResolves as $hostport => $ips) {
+ $options['curl'][CURLOPT_RESOLVE][] = "$hostport:" . implode(',', $ips);
+ }
+
return $handler($request, $options);
};
};