Merge branch 'dz/connect-error-report' into maint
* dz/connect-error-report: Do not log unless all connect() attempts fail
This commit is contained in:
commit
908bb1a9b7
25
connect.c
25
connect.c
@ -192,7 +192,8 @@ static const char *ai_name(const struct addrinfo *ai)
|
||||
*/
|
||||
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);
|
||||
struct addrinfo hints, *ai0, *ai;
|
||||
int gai;
|
||||
@ -219,18 +220,12 @@ static int git_tcp_connect_sock(char *host, int flags)
|
||||
for (ai0 = ai; ai; ai = ai->ai_next, cnt++) {
|
||||
sockfd = socket(ai->ai_family,
|
||||
ai->ai_socktype, ai->ai_protocol);
|
||||
if (sockfd < 0) {
|
||||
saved_errno = errno;
|
||||
continue;
|
||||
}
|
||||
if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) < 0) {
|
||||
saved_errno = errno;
|
||||
fprintf(stderr, "%s[%d: %s]: errno=%s\n",
|
||||
host,
|
||||
cnt,
|
||||
ai_name(ai),
|
||||
strerror(saved_errno));
|
||||
close(sockfd);
|
||||
if ((sockfd < 0) ||
|
||||
(connect(sockfd, ai->ai_addr, ai->ai_addrlen) < 0)) {
|
||||
strbuf_addf(&error_message, "%s[%d: %s]: errno=%s\n",
|
||||
host, cnt, ai_name(ai), strerror(errno));
|
||||
if (0 <= sockfd)
|
||||
close(sockfd);
|
||||
sockfd = -1;
|
||||
continue;
|
||||
}
|
||||
@ -242,11 +237,13 @@ static int git_tcp_connect_sock(char *host, int flags)
|
||||
freeaddrinfo(ai0);
|
||||
|
||||
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)
|
||||
fprintf(stderr, "done.\n");
|
||||
|
||||
strbuf_release(&error_message);
|
||||
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user