sas Tue Feb 18 14:29:38 2003 EDT Modified files: /php4/ext/session php_session.h session.c Log: Refactor new-session-id code Index: php4/ext/session/php_session.h diff -u php4/ext/session/php_session.h:1.90 php4/ext/session/php_session.h:1.91 --- php4/ext/session/php_session.h:1.90 Tue Feb 18 14:13:49 2003 +++ php4/ext/session/php_session.h Tue Feb 18 14:29:38 2003 @@ -122,6 +122,7 @@ long hash_func; long hash_bits_per_character; int send_cookie; + int define_sid; } php_ps_globals; typedef php_ps_globals zend_ps_globals; Index: php4/ext/session/session.c diff -u php4/ext/session/session.c:1.353 php4/ext/session/session.c:1.354 --- php4/ext/session/session.c:1.353 Tue Feb 18 14:13:49 2003 +++ php4/ext/session/session.c Tue Feb 18 14:29:38 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: session.c,v 1.353 2003/02/18 19:13:49 sas Exp $ */ +/* $Id: session.c,v 1.354 2003/02/18 19:29:38 sas Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1018,18 +1018,46 @@ convert_to_string((*ppid)); \ PS(id) = estrndup(Z_STRVAL_PP(ppid), Z_STRLEN_PP(ppid)) +static void php_session_reset_id(TSRMLS_D) +{ + int module_number = PS(module_number); + + if (PS(send_cookie)) { + php_session_send_cookie(TSRMLS_C); + } + + /* if the SID constant exists, destroy it. */ + zend_hash_del(EG(zend_constants), "sid", sizeof("sid")); + + if (PS(define_sid)) { + smart_str var = {0}; + + smart_str_appends(&var, PS(session_name)); + smart_str_appendc(&var, '='); + smart_str_appends(&var, PS(id)); + smart_str_0(&var); + REGISTER_STRINGL_CONSTANT("SID", var.c, var.len, 0); + } else { + REGISTER_STRINGL_CONSTANT("SID", empty_string, 0, 0); + } + + if (PS(apply_trans_sid)) { + php_url_scanner_reset_vars(TSRMLS_C); + php_url_scanner_add_var(PS(session_name), strlen(PS(session_name)), +PS(id), strlen(PS(id)), 0 TSRMLS_CC); + } +} + PHPAPI void php_session_start(TSRMLS_D) { zval **ppid; zval **data; char *p; - int define_sid = 1; - int module_number = PS(module_number); int nrand; int lensess; PS(apply_trans_sid) = PS(use_trans_sid); + PS(define_sid) = 1; PS(send_cookie) = 1; if (PS(session_status) != php_session_none) return; @@ -1051,7 +1079,7 @@ PPID2SID; PS(apply_trans_sid) = 0; PS(send_cookie) = 0; - define_sid = 0; + PS(define_sid) = 0; } if (!PS(use_only_cookies) && !PS(id) && @@ -1116,30 +1144,10 @@ PS(apply_trans_sid) = 1; PS(send_cookie) = 0; } - - if (PS(send_cookie)) { - php_session_send_cookie(TSRMLS_C); - } - /* if the SID constant exists, destroy it. */ - zend_hash_del(EG(zend_constants), "sid", sizeof("sid")); + php_session_reset_id(TSRMLS_C); - if (define_sid) { - smart_str var = {0}; - - smart_str_appendl(&var, PS(session_name), lensess); - smart_str_appendc(&var, '='); - smart_str_appends(&var, PS(id)); - smart_str_0(&var); - REGISTER_STRINGL_CONSTANT("SID", var.c, var.len, 0); - } else { - REGISTER_STRINGL_CONSTANT("SID", empty_string, 0, 0); - } - PS(session_status) = php_session_active; - if (PS(apply_trans_sid)) { - php_url_scanner_add_var(PS(session_name), strlen(PS(session_name)), PS(id), strlen(PS(id)), 0 TSRMLS_CC); - } php_session_cache_limiter(TSRMLS_C); @@ -1368,10 +1376,8 @@ PS(id) = PS(mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC); - if (PS(send_cookie)) { - php_session_send_cookie(TSRMLS_C); - } - + php_session_reset_id(TSRMLS_C); + RETURN_TRUE; } RETURN_FALSE;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php