Skip to content

Commit

Permalink
credential-cache: check for windows specific errors
Browse files Browse the repository at this point in the history
Connect and reset errors aren't what will be expected by POSIX but
are instead 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 <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
carenas authored and gitster committed Sep 14, 2021
1 parent 0fdcfa2 commit 245670c
Showing 1 changed file with 28 additions and 2 deletions.
30 changes: 28 additions & 2 deletions builtin/credential-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,32 @@
#define FLAG_SPAWN 0x1
#define FLAG_RELAY 0x2

#ifdef GIT_WINDOWS_NATIVE

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;
Expand All @@ -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");
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 245670c

Please sign in to comment.