Fix connection leak in dblink when dblink_connect() or dblink_connect_u()
authorItagaki Takahiro <itagaki.takahiro@gmail.com>
Wed, 9 Jun 2010 01:00:50 +0000 (01:00 +0000)
committerItagaki Takahiro <itagaki.takahiro@gmail.com>
Wed, 9 Jun 2010 01:00:50 +0000 (01:00 +0000)
end with "duplicate connection name" errors.

Backported to release 7.4.

contrib/dblink/dblink.c

index 18271b24f76ed73ad466abf8284b12f2f946af02..0bea6487ec3fa17fce196c01a0d4e2dc9c4dfce0 100644 (file)
@@ -1980,9 +1980,14 @@ createNewConnection(const char *name, remoteConn * con)
                 errmsg("out of memory")));
 
    if (found)
+   {
+       PQfinish(rconn->conn);
+       pfree(rconn);
+
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_OBJECT),
                 errmsg("duplicate connection name")));
+   }
 
    hentry->rcon = con;
    strncpy(hentry->name, name, NAMEDATALEN - 1);