summaryrefslogtreecommitdiffstats
path: root/php-bug77430.patch
blob: 17c1ad1d42e6eb44f6bcda57f2d2a8fa160d6b6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
diff --git a/sapi/fpm/fpm/fpm_stdio.c b/sapi/fpm/fpm/fpm_stdio.c
index ba8f6d8213..03d15cbf0d 100644
--- a/sapi/fpm/fpm/fpm_stdio.c
+++ b/sapi/fpm/fpm/fpm_stdio.c
@@ -122,7 +122,7 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg)
 	struct fpm_event_s *event;
 	int fifo_in = 1, fifo_out = 1;
 	int in_buf = 0;
-	int read_fail = 0, finish_log_stream = 0;
+	int read_fail = 0, finish_log_stream = 0, create_log_stream;
 	int res;
 	struct zlog_stream *log_stream;
 
@@ -138,7 +138,8 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg)
 		event = &child->ev_stderr;
 	}
 
-	if (!child->log_stream) {
+	create_log_stream = !child->log_stream;
+	if (create_log_stream) {
 		log_stream = child->log_stream = malloc(sizeof(struct zlog_stream));
 		zlog_stream_init_ex(log_stream, ZLOG_WARNING, STDERR_FILENO);
 		zlog_stream_set_decorating(log_stream, child->wp->config->decorate_workers_output);
@@ -196,8 +197,10 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg)
 	}
 
 	if (read_fail) {
-		zlog_stream_set_msg_suffix(log_stream, NULL, ", pipe is closed");
-		zlog_stream_finish(log_stream);
+		if (create_log_stream) {
+			zlog_stream_set_msg_suffix(log_stream, NULL, ", pipe is closed");
+			zlog_stream_finish(log_stream);
+		}
 		if (read_fail < 0) {
 			zlog(ZLOG_SYSERROR, "unable to read what child say");
 		}