Index: wp-admin/update-core.php
===================================================================
--- wp-admin/update-core.php	(revision 17589)
+++ wp-admin/update-core.php	(working copy)
@@ -133,11 +133,22 @@
 		echo '</p></div>';
 	}
 
-	echo '<p>';
-	/* translators: %1 date, %2 time. */
-	printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) );
+	$current = get_site_transient( 'update_core' );
+	$current->last_success = $current->last_success  - 30*60*60;
+	$last_success = $current->last_success + (get_option( 'gmt_offset' ) * 3600); // display teh time in the users localtimezone.
+
+	if ( $current->last_success > time()-24*60*60 ) { // If it was within the last 24hrs
+		echo '<div><p>';
+		/* translators: %1 date, %2 time. */
+		printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ), $last_success ), date_i18n( get_option( 'time_format' ), $last_success ) );
+	} else { // Update is not happening..
+		echo '<div class="error"><p>';
+		/* translators: %1 date, %2 time, %3 error string */
+		printf( __('The last successful update check was over 24 hours ago (%1$s %2$s), This means that WordPress is encountering an error whilst performing the update check. The error that is being reported is <code>%3$s</code> See the <a href="">Codex</a> for potential solutions.'),
+				date_i18n( get_option( 'date_format' ), $last_success ), date_i18n( get_option( 'time_format' ), $last_success ), $current->error->get_error_message() );
+	}
 	echo ' &nbsp; <a class="button" href="' . esc_url( self_admin_url('update-core.php') ) . '">' . __( 'Check Again' ) . '</a>';
-	echo '</p>';
+	echo '</p></div>';
 
 	if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) {
 		echo '<h3>';
Index: wp-includes/update.php
===================================================================
--- wp-includes/update.php	(revision 17587)
+++ wp-includes/update.php	(working copy)
@@ -23,7 +23,8 @@
 	if ( defined('WP_INSTALLING') )
 		return;
 
-	global $wp_version, $wpdb, $wp_local_package;
+	global $wpdb, $wp_local_package;
+	include ABSPATH . WPINC . '/version.php'; // for an unmodified $wp_version
 	$php_version = phpversion();
 
 	$current = get_site_transient( 'update_core' );
@@ -31,6 +32,7 @@
 		$current = new stdClass;
 		$current->updates = array();
 		$current->version_checked = $wp_version;
+		$current->last_success = false;
 	}
 
 	$locale = apply_filters( 'core_version_check_locale', get_locale() );
@@ -57,7 +59,7 @@
 	}
 
 	$local_package = isset( $wp_local_package )? $wp_local_package : '';
-	$url = "http://api.wordpress.org/core/version-check/1.5/?version=$wp_version&php=$php_version&locale=$locale&mysql=$mysql_version&local_package=$local_package&blogs=$num_blogs&users={$user_count['total_users']}&multisite_enabled=$multisite_enabled";
+	$url = "http://localhost/core/version-check/1.5/?version=$wp_version&php=$php_version&locale=$locale&mysql=$mysql_version&local_package=$local_package&blogs=$num_blogs&users={$user_count['total_users']}&multisite_enabled=$multisite_enabled";
 
 	$options = array(
 		'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ),
@@ -70,12 +72,12 @@
 
 	$response = wp_remote_get($url, $options);
 
-	if ( is_wp_error( $response ) )
+	if ( is_wp_error( $response ) || 200 != $response['response']['code'] /* || 'php/serialized' != Some header */ ) {
+		$current->error = is_wp_error($response) ? $response : new WP_Error('update_404', __('The server returned an unexpected response'));
+		set_site_transient( 'update_core', $current );
 		return false;
+	}
 
-	if ( 200 != $response['response']['code'] )
-		return false;
-
 	$body = trim( $response['body'] );
 	$body = str_replace(array("\r\n", "\r"), "\n", $body);
 	$new_options = array();
@@ -101,6 +103,7 @@
 	$updates = new stdClass();
 	$updates->updates = $new_options;
 	$updates->last_checked = time();
+	$updates->last_success = time();
 	$updates->version_checked = $wp_version;
 	set_site_transient( 'update_core',  $updates);
 }
@@ -119,7 +122,7 @@
  * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
  */
 function wp_update_plugins() {
-	global $wp_version;
+	include ABSPATH . WPINC . '/version.php'; // for an unmodified $wp_version
 
 	if ( defined('WP_INSTALLING') )
 		return false;
@@ -204,7 +207,7 @@
  * @return mixed Returns null if update is unsupported. Returns false if check is too soon.
  */
 function wp_update_themes( ) {
-	global $wp_version;
+	include ABSPATH . WPINC . '/version.php'; // for an unmodified $wp_version
 
 	if ( defined( 'WP_INSTALLING' ) )
 		return false;
