1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-07 17:53:12 +01:00

Merge branch 'dz/connect-error-report'

* dz/connect-error-report:
  Do not log unless all connect() attempts fail
This commit is contained in:
Junio C Hamano 2011-07-22 14:44:28 -07:00
commit 1fad2862c8

View file

@ -192,7 +192,8 @@ static const char *ai_name(const struct addrinfo *ai)
*/ */
static int git_tcp_connect_sock(char *host, int flags) static int git_tcp_connect_sock(char *host, int flags)
{ {
int sockfd = -1, saved_errno = 0; struct strbuf error_message = STRBUF_INIT;
int sockfd = -1;
const char *port = STR(DEFAULT_GIT_PORT); const char *port = STR(DEFAULT_GIT_PORT);
struct addrinfo hints, *ai0, *ai; struct addrinfo hints, *ai0, *ai;
int gai; int gai;
@ -219,17 +220,11 @@ static int git_tcp_connect_sock(char *host, int flags)
for (ai0 = ai; ai; ai = ai->ai_next) { for (ai0 = ai; ai; ai = ai->ai_next) {
sockfd = socket(ai->ai_family, sockfd = socket(ai->ai_family,
ai->ai_socktype, ai->ai_protocol); ai->ai_socktype, ai->ai_protocol);
if (sockfd < 0) { if ((sockfd < 0) ||
saved_errno = errno; (connect(sockfd, ai->ai_addr, ai->ai_addrlen) < 0)) {
continue; strbuf_addf(&error_message, "%s[%d: %s]: errno=%s\n",
} host, cnt, ai_name(ai), strerror(errno));
if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) < 0) { if (0 <= sockfd)
saved_errno = errno;
fprintf(stderr, "%s[%d: %s]: errno=%s\n",
host,
cnt,
ai_name(ai),
strerror(saved_errno));
close(sockfd); close(sockfd);
sockfd = -1; sockfd = -1;
continue; continue;
@ -242,11 +237,13 @@ static int git_tcp_connect_sock(char *host, int flags)
freeaddrinfo(ai0); freeaddrinfo(ai0);
if (sockfd < 0) if (sockfd < 0)
die("unable to connect a socket (%s)", strerror(saved_errno)); die("unable to connect to %s:\n%s", host, error_message.buf);
if (flags & CONNECT_VERBOSE) if (flags & CONNECT_VERBOSE)
fprintf(stderr, "done.\n"); fprintf(stderr, "done.\n");
strbuf_release(&error_message);
return sockfd; return sockfd;
} }