summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSATO Kentaro <kentaro@ranvis.com>2019-12-18 02:36:03 +0900
committerNikita Popov <nikita.ppv@gmail.com>2019-12-20 12:05:17 +0100
commit37d11d123e4b8952bf973e372c4062f6d0a7bca8 (patch)
tree265db3f3ae02c794e8278a38ec2735e472c6d1c7
parent7e39e6934d7eb3f480a467de7d9fbca608fc1e94 (diff)
downloadphp-git-37d11d123e4b8952bf973e372c4062f6d0a7bca8.tar.gz
Fix #78982: pdo_pgsql returns dead persistent connection
Call PQconsumeInput() before PQstatus() to update the status.
-rw-r--r--NEWS2
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index e38899f70e..5f70bd1ae0 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,8 @@ PHP NEWS
Kentarō)
. Fixed bug #78980 (pgsqlGetNotify() overlooks dead connection). (SATŌ
Kentarō)
+ . Fixed bug #78982 (pdo_pgsql returns dead persistent connection). (SATŌ
+ Kentarō)
18 Dec 2019, PHP 7.3.13
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index 1be0a6146e..89dd55167e 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -479,7 +479,7 @@ static int pdo_pgsql_get_attribute(pdo_dbh_t *dbh, zend_long attr, zval *return_
static int pdo_pgsql_check_liveness(pdo_dbh_t *dbh)
{
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
- if (PQstatus(H->server) == CONNECTION_BAD) {
+ if (!PQconsumeInput(H->server) || PQstatus(H->server) == CONNECTION_BAD) {
PQreset(H->server);
}
return (PQstatus(H->server) == CONNECTION_OK) ? SUCCESS : FAILURE;