summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2024-10-02 21:30:36 +0000
committerTom Lane2024-10-02 21:30:36 +0000
commit920d51979a99df29112396b2c75da7921ba7a7b0 (patch)
treec1b1019b77b374e41ddc13abe983ce903ef4f03d
parentd94cf5ca7fad9cd81af5eac491bfbaf0facb9f6f (diff)
Parse libpq's "keepalives" option more like other integer options.
Use pqParseIntParam (nee parse_int_param) instead of using strtol directly. This allows trailing whitespace, which the previous coding didn't, and makes the spelling of the error message consistent with other similar cases. This seems to be an oversight in commit e7a221797, which introduced parse_int_param. That fixed places that were using atoi(), but missed this place which was randomly using strtol() instead. Ordinarily I'd consider this minor cleanup not worth back-patching. However, it seems that ecpg assumes it can add trailing whitespace to URL parameters, so that use of the keepalives option fails in that context. Perhaps that's worth improving as a separate matter. In the meantime, back-patch this to all supported branches. Yuto Sasaki (some further cleanup by me) Discussion: https://postgr.es/m/TY2PR01MB36286A7B97B9A15793335D18C1772@TY2PR01MB3628.jpnprd01.prod.outlook.com
-rw-r--r--src/interfaces/libpq/fe-connect.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 4094bcbcf0..64787bea51 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;
}
@@ -3084,7 +3084,7 @@ keep_going: /* We will come back to here until there is
if (usekeepalives < 0)
{
- libpq_append_conn_error(conn, "keepalives parameter must be an integer");
+ /* error is already reported */
err = 1;
}
else if (usekeepalives == 0)