git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Eric Sunshine <ericsunshine@gmail.com>
To: kusmabite@gmail.com
Cc: git@vger.kernel.org, msysgit@googlegroups.com, j6t@kdbg.org,
	Mike Pape <dotzenlabs@gmail.com>
Subject: Re: [PATCH v3 01/14] mingw: add network-wrappers for daemon
Date: Sun, 10 Oct 2010 17:19:09 -0400	[thread overview]
Message-ID: <4CB22DCD.8080806@gmail.com> (raw)
In-Reply-To: <AANLkTinP7RKOhLFZs71P5dpmA1p1OsjikSmVv5WkkL1z@mail.gmail.com>

On 10/10/2010 4:20 PM, Erik Faye-Lund wrote:
> On Sun, Oct 10, 2010 at 9:40 PM, Eric Sunshine<ericsunshine@gmail.com>  wrote:
>> On 10/10/2010 9:20 AM, Erik Faye-Lund wrote:
>>>
>>> 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.)
>>
>
> _open_osfhandle seems to set both errno and the winsock-error.
> closesocket() sets the winsock-error but not the CRT. I've just tested
> with a very simple application:
> So, it seems that WSAGetLastError() gets clobbered by closesocket(),
> but not errno.

Thank you for checking. Even if it is not strictly needed in this case, 
for the sake of clarity (and to avoid having this question repeated in 
the future), it might be worthwhile to save 'errno' or the result of 
WSAGetLastError() in a temporary before invoking closesocket(), and then 
pass the temporary to strerror().

-- ES

  reply	other threads:[~2010-10-10 21:19 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-10 13:20 [PATCH v3 00/14] daemon-win32 Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 01/14] mingw: add network-wrappers for daemon Erik Faye-Lund
2010-10-10 19:40   ` Eric Sunshine
2010-10-10 20:20     ` Erik Faye-Lund
2010-10-10 21:19       ` Eric Sunshine [this message]
2010-10-10 13:20 ` [PATCH v3 02/14] mingw: implement syslog Erik Faye-Lund
2010-10-10 19:50   ` [msysGit] " Eric Sunshine
2010-10-10 20:37     ` Erik Faye-Lund
2010-10-10 20:51       ` Johannes Sixt
2010-10-10 21:17         ` Erik Faye-Lund
2010-10-10 21:28       ` Eric Sunshine
2010-10-10 22:16         ` Erik Faye-Lund
2010-10-10 22:23           ` Erik Faye-Lund
2010-10-10 23:20           ` Eric Sunshine
2010-10-11 15:28             ` [msysGit] " Erik Faye-Lund
2010-10-11 15:59               ` Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 03/14] compat: add inet_pton and inet_ntop prototypes Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 04/14] inet_ntop: fix a couple of old-style decls Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 05/14] mingw: use real pid Erik Faye-Lund
2010-10-10 19:53   ` Eric Sunshine
2010-10-10 20:52     ` Erik Faye-Lund
2010-10-10 21:56       ` Eric Sunshine
2010-10-10 13:20 ` [PATCH v3 06/14] mingw: support waitpid with pid > 0 and WNOHANG Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 07/14] mingw: add kill emulation Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 08/14] daemon: use run-command api for async serving Erik Faye-Lund
2010-10-10 19:56   ` [msysGit] " Eric Sunshine
2010-10-10 20:42     ` Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 09/14] daemon: use full buffered mode for stderr Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 10/14] Improve the mingw getaddrinfo stub to handle more use cases Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 11/14] daemon: report connection from root-process Erik Faye-Lund
2010-10-10 18:58   ` Johannes Sixt
2010-10-10 19:31     ` Erik Faye-Lund
2010-10-10 19:42       ` Erik Faye-Lund
2010-10-10 20:14         ` Ævar Arnfjörð Bjarmason
2010-10-10 20:48           ` Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 12/14] mingw: import poll-emulation from gnulib Erik Faye-Lund
2010-10-10 14:15   ` Ævar Arnfjörð Bjarmason
2010-10-10 14:28     ` Erik Faye-Lund
2010-10-10 19:34       ` Erik Faye-Lund
2010-10-10 19:51         ` Ævar Arnfjörð Bjarmason
2010-10-10 13:20 ` [PATCH v3 13/14] mingw: use " Erik Faye-Lund
2010-10-10 13:20 ` [PATCH v3 14/14] daemon: only use posix features on posix systems Erik Faye-Lund
2010-10-10 19:40   ` Ævar Arnfjörð Bjarmason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CB22DCD.8080806@gmail.com \
    --to=ericsunshine@gmail.com \
    --cc=dotzenlabs@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=j6t@kdbg.org \
    --cc=kusmabite@gmail.com \
    --cc=msysgit@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).