diff options
| author | Bruce Momjian | 2004-10-06 09:35:23 +0000 |
|---|---|---|
| committer | Bruce Momjian | 2004-10-06 09:35:23 +0000 |
| commit | 902ca3e2255411d709a1ffa28dea9eda92425f77 (patch) | |
| tree | d802e6b82f526711585211694850cfa38eaa0297 /src/backend/postmaster | |
| parent | 5431393274dd9349490d56d9594782365ca8ddfc (diff) | |
Here is a patch to fix win32 ssl builds. Summary of changes:
* Links with -leay32 and -lssleay32 instead of crypto and ssl. On win32,
"crypto and ssl" is only used for static linking.
* Initializes SSL in the backend and not just in the postmaster. We
cannot pass the SSL context from the postmaster through the parameter
file, because it contains function pointers.
* Split one error check in be-secure.c. Previously we could not tell
which of three calls actually failed. The previous code also returned
incorrect error messages if SSL_accept() failed - that function needs to
use SSL_get_error() on the return value, can't just use the error queue.
* Since the win32 implementation uses non-blocking sockets "behind the
scenes" in order to deliver signals correctly, implements a version of
SSL_accept() that can handle this. Also, add a wait function in case
SSL_read or SSL_write() needs more data.
Magnus Hagander
Diffstat (limited to 'src/backend/postmaster')
| -rw-r--r-- | src/backend/postmaster/postmaster.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index c329c12d25d..34d71483ef5 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.425 2004/09/09 00:59:33 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.426 2004/10/06 09:35:21 momjian Exp $ * * NOTES * @@ -2981,6 +2981,16 @@ SubPostmasterMain(int argc, char *argv[]) /* Attach process to shared segments */ CreateSharedMemoryAndSemaphores(false, MaxBackends, 0); +#ifdef USE_SSL + /* + * Need to reinitialize the SSL library in the backend, + * since the context structures contain function pointers + * and cannot be passed through the parameter file. + */ + if (EnableSSL) + secure_initialize(); +#endif + Assert(argc == 3); /* shouldn't be any more args */ proc_exit(BackendRun(&port)); } |
