From: Eric Sunshine Date: Sun, 10 Oct 2010 19:40:50 GMT Subject: Re: [PATCH v3 01/14] mingw: add network-wrappers for daemon Message-ID: <4CB216C2.1060608@gmail.com> In-Reply-To: <1286716854-5744-2-git-send-email-kusmabite@gmail.com> On 10/10/2010 9:20 AM, Erik Faye-Lund wrote: > From: Mike Pape > > git-daemon requires some socket-functionality that is not yet > supported in the Windows-port. This patch adds said functionality, > and makes sure WSAStartup gets called by socket(), since it is the > first network-call in git-daemon. In addition, a check is added to > prevent WSAStartup (and WSACleanup, though atexit) from being > called more than once, since git-daemon calls both socket() and > gethostbyname(). > > Signed-off-by: Mike Pape > Signed-off-by: Erik Faye-Lund > --- > diff --git a/compat/mingw.c b/compat/mingw.c > index 6590f33..563ef1f 100644 > --- a/compat/mingw.c > +++ b/compat/mingw.c > +#undef accept > +int mingw_accept(int sockfd1, struct sockaddr *sa, socklen_t *sz) > +{ > + int sockfd2; > + > + SOCKET s1 = (SOCKET)_get_osfhandle(sockfd1); > + SOCKET s2 = accept(s1, sa, sz); > + > + /* convert into a file descriptor */ > + if ((sockfd2 = _open_osfhandle(s2, O_RDWR|O_BINARY))< 0) { > + closesocket(s2); > + return error("unable to make a socket file descriptor: %s", > + strerror(errno)); Is 'errno' from _open_osfhandle() still valid when handed to strerror() or has it been clobbered by closesocket()? Corollary: Does _open_osfhandle() indeed set 'errno', or is it more appropriate to call WSAGetLastError()? (The documentation I read for _open_osfhandle() did not say anything about how to determine the reason for failure.) -- ES