Changeset 799

Show
Ignore:
Timestamp:
07/08/07 02:51:35 (1 year ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee/trunk/ChangeLog

    r798 r799  
     12007-07-08  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
     2 
     3        * qa/142-SCGI-ExtraVars.py, qa/Makefile.am (EXTRA_DIST): New QA 
     4        test. It checks the new 'pass_req_headers' parameter. 
     5 
     6        * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_envp, 
     7        foreach_header_add_unknown_variable): Added new configuration 
     8        token 'pass_req_headers' (boolean). It allows to enable to copy 
     9        all the unknown headers to the CGI-based handler, whether it's 
     10        SCGI, FastCGI or CGI. 
     11 
     12        * cherokee/header.h, 
     13        cherokee/header.c (cherokee_header_foreach_unknown): Added new 
     14        method. 
     15 
    1162007-07-07  A.D.F  <adefacc@tin.it> 
    217 
  • cherokee/trunk/cherokee/handler_cgi_base.c

    r639 r799  
    169169        props->change_user      = false; 
    170170        props->check_file       = true; 
     171        props->pass_req_headers = false; 
    171172 
    172173        /* Parse the configuration tree 
     
    197198                } else if (equal_buf_str (&subconf->key, "check_file")) { 
    198199                        props->check_file = atoi(subconf->val.buf); 
     200 
     201                } else if (equal_buf_str (&subconf->key, "pass_req_headers")) { 
     202                        props->pass_req_headers = atoi(subconf->val.buf); 
    199203                } 
    200204        } 
     
    453457 
    454458 
     459static ret_t 
     460foreach_header_add_unknown_variable (cherokee_buffer_t *header, cherokee_buffer_t *content, void *data) 
     461{ 
     462        cherokee_handler_cgi_base_t *cgi = HDL_CGI_BASE(data); 
     463         
     464        cgi->add_env_pair (cgi,  
     465                           header->buf, header->len,  
     466                           content->buf, content->len); 
     467        return ret_ok; 
     468} 
     469 
     470 
    455471ret_t  
    456472cherokee_handler_cgi_base_build_envp (cherokee_handler_cgi_base_t *cgi, cherokee_connection_t *conn) 
     
    473489                                   env->val.buf, env->val.len); 
    474490        }                
     491 
     492        /* Pass request headers. 
     493         * Usually X-Something.. 
     494         */ 
     495        if (cgi_props->pass_req_headers) { 
     496                cherokee_header_foreach_unknown (&conn->header,  
     497                                                 foreach_header_add_unknown_variable, cgi); 
     498        } 
    475499 
    476500        /* Add the basic enviroment variables 
  • cherokee/trunk/cherokee/handler_cgi_base.h

    r597 r799  
    8585        cherokee_boolean_t                 check_file;   
    8686        cherokee_boolean_t                 is_error_handler; 
     87        cherokee_boolean_t                 pass_req_headers; 
    8788} cherokee_handler_cgi_base_props_t; 
    8889 
  • cherokee/trunk/cherokee/header.c

    r690 r799  
    944944} 
    945945 
     946 
     947ret_t  
     948cherokee_header_foreach_unknown (cherokee_header_t *hdr, cherokee_header_foreach_func_t func, void *data) 
     949{ 
     950        int               i; 
     951        cherokee_buffer_t tmp_hdr = CHEROKEE_BUF_INIT; 
     952        cherokee_buffer_t tmp_val = CHEROKEE_BUF_INIT; 
     953         
     954        HEADER_INTERNAL_CHECK(hdr); 
     955 
     956        for (i=0; i < hdr->unknowns_len; i++) { 
     957                char *begin      = hdr->unknowns[i].header_off      + hdr->input_buffer->buf; 
     958                char *begin_info = hdr->unknowns[i].header_info_off + hdr->input_buffer->buf; 
     959 
     960                cherokee_buffer_add (&tmp_hdr, begin,  
     961                                     (hdr->unknowns[i].header_info_off - 2) - hdr->unknowns[i].header_off); 
     962                                      
     963                cherokee_buffer_add (&tmp_val, begin_info, 
     964                                     hdr->unknowns[i].header_info_len); 
     965 
     966                func (&tmp_hdr, &tmp_val, data); 
     967 
     968                cherokee_buffer_clean (&tmp_hdr); 
     969                cherokee_buffer_clean (&tmp_val); 
     970        } 
     971 
     972        cherokee_buffer_mrproper (&tmp_hdr); 
     973        cherokee_buffer_mrproper (&tmp_val); 
     974        return ret_ok; 
     975} 
  • cherokee/trunk/cherokee/header.h

    r690 r799  
    8787 
    8888ret_t cherokee_header_get_length          (cherokee_header_t *hdr, cuint_t *len); 
    89 ret_t cherokee_header_for_each            (cherokee_header_t *hdr, void *); 
     89ret_t cherokee_header_foreach_unknown     (cherokee_header_t *hdr, cherokee_header_foreach_func_t func, void *data); 
    9090 
    9191ret_t cherokee_header_copy_request        (cherokee_header_t *hdr, cherokee_buffer_t *request); 
  • cherokee/trunk/qa/140-SCGI-EmptyVars.py

    r599 r799  
    22from base import * 
    33 
    4 DIR   = "/SCGI3/" 
    5 MAGIC = "Cherokee and SCGI rocks!" 
    6 PORT  = 5003 
     4DIR  = "/SCGI3/" 
     5PORT = 5003 
    76 
    87SCRIPT = """ 
     
    2423vserver!default!directory!<dir>!handler!balancer = round_robin 
    2524vserver!default!directory!<dir>!handler!balancer!type = interpreter 
    26 vserver!default!directory!<dir>!handler!balancer!local_scgi2!host = localhost:%d 
    27 vserver!default!directory!<dir>!handler!balancer!local_scgi2!interpreter = %s %s 
     25vserver!default!directory!<dir>!handler!balancer!local_scgi3!host = localhost:%d 
     26vserver!default!directory!<dir>!handler!balancer!local_scgi3!interpreter = %s %s 
    2827vserver!default!directory!<dir>!priority = 1400 
    2928""" 
  • cherokee/trunk/qa/Makefile.am

    r598 r799  
    145145138-ChangeUser-cgi.py \ 
    146146139-domain-wildcards1.py \ 
    147 140-SCGI-EmptyVars.py  
     147140-SCGI-EmptyVars.py \ 
     148141-FastCGI-EmptyVars.py \ 
     149142-SCGI-ExtraVars.py 
    148150 
    149151test: