scheme/net/address.scm: a couple of arguments' order mismatch bugs

Ivan Shmakov <[email protected]>
Newsgroups gmane.lisp.scheme.scheme48
Message-ID <[email protected]>
	Please consider the patch below.  At least, it makes the
	following bit to work.

Welcome to Scheme 48 1.9T (made by ivan on 2009-08-17)
Copyright (c) 1993-2008 by Richard Kelsey and Jonathan Rees.
Please report bugs to [email protected].
Get more information at http://www.s48.org/.
Type ,? (comma question-mark) for help.
> ,new-package 
266> ,structure foo (export) 
foo> ,open net-addresses net-sockets srfi-61 
foo> (let* ((a/i  (get-address-info "waterlily.ip.uusia.org"
				    #f
				    (address-info-flags)
				    (address-family inet6) ;; NB: IPv6
				    (socket-type stream)))
	    (a-1  (car a/i))
	    (dst1 (address-info-socket-address a-1))
	    (dst  (make-ipv6-socket-address
		   80
		   (socket-address-ipv6-address dst1)
		   (socket-address-ipv6-scope-id dst1)))
	    (sock (make-socket (address-info-family a-1)
			       (address-info-socket-type a-1))))
       ; (write `(connecting-to: ,dst ...))
       (newline)
       (socket-connect sock dst)
       (let ((i (socket-input-port  sock))
	     (o (socket-output-port sock)))
	 (display (string-append "GET /"
				 (string #\newline)) o)
	 (newline o)
	 (let loop ()
	   (cond ((read-char i) (lambda (o) (not (eof-object? o)))
		  => (lambda (c)
		       (display c)
		       (loop))))))
       (close-socket sock))

<html><body><h1>It works!</h1></body></html>
#{Unspecific}
foo> 

scheme/net/address.scm
(socket-address-data/ipv6->raw): Fixed the order of values passed to
`external-make-sockaddr-in6-raw'.
(raw->socket-address): Fixed the order of values passed to
`make-socket-address-data/ipv6'.

diff -r feb2dd47df29 scheme/net/address.scm
--- a/scheme/net/address.scm	Fri Aug 14 17:21:46 2009 +0200
+++ b/scheme/net/address.scm	Mon Aug 17 22:42:49 2009 +0700
@@ -200,8 +200,8 @@
 
 (define (socket-address-data/ipv6->raw data)
   (external-make-sockaddr-in6-raw
+   (ipv6-address-elements (socket-address-data/ipv6-address data))
    (socket-address-data/ipv6-port data)
-   (ipv6-address-elements (socket-address-data/ipv6-address data))
    (socket-address-data/ipv6-scope-id data)))
 
 (import-lambda-definition-2 external-make-sockaddr-in6-raw (addr port scope-id)
@@ -259,8 +259,8 @@
 	      (vector-ref raw 2)))
 	    ((inet6)
 	     (make-socket-address-data/ipv6
+	      (make-ipv6-address (vector-ref raw 3))
 	      (vector-ref raw 2)
-	      (make-ipv6-address (vector-ref raw 3))
 	      (vector-ref raw 4)))
 	    ((unix)
 	     (make-socket-address-data/unix

-- 
FSF associate member #7257
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.