summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/php_streams.h4
-rw-r--r--main/streams/plain_wrapper.c8
-rw-r--r--main/streams/xp_socket.c9
3 files changed, 16 insertions, 5 deletions
diff --git a/main/php_streams.h b/main/php_streams.h
index 73740a7a79..6d6c73bb95 100644
--- a/main/php_streams.h
+++ b/main/php_streams.h
@@ -181,6 +181,10 @@ struct _php_stream_wrapper {
#define PHP_STREAM_FLAG_NO_FCLOSE 0x80
+/* Suppress generation of PHP warnings on stream read/write errors.
+ * Currently for internal use only. */
+#define PHP_STREAM_FLAG_SUPPRESS_ERRORS 0x100
+
#define PHP_STREAM_FLAG_WAS_WRITTEN 0x80000000
struct _php_stream {
diff --git a/main/streams/plain_wrapper.c b/main/streams/plain_wrapper.c
index 8a891ddf72..e3eda978d8 100644
--- a/main/streams/plain_wrapper.c
+++ b/main/streams/plain_wrapper.c
@@ -358,7 +358,9 @@ static ssize_t php_stdiop_write(php_stream *stream, const char *buf, size_t coun
/* TODO: Should this be treated as a proper error or not? */
return bytes_written;
}
- php_error_docref(NULL, E_NOTICE, "Write of %zu bytes failed with errno=%d %s", count, errno, strerror(errno));
+ if (!(stream->flags & PHP_STREAM_FLAG_SUPPRESS_ERRORS)) {
+ php_error_docref(NULL, E_NOTICE, "Write of %zu bytes failed with errno=%d %s", count, errno, strerror(errno));
+ }
}
return bytes_written;
} else {
@@ -426,7 +428,9 @@ static ssize_t php_stdiop_read(php_stream *stream, char *buf, size_t count)
} else if (errno == EINTR) {
/* TODO: Should this be treated as a proper error or not? */
} else {
- php_error_docref(NULL, E_NOTICE, "Read of %zu bytes failed with errno=%d %s", count, errno, strerror(errno));
+ if (!(stream->flags & PHP_STREAM_FLAG_SUPPRESS_ERRORS)) {
+ php_error_docref(NULL, E_NOTICE, "Read of %zu bytes failed with errno=%d %s", count, errno, strerror(errno));
+ }
/* TODO: Remove this special-case? */
if (errno != EBADF) {
diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c
index f3370e89f7..a369bf5ff2 100644
--- a/main/streams/xp_socket.c
+++ b/main/streams/xp_socket.c
@@ -103,10 +103,13 @@ retry:
}
}
- estr = php_socket_strerror(err, NULL, 0);
- php_error_docref(NULL, E_NOTICE, "Send of " ZEND_LONG_FMT " bytes failed with errno=%d %s",
+ if (!(stream->flags & PHP_STREAM_FLAG_SUPPRESS_ERRORS)) {
+ estr = php_socket_strerror(err, NULL, 0);
+ php_error_docref(NULL, E_NOTICE,
+ "Send of " ZEND_LONG_FMT " bytes failed with errno=%d %s",
(zend_long)count, err, estr);
- efree(estr);
+ efree(estr);
+ }
}
if (didwrite > 0) {