 !             addr.sin_port = hport;
 !         }
 ! 
-! 	if (((s = socket(unix_socket ? PF_UNIX : AF_INET, SOCK_STREAM, 0)) < 0) ||
+! 	if (((s = socket(so->so_uds ? PF_UNIX : AF_INET, SOCK_STREAM, 0)) < 0) ||
   	    (setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)) < 0) ||
-!             (bind(s, unix_socket ? (struct sockaddr *) &addr_un : (struct sockaddr *) &addr,
-!                 unix_socket ? sizeof(addr_un) : sizeof(addr)) < 0) ||
+!             (bind(s, so->so_uds ? (struct sockaddr *) &addr_un : (struct sockaddr *) &addr,
+!                 so->so_uds ? sizeof(addr_un) : sizeof(addr)) < 0) ||
   	    (listen(s,1) < 0)) {
   		int tmperrno = errno; /* Don't clobber the real reason we failed */
   

diff -rc qemu-kvm-0.11.0-rc1-orig/slirp/socket.c qemu-kvm-0.11.0-rc1/slirp/socket.c
*** qemu-kvm-0.11.0-rc1-orig/slirp/socket.c	2009-08-02 15:38:42.000000000 +0200
--- qemu-kvm-0.11.0-rc1/slirp/socket.c	2009-08-05 18:09:20.000000000 +0200
***************
*** 587,592 ****
--- 587,593 ----

  
  	so->s = s;
  	return so;
--- 653,669 ----
  	}
  	setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(int));
  
!         if (so->so_uds) {
!             so->so_fport = hport;
!             so->so_faddr = slirp->vhost_addr;
!         } else {
