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:
commit
1fad2862c8
1 changed files with 11 additions and 14 deletions
23
connect.c
23
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)
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue