mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Break out OpenSSL-specific code to separate files.
This refactoring is in preparation for adding support for other SSL implementations, with no user-visible effects. There are now two #defines, USE_OPENSSL which is defined when building with OpenSSL, and USE_SSL which is defined when building with any SSL implementation. Currently, OpenSSL is the only implementation so the two #defines go together, but USE_SSL is supposed to be used for implementation-independent code. The libpq SSL code is changed to use a custom BIO, which does all the raw I/O, like we've been doing in the backend for a long time. That makes it possible to use MSG_NOSIGNAL to block SIGPIPE when using SSL, which avoids a couple of syscall for each send(). Probably doesn't make much performance difference in practice - the SSL encryption is expensive enough to mask the effect - but it was a natural result of this refactoring. Based on a patch by Martijn van Oosterhout from 2006. Briefly reviewed by Alvaro Herrera, Andreas Karlsson, Jeff Janes.
This commit is contained in:
@ -231,8 +231,8 @@ PerformAuthentication(Port *port)
|
||||
{
|
||||
if (am_walsender)
|
||||
{
|
||||
#ifdef USE_SSL
|
||||
if (port->ssl)
|
||||
#ifdef USE_OPENSSL
|
||||
if (port->ssl_in_use)
|
||||
ereport(LOG,
|
||||
(errmsg("replication connection authorized: user=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)",
|
||||
port->user_name, SSL_get_version(port->ssl), SSL_get_cipher(port->ssl),
|
||||
@ -245,8 +245,8 @@ PerformAuthentication(Port *port)
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef USE_SSL
|
||||
if (port->ssl)
|
||||
#ifdef USE_OPENSSL
|
||||
if (port->ssl_in_use)
|
||||
ereport(LOG,
|
||||
(errmsg("connection authorized: user=%s database=%s SSL enabled (protocol=%s, cipher=%s, compression=%s)",
|
||||
port->user_name, port->database_name, SSL_get_version(port->ssl), SSL_get_cipher(port->ssl),
|
||||
|
Reference in New Issue
Block a user