зеркало из https://github.com/microsoft/git.git
Merge branch 'ml/connect-refactor'
* ml/connect-refactor: connect.c: move duplicated code to a new function 'get_host_and_port'
This commit is contained in:
Коммит
a0626bcc66
83
connect.c
83
connect.c
|
@ -152,6 +152,28 @@ static enum protocol get_protocol(const char *name)
|
|||
#define STR_(s) # s
|
||||
#define STR(s) STR_(s)
|
||||
|
||||
static void get_host_and_port(char **host, const char **port)
|
||||
{
|
||||
char *colon, *end;
|
||||
|
||||
if (*host[0] == '[') {
|
||||
end = strchr(*host + 1, ']');
|
||||
if (end) {
|
||||
*end = 0;
|
||||
end++;
|
||||
(*host)++;
|
||||
} else
|
||||
end = *host;
|
||||
} else
|
||||
end = *host;
|
||||
colon = strchr(end, ':');
|
||||
|
||||
if (colon) {
|
||||
*colon = 0;
|
||||
*port = colon + 1;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef NO_IPV6
|
||||
|
||||
static const char *ai_name(const struct addrinfo *ai)
|
||||
|
@ -170,30 +192,14 @@ 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;
|
||||
char *colon, *end;
|
||||
const char *port = STR(DEFAULT_GIT_PORT);
|
||||
struct addrinfo hints, *ai0, *ai;
|
||||
int gai;
|
||||
int cnt = 0;
|
||||
|
||||
if (host[0] == '[') {
|
||||
end = strchr(host + 1, ']');
|
||||
if (end) {
|
||||
*end = 0;
|
||||
end++;
|
||||
host++;
|
||||
} else
|
||||
end = host;
|
||||
} else
|
||||
end = host;
|
||||
colon = strchr(end, ':');
|
||||
|
||||
if (colon) {
|
||||
*colon = 0;
|
||||
port = colon + 1;
|
||||
if (!*port)
|
||||
port = "<none>";
|
||||
}
|
||||
get_host_and_port(&host, &port);
|
||||
if (!*port)
|
||||
port = "<none>";
|
||||
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
|
@ -251,30 +257,15 @@ 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;
|
||||
char *colon, *end;
|
||||
char *port = STR(DEFAULT_GIT_PORT), *ep;
|
||||
const char *port = STR(DEFAULT_GIT_PORT);
|
||||
char *ep;
|
||||
struct hostent *he;
|
||||
struct sockaddr_in sa;
|
||||
char **ap;
|
||||
unsigned int nport;
|
||||
int cnt;
|
||||
|
||||
if (host[0] == '[') {
|
||||
end = strchr(host + 1, ']');
|
||||
if (end) {
|
||||
*end = 0;
|
||||
end++;
|
||||
host++;
|
||||
} else
|
||||
end = host;
|
||||
} else
|
||||
end = host;
|
||||
colon = strchr(end, ':');
|
||||
|
||||
if (colon) {
|
||||
*colon = 0;
|
||||
port = colon + 1;
|
||||
}
|
||||
get_host_and_port(&host, &port);
|
||||
|
||||
if (flags & CONNECT_VERBOSE)
|
||||
fprintf(stderr, "Looking up %s ... ", host);
|
||||
|
@ -406,26 +397,10 @@ static int git_use_proxy(const char *host)
|
|||
static void git_proxy_connect(int fd[2], char *host)
|
||||
{
|
||||
const char *port = STR(DEFAULT_GIT_PORT);
|
||||
char *colon, *end;
|
||||
const char *argv[4];
|
||||
struct child_process proxy;
|
||||
|
||||
if (host[0] == '[') {
|
||||
end = strchr(host + 1, ']');
|
||||
if (end) {
|
||||
*end = 0;
|
||||
end++;
|
||||
host++;
|
||||
} else
|
||||
end = host;
|
||||
} else
|
||||
end = host;
|
||||
colon = strchr(end, ':');
|
||||
|
||||
if (colon) {
|
||||
*colon = 0;
|
||||
port = colon + 1;
|
||||
}
|
||||
get_host_and_port(&host, &port);
|
||||
|
||||
argv[0] = git_proxy_command;
|
||||
argv[1] = host;
|
||||
|
|
Загрузка…
Ссылка в новой задаче