Index: src/webapp/fluid-components/js/fluid/uploader/Uploader.js
===================================================================
--- src/webapp/fluid-components/js/fluid/uploader/Uploader.js	(revision 6217)
+++ src/webapp/fluid-components/js/fluid/uploader/Uploader.js	(working copy)
@@ -451,6 +451,11 @@
         renderUploadTotalMessage(that);
     };
     
+    var updateStateAfterError = function (that) {
+        that.totalProgress.hide();
+        setStateLoaded(that);
+    };
+    
     var updateStateAfterCompletion = function (that) {
         hideTotalProgress(that);
         if (that.uploadManager.queue.getReadyFiles().length === 0) {
@@ -479,8 +484,7 @@
         
         that.events.onFileError.addListener(function (file, error, message) {
             if (error === fluid.uploader.errorConstants.UPLOAD_STOPPED) {
-                // user stopped
-                updateStateAfterCompletion(that);
+                updateStateAfterError(that);
             }
         });
 
Index: src/webapp/fluid-components/js/fluid/uploader/SWFUploadManager.js
===================================================================
--- src/webapp/fluid-components/js/fluid/uploader/SWFUploadManager.js	(revision 6217)
+++ src/webapp/fluid-components/js/fluid/uploader/SWFUploadManager.js	(working copy)
@@ -261,8 +261,8 @@
 
 (function ($, fluid) {
     
-    var updateProgress = function (file, events, demoState) {
-        if (demoState.shouldPause) {
+    var updateProgress = function (file, events, demoState, isUploading) {
+        if (!isUploading) {
             return;
         }
         
@@ -272,28 +272,31 @@
     };
     
     var finishUploading = function (that) {
+        if (!that.queue.isUploading) {
+            return;
+        }
+        
         var file = that.demoState.currentFile;
         file.filestatus = fluid.uploader.fileStatusConstants.COMPLETE;
         that.events.onFileSuccess.fire(file);
-        that.invokeAfterRandomDelay(function () {
-            that.demoState.fileIdx++;
-            that.swfUploadSettings.upload_complete_handler(file); // this is a hack that needs to be addressed.
-        });     
+        that.demoState.fileIdx++;
+        that.swfUploadSettings.upload_complete_handler(file); // this is a hack that needs to be addressed.
     };
     
     var simulateUpload = function (that) {
-        if (that.demoState.shouldPause) {
+        if (!that.queue.isUploading) {
             return;
         }
+        
         var file = that.demoState.currentFile;
-        that.invokeAfterRandomDelay(function () {
-            if (that.demoState.bytesUploaded < file.size) {
-                updateProgress(file, that.events, that.demoState);
+        if (that.demoState.bytesUploaded < file.size) {
+            that.invokeAfterRandomDelay(function () {
+                updateProgress(file, that.events, that.demoState, that.queue.isUploading);
                 simulateUpload(that);
-            } else {
-                finishUploading(that);
-            }
-        });
+            });
+        } else {
+            finishUploading(that);
+        } 
     };
     
     var startUploading = function (that) {
@@ -301,17 +304,15 @@
         that.demoState.currentFile = that.queue.files[that.demoState.fileIdx];
         that.demoState.chunksForCurrentFile = Math.ceil(that.demoState.currentFile / that.demoState.chunkSize);
         that.demoState.bytesUploaded = 0;
-        that.demoState.shouldPause = false;
+        that.queue.isUploading = true;
         
         that.events.onFileStart.fire(that.demoState.currentFile);
         that.demoState.currentFile.filestatus = fluid.uploader.fileStatusConstants.IN_PROGRESS;
         simulateUpload(that);
     };
 
-    var pauseDemo = function (that) {
-        that.demoState.shouldPause = true;
+    var stopDemo = function (that) {
         that.demoState.currentFile.filestatus = fluid.uploader.fileStatusConstants.CANCELLED;
-        
         // In SWFUpload's world, pausing is a combinination of an UPLOAD_STOPPED error and a complete.
         that.events.onFileError.fire(that.demoState.currentFile, 
                                        fluid.uploader.errorConstants.UPLOAD_STOPPED, 
@@ -351,7 +352,7 @@
          * This method overrides the default behaviour in SWFUploadManager.
          */
         that.stop = function () {
-            pauseDemo(that);
+            stopDemo(that);
         };
         
         /**
