(PHP session_destroy) return the error condition from storage handler's

session_destroy method.

Submitted by: juhl@eisenstein.dk
This commit is contained in:
Sascha Schumann 2000-07-05 01:26:22 +00:00
parent 94d7e1fa5b
commit 277b0e15b8
2 changed files with 19 additions and 7 deletions

View File

@ -275,7 +275,9 @@ PS_DESTROY_FUNC(files)
if (!_ps_files_path_create(buf, sizeof(buf), data, key)) if (!_ps_files_path_create(buf, sizeof(buf), data, key))
return FAILURE; return FAILURE;
V_UNLINK(buf); if (V_UNLINK(buf) == -1) {
return FAILURE;
}
return SUCCESS; return SUCCESS;
} }

View File

@ -138,7 +138,7 @@ PHP_MINFO_FUNCTION(session);
static void php_rinit_session_globals(PSLS_D); static void php_rinit_session_globals(PSLS_D);
static void php_rshutdown_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 = { zend_module_entry session_module_entry = {
"session", "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) { if (PS(nr_open_sessions) == 0) {
php_error(E_WARNING, "Trying to destroy uninitialized session"); php_error(E_WARNING, "Trying to destroy uninitialized session");
return; return FAILURE;
} }
if (PS(mod)->destroy(&PS(mod_data), PS(id)) == FAILURE) { if (PS(mod)->destroy(&PS(mod_data), PS(id)) == FAILURE) {
retval = FAILURE;
php_error(E_WARNING, "Destroying the session object failed"); php_error(E_WARNING, "Destroying the session object failed");
} }
php_rshutdown_session_globals(PSLS_C); php_rshutdown_session_globals(PSLS_C);
php_rinit_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 */ Destroy the current session and all data associated with it */
PHP_FUNCTION(session_destroy) PHP_FUNCTION(session_destroy)
{ {
PSLS_FETCH(); PSLS_FETCH();
_php_session_destroy(PSLS_C); if (_php_session_destroy(PSLS_C) == SUCCESS) {
RETURN_TRUE;
} else {
RETURN_FALSE;
}
} }
/* }}} */ /* }}} */