147 * AuthDB |
148 * AuthDB |
148 * Listener (we set the VirtualServer later) |
149 * Listener (we set the VirtualServer later) |
149 * VirtualServer (dependencies: Listener) |
150 * VirtualServer (dependencies: Listener) |
150 */ |
151 */ |
151 |
152 |
152 /* init logfile first */ |
153 // init logfile first |
153 UcxList *lfl = ucx_map_sstr_get(serverconf->objects, sstrn("LogFile", 7)); |
154 UcxList *lfl = ucx_map_sstr_get(serverconf->objects, sstrn("LogFile", 7)); |
154 if(lfl != NULL) { |
155 if(lfl != NULL) { |
155 ServerConfigObject *logobj = lfl->data; |
156 ServerConfigObject *logobj = lfl->data; |
156 if(logobj == NULL) { |
157 if(logobj == NULL) { |
157 /* error */ |
158 // error |
158 return NULL; |
159 return NULL; |
159 } |
160 } |
160 |
161 |
161 int ret = cfg_handle_logfile(serverconfig, logobj); |
162 int ret = cfg_handle_logfile(serverconfig, logobj); |
162 if(ret != 0) { |
163 if(ret != 0) { |
163 /* cannot initialize log file */ |
164 // cannot initialize log file |
164 return NULL; |
165 return NULL; |
165 } |
166 } |
166 } else { |
167 } else { |
167 /* horrible error */ |
168 // horrible error |
168 return NULL; |
169 return NULL; |
169 } |
170 } |
170 |
171 |
171 UcxList *list = ucx_map_sstr_get(serverconf->objects, sstrn("Runtime", 7)); |
172 UcxList *list = ucx_map_sstr_get(serverconf->objects, sstrn("Runtime", 7)); |
172 UCX_FOREACH(UcxList*, list, elm) { |
173 UCX_FOREACH(UcxList*, list, elm) { |
173 ServerConfigObject *scfgobj = elm->data; |
174 ServerConfigObject *scfgobj = elm->data; |
174 cfg_handle_runtime(serverconfig, scfgobj); |
175 if(cfg_handle_runtime(serverconfig, scfgobj)) { |
|
176 // error |
|
177 return NULL; |
|
178 } |
175 } |
179 } |
176 |
180 |
177 list = ucx_map_sstr_get(serverconf->objects, sstrn("Threadpool", 10)); |
181 list = ucx_map_sstr_get(serverconf->objects, sstrn("Threadpool", 10)); |
178 UCX_FOREACH(UcxList*, list, elm) { |
182 UCX_FOREACH(UcxList*, list, elm) { |
179 cfg_handle_threadpool(serverconfig, elm->data); |
183 if(cfg_handle_threadpool(serverconfig, elm->data)) { |
|
184 return NULL; |
|
185 } |
180 } |
186 } |
181 // check thread pool config |
187 // check thread pool config |
182 if(check_thread_pool_cfg() != 0) { |
188 if(check_thread_pool_cfg() != 0) { |
183 /* critical error */ |
189 /* critical error */ |
184 return NULL; |
190 return NULL; |
185 } |
191 } |
186 |
192 |
187 list = ucx_map_sstr_get(serverconf->objects, sstrn("EventHandler", 12)); |
193 list = ucx_map_sstr_get(serverconf->objects, sstrn("EventHandler", 12)); |
188 UCX_FOREACH(UcxList*, list, elm) { |
194 UCX_FOREACH(UcxList*, list, elm) { |
189 cfg_handle_eventhandler(serverconfig, (ServerConfigObject*)elm->data); |
195 if(cfg_handle_eventhandler( |
|
196 serverconfig, (ServerConfigObject*)elm->data)) { |
|
197 // error |
|
198 return NULL; |
|
199 } |
190 } |
200 } |
191 // check event handler config |
201 // check event handler config |
192 if(check_event_handler_cfg() != 0) { |
202 if(check_event_handler_cfg() != 0) { |
193 /* critical error */ |
203 /* critical error */ |
194 return NULL; |
204 return NULL; |
195 } |
205 } |
196 |
206 |
197 list = ucx_map_sstr_get(serverconf->objects, sstrn("AccessLog", 9)); |
207 list = ucx_map_sstr_get(serverconf->objects, sstrn("AccessLog", 9)); |
198 UCX_FOREACH(UcxList*, list, elm) { |
208 UCX_FOREACH(UcxList*, list, elm) { |
199 ServerConfigObject *scfgobj = elm->data; |
209 ServerConfigObject *scfgobj = elm->data; |
200 cfg_handle_accesslog(serverconfig, scfgobj); |
210 if(cfg_handle_accesslog(serverconfig, scfgobj)) { |
|
211 return NULL; |
|
212 } |
201 } |
213 } |
202 |
214 |
203 list = ucx_map_sstr_get(serverconf->objects, sstrn("AuthDB", 6)); |
215 list = ucx_map_sstr_get(serverconf->objects, sstrn("AuthDB", 6)); |
204 UCX_FOREACH(UcxList*, list, elm) { |
216 UCX_FOREACH(UcxList*, list, elm) { |
205 ServerConfigObject *scfgobj = elm->data; |
217 ServerConfigObject *scfgobj = elm->data; |
206 cfg_handle_authdb(serverconfig, scfgobj); |
218 if(cfg_handle_authdb(serverconfig, scfgobj)) { |
|
219 return NULL; |
|
220 } |
207 } |
221 } |
208 |
222 |
209 list = ucx_map_sstr_get(serverconf->objects, sstrn("Listener", 8)); |
223 list = ucx_map_sstr_get(serverconf->objects, sstrn("Listener", 8)); |
210 UCX_FOREACH(UcxList*, list, elm) { |
224 UCX_FOREACH(UcxList*, list, elm) { |
211 ServerConfigObject *scfgobj = elm->data; |
225 ServerConfigObject *scfgobj = elm->data; |
212 cfg_handle_listener(serverconfig, scfgobj); |
226 if(cfg_handle_listener(serverconfig, scfgobj)) { |
|
227 return NULL; |
|
228 } |
213 } |
229 } |
214 |
230 |
215 list = ucx_map_sstr_get(serverconf->objects, sstrn("VirtualServer", 13)); |
231 list = ucx_map_sstr_get(serverconf->objects, sstrn("VirtualServer", 13)); |
216 UCX_FOREACH(UcxList*, list, elm) { |
232 UCX_FOREACH(UcxList*, list, elm) { |
217 ServerConfigObject *scfgobj = elm->data; |
233 ServerConfigObject *scfgobj = elm->data; |
218 cfg_handle_vs(serverconfig, scfgobj); |
234 if(cfg_handle_vs(serverconfig, scfgobj)) { |
|
235 return NULL; |
|
236 } |
219 } |
237 } |
220 |
238 |
221 |
239 |
222 // set VirtualServer for all listeners |
240 // set VirtualServer for all listeners |
223 UcxList *ls = serverconfig->listeners; |
241 UcxList *ls = serverconfig->listeners; |