Changeset 799
- Timestamp:
- 07/08/07 02:51:35 (1 year ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/cherokee/handler_cgi_base.c (modified) (4 diffs)
- cherokee/trunk/cherokee/handler_cgi_base.h (modified) (1 diff)
- cherokee/trunk/cherokee/header.c (modified) (1 diff)
- cherokee/trunk/cherokee/header.h (modified) (1 diff)
- cherokee/trunk/qa/140-SCGI-EmptyVars.py (modified) (2 diffs)
- cherokee/trunk/qa/142-SCGI-ExtraVars.py (added)
- cherokee/trunk/qa/Makefile.am (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r798 r799 1 2007-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 1 16 2007-07-07 A.D.F <adefacc@tin.it> 2 17 cherokee/trunk/cherokee/handler_cgi_base.c
r639 r799 169 169 props->change_user = false; 170 170 props->check_file = true; 171 props->pass_req_headers = false; 171 172 172 173 /* Parse the configuration tree … … 197 198 } else if (equal_buf_str (&subconf->key, "check_file")) { 198 199 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); 199 203 } 200 204 } … … 453 457 454 458 459 static ret_t 460 foreach_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 455 471 ret_t 456 472 cherokee_handler_cgi_base_build_envp (cherokee_handler_cgi_base_t *cgi, cherokee_connection_t *conn) … … 473 489 env->val.buf, env->val.len); 474 490 } 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 } 475 499 476 500 /* Add the basic enviroment variables cherokee/trunk/cherokee/handler_cgi_base.h
r597 r799 85 85 cherokee_boolean_t check_file; 86 86 cherokee_boolean_t is_error_handler; 87 cherokee_boolean_t pass_req_headers; 87 88 } cherokee_handler_cgi_base_props_t; 88 89 cherokee/trunk/cherokee/header.c
r690 r799 944 944 } 945 945 946 947 ret_t 948 cherokee_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 87 87 88 88 ret_t cherokee_header_get_length (cherokee_header_t *hdr, cuint_t *len); 89 ret_t cherokee_header_for _each (cherokee_header_t *hdr, void *);89 ret_t cherokee_header_foreach_unknown (cherokee_header_t *hdr, cherokee_header_foreach_func_t func, void *data); 90 90 91 91 ret_t cherokee_header_copy_request (cherokee_header_t *hdr, cherokee_buffer_t *request); cherokee/trunk/qa/140-SCGI-EmptyVars.py
r599 r799 2 2 from base import * 3 3 4 DIR = "/SCGI3/" 5 MAGIC = "Cherokee and SCGI rocks!" 6 PORT = 5003 4 DIR = "/SCGI3/" 5 PORT = 5003 7 6 8 7 SCRIPT = """ … … 24 23 vserver!default!directory!<dir>!handler!balancer = round_robin 25 24 vserver!default!directory!<dir>!handler!balancer!type = interpreter 26 vserver!default!directory!<dir>!handler!balancer!local_scgi 2!host = localhost:%d27 vserver!default!directory!<dir>!handler!balancer!local_scgi 2!interpreter = %s %s25 vserver!default!directory!<dir>!handler!balancer!local_scgi3!host = localhost:%d 26 vserver!default!directory!<dir>!handler!balancer!local_scgi3!interpreter = %s %s 28 27 vserver!default!directory!<dir>!priority = 1400 29 28 """ cherokee/trunk/qa/Makefile.am
r598 r799 145 145 138-ChangeUser-cgi.py \ 146 146 139-domain-wildcards1.py \ 147 140-SCGI-EmptyVars.py 147 140-SCGI-EmptyVars.py \ 148 141-FastCGI-EmptyVars.py \ 149 142-SCGI-ExtraVars.py 148 150 149 151 test: