| 277 | */ |
| 278 | |
| 279 | static void ssl_configure_env(request_rec *r, SSLConnRec *sslconn) |
| 280 | { |
| 281 | int i; |
| 282 | const apr_array_header_t *arr = apr_table_elts(r->subprocess_env); |
| 283 | const apr_table_entry_t *elts = (const apr_table_entry_t *)arr->elts; |
| 284 | |
| 285 | sslconn->shutdown_type = SSL_SHUTDOWN_TYPE_STANDARD; |
| 286 | |
| 287 | for (i = 0; i < arr->nelts; i++) { |
| 288 | const char *key = elts[i].key; |
| 289 | |
| 290 | switch (*key) { |
| 291 | case 's': |
| 292 | /* being case-sensitive here. |
| 293 | * and not checking for the -shutdown since these are the only |
| 294 | * SetEnvIf "flags" we support |
| 295 | */ |
| 296 | if (!strncmp(key+1, "sl-", 3)) { |
| 297 | key += 4; |
| 298 | if (!strncmp(key, "unclean", 7)) { |
| 299 | sslconn->shutdown_type = SSL_SHUTDOWN_TYPE_UNCLEAN; |
| 300 | } |
| 301 | else if (!strncmp(key, "accurate", 8)) { |
| 302 | sslconn->shutdown_type = SSL_SHUTDOWN_TYPE_ACCURATE; |
| 303 | } |
| 304 | return; /* should only ever be one ssl-*-shutdown */ |
| 305 | } |
| 306 | break; |
| 307 | } |
| 308 | } |
| 309 | } |
| 310 | |
| 311 | static int ssl_check_post_client_verify(request_rec *r, SSLSrvConfigRec *sc, |
| 312 | SSLDirConfigRec *dc, SSLConnRec *sslconn, |