anchor.diff:  		communicating with the remote host."))
   
   (defmethod accept-socket ((s server-socket))
  -	(with-fresh-foreign-block (sin-remote 'sockaddr_in)
  -		(with-fresh-foreign-block (size-addr 'long)
  -			(setf (cref (:unsigned-long *) size-addr 0) (sizeof 'sockaddr_in))
  -			(let ((as (with-invalid-socket-check ()
  -					(accept (socket-descriptor s) sin-remote size-addr))))								
  -				(make-instance (remote-socket-class s) 
  -					:descriptor as
  -					:address (cref (:unsigned-long *)sin-remote 1))))))
  +    (let ((remote (malloc *addr-size*)) (addr-size (malloc (sizeof 'int))))
  +        (setf (cref (int *) addr-size *) *addr-size*)
  +        (let ((as (with-invalid-socket-check () (accept (socket-descriptor s) remote addr-size))))
  +            (make-instance (remote-socket-class s) :descriptor as :address (c-to-addr remote)))))
   
   (defgeneric close-socket (s)
   	(:documentation 
  
positive.code: 				,@body)
  			(stop-sockets))))
  
  (defun host-to-ipaddr (dotted-or-name)
  	"Return the ipaddr given a host name or dotted IP address."
  	(let* ((name (lisp-string-to-c-string dotted-or-name))
  			(ipaddr (inet_addr name)))
  		(when (and (= ipaddr INADDR_NONE)
  				(not (equal dotted-or-name "255.255.255.255")))
  			(setq ipaddr
  				(let* ((he (with-winsock-pointer-expected () 
  								(gethostbyname name)))
  						(addr-list (cref hostent he winsock::h_addr_list))
  						(addr0 (cref ((:unsigned-long *) *) addr-list 0)))
  					(cref (:unsigned-long *) addr0 0))))
  		ipaddr))
  
  (defun ipaddr-to-name (ipaddr)
  	"Given an ipaddr, lookup the host name"
  	(with-fresh-foreign-block (temp-ipaddr :unsigned-long)
  		(setf (cref (:unsigned-long *) temp-ipaddr 0) ipaddr)
  		(c-string-to-lisp-string
  			(cref hostent
  				(with-winsock-pointer-expected ()
  					(gethostbyaddr temp-ipaddr (sizeof :unsigned-long) AF_INET))
  				winsock::h_name))))
  					
  			
  (defun ipaddr-to-dotted (ipaddr)
  	"Given ipaddr, return the dotted name."
  	(c-string-to-lisp-string 
  		(with-winsock-pointer-expected ()
  			(inet_ntoa (int-to-foreign-ptr ipaddr)))))
  
  (defclass base-socket ()
  	((socket-descriptor 
  
negative.code: 		"START-SOCKETS"
  		"STOP-SOCKETS"
  		"WITH-SOCKETS-STARTED"
                          "*IPV6*"
                          "IPV6-INSTALLED-P"
                          "HOST-TO-IPADDR"
  		"IPADDR-TO-NAME"
  		"IPADDR-TO-DOTTED"
  		"BASE-SOCKET"
  