diff --git a/src/xpdev/multisock.c b/src/xpdev/multisock.c
index 5f86af18eaa8fbdee4a856918299623aee93a202..4f536613ce616e2576440589ed53c67d8e69cfa3 100644
--- a/src/xpdev/multisock.c
+++ b/src/xpdev/multisock.c
@@ -169,7 +169,7 @@ BOOL xpms_add_list(struct xpms_set *xpms_set, int domain, int type,
 	return one_good;
 }
 
-SOCKET xpms_accept(struct xpms_set *xpms_set, struct sockaddr * addr, 
+SOCKET xpms_accept(struct xpms_set *xpms_set, union xp_sockaddr * addr, 
 	socklen_t * addrlen, unsigned int timeout, void **cb_data)
 {
 	fd_set			read_fs;
@@ -208,7 +208,7 @@ SOCKET xpms_accept(struct xpms_set *xpms_set, struct sockaddr * addr,
 				if(FD_ISSET(xpms_set->socks[i].sock, &read_fs)) {
 					if(cb_data)
 						*cb_data=xpms_set->socks[i].cb_data;
-					return accept(xpms_set->socks[i].sock, addr, addrlen);
+					return accept(xpms_set->socks[i].sock, &addr->addr, addrlen);
 				}
 				if(FD_ISSET(xpms_set->socks[i].sock, &except_fs)) {
 					closesocket(xpms_set->socks[i].sock);
diff --git a/src/xpdev/multisock.h b/src/xpdev/multisock.h
index 5af662a955ed4b86ff413aa94c6c9e0547581e0c..4bca6982bccd89bb9ef779e6eccfac48fd75821d 100644
--- a/src/xpdev/multisock.h
+++ b/src/xpdev/multisock.h
@@ -39,7 +39,7 @@ BOOL xpms_add(struct xpms_set *xpms_set, int domain, int type,
 BOOL xpms_add_list(struct xpms_set *xpms_set, int domain, int type,
 	int protocol, str_list_t list, uint16_t default_port, const char *prot, 
 	void (*sock_init)(SOCKET, void *), int(*bind_init)(BOOL), void *cbdata);
-SOCKET xpms_accept(struct xpms_set *, struct sockaddr * addr, 
+SOCKET xpms_accept(struct xpms_set *, union xp_sockaddr * addr, 
 	socklen_t * addrlen, unsigned int timeout, void **cb_data);
 
 #ifdef __cplusplus