]> granicus.if.org Git - php/commitdiff
Restore session_adapt_url()
authorZeev Suraski <zeev@php.net>
Fri, 31 Aug 2001 20:03:09 +0000 (20:03 +0000)
committerZeev Suraski <zeev@php.net>
Fri, 31 Aug 2001 20:03:09 +0000 (20:03 +0000)
ext/session/php_session.h
ext/session/session.c

index b3d9e06c432adc8c75f6b445badb3f54531c76f2..a21132da93900d2a047b15a98566c3776ec9d953 100644 (file)
@@ -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);
index e41163ea8ff42bafe348e5049a74faa549c6dea1..91ff4f577220ece93f9446eca16b1505ecf769af 100644 (file)
@@ -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);