mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 06:20:56 +00:00
fetch: clear the connection data on close
When we fetch twice with the same remote object, we did not properly clear the connection flags, so we would leak state from the last connection. This can cause the second fetch with the same remote object to fail if using a HTTP URL where the server redirects to HTTPS, as the second fetch would see `use_ssl` set and think the initial connection wanted to downgrade the connection.
This commit is contained in:
parent
4d86caec59
commit
1ca61bdcb9
@ -1009,6 +1009,7 @@ static int http_close(git_smart_subtransport *subtransport)
|
||||
git_vector_clear(&t->auth_contexts);
|
||||
|
||||
gitno_connection_data_free_ptrs(&t->connection_data);
|
||||
memset(&t->connection_data, 0x0, sizeof(gitno_connection_data));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -202,3 +202,14 @@ void test_online_fetch__remote_symrefs(void)
|
||||
|
||||
git_remote_free(remote);
|
||||
}
|
||||
|
||||
void test_online_fetch__twice(void)
|
||||
{
|
||||
git_remote *remote;
|
||||
|
||||
cl_git_pass(git_remote_create(&remote, _repo, "test", "http://github.com/libgit2/TestGitRepository.git"));
|
||||
cl_git_pass(git_remote_fetch(remote, NULL, NULL, NULL));
|
||||
cl_git_pass(git_remote_fetch(remote, NULL, NULL, NULL));
|
||||
|
||||
git_remote_free(remote);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user