diff options
author | Philip Kelley <phkelley@hotmail.com> | 2012-11-06 09:36:04 -0500 |
---|---|---|
committer | Philip Kelley <phkelley@hotmail.com> | 2012-11-06 09:36:04 -0500 |
commit | 2f7538ec00e8391c156bcdd64ae6dbb558758afe (patch) | |
tree | 8315653f46fa56d1a6171f82aad4f76edc59b3ac | |
parent | 091361f569dd86e8550c04afb193bfb516a21a74 (diff) | |
download | libgit2-2f7538ec00e8391c156bcdd64ae6dbb558758afe.tar.gz |
Fix connection leak in http subtransport
-rw-r--r-- | src/netops.c | 9 | ||||
-rw-r--r-- | src/transports/http.c | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/netops.c b/src/netops.c index 3e2743486..2d079efab 100644 --- a/src/netops.c +++ b/src/netops.c @@ -193,16 +193,19 @@ void gitno_consume_n(gitno_buffer *buf, size_t cons) static int gitno_ssl_teardown(gitno_ssl *ssl) { int ret; - + do { ret = SSL_shutdown(ssl->ssl); } while (ret == 0); + if (ret < 0) - return ssl_set_error(ssl, ret); + ret = ssl_set_error(ssl, ret); + else + ret = 0; SSL_free(ssl->ssl); SSL_CTX_free(ssl->ctx); - return 0; + return ret; } /* Match host names according to RFC 2818 rules */ diff --git a/src/transports/http.c b/src/transports/http.c index 4b48779f9..f2ff2d6e2 100644 --- a/src/transports/http.c +++ b/src/transports/http.c @@ -606,6 +606,9 @@ static void http_free(git_smart_subtransport *smart_transport) clear_parser_state(t); + if (t->socket.socket) + gitno_close(&t->socket); + if (t->cred) { t->cred->free(t->cred); t->cred = NULL; |