diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2015-09-30 06:29:01 -0700 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2015-09-30 06:29:01 -0700 |
commit | e8ccdd6bdf79a03affbb6e369fa6e3eaf42f7cc1 (patch) | |
tree | 6512ec2e2a582a35dc68422ed9ce3f21f6b09b72 | |
parent | 72b7c57093909d3f2333ebbc8c91953fce899b17 (diff) | |
parent | 146a96de82aebeca5e9b5bfe7fc69456f2bf2d0e (diff) | |
download | libgit2-e8ccdd6bdf79a03affbb6e369fa6e3eaf42f7cc1.tar.gz |
Merge pull request #3445 from libgit2/cmn/ssl-null
openssl: don't try to teardown an unconnected SSL context
-rw-r--r-- | src/openssl_stream.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/openssl_stream.c b/src/openssl_stream.c index 8ff53d4b1..54dd761ca 100644 --- a/src/openssl_stream.c +++ b/src/openssl_stream.c @@ -302,6 +302,7 @@ cert_fail_name: typedef struct { git_stream parent; git_stream *io; + bool connected; char *host; SSL *ssl; git_cert_x509 cert_info; @@ -318,6 +319,8 @@ int openssl_connect(git_stream *stream) if ((ret = git_stream_connect(st->io)) < 0) return ret; + st->connected = true; + bio = BIO_new(&git_stream_bio_method); GITERR_CHECK_ALLOC(bio); bio->ptr = st->io; @@ -406,9 +409,11 @@ int openssl_close(git_stream *stream) openssl_stream *st = (openssl_stream *) stream; int ret; - if ((ret = ssl_teardown(st->ssl)) < 0) + if (st->connected && (ret = ssl_teardown(st->ssl)) < 0) return -1; + st->connected = false; + return git_stream_close(st->io); } |