all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Mathieu Othacehe <othacehe@gnu.org>
To: 48556@debbugs.gnu.org
Cc: Mathieu Othacehe <othacehe@gnu.org>
Subject: [bug#48556] [PATCH 2/4] scripts: publish: Forward the request connection header.
Date: Fri, 21 May 2021 10:32:17 +0200	[thread overview]
Message-ID: <20210521083219.20714-2-othacehe@gnu.org> (raw)
In-Reply-To: <20210521083219.20714-1-othacehe@gnu.org>

The Guile web server is reading the response connection header to decide
whether to close the connection. However, as the request connection header is
not forwarded to the response, this mechanism cannot work.

* guix/scripts/publish.scm (add-extra-headers): New procedure.
(make-request-handler): Use it to forward the request connection header to the
response.
---
 guix/scripts/publish.scm | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 19fed574c2..260f98edf0 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -34,6 +34,7 @@
   #:use-module (srfi srfi-2)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
+  #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
@@ -1034,6 +1035,14 @@ methods, return the applicable compression."
             compressions)
       (default-compression requested-type)))
 
+(define (add-extra-headers request response)
+  "Append the REQUEST connection header to the given RESPONSE headers and
+return them."
+  (if (pair? response)
+      `(,@response
+        ,(assq 'connection (request-headers request)))
+      response))
+
 (define* (make-request-handler store
                                #:key
                                cache pool
@@ -1047,7 +1056,7 @@ methods, return the applicable compression."
     (let ((expected (split-and-decode-uri-path nar-path)))
       (cut equal? expected <>)))
 
-  (lambda (request body)
+  (define (handle request body)
     (format #t "~a ~a~%"
             (request-method request)
             (uri-path (request-uri request)))
@@ -1119,7 +1128,15 @@ methods, return the applicable compression."
                (not-found request)))
 
           (x (not-found request)))
-        (not-found request))))
+        (not-found request)))
+
+  ;; Forward the request connection header to the response, so that the server
+  ;; can close the connection if this is requested by the client.
+  (lambda (request body)
+    (let-values (((response response-body)
+                  (handle request body)))
+      (values (add-extra-headers request response)
+              response-body))))
 
 (define (service-name)
   "Return the Avahi service name of the server."
-- 
2.31.1





  reply	other threads:[~2021-05-21  8:45 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-21  8:23 [bug#48556] [PATCH 0/4] Add keep-alive support to guix publish Mathieu Othacehe
2021-05-21  8:32 ` [bug#48556] [PATCH 1/4] scripts: publish: Add keep-alive support when sending NAR Mathieu Othacehe
2021-05-21  8:32   ` Mathieu Othacehe [this message]
2021-05-29 15:32     ` [bug#48556] [PATCH 0/4] Add keep-alive support to guix publish Ludovic Courtès
2021-05-21  8:32   ` [bug#48556] [PATCH 3/4] progress: Add a download-size argument to progress-report-port Mathieu Othacehe
2021-05-29 15:33     ` [bug#48556] [PATCH 0/4] Add keep-alive support to guix publish Ludovic Courtès
2021-05-21  8:32   ` [bug#48556] [PATCH 4/4] scripts: substitute: Add keep-alive support when reading NAR Mathieu Othacehe
2021-05-29 15:34     ` [bug#48556] [PATCH 0/4] Add keep-alive support to guix publish Ludovic Courtès
2021-05-29 15:29   ` Ludovic Courtès
2021-06-01  7:14     ` bug#48556: " Mathieu Othacehe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210521083219.20714-2-othacehe@gnu.org \
    --to=othacehe@gnu.org \
    --cc=48556@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.