50 #include "configmanager.h" |
49 #include "configmanager.h" |
51 |
50 |
52 #include "vserver.h" |
51 #include "vserver.h" |
53 #include "../util/pblock.h" |
52 #include "../util/pblock.h" |
54 #include "../util/util.h" |
53 #include "../util/util.h" |
|
54 #include "../util/atomic.h" |
55 |
55 |
56 pool_handle_t *cfg_pool; |
56 pool_handle_t *cfg_pool; |
57 |
57 |
58 // TODO: Funktion für ConfigDirective -> directive |
58 // TODO: Funktion für ConfigDirective -> directive |
59 // TODO: Funktion für UcxList parameter list -> pblock |
59 // TODO: Funktion für UcxList parameter list -> pblock |
222 |
222 |
223 return serverconfig; |
223 return serverconfig; |
224 } |
224 } |
225 |
225 |
226 void cfg_ref(ServerConfiguration *cfg) { |
226 void cfg_ref(ServerConfiguration *cfg) { |
227 ucx_atomic_inc_32(&cfg->ref); |
227 ws_atomic_inc32(&cfg->ref); |
228 } |
228 } |
229 |
229 |
230 void cfg_unref(ServerConfiguration *cfg) { |
230 void cfg_unref(ServerConfiguration *cfg) { |
231 uint32_t ref = ucx_atomic_dec_32_nv(&cfg->ref); |
231 uint32_t ref = ws_atomic_dec32(&cfg->ref); |
232 if(ref == 0) { |
232 if(ref == 0) { |
233 // TODO: free configuration |
233 // TODO: free configuration |
234 } |
234 } |
235 } |
235 } |
236 |
236 |
250 // mime file |
250 // mime file |
251 sstr_t mf = cfg_directivelist_get_str(obj->directives, sstr("MimeFile")); |
251 sstr_t mf = cfg_directivelist_get_str(obj->directives, sstr("MimeFile")); |
252 |
252 |
253 sstr_t base = sstr("config/"); |
253 sstr_t base = sstr("config/"); |
254 sstr_t file; |
254 sstr_t file; |
255 file.length = base.length + mf.length + 1; |
255 file.length = base.length + mf.length; |
256 file.ptr = alloca(file.length); |
256 file.ptr = alloca(file.length + 1); |
257 file.ptr[file.length] = 0; |
257 file.ptr[file.length] = 0; |
258 file = sstrncat(2, file, base, mf); |
258 file = sstrncat(2, file, base, mf); |
259 |
259 |
260 ConfigFile *f = cfgmgr_get_file(file); |
260 ConfigFile *f = cfgmgr_get_file(file); |
261 if(f == NULL) { |
261 if(f == NULL) { |