| 137 | } |
| 138 | |
| 139 | static void setupenv(request_rec *r, const char *password, const char *apache_role) |
| 140 | { |
| 141 | ap_add_common_vars(r); |
| 142 | ap_add_cgi_vars(r); |
| 143 | apr_table_setn(r->subprocess_env, "FCGI_ROLE", AP_FCGI_AUTHORIZER_STR); |
| 144 | if (apache_role) { |
| 145 | apr_table_setn(r->subprocess_env, "FCGI_APACHE_ROLE", apache_role); |
| 146 | } |
| 147 | if (password) { |
| 148 | apr_table_setn(r->subprocess_env, "REMOTE_PASSWD", password); |
| 149 | } |
| 150 | /* Drop the variables CONTENT_LENGTH, PATH_INFO, PATH_TRANSLATED, |
| 151 | * SCRIPT_NAME and most Hop-By-Hop headers - EXCEPT we will pass |
| 152 | * PROXY_AUTH to allow CGI to perform proxy auth for httpd |
| 153 | */ |
| 154 | apr_table_unset(r->subprocess_env, "CONTENT_LENGTH"); |
| 155 | apr_table_unset(r->subprocess_env, "PATH_INFO"); |
| 156 | apr_table_unset(r->subprocess_env, "PATH_TRANSLATED"); |
| 157 | apr_table_unset(r->subprocess_env, "SCRIPT_NAME"); |
| 158 | apr_table_unset(r->subprocess_env, "HTTP_KEEP_ALIVE"); |
| 159 | apr_table_unset(r->subprocess_env, "HTTP_TE"); |
| 160 | apr_table_unset(r->subprocess_env, "HTTP_TRAILER"); |
| 161 | apr_table_unset(r->subprocess_env, "HTTP_TRANSFER_ENCODING"); |
| 162 | apr_table_unset(r->subprocess_env, "HTTP_UPGRADE"); |
| 163 | |
| 164 | /* Connection hop-by-hop header to prevent the CGI from hanging */ |
| 165 | apr_table_setn(r->subprocess_env, "HTTP_CONNECTION", "close"); |
| 166 | } |
| 167 | |
| 168 | static apr_status_t recv_data(const fcgi_provider_conf *conf, |
| 169 | request_rec *r, |
no test coverage detected