diff --git a/lib/chibi/net/server.scm b/lib/chibi/net/server.scm index 48bce643..be569155 100644 --- a/lib/chibi/net/server.scm +++ b/lib/chibi/net/server.scm @@ -30,7 +30,13 @@ (define (run-net-server listener-or-addr handler . o) (let ((listener-thunk (make-listener-thunk listener-or-addr)) - (max-requests (if (pair? o) (car o) default-max-requests))) + (max-requests + (or + (cond ((pair? o) (car o)) + ((get-environment-variable "CHIBI_NET_SERVER_MAX_THREADS") + => string->number) + (else #f)) + default-max-requests))) (define (run sock addr count) (log-debug "net-server: accepting request:" count) (let ((ports @@ -61,6 +67,9 @@ (cond ((not sock+addr) (serve count)) + ((= 1 max-requests) + (run (car sock+addr) (cadr sock+addr) count) + (serve (+ 1 count))) (else (thread-start! (make-thread diff --git a/lib/chibi/net/server.sld b/lib/chibi/net/server.sld index 77e126e4..17632918 100644 --- a/lib/chibi/net/server.sld +++ b/lib/chibi/net/server.sld @@ -1,5 +1,6 @@ (define-library (chibi net server) - (import (chibi) (chibi net) (chibi filesystem) (chibi log) (srfi 18)) + (import (chibi) (chibi net) (chibi filesystem) (chibi log) + (srfi 18) (srfi 98)) (export run-net-server make-listener-thunk) (include "server.scm"))