diff options
Diffstat (limited to 'src/sp_session.c')
| -rw-r--r-- | src/sp_session.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sp_session.c b/src/sp_session.c index bd11557..22b6688 100644 --- a/src/sp_session.c +++ b/src/sp_session.c | |||
| @@ -93,6 +93,16 @@ static void sp_hook_session_module() { | |||
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | static PHP_INI_MH(sp_OnUpdateSaveHandler) { | 95 | static PHP_INI_MH(sp_OnUpdateSaveHandler) { |
| 96 | #if PHP_VERSION_ID < 70100 | ||
| 97 | /* PHP7.0 doesn't handle well recusively set session handlers */ | ||
| 98 | if (stage == PHP_INI_STAGE_RUNTIME && | ||
| 99 | SESSION_G(session_status) == php_session_none && s_original_mod && | ||
| 100 | zend_string_equals_literal(new_value, "user") == 0 && | ||
| 101 | strcmp(((ps_module *)s_original_mod)->s_name, "user") == 0) { | ||
| 102 | return SUCCESS; | ||
| 103 | } | ||
| 104 | #endif | ||
| 105 | |||
| 96 | SESSION_G(mod) = s_original_mod; | 106 | SESSION_G(mod) = s_original_mod; |
| 97 | 107 | ||
| 98 | int r = old_OnUpdateSaveHandler(entry, new_value, mh_arg1, mh_arg2, mh_arg3, | 108 | int r = old_OnUpdateSaveHandler(entry, new_value, mh_arg1, mh_arg2, mh_arg3, |
