summaryrefslogtreecommitdiff
path: root/ext/session/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/session/session.c')
-rw-r--r--ext/session/session.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/ext/session/session.c b/ext/session/session.c
index 69836bff53..0594d916c1 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -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;