Page MenuHomePhabricator

D13417.id.diff
No OneTemporary

D13417.id.diff

diff --git a/src/future/http/HTTPSFuture.php b/src/future/http/HTTPSFuture.php
--- a/src/future/http/HTTPSFuture.php
+++ b/src/future/http/HTTPSFuture.php
@@ -420,7 +420,9 @@
// NOTE: We want to use keepalive if possible. Return the handle to a
// pool for the domain; don't close it.
- self::$pool[$domain][] = $curl;
+ if ($this->shouldReuseHandles()) {
+ self::$pool[$domain][] = $curl;
+ }
$profiler = PhutilServiceProfiler::getInstance();
$profiler->endServiceCall($this->profilerCallID, array());
@@ -666,5 +668,19 @@
return $bytes;
}
+ private function shouldReuseHandles() {
+ $curl_version = curl_version();
+ $version = idx($curl_version, 'version');
+
+ // NOTE: cURL 7.43.0 has a bug where the POST body length is not recomputed
+ // properly when a handle is reused. For this version of cURL, disable
+ // handle reuse and accept a small performance penalty. See T8654.
+ if ($version == '7.43.0') {
+ return false;
+ }
+
+ return true;
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Mon, May 13, 9:39 AM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6291126
Default Alt Text
D13417.id.diff (1 KB)

Event Timeline