diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-03-19 14:13:31 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-03-19 14:13:31 +0100 |
commit | c92f2c7df0532b9f44dea59e68e1079e9504371b (patch) | |
tree | 35415c6ceb6765f41b12ad6daf8d6981986f5eb5 /module/web | |
parent | e4f54d4b32b0dc4233ed16e24db5cc913fccf088 (diff) | |
download | guile-c92f2c7df0532b9f44dea59e68e1079e9504371b.tar.gz |
web: 'tls-wrap' returns an unbuffered custom port.
This mirrors Guix commit b168acae2a01fd84075cc134a6140594a978fde5.
* module/web/client.scm (tls-wrap)[unbuffered]: New procedure.
Pass the result of 'make-custom-binary-input/output-port' to
'unbuffered'.
Diffstat (limited to 'module/web')
-rw-r--r-- | module/web/client.scm | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/module/web/client.scm b/module/web/client.scm index 76d9cc45a..3bd22f81b 100644 --- a/module/web/client.scm +++ b/module/web/client.scm @@ -274,17 +274,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). ;; 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-reference uri-or-string) (cond |