mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Add libpq connection option to disable SSL compression
This can be used to remove the overhead of SSL compression on fast networks. Laurenz Albe
This commit is contained in:
@ -222,6 +222,9 @@ static const PQconninfoOption PQconninfoOptions[] = {
|
||||
{"sslmode", "PGSSLMODE", DefaultSSLMode, NULL,
|
||||
"SSL-Mode", "", 8}, /* sizeof("disable") == 8 */
|
||||
|
||||
{"sslcompression", "PGSSLCOMPRESSION", "1", NULL,
|
||||
"SSL-Compression", "", 1},
|
||||
|
||||
{"sslcert", "PGSSLCERT", NULL, NULL,
|
||||
"SSL-Client-Cert", "", 64},
|
||||
|
||||
@ -621,6 +624,8 @@ fillPGconn(PGconn *conn, PQconninfoOption *connOptions)
|
||||
conn->keepalives_count = tmp ? strdup(tmp) : NULL;
|
||||
tmp = conninfo_getval(connOptions, "sslmode");
|
||||
conn->sslmode = tmp ? strdup(tmp) : NULL;
|
||||
tmp = conninfo_getval(connOptions, "sslcompression");
|
||||
conn->sslcompression = tmp ? strdup(tmp) : NULL;
|
||||
tmp = conninfo_getval(connOptions, "sslkey");
|
||||
conn->sslkey = tmp ? strdup(tmp) : NULL;
|
||||
tmp = conninfo_getval(connOptions, "sslcert");
|
||||
|
@ -1292,6 +1292,16 @@ initialize_SSL(PGconn *conn)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If the OpenSSL version used supports it (from 1.0.0 on)
|
||||
* and the user requested it, disable SSL compression.
|
||||
*/
|
||||
#ifdef SSL_OP_NO_COMPRESSION
|
||||
if (conn->sslcompression && conn->sslcompression[0] == '0') {
|
||||
SSL_set_options(conn->ssl, SSL_OP_NO_COMPRESSION);
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -310,6 +310,7 @@ struct pg_conn
|
||||
char *keepalives_count; /* maximum number of TCP keepalive
|
||||
* retransmits */
|
||||
char *sslmode; /* SSL mode (require,prefer,allow,disable) */
|
||||
char *sslcompression; /* SSL compression (0 or 1) */
|
||||
char *sslkey; /* client key filename */
|
||||
char *sslcert; /* client certificate filename */
|
||||
char *sslrootcert; /* root certificate filename */
|
||||
|
Reference in New Issue
Block a user