summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>2000-07-05 01:26:22 +0000
committerSascha Schumann <sas@php.net>2000-07-05 01:26:22 +0000
commit277b0e15b8cfeb4557badecb5c269eb3ec7d333b (patch)
tree84da7a05b1da305cedc8ca75b906404bd3b5b937
parent94d7e1fa5b5c42969b301077947961dccded30e2 (diff)
downloadphp-git-277b0e15b8cfeb4557badecb5c269eb3ec7d333b.tar.gz
(PHP session_destroy) return the error condition from storage handler's
session_destroy method. Submitted by: juhl@eisenstein.dk
-rw-r--r--ext/session/mod_files.c4
-rw-r--r--ext/session/session.c22
2 files changed, 19 insertions, 7 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index a4b7ed0a4d..c1f7ecc9ba 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -275,7 +275,9 @@ PS_DESTROY_FUNC(files)
if (!_ps_files_path_create(buf, sizeof(buf), data, key))
return FAILURE;
- V_UNLINK(buf);
+ if (V_UNLINK(buf) == -1) {
+ return FAILURE;
+ }
return SUCCESS;
}
diff --git a/ext/session/session.c b/ext/session/session.c
index 0d634f240e..5b685eadb0 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -138,7 +138,7 @@ PHP_MINFO_FUNCTION(session);
static void php_rinit_session_globals(PSLS_D);
static void php_rshutdown_session_globals(PSLS_D);
-static void _php_session_destroy(PSLS_D);
+static zend_bool _php_session_destroy(PSLS_D);
zend_module_entry session_module_entry = {
"session",
@@ -874,18 +874,24 @@ static void _php_session_start(PSLS_D)
}
}
-static void _php_session_destroy(PSLS_D)
+static zend_bool _php_session_destroy(PSLS_D)
{
+ zend_bool retval = SUCCESS;
+
if (PS(nr_open_sessions) == 0) {
php_error(E_WARNING, "Trying to destroy uninitialized session");
- return;
+ return FAILURE;
}
if (PS(mod)->destroy(&PS(mod_data), PS(id)) == FAILURE) {
+ retval = FAILURE;
php_error(E_WARNING, "Destroying the session object failed");
}
+
php_rshutdown_session_globals(PSLS_C);
php_rinit_session_globals(PSLS_C);
+
+ return retval;
}
@@ -1224,13 +1230,17 @@ PHP_FUNCTION(session_start)
}
/* }}} */
-/* {{{ proto void session_destroy(void)
+/* {{{ proto bool session_destroy(void)
Destroy the current session and all data associated with it */
PHP_FUNCTION(session_destroy)
{
PSLS_FETCH();
-
- _php_session_destroy(PSLS_C);
+
+ if (_php_session_destroy(PSLS_C) == SUCCESS) {
+ RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
+ }
}
/* }}} */