diff --git a/src/pocketmine/updater/AutoUpdater.php b/src/pocketmine/updater/AutoUpdater.php index ebf1dcb95..b04778ad0 100644 --- a/src/pocketmine/updater/AutoUpdater.php +++ b/src/pocketmine/updater/AutoUpdater.php @@ -57,7 +57,13 @@ class AutoUpdater{ } protected function check(){ - $response = Utils::getURL($this->endpoint . "?channel=" . $this->getChannel(), 4); + $error = ""; + $response = Utils::getURL($this->endpoint . "?channel=" . $this->getChannel(), 4, [], $error); + if($error !== ""){ + $this->server->getLogger()->debug("[AutoUpdater] Update check failed due to \"$error\""); + return; + } + $response = json_decode($response, true); if(!is_array($response)){ return; diff --git a/src/pocketmine/utils/Utils.php b/src/pocketmine/utils/Utils.php index d64a42701..b8d56b8ea 100644 --- a/src/pocketmine/utils/Utils.php +++ b/src/pocketmine/utils/Utils.php @@ -348,14 +348,16 @@ class Utils{ /** * GETs an URL using cURL + * NOTE: This is a blocking operation and can take a significant amount of time. It is inadvisable to use this method on the main thread. * - * @param $page - * @param int $timeout default 10 - * @param array $extraHeaders + * @param $page + * @param int $timeout default 10 + * @param array $extraHeaders + * @param string &$err Will be set to the output of curl_error(). Use this to retrieve errors that occured during the operation. * - * @return bool|mixed + * @return bool|mixed false if an error occurred, mixed data if successful. */ - public static function getURL($page, $timeout = 10, array $extraHeaders = []){ + public static function getURL($page, $timeout = 10, array $extraHeaders = [], &$err = null){ if(Utils::$online === false){ return false; } @@ -372,6 +374,7 @@ class Utils{ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, (int) $timeout); $ret = curl_exec($ch); + $err = curl_error($ch); curl_close($ch); return $ret; @@ -379,15 +382,17 @@ class Utils{ /** * POSTs data to an URL + * NOTE: This is a blocking operation and can take a significant amount of time. It is inadvisable to use this method on the main thread. * * @param $page * @param array|string $args * @param int $timeout * @param array $extraHeaders + * @param string &$err Will be set to the output of curl_error(). Use this to retrieve errors that occured during the operation. * - * @return bool|mixed + * @return bool|mixed false if an error occurred, mixed data if successful. */ - public static function postURL($page, $args, $timeout = 10, array $extraHeaders = []){ + public static function postURL($page, $args, $timeout = 10, array $extraHeaders = [], &$err = null){ if(Utils::$online === false){ return false; } @@ -406,6 +411,7 @@ class Utils{ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); curl_setopt($ch, CURLOPT_TIMEOUT, (int) $timeout); $ret = curl_exec($ch); + $err = curl_error($ch); curl_close($ch); return $ret;