Merge branch 'tb/connect-ipv6-parse-fix' into maint

An earlier update to the parser that disects a URL broke an
address, followed by a colon, followed by an empty string (instead
of the port number), e.g. ssh://example.com:/path/to/repo.

* tb/connect-ipv6-parse-fix:
  connect.c: ignore extra colon after hostname
This commit is contained in:
Junio C Hamano 2015-04-27 12:23:53 -07:00
commit ad34ad614d
3 changed files with 24 additions and 16 deletions

View File

@ -310,6 +310,8 @@ static void get_host_and_port(char **host, const char **port)
if (end != colon + 1 && *end == '\0' && 0 <= portnr && portnr < 65536) { if (end != colon + 1 && *end == '\0' && 0 <= portnr && portnr < 65536) {
*colon = 0; *colon = 0;
*port = colon + 1; *port = colon + 1;
} else if (!colon[1]) {
*colon = 0;
} }
} }
} }

View File

@ -576,13 +576,16 @@ do
do do
for h in host user@host user@[::1] user@::1 for h in host user@host user@[::1] user@::1
do do
test_expect_success "fetch-pack --diag-url $p://$h/$r" ' for c in "" :
check_prot_host_port_path $p://$h/$r $p "$h" NONE "/$r" do
' test_expect_success "fetch-pack --diag-url $p://$h$c/$r" '
# "/~" -> "~" conversion check_prot_host_port_path $p://$h/$r $p "$h" NONE "/$r"
test_expect_success "fetch-pack --diag-url $p://$h/~$r" ' '
check_prot_host_port_path $p://$h/~$r $p "$h" NONE "~$r" # "/~" -> "~" conversion
' test_expect_success "fetch-pack --diag-url $p://$h$c/~$r" '
check_prot_host_port_path $p://$h/~$r $p "$h" NONE "~$r"
'
done
done done
for h in host User@host User@[::1] for h in host User@host User@[::1]
do do

View File

@ -387,14 +387,17 @@ do
done done
#with ssh:// scheme #with ssh:// scheme
test_expect_success 'clone ssh://host.xz/home/user/repo' ' #ignore trailing colon
test_clone_url "ssh://host.xz/home/user/repo" host.xz "/home/user/repo" for tcol in "" :
' do
test_expect_success "clone ssh://host.xz$tcol/home/user/repo" '
# from home directory test_clone_url "ssh://host.xz$tcol/home/user/repo" host.xz /home/user/repo
test_expect_success 'clone ssh://host.xz/~repo' ' '
test_clone_url "ssh://host.xz/~repo" host.xz "~repo" # from home directory
test_expect_success "clone ssh://host.xz$tcol/~repo" '
test_clone_url "ssh://host.xz$tcol/~repo" host.xz "~repo"
' '
done
# with port number # with port number
test_expect_success 'clone ssh://host.xz:22/home/user/repo' ' test_expect_success 'clone ssh://host.xz:22/home/user/repo' '
@ -407,9 +410,9 @@ test_expect_success 'clone ssh://host.xz:22/~repo' '
' '
#IPv6 #IPv6
for tuah in ::1 [::1] user@::1 user@[::1] [user@::1] for tuah in ::1 [::1] [::1]: user@::1 user@[::1] user@[::1]: [user@::1] [user@::1]:
do do
ehost=$(echo $tuah | tr -d "[]") ehost=$(echo $tuah | sed -e "s/1]:/1]/ "| tr -d "[]")
test_expect_success "clone ssh://$tuah/home/user/repo" " test_expect_success "clone ssh://$tuah/home/user/repo" "
test_clone_url ssh://$tuah/home/user/repo $ehost /home/user/repo test_clone_url ssh://$tuah/home/user/repo $ehost /home/user/repo
" "