| 322 | } |
| 323 | |
| 324 | static void merge_server_configs(apr_pool_t *p, ap_conf_vector_t *base, |
| 325 | server_rec *virt) |
| 326 | { |
| 327 | /* Can reuse the 'virt' vector for the spine of it, since we don't |
| 328 | * have to deal with the moral equivalent of .htaccess files here... |
| 329 | */ |
| 330 | |
| 331 | void **base_vector = (void **)base; |
| 332 | void **virt_vector = (void **)virt->module_config; |
| 333 | module *modp; |
| 334 | |
| 335 | for (modp = ap_top_module; modp; modp = modp->next) { |
| 336 | merger_func df = modp->merge_server_config; |
| 337 | int i = modp->module_index; |
| 338 | |
| 339 | if (!virt_vector[i]) { |
| 340 | if (df && modp->create_server_config |
| 341 | && (ap_get_module_flags(modp) & |
| 342 | AP_MODULE_FLAG_ALWAYS_MERGE)) { |
| 343 | virt_vector[i] = (*modp->create_server_config)(p, virt); |
| 344 | } |
| 345 | else { |
| 346 | virt_vector[i] = base_vector[i]; |
| 347 | df = NULL; |
| 348 | } |
| 349 | } |
| 350 | if (df) { |
| 351 | virt_vector[i] = (*df)(p, base_vector[i], virt_vector[i]); |
| 352 | } |
| 353 | } |
| 354 | } |
| 355 | |
| 356 | AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_request_config(apr_pool_t *p) |
| 357 | { |
no test coverage detected