From: Junio C Hamano <gitster@pobox.com>
To: "Carlo Marcelo Arenas Belón" <carenas@gmail.com>
Cc: git@vger.kernel.org, lehmacdj@gmail.com
Subject: Re: [PATCH 2/3] credential-cache: check for windows specific errors
Date: Sun, 12 Sep 2021 18:10:44 -0700 [thread overview]
Message-ID: <xmqqwnnlgu0b.fsf@gitster.g> (raw)
In-Reply-To: <20210912202830.25720-3-carenas@gmail.com> ("Carlo Marcelo Arenas Belón"'s message of "Sun, 12 Sep 2021 13:28:29 -0700")
Carlo Marcelo Arenas Belón <carenas@gmail.com> writes:
> Connect and reset errors aren't what will be expected by POSIX but
> are compatible with the ones used by WinSock.
>
> Alternatively a translation layer for read could be added (similar
> to the one provided by mingw-write()) to translate the odd EINVAL,
> into a more reasonable EPIPE, but this is more localized and still
> unlikely to cause confusion in other systems.
Are we sure EINVAL or ENETDOWN from outside the Windows world is
tolerable after read_in_full() failure in this context?
I'd rather see something like
if (!r || (r < 0 && connection_closed(errno)))
break;
with a local helper function connection_closed() allowing EINVAL
only with "#ifdef WINDOWS" to be safe. The same for "the socket is
not yet open" codepath with another local helper function.
Thanks.
>
> Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
> ---
> builtin/credential-cache.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/credential-cache.c b/builtin/credential-cache.c
> index 76a6ba3722..b12a79ae01 100644
> --- a/builtin/credential-cache.c
> +++ b/builtin/credential-cache.c
> @@ -28,7 +28,8 @@ static int send_request(const char *socket, const struct strbuf *out)
> int r;
>
> r = read_in_full(fd, in, sizeof(in));
> - if (r == 0 || (r < 0 && errno == ECONNRESET))
> + if (r == 0 ||
> + (r < 0 && (errno == ECONNRESET || errno == EINVAL)))
> break;
> if (r < 0)
> die_errno("read error from cache daemon");
> @@ -75,7 +76,7 @@ static void do_cache(const char *socket, const char *action, int timeout,
> }
>
> if (send_request(socket, &buf) < 0) {
> - if (errno != ENOENT && errno != ECONNREFUSED)
> + if (errno != ENOENT && errno != ECONNREFUSED && errno != ENETDOWN)
> die_errno("unable to connect to cache daemon");
> if (flags & FLAG_SPAWN) {
> spawn_daemon(socket);
next prev parent reply other threads:[~2021-09-13 1:10 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-12 20:28 [PATCH 0/3] windows: allow building without NO_UNIX_SOCKETS Carlo Marcelo Arenas Belón
2021-09-12 20:28 ` [PATCH 1/3] t0301: fixes for windows compatibility Carlo Marcelo Arenas Belón
2021-09-13 1:04 ` Junio C Hamano
2021-09-13 5:34 ` Bagas Sanjaya
2021-09-13 7:13 ` Carlo Arenas
2021-09-13 18:01 ` Junio C Hamano
2021-09-12 20:28 ` [PATCH 2/3] credential-cache: check for windows specific errors Carlo Marcelo Arenas Belón
2021-09-13 1:10 ` Junio C Hamano [this message]
2021-09-12 20:28 ` [PATCH 3/3] git-compat-util: include declaration for unix sockets Carlo Marcelo Arenas Belón
2021-09-13 8:55 ` [PATCH v2 0/3] windows: allow building without NO_UNIX_SOCKETS Carlo Marcelo Arenas Belón
2021-09-13 8:55 ` [PATCH v2 1/3] t0301: fixes for windows compatibility Carlo Marcelo Arenas Belón
2021-09-13 11:50 ` Johannes Schindelin
2021-09-13 18:09 ` Junio C Hamano
2021-09-13 8:55 ` [PATCH v2 2/3] credential-cache: check for windows specific errors Carlo Marcelo Arenas Belón
2021-09-13 11:58 ` Johannes Schindelin
2021-09-13 8:56 ` [PATCH v2 3/3] git-compat-util: include declaration for unix sockets Carlo Marcelo Arenas Belón
2021-09-13 11:59 ` Johannes Schindelin
2021-09-13 11:42 ` [PATCH v2 0/3] windows: allow building without NO_UNIX_SOCKETS Johannes Schindelin
2021-09-14 7:25 ` [PATCH v3 " Carlo Marcelo Arenas Belón
2021-09-14 7:25 ` [PATCH v3 1/3] t0301: fixes for windows compatibility Carlo Marcelo Arenas Belón
2021-11-02 0:37 ` Ævar Arnfjörð Bjarmason
2021-09-14 7:25 ` [PATCH v3 2/3] credential-cache: check for windows specific errors Carlo Marcelo Arenas Belón
2021-09-14 16:43 ` Junio C Hamano
2021-09-14 19:09 ` What should happen in credential-cache on recoverable error without SPAWN option? Junio C Hamano
2021-09-14 19:33 ` Jeff King
2021-09-14 7:26 ` [PATCH v3 3/3] git-compat-util: include declaration for unix sockets in windows Carlo Marcelo Arenas Belón
2021-09-14 16:37 ` [PATCH v3 0/3] windows: allow building without NO_UNIX_SOCKETS Junio C Hamano
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqwnnlgu0b.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=carenas@gmail.com \
--cc=git@vger.kernel.org \
--cc=lehmacdj@gmail.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.