* Andres Freund ([email protected]) wrote: > It seems slightly cleaner to just move the pqsecure_destroy(); to the > end of that function, based on a boolean. But if you think otherwise, I > won't protest...
Hmm, agreed; I had originally been concerned that the SIGPIPE madness
needed to be around the pqsecure_destroy() call, but I can't see why
that would be.
I've run through a few times w/ the attached and haven't seen the
deadlock. Will continue testing, of course.
Heikki, any thoughts regarding this change? Any concerns about
back-patching it?
Thanks,
Stephen
diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c new file mode 100644 index 3bd0113..ca2c5e4 100644 *** a/src/interfaces/libpq/fe-secure.c --- b/src/interfaces/libpq/fe-secure.c *************** close_SSL(PGconn *conn) *** 1545,1551 **** SSL_shutdown(conn->ssl); SSL_free(conn->ssl); conn->ssl = NULL; - pqsecure_destroy(); /* We have to assume we got EPIPE */ REMEMBER_EPIPE(spinfo, true); RESTORE_SIGPIPE(conn, spinfo); --- 1545,1550 ---- *************** close_SSL(PGconn *conn) *** 1565,1570 **** --- 1564,1572 ---- conn->engine = NULL; } #endif + + if (conn->ssl) + pqsecure_destroy(); } /*
signature.asc
Description: Digital signature
