summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/session/mod_files.c13
-rw-r--r--ext/session/mod_user.c13
-rw-r--r--ext/session/session.c27
3 files changed, 25 insertions, 28 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index 322d3cc3cf..9ca57b7eac 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -123,10 +123,9 @@ static void ps_files_close(ps_files *data)
}
}
-static void ps_files_open(ps_files *data, const char *key)
+static void ps_files_open(ps_files *data, const char *key TSRMLS_DC)
{
char buf[MAXPATHLEN];
- TSRMLS_FETCH();
if (data->fd < 0 || !data->lastkey || strcmp(key, data->lastkey)) {
if (data->lastkey) {
@@ -159,7 +158,7 @@ static void ps_files_open(ps_files *data, const char *key)
}
}
-static int ps_files_cleanup_dir(const char *dirname, int maxlifetime)
+static int ps_files_cleanup_dir(const char *dirname, int maxlifetime TSRMLS_DC)
{
DIR *dir;
char dentry[sizeof(struct dirent) + MAXPATHLEN];
@@ -169,7 +168,6 @@ static int ps_files_cleanup_dir(const char *dirname, int maxlifetime)
time_t now;
int nrdels = 0;
size_t dirname_len;
- TSRMLS_FETCH();
dir = opendir(dirname);
if (!dir) {
@@ -254,7 +252,7 @@ PS_READ_FUNC(files)
struct stat sbuf;
PS_FILES_DATA;
- ps_files_open(data, key);
+ ps_files_open(data, key TSRMLS_CC);
if (data->fd < 0)
return FAILURE;
@@ -283,7 +281,7 @@ PS_WRITE_FUNC(files)
long n;
PS_FILES_DATA;
- ps_files_open(data, key);
+ ps_files_open(data, key TSRMLS_CC);
if (data->fd < 0)
return FAILURE;
@@ -314,7 +312,6 @@ PS_DESTROY_FUNC(files)
{
char buf[MAXPATHLEN];
PS_FILES_DATA;
- TSRMLS_FETCH();
if (!ps_files_path_create(buf, sizeof(buf), data, key))
return FAILURE;
@@ -337,7 +334,7 @@ PS_GC_FUNC(files)
an external entity (i.e. find -ctime x | xargs rm) */
if (data->dirdepth == 0)
- *nrdels = ps_files_cleanup_dir(data->basedir, maxlifetime);
+ *nrdels = ps_files_cleanup_dir(data->basedir, maxlifetime TSRMLS_CC);
return SUCCESS;
}
diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c
index 3f36cb206b..0f9ba4fdd4 100644
--- a/ext/session/mod_user.c
+++ b/ext/session/mod_user.c
@@ -51,11 +51,10 @@ ps_module ps_mod_user = {
}
-static zval *ps_call_handler(zval *func, int argc, zval **argv)
+static zval *ps_call_handler(zval *func, int argc, zval **argv TSRMLS_DC)
{
int i;
zval *retval = NULL;
- TSRMLS_FETCH();
MAKE_STD_ZVAL(retval);
if (call_user_function(EG(function_table), NULL, func, retval,
@@ -96,7 +95,7 @@ PS_OPEN_FUNC(user)
SESS_ZVAL_STRING(save_path, args[0]);
SESS_ZVAL_STRING(session_name, args[1]);
- retval = ps_call_handler(PSF(open), 2, args);
+ retval = ps_call_handler(PSF(open), 2, args TSRMLS_CC);
FINISH;
}
@@ -106,7 +105,7 @@ PS_CLOSE_FUNC(user)
int i;
STDVARS;
- retval = ps_call_handler(PSF(close), 0, NULL);
+ retval = ps_call_handler(PSF(close), 0, NULL TSRMLS_CC);
for (i = 0; i < 6; i++)
zval_ptr_dtor(&mdata->names[i]);
@@ -124,7 +123,7 @@ PS_READ_FUNC(user)
SESS_ZVAL_STRING(key, args[0]);
- retval = ps_call_handler(PSF(read), 1, args);
+ retval = ps_call_handler(PSF(read), 1, args TSRMLS_CC);
if (retval) {
if (Z_TYPE_P(retval) == IS_STRING) {
@@ -158,7 +157,7 @@ PS_DESTROY_FUNC(user)
SESS_ZVAL_STRING(key, args[0]);
- retval = ps_call_handler(PSF(destroy), 1, args);
+ retval = ps_call_handler(PSF(destroy), 1, args TSRMLS_CC);
FINISH;
}
@@ -170,7 +169,7 @@ PS_GC_FUNC(user)
SESS_ZVAL_LONG(maxlifetime, args[0]);
- retval = ps_call_handler(PSF(gc), 1, args);
+ retval = ps_call_handler(PSF(gc), 1, args TSRMLS_CC);
FINISH;
}
diff --git a/ext/session/session.c b/ext/session/session.c
index 97e9a9ca64..a15ca9fe06 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -300,10 +300,7 @@ int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC)
if (zend_hash_find(Z_ARRVAL_P(PS(http_session_vars)), name, namelen+1, (void **) state_var)==SUCCESS) {
return SUCCESS;
}
- } else if (!PG(register_globals)) {
- /* register_globals is disabled, but we don't have http_session_vars */
- return HASH_KEY_NON_EXISTANT;
- }
+ }
return zend_hash_find(&EG(symbol_table), name, namelen+1, (void **) state_var);
}
@@ -592,10 +589,10 @@ static void php_session_save_current_state(TSRMLS_D)
if (PS(mod_data)) {
val = php_session_encode(&vallen TSRMLS_CC);
if (val) {
- ret = PS(mod)->write(&PS(mod_data), PS(id), val, vallen);
+ ret = PS(mod)->write(&PS(mod_data), PS(id), val, vallen TSRMLS_CC);
efree(val);
} else {
- ret = PS(mod)->write(&PS(mod_data), PS(id), "", 0);
+ ret = PS(mod)->write(&PS(mod_data), PS(id), "", 0 TSRMLS_CC);
}
}
@@ -608,7 +605,7 @@ static void php_session_save_current_state(TSRMLS_D)
if (PS(mod_data))
- PS(mod)->close(&PS(mod_data));
+ PS(mod)->close(&PS(mod_data) TSRMLS_CC);
}
static char *month_names[] = {
@@ -955,7 +952,7 @@ PHPAPI void php_session_start(TSRMLS_D)
nrand = (int) (100.0*php_combined_lcg(TSRMLS_C));
if (nrand < PS(gc_probability)) {
- PS(mod)->gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels);
+ PS(mod)->gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels TSRMLS_CC);
#if 0
if (nrdels != -1)
php_error(E_NOTICE, "purged %d expired session objects\n", nrdels);
@@ -1049,18 +1046,22 @@ PHP_FUNCTION(session_name)
{
zval **p_name;
int ac = ZEND_NUM_ARGS();
- char *old;
-
- old = estrdup(PS(session_name));
+ char *old = NULL;
if (ac < 0 || ac > 1 || zend_get_parameters_ex(ac, &p_name) == FAILURE)
WRONG_PARAM_COUNT;
if (ac == 1) {
+ if (PS(session_status) == php_session_active) {
+ php_error(E_NOTICE, "%s() cannot set session name once session is started.",
+ get_active_function_name(TSRMLS_C));
+ RETURN_FALSE;
+ }
convert_to_string_ex(p_name);
zend_alter_ini_entry("session.name", sizeof("session.name"), Z_STRVAL_PP(p_name), Z_STRLEN_PP(p_name), PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
}
-
+
+ old = estrdup(PS(session_name));
RETVAL_STRING(old, 0);
}
/* }}} */
@@ -1468,7 +1469,7 @@ static void php_rinit_session_globals(TSRMLS_D)
static void php_rshutdown_session_globals(TSRMLS_D)
{
if (PS(mod_data)) {
- PS(mod)->close(&PS(mod_data));
+ PS(mod)->close(&PS(mod_data) TSRMLS_CC);
}
if (PS(id)) {
efree(PS(id));