Fix bugs in libpq's management of GSS encryption state.
authorTom Lane
Mon, 13 Jul 2020 15:57:55 +0000 (11:57 -0400)
committerTom Lane
Mon, 13 Jul 2020 15:58:09 +0000 (11:58 -0400)
commit8e6f134a9a8db52cbd2818ce8a60b9e5cdadfc8f
tree8f1755cb9d0e3dc3028a826608eb99be2778778b
parentae290059e1aa5bc2272a0345184bcf05407f69a4
Fix bugs in libpq's management of GSS encryption state.

GSS-related resources should be cleaned up in pqDropConnection,
not freePGconn, else the wrong things happen when resetting
a connection or trying to switch to a different server.
It's also critical to reset conn->gssenc there.

During connection setup, initialize conn->try_gss at the correct
place, else switching to a different server won't work right.

Remove now-redundant cleanup of GSS resources around one (and, for
some reason, only one) pqDropConnection call in connectDBStart.

Per report from Kyotaro Horiguchi that psql would freeze up,
rather than successfully resetting a GSS-encrypted connection
after a server restart.

This is YA oversight in commit b0b39f72b, so back-patch to v12.

Discussion: https://postgr.es/m/20200710.173803.435804731896516388[email protected]
src/interfaces/libpq/fe-connect.c