Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions UPGRADING.INTERNALS
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ PHP 8.6 INTERNALS UPGRADE NOTES

- ext/session:
. php_session_flush() now returns a bool rather than a zend_result.
. The mod_user_names global has been removed.
. The mod_user_uses_object_methods_as_handlers global has been added,
it indicates whether the session handlers are methods of an object or not.
. Removed session_adapt_url().
. PS_OPEN_ARGS is now defined as
`void **mod_data, zend_string *save_path, zend_string *session_name`
Expand Down
27 changes: 14 additions & 13 deletions ext/session/php_session.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,19 @@ typedef struct _php_ps_globals {
bool cookie_secure;
bool cookie_httponly;
bool cookie_partitioned;
bool use_cookies;
bool use_only_cookies;
bool send_cookie;
bool auto_start;
bool define_sid;
const ps_module *mod;
const ps_module *default_mod;
void *mod_data;
php_session_status session_status;
bool use_strict_mode; /* whether or not PHP accepts unknown session ids */
bool lazy_write; /* omit session write when it is possible */
bool in_save_handler; /* state if session is in save handler or not */
bool set_handler; /* state if session module i setting handler or not */
zend_string *session_started_filename;
uint32_t session_started_lineno;
int module_number;
Expand All @@ -157,15 +166,8 @@ typedef struct _php_ps_globals {
zval ps_validate_sid;
zval ps_update_timestamp;
} mod_user_names;
bool mod_user_implemented;
bool mod_user_is_open;
bool auto_start;
bool use_cookies;
bool use_only_cookies;
bool use_trans_sid; /* contains the INI value of whether to use trans-sid */
bool send_cookie;
bool define_sid;

zend_string *session_vars; /* serialized original session data */
const struct ps_serializer_struct *serializer;
zval http_session_vars;

Expand All @@ -180,11 +182,10 @@ typedef struct _php_ps_globals {
bool rfc1867_enabled; /* session.upload_progress.enabled */
bool rfc1867_cleanup; /* session.upload_progress.cleanup */

bool use_strict_mode; /* whether or not PHP accepts unknown session ids */
bool lazy_write; /* omit session write when it is possible */
bool in_save_handler; /* state if session is in save handler or not */
bool set_handler; /* state if session module i setting handler or not */
zend_string *session_vars; /* serialized original session data */
bool mod_user_implemented;
bool mod_user_is_open;
bool mod_user_uses_object_methods_as_handlers;
bool use_trans_sid; /* contains the INI value of whether to use trans-sid */
} php_ps_globals;

typedef php_ps_globals zend_ps_globals;
Expand Down
4 changes: 4 additions & 0 deletions ext/session/session.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ static inline void php_rinit_session_globals(void)
PS(set_handler) = false;
PS(mod_data) = NULL;
PS(mod_user_is_open) = false;
PS(mod_user_uses_object_methods_as_handlers) = false;
PS(define_sid) = true;
PS(session_vars) = NULL;
PS(module_number) = my_module_number;
Expand Down Expand Up @@ -2126,6 +2127,7 @@ PHP_FUNCTION(session_set_save_handler)
zend_string_release_ex(validate_sid_name, false);
zend_string_release_ex(update_timestamp_name, false);

PS(mod_user_uses_object_methods_as_handlers) = true;
if (register_shutdown) {
/* create shutdown function */
php_shutdown_function_entry shutdown_function_entry = {
Expand Down Expand Up @@ -2217,6 +2219,7 @@ PHP_FUNCTION(session_set_save_handler)
SESSION_SET_USER_HANDLER_PROCEDURAL_OPTIONAL(ps_validate_sid, validate_id_fci);
SESSION_SET_USER_HANDLER_PROCEDURAL_OPTIONAL(ps_update_timestamp, update_timestamp_fci);

PS(mod_user_uses_object_methods_as_handlers) = false;
RETURN_TRUE;
}

Expand Down Expand Up @@ -2843,6 +2846,7 @@ static PHP_GINIT_FUNCTION(ps)
ps_globals->default_mod = NULL;
ps_globals->mod_user_implemented = false;
ps_globals->mod_user_is_open = false;
ps_globals->mod_user_uses_object_methods_as_handlers = false;
ps_globals->session_vars = NULL;
ps_globals->set_handler = false;
ps_globals->session_started_filename = NULL;
Expand Down
Loading