All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: "Carlo Marcelo Arenas Belón" <carenas@gmail.com>
Cc: git@vger.kernel.org, bagasdotme@gmail.com, gitster@pobox.com
Subject: Re: [PATCH v2 2/3] credential-cache: check for windows specific errors
Date: Mon, 13 Sep 2021 13:58:55 +0200 (CEST)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.2109131357280.55@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <20210913085600.35506-3-carenas@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2404 bytes --]

Hi Carlo,

On Mon, 13 Sep 2021, Carlo Marcelo Arenas Belón wrote:

> Connect and reset errors aren't what will be expected by POSIX but
> are compatible with the ones used by WinSock.
>
> To avoid any possibility of confusion with other systems checks
> for disconnection and availability had been abstracted into helper
> functions that are platform specific.
>
> Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
> ---
> V2:
> * Use helper functions to separate error handling as suggested by Junio
>
>  builtin/credential-cache.c | 30 ++++++++++++++++++++++++++++--
>  1 file changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/credential-cache.c b/builtin/credential-cache.c
> index e8a7415747..fd9f33d993 100644
> --- a/builtin/credential-cache.c
> +++ b/builtin/credential-cache.c
> @@ -11,6 +11,32 @@
>  #define FLAG_SPAWN 0x1
>  #define FLAG_RELAY 0x2
>
> +#ifdef _WIN32

While that works, I think we prefer `WIN32` (`_WIN32` is only used in
`compat/` and `contrib/`).

Other than that, looks good!

Ciao,
Dscho

> +
> +static int connection_closed(int error)
> +{
> +	return (error == EINVAL);
> +}
> +
> +static int connection_fatally_broken(int error)
> +{
> +	return (error != ENOENT) && (error != ENETDOWN);
> +}
> +
> +#else
> +
> +static int connection_closed(int error)
> +{
> +	return (error == ECONNRESET);
> +}
> +
> +static int connection_fatally_broken(int error)
> +{
> +	return (error != ENOENT) && (error != ECONNREFUSED);
> +}
> +
> +#endif
> +
>  static int send_request(const char *socket, const struct strbuf *out)
>  {
>  	int got_data = 0;
> @@ -28,7 +54,7 @@ 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 && connection_closed(errno)))
>  			break;
>  		if (r < 0)
>  			die_errno("read error from cache daemon");
> @@ -75,7 +101,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 (connection_fatally_broken(errno))
>  			die_errno("unable to connect to cache daemon");
>  		if (flags & FLAG_SPAWN) {
>  			spawn_daemon(socket);
> --
> 2.33.0.481.g26d3bed244
>
>

  reply	other threads:[~2021-09-13 11:59 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
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 [this message]
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=nycvar.QRO.7.76.6.2109131357280.55@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=bagasdotme@gmail.com \
    --cc=carenas@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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.