diff --git a/src/bin/pg_rewind/pg_rewind.c b/src/bin/pg_rewind/pg_rewind.c
index 9d16c1e6b4..d77a46b3ff 100644
--- a/src/bin/pg_rewind/pg_rewind.c
+++ b/src/bin/pg_rewind/pg_rewind.c
@@ -307,8 +307,15 @@ main(int argc, char **argv)
 	{
 		conn = PQconnectdb(connstr_source);
 
+		if (conn == NULL)
+			pg_fatal("could not connect to server");
+
 		if (PQstatus(conn) == CONNECTION_BAD)
-			pg_fatal("%s", PQerrorMessage(conn));
+		{
+			pg_log_error("%s", PQerrorMessage(conn));
+			PQfinish(conn);
+			pg_fatal("could not connect to server");
+		}
 
 		if (showprogress)
 			pg_log_info("connected to server");
