http://awwx.ws/client-socket1.arc:
(scheme (require openssl)) (scheme (xdef ar-init-socket (lambda (init-fn . args) (let ((oc (current-custodian)) (nc (make-custodian))) (current-custodian nc) (apply (lambda (in out . tail) (current-custodian oc) (associate-custodian nc in out) (list* in out tail)) (call-with-values init-fn (if (pair? args) (car args) list))))))) (def socket-connect (host port) (ar-init-socket (fn () (scheme.tcp-connect host port)))) (def ssl-connect (host port) (ar-init-socket (fn () (scheme.ssl-connect host port))))
The original socket initialization code is from arc3.1 ac.scm.
The extraction of the initializaiton code into ar-init-socket
and the provision of socket-connect
was checked into Anarki in August 2009 by Justin Kendrick.
The addition of ssl-connect
was checked into Anarki in December 2009 by Mark Huetsch.
This hack depends on arc3.1 and scheme0.