Index: spiffy.scm =================================================================== --- spiffy.scm (revision 22712) +++ spiffy.scm (working copy) @@ -524,7 +524,11 @@ (define (ssl-port->tcp-port p) (if (ssl-port? p) (##sys#slot p 11) (error "Expected an SSL port"))) -(define (accept-loop listener accept) +(define (ssl-or-tcp-addresses p) + (tcp-addresses + (if (ssl-port? p) (ssl-port->tcp-port p) p))) + +(define (accept-loop listener accept #!optional (addresses ssl-or-tcp-addresses)) (let ((thread-count (make-mutex/value 'thread-count 0)) (thread-stopped! (make-condition-variable 'thread-stopped!)) (exn-message (condition-property-accessor 'exn 'message "(no message)")) @@ -539,10 +543,7 @@ (handle-exceptions ; Catch errors during TCP/SSL handshake e (debug! "Connection handshake error: ~S" (exn-message e)) (let*-values (((in out) (accept listener)) - ((local remote) (tcp-addresses - (if (ssl-port? in) - (ssl-port->tcp-port in) - in)))) + ((local remote) (addresses in))) (debug! "Incoming request from ~A" remote) (mutex-update! thread-count add1) (thread-start! @@ -580,7 +581,8 @@ (ssl-keyfile (server-ssl-keyfile)) ; Deprecated (bind-address (server-bind-address)) (listen tcp-listen) - (accept tcp-accept)) + (accept tcp-accept) + (addresses ssl-or-tcp-addresses)) (when (or ssl-client-context ssl-pemfile ssl-keyfile) (error (conc "ssl-client-context, ssl-pemfile and ssl-keyfile are no " "longer directly supported by start-server in order to make " @@ -592,6 +594,6 @@ ;; Make these parameters actual (start-server arg might override it) (parameterize ((server-port port) (server-bind-address bind-address)) - (accept-loop listener accept)))) + (accept-loop listener accept addresses)))) )