diff --git a/repmgrd.c b/repmgrd.c index 483abe8d..137133b4 100644 --- a/repmgrd.c +++ b/repmgrd.c @@ -147,14 +147,21 @@ static void setup_event_handlers(void); static void do_daemonize(); static void check_and_create_pid_file(const char *pid_file); -#define CloseConnections() \ - if (PQisBusy(primaryConn) == 1) \ - (void) CancelQuery(primaryConn, local_options.master_response_timeout); \ - if (myLocalConn != NULL) \ - PQfinish(myLocalConn); \ - if (primaryConn != NULL && primaryConn != myLocalConn) \ +static void +CloseConnections() { + if (primaryConn != NULL && PQisBusy(primaryConn) == 1) + CancelQuery(primaryConn, local_options.master_response_timeout); + + if (myLocalConn != NULL) + PQfinish(myLocalConn); + + if (primaryConn != NULL && primaryConn != myLocalConn) PQfinish(primaryConn); + primaryConn = NULL; + myLocalConn = NULL; +} + int main(int argc, char **argv) @@ -431,10 +438,6 @@ main(int argc, char **argv) } while (true); - /* Prevent a double-free */ - if (primaryConn == myLocalConn) - myLocalConn = NULL; - /* close the connection to the database and cleanup */ CloseConnections();