Hi, I ran the winsock tests and the only failure i received was from bind: sock.c:660: Test failed: bind() failed error: 10048 I checked msdn and error 10048 is WSAEADDRINUSE. The code for the test of this part is: rc = bind(s2, (struct sockaddr*)&saddr, sizeof(saddr)); ok(rc==SOCKET_ERROR, "bind() succeeded\n"); reuse = 1; rc = setsockopt(s2, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, sizeof(reuse)); ok(rc==0, "setsockopt() failed error: %d\n", WSAGetLastError()); todo_wine { rc = bind(s2, (struct sockaddr*)&saddr, sizeof(saddr)); ok(rc==0, "bind() failed error: %d\n", WSAGetLastError()); } For this part of the test, we bind an address, saddr, with a socket, s2, and then set the SO_REUSEADDR option to 1 so that we should be able to bind again, but we're getting the error WSAEADDRINUSE which means that the fact that we are allowing multiple binds with the SO_REUSEADDR option is being ignored somewhere. I looked at the function declarations for the win32 and linux setsockopt. win32: WS_setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen) linux: setsockopt (int __fd, int __level, int __optname, __const void *__optval, socklen_t __optlen) At one point in WS_setsockopt we make a call to the linux setsockopt and im wondering if the problem is when we call this version. Is it not a problem that WS_setsockopt's optval parameter is of type const char * and setsockopt's optval parameter is __const void *? I've searched for a while about this problem and I can't seem to spot the fix. If i'm totally off the mark on this one, let me know as well. Thanks for the help. For further reference see: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/win... http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/win... -- James Hawkins