summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Kelley <phkelley@hotmail.com>2012-11-06 09:36:04 -0500
committerPhilip Kelley <phkelley@hotmail.com>2012-11-06 09:36:04 -0500
commit2f7538ec00e8391c156bcdd64ae6dbb558758afe (patch)
tree8315653f46fa56d1a6171f82aad4f76edc59b3ac
parent091361f569dd86e8550c04afb193bfb516a21a74 (diff)
downloadlibgit2-2f7538ec00e8391c156bcdd64ae6dbb558758afe.tar.gz
Fix connection leak in http subtransport
-rw-r--r--src/netops.c9
-rw-r--r--src/transports/http.c3
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;