diff --git a/includes/common.inc b/includes/common.inc
index 477ecc0..cccab32 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -760,6 +760,7 @@ function drupal_access_denied() {
  *     call may take. The default is 30 seconds. If a timeout occurs, the error
  *     code is set to the HTTP_REQUEST_TIMEOUT constant.
  *   - context: A context resource created with stream_context_create().
+ *   - buffer: The maximum number of bytes read between end-of-file checks.
  *
  * @return object
  *   An object that can have one or more of the following components:
@@ -814,6 +815,7 @@ function drupal_http_request($url, array $options = array()) {
     'max_redirects' => 3,
     'timeout' => 30.0,
     'context' => NULL,
+    'buffer' => variable_get('http_request_buffer', 1024),
   );

   // Merge the default headers.
@@ -966,7 +968,7 @@ function drupal_http_request($url, array $options = array()) {
       break;
     }
     stream_set_timeout($fp, floor($timeout), floor(1000000 * fmod($timeout, 1)));
-    $chunk = fread($fp, 1024);
+    $chunk = fread($fp, $options['buffer']);
     $response .= $chunk;
     $info = stream_get_meta_data($fp);
     $alive = !$info['eof'] && !$info['timed_out'] && $chunk;
diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php
index 580cc38..34d8a50 100644
--- a/sites/default/default.settings.php
+++ b/sites/default/default.settings.php
@@ -433,6 +433,16 @@ ini_set('session.cookie_lifetime', 2000000);
 # $conf['js_gzip_compression'] = FALSE;

 /**
+ * HTTP Request Buffer
+ *
+ * When drupal requests a file from another webserver, it periodically checks
+ * for end-of-file and server timeouts.  The default is to read a maximum of
+ * 1024 bytes between each check.  Increasing this limit may help performance
+ * when reading large files from the network.
+ */
+# $conf['http_request_buffer'] = 1024;
+
+/**
  * String overrides:
  *
  * To override specific strings on your site with or without enabling the Locale
