diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-11-26 12:30:17 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-11-30 15:06:28 +0100 |
commit | 24a19cc232668b5b839932a120d663b903729777 (patch) | |
tree | 25904cc1dfea23deedfca9b3abbbc73c48dc459d /ext/mysqlnd/mysqlnd_wireprotocol.c | |
parent | a0baa09b99adf4f65792e26a8af461a8fa4c97dc (diff) | |
download | php-git-24a19cc232668b5b839932a120d663b903729777.tar.gz |
Suppress stream errors in mysqlnd
mysqlnd currently sets error_reporting=0 to suppress errors while
writing to streams. Unfortunately these errors are still visible
to userland error handlers, which is a source of confusion.
See for example https://bugs.php.net/bug.php?id=80412.
Instead add a stream flag that suppresses the emission of
read/write errors in the first place, and set it in mysqlnd.
I think it might be useful to have this option for userland as
well in the future, but for now this is just an internal
mechanism.
Closes GH-6458.
Diffstat (limited to 'ext/mysqlnd/mysqlnd_wireprotocol.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd_wireprotocol.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index e11d42d8bd..33a000d9a6 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -971,7 +971,6 @@ size_t php_mysqlnd_cmd_write(MYSQLND_CONN_DATA * conn, void * _packet) MYSQLND_VIO * vio = conn->vio; MYSQLND_STATS * stats = conn->stats; MYSQLND_CONNECTION_STATE * connection_state = &conn->state; - const unsigned int error_reporting = EG(error_reporting); size_t sent = 0; DBG_ENTER("php_mysqlnd_cmd_write"); @@ -981,10 +980,6 @@ size_t php_mysqlnd_cmd_write(MYSQLND_CONN_DATA * conn, void * _packet) */ pfc->data->m.reset(pfc, stats, error_info); - if (error_reporting) { - EG(error_reporting) = 0; - } - MYSQLND_INC_CONN_STATISTIC(stats, STAT_PACKETS_SENT_CMD); #ifdef MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND @@ -1017,10 +1012,6 @@ size_t php_mysqlnd_cmd_write(MYSQLND_CONN_DATA * conn, void * _packet) } } end: - if (error_reporting) { - /* restore error reporting */ - EG(error_reporting) = error_reporting; - } if (!sent) { SET_CONNECTION_STATE(connection_state, CONN_QUIT_SENT); } |