From: Sascha Schumann Date: Wed, 6 Mar 2002 11:49:51 +0000 (+0000) Subject: Merge in session API changes (carry around tsrm context) X-Git-Tag: php-4.2.0RC1~95 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8141c7761c7b101ccca2c08f0e4bfe8b7672e061;p=php Merge in session API changes (carry around tsrm context) Now PHP_SESSION_API is defined to the date of the last change, so that externa source-code can handle changes more gracefully. --- 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..970f1ef7c0 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) { @@ -146,7 +145,7 @@ PS_WRITE_FUNC(user) SESS_ZVAL_STRING(key, args[0]); SESS_ZVAL_STRINGN(val, vallen, args[1]); - retval = ps_call_handler(PSF(write), 2, args); + retval = ps_call_handler(PSF(write), 2, args TSRMLS_CC); FINISH; } @@ -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/php_session.h b/ext/session/php_session.h index 5e10be2d3d..c3e31d0570 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -21,12 +21,14 @@ #include "ext/standard/php_var.h" -#define PS_OPEN_ARGS void **mod_data, const char *save_path, const char *session_name -#define PS_CLOSE_ARGS void **mod_data -#define PS_READ_ARGS void **mod_data, const char *key, char **val, int *vallen -#define PS_WRITE_ARGS void **mod_data, const char *key, const char *val, const int vallen -#define PS_DESTROY_ARGS void **mod_data, const char *key -#define PS_GC_ARGS void **mod_data, int maxlifetime, int *nrdels +#define PHP_SESSION_API 20020306 + +#define PS_OPEN_ARGS void **mod_data, const char *save_path, const char *session_name TSRMLS_DC +#define PS_CLOSE_ARGS void **mod_data TSRMLS_DC +#define PS_READ_ARGS void **mod_data, const char *key, char **val, int *vallen TSRMLS_DC +#define PS_WRITE_ARGS void **mod_data, const char *key, const char *val, const int vallen TSRMLS_DC +#define PS_DESTROY_ARGS void **mod_data, const char *key TSRMLS_DC +#define PS_GC_ARGS void **mod_data, int maxlifetime, int *nrdels TSRMLS_DC typedef struct ps_module_struct { const char *name; diff --git a/ext/session/session.c b/ext/session/session.c index b11c7b6cf7..effcb881f5 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -549,12 +549,12 @@ static void php_session_initialize(TSRMLS_D) char *val; int vallen; - if (PS(mod)->open(&PS(mod_data), PS(save_path), PS(session_name)) == FAILURE) { + if (PS(mod)->open(&PS(mod_data), PS(save_path), PS(session_name) TSRMLS_CC) == FAILURE) { php_error(E_ERROR, "Failed to initialize session module"); return; } php_session_track_init(TSRMLS_C); - if (PS(mod)->read(&PS(mod_data), PS(id), &val, &vallen) == SUCCESS) { + if (PS(mod)->read(&PS(mod_data), PS(id), &val, &vallen TSRMLS_CC) == SUCCESS) { php_session_decode(val, vallen TSRMLS_CC); efree(val); } @@ -586,10 +586,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); } } @@ -602,7 +602,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 +955,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); @@ -973,7 +973,7 @@ static zend_bool php_session_destroy(TSRMLS_D) return FAILURE; } - if (PS(mod)->destroy(&PS(mod_data), PS(id)) == FAILURE) { + if (PS(mod)->destroy(&PS(mod_data), PS(id) TSRMLS_CC) == FAILURE) { retval = FAILURE; php_error(E_WARNING, "Session object destruction failed"); } @@ -1079,7 +1079,7 @@ PHP_FUNCTION(session_module_name) tempmod = _php_find_ps_module(Z_STRVAL_PP(p_name) TSRMLS_CC); if (tempmod) { if (PS(mod_data)) - PS(mod)->close(&PS(mod_data)); + PS(mod)->close(&PS(mod_data) TSRMLS_CC); PS(mod) = tempmod; PS(mod_data) = NULL; } else { @@ -1414,7 +1414,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));