diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-05-01 17:55:22 -0700 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-05-01 17:55:22 -0700 |
commit | 5587a9c93054643d66b022d03b975720e539cc3e (patch) | |
tree | 9066237c97077be789fd1498ef9f400e743b9aa5 | |
parent | 52877c897504ed610bc957b88b6ba9e442077c07 (diff) | |
parent | 42ea35c06157a5c75cfd20e8fe3a813140c26485 (diff) | |
download | libgit2-5587a9c93054643d66b022d03b975720e539cc3e.tar.gz |
Merge pull request #658 from schu/remote-disconnect
remote: don't free transport on disconnect
-rw-r--r-- | examples/network/fetch.c | 3 | ||||
-rw-r--r-- | src/remote.c | 18 |
2 files changed, 13 insertions, 8 deletions
diff --git a/examples/network/fetch.c b/examples/network/fetch.c index d4a39746f..23046bd09 100644 --- a/examples/network/fetch.c +++ b/examples/network/fetch.c @@ -93,6 +93,9 @@ int fetch(git_repository *repo, int argc, char **argv) } while (!data.finished); printf("\rReceived %d/%d objects in %d bytes\n", stats.processed, stats.total, bytes); + // Disconnect the underlying connection to prevent from idling. + git_remote_disconnect(remote); + // Update the references in the remote's namespace to point to the // right commits. This may be needed even if there was no packfile // to download, which can happen e.g. when the branches have been diff --git a/src/remote.c b/src/remote.c index 71cb62719..98c256929 100644 --- a/src/remote.c +++ b/src/remote.c @@ -381,13 +381,8 @@ void git_remote_disconnect(git_remote *remote) { assert(remote); - if (remote->transport != NULL) { - if (remote->transport->connected) + if (remote->transport != NULL && remote->transport->connected) remote->transport->close(remote->transport); - - remote->transport->free(remote->transport); - remote->transport = NULL; - } } void git_remote_free(git_remote *remote) @@ -395,14 +390,21 @@ void git_remote_free(git_remote *remote) if (remote == NULL) return; + if (remote->transport != NULL) { + git_remote_disconnect(remote); + + remote->transport->free(remote->transport); + remote->transport = NULL; + } + + git_vector_free(&remote->refs); + git__free(remote->fetch.src); git__free(remote->fetch.dst); git__free(remote->push.src); git__free(remote->push.dst); git__free(remote->url); git__free(remote->name); - git_vector_free(&remote->refs); - git_remote_disconnect(remote); git__free(remote); } |