diff options
author | Sascha Schumann <sas@php.net> | 2000-07-05 01:26:22 +0000 |
---|---|---|
committer | Sascha Schumann <sas@php.net> | 2000-07-05 01:26:22 +0000 |
commit | 277b0e15b8cfeb4557badecb5c269eb3ec7d333b (patch) | |
tree | 84da7a05b1da305cedc8ca75b906404bd3b5b937 | |
parent | 94d7e1fa5b5c42969b301077947961dccded30e2 (diff) | |
download | php-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.c | 4 | ||||
-rw-r--r-- | ext/session/session.c | 22 |
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; + } } /* }}} */ |