diff options
author | Andy Wingo <wingo@pobox.com> | 2012-03-06 22:22:31 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2012-03-06 22:22:31 +0100 |
commit | 3c12fc359561aedb179a524667ba03481333f482 (patch) | |
tree | ea71431a666f0e1fd964f0ecf0121bcfa9586cff /module/web/server.scm | |
parent | 24ea9f9c3abb8d9398df4810b815075593ba67c8 (diff) | |
download | guile-3c12fc359561aedb179a524667ba03481333f482.tar.gz |
micro-optimization in (web server)
* module/web/server.scm (extend-response): Micro-optimize to not mutate
data, and to copy as little as possible.
Diffstat (limited to 'module/web/server.scm')
-rw-r--r-- | module/web/server.scm | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/module/web/server.scm b/module/web/server.scm index 42887e67f..fbd5d95ab 100644 --- a/module/web/server.scm +++ b/module/web/server.scm @@ -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 |