diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-05-09 22:16:37 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-05-09 22:16:37 +0000 |
commit | 1eb38eed083ad61491771ad221850ff6cc1ef1fa (patch) | |
tree | 945f953c4bdc90699be2a13634461446ad57603d | |
parent | 76f35b4ecf1d32573dc126a4914c1e6ef34c3cfc (diff) | |
download | brdo-1eb38eed083ad61491771ad221850ff6cc1ef1fa.tar.gz brdo-1eb38eed083ad61491771ad221850ff6cc1ef1fa.tar.bz2 |
- Patch #280240 by c960657: don't add content length when there is no content in the request.
-rw-r--r-- | includes/common.inc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/includes/common.inc b/includes/common.inc index a292c30cc..46d320d54 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -522,7 +522,6 @@ function drupal_http_request($url, array $options = array()) { // Merge the default headers. $options['headers'] += array( 'User-Agent' => 'Drupal (+http://drupal.org/)', - 'Content-Length' => strlen($options['data']), ); // RFC 2616: "non-standard ports MUST, default ports MAY be included". @@ -530,7 +529,15 @@ function drupal_http_request($url, array $options = array()) { // checking the host that do not take into account the port number. $options['headers']['Host'] = $host; - // If the server url has a user then attempt to use basic authentication + // Only add Content-Length if we actually have any content or if it is a POST + // or PUT request. Some non-standard servers get confused by Content-Length in + // at least HEAD/GET requests, and Squid always requires Content-Length in + // POST/PUT requests. + if (!empty($options['data']) || $options['method'] == 'POST' || $options['method'] == 'PUT') { + $options['headers']['Content-Length'] = strlen($options['data']); + } + + // If the server URL has a user then attempt to use basic authentication. if (isset($uri['user'])) { $options['headers']['Authorization'] = 'Basic ' . base64_encode($uri['user'] . (!empty($uri['pass']) ? ":" . $uri['pass'] : '')); } |