From a1517a25228cc32717d2bf2e45af9979286c6680 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Mon, 25 Nov 2013 15:30:47 +0100 Subject: [PATCH] Improved error handling of package update servers --- .../package/PackageUpdateDispatcher.class.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php b/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php index ae1ea229ba..6a0ae154f1 100644 --- a/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php +++ b/wcfsetup/install/files/lib/system/package/PackageUpdateDispatcher.class.php @@ -42,16 +42,35 @@ class PackageUpdateDispatcher extends SingletonFactory { $refreshedPackageLists = false; foreach ($updateServers as $updateServer) { if ($updateServer->lastUpdateTime < TIME_NOW - 600) { + $errorMessage = ''; + try { $this->getPackageUpdateXML($updateServer); $refreshedPackageLists = true; } catch (SystemException $e) { + $errorMessage = $e->getMessage(); + } + catch (PackageUpdateUnauthorizedException $e) { + $reply = $e->getRequest()->getReply(); + foreach ($reply['headers'] as $header) { + if (preg_match('~^HTTP~', $header)) { + $errorMessage = $header; + break; + } + } + + if (!$errorMessage) { + $errorMessage = 'Unknown (HTTP status ' . (is_array($reply['statusCode']) ? reset($reply['statusCode']) : $reply['statusCode']) . ')'; + } + } + + if ($errorMessage) { // save error status $updateServerEditor = new PackageUpdateServerEditor($updateServer); $updateServerEditor->update(array( 'status' => 'offline', - 'errorMessage' => $e->getMessage() + 'errorMessage' => $errorMessage )); } } -- 2.20.1