Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e4e3997

Browse files
committed
Merge branch 'PGPROEE10_libpq' of gitlab.postgrespro.ru:pgpro-dev/postgrespro into PGPROEE10_libpq
2 parents 71b05a7 + 0ba3f4b commit e4e3997

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/interfaces/libpq/fe-connect.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2347,7 +2347,13 @@ PQconnectPoll(PGconn *conn)
23472347
}
23482348

23492349
/* 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
23502355
addr_cur = conn->connaddr[conn->whichaddr].info;
2356+
#endif
23512357
memcpy(&conn->raddr.addr, addr_cur->ai_addr,
23522358
addr_cur->ai_addrlen);
23532359
conn->raddr.salen = addr_cur->ai_addrlen;
@@ -2538,14 +2544,13 @@ PQconnectPoll(PGconn *conn)
25382544
libpq_gettext("could not set socket to nonblocking mode: %s\n"),
25392545
SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
25402546
pqDropConnection(conn, true);
2541-
conn->addr_cur = addr_cur->ai_next;
2547+
conn->whichaddr++;
25422548
conn->isRsocket = false;
25432549
continue;
25442550
}
25452551

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;
25492554
conn->status = CONNECTION_OK;
25502555
return PGRES_POLLING_OK;
25512556
}
@@ -3632,14 +3637,12 @@ PQconnectPoll(PGconn *conn)
36323637
* Make rsocket connection.
36333638
* We go CONNECTION_NEEDED step to not copy a lot of code.
36343639
*
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.
36373642
*
36383643
* conn->addrlist should be freed in previous step.
36393644
*/
3640-
Assert(!conn->addr_cur);
3641-
3642-
conn->addr_cur = raddrs;
3645+
conn->connaddr[conn->whichaddr].rinfo = raddrs;
36433646
conn->isRsocket = true;
36443647
conn->status = CONNECTION_NEEDED;
36453648
goto keep_going;

src/interfaces/libpq/libpq-int.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,9 @@ typedef struct pg_conn_host
319319
typedef struct pg_conn_address
320320
{
321321
struct addrinfo *info;
322+
#ifdef WITH_RSOCKET
323+
struct addrinfo *rinfo; /* rsocket addrinfo */
324+
#endif
322325
int hostidx; /* host index in connhost array */
323326
} pg_conn_address;
324327

0 commit comments

Comments
 (0)