Merge remote-tracking branch 'origin/stable-2.0'
[bpt/guile.git] / module / web / server.scm
index 23f344e..0e34179 100644 (file)
@@ -198,11 +198,13 @@ values."
                                          (display str port)))))
 
 (define (extend-response r k v . additional)
+  (define (extend-alist alist k v)
+    (let ((pair (assq k alist)))
+      (acons k v (if pair (delq pair alist) alist))))
   (let ((r (build-response #:version (response-version r)
                            #:code (response-code r)
                            #:headers
-                           (assoc-set! (copy-tree (response-headers r))
-                                       k v)
+                           (extend-alist (response-headers r) k v)
                            #:port (response-port r))))
     (if (null? additional)
         r