| 761 | } |
| 762 | |
| 763 | AP_DECLARE(const char *) ap_setup_prelinked_modules(process_rec *process) |
| 764 | { |
| 765 | module **m; |
| 766 | module **m2; |
| 767 | const char *error; |
| 768 | |
| 769 | apr_hook_global_pool=process->pconf; |
| 770 | |
| 771 | rebuild_conf_hash(process->pconf, 0); |
| 772 | |
| 773 | /* |
| 774 | * Initialise total_modules variable and module indices |
| 775 | */ |
| 776 | total_modules = 0; |
| 777 | for (m = ap_preloaded_modules; *m != NULL; m++) |
| 778 | (*m)->module_index = total_modules++; |
| 779 | |
| 780 | max_modules = total_modules + DYNAMIC_MODULE_LIMIT + 1; |
| 781 | conf_vector_length = max_modules; |
| 782 | |
| 783 | /* |
| 784 | * Initialise list of loaded modules and short names |
| 785 | */ |
| 786 | ap_loaded_modules = (module **)apr_palloc(process->pool, |
| 787 | sizeof(module *) * conf_vector_length); |
| 788 | if (!ap_module_short_names) |
| 789 | ap_module_short_names = ap_calloc(sizeof(char *), conf_vector_length); |
| 790 | |
| 791 | if (!merger_func_cache) |
| 792 | merger_func_cache = ap_calloc(sizeof(merger_func), conf_vector_length); |
| 793 | |
| 794 | if (ap_loaded_modules == NULL || ap_module_short_names == NULL |
| 795 | || merger_func_cache == NULL) |
| 796 | return "Ouch! Out of memory in ap_setup_prelinked_modules()!"; |
| 797 | |
| 798 | for (m = ap_preloaded_modules, m2 = ap_loaded_modules; *m != NULL; ) |
| 799 | *m2++ = *m++; |
| 800 | |
| 801 | *m2 = NULL; |
| 802 | |
| 803 | /* |
| 804 | * Initialize chain of linked (=activate) modules |
| 805 | */ |
| 806 | for (m = ap_prelinked_modules; *m != NULL; m++) { |
| 807 | error = ap_add_module(*m, process->pconf, NULL); |
| 808 | if (error) { |
| 809 | return error; |
| 810 | } |
| 811 | } |
| 812 | |
| 813 | apr_hook_sort_all(); |
| 814 | |
| 815 | return NULL; |
| 816 | } |
| 817 | |
| 818 | AP_DECLARE(const char *) ap_find_module_name(module *m) |
| 819 | { |
no test coverage detected