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

Commit dead92b

Browse files
committed
adapt rsocket to new infrastructure in libpq
1 parent e2555f9 commit dead92b

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/interfaces/libpq/fe-connect.c

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

23492349
/* 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;
23512353
memcpy(&conn->raddr.addr, addr_cur->ai_addr,
23522354
addr_cur->ai_addrlen);
23532355
conn->raddr.salen = addr_cur->ai_addrlen;
@@ -2538,14 +2540,13 @@ PQconnectPoll(PGconn *conn)
25382540
libpq_gettext("could not set socket to nonblocking mode: %s\n"),
25392541
SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
25402542
pqDropConnection(conn, true);
2541-
conn->addr_cur = addr_cur->ai_next;
2543+
conn->whichaddr++;
25422544
conn->isRsocket = false;
25432545
continue;
25442546
}
25452547

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;
25492550
conn->status = CONNECTION_OK;
25502551
return PGRES_POLLING_OK;
25512552
}
@@ -3632,14 +3633,12 @@ PQconnectPoll(PGconn *conn)
36323633
* Make rsocket connection.
36333634
* We go CONNECTION_NEEDED step to not copy a lot of code.
36343635
*
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.
36373638
*
36383639
* conn->addrlist should be freed in previous step.
36393640
*/
3640-
Assert(!conn->addr_cur);
3641-
3642-
conn->addr_cur = raddrs;
3641+
conn->connaddr[conn->whichaddr].rinfo = raddrs;
36433642
conn->isRsocket = true;
36443643
conn->status = CONNECTION_NEEDED;
36453644
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)