Index: modules/update/update.manager.inc
===================================================================
RCS file: /Users/wright/drupal/local_repo/drupal/modules/update/update.manager.inc,v
retrieving revision 1.8
diff -u -p -r1.8 update.manager.inc
--- modules/update/update.manager.inc	27 Oct 2009 03:34:01 -0000	1.8
+++ modules/update/update.manager.inc	27 Oct 2009 08:36:12 -0000
@@ -326,14 +326,21 @@ function update_manager_update_form_subm
  * Batch callback invoked when the download batch is completed.
  */
 function update_manager_download_batch_finished($success, $results) {
-  if ($success) {
-    $_SESSION['update_manager_update_projects'] = $results;
+  if (!empty($results['errors'])) {
+    $error_list = array(
+      'title' => t('Downloading your missing updates failed with the following errors:'),
+      'items' => $results['errors'],
+    );
+    drupal_set_message(theme('item_list', $error_list), 'error');
+  }
+  elseif ($success) {
+    $_SESSION['update_manager_update_projects'] = $results['projects'];
     drupal_goto('admin/update/confirm');
   }
   else {
-    foreach($results as $project => $message) {
-      drupal_set_message($message, 'error');
-    }
+    // Ideally we're catching all Exceptions, so they should never see this,
+    // but just in case, we have to tell them something.
+    drupal_set_message(t('Fatal error trying to download.'), 'error');
   }
 }
 
@@ -750,17 +757,13 @@ function update_manager_batch_project_ge
   if (!isset($context['sandbox']['started'])) {
     $context['sandbox']['started'] = TRUE;
     $context['message'] = t('Downloading %project', array('%project' => $project));
-    $context['success'] = TRUE;
     $context['finished'] = 0;
     return;
   }
 
-  // Assume failure until we make it to the bottom and succeed.
-  $context['success'] = FALSE;
-
   // Actually try to download the file.
   if (!($local_cache = update_manager_file_get($url))) {
-    $context['results'][$project] = t('Failed to download %project from %url', array('%project' => $project, '%url' => $url));
+    $context['results']['errors'][$project] = t('Failed to download %project from %url', array('%project' => $project, '%url' => $url));
     return;
   }
 
@@ -770,7 +773,7 @@ function update_manager_batch_project_ge
     update_manager_archive_extract($local_cache, $extract_directory);
   }
   catch (Exception $e) {
-    $context['results'][$project] = $e->getMessage();
+    $context['results']['errors'][$project] = $e->getMessage();
     return;
   }
 
@@ -779,13 +782,12 @@ function update_manager_batch_project_ge
     update_manager_archive_verify($project, $local_cache, $extract_directory);
   }
   catch (Exception $e) {
-    $context['results'][$project] = $e->getMessage();
+    $context['results']['errors'][$project] = $e->getMessage();
     return;
   }
 
   // Yay, success.
-  $context['success'] = TRUE;
-  $context['results'][$project] = $url;
+  $context['results']['projects'][$project] = $url;
   $context['finished'] = 1;
 }
 
