mirror of
https://github.com/php/php-src.git
synced 2024-09-25 11:57:26 +00:00
Revert "Revert "Merge RFC https://wiki.php.net/rfc/session-create-id""
This reverts commit 663f1c8fb0
.
This commit is contained in:
parent
7505eaf6fa
commit
b36ae7467e
@ -2014,7 +2014,6 @@ static PHP_FUNCTION(session_regenerate_id)
|
||||
|
||||
/* {{{ proto void session_create_id([string prefix])
|
||||
Generate new session ID. Intended for user save handlers. */
|
||||
#if 0
|
||||
/* This is not used yet */
|
||||
static PHP_FUNCTION(session_create_id)
|
||||
{
|
||||
@ -2036,7 +2035,20 @@ static PHP_FUNCTION(session_create_id)
|
||||
}
|
||||
|
||||
if (PS(session_status) == php_session_active) {
|
||||
new_id = PS(mod)->s_create_sid(&PS(mod_data));
|
||||
int limit = 3;
|
||||
while (limit--) {
|
||||
new_id = PS(mod)->s_create_sid(&PS(mod_data));
|
||||
if (!PS(mod)->s_validate_sid) {
|
||||
break;
|
||||
} else {
|
||||
/* Detect collision and retry */
|
||||
if (PS(mod)->s_validate_sid(&PS(mod_data), new_id) == FAILURE) {
|
||||
zend_string_release(new_id);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
new_id = php_session_create_id(NULL);
|
||||
}
|
||||
@ -2051,9 +2063,7 @@ static PHP_FUNCTION(session_create_id)
|
||||
}
|
||||
smart_str_0(&id);
|
||||
RETVAL_NEW_STR(id.s);
|
||||
smart_str_free(&id);
|
||||
}
|
||||
#endif
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto string session_cache_limiter([string new_cache_limiter])
|
||||
@ -2324,6 +2334,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_session_id, 0, 0, 0)
|
||||
ZEND_ARG_INFO(0, id)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_session_create_id, 0, 0, 0)
|
||||
ZEND_ARG_INFO(0, prefix)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_session_regenerate_id, 0, 0, 0)
|
||||
ZEND_ARG_INFO(0, delete_old_session)
|
||||
ZEND_END_ARG_INFO()
|
||||
@ -2408,6 +2422,7 @@ static const zend_function_entry session_functions[] = {
|
||||
PHP_FE(session_module_name, arginfo_session_module_name)
|
||||
PHP_FE(session_save_path, arginfo_session_save_path)
|
||||
PHP_FE(session_id, arginfo_session_id)
|
||||
PHP_FE(session_create_id, arginfo_session_create_id)
|
||||
PHP_FE(session_regenerate_id, arginfo_session_regenerate_id)
|
||||
PHP_FE(session_decode, arginfo_session_decode)
|
||||
PHP_FE(session_encode, arginfo_session_void)
|
||||
|
Loading…
Reference in New Issue
Block a user