39506d885e
THe main features of PHP 5.6: * Constant scalar expressions. * Variadic functions and argument unpacking using the ... operator. * Exponentiation using the ** operator. * Function and constant importing with the use keyword. * phpdbg as an interactive integrated debugger SAPI. * php://input is now reusable, and $HTTP_RAW_POST_DATA is deprecated. * GMP objects now support operator overloading. * File uploads larger than 2 gigabytes in size are now accepted. Please refer for difference from oldre release:http://php.net/migration56.
47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
$NetBSD: patch-sapi_fpm_fpm_events_port.c,v 1.1 2014/11/24 15:37:08 taca Exp $
|
|
|
|
Fix code to make FPM intercept signals properly even with pipes (via catch_workers_output=yes).
|
|
See https://bugs.php.net/bug.php?id=65800.
|
|
--- sapi/fpm/fpm/events/port.c.orig 2014-11-12 13:52:21.000000000 +0000
|
|
+++ sapi/fpm/fpm/events/port.c
|
|
@@ -124,6 +124,7 @@ static int fpm_event_port_wait(struct fp
|
|
t.tv_nsec = (timeout % 1000) * 1000 * 1000;
|
|
|
|
/* wait for inconming event or timeout. We want at least one event or timeout */
|
|
+again:
|
|
nget = 1;
|
|
ret = port_getn(pfd, events, nevents, &nget, &t);
|
|
if (ret < 0) {
|
|
@@ -133,17 +134,31 @@ static int fpm_event_port_wait(struct fp
|
|
zlog(ZLOG_WARNING, "poll() returns %d", errno);
|
|
return -1;
|
|
}
|
|
+
|
|
+ if (errno == EINTR)
|
|
+ goto again;
|
|
+
|
|
+ return 0;
|
|
}
|
|
|
|
for (i = 0; i < nget; i++) {
|
|
+ struct fpm_event_s *ev;
|
|
|
|
/* do we have a ptr to the event ? */
|
|
if (!events[i].portev_user) {
|
|
continue;
|
|
}
|
|
|
|
+ ev = (struct fpm_event_s *)events[i].portev_user;
|
|
+
|
|
+ if (port_associate(pfd, PORT_SOURCE_FD,
|
|
+ ev->fd, POLLIN, (void *)ev) < 0) {
|
|
+ zlog(ZLOG_ERROR, "port: unable to add the event");
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
/* fire the event */
|
|
- fpm_event_fire((struct fpm_event_s *)events[i].portev_user);
|
|
+ fpm_event_fire(ev);
|
|
|
|
/* sanity check */
|
|
if (fpm_globals.parent_pid != getpid()) {
|