diff --git a/core/includes/common.inc b/core/includes/common.inc
index 9601c76..8fd9d8b 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -936,11 +936,19 @@ function drupal_http_request($url, array $options = array()) {
   list($response, $result->data) = preg_split("/\r\n\r\n|\n\n|\r\r/", $response, 2);
   $response = preg_split("/\r\n|\n|\r/", $response);
 
-  // Parse the response status line.
-  list($protocol, $code, $status_message) = explode(' ', trim(array_shift($response)), 3);
+  // Parse the response status line without assuming three parts.
+  list($protocol, $code_status_message) = explode(' ', trim(array_shift($response)), 2);
+  if (strpos($code_status_message, ' ') === FALSE) {
+    // Missing part of the line? Ok, set the status to blank.
+    $code = $code_status_message;
+    $status_message = '';
+  }
+  else {
+    // All as normal.
+    list($code, $status_message) = explode(' ', $code_status_message, 2);
+  }
   $result->protocol = $protocol;
   $result->status_message = $status_message;
-
   $result->headers = array();
 
   // Parse the response headers.
