Author: ehuelsmann Date: Tue Apr 3 16:13:38 2007 New Revision: 222
Modified: usocket/trunk/backend/allegro.lisp usocket/trunk/backend/armedbear.lisp usocket/trunk/backend/clisp.lisp usocket/trunk/backend/cmucl.lisp usocket/trunk/backend/lispworks.lisp usocket/trunk/backend/openmcl.lisp usocket/trunk/backend/sbcl.lisp usocket/trunk/backend/scl.lisp usocket/trunk/usocket.lisp Log: Support the more common reuse-address option for listening sockets.
Modified: usocket/trunk/backend/allegro.lisp ============================================================================== --- usocket/trunk/backend/allegro.lisp (original) +++ usocket/trunk/backend/allegro.lisp Tue Apr 3 16:13:38 2007 @@ -60,11 +60,13 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'character)) ;; Allegro and OpenMCL socket interfaces bear very strong resemblence ;; whatever you change here, change it also for OpenMCL - (let ((sock (with-mapped-conditions () + (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) + (sock (with-mapped-conditions () (apply #'socket:make-socket (append (list :connect :passive :reuse-address reuseaddress
Modified: usocket/trunk/backend/armedbear.lisp ============================================================================== --- usocket/trunk/backend/armedbear.lisp (original) +++ usocket/trunk/backend/armedbear.lisp Tue Apr 3 16:13:38 2007 @@ -33,9 +33,11 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'character)) - (let* ((sock-addr (jnew-call ("java.net.InetSocketAddress" + (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) + (sock-addr (jnew-call ("java.net.InetSocketAddress" "java.lang.String" "int") (host-to-hostname host) port)) (sock (jnew-call ("java.net.ServerSocket"))))
Modified: usocket/trunk/backend/clisp.lisp ============================================================================== --- usocket/trunk/backend/clisp.lisp (original) +++ usocket/trunk/backend/clisp.lisp Tue Apr 3 16:13:38 2007 @@ -51,11 +51,13 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'character)) ;; clisp 2.39 sets SO_REUSEADDRESS to 1 by default; no need to - ;; to explicitly turn it on. - (let ((sock (apply #'socket:socket-server + ;; to explicitly turn it on; unfortunately, there's no way to turn it off... + (declare (ignore reuseaddress reuse-address)) + (let ((sock (apply #'socket:socket-server (append (list port :backlog backlog) (when (ip/= host *wildcard-host*)
Modified: usocket/trunk/backend/cmucl.lisp ============================================================================== --- usocket/trunk/backend/cmucl.lisp (original) +++ usocket/trunk/backend/cmucl.lisp Tue Apr 3 16:13:38 2007 @@ -72,15 +72,17 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'character)) - (let ((server-sock (apply #'ext:create-inet-listener - (append (list port :stream - :backlog backlog - :reuse-address reuseaddress) - (when (ip/= host *wildcard-host*) - (list :host - (host-to-hbo host))))))) + (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) + (server-sock (apply #'ext:create-inet-listener + (append (list port :stream + :backlog backlog + :reuse-address reuseaddress) + (when (ip/= host *wildcard-host*) + (list :host + (host-to-hbo host))))))) (make-stream-server-socket server-sock :element-type element-type)))
(defmethod socket-accept ((usocket stream-server-usocket) &key element-type)
Modified: usocket/trunk/backend/lispworks.lisp ============================================================================== --- usocket/trunk/backend/lispworks.lisp (original) +++ usocket/trunk/backend/lispworks.lisp Tue Apr 3 16:13:38 2007 @@ -58,9 +58,11 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'base-char)) - (let* ((comm::*use_so_reuseaddr* reuseaddress) + (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) + (comm::*use_so_reuseaddr* reuseaddress) (hostname (host-to-hostname host)) (sock (with-mapped-conditions () #-lispworks4.1 (comm::create-tcp-socket-for-service
Modified: usocket/trunk/backend/openmcl.lisp ============================================================================== --- usocket/trunk/backend/openmcl.lisp (original) +++ usocket/trunk/backend/openmcl.lisp Tue Apr 3 16:13:38 2007 @@ -56,9 +56,11 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'character)) - (let* ((sock (apply #'openmcl-socket:make-socket + (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) + (sock (apply #'openmcl-socket:make-socket (append (list :connect :passive :reuse-address reuseaddress :local-port port
Modified: usocket/trunk/backend/sbcl.lisp ============================================================================== --- usocket/trunk/backend/sbcl.lisp (original) +++ usocket/trunk/backend/sbcl.lisp Tue Apr 3 16:13:38 2007 @@ -84,9 +84,11 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'character)) - (let* ((ip (host-to-vector-quad host)) + (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) + (ip (host-to-vector-quad host)) (sock (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol :tcp))) (setf (sb-bsd-sockets:sockopt-reuse-address sock) reuseaddress)
Modified: usocket/trunk/backend/scl.lisp ============================================================================== --- usocket/trunk/backend/scl.lisp (original) +++ usocket/trunk/backend/scl.lisp Tue Apr 3 16:13:38 2007 @@ -43,15 +43,17 @@
(defun socket-listen (host port &key reuseaddress + (reuse-address nil reuse-address-supplied-p) (backlog 5) (element-type 'character)) - (let* ((host (if (ip= host *wildcard-host*) - 0 - (host-to-hbo host))) - (server-sock (ext:create-inet-listener port :stream - :host host - :reuse-address reuseaddress - :backlog backlog))) + (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) + (host (if (ip= host *wildcard-host*) + 0 + (host-to-hbo host))) + (server-sock (ext:create-inet-listener port :stream + :host host + :reuse-address reuseaddress + :backlog backlog))) (make-stream-server-socket server-sock :element-type element-type)))
(defmethod socket-accept ((usocket stream-server-usocket) &key element-type)
Modified: usocket/trunk/usocket.lisp ============================================================================== --- usocket/trunk/usocket.lisp (original) +++ usocket/trunk/usocket.lisp Tue Apr 3 16:13:38 2007 @@ -304,9 +304,11 @@
Returns an object of type `stream-server-usocket'.
-`reuseaddress' and `backlog' are advisory parameters for setting socket +`reuse-address' and `backlog' are advisory parameters for setting socket options at creation time. `element-type' is the element type of the -streams to be created by `socket-accept'. +streams to be created by `socket-accept'. `reuseaddress' is supported for +backward compatibility (but deprecated); when both `reuseaddress' and +`reuse-address' have been specified, the latter takes precedence. ")
;; Documentation for the function