Fix another segmentation fault.
authorTatsuo Ishii <ishii@postgresql.org>
Mon, 22 Jul 2024 10:32:41 +0000 (19:32 +0900)
committerTatsuo Ishii <ishii@postgresql.org>
Mon, 22 Jul 2024 10:32:41 +0000 (19:32 +0900)
commit8919eff90da2f20c27cd54b89653924ba18a6922
tree37e03360e05b6c80bf5033b42aaf18f4f28af792
parentc2ceed29098369b3b52f02affe5a0123bdc0758e
Fix another segmentation fault.

It is reported that pgpool child segfaulted in pool_do_auth. The cause
was MAIN_CONNECTION() returns NULL. It seems my_main_node_id was set
to incorrect node id 0, which was actually in down status. thus there
was no connection in cp->slots[0]. In this particular case a client
connected to pgpool while failover occurred in another pgpool node,
and it was propagated by watchdog, which changed backend_status in
shared memory. new_connection() properly updates my_backend_status but
it forgot to update my_main_node_id, and MAIN_CONNECTION returned
incorrect backend id.

Problem reported by: Emond Papegaaij
Discussion: [pgpool-general: 9175] Segmentation fault
https://www.pgpool.net/pipermail/pgpool-general/2024-July/001852.html
Backpatch-through: V4.1.
src/protocol/pool_connection_pool.c