summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Conway2017-03-11 21:33:14 +0000
committerJoe Conway2017-03-11 21:33:14 +0000
commit166dfb3a903eee25637b846a87a4a63c67d5e796 (patch)
treee4bcf6be1a0123d069325ba19d396307721cbf4e
parent64d132c2997ec5972827bd0ae186ca967492ce51 (diff)
Fix ancient connection leak in dblink
When using unnamed connections with dblink, every time a new connection is made, the old one is leaked. Fix that. This has been an issue probably since dblink was first committed. Someone complained almost ten years ago, but apparently I decided not to pursue it at the time, and neither did anyone else, so it slipped between the cracks. Now that someone else has complained, fix in all supported branches. Discussion: (orig) https://postgr.es/m/flat/F680AB59-6D6F-4026-9599-1BE28880273D%40decibel.org#F680AB59-6D6F-4026-9599-1BE28880273D@decibel.org Discussion: (new) https://postgr.es/m/flat/0A3221C70F24FB45833433255569204D1F6ADF8C@G01JPEXMBYT05 Reported by: Jim Nasby and Takayuki Tsunakawa
-rw-r--r--contrib/dblink/dblink.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index 38b46b04f0a..85ba2a8d1ad 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -301,7 +301,11 @@ dblink_connect(PG_FUNCTION_ARGS)
createNewConnection(connname, rconn);
}
else
+ {
+ if (pconn->conn)
+ PQfinish(pconn->conn);
pconn->conn = conn;
+ }
PG_RETURN_TEXT_P(cstring_to_text("OK"));
}