From 7037f9c6f8e6160876fa924e12f3bdb2b0203acc Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 16 Oct 2013 12:32:42 +0200 Subject: [PATCH 1/3] Added DAV client wrapper that support timeout values Since SabreDAV does not support passing a timeout value to curl, this commit adds a subclass for it that will set the timeout value to curlRequest(). --- lib/private/davclient.php | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 lib/private/davclient.php diff --git a/lib/private/davclient.php b/lib/private/davclient.php new file mode 100644 index 0000000000..364846929f --- /dev/null +++ b/lib/private/davclient.php @@ -0,0 +1,46 @@ + + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +/** + * This class extends the SabreDAV client with additional functionality + * like request timeout. + */ + +class OC_DAVClient extends \Sabre_DAV_Client{ + + protected $requestTimeout; + + /** + * @brief Sets the request timeout or 0 to disable timeout. + * @param int timeout in seconds or 0 to disable + */ + public function setRequestTimeout($timeout){ + $this->requestTimeout = (int)$timeout; + } + + protected function curlRequest($url, $settings) { + if ($this->requestTimeout > 0){ + $settings[CURLOPT_TIMEOUT] = $this->requestTimeout; + } + return parent::curlRequest($url, $settings); + } +} From 52e31405f7848e4fd9f9d19297bbb87facb09376 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 16 Oct 2013 12:33:30 +0200 Subject: [PATCH 2/3] Added timeout value to WebDAV post setup check Fixes #5357 --- lib/private/util.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/private/util.php b/lib/private/util.php index 6c0a8d7bab..43f2c9bb63 100755 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -806,7 +806,9 @@ class OC_Util { 'baseUri' => OC_Helper::linkToRemote('webdav'), ); - $client = new \Sabre_DAV_Client($settings); + $client = new \OC_DAVClient($settings); + + $client->setRequestTimeout(10); // for this self test we don't care if the ssl certificate is self signed and the peer cannot be verified. $client->setVerifyPeer(false); From b1f72edc5705f3d5eb5f8910e2e14d0fa9805222 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 17 Oct 2013 23:22:19 +0200 Subject: [PATCH 3/3] Fixed spaces --- lib/private/davclient.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/private/davclient.php b/lib/private/davclient.php index 364846929f..28f48f3b92 100644 --- a/lib/private/davclient.php +++ b/lib/private/davclient.php @@ -25,7 +25,7 @@ * like request timeout. */ -class OC_DAVClient extends \Sabre_DAV_Client{ +class OC_DAVClient extends \Sabre_DAV_Client { protected $requestTimeout; @@ -33,12 +33,12 @@ class OC_DAVClient extends \Sabre_DAV_Client{ * @brief Sets the request timeout or 0 to disable timeout. * @param int timeout in seconds or 0 to disable */ - public function setRequestTimeout($timeout){ + public function setRequestTimeout($timeout) { $this->requestTimeout = (int)$timeout; } protected function curlRequest($url, $settings) { - if ($this->requestTimeout > 0){ + if ($this->requestTimeout > 0) { $settings[CURLOPT_TIMEOUT] = $this->requestTimeout; } return parent::curlRequest($url, $settings);