anchor.diff:  		"START-SOCKETS"
   		"STOP-SOCKETS"
   		"WITH-SOCKETS-STARTED"
  -		"HOST-TO-IPADDR"
  +                        "*IPV6*"
  +                        "IPV6-INSTALLED-P"
  +                        "HOST-TO-IPADDR"
   		"IPADDR-TO-NAME"
   		"IPADDR-TO-DOTTED"
   		"BASE-SOCKET"
  
positive.code: 	()
  	(:documentation
  		"A standard socket that is used through a proxy server."))
    
  (defmethod initialize-instance :after ((s base-socket) &allow-other-keys)
  	(ccl:register-finalization s #'(lambda (x) (close-socket x))))
  
  (defmethod initialize-instance ((s local-socket) &key host port &allow-other-keys)
      (call-next-method)
  	(setf (socket-host-ipaddr s) (host-to-ipaddr host))
  	(setf (socket-port s) (or port 0))
  	(setf (socket-descriptor s)	
  		(with-invalid-socket-check ()
  			(socket AF_INET SOCK_STREAM 0))))
  
  (defmethod initialize-instance :after ((s local-socket) &allow-other-keys)
    (with-fresh-foreign-block (sin-local 'sockaddr_in)
      (with-fresh-foreign-block (size 'int)
        (setf (cref (int *) size 0) (sizeof 'sockaddr_in))
        (with-socket-error-check ()
            (getsockname (socket-descriptor s) sin-local size)
          (setf (socket-port s)
                (ntohs (cref sockaddr_in sin-local winsock::sin_port)))))))
  
  (defmethod initialize-instance ((s client-socket) &key host port &allow-other-keys)
  	(declare (ignore port host))
  	(call-next-method)
  	(with-fresh-foreign-block (sin-remote 'sockaddr_in)
  		(setf (cref sockaddr_in sin-remote winsock::sin_family) AF_INET)
  		(let ((sin0 (cref sockaddr_in sin-remote winsock::sin_addr)))
  			(setf (cref in_addr sin0 winsock::S_addr) (socket-host-ipaddr s))
  			(setf (cref sockaddr_in sin-remote winsock::sin_port) (htons (socket-port s)))
  			(with-socket-error-check ()
  				(connect (socket-descriptor s) sin-remote (sizeof 'sockaddr_in))))))
  
  (defmethod initialize-instance ((s server-socket) &key host port &allow-other-keys)
  	(declare (ignore port host))
  	(call-next-method)
  	(with-fresh-foreign-block (sin-local 'sockaddr_in)
  		(setf (cref sockaddr_in sin-local winsock::sin_family) AF_INET)
  		(let ((sin0 (cref sockaddr_in sin-local winsock::sin_addr)))
  			(setf (cref in_addr sin0 winsock::S_addr) (socket-host-ipaddr s)))
  		(setf (cref sockaddr_in sin-local winsock::sin_port) (htons (socket-port s)))
  		(with-socket-error-check () 
  			(bind (socket-descriptor s) sin-local (sizeof 'sockaddr_in)))
  		(with-socket-error-check ()
  			(winsock:listen (socket-descriptor s) SOMAXCONN))))
  
  (defmethod initialize-instance :after ((s proxy-socket-mixin) &key real-host real-port proxy &allow-other-keys)
  	(proxy-server-connect proxy s real-host real-port)
  
negative.code: 		communicating with the remote host."))
  
  (defmethod accept-socket ((s server-socket))
      (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 
  