keepalives.diffs
application/octet-stream
Filename: keepalives.diffs
Type: application/octet-stream
Part: 1
diff --git a/src/interfaces/ecpg/test/connect/test1.pgc b/src/interfaces/ecpg/test/connect/test1.pgc
index 961bd72ef2..28db6e4a5e 100644
--- a/src/interfaces/ecpg/test/connect/test1.pgc
+++ b/src/interfaces/ecpg/test/connect/test1.pgc
@@ -61,5 +61,9 @@ exec sql end declare section;
exec sql connect to unix:postgresql://localhost/ecpg2_regression user regress_ecpg_user1 identified by "wrongpw";
/* no disconnect necessary */
+ /* skip trailing whitespace */
+ exec sql connect to tcp:postgresql://localhost/ecpg2_regression?keepalives=1&keepalives_idle=1 as skip_trailing_whitespace user regress_ecpg_user1;
+ exec sql disconnect;
+
return 0;
}
diff --git a/src/interfaces/ecpg/test/expected/connect-test1.c b/src/interfaces/ecpg/test/expected/connect-test1.c
index ffd24e2fc8..f8f966f58d 100644
--- a/src/interfaces/ecpg/test/expected/connect-test1.c
+++ b/src/interfaces/ecpg/test/expected/connect-test1.c
@@ -120,5 +120,13 @@ main(void)
/* no disconnect necessary */
+ /* skip trailing whitespace */
+ { ECPGconnect(__LINE__, 0, "tcp:postgresql://localhost/ecpg2_regression?keepalives=1 & keepalives_idle=1" , "regress_ecpg_user1" , NULL , "skip_trailing_whitespace", 0); }
+#line 65 "test1.pgc"
+
+ { ECPGdisconnect(__LINE__, "CURRENT");}
+#line 66 "test1.pgc"
+
+
return 0;
}
diff --git a/src/interfaces/ecpg/test/expected/connect-test1.stderr b/src/interfaces/ecpg/test/expected/connect-test1.stderr
index 073951c0ed..8c27ac65f6 100644
--- a/src/interfaces/ecpg/test/expected/connect-test1.stderr
+++ b/src/interfaces/ecpg/test/expected/connect-test1.stderr
@@ -71,3 +71,7 @@
[NO_PID]: sqlca: code: -402, state: 08001
[NO_PID]: ECPGconnect: opening database ecpg2_regression on <DEFAULT> port <DEFAULT> for user regress_ecpg_user1
[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ECPGconnect: opening database ecpg2_regression on localhost port <DEFAULT> with options keepalives=1 & keepalives_idle=1 for user regress_ecpg_user1
+[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ecpg_finish: connection skip_trailing_whitespace closed
+[NO_PID]: sqlca: code: 0, state: 00000
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index d5a72587d2..67d0444317 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -2169,14 +2169,14 @@ connectFailureMessage(PGconn *conn, int errorno)
static int
useKeepalives(PGconn *conn)
{
- char *ep;
int val;
if (conn->keepalives == NULL)
return 1;
- val = strtol(conn->keepalives, &ep, 10);
- if (*ep)
+
+ if (!pqParseIntParam(conn->keepalives, &val, conn, "keepalives"))
return -1;
+
return val != 0 ? 1 : 0;
}