[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/04: download: 'tls-wrap' returns an unbuffered custom port.
From: |
guix-commits |
Subject: |
02/04: download: 'tls-wrap' returns an unbuffered custom port. |
Date: |
Thu, 11 Mar 2021 17:24:58 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit b168acae2a01fd84075cc134a6140594a978fde5
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Wed Mar 10 23:13:23 2021 +0100
download: 'tls-wrap' returns an unbuffered custom port.
Partly fixes <https://bugs.gnu.org/46967>.
* guix/build/download.scm (tls-wrap)[unbuffered]: New procedure.
Pass the result of 'make-custom-binary-input/output-port' to
'unbuffered'.
---
guix/build/download.scm | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/guix/build/download.scm b/guix/build/download.scm
index a027cd4..f24a1e2 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -323,17 +323,24 @@ host name without trailing dot."
(unless (port-closed? record)
(close-port record)))
+ (define (unbuffered port)
+ (setvbuf port 'none)
+ port)
+
(setvbuf record 'block)
;; Return a port that wraps RECORD to ensure that closing it also
;; closes PORT, the actual socket port, and its file descriptor.
+ ;; Make sure it does not introduce extra buffering (custom ports
+ ;; are buffered by default as of Guile 3.0.5).
;; XXX: This wrapper would be unnecessary if GnuTLS could
;; automatically close SESSION's file descriptor when RECORD is
;; closed, but that doesn't seem to be possible currently (as of
;; 3.6.9).
- (make-custom-binary-input/output-port "gnutls wrapped port" read! write!
- get-position set-position!
- close))))
+ (unbuffered
+ (make-custom-binary-input/output-port "gnutls wrapped port" read! write!
+ get-position set-position!
+ close)))))
(define (ensure-uri uri-or-string) ;XXX: copied from (web http)
(cond