Loading sbcl.lisp +14 −11 Original line number Diff line number Diff line Loading @@ -21,17 +21,20 @@ (lambda (c) (error 'socket-error :nested-error c))) (sb-bsd-sockets:name-service-error (lambda (c) (error 'socket-error :nested-error c)))) (let ((s (make-instance 'sb-bsd-sockets:inet-socket (let ((socket (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol protocol)) (me (resolve-hostname local-host))) :protocol protocol))) (unwind-protect (let ((me (resolve-hostname local-host))) (unless (and (equal me #(0 0 0 0)) (eql local-port 0)) (sb-bsd-sockets:socket-bind s me local-port)) (sb-bsd-sockets:socket-connect s (resolve-hostname peer-host) peer-port) (sb-bsd-sockets:socket-make-stream s :input t :output t (sb-bsd-sockets:socket-bind socket me local-port)) (sb-bsd-sockets:socket-connect socket (resolve-hostname peer-host) peer-port) (prog1 (sb-bsd-sockets:socket-make-stream socket :input t :output t :element-type element-type :buffering :full)))) :external-format external-format :buffering :full) (setf socket nil))) (when socket (sb-bsd-sockets:socket-close socket)))))) (defun open-server (&key (host :any) (port 0) (reuse-address t) Loading Loading
sbcl.lisp +14 −11 Original line number Diff line number Diff line Loading @@ -21,17 +21,20 @@ (lambda (c) (error 'socket-error :nested-error c))) (sb-bsd-sockets:name-service-error (lambda (c) (error 'socket-error :nested-error c)))) (let ((s (make-instance 'sb-bsd-sockets:inet-socket (let ((socket (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol protocol)) (me (resolve-hostname local-host))) :protocol protocol))) (unwind-protect (let ((me (resolve-hostname local-host))) (unless (and (equal me #(0 0 0 0)) (eql local-port 0)) (sb-bsd-sockets:socket-bind s me local-port)) (sb-bsd-sockets:socket-connect s (resolve-hostname peer-host) peer-port) (sb-bsd-sockets:socket-make-stream s :input t :output t (sb-bsd-sockets:socket-bind socket me local-port)) (sb-bsd-sockets:socket-connect socket (resolve-hostname peer-host) peer-port) (prog1 (sb-bsd-sockets:socket-make-stream socket :input t :output t :element-type element-type :buffering :full)))) :external-format external-format :buffering :full) (setf socket nil))) (when socket (sb-bsd-sockets:socket-close socket)))))) (defun open-server (&key (host :any) (port 0) (reuse-address t) Loading