Skip to content

Commit

Permalink
Added possiblity to avoid signal handlers reinitialization on each re…
Browse files Browse the repository at this point in the history
…quest.
  • Loading branch information
dstogov committed Nov 14, 2018
1 parent 8bda225 commit 53ea09e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
7 changes: 5 additions & 2 deletions Zend/zend_signal.c
Expand Up @@ -322,8 +322,10 @@ void zend_signal_activate(void)

memcpy(&SIGG(handlers), &global_orig_handlers, sizeof(global_orig_handlers));

for (x = 0; x < sizeof(zend_sigs) / sizeof(*zend_sigs); x++) {
zend_signal_register(zend_sigs[x], zend_signal_handler_defer);
if (SIGG(reset)) {
for (x = 0; x < sizeof(zend_sigs) / sizeof(*zend_sigs); x++) {
zend_signal_register(zend_sigs[x], zend_signal_handler_defer);
}
}

SIGG(active) = 1;
Expand Down Expand Up @@ -365,6 +367,7 @@ static void zend_signal_globals_ctor(zend_signal_globals_t *zend_signal_globals)
size_t x;

memset(zend_signal_globals, 0, sizeof(*zend_signal_globals));
zend_signal_globals->reset = 1;

for (x = 0; x < sizeof(zend_signal_globals->pstorage) / sizeof(*zend_signal_globals->pstorage); ++x) {
zend_signal_queue_t *queue = &zend_signal_globals->pstorage[x];
Expand Down
1 change: 1 addition & 0 deletions Zend/zend_signal.h
Expand Up @@ -59,6 +59,7 @@ typedef struct _zend_signal_globals_t {
int running; /* in signal handler execution */
int active; /* internal signal handling is enabled */
zend_bool check; /* check for replaced handlers on shutdown */
zend_bool reset; /* reset signal handlers on each request */
zend_signal_entry_t handlers[NSIG];
zend_signal_queue_t pstorage[ZEND_SIGNAL_QUEUE_SIZE], *phead, *ptail, *pavail; /* pending queue */
} zend_signal_globals_t;
Expand Down

0 comments on commit 53ea09e

Please sign in to comment.