On Sun, 12 Dec 2004, Thomas Fischbacher wrote:

> * (with-alien ((s inet-sockaddr)) (setf (slot s 'family) af-inet) (setf 
> (slot s 'port) 2001) (setf (slot s 'addr) (host-entry-addr 
> (lookup-host-entry "1.0.0.127"))) (setf so (create-inet-socket :stream)) 
> (unix:unix-bind so (alien-sap s) (alien-size inet-sockaddr :bytes)))
> ; 
> 
> ; Warning: This variable is undefined:
> ;   SO
> ; 
> 0
> * (with-alien ((s inet-sockaddr)) (setf (slot s 'family) af-inet) (setf 
> (slot s 'port) 2001) (setf (slot s 'addr) (host-entry-addr 
> (lookup-host-entry "1.0.0.127"))) (setf so (create-inet-socket :stream)) 
> (unix:unix-bind so (alien-sap s) (alien-size inet-sockaddr :bytes)))

Well, erm, of course, this second example should have hat 127.0.0.1 in it. 
That's what matches the strace which I produced.

> bind(14, {sa_family=AF_INET, sin_port=htons(53511), 
> sin_addr=inet_addr("1.0.0.127")}, 16) = -1 EADDRNOTAVAIL (Cannot assign 
> requested address)

Anyway, here's the diff:

--- internet.lisp 2004-04-23 14:42:04.000000000 +0200
+++ /tmp/inet.lisp 2004-12-12 03:12:09.000000000 +0100
@@ -468,7 +468,7 @@
     (with-alien ((sockaddr inet-sockaddr))
       (setf (slot sockaddr 'family) af-inet)
       (setf (slot sockaddr 'port) (htons port))
-      (setf (slot sockaddr 'addr) addr)
+      (setf (slot sockaddr 'addr) (htonl addr))
       (when (minusp (unix:unix-bind socket
              (alien-sap sockaddr)
              (alien-size inet-sockaddr :bytes)))


-- 
regards,               [EMAIL PROTECTED]              (o_
 Thomas Fischbacher -  http://www.cip.physik.uni-muenchen.de/~tf  //\
(lambda (n) ((lambda (p q r) (p p q r)) (lambda (g x y)           V_/_
(if (= x 0) y (g g (- x 1) (* x y)))) n 1))                  (Debian GNU)


Reply via email to