From ef3a8af150664c852a7e78d0ef775681cd264269 Mon Sep 17 00:00:00 2001 From: mainzelm Date: Thu, 20 Feb 2003 17:52:27 +0000 Subject: [PATCH] Added httpd-options-post-bind-thunk. --- scheme/httpd/core.scm | 6 +++++- scheme/httpd/options.scm | 13 ++++++++++--- scheme/packages.scm | 6 ++++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/scheme/httpd/core.scm b/scheme/httpd/core.scm index 1734658..a4d149f 100644 --- a/scheme/httpd/core.scm +++ b/scheme/httpd/core.scm @@ -41,8 +41,12 @@ (lambda () (with-cwd root-dir - (bind-listen-accept-loop + (bind-prepare-listen-accept-loop protocol-family/internet + (lambda () + (cond ((httpd-options-post-bind-thunk options) + => (lambda (thunk) + (thunk))))) ;; Why is the output socket unbuffered? So that if the client ;; closes the connection, we won't lose when we try to close the ;; socket by trying to flush the output buffer. diff --git a/scheme/httpd/options.scm b/scheme/httpd/options.scm index 1f0b6c3..6087542 100644 --- a/scheme/httpd/options.scm +++ b/scheme/httpd/options.scm @@ -19,7 +19,8 @@ simultaneous-requests log-file syslog? - resolve-ips?) + resolve-ips? + post-bind-thunk) httpd-options? (port httpd-options-port set-httpd-options-port!) @@ -37,7 +38,8 @@ set-httpd-options-simultaneous-requests!) (log-file httpd-options-log-file set-httpd-options-log-file!) (syslog? httpd-options-syslog? set-httpd-options-syslog?!) - (resolve-ips? httpd-options-resolve-ips? set-httpd-options-resolve-ips?!)) + (resolve-ips? httpd-options-resolve-ips? set-httpd-options-resolve-ips?!) + (post-bind-thunk httpd-options-post-bind-thunk set-httpd-options-post-bind-thunk!)) ; default httpd-options generation (define (make-default-httpd-options) @@ -53,7 +55,8 @@ ; output-port: log to this port (e.g. (current-error-port)) ; #f: no logging #t ; Do syslogging? - #t)) ; Write host names instead of IPs in log-files? + #t ; Write host names instead of IPs in log-files? + #f)) ; post-bind-thunk ; creates a copy of a given httpd-option @@ -77,6 +80,8 @@ (set-httpd-options-log-file! new-options (httpd-options-log-file options)) (set-httpd-options-syslog?! new-options (httpd-options-syslog? options)) (set-httpd-options-resolve-ips?! new-options (httpd-options-resolve-ips? options)) + (set-httpd-options-post-bind-thunk! new-options + (httpd-options-post-bind-thunk options)) new-options)) ; (make-httpd-options-transformer set-option!) -> lambda (new-value [httpd-option]) @@ -112,6 +117,8 @@ (make-httpd-options-transformer set-httpd-options-syslog?!)) (define with-resolve-ips? (make-httpd-options-transformer set-httpd-options-resolve-ips?!)) +(define with-post-bind-thunk + (make-httpd-options-transformer set-httpd-options-post-bind-thunk!)) (define (make-httpd-options . stuff) (let loop ((options (make-default-httpd-options)) diff --git a/scheme/packages.scm b/scheme/packages.scm index 0c1d0ec..b083ef3 100644 --- a/scheme/packages.scm +++ b/scheme/packages.scm @@ -230,7 +230,8 @@ with-simultaneous-requests with-log-file with-syslog? - with-resolve-ips?)) + with-resolve-ips? + with-post-bind-thunk)) (define-interface httpd-read-options-interface (export httpd-options-port @@ -242,7 +243,8 @@ httpd-options-simultaneous-requests httpd-options-log-file httpd-options-syslog? - httpd-options-resolve-ips?)) + httpd-options-resolve-ips? + httpd-options-post-bind-thunk)) (define-interface httpd-access-control-interface (export access-denier