Instead of having each of them (and their callees) take a host:port
string and call get_host_and_port on it on their own, rely on the
get_host_and_port that already happens in git_connect and pass down
the separate host and port strings we got out of it.

Note that in git_tcp_connect_sock, the port was set to "<none>" in a
case that never can happen, so that code path was removed.

Signed-off-by: Mike Hommey <m...@glandium.org>
---
 connect.c | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/connect.c b/connect.c
index 1c8ed6b..b3fce84 100644
--- a/connect.c
+++ b/connect.c
@@ -343,18 +343,16 @@ static const char *ai_name(const struct addrinfo *ai)
 /*
  * Returns a connected socket() fd, or else die()s.
  */
-static int git_tcp_connect_sock(char *host, int flags)
+static int git_tcp_connect_sock(const char *host, const char *port, int flags)
 {
        struct strbuf error_message = STRBUF_INIT;
        int sockfd = -1;
-       const char *port = STR(DEFAULT_GIT_PORT);
        struct addrinfo hints, *ai0, *ai;
        int gai;
        int cnt = 0;
 
-       get_host_and_port(&host, &port);
-       if (!*port)
-               port = "<none>";
+       if (!port)
+               port = STR(DEFAULT_GIT_PORT);
 
        memset(&hints, 0, sizeof(hints));
        if (flags & CONNECT_IPV4)
@@ -411,11 +409,10 @@ static int git_tcp_connect_sock(char *host, int flags)
 /*
  * Returns a connected socket() fd, or else die()s.
  */
-static int git_tcp_connect_sock(char *host, int flags)
+static int git_tcp_connect_sock(const char *host, const char *port, int flags)
 {
        struct strbuf error_message = STRBUF_INIT;
        int sockfd = -1;
-       const char *port = STR(DEFAULT_GIT_PORT);
        char *ep;
        struct hostent *he;
        struct sockaddr_in sa;
@@ -423,7 +420,8 @@ static int git_tcp_connect_sock(char *host, int flags)
        unsigned int nport;
        int cnt;
 
-       get_host_and_port(&host, &port);
+       if (!port)
+               port = STR(DEFAULT_GIT_PORT);
 
        if (flags & CONNECT_VERBOSE)
                fprintf(stderr, "Looking up %s ... ", host);
@@ -482,9 +480,10 @@ static int git_tcp_connect_sock(char *host, int flags)
 #endif /* NO_IPV6 */
 
 
-static void git_tcp_connect(int fd[2], char *host, int flags)
+static void git_tcp_connect(int fd[2], const char *host, const char *port,
+                           int flags)
 {
-       int sockfd = git_tcp_connect_sock(host, flags);
+       int sockfd = git_tcp_connect_sock(host, port, flags);
 
        fd[0] = sockfd;
        fd[1] = dup(sockfd);
@@ -550,18 +549,16 @@ static int git_use_proxy(const char *host)
        return (git_proxy_command && *git_proxy_command);
 }
 
-static struct child_process *git_proxy_connect(int fd[2], char *host)
+static struct child_process *git_proxy_connect(int fd[2], const char *host,
+                                              const char *port)
 {
-       const char *port = STR(DEFAULT_GIT_PORT);
        struct child_process *proxy;
 
-       get_host_and_port(&host, &port);
-
        proxy = xmalloc(sizeof(*proxy));
        child_process_init(proxy);
        argv_array_push(&proxy->args, git_proxy_command);
        argv_array_push(&proxy->args, host);
-       argv_array_push(&proxy->args, port);
+       argv_array_push(&proxy->args, port ? port : STR(DEFAULT_GIT_PORT));
        proxy->in = -1;
        proxy->out = -1;
        if (start_command(proxy))
@@ -696,9 +693,9 @@ struct child_process *git_connect(int fd[2], const char 
*url,
                 * cannot connect.
                 */
                if (git_use_proxy(host))
-                       conn = git_proxy_connect(fd, hostandport);
+                       conn = git_proxy_connect(fd, host, port);
                else
-                       git_tcp_connect(fd, hostandport, flags);
+                       git_tcp_connect(fd, host, port, flags);
                /*
                 * Separate original protocol components prog and path
                 * from extended host header with a NUL byte.
-- 
2.8.1.16.g58dac65.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to