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;
#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);
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;
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;
}
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;
}
}
- if (register_trans_sid_handler) {
+ if (PS(apply_trans_sid)) {
smart_str var = {0};
smart_str_appends(&var, PS(session_name));
}
PS(session_status) = php_session_active;
- if (register_trans_sid_handler) {
+ if (PS(apply_trans_sid)) {
php_session_start_output_handler(4096 TSRMLS_CC);
}
}
/* }}} */
+
+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);