This is the mail archive of the
mailing list for the Cygwin project.
Re: cvs broken on win2k after recent cygwin upgrade: "The descriptor is a file, not a socket"
On Sun, Apr 15, 2001 at 03:36:31PM -0400, Christopher Faylor wrote:
> On Sun, Apr 15, 2001 at 06:44:50PM +0200, Corinna Vinschen wrote:
> >On Sun, Apr 15, 2001 at 09:07:28AM -0400, Christopher Faylor wrote:
> >> On Sun, Apr 15, 2001 at 09:22:58AM +0100, Henry S. Thompson wrote:
> >> >Thanks for the observations. Seems to me to confirm Corinna's
> >> >original belief that somehow Cygwin is getting the wrong WINSOCK
> >> >library, even though the right one is available.
> >> Cygwin uses wsock32.dll.
> >That's not quite correct. Cygwin uses ws2_32.dll if available.
> >The reason is the Winsock2 functionality used for duplicating
> >sockets. The old method is still implemented as a fallback, though.
> How is that implemented? I don't see it in the code. Where is
> that implemented below?
It's not that obvious. Since WsaStartup is called with a requested
version of 2.2 in wsa_init(), the wsock32 code asks if winsock 2 is
available on the system. If so, it will be used. The reason for
loading ws2_32 explicitly in Cygwin is that the function pointers of
the special winsock 2 functions couldn't be resolved otherwise.
> Also the two tests for ws32_handle and wsock32_handle look reversed.
> LoadDLLinitfunc (wsock32)
> extern void wsock_init ();
> HANDLE h;
> if ((h = LoadLibrary ("wsock32.dll")) != NULL)
> wsock32_handle = h;
> else if (!wsock32_handle)
> api_fatal ("could not load wsock32.dll. Is TCP/IP installed?");
> return 0; /* Already done by another thread? */
> if (!ws2_32_handle) /* IS THIS CORRECT? */
> wsock_init ();
It is. WsaStartup should only be called once regardless whether the
first winsock function is a version 1.1 or version 2 function. The
wsa_init function is only called if it's not already called from the
other entry point.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Developer mailto:email@example.com
Red Hat, Inc.
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple