|
|
|
@ -543,19 +543,21 @@ static char *_php_create_id(int *newlen TSRMLS_DC) |
|
|
|
return estrdup(buf); |
|
|
|
} |
|
|
|
|
|
|
|
static void php_session_initialize(TSRMLS_D) |
|
|
|
static int php_session_initialize(TSRMLS_D) |
|
|
|
{ |
|
|
|
char *val; |
|
|
|
int vallen; |
|
|
|
|
|
|
|
if (PS(mod)->open(&PS(mod_data), PS(save_path), PS(session_name)) == FAILURE) { |
|
|
|
php_error(E_ERROR, "Failed to initialize session module"); |
|
|
|
return; |
|
|
|
return FAILURE; |
|
|
|
} |
|
|
|
if (PS(mod)->read(&PS(mod_data), PS(id), &val, &vallen) == SUCCESS) { |
|
|
|
php_session_decode(val, vallen TSRMLS_CC); |
|
|
|
efree(val); |
|
|
|
if (PS(mod)->read(&PS(mod_data), PS(id), &val, &vallen) == FAILURE) { |
|
|
|
return FAILURE; |
|
|
|
} |
|
|
|
php_session_decode(val, vallen TSRMLS_CC); |
|
|
|
efree(val); |
|
|
|
return SUCCESS; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -946,11 +948,10 @@ static void php_session_start(TSRMLS_D) |
|
|
|
} |
|
|
|
|
|
|
|
php_session_cache_limiter(TSRMLS_C); |
|
|
|
php_session_initialize(TSRMLS_C); |
|
|
|
|
|
|
|
if (PS(mod_data) && PS(gc_probability) > 0) { |
|
|
|
if (php_session_initialize(TSRMLS_C) == SUCCESS && |
|
|
|
PS(mod_data) && PS(gc_probability) > 0) { |
|
|
|
int nrdels = -1; |
|
|
|
|
|
|
|
|
|
|
|
nrand = (int) (100.0*php_combined_lcg(TSRMLS_C)); |
|
|
|
if (nrand < PS(gc_probability)) { |
|
|
|
PS(mod)->gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels); |
|
|
|
@ -962,6 +963,7 @@ static void php_session_start(TSRMLS_D) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static zend_bool php_session_destroy(TSRMLS_D) |
|
|
|
{ |
|
|
|
zend_bool retval = SUCCESS; |
|
|
|
|