]> granicus.if.org Git - php/commitdiff
Fix my session updates.
authorZeev Suraski <zeev@php.net>
Sun, 26 Aug 2001 11:49:43 +0000 (11:49 +0000)
committerZeev Suraski <zeev@php.net>
Sun, 26 Aug 2001 11:49:43 +0000 (11:49 +0000)
trans_sid handling will no longer slow down performance unless a session
is actually in use.

ext/session/session.c
ext/standard/url_scanner.c
ext/standard/url_scanner.h
ext/standard/url_scanner_ex.c
ext/standard/url_scanner_ex.h
ext/standard/url_scanner_ex.re

index 3837fff0cc12a28b67d009cbd7f210e7a21e6cb2..759949e5f561faaff2402d54a82320cd86ac9f8f 100644 (file)
@@ -83,6 +83,7 @@ php_ps_globals ps_globals;
 static ps_module *_php_find_ps_module(char *name TSRMLS_DC);
 static const ps_serializer *_php_find_ps_serializer(char *name TSRMLS_DC);
 
+
 static int session_adapt_uris(const char *src, size_t srclen, char **new, size_t *newlen, zend_bool do_flush TSRMLS_DC)
 {
        if (PS(define_sid) && (PS(session_status) == php_session_active)) {
@@ -94,6 +95,7 @@ static int session_adapt_uris(const char *src, size_t srclen, char **new, size_t
 }
 
 
+
 static void php_session_output_handler(char *output, uint output_len, char **handled_output, uint *handled_output_len, int mode TSRMLS_DC)
 {
        zend_bool do_flush;
@@ -107,19 +109,26 @@ static void php_session_output_handler(char *output, uint output_len, char **han
 }
 
 
-static void php_session_start_output_handler(INIT_FUNC_ARGS, uint chunk_size)
+static void php_session_start_output_handler(uint chunk_size TSRMLS_DC)
 {
-       PHP_RINIT(url_scanner)(INIT_FUNC_ARGS_PASSTHRU);
-       PHP_RINIT(url_scanner_ex)(INIT_FUNC_ARGS_PASSTHRU);
+       php_url_scanner_activate(TSRMLS_C);
+       php_url_scanner_ex_activate(TSRMLS_C);
        php_start_ob_buffer(NULL, chunk_size TSRMLS_CC);
        php_ob_set_internal_handler(php_session_output_handler, chunk_size TSRMLS_CC);
 }
 
 
+static void php_session_activate(TSRMLS_D)
+{
+}
+
+
+
+
 static void php_session_end_output_handler(SHUTDOWN_FUNC_ARGS)
 {
-       PHP_RSHUTDOWN(url_scanner_ex)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
-       PHP_RSHUTDOWN(url_scanner)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+       php_url_scanner_ex_deactivate(TSRMLS_C);
+       php_url_scanner_deactivate(TSRMLS_C);
 }
 
 
@@ -923,7 +932,10 @@ static void php_session_start(TSRMLS_D)
                REGISTER_STRING_CONSTANT("SID", empty_string, 0);
        PS(define_sid) = define_sid;
 
-       PS(session_status)= php_session_active;
+       PS(session_status) = php_session_active;
+       if (!send_cookie && PS(use_trans_sid)) {
+               php_session_start_output_handler(4096 TSRMLS_CC);
+       }
 
        php_session_cache_limiter(TSRMLS_C);
        php_session_initialize(TSRMLS_C);
@@ -1394,10 +1406,6 @@ PHP_RINIT_FUNCTION(session)
                php_session_start(TSRMLS_C);
        }
 
-       if (PS(use_trans_sid)) {
-               php_session_start_output_handler(INIT_FUNC_ARGS_PASSTHRU, 4096);
-       }
-
        return SUCCESS;
 }
 
index b316cee86651306af45e3e922f7b938b97111874..681f3e09662884e3acbdb317dbca05bd6ea23904 100644 (file)
 #define BUFSIZE 256
 #endif
 
-PHP_RINIT_FUNCTION(url_scanner)
+int php_url_scanner_activate(TSRMLS_D)
 {
        url_adapt(NULL,0,NULL,NULL);
        return SUCCESS;
 }
 
 
-PHP_RSHUTDOWN_FUNCTION(url_scanner)
+int php_url_scanner_deactivate(TSRMLS_D)
 {
        url_adapt(NULL,0,NULL,NULL);
        return SUCCESS;
index ec615fdcef0d9de40fbc3cfa7d6e949452b4bba6..84c4c66c787c39a1c4b3fa917089d7c32db6b38f 100644 (file)
@@ -20,8 +20,8 @@
 #ifndef URI_SCANNER_H
 #define URI_SCANNER_H
 
-PHP_RINIT_FUNCTION(url_scanner);
-PHP_RSHUTDOWN_FUNCTION(url_scanner);
+int php_url_scanner_activate(TSRMLS_D);
+int php_url_scanner_deactivate(TSRMLS_D);
 
 char *url_adapt(const char *src, size_t srclen, const char *data, size_t *newlen);
 
index e3ed2ca95b4cc57b8522009094c263fda70fe781..4f227f7c73a2dbbf18ccc7d608d3f0d965dde24d 100644 (file)
@@ -860,7 +860,7 @@ char *url_adapt_ext(const char *src, size_t srclen, const char *name, const char
        return ctx->result.c;
 }
 
-PHP_RINIT_FUNCTION(url_scanner)
+int php_url_scanner_ex_activate(TSRMLS_D)
 {
        url_adapt_state_ex_t *ctx;
        
@@ -871,7 +871,7 @@ PHP_RINIT_FUNCTION(url_scanner)
        return SUCCESS;
 }
 
-PHP_RSHUTDOWN_FUNCTION(url_scanner)
+int php_url_scanner_ex_deactivate(TSRMLS_D)
 {
        url_adapt_state_ex_t *ctx;
        
index 7a90a6d7bf4a0ff9b243a9158cc9da3a8cd91f70..b8ca4d690cf7a0aba6a41356b7d231071574d682 100644 (file)
@@ -21,8 +21,8 @@
 
 PHP_MINIT_FUNCTION(url_scanner_ex);
 PHP_MSHUTDOWN_FUNCTION(url_scanner_ex);
-PHP_RSHUTDOWN_FUNCTION(url_scanner_ex);
-PHP_RINIT_FUNCTION(url_scanner_ex);
+int php_url_scanner_ex_activate(TSRMLS_D);
+int php_url_scanner_ex_deactivate(TSRMLS_D);
 
 char *url_adapt_ext_ex(const char *src, size_t srclen, const char *name, const char *value, size_t *newlen, zend_bool do_flush TSRMLS_DC);
 
index 31809471df50b7636c6a52edd1e3fc5a375df1af..5074fa66bd4d0aa09fbc8cf3037c35be104eab2a 100644 (file)
@@ -376,7 +376,7 @@ char *url_adapt_ext(const char *src, size_t srclen, const char *name, const char
        return ctx->result.c;
 }
 
-PHP_RINIT_FUNCTION(url_scanner)
+int php_url_scanner_ex_activate(TSRMLS_D)
 {
        url_adapt_state_ex_t *ctx;
        
@@ -387,7 +387,7 @@ PHP_RINIT_FUNCTION(url_scanner)
        return SUCCESS;
 }
 
-PHP_RSHUTDOWN_FUNCTION(url_scanner)
+int php_url_scanner_ex_deactivate(TSRMLS_D)
 {
        url_adapt_state_ex_t *ctx;