| 1033 | } |
| 1034 | |
| 1035 | static int cgid_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, |
| 1036 | server_rec *main_server) |
| 1037 | { |
| 1038 | apr_proc_t *procnew = NULL; |
| 1039 | const char *userdata_key = "cgid_init"; |
| 1040 | int ret = OK; |
| 1041 | void *data; |
| 1042 | |
| 1043 | root_server = main_server; |
| 1044 | root_pool = p; |
| 1045 | |
| 1046 | apr_pool_userdata_get(&data, userdata_key, main_server->process->pool); |
| 1047 | if (!data) { |
| 1048 | procnew = apr_pcalloc(main_server->process->pool, sizeof(*procnew)); |
| 1049 | procnew->pid = -1; |
| 1050 | procnew->err = procnew->in = procnew->out = NULL; |
| 1051 | apr_pool_userdata_set((const void *)procnew, userdata_key, |
| 1052 | apr_pool_cleanup_null, main_server->process->pool); |
| 1053 | return ret; |
| 1054 | } |
| 1055 | else { |
| 1056 | procnew = data; |
| 1057 | } |
| 1058 | |
| 1059 | if (ap_state_query(AP_SQ_MAIN_STATE) != AP_SQ_MS_CREATE_PRE_CONFIG) { |
| 1060 | char *tmp_sockname; |
| 1061 | |
| 1062 | parent_pid = getpid(); |
| 1063 | tmp_sockname = ap_runtime_dir_relative(p, sockname); |
| 1064 | if (strlen(tmp_sockname) > sizeof(server_addr->sun_path) - 1) { |
| 1065 | tmp_sockname[sizeof(server_addr->sun_path)] = '\0'; |
| 1066 | ap_log_error(APLOG_MARK, APLOG_ERR, 0, main_server, APLOGNO(01254) |
| 1067 | "The length of the ScriptSock path exceeds maximum, " |
| 1068 | "truncating to %s", tmp_sockname); |
| 1069 | } |
| 1070 | sockname = tmp_sockname; |
| 1071 | |
| 1072 | server_addr_len = APR_OFFSETOF(struct sockaddr_un, sun_path) + strlen(sockname); |
| 1073 | server_addr = (struct sockaddr_un *)apr_palloc(p, server_addr_len + 1); |
| 1074 | server_addr->sun_family = AF_UNIX; |
| 1075 | strcpy(server_addr->sun_path, sockname); |
| 1076 | |
| 1077 | ret = cgid_start(p, main_server, procnew); |
| 1078 | if (ret != OK ) { |
| 1079 | return ret; |
| 1080 | } |
| 1081 | } |
| 1082 | return ret; |
| 1083 | } |
| 1084 | |
| 1085 | static void *create_cgid_config(apr_pool_t *p, server_rec *s) |
| 1086 | { |
nothing calls this directly
no test coverage detected