From 2e45eb8ad69d8978220e0b3ea4314545cb08fa6f Mon Sep 17 00:00:00 2001
From: Vincent Petry <pvince81@owncloud.com>
Date: Mon, 30 Jun 2014 14:48:03 +0200
Subject: [PATCH] Return 503 in  public.php and OCS API when upgrade is due

To prevent unexpected behavior, public.php and the OCS API calls will
return 503 Service Unavailable when an upgrade is due.
---
 ocs/v1.php | 8 ++++++++
 public.php | 8 ++++++++
 2 files changed, 16 insertions(+)

diff --git a/ocs/v1.php b/ocs/v1.php
index d69904fc495..624355a8501 100644
--- a/ocs/v1.php
+++ b/ocs/v1.php
@@ -23,6 +23,14 @@
 
 require_once '../lib/base.php';
 
+if (\OCP\Util::needUpgrade()) {
+	// since the behavior of apps or remotes are unpredictable during
+	// an upgrade, return a 503 directly
+	OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
+	OC_Template::printErrorPage('Service unavailable');
+	exit;
+}
+
 use Symfony\Component\Routing\Exception\ResourceNotFoundException;
 use Symfony\Component\Routing\Exception\MethodNotAllowedException;
 
diff --git a/public.php b/public.php
index eed63948112..1f858fd073d 100644
--- a/public.php
+++ b/public.php
@@ -3,6 +3,14 @@
 try {
 
 	require_once 'lib/base.php';
+	if (\OCP\Util::needUpgrade()) {
+		// since the behavior of apps or remotes are unpredictable during
+		// an upgrade, return a 503 directly
+		OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
+		OC_Template::printErrorPage('Service unavailable');
+		exit;
+	}
+
 	OC::checkMaintenanceMode();
 	OC::checkSingleUserMode();
 	$pathInfo = OC_Request::getPathInfo();
-- 
GitLab