Quellcode durchsuchen

Merge pull request #18190 from nextcloud/backport/18149/stable15

[stable15] delay creation of the cert bundle
Roeland Jago Douma vor 4 Jahren
Ursprung
Commit
a0f4af8f4f
1 geänderte Dateien mit 17 neuen und 11 gelöschten Zeilen
  1. 17 11
      lib/private/Files/Storage/DAV.php

+ 17 - 11
lib/private/Files/Storage/DAV.php

@@ -34,7 +34,6 @@
 namespace OC\Files\Storage;
 
 use Exception;
-use GuzzleHttp\Exception\RequestException;
 use OCP\ILogger;
 use Psr\Http\Message\ResponseInterface;
 use Icewind\Streams\CallbackWrapper;
@@ -46,6 +45,8 @@ use OCP\Constants;
 use OCP\Files\FileInfo;
 use OCP\Files\StorageInvalidException;
 use OCP\Files\StorageNotAvailableException;
+use OCP\Http\Client\IClientService;
+use OCP\ICertificateManager;
 use OCP\Util;
 use Sabre\DAV\Client;
 use Sabre\DAV\Xml\Property\ResourceType;
@@ -78,8 +79,10 @@ class DAV extends Common {
 	protected $client;
 	/** @var ArrayCache */
 	protected $statCache;
-	/** @var \OCP\Http\Client\IClientService */
+	/** @var IClientService */
 	protected $httpClientService;
+	/** @var ICertificateManager */
+	protected $certManager;
 
 	/**
 	 * @param array $params
@@ -110,13 +113,9 @@ class DAV extends Common {
 			}
 			if ($this->secure === true) {
 				// inject mock for testing
-				$certManager = \OC::$server->getCertificateManager();
-				if (is_null($certManager)) { //no user
-					$certManager = \OC::$server->getCertificateManager(null);
-				}
-				$certPath = $certManager->getAbsoluteBundlePath();
-				if (file_exists($certPath)) {
-					$this->certPath = $certPath;
+				$this->certManager = \OC::$server->getCertificateManager();
+				if (is_null($this->certManager)) { //no user
+					$this->certManager = \OC::$server->getCertificateManager(null);
 				}
 			}
 			$this->root = $params['root'] ?? '/';
@@ -149,8 +148,15 @@ class DAV extends Common {
 
 		$this->client = new Client($settings);
 		$this->client->setThrowExceptions(true);
-		if ($this->secure === true && $this->certPath) {
-			$this->client->addCurlSetting(CURLOPT_CAINFO, $this->certPath);
+
+		if($this->secure === true) {
+			$certPath = $this->certManager->getAbsoluteBundlePath();
+			if (file_exists($certPath)) {
+				$this->certPath = $certPath;
+			}
+			if ($this->certPath) {
+				$this->client->addCurlSetting(CURLOPT_CAINFO, $this->certPath);
+			}
 		}
 	}