diff options
author | Zeev Suraski <zeev@php.net> | 2001-08-31 20:03:09 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 2001-08-31 20:03:09 +0000 |
commit | f7e7b42d4b0f3ce7c33d02cb58f8a104dfaa082c (patch) | |
tree | 82028d9fe87d4f25879f6a8ed107aaf49d297544 | |
parent | cb386234eae2c9257bee3d381060e9420b014c81 (diff) | |
download | php-git-f7e7b42d4b0f3ce7c33d02cb58f8a104dfaa082c.tar.gz |
Restore session_adapt_url()
-rw-r--r-- | ext/session/php_session.h | 5 | ||||
-rw-r--r-- | ext/session/session.c | 22 |
2 files changed, 19 insertions, 8 deletions
diff --git a/ext/session/php_session.h b/ext/session/php_session.h index b3d9e06c43..a21132da93 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -89,7 +89,8 @@ typedef struct _php_ps_globals { zval *http_session_vars; zend_bool auto_start; zend_bool use_cookies; - zend_bool use_trans_sid; + zend_bool use_trans_sid; /* contains the INI value of whether to use trans-sid */ + zend_bool apply_trans_sid; /* whether or not to enable trans-sid for the current request */ zend_bool output_handler_registered; } php_ps_globals; @@ -144,7 +145,7 @@ typedef struct ps_serializer_struct { #define PS_SERIALIZER_ENTRY(x) \ { #x, PS_SERIALIZER_ENCODE_NAME(x), PS_SERIALIZER_DECODE_NAME(x) } -void session_adapt_url(const char *, size_t, char **, size_t * TSRMLS_DC); +PHPAPI void session_adapt_url(const char *, size_t, char **, size_t * TSRMLS_DC); void php_set_session_var(char *name, size_t namelen, zval *state_val,HashTable *var_hash TSRMLS_DC); int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC); diff --git a/ext/session/session.c b/ext/session/session.c index e41163ea8f..91ff4f5772 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -809,7 +809,8 @@ static void php_session_start(TSRMLS_D) int module_number = PS(module_number); int nrand; int lensess; - int register_trans_sid_handler = PS(use_trans_sid); + + PS(apply_trans_sid) = PS(use_trans_sid); if (PS(session_status) != php_session_none) return; @@ -829,7 +830,7 @@ static void php_session_start(TSRMLS_D) zend_hash_find(Z_ARRVAL_PP(data), PS(session_name), lensess + 1, (void **) &ppid) == SUCCESS) { PPID2SID; - register_trans_sid_handler = 0; + PS(apply_trans_sid) = 0; send_cookie = 0; } @@ -884,14 +885,14 @@ static void php_session_start(TSRMLS_D) efree(PS(id)); PS(id) = NULL; send_cookie = 1; - register_trans_sid_handler = 1; + PS(apply_trans_sid) = 1; } if (!PS(id)) PS(id) = _php_create_id(NULL TSRMLS_CC); if (!PS(use_cookies) && send_cookie) { - register_trans_sid_handler = 1; + PS(apply_trans_sid) = 1; send_cookie = 0; } @@ -900,7 +901,7 @@ static void php_session_start(TSRMLS_D) } - if (register_trans_sid_handler) { + if (PS(apply_trans_sid)) { smart_str var = {0}; smart_str_appends(&var, PS(session_name)); @@ -913,7 +914,7 @@ static void php_session_start(TSRMLS_D) } PS(session_status) = php_session_active; - if (register_trans_sid_handler) { + if (PS(apply_trans_sid)) { php_session_start_output_handler(4096 TSRMLS_CC); } @@ -1338,6 +1339,15 @@ PHP_FUNCTION(session_unset) } /* }}} */ + +PHPAPI void session_adapt_url(const char *url, size_t urllen, char **new, size_t *newlen TSRMLS_DC) +{ + if (PS(apply_trans_sid) && (PS(session_status) == php_session_active)) { + *new = url_adapt_single_url(url, urllen, PS(session_name), PS(id), newlen TSRMLS_CC); + } +} + + static void php_rinit_session_globals(TSRMLS_D) { zend_hash_init(&PS(vars), 0, NULL, NULL, 0); |