pkgsrc/lang/php56/patches/patch-sapi_fpm_fpm_events_port.c
taca 39506d885e Add php56, PHP version 5.6.3.
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.
2014-11-24 15:37:08 +00:00

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()) {