From 64c1aba40e89d52653a30f1bff01416a7033c0e4 Mon Sep 17 00:00:00 2001
From: Peter Rotich <peter@osticket.com>
Date: Sun, 22 Jul 2012 10:19:08 -0400
Subject: [PATCH] Abort on unupgradable schema signature - caused by wrong or
 invalid db signature

---
 include/ajax.upgrader.php | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/include/ajax.upgrader.php b/include/ajax.upgrader.php
index 92a3e6ef7..b04dfca4f 100644
--- a/include/ajax.upgrader.php
+++ b/include/ajax.upgrader.php
@@ -43,12 +43,17 @@ class UpgraderAjaxAPI extends AjaxController {
             //More pending tasks - doTasks returns the number of pending tasks
             Http::response(200, $upgrader->getNextAction());
             exit;
-        } elseif($ost->isUpgradePending() && $upgrader->isUpgradable()) {
-            $version = $upgrader->getNextVersion();
-            if($upgrader->upgrade()) {
-                //We're simply reporting progress here - call back will report next action'
-                Http::response(200, "Upgraded to $version ... post-upgrade checks!");
-                exit;
+        } elseif($ost->isUpgradePending()) {
+            if($upgrader->isUpgradable()) {
+                $version = $upgrader->getNextVersion();
+                if($upgrader->upgrade()) {
+                    //We're simply reporting progress here - call back will report next action'
+                    Http::response(200, "Upgraded to $version ... post-upgrade checks!");
+                    exit;
+                }
+            } else { 
+                //Abort: Upgrade pending but NOT upgradable - invalid or wrong hash.
+                $upgrader->abort(sprintf('Upgrade Failed: Invalid or wrong hash [%s]',$ost->getDBSignature()));
             }
         } elseif(!$ost->isUpgradePending()) {
             $upgrader->setState('done');
-- 
GitLab