summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYasuo Ohgaki <yohgaki@php.net>2016-09-01 05:54:55 +0900
committerYasuo Ohgaki <yohgaki@php.net>2016-09-01 05:54:55 +0900
commit355c7e7d1cdc180d368c6214ea7605443fc88c92 (patch)
treee8f23cf72d429a8f1f71a7cae4f27419622e6319
parent663f1c8fb08ba51a00d7d8ed6261916c6fc8d5df (diff)
downloadphp-git-355c7e7d1cdc180d368c6214ea7605443fc88c92.tar.gz
Revert "Implement RFC Add session_gc() https://wiki.php.net/rfc/session-gc"
This reverts commit 1cf179e4150308d8217d9517408ca5e22b5d607f.
-rw-r--r--ext/session/mod_files.c4
-rw-r--r--ext/session/mod_mm.c2
-rw-r--r--ext/session/mod_user.c13
-rw-r--r--ext/session/mod_user_class.c7
-rw-r--r--ext/session/php_session.h6
-rw-r--r--ext/session/session.c47
6 files changed, 17 insertions, 62 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index 24f70b6c4b..7cb99fabcc 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -643,11 +643,9 @@ PS_GC_FUNC(files)
if (data->dirdepth == 0) {
*nrdels = ps_files_cleanup_dir(data->basedir, maxlifetime);
- } else {
- *nrdels = -1; // Cannot process multiple depth save dir
}
- return *nrdels;
+ return SUCCESS;
}
diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c
index 3181e1641c..3f69897556 100644
--- a/ext/session/mod_mm.c
+++ b/ext/session/mod_mm.c
@@ -468,7 +468,7 @@ PS_GC_FUNC(mm)
mm_unlock(data->mm);
- return nrdels;
+ return SUCCESS;
}
PS_CREATE_SID_FUNC(mm)
diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c
index 0cdbaf96f9..beddce8883 100644
--- a/ext/session/mod_user.c
+++ b/ext/session/mod_user.c
@@ -176,22 +176,13 @@ PS_DESTROY_FUNC(user)
PS_GC_FUNC(user)
{
zval args[1];
- zval retval;
+ STDVARS;
ZVAL_LONG(&args[0], maxlifetime);
ps_call_handler(&PSF(gc), 1, args, &retval);
- if (Z_TYPE(retval) == IS_LONG) {
- convert_to_long(&retval);
- return Z_LVAL(retval);
- }
- /* This is for older API compatibility */
- if (Z_TYPE(retval) == IS_TRUE) {
- return 1;
- }
- /* Anything else is some kind of error */
- return -1; // Error
+ FINISH;
}
PS_CREATE_SID_FUNC(user)
diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c
index b132552faf..a774d4bf9c 100644
--- a/ext/session/mod_user_class.c
+++ b/ext/session/mod_user_class.c
@@ -148,7 +148,7 @@ PHP_METHOD(SessionHandler, destroy)
PHP_METHOD(SessionHandler, gc)
{
zend_long maxlifetime;
- zend_long nrdels = -1;
+ int nrdels;
PS_SANITY_CHECK_IS_OPEN;
@@ -156,10 +156,7 @@ PHP_METHOD(SessionHandler, gc)
return;
}
- if (PS(default_mod)->s_gc(&PS(mod_data), maxlifetime, &nrdels) == FAILURE) {
- RETURN_FALSE;
- }
- RETURN_LONG(nrdels);
+ RETURN_BOOL(SUCCESS == PS(default_mod)->s_gc(&PS(mod_data), maxlifetime, &nrdels));
}
/* }}} */
diff --git a/ext/session/php_session.h b/ext/session/php_session.h
index da5e48515a..b693fd4b87 100644
--- a/ext/session/php_session.h
+++ b/ext/session/php_session.h
@@ -39,7 +39,7 @@
#define PS_READ_ARGS void **mod_data, zend_string *key, zend_string **val, zend_long maxlifetime
#define PS_WRITE_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime
#define PS_DESTROY_ARGS void **mod_data, zend_string *key
-#define PS_GC_ARGS void **mod_data, zend_long maxlifetime, zend_long *nrdels
+#define PS_GC_ARGS void **mod_data, zend_long maxlifetime, int *nrdels
#define PS_CREATE_SID_ARGS void **mod_data
#define PS_VALIDATE_SID_ARGS void **mod_data, zend_string *key
#define PS_UPDATE_TIMESTAMP_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime
@@ -51,7 +51,7 @@ typedef struct ps_module_struct {
int (*s_read)(PS_READ_ARGS);
int (*s_write)(PS_WRITE_ARGS);
int (*s_destroy)(PS_DESTROY_ARGS);
- zend_long (*s_gc)(PS_GC_ARGS);
+ int (*s_gc)(PS_GC_ARGS);
zend_string *(*s_create_sid)(PS_CREATE_SID_ARGS);
int (*s_validate_sid)(PS_VALIDATE_SID_ARGS);
int (*s_update_timestamp)(PS_UPDATE_TIMESTAMP_ARGS);
@@ -65,7 +65,7 @@ typedef struct ps_module_struct {
#define PS_READ_FUNC(x) int ps_read_##x(PS_READ_ARGS)
#define PS_WRITE_FUNC(x) int ps_write_##x(PS_WRITE_ARGS)
#define PS_DESTROY_FUNC(x) int ps_delete_##x(PS_DESTROY_ARGS)
-#define PS_GC_FUNC(x) zend_long ps_gc_##x(PS_GC_ARGS)
+#define PS_GC_FUNC(x) int ps_gc_##x(PS_GC_ARGS)
#define PS_CREATE_SID_FUNC(x) zend_string *ps_create_sid_##x(PS_CREATE_SID_ARGS)
#define PS_VALIDATE_SID_FUNC(x) int ps_validate_sid_##x(PS_VALIDATE_SID_ARGS)
#define PS_UPDATE_TIMESTAMP_FUNC(x) int ps_update_timestamp_##x(PS_UPDATE_TIMESTAMP_ARGS)
diff --git a/ext/session/session.c b/ext/session/session.c
index 1c0bde9d37..ed5e64ed2a 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -353,23 +353,19 @@ PHPAPI int php_session_valid_key(const char *key) /* {{{ */
/* }}} */
-static zend_long php_session_gc(zend_bool immediate) /* {{{ */
+static void php_session_gc(void) /* {{{ */
{
int nrand;
- zend_long num = -1;
/* GC must be done before reading session data. */
- if ((PS(mod_data) || PS(mod_user_implemented))) {
- if (immediate) {
- PS(mod)->s_gc(&PS(mod_data), PS(gc_maxlifetime), &num);
- return num;
- }
- nrand = (zend_long) ((float) PS(gc_divisor) * php_combined_lcg());
- if (PS(gc_probability) > 0 && nrand < PS(gc_probability)) {
- PS(mod)->s_gc(&PS(mod_data), PS(gc_maxlifetime), &num);
+ if ((PS(mod_data) || PS(mod_user_implemented)) && PS(gc_probability) > 0) {
+ int nrdels = -1;
+
+ nrand = (int) ((float) PS(gc_divisor) * php_combined_lcg());
+ if (nrand < PS(gc_probability)) {
+ PS(mod)->s_gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels);
}
}
- return num;
} /* }}} */
static void php_session_initialize(void) /* {{{ */
@@ -434,7 +430,7 @@ static void php_session_initialize(void) /* {{{ */
}
/* GC must be done after read */
- php_session_gc(0);
+ php_session_gc();
if (PS(session_vars)) {
zend_string_release(PS(session_vars));
@@ -2244,32 +2240,6 @@ static PHP_FUNCTION(session_unset)
}
/* }}} */
-/* {{{ proto int session_gc(void)
- Perform GC and return number of deleted sessions */
-static PHP_FUNCTION(session_gc)
-{
- zend_long num;
-
- if (zend_parse_parameters_none() == FAILURE) {
- return;
- }
-
- if (PS(session_status) != php_session_active) {
- php_error_docref(NULL, E_WARNING, "Session is not active");
- RETURN_FALSE;
- }
-
- num = php_session_gc(1);
- if (num < 0) {
- php_error_docref(NULL, E_WARNING, "Failed to perfom session GC");
- RETURN_FALSE;
- }
-
- RETURN_LONG(num);
-}
-/* }}} */
-
-
/* {{{ proto void session_write_close(void)
Write session data and end session */
static PHP_FUNCTION(session_write_close)
@@ -2447,7 +2417,6 @@ static const zend_function_entry session_functions[] = {
PHP_FE(session_start, arginfo_session_void)
PHP_FE(session_destroy, arginfo_session_void)
PHP_FE(session_unset, arginfo_session_void)
- PHP_FE(session_gc, arginfo_session_void)
PHP_FE(session_set_save_handler, arginfo_session_set_save_handler)
PHP_FE(session_cache_limiter, arginfo_session_cache_limiter)
PHP_FE(session_cache_expire, arginfo_session_cache_expire)