git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 2/3] credential-cache: check for windows specific errors

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Sep 13, 2021, 11:58 UTC
Message-ID
<nycvar.QRO.7.76.6.2109131357280.55@tvgsbejvaqbjf.bet>
In-Reply-To
<20210913085600.35506-3-carenas@gmail.com>
Hi Carlo,
On Mon, 13 Sep 2021, Carlo Marcelo Arenas Belón wrote:
Show 24 quoted lines
> 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

Show 50 quoted lines
> +
> +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
>
>
Previous: Carlo Marcelo Arenas BelónNext: Carlo Marcelo Arenas Belón
Message 15 of 27 in “windows: allow building without NO_UNIX_SOCKETS”
  1. 0/3 windows: allow building without NO_UNIX_SOCKETSCarlo Marcelo Arenas Belón, Sep 12, 2021
  2. 1/3 t0301: fixes for windows compatibilityCarlo Marcelo Arenas Belón, Sep 12, 2021
  3. Junio C HamanoSep 13, 2021
  4. Bagas SanjayaSep 13, 2021
  5. Carlo ArenasSep 13, 2021
  6. Junio C HamanoSep 13, 2021
  7. 3/3 git-compat-util: include declaration for unix socketsCarlo Marcelo Arenas Belón, Sep 12, 2021
  8. 2/3 credential-cache: check for windows specific errorsCarlo Marcelo Arenas Belón, Sep 12, 2021
  9. Junio C HamanoSep 13, 2021
  10. 0/3 windows: allow building without NO_UNIX_SOCKETSCarlo Marcelo Arenas Belón, Sep 13, 2021
  11. 1/3 t0301: fixes for windows compatibilityCarlo Marcelo Arenas Belón, Sep 13, 2021
  12. Johannes SchindelinSep 13, 2021
  13. Junio C HamanoSep 13, 2021
  14. 2/3 credential-cache: check for windows specific errorsCarlo Marcelo Arenas Belón, Sep 13, 2021
  15. Johannes SchindelinSep 13, 2021
  16. 3/3 git-compat-util: include declaration for unix socketsCarlo Marcelo Arenas Belón, Sep 13, 2021
  17. Johannes SchindelinSep 13, 2021
  18. Johannes SchindelinSep 13, 2021
  19. 0/3 windows: allow building without NO_UNIX_SOCKETSCarlo Marcelo Arenas Belón, Sep 14, 2021
  20. 1/3 t0301: fixes for windows compatibilityCarlo Marcelo Arenas Belón, Sep 14, 2021
  21. Ævar Arnfjörð BjarmasonNov 2, 2021
  22. 2/3 credential-cache: check for windows specific errorsCarlo Marcelo Arenas Belón, Sep 14, 2021
  23. Junio C HamanoSep 14, 2021
  24. What should happen in credential-cache on recoverable error without SPAWN option?Junio C Hamano, Sep 14, 2021
  25. Jeff KingSep 14, 2021
  26. 3/3 git-compat-util: include declaration for unix sockets in windowsCarlo Marcelo Arenas Belón, Sep 14, 2021
  27. Junio C HamanoSep 14, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.