Welcome to the CHICKEN Scheme pasting service
spiffy openssl support added by murphy on Sat Feb 4 16:40:22 2012
--- spiffy.scm (revision 25859) +++ spiffy.scm (working copy) @@ -536,12 +536,20 @@ (mutex-unlock! m) (begin (mutex-unlock! m condition) (retry))))) -;; From the openssl egg. This is a way to support SSL without *requiring* it. -(define (ssl-port? obj) - (and (port? obj) (eq? (##sys#slot obj 10) 'ssl-socket))) +;; Imports from the openssl egg, if available +(define (dynamic-import module symbol default) + (handle-exceptions _ default (eval `(let () (use ,module) ,symbol)))) +(define ssl-port? + (dynamic-import + 'openssl 'ssl-port? + (lambda (v) + #f))) + (define (ssl-port->tcp-port p) - (if (ssl-port? p) (##sys#slot p 11) (error "Expected an SSL port"))) + (dynamic-import + 'openssl 'ssl-port? + (lambda (v) (error 'ssl-port->tcp-port "Expected an SSL port" v)))) (define (ssl-or-tcp-addresses p) (tcp-addresses