Skip to content

Commit 1c2b7c0

Browse files
committed
Restore the SSL_set_session_id_context() call to OpenSSL renegotiation.
This reverts the removal of the call in commit (272923a). It turns out it wasn't superfluous after all: without it, renegotiation fails if a client certificate was used. The rest of the changes in that commit are still OK and not reverted. Per investigation of bug #12769 by Arne Scheffer, although this doesn't fix the reported bug yet.
1 parent 9e3ad1a commit 1c2b7c0

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/backend/libpq/be-secure-openssl.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,10 @@ be_tls_write(Port *port, void *ptr, size_t len, int *waitfor)
595595
*/
596596
SSL_clear_num_renegotiations(port->ssl);
597597

598+
/* without this, renegotiation fails when a client cert is used */
599+
SSL_set_session_id_context(port->ssl, (void *) &SSL_context,
600+
sizeof(SSL_context));
601+
598602
if (SSL_renegotiate(port->ssl) <= 0)
599603
ereport(COMMERROR,
600604
(errcode(ERRCODE_PROTOCOL_VIOLATION),

0 commit comments

Comments
 (0)