[usocket-cvs] r706 - in usocket/trunk: backend vendor

ctian at common-lisp.net ctian at common-lisp.net
Tue Dec 11 06:24:48 UTC 2012


Author: ctian
Date: Mon Dec 10 22:24:47 2012
New Revision: 706

Log:
[MCL] Fixed OpenTransport load order for UDP patch.

Modified:
   usocket/trunk/backend/mcl.lisp
   usocket/trunk/vendor/OpenTransportUDP.lisp

Modified: usocket/trunk/backend/mcl.lisp
==============================================================================
--- usocket/trunk/backend/mcl.lisp	Mon Dec 10 07:14:33 2012	(r705)
+++ usocket/trunk/backend/mcl.lisp	Mon Dec 10 22:24:47 2012	(r706)
@@ -4,51 +4,6 @@
 ;; MCL backend for USOCKET 0.4.1
 ;; Terje Norderhaug <terje at in-progress.com>, January 1, 2009
 
-(in-package :ccl)
-
-(eval-when (:compile-toplevel :load-toplevel :execute)
-  (require :opentransport))
-
-;; MCL Issue 28: Passive TCP streams should be able to listen to the loopback interface
-;; see http://code.google.com/p/mcl/issues/detail?id=28 for details
-
-(defparameter *passive-interface-address* NIL
-  "Address to use for passive connections - optionally bind to loopback address while opening a tcp stream")
-
-(advise local-interface-ip-address
-  (or *passive-interface-address* (:do-it))
-  :when :around :name 'override-local-interface-ip-address)
-
-;; MCL Issue 29: Passive TCP connections on OS assigned ports
-;; see http://code.google.com/p/mcl/issues/detail?id=29 for details
-(advise ot-conn-tcp-passive-connect
-  (destructuring-bind (conn port &optional (allow-reuse t)) arglist
-    (declare (ignore allow-reuse))
-    (if (eql port #$kOTAnyInetAddress)
-	;; Avoids registering a proxy for port 0 but instead registers one for the true port:
-	(multiple-value-bind (proxy result)
-	    (let* ((*opentransport-class-proxies* NIL) ; makes ot-find-proxy return NIL
-		   (result (:do-it)) ;; pushes onto *opentransport-class-proxies*
-		   (proxy (prog1
-			      (pop *opentransport-class-proxies*)
-			    (assert (not *opentransport-class-proxies*))))
-		   (context (cdr proxy))
-		   (tmpconn (make-ot-conn :context context 
-					  :endpoint (pref context :ot-context.ref)))
-		   (localaddress (ot-conn-tcp-get-addresses tmpconn)))
-	      (declare (dynamic-extent tmpconn))
-	      ;; replace original set in body of function
-	      (setf (ot-conn-local-address conn) localaddress)
-	      (values
-	       (cons localaddress context)
-	       result))
-	  ;; need to be outside local binding of *opentransport-class-proxies* 
-	  (without-interrupts
-	      (push proxy *opentransport-class-proxies*))
-	  result)
-	(:do-it)))
-  :when :around :name 'ot-conn-tcp-passive-connect-any-address)
-
 (in-package :usocket)
 
 (defun handle-condition (condition &optional socket)

Modified: usocket/trunk/vendor/OpenTransportUDP.lisp
==============================================================================
--- usocket/trunk/vendor/OpenTransportUDP.lisp	Mon Dec 10 07:14:33 2012	(r705)
+++ usocket/trunk/vendor/OpenTransportUDP.lisp	Mon Dec 10 22:24:47 2012	(r706)
@@ -1,9 +1,51 @@
 ;;;-*-Mode: LISP; Package: CCL -*-
 ;;
 ;;; OpenTransportUDP.lisp
-;;; Copyright 2012 Chun Tian (binghe) 
+;;; Copyright 2012 Chun Tian (binghe) <binghe.lisp at gmail.com>
 
-;;; UDP extension to OpenTransport.lisp
+;;; UDP extension to OpenTransport.lisp (with some TCP patches)
 
 (in-package "CCL")
 
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (require :opentransport))
+
+;; MCL Issue 28: Passive TCP streams should be able to listen to the loopback interface
+;; see http://code.google.com/p/mcl/issues/detail?id=28 for details
+
+(defparameter *passive-interface-address* NIL
+  "Address to use for passive connections - optionally bind to loopback address while opening a tcp stream")
+
+(advise local-interface-ip-address
+  (or *passive-interface-address* (:do-it))
+  :when :around :name 'override-local-interface-ip-address)
+
+;; MCL Issue 29: Passive TCP connections on OS assigned ports
+;; see http://code.google.com/p/mcl/issues/detail?id=29 for details
+(advise ot-conn-tcp-passive-connect
+  (destructuring-bind (conn port &optional (allow-reuse t)) arglist
+    (declare (ignore allow-reuse))
+    (if (eql port #$kOTAnyInetAddress)
+	;; Avoids registering a proxy for port 0 but instead registers one for the true port:
+	(multiple-value-bind (proxy result)
+	    (let* ((*opentransport-class-proxies* NIL) ; makes ot-find-proxy return NIL
+		   (result (:do-it)) ;; pushes onto *opentransport-class-proxies*
+		   (proxy (prog1
+			      (pop *opentransport-class-proxies*)
+			    (assert (not *opentransport-class-proxies*))))
+		   (context (cdr proxy))
+		   (tmpconn (make-ot-conn :context context 
+					  :endpoint (pref context :ot-context.ref)))
+		   (localaddress (ot-conn-tcp-get-addresses tmpconn)))
+	      (declare (dynamic-extent tmpconn))
+	      ;; replace original set in body of function
+	      (setf (ot-conn-local-address conn) localaddress)
+	      (values
+	       (cons localaddress context)
+	       result))
+	  ;; need to be outside local binding of *opentransport-class-proxies* 
+	  (without-interrupts
+	      (push proxy *opentransport-class-proxies*))
+	  result)
+	(:do-it)))
+  :when :around :name 'ot-conn-tcp-passive-connect-any-address)




More information about the usocket-cvs mailing list