libpq: Fix inadvertent change in PQhost() behavior.
authorRobert Haas <rhaas@postgresql.org>
Thu, 1 Dec 2016 19:36:39 +0000 (14:36 -0500)
committerRobert Haas <rhaas@postgresql.org>
Thu, 1 Dec 2016 19:36:39 +0000 (14:36 -0500)
Commit 274bb2b3857cc987cfa21d14775cae9b0dababa5 caused PQhost() to
return the value of the hostaddr parameter rather than the relevant
host when the latter parameter was specified.  That's wrong.  Commit
9a1d0af4ad2cbd419115b453d811c141b80d872b then amplified the damage by
using PQhost() in more places, so that the SSL test suite started
failing.

Report by Andreas Karlsson; patch by me.

src/interfaces/libpq/fe-connect.c

index cd96ddb2f07a707664de341bdcb78a4a1c86c0ca..3b9b263a394f8d29f6b09aadd5c930847c6bf6a4 100644 (file)
@@ -5736,7 +5736,8 @@ PQhost(const PGconn *conn)
 {
        if (!conn)
                return NULL;
-       if (conn->connhost != NULL)
+       if (conn->connhost != NULL &&
+               conn->connhost[conn->whichhost].type != CHT_HOST_ADDRESS)
                return conn->connhost[conn->whichhost].host;
        else if (conn->pghost != NULL && conn->pghost[0] != '\0')
                return conn->pghost;