|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
Patch patch-sapi_fpm_fpm_events_port.c for FPM related Bug #65800Patch version 2014-06-13 12:58 UTC Return to Bug #65800 | Download this patchThis patch is obsolete Obsoleted by patches: Patch Revisions:Developer: filip@hajny.net
--- sapi/fpm/fpm/events/port.c.orig 2013-09-18 05:48:57.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()) {
|
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Nov 04 20:00:01 2025 UTC |