diff --git a/include/ajax.upgrader.php b/include/ajax.upgrader.php
index 92a3e6ef7884a47f9ae6d52a50606cf1f080acc4..b04dfca4f3f429ef73536fccc9929fda33e797c2 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');