guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: substitute: Optimize HTTP pipelining over TLS.


From: Ludovic Courtès
Subject: 02/02: substitute: Optimize HTTP pipelining over TLS.
Date: Thu, 10 Mar 2016 12:58:58 +0000

civodul pushed a commit to branch master
in repository guix.

commit ec278439f3ff5dcd3d02c05099ba1724cc2459f1
Author: Ludovic Courtès <address@hidden>
Date:   Thu Mar 10 13:53:23 2016 +0100

    substitute: Optimize HTTP pipelining over TLS.
    
    * guix/scripts/substitute.scm (http-multiple-get): Write the requests
    to a bytevector output port before sending them.
---
 guix/scripts/substitute.scm |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index cc637c8..b057e9b 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -495,8 +495,17 @@ read the response body, and the previous result, starting 
with SEED, à la
         (setvbuf p _IOFBF (expt 2 16)))
 
       ;; Send all of REQUESTS in a row.
-      (for-each (cut write-request <> p) requests)
-      (force-output p)
+      ;; XXX: Do our own caching to work around inefficiencies when
+      ;; communicating over TLS: <http://bugs.gnu.org/22966>.
+      (let-values (((buffer get) (open-bytevector-output-port)))
+        ;; On Guile > 2.0.9, inherit the HTTP proxying property from P.
+        (when (module-variable (resolve-interface '(web http))
+                               'http-proxy-port?)
+          (set-http-proxy-port?! buffer (http-proxy-port? p)))
+
+        (for-each (cut write-request <> buffer) requests)
+        (put-bytevector p (get))
+        (force-output p))
 
       ;; Now start processing responses.
       (let loop ((requests requests)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]