@@ -2347,7 +2347,9 @@ PQconnectPoll(PGconn *conn)
2347
2347
}
2348
2348
2349
2349
/* Remember current address for possible error msg */
2350
- addr_cur = conn -> connaddr [conn -> whichaddr ].info ;
2350
+ addr_cur = !conn -> isRsocket ?
2351
+ conn -> connaddr [conn -> whichaddr ].info :
2352
+ conn -> connaddr [conn -> whichaddr ].rinfo ;
2351
2353
memcpy (& conn -> raddr .addr , addr_cur -> ai_addr ,
2352
2354
addr_cur -> ai_addrlen );
2353
2355
conn -> raddr .salen = addr_cur -> ai_addrlen ;
@@ -2538,14 +2540,13 @@ PQconnectPoll(PGconn *conn)
2538
2540
libpq_gettext ("could not set socket to nonblocking mode: %s\n" ),
2539
2541
SOCK_STRERROR (SOCK_ERRNO , sebuf , sizeof (sebuf )));
2540
2542
pqDropConnection (conn , true);
2541
- conn -> addr_cur = addr_cur -> ai_next ;
2543
+ conn -> whichaddr ++ ;
2542
2544
conn -> isRsocket = false;
2543
2545
continue ;
2544
2546
}
2545
2547
2546
- pg_freeaddrinfo_all (AF_UNSPEC , conn -> addr_cur );
2547
- conn -> addr_cur = NULL ;
2548
-
2548
+ pg_freeaddrinfo_all (AF_UNSPEC , conn -> connaddr [conn -> whichaddr ].rinfo );
2549
+ conn -> connaddr [conn -> whichaddr ].rinfo = NULL ;
2549
2550
conn -> status = CONNECTION_OK ;
2550
2551
return PGRES_POLLING_OK ;
2551
2552
}
@@ -3632,14 +3633,12 @@ PQconnectPoll(PGconn *conn)
3632
3633
* Make rsocket connection.
3633
3634
* We go CONNECTION_NEEDED step to not copy a lot of code.
3634
3635
*
3635
- * conn->addr_cur stores rsocket addrinfo. It is necessary to
3636
- * free it after connection.
3636
+ * pg_conn_addr.rinfo stores rsocket addrinfo. It is necessary
3637
+ * to free it after connection.
3637
3638
*
3638
3639
* conn->addrlist should be freed in previous step.
3639
3640
*/
3640
- Assert (!conn -> addr_cur );
3641
-
3642
- conn -> addr_cur = raddrs ;
3641
+ conn -> connaddr [conn -> whichaddr ].rinfo = raddrs ;
3643
3642
conn -> isRsocket = true;
3644
3643
conn -> status = CONNECTION_NEEDED ;
3645
3644
goto keep_going ;
0 commit comments