diff options
Diffstat (limited to 'src/interfaces/libpq/fe-secure-openssl.c')
-rw-r--r-- | src/interfaces/libpq/fe-secure-openssl.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c index 0c8c9f8dcba..a43e74284f2 100644 --- a/src/interfaces/libpq/fe-secure-openssl.c +++ b/src/interfaces/libpq/fe-secure-openssl.c @@ -1612,6 +1612,7 @@ pgtls_close(PGconn *conn) SSL_free(conn->ssl); conn->ssl = NULL; conn->ssl_in_use = false; + conn->ssl_handshake_started = false; destroy_needed = true; } @@ -1825,9 +1826,10 @@ static BIO_METHOD *my_bio_methods; static int my_sock_read(BIO *h, char *buf, int size) { + PGconn *conn = (PGconn *) BIO_get_app_data(h); int res; - res = pqsecure_raw_read((PGconn *) BIO_get_app_data(h), buf, size); + res = pqsecure_raw_read(conn, buf, size); BIO_clear_retry_flags(h); if (res < 0) { @@ -1849,6 +1851,9 @@ my_sock_read(BIO *h, char *buf, int size) } } + if (res > 0) + conn->ssl_handshake_started = true; + return res; } |