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