summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_wireprotocol.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-11-26 12:30:17 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-11-30 15:06:28 +0100
commit24a19cc232668b5b839932a120d663b903729777 (patch)
tree25904cc1dfea23deedfca9b3abbbc73c48dc459d /ext/mysqlnd/mysqlnd_wireprotocol.c
parenta0baa09b99adf4f65792e26a8af461a8fa4c97dc (diff)
downloadphp-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.c9
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);
}