1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-25 16:22:42 +01:00

Compress requests from the Conduit client to Phabricator

Summary: Ref T13507. Enable compression in the body of Conduit requests if we have client support for it; we expect the server should always support it.

Test Plan: Created this revision, ran random "arc" commands that use Conduit. Added debugging code, saw payload size drop.

Maniphest Tasks: T13507

Differential Revision: https://secure.phabricator.com/D21073
This commit is contained in:
epriestley 2020-04-08 09:19:32 -07:00
parent deb72c37db
commit 7e25288f49

View file

@ -143,12 +143,25 @@ final class ConduitClient extends Phobject {
// Always use the cURL-based HTTPSFuture, for proxy support and other // Always use the cURL-based HTTPSFuture, for proxy support and other
// protocol edge cases that HTTPFuture does not support. // protocol edge cases that HTTPFuture does not support.
$core_future = new HTTPSFuture($uri, $data); $core_future = new HTTPSFuture($uri);
$core_future->addHeader('Host', $this->getHostStringForHeader()); $core_future->addHeader('Host', $this->getHostStringForHeader());
$core_future->setMethod('POST'); $core_future->setMethod('POST');
$core_future->setTimeout($this->timeout); $core_future->setTimeout($this->timeout);
// See T13507. If possible, try to compress requests. We always expect
// Phabricator to be able to accept "Content-Encoding: gzip" requests.
$can_gzip = function_exists('gzencode');
if ($can_gzip) {
$gzip_data = phutil_build_http_querystring($data);
$gzip_data = gzencode($gzip_data);
$core_future->addHeader('Content-Encoding', 'gzip');
$core_future->setData($gzip_data);
} else {
$core_future->setData($data);
}
if ($this->username !== null) { if ($this->username !== null) {
$core_future->setHTTPBasicAuthCredentials( $core_future->setHTTPBasicAuthCredentials(
$this->username, $this->username,