Changeset 433
- Timestamp:
- 10/21/06 15:47:20 (2 years ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/cherokee/Makefile.embedded (modified) (3 diffs)
- cherokee/trunk/cherokee/connection.c (modified) (1 diff)
- cherokee/trunk/cherokee/exts_table.c (modified) (4 diffs)
- cherokee/trunk/cherokee/exts_table.h (modified) (1 diff)
- cherokee/trunk/cherokee/handler_dirlist.c (modified) (4 diffs)
- cherokee/trunk/cherokee/handler_file.c (modified) (4 diffs)
- cherokee/trunk/cherokee/handler_redir.c (modified) (5 diffs)
- cherokee/trunk/cherokee/md5crypt.c (modified) (6 diffs)
- cherokee/trunk/cherokee/mime.c (modified) (1 diff)
- cherokee/trunk/cherokee/module_loader.c (modified) (3 diffs)
- cherokee/trunk/cherokee/server-protected.h (modified) (1 diff)
- cherokee/trunk/cherokee/server.c (modified) (18 diffs)
- cherokee/trunk/cherokee/table.c (modified) (1 diff)
- cherokee/trunk/cherokee/thread.c (modified) (1 diff)
- cherokee/trunk/cherokee/virtual_entries.c (modified) (2 diffs)
- cherokee/trunk/cherokee/virtual_entries.h (modified) (1 diff)
- cherokee/trunk/cherokee/virtual_server.c (modified) (16 diffs)
- cherokee/trunk/cherokee/virtual_server.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r432 r433 1 1 2006-10-19 Alvaro Lopez Ortega <alvaro@alobbs.com> 2 3 * cherokee/server.c (update_bogo_now): Date header wasn't 4 generated because of an error in the logic. Fixed. 5 6 * cherokee/handler_dirlist.c (render_file): Code that replaces 7 %icon% and %icon_alt% has been slightly cleaned up. Now it is a 8 bit cleaner. 9 10 * cherokee/exts_table.h, cherokee/exts_table.h, cherokee/thread.c: 11 The extensions table is now implemented as a static structure. 12 13 * cherokee/Makefile.embedded (OBJS): Little files: a couple of 14 objects have been added and removed. 15 16 * cherokee/server.c (cherokee_server_new): Fixed tiny memory leak: 17 The server->icons object was created twice. 18 19 * cherokee/module_loader.c (cherokee_module_loader_get, 20 cherokee_module_loader_set_directory): These are now common 21 function between embedded and non-embedded version. 22 23 * cherokee/handler_redir.c: Code has been re-factored in order to 24 make u-cherokee compile again. 25 26 * cherokee/handler_file.c (cherokee_handler_file_init): use_io 27 cache logic was wrong. There was a extra "not" that was fucking it 28 up. Thanks to A.D.F for noticing there was something wrong with 29 the iocache behaviour. 30 31 * cherokee/mime.c (cherokee_mime_free): Added check to ensure mime 32 object exists. 33 34 * cherokee/server-protected.h, 35 cherokee/server.c (cherokee_server_new): Removed config_file and 36 icons_file properties. They are no longer needed. 37 38 * cherokee/virtual_server.c (configure_virtual_server_property): 39 Added three new configuration keys: "ssl_certificate_file", 40 "ssl_certificate_key_file" and "ssl_ca_list_file". 41 42 * cherokee/virtual_server.h, cherokee/virtual_server.c: 43 server_cert, server_key and ca_cert are not longer char *, not 44 they are cherokee_buffer_t's. 2 45 3 46 * doc/develop/Makefile.am (EXTRA_DIST), cherokee/trunk/cherokee/Makefile.embedded
r198 r433 1 CFLAGS=-O0 -g -DCHEROKEE_COMPILATION -DCHEROKEE_EMBEDDED -I. -I.. -DCHEROKEE_CONFDIR=\""/etc/cherokee"\" -DCHEROKEE_DEPSDIR=\""/usr/share/cherokee/deps"\" 1 CFLAGS=-O0 -g -DCHEROKEE_COMPILATION -DCHEROKEE_EMBEDDED -I. -I.. \ 2 -DCHEROKEE_CONFDIR=\""/etc/cherokee"\" \ 3 -DCHEROKEE_DEPSDIR=\""/usr/share/cherokee/deps"\" \ 4 -DCHEROKEE_ICONSDIR=\""/usr/share/cherokee/icons"\" \ 5 -DCHEROKEE_THEMEDIR=\""/usr/share/cherokee/themes"\" 2 6 LDFLAGS=-lc -ldl 3 7 4 8 OBJS = \ 9 avl.o \ 5 10 md5.o \ 6 11 main.o \ 7 12 http.o \ 8 13 util.o \ 14 list.o \ 9 15 table.o \ 10 16 crc32.o \ … … 21 27 avl/avl.o \ 22 28 encoder.o \ 23 list_ext.o \24 29 validator.o \ 25 30 exts_table.o \ 26 31 connection.o \ 27 32 tdate_parse.o \ 33 config_node.o \ 28 34 logger_table.o \ 29 35 resolv_cache.o \ … … 47 53 handler_dirlist.o \ 48 54 handler_common.o \ 49 list_merge_sort.o \50 55 post.o \ 51 56 nonce.o \ 52 typed_table.o \53 read_config_embedded.o 57 read_config_embedded.o \ 58 virtual_entries.o 54 59 55 60 all: u-cherokee cherokee/trunk/cherokee/connection.c
r389 r433 1570 1570 */ 1571 1571 ret = cherokee_exts_table_get (exts, &conn->request, config_entry); 1572 if (unlikely (ret == ret_error)) { 1572 switch (ret) { 1573 case ret_ok: 1574 break; 1575 case ret_not_found: 1576 return ret_ok; 1577 default: 1573 1578 conn->error_code = http_internal_error; 1574 1579 return ret_error; cherokee/trunk/cherokee/exts_table.c
r384 r433 24 24 25 25 #include "exts_table.h" 26 #include "table.h"27 26 28 27 #define ENTRIES "exts" 29 28 30 29 31 struct cherokee_exts_table {32 cherokee_table_t table;33 cherokee_list_t list;34 };35 36 30 ret_t 37 cherokee_exts_table_ new (cherokee_exts_table_t **et)31 cherokee_exts_table_init (cherokee_exts_table_t *et) 38 32 { 39 33 ret_t ret; 40 CHEROKEE_NEW_STRUCT(n, exts_table);41 34 42 ret = cherokee_table_init(& n->table);43 if (unlikely (ret != ret_ok)) return ret;35 ret = cherokee_table_init(&et->table); 36 if (unlikely (ret != ret_ok)) return ret; 44 37 45 INIT_LIST_HEAD(& n->list);38 INIT_LIST_HEAD(&et->list); 46 39 47 *et = n;48 40 return ret_ok; 49 41 } … … 51 43 52 44 ret_t 53 cherokee_exts_table_ free(cherokee_exts_table_t *et)45 cherokee_exts_table_mrproper (cherokee_exts_table_t *et) 54 46 { 55 47 cherokee_list_content_free (&et->list, (cherokee_list_free_func) cherokee_config_entry_free); 56 48 cherokee_table_mrproper (&et->table); 57 49 58 free (et);59 50 return ret_ok; 60 51 } … … 71 62 if (dot == NULL) return ret_not_found; 72 63 64 printf ("GET0: et %p table %p ext %s\n", et, &et->table, dot+1); 73 65 ret = cherokee_table_get (&et->table, dot+1, (void **)&entry); 66 printf ("GET1: et %p table %p ext %s: %d\n", et, &et->table, dot+1, ret); 74 67 if (ret != ret_ok) return ret; 75 68 … … 100 93 * plugin entry object. 101 94 */ 95 printf ("ADD: et %p table %p ext %s\n", et, &et->table, ext); 102 96 return cherokee_table_add (&et->table, ext, plugin_entry); 103 97 } cherokee/trunk/cherokee/exts_table.h
r122 r433 29 29 #include "buffer.h" 30 30 #include "config_entry.h" 31 #include "list.h" 32 #include "table.h" 31 33 32 typedef struct cherokee_exts_table cherokee_exts_table_t; /* Extension -> config_entry */ 34 35 typedef struct { 36 cherokee_table_t table; 37 cherokee_list_t list; 38 } cherokee_exts_table_t; 39 33 40 #define EXTTABLE(x) ((cherokee_exts_table_t *)(x)) 34 41 35 ret_t cherokee_exts_table_new (cherokee_exts_table_t **et); 36 ret_t cherokee_exts_table_free (cherokee_exts_table_t *et); 42 43 ret_t cherokee_exts_table_init (cherokee_exts_table_t *et); 44 ret_t cherokee_exts_table_mrproper (cherokee_exts_table_t *et); 37 45 38 46 ret_t cherokee_exts_table_get (cherokee_exts_table_t *et, cherokee_buffer_t *requested_url, cherokee_config_entry_t *plugin_entry); cherokee/trunk/cherokee/handler_dirlist.c
r390 r433 501 501 list_sort_by_type (cherokee_list_t *list, cherokee_dirlist_sort_t sort) 502 502 { 503 #ifndef CHEROKEE_EMBEDDED 503 504 switch (sort) { 504 505 case Name_Down: … … 521 522 break; 522 523 } 524 #endif 523 525 } 524 526 … … 705 707 { 706 708 cherokee_boolean_t is_dir; 709 char *alt = NULL; 707 710 char *icon = NULL; 711 char *name = (char *) &file->info.d_name; 708 712 cherokee_icons_t *icons = HANDLER_SRV(dhdl)->icons; 709 char *name = (char *) &file->info.d_name;710 713 cherokee_buffer_t *tmp = &dhdl->header; 711 714 cherokee_handler_dirlist_props_t *props = HDL_DIRLIST_PROP(dhdl); … … 722 725 is_dir = S_ISDIR(file->stat.st_mode); 723 726 724 if (is_dir) { 725 replace_token (buffer, "%icon_alt%", "[DIR]"); 726 replace_token (buffer, "%icon%", icons->directory_icon.buf); 727 } else { 728 cherokee_icons_get_icon (icons, name, &icon); 729 if (icon == NULL) 730 icon = "blank.png"; 731 732 replace_token (buffer, "%icon_alt%", "[ ]"); 733 replace_token (buffer, "%icon%", icon); 734 } 727 alt = (is_dir) ? "[DIR]" : "[ ]"; 728 729 #ifndef CHEROKEE_EMBEDDED 730 if (icons != NULL) { 731 if (is_dir) { 732 icon = icons->directory_icon.buf; 733 } else { 734 cherokee_icons_get_icon (icons, name, &icon); 735 if (icon == NULL) icon = "blank.png"; 736 } 737 } 738 #endif 739 740 replace_token (buffer, "%icon_alt%", alt); 741 replace_token (buffer, "%icon%", icon); 735 742 736 743 /* File cherokee/trunk/cherokee/handler_file.c
r419 r433 44 44 #include "util.h" 45 45 46 #define ENTRIES "handler,file" 47 46 48 47 49 ret_t … … 410 412 */ 411 413 #ifndef CHEROKEE_EMBEDDED 412 use_io = (( !HDL_FILE_PROP(fhdl)->use_cache) &&414 use_io = ((HDL_FILE_PROP(fhdl)->use_cache) && 413 415 (conn->encoder == NULL) && 414 416 (conn->socket.is_tls == non_TLS) && … … 416 418 (http_method_with_body (conn->header.method))); 417 419 420 421 TRACE(ENTRIES, "Using iocache %d\n", use_io); 422 418 423 if (use_io) { 419 424 ret = cherokee_iocache_mmap_lookup (srv->iocache, 420 425 conn->local_directory.buf, 421 426 &io_entry); 422 if (ret != ret_ok) { 427 428 TRACE(ENTRIES, "iocache looked up, local=%s ret=%d\n", conn->local_directory.buf, ret); 429 430 if ((ret != ret_ok) || 431 (io_entry->mmaped == NULL)) 432 { 433 /* Open fhdl->fd 434 */ 423 435 ret = open_local_directory (fhdl, conn); 424 436 if (ret != ret_ok) { … … 427 439 } 428 440 441 /* Map the file 442 */ 429 443 ret = cherokee_iocache_mmap_get_w_fd (srv->iocache, 430 444 conn->local_directory.buf, 431 445 fhdl->fd, 432 446 &io_entry); 447 448 TRACE(ENTRIES, "Got it from the iocache fd=%d, entry=%p\n", fhdl->fd, io_entry); 433 449 } 434 450 cherokee/trunk/cherokee/handler_redir.c
r387 r433 198 198 } 199 199 200 #endif 200 static ret_t 201 configure_rewrite (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_handler_redir_props_t *props) 202 { 203 ret_t ret; 204 cint_t hidden; 205 struct cre_list *n; 206 cherokee_buffer_t *substring; 207 pcre *re = NULL; 208 cherokee_buffer_t *regex = NULL; 209 210 TRACE(ENTRIES, "Converting rewrite rule '%s'\n", conf->key.buf); 211 212 /* Query conf 213 */ 214 cherokee_config_node_read_int (conf, "show", &hidden); 215 hidden = !hidden; 216 217 ret = cherokee_config_node_read (conf, "regex", ®ex); 218 if (ret == ret_ok) { 219 ret = cherokee_regex_table_get (srv->regexs, regex->buf, (void **)&re); 220 if (ret != ret_ok) return ret; 221 } 222 223 ret = cherokee_config_node_read (conf, "substring", &substring); 224 if (ret != ret_ok) return ret; 225 226 /* New RegEx 227 */ 228 n = (struct cre_list*)malloc(sizeof(struct cre_list)); 229 230 INIT_LIST_HEAD (&n->item); 231 n->re = re; 232 n->hidden = hidden; 233 234 cherokee_buffer_init (&n->subs); 235 cherokee_buffer_add_buffer (&n->subs, substring); 236 237 /* Add the list 238 */ 239 cherokee_list_add_tail (LIST(n), &props->regex_list); 240 241 return ret_ok; 242 } 243 244 245 static void 246 cre_entry_free (struct cre_list *n) 247 { 248 cherokee_buffer_mrproper (&n->subs); 249 free (n); 250 } 251 252 253 #endif /* CHEROKEE_EMBEDDED */ 254 201 255 202 256 ret_t … … 297 351 298 352 299 static ret_t300 configure_rewrite (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_handler_redir_props_t *props)301 {302 ret_t ret;303 cint_t hidden;304 struct cre_list *n;305 cherokee_buffer_t *substring;306 pcre *re = NULL;307 cherokee_buffer_t *regex = NULL;308 309 TRACE(ENTRIES, "Converting rewrite rule '%s'\n", conf->key.buf);310 311 /* Query conf312 */313 cherokee_config_node_read_int (conf, "show", &hidden);314 hidden = !hidden;315 316 ret = cherokee_config_node_read (conf, "regex", ®ex);317 if (ret == ret_ok) {318 ret = cherokee_regex_table_get (srv->regexs, regex->buf, (void **)&re);319 if (ret != ret_ok) return ret;320 }321 322 ret = cherokee_config_node_read (conf, "substring", &substring);323 if (ret != ret_ok) return ret;324 325 /* New RegEx326 */327 n = (struct cre_list*)malloc(sizeof(struct cre_list));328 329 INIT_LIST_HEAD (&n->item);330 n->re = re;331 n->hidden = hidden;332 333 cherokee_buffer_init (&n->subs);334 cherokee_buffer_add_buffer (&n->subs, substring);335 336 /* Add the list337 */338 cherokee_list_add_tail (LIST(n), &props->regex_list);339 340 return ret_ok;341 }342 343 344 static void345 cre_entry_free (struct cre_list *n)346 {347 cherokee_buffer_mrproper (&n->subs);348 free (n);349 }350 351 352 353 static ret_t 353 354 props_free (cherokee_handler_redir_props_t *props) … … 357 358 cherokee_buffer_mrproper (&props->url); 358 359 360 #ifndef CHEROKEE_EMBEDDED 359 361 list_for_each_safe (i, tmp, &props->regex_list) { 360 362 cre_entry_free ((struct cre_list *)i); 361 363 } 364 #endif 362 365 363 366 return cherokee_module_props_free_base (MODULE_PROPS(props)); … … 393 396 cherokee_buffer_add_buffer (&props->url, &subconf->val); 394 397 398 #ifndef CHEROKEE_EMBEDDED 395 399 } else if (equal_buf_str (&subconf->key, "rewrite")) { 396 400 cherokee_config_node_foreach (j, subconf) { … … 398 402 if (ret != ret_ok) return ret; 399 403 } 404 #endif 400 405 } 401 406 } cherokee/trunk/cherokee/md5crypt.c
r370 r433 49 49 50 50 if (n > 4) 51 return (NULL);51 return NULL; 52 52 53 53 memset(buf, '\0', sizeof(buf)); … … 57 57 } 58 58 59 return (buf);59 return buf; 60 60 } 61 61 … … 70 70 struct MD5Context ctx, ctx1; 71 71 unsigned long l; 72 cuint_t magic_len; 72 73 73 74 /* Refine the salt first. It's possible we were given an already-hashed … … 77 78 sp = salt; 78 79 79 80 80 /* If it starts with the magic string, then skip that. 81 81 */ 82 if(strncmp(sp, magic, strlen(magic)) == 0) 83 sp += strlen(magic); 82 magic_len = strlen (magic); 83 84 if (strncmp(sp, magic, magic_len) == 0) 85 sp += magic_len; 84 86 85 87 /* It stops at the first '$', max 8 chars … … 87 89 for (ep = sp; *ep != '$'; ep++) { 88 90 if (*ep == '\0' || ep >= (sp + 8)) 89 return (NULL);91 return NULL; 90 92 } 91 93 … … 104 106 105 107 /* Then our magic string */ 106 MD5Update(&ctx, (unsigned char *)magic, strlen(magic));108 MD5Update(&ctx, (unsigned char *)magic, magic_len); 107 109 108 110 /* Then the raw salt */ cherokee/trunk/cherokee/mime.c
r385 r433 51 51 { 52 52 cherokee_list_t *i, *tmp; 53 54 if (mime == NULL) 55 return ret_ok; 53 56 54 57 cherokee_table_mrproper (&mime->mime_table); cherokee/trunk/cherokee/module_loader.c
r410 r433 107 107 } 108 108 109 109 110 #else 111 110 112 111 113 /* This is the non-embedded implementation … … 499 501 } 500 502 503 504 #endif /* CHEROKEE_EMBEDDED */ 505 506 501 507 ret_t 502 508 cherokee_module_loader_get (cherokee_module_loader_t *loader, char *modname, cherokee_module_info_t **info) … … 522 528 return ret_ok; 523 529 } 524 525 526 #endifcherokee/trunk/cherokee/server-protected.h
r384 r433 173 173 */ 174 174 cherokee_config_node_t config; 175 char *config_file;175 // char *config_file; 176 176 char *icons_file; 177 177 cherokee/trunk/cherokee/server.c
r421 r433 108 108 n->fdpoll_method = cherokee_poll_UNSET; 109 109 110 /* Config files111 */112 n->config_file = NULL;113 n->icons_file = NULL;114 115 110 /* Mime types 116 111 */ … … 155 150 n->sendfile.max = 2147483647; 156 151 152 n->icons = NULL; 157 153 n->regexs = NULL; 158 154 n->icons = NULL; … … 187 183 188 184 #ifndef CHEROKEE_EMBEDDED 189 /* Icons190 */191 cherokee_icons_new (&n->icons);192 return_if_fail (n->icons != NULL, ret_nomem);193 194 185 /* IO Cache cache 195 186 */ … … 252 243 /* Config 253 244 */ 245 #ifndef CHEROKEE_EMBEDDED 254 246 cherokee_config_node_init (&n->config); 247 #endif 255 248 256 249 /* Return the object … … 332 325 destroy_all_threads (srv); 333 326 327 /* File descriptors 328 */ 334 329 close (srv->socket); 335 330 331 332 #ifdef HAVE_TLS 336 333 if (srv->socket_tls != -1) { 337 334 close (srv->socket_tls); 338 335 } 339 336 CHEROKEE_MUTEX_DESTROY (&srv->accept_tls_mutex); 337 #endif 338 CHEROKEE_MUTEX_DESTROY (&srv->accept_mutex); 339 340 /* Attached objects 341 */ 340 342 cherokee_encoder_table_mrproper (&srv->encoders); 341 343 cherokee_logger_table_free (srv->loggers); 342 344 343 #ifdef HAVE_TLS344 CHEROKEE_MUTEX_DESTROY (&srv->accept_tls_mutex);345 #endif346 CHEROKEE_MUTEX_DESTROY (&srv->accept_mutex);347 348 345 #ifndef CHEROKEE_EMBEDDED 349 /* Nonces 350 */ 346 cherokee_mime_free (srv->mime); 347 cherokee_icons_free (srv->icons); 348 cherokee_regex_table_free (srv->regexs); 349 cherokee_iocache_free_default (srv->iocache); 350 #endif 351 351 352 cherokee_nonce_table_free (srv->nonces); 352 srv->nonces = NULL;353 354 /* Icons355 */356 cherokee_icons_free (srv->icons);357 if (srv->icons_file != NULL) {358 free (srv->icons_file);359 srv->icons_file = NULL;360 }361 362 /* Mime363 */364 if (srv->mime != NULL) {365 cherokee_mime_free (srv->mime);366 srv->mime = NULL;367 }368 369 cherokee_iocache_free_default (srv->iocache);370 371 cherokee_regex_table_free (srv->regexs);372 #endif373 353 374 354 /* Virtual servers … … 384 364 cherokee_buffer_mrproper (&srv->listen_to); 385 365 cherokee_buffer_mrproper (&srv->chroot); 386 387 /* Clean config files entries388 */389 if (srv->config_file != NULL) {390 free (srv->config_file);391 srv->config_file = NULL;392 }393 394 366 cherokee_buffer_mrproper (&srv->pidfile); 395 367 cherokee_buffer_mrproper (&srv->panic_action); 396 368 397 /* Module loader: 398 * It must be the last action to perform because 399 * it will close all the opened modules 369 /* Module loader: It must be the last action to be performed 370 * because it will close all the opened modules. 400 371 */ 401 372 cherokee_module_loader_mrproper (&srv->loader); … … 1103 1074 */ 1104 1075 newtime = time (NULL); 1105 if (srv->bogo_now <= newtime)1076 if (srv->bogo_now >= newtime) 1106 1077 return; 1107 1078 … … 1207 1178 } 1208 1179 1180 1209 1181 static ret_t 1210 1182 matching_list_add_deny_cb (char *val, void *data) … … 1212 1184 return cherokee_matching_list_add_deny (MLIST(data), val); 1213 1185 } 1186 1214 1187 1215 1188 static ret_t … … 1307 1280 } 1308 1281 1282 1309 1283 static ret_t 1310 1284 load_mime_file (cherokee_server_t *srv, cherokee_buffer_t *mime_file) … … 1312 1286 ret_t ret; 1313 1287 1288 #ifndef CHEROKEE_EMBEDDED 1314 1289 if (srv->mime == NULL) { 1315 1290 ret = cherokee_mime_new (&srv->mime); … … 1325 1300 return ret; 1326 1301 } 1302 #endif 1327 1303 1328 1304 return ret_ok; … … 1430 1406 } 1431 1407 1408 } else if (equal_buf_str (&conf->key, "thread_policy")) { 1409 #ifdef HAVE_PTHREAD 1410 if (equal_buf_str (&conf->val, "fifo")) { 1411 srv->thread_policy = SCHED_FIFO; 1412 } else if (equal_buf_str (&conf->val, "rr")) { 1413 srv->thread_policy = SCHED_RR; 1414 } else if (equal_buf_str (&conf->val, "other")) { 1415 srv->thread_policy = SCHED_OTHER; 1416 } else { 1417 PRINT_MSG ("ERROR: Unknown thread policy '%s'\n", conf->val.buf); 1418 return ret_error; 1419 } 1420 #else 1421 PRINT_MSG ("WARNING: Ignoring thread_policy entry '%s'\n", conf->val.buf); 1422 #endif 1423 1432 1424 } else if (equal_buf_str (&conf->key, "user")) { 1433 1425 struct passwd *pwd; … … 1466 1458 } 1467 1459 1460 1468 1461 static ret_t 1469 1462 configure_server (cherokee_server_t *srv) … … 1480 1473 */ 1481 1474 ret = cherokee_config_node_get (subconf, "module_dir", &subconf2); 1482 printf ("module_dir %d\n", ret);1483 1475 if (ret == ret_ok) { 1484 1476 ret = cherokee_module_loader_set_directory (&srv->loader, &subconf2->val); … … 1494 1486 /* Icons 1495 1487 */ 1488 #ifndef CHEROKEE_EMBEDDED 1496 1489 TRACE (ENTRIES, "Configuring %s\n", "icons"); 1497 1490 ret = cherokee_config_node_get (&srv->config, "icons", &subconf); … … 1503 1496 if (ret != ret_ok) return ret; 1504 1497 } 1498 #endif 1505 1499 1506 1500 /* Load the virtual servers … … 1537 1531 return ret_ok; 1538 1532 } 1533 1539 1534 1540 1535 ret_t cherokee/trunk/cherokee/table.c
r354 r433 34 34 equal (void *avl_param, void *key, void *val) 35 35 { 36 // printf ("equal (%s, %s) = %d\n", key, val, strcmp((const char *)key, (const char *)val)); 36 37 return strcmp((const char *)key, (const char *)val); 37 38 } cherokee/trunk/cherokee/thread.c
r429 r433 861 861 /* 1.- Read the extension configuration 862 862 */ 863 if (ventry->exts != NULL) { 864 ret = cherokee_connection_get_ext_entry (conn, ventry->exts, &entry); 865 if (unlikely (ret != ret_ok)) { 866 cherokee_connection_setup_error_handler (conn); 867 conn->phase = phase_init; 868 continue; 869 } 863 ret = cherokee_connection_get_ext_entry (conn, &ventry->exts, &entry); 864 if (unlikely (ret != ret_ok)) { 865 cherokee_connection_setup_error_handler (conn); 866 conn->phase = phase_init; 867 continue; 870 868 } 871 869 cherokee/trunk/cherokee/virtual_entries.c
r293 r433 32 32 ret_t ret; 33 33 34 ventry->exts = NULL; 35 36 ret = cherokee_reqs_list_init (&ventry->reqs); 34 ret = cherokee_exts_table_init (&ventry->exts); 37 35 if (unlikely(ret < ret_ok)) return ret; 38 36 39 37 ret = cherokee_dirs_table_init (&ventry->dirs); 40 38 if (unlikely(ret < ret_ok)) return ret; 39 40 #ifndef CHEROKEE_EMBEDDED 41 ret = cherokee_reqs_list_init (&ventry->reqs); 42 if (unlikely(ret < ret_ok)) return ret; 43 #endif 41 44 42 45 return ret_ok; … … 48 51 { 49 52 cherokee_dirs_table_mrproper (&ventry->dirs); 53 cherokee_exts_table_mrproper (&ventry->exts); 54 55 #ifndef CHEROKEE_EMBEDDED 50 56 cherokee_reqs_list_mrproper (&ventry->reqs); 51 52 if (ventry->exts != NULL) { 53 cherokee_exts_table_free (ventry->exts); 54 ventry->exts = NULL; 55 } 57 #endif 56 58 57 59 return ret_ok; cherokee/trunk/cherokee/virtual_entries.h
r269 r433 33 33 34 34 typedef struct { 35 cherokee_dirs_table_t dirs; /* Eg: (/public, common) */36 cherokee_exts_table_t *exts; /* Eg: (.php, phpcgi) */37 cherokee_reqs_list_t reqs; /* Eg: ("*.mp3" auth{}) */35 cherokee_dirs_table_t dirs; /* Eg: (/public, common) */ 36 cherokee_exts_table_t exts; /* Eg: (.php, phpcgi) */ 37 cherokee_reqs_list_t reqs; /* Eg: ("*.mp3" auth{}) */ 38 38 } cherokee_virtual_entries_t; 39 39 cherokee/trunk/cherokee/virtual_server.c
r423 r433 65 65 CHEROKEE_MUTEX_INIT(&n->data.tx_mutex, NULL); 66 66 67 n->server_cert = NULL;68 n->server_key = NULL;69 n->ca_cert = NULL;67 cherokee_buffer_init (&n->server_cert); 68 cherokee_buffer_init (&n->server_key); 69 cherokee_buffer_init (&n->ca_cert); 70 70 71 71 #ifdef HAVE_TLS … … 100 100 cherokee_virtual_server_free (cherokee_virtual_server_t *vserver) 101 101 { 102 if (vserver->server_cert != NULL) { 103 free (vserver->server_cert); 104 vserver->server_cert = NULL; 105 } 106 107 if (vserver->server_key != NULL) { 108 free (vserver->server_key); 109 vserver->server_key = NULL; 110 } 111 112 if (vserver->ca_cert != NULL) { 113 free (vserver->ca_cert); 114 vserver->ca_cert = NULL; 115 } 102 cherokee_buffer_mrproper (&vserver->server_cert); 103 cherokee_buffer_mrproper (&vserver->server_key); 104 cherokee_buffer_mrproper (&vserver->ca_cert); 116 105 117 106 if (vserver->error_handler != NULL) { … … 204 193 return ret_not_found; 205 194 #endif 206 207 return ((vserver->server_cert != NULL) || 208 (vserver->server_key != NULL) || 209 (vserver->ca_cert != NULL)) ? ret_ok : ret_not_found; 195 if (cherokee_buffer_is_empty (&vserver->server_cert)) 196 return ret_ok; 197 if (cherokee_buffer_is_empty (&vserver->server_key)) 198 return ret_ok; 199 if (cherokee_buffer_is_empty (&vserver->ca_cert)) 200 return ret_ok; 201 202 return ret_not_found; 210 203 } 211 204 … … 219 212 return ret_ok; 220 213 #endif 221 222 if ((vsrv->ca_cert == NULL) &&223 (vsrv->server_cert == NULL)&&224 (vsrv->server_key == NULL))225 {214 /* Check if all of them are empty 215 */ 216 if (cherokee_buffer_is_empty (&vsrv->ca_cert) && 217 cherokee_buffer_is_empty (&vsrv->server_key) && 218 cherokee_buffer_is_empty (&vsrv->server_cert)) 226 219 return ret_not_found; 227 } 228 229 if ((vsrv->ca_cert == NULL) || 230 (vsrv->server_cert == NULL) || <