From: Alex Riesen <raa.lkml@gmail.com>
To: "Michael S. Tsirkin" <mst@dev.mellanox.co.il>
Cc: Junio C Hamano <junkio@cox.net>, git@vger.kernel.org
Subject: Re: [PATCH] connect: display connection progress
Date: Mon, 7 May 2007 00:21:23 +0200 [thread overview]
Message-ID: <20070506222123.GB2439@steel.home> (raw)
In-Reply-To: <20070506195230.GA30339@mellanox.co.il>
Michael S. Tsirkin, Sun, May 06, 2007 21:52:30 +0200:
> Make git notify the user about host resolution/connection attempts. This
> is useful both as a progress indicator on slow links, and helps reassure the
> user there are no DNS/firewall problems.
If there DNS problems, it is usually useful to show which address was
used. And what errors were, exactly (not just errno, but h_errno too).
And which one of many, BTW. Maybe this below could be of help:
diff --git a/connect.c b/connect.c
index da89c9c..34c26bb 100644
--- a/connect.c
+++ b/connect.c
@@ -391,6 +391,23 @@ static enum protocol get_protocol(const char *name)
#ifndef NO_IPV6
+static const char *ai_name(const struct addrinfo *ai)
+{
+ static char addr[INET_ADDRSTRLEN];
+ if ( AF_INET == ai->ai_family ) {
+ struct sockaddr_in *in;
+ in = (struct sockaddr_in *)ai->ai_addr;
+ inet_ntop(ai->ai_family, &in->sin_addr, addr, sizeof(addr));
+ } else if ( AF_INET6 == ai->ai_family ) {
+ struct sockaddr_in6 *in;
+ in = (struct sockaddr_in6 *)ai->ai_addr;
+ inet_ntop(ai->ai_family, &in->sin6_addr, addr, sizeof(addr));
+ } else {
+ strcpy(addr, "(unknown)");
+ }
+ return addr;
+}
+
/*
* Returns a connected socket() fd, or else die()s.
*/
@@ -401,6 +418,7 @@ static int git_tcp_connect_sock(char *host)
const char *port = STR(DEFAULT_GIT_PORT);
struct addrinfo hints, *ai0, *ai;
int gai;
+ int cnt = 0;
if (host[0] == '[') {
end = strchr(host + 1, ']');
@@ -438,10 +456,17 @@ static int git_tcp_connect_sock(char *host)
}
if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) < 0) {
saved_errno = errno;
+ fprintf(stderr, "%s[%d: %s]: net=%s, errno=%s\n",
+ host,
+ cnt,
+ ai_name(ai),
+ hstrerror(h_errno),
+ strerror(saved_errno));
close(sockfd);
sockfd = -1;
continue;
}
+ fprintf(stderr, "using %s[%s]\n", host, ai_name(ai));
break;
}
@@ -467,6 +492,7 @@ static int git_tcp_connect_sock(char *host)
struct sockaddr_in sa;
char **ap;
unsigned int nport;
+ int cnt;
if (host[0] == '[') {
end = strchr(host + 1, ']');
@@ -497,7 +523,7 @@ static int git_tcp_connect_sock(char *host)
nport = se->s_port;
}
- for (ap = he->h_addr_list; *ap; ap++) {
+ for (cnt = 0, ap = he->h_addr_list; *ap; ap++, cnt++) {
sockfd = socket(he->h_addrtype, SOCK_STREAM, 0);
if (sockfd < 0) {
saved_errno = errno;
@@ -511,10 +537,19 @@ static int git_tcp_connect_sock(char *host)
if (connect(sockfd, (struct sockaddr *)&sa, sizeof sa) < 0) {
saved_errno = errno;
+ fprintf(stderr, "%s[%d: %s]: net=%s, errno=%s\n",
+ host,
+ cnt,
+ inet_ntoa(*(struct in_addr *)&sa.sin_addr),
+ hstrerror(h_errno),
+ strerror(saved_errno));
close(sockfd);
sockfd = -1;
continue;
}
+ fprintf(stderr, "using %s[%s]\n",
+ host,
+ inet_ntoa(*(struct in_addr *)&sa.sin_addr));
break;
}
next prev parent reply other threads:[~2007-05-06 22:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-06 19:52 [PATCH] connect: display connection progress Michael S. Tsirkin
2007-05-06 20:41 ` Junio C Hamano
2007-05-07 4:20 ` Michael S. Tsirkin
2007-05-10 9:51 ` [PATCHv2] " Michael S. Tsirkin
2007-05-10 11:39 ` Alex Riesen
2007-05-10 12:08 ` Michael S. Tsirkin
2007-05-10 12:19 ` Alex Riesen
2007-05-10 12:25 ` Michael S. Tsirkin
2007-05-10 13:33 ` Alex Riesen
2007-05-10 13:46 ` Michael S. Tsirkin
2007-05-10 14:16 ` Alex Riesen
2007-05-10 14:39 ` Michael S. Tsirkin
2007-05-10 14:52 ` Alex Riesen
2007-05-10 15:02 ` Michael S. Tsirkin
2007-05-10 17:40 ` Alex Riesen
2007-05-10 19:29 ` Junio C Hamano
2007-05-10 16:05 ` Linus Torvalds
2007-05-10 17:38 ` Alex Riesen
2007-05-06 22:21 ` Alex Riesen [this message]
2007-05-07 4:54 ` [PATCH] " Michael S. Tsirkin
2007-05-07 7:51 ` Alex Riesen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070506222123.GB2439@steel.home \
--to=raa.lkml@gmail.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=mst@dev.mellanox.co.il \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).