Re: [PATCH v3 01/14] mingw: add network-wrappers for daemon
- From
- Eric Sunshine <ericsunshine@gmail.com>
- Date
- Oct 10, 2010, 19:40 UTC
- 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:
Show 30 quoted lines
> From: Mike Pape<dotzenlabs@gmail.com>
>
> 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<dotzenlabs@gmail.com>
> Signed-off-by: Erik Faye-Lund<kusmabite@gmail.com>
> ---
> 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