On Fri, Sep 23, 2011 at 2:59 PM, Anton Kovalenko anton@sw4me.com wrote:> Bind is not needed unless we want a specific interface or a specific> client port. Seems like a better patch is the following, which calls bind if local-hostor local-port are specified in the call to socket-connect. --- third_party/lisp/usocket/backend/sbcl.lisp.~1~ 2011-08-12 16:23:26.718704693 -0400 +++ third_party/lisp/usocket/backend/sbcl.lisp 2011-09-23 15:11:24.481814325 -0400 @@ -269,9 +269,8 @@ :protocol (case protocol (:stream :tcp) (:datagram :udp)))) - (local-host (host-to-vector-quad (or local-host *wildcard-host*))) - (local-port (or local-port *auto-port*)) - usocket ok) + (usocket nil) + (ok nil)) (unwind-protect (progn (ecase protocol @@ -285,7 +284,9 @@ (when (and nodelay-specified sockopt-tcp-nodelay-p) (setf (sb-bsd-sockets::sockopt-tcp-nodelay socket) nodelay)) (when (or local-host local-port) - (sb-bsd-sockets:socket-bind socket local-host local-port)) + (sb-bsd-sockets:socket-bind socket + (host-to-vector-quad (or local-host *wildcard-host*)) + (or local-port *auto-port*))) (with-mapped-conditions (usocket) #+sbcl (labels ((connect () @@ -306,8 +307,7 @@ (:datagram (when (or local-host local-port) (sb-bsd-sockets:socket-bind socket - (host-to-vector-quad - (or local-host *wildcard-host*)) + (host-to-vector-quad (or local-host *wildcard-host*)) (or local-port *auto-port*))) (setf usocket (make-datagram-socket socket)) (when (and host port)