2007-07-28 A.D.F * cherokee/source_interpreter.c, cherokee/sha1.c, cherokee/regex.c, cherokee/post.c, cherokee/ncpus.c, cherokee/md5crypt.c, cherokee/md5.c, cherokee/matching_list.c, cherokee/match.c, cherokee/icons.c, cherokee/header.c - space / indentation / code style cleanups. 2007-07-26 Alvaro Lopez Ortega * cherokee/util.c (cherokee_mkstemp): Added new function. It wraps mkstemp() and cherokee_win32_mkstemp(). 2007-07-23 Ross Smith II * cherokee/post.c, cherokee/win32_misc.c, cherokee/win32_misc.h: Add mkstemp() functionality missing in MinGW. 2007-07-26 Alvaro Lopez Ortega * qa/run-tests.py: Added new option for showing how much memory is the server using during the QA test execution. 2007-07-25 Alvaro Lopez Ortega * qa/run-tests.py, qa/help.py (HELP_PRINT_PARAMETERS): -m was duplicated. The "delay between tests" parameter is now -j. 2007-07-22 Alvaro Lopez Ortega * cherokee/handler_redir.c, cherokee/read_config_embedded.c, cherokee/read_config_embedded.h, cherokee/plugin_loader.c, cherokee/handler_dirlist.c, cherokee/virtual_server.c, cherokee/win32_misc.c, cherokee/handler_common.c, cherokee/thread.c, cherokee/buffer.c, cherokee/handler_file.c, cherokee/main.c, cherokee/unix4win32.h, cherokee/Makefile.embedded, cherokee/connection.c, cherokee/server.c, cherokee/virtual_entries.c, cherokee/reqs_list_entry.c: CHEROKEE_EMBEDDED removed. Nobody was using it; it didn't make sense to continue maintaining it. Besides, embedded devices are much more powerful nowadays. * cherokee/handler.c (cherokee_handler_free): Free the handler even of something goes wrong with the ->free method. * cherokee/handler_error.c (build_hardcoded_response_page), cherokee/connection-protected.h, cherokee/connection.c: Adapted to the new cherokee_buffer_escape_html() interface and the buffer_escape removal. * cherokee/buffer_escape.h, cherokee/buffer_escape.c, cherokee/Makefile.am: Removed. This class was a mistake and should no longer exist. * cherokee/buffer.c (cherokee_buffer_escape_html), cherokee/buffer.h: Reworked: instead the allocating a new buffer it generates the escaped version inside the second buffer provided as argument. 2007-07-21 Alvaro Lopez Ortega * cherokee/util.h, cherokee/util.c (cherokee_print_errno): Added new printing error function. * cherokee/regex.c (cherokee_regex_table_free): Again, another little tiny memory leak. The server leaked 41 bytes on each reload. Fixed. * cherokee/plugin_loader.c (cherokee_plugin_loader_mrproper): Fixed nano memory leak - no more than 30 or 40 bytes. * cherokee/avl.c, cherokee/avl.h, cherokee/dirs_table.c, cherokee/encoder_table.c, cherokee/handler_fastcgi.c, cherokee/iocache.c, cherokee/thread.h: Converted to use cherokee_func_free() * cherokee/common.h: Added new function type: cherokee_func_free. * cherokee/source_interpreter.c, cherokee/source_interpreter.h, cherokee/source.h, cherokee/source.c: Another little tiny memory leak has been fixed here. The freed object wasn't calling its predecessor destructor. * cherokee/balancer.c (cherokee_balancer_mrproper): Memory leak fixed. It wasn't freeing the source objects. * cherokee/validator_plain.c (cherokee_validator_plain_check): Rewritten from scratch. Now, it uses temporal buffers instead of a fixed size temporal array - among other improvements. * cherokee/validator.c (cherokee_validator_digest_check), cherokee/validator_plain.c (cherokee_validator_plain_check), cherokee/validator_mysql.c (cherokee_validator_mysql_check), cherokee/validator.h: The battle against char * continues! Another parameter char * converted to our sweet cherokee_buffer_t *. * cherokee/validator.c (digest_HA2, cherokee_validator_digest_check): Slightly optimized, a call to cherokee_buffer_add_va() has been replaced. * cherokee/validator.c (cherokee_validator_digest_response): Fixed a 32 bytes memory leak. * cherokee/iocache.c (cherokee_iocache_free): Now it uses cherokee_avl_mrproper() instead of cherokee_avl_while() plus free(). Besides the correctness, it fixed a memory leak. * cherokee/avl.c: Clean up: avl_node_* static methods renamed. Rewritten as _new/_free instead of _init/_mrproper. (cherokee_avl_mrproper): Rewritten to use node_free(). * cherokee/thread.c (process_active_connections), cheroke/server.c, cherokee/server-protected.h: Reworked in order to remove the call to cherokee_server_get_conns_num(). A thread should never query or access other threads (and that's exactly what method was doing). * cherokee/thread.c (cherokee_thread_free): It wasn't freeing the reusable connections. Fixed. * qa/util.py (count_down): Refactored. There were two places in which it needed count-downs. This is the common function. * qa/run-tests.py (clean_up): Added a little pause. We should give the server sometime to die gratefully between the SIGTERM and SIGKILL signals. * qa/Makefile.am, qa/143-ContentRange-NoIO.py, qa/144-ContentRange2-NoIO.py, qa/145-ContentRange3-NoIO.py, qa/146-ContentRange4-NoIO.py, qa/147-ContentRange-Double-NoIO.py, qa/148-ContentRange-Double2-NoIO.py: Added 6 new test to check partial file management without IOcache. * cherokee/icons.c (cherokee_icons_free), cherokee/avl.c (node_first): Protected against NULL pointers. * cherokee/server.c (cherokee_server_handle_panic): PRINT_ERROR_S to PRINT_MSG_S. Source file and line number don't help in this case. 2007-07-19 A.D.F * cherokee/fcgi_manager.c - removed double call to cherokee_fd_set_nonblocking(). 2007-07-19 A.D.F * cherokee/thread.c - __accept_from_server(), fixed a very uncommon memory leak on a new connection object; - enlarged MUTEX_LOCK / MUTEX_UNLOCK section. 2007-07-19 A.D.F * cherokee/socket.c - cherokee_socket_close(), use cherokee_close_fd() instead of socketclose(fd) / close(fd); - space cleanup. 2007-07-17 Alvaro Lopez Ortega * doc/Makefile.am: Inhibit concurrent compilation. 2007-07-17 A.D.F * cherokee/util.c - cherokee_parse_query_string(), skip empty tokens. 2007-07-17 Alvaro Lopez Ortega * qa/142-SCGI-ExtraVars.py (PORT): If was duplicated with QA test #141. It's fixed now. * cherokee/virtual_server.c, cherokee/virtual_server.h, cherokee/module.h, cherokee/validator.c, cherokee/encoder_table.c, cherokee/validator.h, cherokee/regex.c, cherokee/thread.h, cherokee/handler.h, cherokee/header.h, cherokee/handler_fastcgi.c, cherokee/handler_proxy.h, cherokee/mime.h, cherokee/logger.h, cherokee/cherokee.h, cherokee/dirs_table.c, cherokee/mime_entry.h, cherokee/socket.c: Removed all the cherokee_table_t references. * cherokee/table.h, cherokee/table.c, cherokee/Makefile.am: cherokee_table_t does no longer exist. * cherokee/validator.c: * cherokee/plugin_loader.h, cherokee/plugin_loader.c, cherokee/handler_fastcgi.c, cherokee/thread.h, cherokee/thread.c: cherokee_table_t to cherokee_avl_t convertion. * cherokee/avl.h, cherokee/avl.c (cherokee_avl_del_ptr): Added missing method. * cherokee/resolv_cache.c (cherokee_resolv_cache_clean): cherokee_table_t to cherokee_avl_t convertion. * cherokee/avl.c (cherokee_avl_mrproper): Implemented. * qa/run-tests.py: Count down fixed. * cherokee/util.h, cherokee/util.c, cherokee/connection.c, cherokee/connection-protected.h, cherokee/validator.c, cherokee/nonce.c, cherokee/nonce.h: cherokee_table replaced by cherokee_avl. * cherokee/handler_dirlist.c (render_file): Adapted to the last icons.c change. * cherokee/icons.h, cherokee/icons.c: Added a new property blank_icon that is returned when nothing else matches. 2007-07-16 Alvaro Lopez Ortega * cherokee/icons.c: Converted to use cherokee_buffer_t * instead of char *. * cherokee/avl.c (cherokee_avl_mrproper2): Added new method. * cherokee/exts_table.c, cherokee/regex.c, cherokee/mime.c, cherokee/encoder_table.c: cherokee_table_t replaced by a cherokee_avl_t. * cherokee/avl.c (cherokee_avl_get_ptr): Added new method. (cherokee_avl_add_ptr): Added new method. * cherokee/table.c (cherokee_table_add, cherokee_table_get) (cherokee_table_del): Optimized to use cherokee_buffer_fake instead of allocating and freeing memory. It should improve the performance a little bit. * cherokee/buffer.h (cherokee_buffer_fake): Added new method. * cherokee/handler_common.c (stat_file): Fixed to handle ret_no_sys. It's returned when the iocache reaches its limit. * cherokee/table.c (cherokee_table_get_val): Removed. It was a mitake to add that method; we should rather use cherokee_table_get(). * cherokee/exts_table.c (cherokee_exts_table_has), cherokee/regex.c (cherokee_regex_table_get, _add): We shouldn't use cherokee_table_get_val(). Moved to use cherokee_table_get(). * cherokee/dirs_table.c, cherokee/dirs_table.h: This class used to be based on cherokee_table. Switch to cherokee_avl in order to improve the performance. * cherokee/iocache.c: Added a new TRACE entries. * cherokee/handler_file.c (cherokee_handler_file_init): There was an invalid call to cherokee_iocache_mmap_release() that was the cause of the infamous 'iocache bug' that has been bothering us for a couple of weeks. As soon as I have removed it, everything began to work just fine. 2007-07-16 Brian Rosner * www/doc/django: updated django to r5717 and added VERSION file to keep track of what version is being used. * www/index.html: made the default index.html pass w3c validation defined by the DOCTYPE. 2007-07-14 Alvaro Lopez Ortega * cherokee/iocache.c: Clean up and added a few TRACE entries. * qa/run-tests.py, qa/help.py: Depending on the machine and environment, ten additional seconds to start the server might not be enough. This change adds a new parameter -r that allows to specify how long the test runner should wait before running the first one. Eg: CHEROKEE_TRACE="all" ./run-tests.py -v -c -r50 * qa/run-tests.py: If the server runs with Valgrind, wait 10 more seconds to start the tests. There were many occasions in which the servers wasn't ready when the first test was executed. * cherokee/handler_common.c: Updated. Now it uses the new iocache interface (buffers instead of char pointers). * cherokee/avl.c (cherokee_avl_del): Bugfix. Recursion array base is 0, not 1. * cherokee/avl.c (cherokee_avl_del): Return the value in the third parameter (double pointer). * cherokee/iocache.c: Now it uses an AVL tree instead of a table. It also accepts cherokee_buffer_t* paths instead of char* 2007-07-13 Brian Rosner * doc/Makefile.am: forgot to include new documentation into the makefile. 2007-07-13 Alvaro Lopez Ortega * doc/Makefile.am: It shouldn't delete the css on clean-up (it isn't autogenerated). Fixed. 2007-07-13 Brian Rosner * doc/: added some more documentation pages. * doc/build_docs.py: removed code to delete output_dir and moving the media folder to output_dir. 2007-07-13 Alvaro Lopez Ortega * doc/build_docs.py, doc/Makefile.am: Default building directory is no longer "./build". Changed to ./ * doc/Makefile.am (CLEANFILES): Added new cleaning rule * cherokee/server.c (cherokee_server_get_reusable_conns): Clean up: Removed unused variable. * cherokee/avl.c: Many changes. It should be working much better now. For instance, it's no longer recursive. 2007-07-12 A.D.F * cherokee/macros.h - added get_buf_str(b) macro to get the string member of a buffer_t. * cherokee/fdpoll.h - added cherokee_fdpoll_str_to_method() prototype. * cherokee/fdpoll.c - added cherokee_fdpoll_str_to_method() function. * cherokee/fdpoll-select.c, cherokee/fdpoll-win32.c - renamed maxfd_changed to maxfd_recompute. * cherokee/server.c - configure_server_property(): - replaced sequence of equal_buf_str() calls with a call to cherokee_fdpoll_str_to_method(); - added a call to cherokee_fdpoll_get_fdlimits() to verify whether the chosen poll method is supported by current environment / OS. * cherokee/*.c - added a few comments; - minor space cleanups. 2007-07-11 A.D.F * cherokee/fdpoll.h - added cherokee_fdpoll_get_fdlimits() prototype. * cherokee/fdpoll.c - added cherokee_fdpoll_get_fdlimits() in order to get max. system and poll-set fd limits. * cherokee/fdpoll-protected.h - added fdpoll_*_get_fdlimits() function prototypes. * cherokee/fdpoll-epoll.c, cherokee/fdpoll-kqueue.c, cherokee/fdpoll-port.c, cherokee/fdpoll-poll.c, cherokee/fdpoll-select.c, cherokee/fdpoll-win32.c - added fdpoll_*_get_fdlimits() to get specific fd limits. * cherokee/server.c - added test and auto-tune code for fdpoll system and per poll-set fd limits before cherokee_fdpoll_new(); NOTE: new tests and auto-tune code are performed only if a poller name (epoll, poll, etc.) is specified among configuration parameters (righ now, these tests are meaningful only for select based pollers). 2007-07-11 Brian Rosner * doc/build_docs.py - ignores hidden files - various clean-ups for 80 char consoles. 2007-07-11 Alvaro Lopez Ortega * cherokee/avl.h, cherokee/avl.c (cherokee_avl_check): Added new check() method to the AVL class. It ensures that the order and balance is correct. 2007-07-11 Brian Rosner * doc/locale/en/handlers/common.txt, doc/locale/en/handlers/dirlist.txt, doc/locale/en/handlers/file.txt, doc/locale/en/server.txt, doc/locale/en/configuration.txt, doc/locale/en/index.txt, doc/locale/en/validators/mysql.txt, doc/locale/en/authentication.txt - fixed line wrapping to work better on consoles of 80 chars. * doc/build_docs.py - fixed the docutils requirement. even though it is still required, it just doesn't fail now. 2007-07-11 Brian Rosner * doc/*, configure.in, Makefile.am - Rewrote the entire documentation system. Everything is done inside Python using the Django template classes and ReST for the documentation. 2007-07-10 Alvaro Lopez Ortega * cherokee/table.c: Adapted to use the new AVL class. There are a few temporal methods that need to be improved. I'll work on it in the next days. * cherokee/avl.c, cherokee/avl.h: Rewritten from scratch. It uses cherokee_buffer_t's as the index of the nodes, so it should be slightly faster than the previous implementation. * cherokee/connection.c (cherokee_connection_setup_error_handler): It is safer to return ret_ok instead of ret in this case. Fixed. 2007-07-10 A.D.F * cherokee/fdpoll.c - cherokee_fdpoll_new(): - added error test on max. sys_fd_limit and fd_limit. * cherokee/fdpoll.h, cherokee/fdpoll-protected.h - updated function prototypes. * cherokee/fdpoll-epoll.c, cherokee/fdpoll-kqueue.c - renamed sys_limit to sys_fd_limit and limit to fd_limit in order to be consistent with other fdpoll-*.c modules; - space cleanups. * cherokee/fdpoll-select.c - _watch(): - use proper type as return value; - fdpoll_select_new(): - added error test on max. sys_fd_limit. * cherokee/fdpoll-win32.c - _set_mode(): - added missing return value; - fdpoll_win32_new(): - added error test on max. fd_limit. 2007-07-10 Brian Rosner * themes/default_header.html, themes/default_entry.html: - fixed an issue where User and Group did not display correctly when they were configured to display. 2007-07-10 Alvaro Lopez Ortega * cherokee/fdpoll.h: It was missing cherokee_fdpoll_is_empty() prototype declaration. * cherokee/fdpoll-select.c (_set_mode): Return the error code on error. 2007-07-08 Alvaro Lopez Ortega * qa/142-SCGI-ExtraVars.py, qa/Makefile.am (EXTRA_DIST): New QA test. It checks the new 'pass_req_headers' parameter. * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_envp, foreach_header_add_unknown_variable): Added new configuration token 'pass_req_headers' (boolean). It allows to enable to copy all the unknown headers to the CGI-based handler, whether it's SCGI, FastCGI or CGI. * cherokee/header.h, cherokee/header.c (cherokee_header_foreach_unknown): Added new method. 2007-07-07 A.D.F * cherokee/cherokee-panic - added a second call to mktemp that is called whenever the first call with -t option fails (old versions of mktemp(1) don't have -t option). 2007-07-07 Alvaro Lopez Ortega * qa/run-tests.py, qa/help.py: Added new parameter -m to allow adding delays between tests. * qa/run-tests.py, qa/help.py (help_print_parameters): Added a help message and a new parameter -h. 2007-07-07 A.D.F * cherokee/connection.c - cherokee_connection_send_header_and mmaped(): - always decrement conn->mmaped_len; - avoid ptr. math with pointers to void by using a cast to (char *) and then back to (void *). * qa/run-tests.py - Corrected mispelled word (Sucess -> Success). 2007-07-04 Alvaro Lopez Ortega * cherokee/post.c (cherokee_post_mrproper): Checks if unlink() has returned an error, and warn if so. * cherokee/post.c, cherokee/cherokee/post.h: It does no longer use a FILE * for read/write the temporal files. The call to mktemp() has been changed by a call to mkstemp() (safer). 2007-07-03 Alvaro Lopez Ortega * cherokee/win32_cservice.h, cherokee/win32_cservice.c, cherokee/win32_cherokeeserv.c, windows/cherokee.reg: Added a Win32 service. Code by Ross Smith II * cherokee/Makefile.am (win32_cherokeeserv), windows/cherokee.reg: Created new binary target, and added win32_cservice.h, win32_cservice.c and win32_cherokeeserv.c * cherokee/win32_misc.c: Fixed Emacs indentation mark. (win_dlerror): Fixed compilation problem around win_dlerror_buf. * cherokee/win32_misc.h, cherokee/win32_misc.c: Added new func cherokee_win32_shutdown_signaled(). Patch by Ross Smith II * cherokee/server.c (cherokee_server_step): Call cherokee_win32_shutdown_signaled() before checking if the server wants to stop iterating. (srv->wanna_exit) * windows/cherokee.nsi.in: MUI_ICON and MUI_ICON needed to be undefined. 2007-07-03 A.D.F * cherokee/fdpoll-epoll.c, cherokee/fdpoll-kqueue.c, cherokee/fdpoll-port.c - added include file util.h (compilation fix). 2007-07-02 A.D.F * cherokee/win32_misc.c - win_strerror(): moved a string termination; - win_dlerror(): added missing ';' (my bad). 2007-07-02 A.D.F * cherokee/plugin_loader.c - removed redundant call to cherokee_buffer_mrproper (my bad); - removed a goto; - space / indentation cleanups. 2007-07-02 A.D.F * cherokee/win32_misc.c - added comments about MUTEX_LOCK protection to win_dlerror(); * cherokee/plugin_loader.c - added MUTEX_LOCK protection to dlerror() calls; - added a few missing cherokee_buffer_mrproper() calls. 2007-07-02 A.D.F * cherokee/util.h - added new cherokee_strerror_r() prototype; * cherokee/util.c - added new cherokee_strerror_r() function in order to ensure thread safety; * cherokee/win32_misc.h - changed win_strerror() prototype; * cherokee/win32_misc.c - changed win_strerror() function to accept a buffer in formal parameters; * cherokee/buffer.c, cherokee/cherokee_logrotate.c, cherokee/fdpoll_epoll.c, cherokee/fdpoll_kqueue.c, cherokee/fdpoll_port.c, cherokee/handler_cgi.c, cherokee/logger_writer.c, cherokee/ncpus.c, cherokee/server.c, cherokee/socket.c, cherokee/validator_ldap.c - replaced strerror() with cherokee_strerror_r() calls. 2007-06-29 A.D.F * cherokee/macros.h - added new macros: CHEROKEE_MK_TYPE, CHEROKEE_MK_NEW, CHEROKEE_DCL_STRUCT; - modified other CHEROKEE_* macros in order to avoid macro duplication. 2007-06-29 A.D.F * cherokee/validator_plain.c, cherokee/validator_pam.c, cherokee/validator_mysql.c, cherokee/validator_ldap.c, cherokee/validator_htpasswd.c, cherokee/validator_htdigest.c, cherokee/validator.c - space / indentation / style cleanups. 2007-06-27 A.D.F * cherokee/levenshtein_distance.c, cherokee/virtual_server_names.c, cherokee/virtual_server.c, cherokee/virtual_entries.c - space / indentation / style cleanups; - changed #ifdef HAVE_TLS ... #endif scope in order to not compile unreacheable code. 2007-06-27 Alvaro Lopez Ortega * cherokee/win32_misc.c: Shouldn't return a pointer to a local buffer; that memory would be already being used by another function when the string is needed. 2007-06-27 A.D.F * cherokee/win32_misc.c - added a few TODO comments on non-thread safe functions; - micro style cleanups. 2007-06-27 A.D.F * cherokee/url.c: - replaced cherokee_buffer_add_va() with equivalent but faster cherokee_buffer_add_xxx() functions. 2007-06-27 Alvaro Lopez Ortega * cherokee/win32_misc.c (win_strerror): Fixed infinite recursion. Patch by Ross Smith II, and Gisle Vanem. 2007-06-25 A.D.F * cherokee/server.c: - removed multiple calls to cherokee_iocache_cleanup(); - space cleanups; * cherokee/win32_misc.c: - space / indentation cleanup. 2007-06-21 A.D.F * cherokee/connection_info.c: - fix, added MUTEX_UNLOCK where required; - space cleanups; * cherokee/thread: - space cleanup; * cherokee/util.c: - fix, test return value of gmtime(), getpwnam(), etc. calls because they may fail and we don't want to crash the server because of a NULL pointer dereference; - improvement, if thread safe functions (i.e. gmtime_r()) are available then always use them because they are a bit faster and avoid code duplication for #ifndef HAVE_PTHREAD case; - fix, added MUTEX_UNLOCK where required; - space cleanups. 2007-06-19 Alvaro Lopez Ortega * cherokee/virtual_server.h: Included unistd.h. Fixes a FreeBSD compilation problem. Reported by Brian Rosner. 2007-06-13 Alvaro Lopez Ortega * cherokee/handler_common.c, cherokee/macros.h, cherokee/handler_file.c, cherokee/Makefile.am, cherokee/table.h, cherokee//cherokee.h, cherokee/iocache.c, cherokee/connection.c, cherokee/iocache.h, cherokee/server.c: Many changes that aim to fix the IOcache class. It is still failing though, this is the first approach to solve the problem, but there is still work to be done. 2007-06-11 A.D.F * cherokee/handler_common.c: - always test for ret == ret_ok before assigning result to boolean variables; - sparse space cleanups; 2007-06-01 A.D.F * cherokee/connection.c: - sparse cleanups; - cherokee_connection_linger_read(), retry read only if tmp_buf has been completely filled so that we spare one read during linger phase (cherokee_connection_linger_read() is called in thread.c -> purge_connection() too, so it should try to read EOF if EOF has not been read yet); * cherokee/fcgi_manager.c: - cherokee_fcgi_manager_send_remove(), removed redundant break (replaced by a return). 2007-05-31 Alvaro Lopez Ortega * cherokee/thread.c (process_active_connections): It was not checking for the ret_eagain after calling to the cherokee_connection_send() function. It was causing some handlers (like the fcgi one) to truncate the output. 2007-05-30 A.D.F * cherokee/connection.c: - added a few return(s) after RET_UNKNOWN() because it is only a debug print (it does no return); - cherokee_connection_send*(): - reworked code after cherokee_socket_writev() in order to speedup things for small writes; - added a couple of FIXME (to avoid ptr. void math). * cherokee/thread.c: - cherokee_thread_new: - added a comment to replace hardcoded numbers with a formula; - process_active_connections(), - added a few decrease of private connection counter before each purge_closed_connection(). 2007-05-30 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_send): It wasn't returning ret_eagain when there was remaining information in the connection buffer. This bug showed up because both IE7 and FF2 had problems loading some files on Windows. * cherokee/server.c (cherokee_server_initialize): Not being able to jail the server inside the chroot is important enough to abort execution. Previously to this change, it was only warning about the problem. 2007-05-22 A.D.F * cherokee/macros.h: - use saner values in defines; * cherokee/thread.h: - added new fields to struct cherokee_thread_t in order to keep exact numbers of connections per thread; - added new parameter to cherokee_thread_new(); - added new functions (for SINGLE THREAD): cherokee_thread_accept_on(); cherokee_thread_accept_off(); * cherokee/thread.c: - cherokee_thread_new(): - added new test conditions, calculation of conns_accept limit, etc.; -cherokee_thread_step_SINGLE_THREAD() and cherokee_thread_step_MULTI_THREAD(): - added code to disable accepting new connections when there are no more free slots (100% full) and to reenable accepting new connections when the number of connections is below 95% - 99%; - removed calls to cherokee_fdpoll_is_full() (by using #ifdef 0 ... #endif) because now we test the number of open connections and because cherokee_fdpoll_add() tests upper limit and returns error if it is reached; - now cherokee_fdpoll_watch() is always called in order to avoid a busy wait loop when there are no more free connection slots. - process_active_connections(): - added tests on total server number of open connections, if the number is > max_keepalive limit then keepalive is disabled until that number goes down (high water principle); this is done because if the server reaches the max number of connections and open connections are kept alive, then the server is no more able to accept new connections (for minutes or even for hours); - other minor space cleanups. * cherokee/server.c: - removed local define MIN_SPARE_FDS; - added local define MIN_LISTEN_FDS; - better distribution of spare fds for each thread; - forced a minimum number of fds per thread by lowering the number of requested threads to reach a minimum number as set in macros.h; - now if srv->thread_num == 1 then cherokee_thread_step_SINGLE_THREAD() is called even if the server has been compiled with HAVE_PTHREAD 1 (this speedup connection handling by 2% - 3%); - set max_keepalive limit to 93% of max. number of connections so that server tries to close connections before it reaches 100% of opened connections (this should prevent the scenario where server is not able to accept new connections for minutes or even hours); - print_banner(), added new information about max. server connections, etc.; - minor space cleanups; * cherokee/handler_server_info.c: - added new info about current number of server connections (which is different from the number of active connections); * cherokee/socket.c: - cherokee_socket_accept_fd(), now ECONNABORTED returns ret_deny, so callers should call this function again (retry loop) instead of giving up and execute the process phase (this should speed up a lot the server when clients try to connect and abort connections before they are accepted by server). 2007-05-06 Alvaro Lopez Ortega * cherokee/avl.c (avl_insert_by_key): Micro-optimization: Move the less probable case to the last position. * cherokee/table.c (cherokee_table_add), cherokee/avl.c (avl_insert_by_key): Return ret_deny if it tries to insert an element that was already on the table. Until now, it was just ignoring the operation while it was returning ret_ok. Obviously it was wrong. This change may have some unwanted side effects, stay tuned. 2007-04-30 A.D.F * cherokee/thread.c: - substitute 0 for FDPOLL_MODE_READ in remaining cherokee_fdpoll_check() calls; - spaces / indentation cleanup. * cherokee/fdpoll.h: - added new macros FDPOLL_MODE_*. * cherokee/macros.h: - added new macro MIN_THR_FDS and related tests. * cherokee/server.c: - adjusted minimum number of fds (file descriptors) per thread; - substituted numeric constants 0 / 1 with equivalent defines FDPOLL_MODE_*. * cherokee/thread.c, cherokee/fdpoll-*.c: - substituted numeric constants 0 / 1 with equivalent defines FDPOLL_MODE_*. 2007-04-22 A.D.F * cherokee/macros.h: - new macros to handler minimum number of system fds, spare fds (used by standard I/O streams, i.e. stdin, etc.) and minimum number of file descriptors really available to Cherokee. * cherokee/source.c: - fixed a socket fd leak in cherokee_source_connect(), that function does both the open and the connect, if it fails, caller may retry it, but of course if socket is open then it must be closed before the retry. * cherokee/server.c: - fix the max number of threads againts max. number of max_fds. * cherokee/fdpoll.c: - now that we leave half of fds free to be used to open files, etc. we can raise the max_fds limit to its real value 2007-04-22 Alvaro Lopez Ortega * cherokee/main.c (process_parameters): Added -h parameter. Patch by Diego Escalante 2007-04-17 A.D.F * cherokee/socket.c: - cleanup HTTPS session only if it is not NULL; * cherokee/server.c: - force good limits for max. number of fds; * cherokee/thread.c: - __accept_from_server(), fix locking and always close new accepted fd on error (fixes a socket leak which lead to many idle connections left open). 2007-04-14 A.D.F * cherokee/socket.h: - be explicit in initializing socket_reading to 0, because fdpoll* code requires this value; * cherokee/thread.c: - fix comment mispelling; - always close connection on send error. 2007-04-11 A.D.F * cherokee/fdpoll-kqueue.c, cherokee/fdpoll-port.c, cherokee/fdpoll-win32.c, cherokee/fdpoll-select.c: - sparse space fixes (indentation, etc.); - ANSI C _free(ptr); - cherokee_fdpoll_xxx_new(): - use CHEROKEE_CNEW_STRUCT() to allocate a zeroed struct; - use calloc() instead of malloc() so that all arrays are pre-initialized to zero (in some files this is not useful / required, but it is better to be consistent with the majority of the other fdpoll-*.c files); - added missing tests on ptr == NULL and _free() calls. 2007-04-10 A.D.F * cherokee/macros.h: - correct a mispelling in SHOULDNT_HAPPEN macro; - added new macro CHEROKEE_CNEW_STRUCT to allocate 1 - n zeroed structures (just like calloc); well given the name we could default (nmemb) parameter to 1 and hardcode it inside the macro; * cherokee/fdpoll-protected.h: - fdpoll_func_set_mode_t, changed return type from void to ret_t because (in theory) it can fail (at least in some implementations); * cherokee/fdpoll.h: - changed prototype of cherokee_fdpoll_set_mode() in order to return a ret_t instead of void; * cherokee/fdpoll.c: - sparse space fixes (indentation, etc.); - added function: cherokee_fdpoll_is_empty(); - cherokee_fdpoll_set_mode(), changed, now it returns ret_t; * cherokee/fdpoll-epoll.c: - sparse space fixes (indentation, etc.); - cherokee_fdpoll_epoll_t: removed epoll_idx2rs (it was unused) and renamed epoll_rs2idx in epoll_fd2idx; - added robustness checks to _free() (against NULL pointers, etc.) and removed "if (ptr != NULL)" branches because they are not required by ANSI free (and an ANSI C compiler is required by Cherokee, besides this I remember that also pre or not fully compliant ANSI C compilers / libraries often implemented test against NULL in free(), at least since 1988-1992); - now _set_mode() returns a ret_t; - added other tests to the remaining functions to improve robustness; - moved the positions of a few functions in order to keep it consistent with other files; * cherokee/fdpoll-poll.c: - sparse space fixes (indentation, etc.); - added robustness checks to _free() (against NULL pointers, etc.); - added other tests to the remaining functions to improve robustness; - now _set_mode() returns a ret_t; * cherokee/fdpoll-select.c: - now _set_mode() returns a ret_t; * cherokee/fdpoll-port.c: - now _set_mode() returns a ret_t; * cherokee/fdpoll-kqueue.c: - now _set_mode() returns a ret_t; * cherokee/fdpoll-win32.c: - now _set_mode() returns a ret_t; * cherokee/server.c: - sparse space fixes (indentation, etc.); - fixed a few comments; - added robustness tests to force a few values (number of threads, number of file descriptors per thread, minimum number of file descriptors, etc.) within reasonable limits which allow Cherokee to work well. * cherokee/thread.c: - sparse space fixes (indentation, etc.); - added a few SHOULDNT_HAPPEN and some more tests (they should be useful to find out some issues under heavy loads). 2007-04-07 Alvaro Lopez Ortega * cget/Makefile.am (cget_LDADD): Use pthread libs only for linking. Do not pass them to the compiler. * cherokee/util.c (cherokee_get_shell): s/rindex/strrchr/ * cherokee/socket.c: Prevent to include uio.h is the header doesn't exist. Win32 cross compiling was failing because of this. 2007-04-06 Alvaro Lopez Ortega * cherokee/fdpoll-port.c (fdpoll_port_new, _watch): Same problem as in fdpoll_epoll_new(). A memset() wasn't initializing all the integers it was meant to. * cherokee/fdpoll-epoll.c (_free): Free the memory only if was allocated previously. It is called from _new() it might happen the some of the memory chunks were not alloced yet. * cherokee/fdpoll-epoll.c (fdpoll_epoll_new): It was a quite important bug. File descriptor tables were not propely initializated. It was using memset(len) initializing "len" bytes rather than "len" ints. It's fixed now.. and the stability problem I detected seems to be gone. * themes/default_theme.css: There were two table entries. Mixed them. 2007-04-02 Alvaro Lopez Ortega * configure.in, Makefile.am (SUBDIRS): Removed doc directory. Documentation is in bad shape. It doesn't worth distributing it until we don't get it properly fixed. 2007-03-31 Alvaro Lopez Ortega * themes/default_theme.css: Fixes default theme. File entries should be left hand aligned and they were centered. 2007-03-28 Alvaro Lopez Ortega * cherokee/source.c, cherokee/source.h, cherokee/header.c, cherokee/buffer.c, cherokee/config_entry.c, cherokee/config_node.c: Clean up: all these classes now use the new CHEROKEE_ADD_FUNC_NEW and CHEROKEE_ADD_FUNC_FREE macros. * cherokee/macros.h (CHEROKEE_ADD_FUNC_NEW, CHEROKEE_ADD_FUNC_FREE): Added two new macros to implement _new/_free methods by using _init/_mrproper. It's a pretty mechanic thing, so I think it worth adding a macro. * cherokee/dirs_table.h, cherokee/dirs_table.c (cherokee_dirs_table_free, cherokee_dirs_table_new): Methods removed. They are not longer needed. * cherokee/socket.h, cherokee/socket.c (cherokee_socket_new, cherokee_socket_free): These methods have been removed, they are no longer needed. * cherokee/main.c, cherokee/main_admin.c, cherokee/server.c (cherokee_server_init): Reanamed to cherokee_server_initialize. _init/_mrproper are method names that already have a meaning it should respect. 2007-03-23 Alvaro Lopez Ortega * cherokee/resolv_cache.c (cherokee_resolv_cache_get_host, cherokee_resolv_cache_get_ipstr): A call to CHEROKEE_RWLOCK_READER was enough. CHEROKEE_RWLOCK_WRITER was too much. Reported by Cesar Fernandez Gago. 2007-03-18 Alvaro Lopez Ortega * cherokee/handler_scgi.c (cherokee_handler_scgi_init): Return ret_error rather than ret. Under some weird circunstances thread.c was receiving a ret_deny from this funcion. It's safer to return ret_error in these functions and be sure the connection is handled properly. 2007-03-16 Alvaro Lopez Ortega * configure.in: MacOS X doesn't support PTHREAD_RWLOCK_INITIALIZER, changed by pthread_rwlock_init(). 2007-03-15 A.D.F * cherokee/socket.c: - set socket->status = socket_closed only when connection has been interrupted without any doubt (EPIPE, ECONNRESET, ENOTCONN). 2007-03-15 Alvaro Lopez Ortega * qa/util.py (check_php_interpreter): Added a test to check whether the PHP interpreter support fastcgi or not. * configure.in (CRYPT_LIBS): Tries to fix crypt() on MacOS X. * qa/run-tests.py: Adds a new "Deps" line. * cherokee/server.c, cherokee/plugin_loader.c, cherokee/plugin_loader.h, qa/run-tests.py, qa/conf.py: Added a new configuration key "module_deps" to allow setting the plug-in dependency files. * cherokee/plugin_loader.c (dylib_open): SO_SUFFIX replaced by MOD_SUFFIX. Modules were not working on MacOS X if Cherokee was dynamically compiled. 2007-03-13 A.D.F * cherokee/socket.c: - cherokee_socket_read(), cherokee_socket_write*(): - GNUTLS_E_INTERRUPTED is used only if its value is not equal to GNUTLS_E_AGAIN; - cherokee_socket_writev(): - don't increment "vector" because we use vector[i].* not vector->*; - micro-fix to not return ret_again if at least 1 bytes has been sent. 2007-03-13 Alvaro Lopez Ortega * cherokee/thread.c (process_active_connections): Tries to report the handler name when a ret code is found after calling the handler init method. 2007-03-12 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_writev): Fixed. It wasn't compiling. * cherokee/socket.c (cherokee_socket_read): removed the GNUTLS_E_INTERRUPTED case. It seems to have the same value than GNUTLS_E_AGAIN. * cherokee/common-internal.h: Added a macro to define INT_MAX if necessary. * Makefile.am (SUBDIRS): Moved doc to the last place, in order to ensure that if something happens processing that directory, all the rest of the directories were already processed. 2007-03-10 A.D.F * cherokee/socket.c: - cherokee_socket_read(), - added new assertion to prevent a read of 0 bytes (which could lead to an undefined behaviour); - GNUTLS_E_INTERRUPTED is now properly handled (EINTR); - both SSL_ERROR_WANT_READ and SSL_ERROR_WANT_WRITE have to be handled as well; - cherokee_socket_write(), - added new assertion to prevent a write of 0 bytes (which could lead to an undefined behaviour); - GNUTLS_E_INTERRUPTED is now properly handled (EINTR); - both SSL_ERROR_WANT_READ and SSL_ERROR_WANT_WRITE have to be handled as well; - cherokee_socket_writev(), - added support for TLS connections. 2007-03-08 Alvaro Lopez Ortega * cherokee/validator.c (cherokee_validator_parse_digest): Authentication header parsing fixed. It was failing under some weird circunstances (Firefox with proxy using Digest with qpop). 2007-02-28 Alvaro Lopez Ortega * cherokee/handler_common.c: Replace manual buffer management by a call to cherokee_buffer_end_char(). It's safer, and as far as I have seen, under some weird circumstances there was an invalid memory access from this code line. * cherokee/buffer.c (cherokee_buffer_read_from_fd): It was reading too much. This function adds a EOS character at the end of the buffer, so the read() call can use all the buffer but the last character. That is reserved for the \0. Fixed. * cherokee/connection.c (cherokee_connection_get_dir_entry): I have detected an out of memory (by 1 byte) in this function. Added a new conditions to the block check entry that tries to inhibit the wrong read. * cherokee/socket.c (cherokee_socket_write): There was a small typo in the latest commit that leaded to a compilation problem. Fixed. 2007-02-26 A.D.F * cherokee/macros.h: - increase DEFAULT_RECV_SIZE from 1024 to 2048; * cherokee/socket.h: - renamed cherokee_socket_read() to cherokee_socket_bufread(); - renamed cherokee_socket_write() to cherokee_socket_bufwrite(); - renamed cherokee_read() to cherokee_socket_read(); - renamed cherokee_write() to cherokee_socket_write(); - renamed cherokee_writev() to cherokee_socket_writev(); * cherokee/socket.c: - HAVE_GNUTLS and HAVE_OPENSSL defines are mutually exclusive, so apply #if ... #elif sections consistently; - micro speed-up of cherokee_socket_*read() and cherokee_socket_*write*() by adding likely / unlikely and by shortening fast path; - now cherokee_socket_read() and cherokee_socket_write*() don't accept NULL pointers anymore; it was a waste to handle those cases only for lingering reads; - cherokee_socket_writev(), fixed calculation of data sent to socket. * cherokee/connection.c: - cherokee_connection_linger_read(), removed static buffer shared by all threads, now linger data is read into thread->tmp_buf1; - renamed a few cherokee_socket_*() functions; * cherokee/downloader.c, cherokee/fcgi_manager.c, cherokee/handler_fcgi.c, cherokee/handler_mirror.c, cherokee/handler_scgi.c, - renamed a few cherokee_socket_*() functions. 2007-02-22 Alvaro Lopez Ortega * cherokee/handler_server_info.c: Now it shows balancers information in the Modules table as well. * cherokee/handler_server_info.c (build_server_table_content): Threads number was wrong. Fixed. * cherokee/header.c: Included ctype.h. isspace() was undefined. * cherokee/handler_server_info.c (server_info_build_page): Now it uses cherokee_version_add instead of the old check. 2007-02-22 A.D.F * cherokee/header.c: - trim heading and trailing spaces from HTTP header value so that the following headers: If-None-Match: 4d74db1=32f If-None-Match: 4d74db1=32f If-None-Match:4d74db1=32f are considered as having the same value. 2007-02-22 Alvaro Lopez Ortega * cherokee/logger_writer.c (O_LARGEFILE): Defines it if it wasn't defined previously by the operating system. Fixes bug #135. 2007-02-21 Alvaro Lopez Ortega * cherokee/main_admin.c (config_server): Added new -a parameter to allow to run cherokee-admin listening all the network interfaces. By default it only listens to the local loopback. 2007-02-20 Alvaro Lopez Ortega * m4/pkg.m4: Added new macro definition file. Even if it isn't the right thing to do I think we have to keep this file in the repository by the moment. Even with the change from GNUTLS' m4 to the pkg-config call there was no way to compile Cherokee trunk in MacOS X without installing aditional software. This should fix it. 2007-02-18 A.D.F * cherokee/post.h, cherokee/post.c cherokee/connection.c, cherokee/handler_admin.c: - use off_t instead of offset_t in order to compile cherokee when off_t has a size of 4 bytes instead of 8 (i.e. on embedded systems or when --disable-largefile is given on configure command line). * cherokee/connection-protected.h: - don't use "enum" for bit flags because more than one option can be set, so its better to explicitely use an unsigned int as data type. 2007-02-16 Alvaro Lopez Ortega * configure.in: GNUTLS detection is now based on PKG_CHECK_MODULES instead of on its own m4 file. There were many people reporting problems because of this. 2007-02-14 Alvaro Lopez Ortega * cherokee/http.h, cherokee/http.c (cherokee_http_code_to_string) (cherokee_http_code_copy): Added http_gateway_timeout. 2007-02-03 A.D.F * cherokee/macros.h: - micro-fix to BIT_UNSET() macro in order to work properly even with arguments like these: BIT_UNSET(var, opt1|opt2); * cherokee/connection-protected: - small "cosmetic" cleanups, move field "options" near field upgrade; - etc. * cherokee/connection.c: - fix, "log_at_end" must be set to true in init / cleanup code, otherwise logging does not work. 2007-02-03 A.D.F * cherokee/logger_writer.h: - added new #define LOGGER_BUF_PAGESIZE 4096 to round down write count to a multiple of above value if the data size to write is > LOGGER_BUF_PAGESIZE; this preserves the write speed-up and allows to write as much data as possible without limiting the chunk size to logger_writer->max_bufsize; this fixes the cases when max_bufsize is set to a low value (0 - 16KB or < max request size). * cherokee/logger_writer.c: - avoided duplicated code by using new local function logger_writer_close_file(); - configuration, added saner tests on max_bufsize values; - do not use write_fd if the log stream is stderr; - do not close log file if it is stderr; - cherokee_logger_writer_flush(), fixed error handling in order to always flush internal buffer on fatal write errors, because we don't want it to grow up too much (that data is lost anyway). 2007-02-02 Alvaro Lopez Ortega * qa/run-tests.py: Fixed to work just with "-v" (without specifying with valgrind tool it should use). * cherokee/handler_file.c (cherokee_handler_file_step): Updated to the latest conn->option and tcp_cork changes. * cherokee/connection.h, cherokee/connection.c (cherokee_connection_set_cork): Now the "enable" parameter is cherokee_boolean_t rather than int. * cherokee/connection-protected.h: Added new enum type cherokee_connection_options_t and a new property "options" to the connection class. * cherokee/handler_common.c (cherokee_handler_common_new): If the connection needs to be redirected/reprocessed, it copys the request to the request_original and sets a flag if it's a redirection to a index file starting by / (fullpath index file). * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): Checks the connection options. If it has been redirected from a "common" handler and targets a fullpath index, it seems to need to use the original request as the REQUEST_URI. * cherokee/macros.h (BIT_SET, BIT_UNSET): Added new macros to ease bit masks manupulation. * cherokee/connection-protected.h: log_at_end and tcp_cork properties have been removed. Now they're bits in the options entry. * cherokee/connection.c (cherokee_connection_log_or_delay, cherokee_connection_log_delayed): Rewritten using the option property. 2007-01-30 A.D.F * cherokee/macros.h: - added LOGGER_MIN_BUFSIZE and LOGGER_MAX_BUFSIZE to limit value read from configuration file; * cherokee/logger.h: - removed max_bufsize (it was unused); * cherokee/logger.c: - removed max_bufsize (it was unused); * cherokee/logger_w3c.c: - removed redundant if (unlikely(ret != ret_ok)); * cherokee/logger_ncsa.c: - removed redundant if (unlikely(ret != ret_ok)); * cherokee/logger_writer.h: - added LOGGER_OVF_BUFSIZE whose value has to be added to max_bufsize to size the log buffer; * cherokee/logger_writer.c: - added parameter "bufsize" to the parameters read from configuration file. 2007-01-22 A.D.F * cherokee/connection-protected.h: - rename cherokee_connection_pre_lingering_close() to cherokee_connection_shutdown_wr(); * cherokee/connection.c: - rename cherokee_connection_pre_lingering_close() to cherokee_connection_shutdown_wr(); - fix cherokee_connection_mrproper() in order to always execute cleanup even if one function fails. * cherokee/thread.c: - rename cherokee_connection_pre_lingering_close() to cherokee_connection_shutdown_wr(); * cherokee/socket.c: - added ENOTCONN to the error codes which are not logged (because they can happen under certain conditions); - cherokee_socket_read(), cherokee_socket_write(), cherokee_socket_writev(), now errors which are not logged lead to ret_error instead of ret_eof. * cherokee/logger_writer.c: - added a loop around write() in order to retry write() in case of EINTR error (signal interrupt). 2007-01-22 Alvaro Lopez Ortega * cherokee/main.c (BASIC_CONFIG): iocache should be off in the default config. * cherokee/server.c (cherokee_server_read_config_string): Bugfix. It was trying to parse a string if it was a filename. 2007-01-21 A.D.F * cherokee/logger_w3c.c: - cherokee_logger_w3c_write_error(), added header if needed; - cherokee_logger_w3c_writer_error() cherokee_logger_w3c_writer_access(): - fixed format string for date header. * cherokee/logger_w3c.h: - added new fields to cherokee_logger_ncsa_t: - now_time; - now_buf. * cherokee/logger_w3c.c: - cherokee_logger_w3c_write_access(), cherokee_logger_w3c_writer_error(): - sped up execution by formatting time only once a second and by not using cherokee_buffer_add_va() in the fast path; - added buffer flush. * cherokee/logger_ncsa.c: - cherokee_logger_ncsa_write_string(), added buffer flush. 2007-01-21 Alvaro Lopez Ortega * cherokee/http.h (http_see_other_string), cherokee/http.c (cherokee_http_code_copy, cherokee_http_code_to_string): Added htt_see_other HTTP code entries: HTTP 303, "See Other". * cherokee/http.c (cherokee_http_code_copy) (cherokee_http_code_to_string): request_entity_too_large wasn't supported. * contrib/05to06.py (Syntax): Added a 'ScriptAlias' to script_alias rule. * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_envp): Removed TRACE. It was printing it inside the response header. 2007-01-20 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_setup_error_handler): Trace block relocated. 2007-01-19 Alvaro Lopez Ortega * contrib/05to06.py: Adds a blank like after each virtual host. It makes easier to edit the generated file later on. * contrib/05to06.py: Adds a faked DocumentRoot if the virtual server didn't contain one. 0.5 wasn't checking for a document_root but 0.6 does. It is no more than a work around. This script isn't meant to be perfect, just useful. * contrib/05to06.py: Now, it adds the "priority" entry to all the directory, extension and request entries it processes. * contrib/05to06.py (Syntax._process_entry_guts): Added an exception for handling the "Show" property of dirlist. * contrib/05to06.py (Syntax._process_entry_guts): Handler "Env" property management has been fixed. It needs three parameters rather than only two as the rest of the properties. 2007-01-18 Alvaro Lopez Ortega * contrib/bin2buffer.py (print_block): Do not print the casting to (char *) * cherokee/connection_info.c (cherokee_connection_info_fill_up), cherokee/dirs_table.c (relink_func), cherokee/logo.inc, cherokee/encoder_gzip.c (do_encode), cherokee/virtual_server.c (cherokee_virtual_server_set_documentroot), cherokee/logger_ncsa.c (cherokee_logger_ncsa_write_string), cherokee/logger_w3c.c (cherokee_logger_w3c_write_string), cherokee/header.c (cherokee_header_copy_version, cherokee_header_copy_method), cherokee/handler_redir.c (substitute_groups), cherokee/handler_fastcgi.c (send_post): Removed (char *) casting in the calls to cherokee_buffer_add() * cherokee/config_node.c: Added config_reader.h inclusion. It also removes casting to char pointer in the cherokee_buffer_add() calls. 2007-01-18 A.D.F * cherokee/buffer.h: - cherokee_buffer_add(), added const qualifier to 2nd parameter; * cherokee/buffer.c: - cherokee_buffer_add(), added const qualifier to 2nd parameter; * cherokee/logger_writer.c: - now log buffer has a bigger size (1 page or 4096 bytes) so that now max_bufsize can be used as a threshold to flush buffer contents. * cherokee/logger_ncsa.h: - added new fields to cherokee_logger_ncsa_t: - tz; - now_time; - now_dtm. * cherokee/logger_ncsa.c: - build_log_string(): - speed-uo of around +12% - 14% by: - creating datetime string only when now_time changes; - using faster cherokee_buffer_add*() calls instead of cherokee_buffer_add_va(); - fixed log format (a space was missing, etc.). 2007-01-18 Alvaro Lopez Ortega * cherokee/config_reader.h, cherokee/config_reader.c, cherokee/config_node.h, cherokee/config_node.c, cherokee/server.c (cherokee_server_read_config_string), cherokee/Makefile.am: Configuration reading methods have been splitted from the config_node class. They didn't make sense over there. * cherokee.conf.sample.pre: Error log fixed. * cherokee/logger.h, cherokee/logger.c: "buffer" property removed. It wasn't needed any longer. 2007-01-17 A.D.F * cherokee/downloader.c: - downloader_downloader_step, fixed a mismatch in variable name. * cherokee/logger_writer.h: - added new field: max_bufsize; * cherokee/logger_writer.c: - pre-allocate internal buffer to logger->max_bufsize; - logger_writer_flush(), added close-on-exec of log file; - write at most max_bufsize bytes (+7% - 8% speedup) which is assumed to be a power of two; - fixed partial write(), after a partial write() the ending unwritten bytes have to be moved to the beginning of the buffer * cherokee/logger_ncsa.h: - added two new field as temporary buffers: - referer; - useragent. * cherokee/logger_ncsa.c: - removed the usage of temporary local buffers, (costly), now we use only preallocated buffers; - minor cleanups. 2007-01-16 Alvaro Lopez Ortega * contrib/05to06.py (Syntax._process_entry_guts): Rewrites management fixed. It wasn't support short entries (entries without regex and substring). * contrib/05to06.py (Lexer._get_token_guts): Allow '-' inside str tokens. * contrib/05to06.py (Syntax._process_virtual_server_content): error_handler fixed. It wasn't adding the handler. * contrib/05to06.py (Syntax._process_entry_guts): Handler / Balancer conversion fixed. It was using of notation. * contrib/05to06.py (Syntax): It must translate DirectoryIndex into directory_index. Fixed. * contrib/05to06.py (Syntax._process_entry_guts): Allow from should accept str and list. Fixed. * contrib/05to06.py: Upodated to work with the latest logger related changes. 2007-01-16 A.D.F * cherokee/downloader.c (downloader_header_read): use a permanent temporary buffer instead of a local one. 2007-01-16 Alvaro Lopez Ortega * cherokee/downloader.c, cherokee/downloader.h: Added two temporal buffers. It will use them if no other buffers are provided. * cherokee/logger_ncsa.c, cherokee/logger_w3c.c: Removed all calls to cherokee_logger_writer_{lock,unlock}(). * cherokee/logger_writer.h, cherokee/logger_writer.c: Removed all the references to the mutex. A logger writer is an object that lives inside a logger, and the logger is already a thread safe object, and hence, there is no need to have a semaphore here. The cherokee_logger_writter_lock() and cherokee_logger_writter_unlock() have been removed. * cherokee.conf.sample.pre, qa/run-tests.py: Updated for the new logger configuration. * cherokee/logger_w3c.h, cherokee/logger_w3c.c: Idem. Now it uses a logger writer object. * cherokee/logger_ncsa.h, cherokee/logger_ncsa.c: Adapted to use a couple of logger writer objets. Besides the functionality it has won, it should also be slightly faster. * cherokee/logger_writer.h, cherokee/logger_writer.c, cherokee/Makefile.am: Added new classs. It implements the logic of where a logger writes the information. The current implementation supports: files, syslog, stderr, and pipes to logging programs. 2007-01-15 Alvaro Lopez Ortega * contrib/05to06.py (Lexer._get_word): It wasn't processing quoted strings if they contained \" characters. Fixed. 2007-01-14 A.D.F * cget/main.c: Updated for the latest cherokee_downloader_step() modifications. * cherokee/buffer.h: - changed prototypes of: - cherokee_buffer_encode_base64(); - cherokee_buffer_encode_sha1_base64(); - cherokee_buffer_encode_hex(); to add a second destination buffer in order to avoid unneeded allocations / reallocations. * cherokee/buffer.c: - added a second parameter to: - cherokee_buffer_encode_base64(); - cherokee_buffer_encode_sha1_base64(); - cherokee_buffer_encode_hex(). * cherokee/downloader.h: - changed prototype of cherokee_downloader_step() in order to pass two temporary buffers; * cherokee/downloader.c: - changed cherokee_downloader_step() in order to use two temporary buffers to avoid allocations / reallocations when handling buffers in called functions (i.e. cherokee_request_header_build_string()); * cherokee/handler_proxy.h: - added new macros; * cherokee/handler_proxy.c: - passed two temporary buffers to cherokee_downloader_step(); * cherokee/request.h: - changed prototype of cherokee_request_header_build_string(); * cherokee/request.c: - cherokee_request_header_build_string(). now it uses two permanent temporary buffers in order to avoid reallocations. * cherokee/admin_client.c: - sparse fixes to improve readability and performances (new two temporary buffers for cherokee_downloader_step()); * cherokee/handler_common.c: - use THREAD_TMP_BUF[12]() to avoid reallocations; * cherokee/handler_nn.c: - get_nearest() renamed to get_nearest_name(); - get_nearest(), use THREAD_TMP_BUF[12]() to avoid reallocations; * cherokee/nonce.c: - add a missing cherokee_buffer_clean(); * cherokee/validator_htpasswd.c: - use THREAD_TMP_BUF[12]() to avoid reallocations. 2007-01-13 Alvaro Lopez Ortega * contrib/05to06.py (Syntax._process_server): Updated to the lastest domain management changes. (commited in 2007-01-07 by me) 2007-01-13 A.D.F * cherokee/buffer.h: - added prototype for new function cherokee_buffer_add_char(). * cherokee/buffer.c: - added new function cherokee_buffer_add_char() to add a single char to buffer. * cherokee/connection.c: - small formatting cleanups; - fixed capitalization of header keywords (Keep-alive -> Keep-Alive and Close -> close) in order to make them to look exactly as written in RFC specifications (even if header keywords must be read in a case insensitive way); - substituted a couple of cherokee_buffer_add_str(s) with equivalent cherokee_buffer_add_char() calls. * cherokee/nonce.c: - substituted a few cherokee_buffer_add_va() with equivalent cherokee_buffer_add_*() calls (micro speedup). * cherokee/request.c: - small cleanups; - substituted cherokee_buffer_add(buf, constant_string, len) with equivalent cherokee_buffer_add_str() calls; - substituted a few cherokee_buffer_add_va() with equivalent cherokee_buffer_add_*() calls (micro speedup); - removed the allocation / deallocation of a local new_once buffer in favour of the standard THREAD_TMP_BUF1() temporary buffer (micro speedup). 2007-01-11 Alvaro Lopez Ortega * cherokee/config_node.c (cherokee_config_node_parse_string): Whites after the value must be skipped. This fixes bug #128. * cherokee/handler_fcgi.c (send_no_post, cherokee_handler_fcgi_init): It wasn't sending the STDIN empty package to notify it is closed. Reported by bil. * qa/141-FastCGI-EmptyVars.py: Added new QA test to ensure that PATH_INFO and QUERY_STRING are sent to the FastCGI servers even if there are empty strings. * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): Added SERVER_NAME variable. WSGI was complaining because of this. * qa/fcgi.py: Added new python module. * qa/Makefile.am (EXTRA_DIST): Added pyscgi.py and fcgi.py 2007-01-10 Alvaro Lopez Ortega * cherokee/handler_fcgi.c, cherokee/handler_fcgi.h, cherokee/handler_file.c, cherokee/handler_file.h, cherokee/handler_mirror.c, cherokee/handler_mirror.h, cherokee/handler_nn.c, cherokee/handler_nn.h, cherokee/handler_phpcgi.c, cherokee/handler_phpcgi.h, cherokee/handler_proxy.c, cherokee/handler_proxy.h, cherokee/handler_redir.c, cherokee/handler_redir.h, cherokee/handler_remote_control.c, cherokee/handler_remote_control.h, cherokee/handler_scgi.c, cherokee/handler_scgi.h, cherokee/handler_server_info.c, cherokee/handler_server_info.h, cherokee/handler_webcam.c, cherokee/handler_webcam.h, cherokee/header-protected.h, cherokee/header.c, cherokee/header.h, cherokee/http.c, cherokee/http.h, cherokee/icons.c, cherokee/icons.h, cherokee/iocache.c, cherokee/iocache.h, cherokee/list.c, cherokee/list.h, cherokee/logger-protected.h, cherokee/logger.c, cherokee/logger.h, cherokee/logger_combined., cherokee/logger_combined.h, cherokee/logger_ncsa.c, cherokee/logger_ncsa.h, cherokee/logger_w3c.c, cherokee/macros.h, cherokee/main.c, cherokee/main_admin.c, cherokee/match.c, cherokee/match.h, cherokee/matching_list.c, cherokee/matching_list.h, cherokee/md5crypt.c, cherokee/mime-protected.h, cherokee/mime.c, cherokee/mime.h, cherokee/mime_entry.c, cherokee/mime_entry.h, cherokee/module.c, cherokee/module.h, cherokee/ncpus.h, cherokee/nonce.c, cherokee/nonce.h, cherokee/plugin.h, cherokee/plugin_loader.c, cherokee/plugin_loader.h, cherokee/post.c, cherokee/post.h, cherokee/read_config_embedded.c, cherokee/read_config_embedded.h, cherokee/regex.c, cherokee/regex.h, cherokee/reqs_list.c, cherokee/reqs_list.h, cherokee/reqs_list_entry.c, cherokee/reqs_list_entry.h, cherokee/request.c, cherokee/request.h, cherokee/resolv_cache.c, cherokee/resolv_cache.h, cherokee/server-protected.h, cherokee/server.c, cherokee/server.h, cherokee/socket.c, cherokee/socket.h, cherokee/source.c, cherokee/source.h, cherokee/source_interpreter.c, cherokee/source_interpreter.h, cherokee/table.c, cherokee/table.h, cherokee/thread.c, cherokee/thread.h, cherokee/unix4win32.c, cherokee/unix4win32.h, cherokee/url.c, cherokee/url.h, cherokee/util.c, cherokee/util.h, cherokee/validator.c, cherokee/validator.h, cherokee/validator_htdigest.c, cherokee/validator_htdigest.h, cherokee/validator_htpasswd.c, cherokee/validator_htpasswd.h, cherokee/validator_ldap.c, cherokee/validator_ldap.h, cherokee/validator_mysql.c, cherokee/validator_mysql.h, cherokee/validator_pam.c, cherokee/validator_pam.h, cherokee/validator_plain.c, cherokee/validator_plain.h, cherokee/version.c, cherokee/version.h, cherokee/virtual_entries.c, cherokee/virtual_entries.h, cherokee/virtual_server.c, cherokee/virtual_server.h, cherokee/virtual_server_names.c, cherokee/virtual_server_names.h, cherokee/win32_misc.c, cherokee/win32_misc.h, configure.in, http-cherokee.xml, cherokee/logger_w3c.h: Copyright updated. 2007-01-09 Alvaro Lopez Ortega * qa/140-SCGI-EmptyVars.py, qa/Makefile.am (EXTRA_DIST): Added new QA test to ensure that the PATH_INFO and QUERY_STRING environment variables are set even if they are empty. * cherokee/handler_scgi.c (add_env_pair): It should be able to add environment variables with empty value. Thus, I've removed the check for the val_len equal to zero. * qa/126-SCGI.py, qa/127-SCGI-Post.py: Adapted to use 'pyscgi' instead of old 'scgi' python module. * qa/pyscgi.py: Added a local copy of the pyscgi module. * qa/base.py (TestBase.CopyFile): Added new method 2007-01-08 Alvaro Lopez Ortega * cherokee/main_admin.c (CONFIG_FILE_HELP): Fixes help string. * cherokee/nonce.c (cherokee_nonce_table_generate): Removed unnecessary call to cherokee_buffer_crc32(). Reported by A.D.F. * cherokee/virtual_server_names.c (cherokee_vserver_name_entry_match), cherokee/icons.c (match_file): Adapted to the new cherokee_wildcard API. * cherokee/server.c (cherokee_server_get_vserver): Added new TRACE entry. * cherokee/match.c (cherokee_wildcard_match): match() has been replaced by this new function. It is faster, non-recursive and fixes a bug in the previous version. * cherokee/match.h: Promoted as public API. 2007-01-07 Alvaro Lopez Ortega * qa/139-domain-wildcards1.py: Added new QA test to test wildcard domain names. * qa/020-VirtualHost.py, qa/021-VirtualHost2.py, qa/044-Home.py, qa/045-Home2.py, qa/066-DirectoryIndex3.py, qa/094-URL-request.py, qa/116-RequestTiny.py, qa/117-DomainToDir.py, qa/121-NoUserDir.py, qa/124-DomainToDir2.py, qa/125-domain-redir1.py, qa/135-RedirParams.py: Examples modified to work with the little syntax modification that this change set introduces. I've also done some clean up (there were way too many '%s') * cherokee/virtual_server.c: Added new domains property. It's a new virtual server names class object (a list in which it stores its domain names). The domain name configuration has been moved to this class. Previously we were configuring it inside the server.c file, right before adding the virtual server to the old virtual server table. Now, all that stuff has changed. There is no such table, and the configuration is performed in the right place. * cherokee/server.c: All the virtual server related code has been modified to work with the last improvements: TLS detection, instance, configuration, log flushing, and free. A new method, names cherokee_server_get_vserver() has been added as well. * cherokee/connection.c: Modified to work with the latest changes related to virtual server names. * cherokee/virtual_server_names.h, cherokee/virtual_server_names.c: New class. It handles the virtual server domain names. 2007-01-05 A.D.F * cherokee/connection.c: - small formatting cleanups; - substitute cherokee_buffer_add_va(s) with equivalent cherokee_buffer_add_*() calls (micro speedups). * cherokee/handler_error.c (cherokee_handler_error_add_headers): - replace switch(conn->error_code) with an if comparison; - substitute cherokee_buffer_add_va() with equivalent cherokee_buffer_add_*() calls like in handler_file.c. * cherokee/crc32.c: - cleanup formatting (tabs, spaces, etc.); - correct mispellings; - crc32_partial_sz(), remove unused variable len. * cherokee/buffer.c: - cleanups, one instruction per line, put each "return xxx;" on its own line; - cleanups, remove unneeded braces { } when there is only one instruction after an if; - cherokee_buffer_read_from_fd(), remove the usage of the temporary local buffer, declared as char tmp[size+1]; this has the following advantages: - as "size+1" is not a constant the change restores pure C language rules (i.e. no gcc / C++ extensions); - data is read directly into destination buf, avoiding a data copy; NOTE: for best performances caller should pass an empty buffer (where buf->buf address is aligned on a page boundary or at least on a sizeof(int)); - cherokee_buffer_read_from_fd(), add EWOULDBLOCK for those rare OS where it is different from EAGAIN; - cherokee_buffer_add_chunked(), substitute slow cherokee_buffer_add_va() with equivalent fast cherokee_buffer_add_*() calls; NOTE: this is a win because chunks can be as small as 1 - 8 KB and so at Gigabits speed this improvement matters; 2007-01-04 Alvaro Lopez Ortega * cherokee/icons.c (match_file): Updated for the new interface of the match() function. * cherokee/match.c (match): Now it returns ret_t rather than int. 2007-01-04 A.D.F * cherokee/handler_file.c (cherokee_handler_file_step): - align read size on a 4 byte limit, right now read buffer has a size of DEFAULT_READ_SIZE (8192) + 1 for '\0', so with this patch we end up reading ((8192 + 1) & ~3) which is 8192; * cherokee/post.c (cherokee_post_walk_to_fd): - read DEFAULT_READ_SIZE chunks of data, faster than DEFAULT_READ_SIZE - 1; * cherokee/socket.c (cherokee_socket_sendfile): - add new errno codes: - EINVAL (Linux), in Linux 2.4, if a FS (file system) does not support mmap operations then it cannot support sendfile too and in this case errno is set to EINVAL (see Linux 2.4 man page); - ENOSYS (all OS), it could be useful in other OS too (i.e. BSD, etc.); - EWOULDBLOCK, if it is != EAGAIN then handle it as EAGAIN. 2007-01-04 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_sendfile): Added a static boolean variable to store whether the system doesn't support the sendfile() function, in that way, this wrapper function will return faster since the systems reports ENOSYS once. * cherokee/handler_file.c (cherokee_handler_file_init): Removed check for HAVE_SENDFILE_BROKEN. * configure.in: Removed sendfile() test. It was declaring a superfluous macro called HAVE_SENDFILE_BROKEN if the system had a buggy sendfile implementation (like in some Linux 2.2 versions). 2007-01-03 A.D.F * cherokee/socket.c (cherokee_socket_sendfile): - remove || defined(HAVE_SENDFILE64) because it is generic and here we must compile code by using specific OS api (HPUX sendfile64() is not like Linux sendfile64()); - if HAVE_BROKEN_LINUX_SENDFILE or HAVE_SENDFILE_BROKEN is defined then return "ret_no_sys" instead of triggering a SHOULDNT_HAPPEN at the end of the function. NOTE: this case happens in Linux 2.2.x and some 2.4.x when large file support is enabled but native sendfile does not support loff_t, see also: config.h (#define _FILE_OFFSET_BITS 64). NOTE: maybe it would not be a bad idea to set --disable-largefile as default setting in Linux 2.2.x. * cherokee/buffer.c: - added a few comments to cherokee_buffer_substitute_string(). * cherokee/handler_dirlist.c: - removed unused define DEFAULT_NAME_LEN 40; - renamed substitute_token_guts() -> substitute_vbuf_token() and changed it: - added an array of two temporary buffers; - added a parameter pidx_buf to update the index of last content buffer to be used in next calls as source buffer; - added a few macros _VTMP_* to hide details about declaration of substitution variables and repeated code. * A few changes by Alvaro over these ones. 2007-01-02 A.D.F * cherokee/handler_error.c (build_hardcoded_response_page): - added a cherokee_buffer_ensure_addlen(buffer, 1000) to avoid too many reallocations; - replaced cherokee_buffer_add_va() for equivalent cherokee_buffer_add_*() calls; * cherokee/buffer.c: - added cherokee_buffer_substitute_string() which takes an additional parameter (destination buffer) and so does not need to reallocate memory unless this is really needed (cherokee_buffer_replace_string()) has not been touched); * cherokee/thread.h, cherokee/thread.c: - added a second temporary buffer to cherokee_thread_t because the need for two temporary buffers is not uncommon; * cherokee/handler_file.c: - changed macro from THREAD_TMP_BUF() to THREAD_TMP_BUF1(); * cherokee/handler_dirlist.c: - changed code to use cherokee_buffer_substitute_string() by using two temporary buffers (coming from the current thread) and alternating the substitutions from one temporary buffer to the other (stuff is copied from source to destination if cherokee_buffer_substitute_string() returns ret_ok; - changed name to the token macro, from: replace_token(); to: substitute_token(). 2007-01-01 Alvaro Lopez Ortega * cherokee/main_admin.c (config_server): Added getopt support and two parameters: port (-r) and document_root (-d). The configuration has been updated as well: switched from PHP to SCGI. 2006-12-30 Alvaro Lopez Ortega * cherokee/virtual_server.c (cherokee_virtual_server_configure): Ensure that, after configuring a virtual server, its document root property has been properly configured. A misconfiguration at this point could make the server crash. * cherokee/main.c (common_server_initialization): The error reporting has been improved. It wasn't printing the path of the configuration file, neither the path of the directory that it could be serving. * cherokee/handler_cgi.c (manage_child_cgi_process): Now it logs an error when something nasty happens trying to execute a CGI. * qa/138-ChangeUser-cgi.py: Added new QA test to ensure we don't break it again. * cherokee/handler_cgi.c (manage_child_cgi_process): "Change user" feature fixed. It wasn't working properly for CGI files. It fixes bug #126 * cherokee/handler_error.c: Do not use cherokee_buffer_add_va in the most used cases. It's kind of slow. * cherokee/mime_entry.c: mime_name property is now an static entry. * cherokee/handler_error.h, cherokee/handler_error.c: The content should be a static entry. It saves one malloc+free calls. 2006-12-29 Alvaro Lopez Ortega * qa/run-tests.py: Now the -v parameter (to use valgrind) reads a string in order to determine what valgrind utility it should use, so it becomes: -vcall, -vcache, -vhel or -vmem * qa/run-tests.py: Panic script path fixed. Now it accepts both global and relative paths. * qa/run-tests.py, qa/conf.py: cherokee-panic path is now relative to the source package rather than to system one. * cherokee/cherokee-panic: Check for the mail command, if it isn't found use cat instead. * cherokee/server.h, cherokee/server.c (cherokee_server_step): Prototype modified. Now it returns a ret_t that indicates whether or not the server should keep iterating. * cherokee/server.h: Added a new property wanna_reinit. There was one called wanna_exit, but we were misusing it. * cherokee/virtual_server.c (add_logger): Bug fix: Loggers were not initialized. * qa/run-tests.py: Added a new -l parameter lo enable logging. * cherokee/main.c (prepare_to_die), cherokee/server.h, cherokee/server.c (cherokee_server_handle_TERM): Added new signal TERM handle function. It flushes the log files before dying. 2006-12-28 Alvaro Lopez Ortega * README: Added a reference on how to cross compile it server. 2006-12-28 A.D.F *cherokee/thread.h: - added new field cherokee_buffer_t tmp_buf that now can be used to handle temporary contents by cherokee_buffer_*() (fast) functions; * cherokee/thread.c: - added allocation (4096 bytes) and free of tmp_buf on creation and on death of each thread; * cherokee/handler_file.c: - check_cached(), replaced one snprintf() call for the equivalent cherokee_buffer_*() calls (same code as in cherokee_handler_file_add_headers(); Above modifications speed up cherokee HTTP 304 Not Modified for static files by around 8% (+-2%): 9300 -> 10000 requests / sec. 2006-12-28 A.D.F * cherokee/buffer.h: - added cherokee_buffer_add_llong10(); * cherokee/buffer.c: - added cherokee_buffer_add_llong10(); - added unlikely in the test condition for a malloc() failure; * cherokee/handler_file.c: - cherokee_handler_file_add_headers(), replaced cherokee_buffer_add_va() calls for cherokee_buffer_add_str|*long1x() calls. Above listed modifications speed up cherokee by around 10% (+-2%) when retrieving a small file (index.html) whose size is 810 bytes, i.e.: 8550 -> 9500 requests / sec. 2006-12-28 Alvaro Lopez Ortega * m4/libwww.m4: Fixed. * cherokee/cherokee_logrotate.c (main): Rename ERROR to EXIT_ERROR, there was a conflict with some Win32 headers. * cherokee/socket.c: A few Win32 compilation fixes. Patch by Brian Rosner * cherokee/virtual_server.h: rx, tx should be off_t rather than size_t. * cherokee/virtual_server.h, cherokee/regex.c, cherokee/balancer_round_robin.h, cherokee/nonce.c, cherokee/fcgi_dispatcher.h, cherokee/server-protected.h, cherokee/logger.c, cherokee/iocache.c: Replaced #ifdef HAVE_PTHREAD with the new CHEROKEE_{RWLOCK,MUTEX}_T macros. 2006-12-27 Alvaro Lopez Ortega * cherokee_replace.c, Makefile.am (.sample.pre.sample): cherokee_replace is obsolete. Now we simply use sed to replace a few string in the example configuration file. Fixes #124. Patch by Diego "Flameeyes" Pettenň . * cherokee/access.c (cherokee_access_add_domain): Updated to fit the latest resolv cache changes. * cherokee/source.c (cherokee_source_connect): Now it uses the resolv cache rather that a plain call to cherokee_socket_gethostbyname(). It speeds up *cgi connections about a 15-20%. * cherokee/resolv_cache.h, cherokee/resolv_cache.c: Many changes along the code: fixes and improvements. Added a new method as well. * cherokee/common-internal.h (CHEROKEE_RWLOCK_T, CHEROKEE_MUTEX_T): Added new macros. 2006-12-26 Alvaro Lopez Ortega * cherokee/server.c (init_server_strings, build_server_string): Reworked. Added a few new static entries to store all the server strings used along the server. * cherokee/version.c (cherokee_version_add_w_port) (cherokee_version_add): Added patch string to the cherokee_version_full case. * cherokee/version.h, cherokee/version.c (cherokee_version_add_simple): Added new method. * cherokee/handler_dirlist.h, cherokee/handler_dirlist.c (cherokee_handler_dirlist_init): Now it uses the new static server entries for reading the server string. * cherokee/handler_error.c (build_hardcoded_response_page): Adapted to the last changes. 2006-12-24 Alvaro Lopez Ortega * cherokee/plugin.h (PLUGIN_EMPTY_INIT_FUNCTION, PLUGIN_INFO_INIT): Compilation warning fixed. 2006-12-23 Alberto Ruiz * windows/cherokee.nsi.in: Added package icon. * windows/cherokee.ico: Updated. * windows/cherokee_pkg.ico: Added ew icon. 2006-12-22 Alvaro Lopez Ortega * cherokee/post.h: Fixes MacOS X compilation. Fixes #120. * configure.in: Added test for the _pam_dispatch() function in the libpam library. It defines the HAVE_PAM_DISPATCH macro. * cherokee/validator_pam.c (cherokee_validator_pam_check): Now it uses pam_fail_delay() and pam_authenticate() rather than _pam_dispatch() if available. Patch by Marcus Rueckert 2006-12-21 A.D.F * cherokee/buffer.c: cherokee_buffer_add_long10(), use cuint_t instead of uint (uint typedef is not ubiquitous). 2006-12-21 Alvaro Lopez Ortega * cherokee/access.c (parse_netmask): Fixed a non-sense check. It also fixes a compilation warning. * cherokee/virtual_server.c (init_entry_property): Fixes compilation warning. * cherokee/handler_cgi.c (manage_child_cgi_process): Added chdir() error check. Fixes a compilation warning. * cherokee_replace.c (main): Fixes a couple for compilations warnings. * cherokee/balancer.c (cherokee_balancer_configure): Added a new "host" type. It allows to add pure host nodes to a balancer (so far, it only supported "interpreter" entries). * configure.in, cherokee/Makefile.am: Added support for the new mirror module. * cherokee/source.c (cherokee_source_new): Added new function. * cherokee/handler_mirror.h, cherokee/handler_mirror.c: Added new handler. It implements a redirector based on the balancer modules. Basically, it relays the request on a host port pair and then forwards the response to the client. 2006-12-19 Alvaro Lopez Ortega * cherokee/handler_admin.c (cherokee_handler_admin_init): Fixed post lenght type. * cherokee/post.h, cherokee/post.c (cherokee_post_get_len, cherokee_post_set_len): size_t -> off_t * cherokee/handler_fastcgi.h, cherokee/handler_fcgi.h, cherokee/handler_scgi.h, cherokee/handler_scgi.c (build_header): post_len property should be off_t. Fixed and set the right fomating string parameter. * cherokee/post.h: size, received and walk_offset type are now off_t rather than size_t. * cherokee/macros.h (FMT_SIZE, FMT_SIZE_HEX, CST_SIZE): Added new macros to defize the format string of a size_t value. * configure.in: Added check for the size of size_t, int and unsigned int. 2006-12-19 A.D.F * cherokee/buffer.h: - new function prototypes cherokee_buffer_add_*long*(). * cherokee/buffer.c: - changed value of REALLOC_EXTRA_SIZE from 0 to 16; - added new fast formatting function prototypes for numbers (nice to have as a counterpart of string copies): - cherokee_buffer_add_long10(); - cherokee_buffer_add_ulong10(); - cherokee_buffer_add_ullong10(); - cherokee_buffer_add_ulong16(); - cherokee_buffer_add_ullong16(); - reverted your last change in cherokee_buffer_read_from_fd() PRINT_ERROR(...FMT_OFFSET...) because size_t is not an off_t (in most systems size_t is always an unsigned int or even an uint32_t); NOTE: I guess that, sooner or later, we will have to change the type of len and size fields of cherokee_buffer_t, from int to size_t (lot of code to review, maybe it's a 0.7 thing). * cherokee/util.h: - removed references to cherokee_weekdays[] and cherokee_months[]; * cherokee/util.c: - removed arrays cherokee_weekdays[] and cherokee_months[] (see dtm.c); - minor space reformatting; * cherokee/server.c: - replaced cherokee_weekdays[] and cherokee_months[] with the equivalent cherokee_dtm_wday_name() and cherokee_dtm_month_name(); * cherokee/connection.c: - added a call to cherokee_buffer_ensure_size(header_buffer, 384) before the call to "add_headers" function callback; - added a few other cherokee_buffer_ensure_size() and cherokee_buffer_ensure_addlen(); * cherokee/handler_file.c: - replaced Etag: with ETag:; - added a call to cherokee_dtm_gmttm2str(); - replaced a few simple cherokee_buffer_add_va() with single calls to cherokee_buffer_add*(). 2006-12-17 Alvaro Lopez Ortega * cherokee/validator_htpasswd.c (cherokee_validator_htpasswd_check): Better initialization. It makes the validator safer is the password file is empty. * cherokee/handler_common.c (stat_file): Better initialization. * cherokee/handler_fcgi.h: post_len property is now size_t instead cuint_t. * cherokee/handler_scgi.c (build_header): Changed %d by FMT_OFFSET for printing to post length. * cherokee/server.c (cherokee_server_init): Check chdir() returned value. * cherokee/server.c (cherokee_server_write_pidfile): Check fwrite() returned cdde. * cherokee/connection.c (cherokee_connection_log_delayed): It could return an uninitialized value under some circunstances. Fixed. * cherokee/socket.h (OPENSSL_LAST_ERROR): Better initialization. Now it's a bit safer. * cherokee/buffer.c (cherokee_buffer_read_from_fd): Changed "%u" by FMT_OFFSET to print a size_t. (cherokee_buffer_print_debug): variables hex_text, and ascii_text weren't initilizated. * cherokee/version.c (cherokee_version_add) (cherokee_version_add_w_port): Compilation warning fixd: 'ret' may be used uninitialized in this function * cherokee/util.c (cherokee_estimate_va_length): Compilation warning fixed. util.c:611: warning: value computed is not used 2006-12-15 Alvaro Lopez Ortega * README: Updated. * configure.in: The initial CFLAGS was missing after testing for the pthread_rwlock_t structure. Fixed. Reported by Marcus Rueckert 2006-12-11 Alvaro Lopez Ortega * themes/default_header.html, themes/default_theme.css: Couple of minor changes in order to make it "Valid XHTML 1.0 Strict". 2006-12-11 A.D.F * cherokee/buffer.h: - new function prototype: cherokee_buffer_ensure_addlen(); * cherokee/buffer.c: - added new function cherokee_buffer_ensure_addlen() in order to ensure that there is enough space to add n characters to the buffer, useful to lower the number of reallocations when it is known how much space is needed (more or less); - added constant REALLOC_EXTRA_SIZE to each realloc() call; it is useful to lower the number of realloc() calls, especially when using functions like cherokee_buffer_add*() with small chunks; - added 1 to a few calls to cherokee_buffer_ensure_size in order to always allow space for a final '\0', which is included in "size" counting. 2006-12-11 Alvaro Lopez Ortega * themes/default_header.html: Replaced border="0" entry by a class="logo" one. * themes/default_theme.css: Added to new entries: .logo and .icon * m4/mysql.m4: It mysql_config wasn't found, it was printing "no" twice. Fixed. * cherokee/handler_cgi_base.c (add_systemroot_env) (cherokee_handler_cgi_base_build_basic_env): It adds a new SYSTEMROOT environment variable when running in Win32. I should fix #115. * cherokee/handler_phpcgi.c: Added Win32 path and name. Now, it shouldn't be necessary to define the interpreter if it's installer on c:\php\php.exe * cherokee/fcgi_manager.c (reconnect): Compilation problem. Fixes #116. Reported by bervik@citromail.hu. * themes/default_header.html: Fixes typo. There was a not valid entry. * cherokee/virtual_server.c (add_request): The error management has been slightly improved. It was leaking when a error occurred. 2006-12-10 A.D.F * cherokee/dtm.h: - added constant DTM_TIME_EVAL; - new function prototypes: cherokee_dtm_wday_name(); cherokee_dtm_month_name(); cherokee_dtm_gmttm2str(); * cherokee/dtm.c: - general cleanup; - added new internal arrays; - added new functions to convert a weekday index (0-6) or a month index (0-11) to the corresponding short name (3 characters long); - added new function cherokee_dtm_gmttm2str() in order to allow fast conversion from a gmt struct tm to a string (40 mlsec. for 100000 calls on my PC). 2006-12-08 Alvaro Lopez Ortega * cherokee/source_interpreter.c (cherokee_source_interpreter_spawn): Added little check. The interpreter may not be defined. * cherokee/handler_scgi.c (connect_to_server), cherokee/handler_fcgi.c (connect_to_server), cherokee/fcgi_manager.c (reconnect): Error handling has been slightly improved. 2006-12-07 Alvaro Lopez Ortega * cherokee/source.c (cherokee_source_connect), cherokee/socket.c (cherokee_socket_connect): FastCGI was failing on IPv6 enabled Solaris boxes because of a bug in these functions. Fixed. * cherokee/server.c (set_server_fd_socket_opts): It was failing to set TCP_MAXSEG on Solaris. It's acceptable if that call to the setsockopt() function fails. Fixed. 2006-12-06 Alvaro Lopez Ortega * qa/util.py (look_for_php, look_for_python): minor bug fix. 2006-12-05 Alvaro Lopez Ortega * cherokee/iocache.c (cherokee_iocache_stat_get): Memory leak fixed. 2006-12-05 A.D.F * cherokee/tdate_parse.h, cherokee/tdate_parse.c, cherokee/dtm.h, cherokee/dtm.c, cherokee/Makefile.am (libcherokee_base_la_SOURCES): Date parsing functions have been rewritten from scratch. These ones are between 12 and 16 faster than the previous ones. 2006-12-04 Alvaro Lopez Ortega * mods-ssl.sample.pre: Typo fixed. * cherokee/version.h, cherokee/version.c: New files. Implements cherokee_version_add_w_port() and cherokee_version_add(). * cherokee/handler_error.c (build_hardcoded_response_page): Now, it uses the new cherokee_version_add_w_port() function. * cherokee/buffer.c (cherokee_buffer_add_version): Removed. * cherokee/buffer.h: cherokee_version_t Removed. * cherokee/config_node.c (cherokee_config_node_read_list): Now it skips whites before each list entry. "a, b, c" should be "a", "b" and "c" instead of "a", " b" and " c" like previously. * cherokee/server.c (configure_server_property): Configuration key "mime_file" has been renamed to "mime_files". Now it accepts a list fo files rather than a single one. * qa/031-Post+urlencoded2.py, qa/101-HugePost.py, qa/083-RedirParam.py, qa/080-Extension2.py, qa/060-BigPost.py, qa/029-Post+Without-lenght.py, qa/127-SCGI-Post.py, qa/087-Location.py, qa/134-HTTP_headers.py, qa/037-PHP-post.py, qa/072-Inherit3.py, qa/run-tests.py, qa/135-RedirParams.py, qa/081-DocumentRoot-Common-index.py, qa/066-DirectoryIndex3.py, qa/126-SCGI.py, qa/128-ValidMethod-common.py, qa/116-RequestTiny.py, qa/038-PHP-get.py, qa/035-PHP-simple.py, qa/065-DirectoryIndex2.py, qa/131-ChangeUser-phpcgi.py, qa/079-Extension.py, qa/133-If-None-Match.py, qa/064-DirectoryIndex.py, qa/068-PathInfo2.py, qa/067-PathInfo.py, qa/115-Respin.py: Now it uses the look_for_python() function instead of PYTHON_PATH. * qa/util.py (look_for_python): Added new function to look for the Python interpreter. Now it works in the same way the PHP interpreter detection does. * qa/137-Mime1.py, qa/Makefile.am (EXTRA_DIST): Added new QA test to ensure that Content-type header is properly sent to the client. * cherokee/macros.h (__GNUC_VERSION, must_check): Added new macros. 2006-12-01 Alvaro Lopez Ortega * qa/run-tests.py, qa/conf.py (PHP_DIRS, PHP_NAMES), qa/util.py (look_for_php): Added PHP autodetection. If PHPCGI_PATH is set to "auto" it will look for the interpreter. * cherokee/plugin_loader.c (execute_init_func): Fixes plugin's init function look up. (load_common): Better error management. (get_sym_from_dlopen_handler): it was calling dlerror() too many times, and hence it wasn't displaying the right error message. Fixes bug #112. * cherokee/socket.c: There were a couple of includes missing. It was generating a compilation error on Solaris. Fixes bug #111. * Makefile.am (uninstall-local): It wasn't removing one of the symbolic links. 2006-11-30 Alvaro Lopez Ortega * cherokee/Makefile.am (libcherokeeinclude_HEADERS): Replace "module_loader.h" by "plugin_loader.h". Added "plugin.h" as well. It fixes bug #110. * cherokee/handler_dirlist.h, cherokee/handler_dirlist.c (render_parent_directory, cherokee_handler_dirlist_step), themes/default_entry.html: It wasn't adding the "Parent Directory" link to the generated pages. It fixes bug #106. * cherokee.conf.sample.pre: After installing Cherokee, the default website is server. Later on, if the index.html is removed, the iocache object will still keep its data, so if the server receives some request for the index, it will reply with a 404 error instead of displaying directory index (it was using the common). It fixes bug #109. * cherokee/server.c (print_banner): Print the right banner when it's listening a unix socket. * cherokee/socket.c (cherokee_bind_local): Now it removes the socket if it was already there (checking that it's certainly a socket). * configure.in (PACKAGE_PATCH_VERSION): It must be defined even if it isn't a Beta release. It fixes bug #105. * cherokee/handler_redir.c (cherokee_handler_redir_new): Fixes little memory leak. * cherokee/handler_redir.c, cherokee/handler_redir.h, cherokee/handler_error_redir.c, cherokee/module_loader.c, cherokee/handler_server_info.c, cherokee/module_loader.h, cherokee/handler_error_redir.h, cherokee/handler_server_info.h, cherokee/plugin_loader.c, cherokee/handler_admin.c, cherokee/handler_cgi_base.c, cherokee/plugin_loader.h, cherokee/handler_admin.h, cherokee/handler_cgi_base.h, cherokee/handler_dirlist.c, cherokee/handler_nn.c, cherokee/handler_dirlist.h, cherokee/virtual_server.c, cherokee/handler_nn.h, cherokee/handler_common.c, cherokee/module.c, cherokee/validator_ldap.c, cherokee/config_entry.c, cherokee/handler_common.h, cherokee/module.h, cherokee/validator_ldap.h, cherokee/config_entry.h, cherokee/validator_plain.c, cherokee/validator_plain.h, cherokee/validator.c, cherokee/encoder_table.c, cherokee/validator.h, cherokee/encoder_table.h, cherokee/validator_htpasswd.c, cherokee/plugin.h, cherokee/validator_htpasswd.h, cherokee/handler_file., cherokee/handler., cherokee/encoder.c, cherokee/handler_file.h, cherokee/handler.h, cherokee/encoder.h, cherokee/Makefile.am, cherokee/handler_fcgi.c, cherokee/balancer_round_robin.c, cherokee/encoder_gzip.c, cherokee/handler_fcgi.h, cherokee/handler_fastcgi.c, cherokee/encoder_gzip.h, cherokee/handler_fastcgi.h, cherokee/balancer.c, cherokee/balancer.h, cherokee/handler_proxy.c, cherokee/handler_scgi.c, cherokee/logger_ncsa.c, cherokee/handler_proxy.h, cherokee/handler_error.c, cherokee/handler_scgi.h, cherokee/logger_ncsa.h, cherokee/handler_error.h, cherokee/handler_cgi.c, cherokee/server-protected.h, cherokee/handler_cgi.h, cherokee/validator_mysql.c, cherokee/logger.c, cherokee/validator_mysql.h, cherokee/validator_htdigest.c, cherokee/logger.h, cherokee/validator_htdigest.h, cherokee/cherokee.h, cherokee/server.c, cherokee/handler_phpcgi.c, cherokee/handler_phpcgi.h, cherokee/logger_combined.c, cherokee/validator_pam.c, cherokee/validator_pam.h, cherokee/socket.c, cherokee/logger_w3c.c: "module" has been splitted into module and plug-in. * cherokee/handler_fcgi.c (do_send): Do not move the connection to polling if it receives a ret_eagain when it tries to write the post content. * cherokee/socket.c (cherokee_socket_write): Better initialization. Fixes a potential memory corruption problem. 2006-11-22 Alvaro Lopez Ortega * cherokee/handler_fcgi.c (do_send): Post handling was broken. Actually, I broke it with another commit a couple of days ago. It's working again. This problem showed up using Gallery 2, there were people who couldn't upload pictures. * cherokee/config_node.c (cherokee_config_node_add): Fixes bug #104. It was messing up the configuration tree if the entries were not sorted. * configure.in: Added new --enable-beta parameter. It allows to build beta versions based on the subversion revision number. 2006-11-20 Alvaro Lopez Ortega * cherokee/handler_scgi.c (connect_to_server), cherokee/fcgi_manager.c (reconnect), cherokee/handler_fcgi.c (connect_to_server): Socket connecting the server with the application server must be turned non-blocking right after being accepted. Fixed. 2006-11-16 Alvaro Lopez Ortega * cherokee/socket.h: Inclusion of arpa/inet.h has been moved after the inclusion of netinet/in.h. * cherokee/fdpoll-kqueue.c: Included sys/types.h. Needed by FreeBSD. * cherokee/macros.h: Added stdlib.h inclusion. * cherokee/handler_cgi_base.c (parse_header), cherokee/connection.c (get_range): atoll() calls have been replaced by strtoll() calls. It was failing on FreeBSD because of this. 2006-11-15 Alvaro Lopez Ortega * themes/default_header.html: Added "generator" meta entry. * cherokee/server.c (print_banner): Added compilation date. (initialize_server_socket): Little clean up. * qa/113-HeaderFile.py, qa/114-HeaderFile2.py: Fixed. There were a couple of TODO flags here. * cherokee/handler_common.c (cherokee_handler_common_configure): Handle ret_deny. The key may be managed by dirlist rather than by file. * cherokee/handler_file.c (cherokee_handler_file_configure): Return ret_deny if it finds an unknown configuration entry. 2006-11-14 Alvaro Lopez Ortega * qa/078-AccessAny.py (CONF): Added priority entry. * cherokee/access.c (parse_netmask): Added exception for 0 bits long masks. Added a few traces as well. * cherokee/virtual_server.c (cherokee_virtual_server_have_tls): Bug fixed. It was returning a wrong value here. * cherokee/socket.c (cherokee_bind_local): Fixed. * cherokee/socket.c (cherokee_socket_sendfile): Added initial Solaris implementation. * cherokee/server.c (print_banner): Not it uses a buffer rather than a *buffer. 2006-11-13 A.D.F * cherokee/buffer.c: - remove redundant spaces in blank lines; - add a couple of unlikely(pbuf == NULL) for failed allocations; - fix realloc() handling in order to avoid a memory leak; if realloc returns NULL then the original pointer to memory content is not touched and it is still valid (no free happens); NOTE: I don't think this is a real issue because usually it never happens on PCs, anyway as in theory it _may_ happen (maybe only on some micro-embedded-system), it's better to handle it properly; - remove cherokee_buffer_replace(), it looks like a stub function and it is not used by anybody; - optimize cherokee_buffer_replace_string(), if substring is not found in "buf" or if resulting length is 0 then there is no need to do something (copy / alloc memory). * cherokee/sendfile.c: - add a new constant MAX_SF_BLK_SIZE (max. sendfile block size) to limit size of data sent by each sendfile call because this can improve a lot things on small or old systems (FreeBSD 4.x, Linux 2.2, etc.); NOTE: right now default is set to 4 MB which should be good even for monster systems (i.e. up to 10-100 GB / sec. of disk I/O). NOTE: maybe in the near future we will add a new parameter in configuration file to set the value at runtime / startup; - cherokee_socket_sendfile(): - if size of data to be sent is 0 then return without calling sendfile; - limit size of data to MAX_SF_BLK_SIZE; - fix FreeBSD return error handling, only (re) variable has to be tested for error value, return ret_eagain only if errno == EAGAIN && *sent == 0. 2006-11-08 Alvaro Lopez Ortega * cherokee/thread.c (cherokee_thread_step_SINGLE_THREAD) (cherokee_thread_step_MULTI_THREAD): A few changes to adapt the code to latest changes. * cherokee/server-protected.h: the sockets aren no longer int's. Now, they are cherokee_socket_t objects, which makes much more sense and will allow us run the server on Unix sockets. * cherokee/socket.h, cherokee/socket.c (cherokee_socket_set_nodelay): Added new method. (cherokee_socket_listen): Added new method. (cherokee_socket_bind): Addned new method. (cherokee_socket_set_client): Almost rewritten. * cherokee/socket.h (cherokee_socket_is_connected, cherokee_socket_is_connected): Added two new macros, and did a bit of clean up. * configure.in: Added a new --disable-epoll parameter. By default, when it's cross compiling, it'll assume that epoll() works without testing it (it cannot execute a test program to check it out), so if your system doesn't support it, use the new --disable-epoll flag. * configure.in: A few changes to make it work in cross compiling environments. 2006-11-03 A.D.F * cherokee/handler_error.c: corrects mispellings in comments; indent fixed string only one tab beyond function names so that they are more readable; micro changes to http error strings. 2006-11-02 Alvaro Lopez Ortega * qa/126-SCGI.py (Test.Precondition), qa/127-SCGI-Post.py (Test.Precondition): If the SCGI wasn't installed an ugly error message was shown. Fixed. * cherokee/virtual_server.c (add_extensions): Bug fix. It was clearing the extension table right before adding a new extension and therefore it was keepling only the last one. QA tests showed it up. * cherokee/validator_ldap.c (LDAP_OPT_SUCCESS): Defines it if it wasn't defined previously (like in Solaris). * cherokee/validator_ldap.c (validate_dn): Takes care of ldap_start_tls_s(), if the system doesn't support it, it won't use it. * configure.in: Added check for ldap_start_tls_s() * cherokee/thread.c (process_active_connections): conn->header.method was meant to be conn->header.version. It was using the wrong property. * cherokee/util.c (cherokee_getpwnam, cherokee_getgrnam): Added a new case inside the HAVE_GETPWNAM_R_4 in order to support the _POSIX_PTHREAD_SEMANTICS prototype. * cherokee/server.c (update_bogo_now): It have to use "timezone" if the system doesn't support the gmtoff property. * cherokee/main.c (BASIC_CONFIG): Now, it uses the new try_include keyword. The -r parameter should work even if /etc/cherokee is not in place. * cherokee/config_node.c (cherokee_config_node_add): Added new "try_include" clause. If inclusion fails it'll okay. * configure.in (HAVE_GNUTLS, HAVE_OPENSSL): There is no reason to show such a fancy warning message is gnutls or openssl is not found. Removed. * configure.in: Added check for struct tm.tm_gmtoff 2006-11-01 Alvaro Lopez Ortega * cherokee/handler_server_info.c, cherokee/encoder_table.c: A few minor warnings have been fixed. * cherokee/logger_table.h, cherokee/logger_table.c, cherokee/Makefile.embedded, cherokee/server-protected.h, cherokee/Makefile.am (libcherokee_server_la_SOURCES), cherokee/server.c: Logger table class is no longer needed. Removed. 2006-11-01 A.D.F * cherokee/buffer.h: - move function prototype of cherokee_buffer_unescape_uri() near cherokee_buffer_escape_html. * cherokee/buffer.c: - move cherokee_buffer_unescape_uri() near cherokee_buffer_escape_html(); - move cherokee_buffer_cmp(), etc. up, before more general / helper functions; - cherokee_buffer_escape_uri(): - avoid a couple of jumps inside for loop for the most common cases. 2006-10-28 Alvaro Lopez Ortega * README, cherokee/handler_server_info.c (PAGE_HEADER), http-cherokee.xml, SUNWcherokee.spec (Source), cget.1, cherokee.1, cherokee_logrotate.1, configure.in, cherokee.spec.in (URL), cherokee/cherokee-panic (action), qa/023-Host.py, qa/046-Redir.py, qa/047-Redir2.py, qa/128-ValidMethod-common.py, qa/134-HTTP_headers.py, windows/cherokee.nsi.in, www/index.html: Domian changed. 0x50.org is no longer the project's domain, from now on it's cherokee-project.com. 2006-10-26 A.D.F * cherokee/buffer.h, cherokee/buffer.c: sparse blanks to tab conversions; cherokee_buffer_dup(), add a free() to fix a possible memory leak; rename cherokee_buffer_decode() to cherokee_buffer_unescape_uri() (unescape escape sequences) in order to make it consistent with cherokee_buffer_escape_html() and future cherokee_buffer_escape_uri(); * cherokee/buffer.c (cherokee_buffer_escape_html): - improve speed by using strpbrk() (fast function) to look for special characters; add '"' to the escaped characters; make sure there are no embedded '\0' in input string. * cherokee/handler_error.c: fixes a memor leak. 2006-10-24 A.D.F * cherokee/buffer.c (cherokee_buffer_decode): change cherokee_buffer_decode() in order to speed up it and to avoid to use original BSD (Jeff Poskanzer) source code. 2006-10-24 Alvaro Lopez Ortega * cherokee/util.h, cherokee/util.c (cherokee_hexit): Removed. 2006-10-21 Alvaro Lopez Ortega * contrib/05to06.py: Added new script. 2006-10-19 Alvaro Lopez Ortega * cherokee/server.c (update_bogo_now): Date header wasn't generated because of an error in the logic. Fixed. * cherokee/handler_dirlist.c (render_file): Code that replaces %icon% and %icon_alt% has been slightly cleaned up. Now it is a bit cleaner. * cherokee/exts_table.h, cherokee/exts_table.h, cherokee/thread.c: The extensions table is now implemented as a static structure. * cherokee/Makefile.embedded (OBJS): Little files: a couple of objects have been added and removed. * cherokee/server.c (cherokee_server_new): Fixed tiny memory leak: The server->icons object was created twice. * cherokee/module_loader.c (cherokee_module_loader_get, cherokee_module_loader_set_directory): These are now common function between embedded and non-embedded version. * cherokee/handler_redir.c: Code has been re-factored in order to make u-cherokee compile again. * cherokee/handler_file.c (cherokee_handler_file_init): use_io cache logic was wrong. There was a extra "not" that was fucking it up. Thanks to A.D.F for noticing there was something wrong with the iocache behaviour. * cherokee/mime.c (cherokee_mime_free): Added check to ensure mime object exists. * cherokee/server-protected.h, cherokee/server.c (cherokee_server_new): Removed config_file and icons_file properties. They are no longer needed. * cherokee/virtual_server.c (configure_virtual_server_property): Added three new configuration keys: "ssl_certificate_file", "ssl_certificate_key_file" and "ssl_ca_list_file". * cherokee/virtual_server.h, cherokee/virtual_server.c: server_cert, server_key and ca_cert are not longer char *, not they are cherokee_buffer_t's. * doc/develop/Makefile.am (EXTRA_DIST), doc/develop/draft-coar-cgi-v11-03.txt, doc/develop/rfc1952.txt, doc/develop/rfc2616.txt, doc/develop/rfc2817.txt : Removed RFCs. It's non-free content. 2006-10-14 Alvaro Lopez Ortega * cherokee/server.c (configure_server_property): Added new configuration key "thread_policy". * cherokee/handler_fcgi.c, cherokee/fcgi_manager.c, cherokee/handler_fastcgi.c: Implemented previous changes to scgi to these handlers. 2006-10-14 A.D.F * cherokee/http.c, cherokee/http.h: Added new error: "502 Bad gateway". * cherokee/thread.c (process_active_connections): add a missing test on 5xx http errors. * cherokee/handler_scgi.c: set conn->error_code = http_internal_error or http_bad_gateway or http_service_unavailable when there is a init fatal error. (Slightly reworked by Alvaro). 2006-10-07 A.D.F * cherokee/thread.c, cherokee/socket.c, cherokee/socket.h: Better fd management. Fixes a few problems with fd leaks. 2006-10-03 A.D.F * cherokee/handler_error.c: Couple of fixes for cherokee_handler_error_add_headers(): Always return on if (!http_code_with_body()). http_range_not_satisfiable (416) has an error body. 2006-09-26 Alvaro Lopez Ortega * qa/run-tests.py (CONF_BASE): Now, it uses the example mime types file instead of the system one. * cherokee/server.c (update_bogo_now): Partially rewritten. 2006-09-25 Alvaro Lopez Ortega * cherokee/iocache.c (cherokee_iocache_stat_get): Potential memory leak fixed. 2006-09-24 Alvaro Lopez Ortega * cherokee/server.c (update_bogo_now): Date string fixed. It was sending "GMT--5" instead of "GMT-5". * qa/run-tests.py (CONF_BASE): Added new config line to make it use by default the local plug-ins rather than the system ones. * cherokee/server.c (configure_server): Added new configuration key. It allows to define the modules directory: "module_dir". * cherokee/module_loader.h, cherokee/module_loader.c (cherokee_module_loader_set_directory, dylib_open, get_info): Added new method. It allows to set an alternative module directory. * cherokee/handler_file.c: sendfile() compilation fixed. It fixes a little problem with the range management if the server wasn't using either mmap or sendfile to send the file chunck. It also fixes the Content-Range reply header to use the right end position. * cherokee/virtual_server.c (configure_user_dir): User_dir directory name must end by slash to ensure paths can be easily concatenated. Bug reported by Daniel 'NebuchadnezzaR' Dehennin. 2006-09-23 Alvaro Lopez Ortega * qa/136-BadRange.py: Added new QA test to ensure previous changes work alright. * cherokee/handler_file.c (cherokee_handler_file_init): Now it stores the file lenght in conn->range_end if the response is going to be http_range_not_satisfiable, in this way the error handler is able to know the lenght and hence to send the right response. * cherokee/handler_error.c (cherokee_handler_error_add_headers): Added new http_range_not_satisfiable exception case. 2006-09-16 Alvaro Lopez Ortega * cherokee/util.c (cherokee_estimate_va_length): Performance improvement. Speeded up about 13,35%. 2006-0x-xx Alvaro Lopez Ortega * Loads of commits.. 2006-07-05 Alvaro Lopez Ortega * configure.in, cherokee/util.c (cherokee_trace): Added check for flockfile() and funlockfile(). It was failing compile on Win32. Patch by Philip Pemberton 2006-0x-xx Alvaro Lopez Ortega * Loads of commits.. 2006-06-13 Alvaro Lopez Ortega * cherokee/util.c (cherokee_tls_init): Added SSL hardware acceleration support. Patch by Yusuf Goolamabbas 2006-04-21 Alvaro Lopez Ortega * themes/Makefile.am, themes/default_theme.css, themes/default_header.html, themes/default_footer.html, themes/default_entry.html, configure.in: Added default theme for dirlist. * cherokee/handler_dirlist.c, cherokee/handler_dirlist.c: Almost rewritten: removed hardcoded HTML. Now it supports themes. 2006-04-17 Alvaro Lopez Ortega * cherokee/config_entry.c (cherokee_config_entry_set_handler_prop) (cherokee_config_entry_set_validator_prop): Removed. Not longer needed. * cherokee/thread.c (process_active_connections): There was an unhandler error case here. It was the source of some stability problems detected in 0.5.1. This problem was reported by Cesar Fernandez and Rodolfo Pilas (thanks guys!) 2006-04-16 Alvaro Lopez Ortega * cherokee/handler_redir.c, cherokee/handler_cgi_base.c, cherokee/handler_dirlist.c, cherokee/validator_plain.c, cherokee/validator_plain.h, cherokee/validator_htpasswd.c, cherokee/validator_htdigest.c, cherokee/handler_phpcgi.c: A few memory management problem have been fixed it (due to previous commit). * cherokee/server.c (cherokee_server_read_config_string): It doesn't make sente to keep the configuration nodes when the server start running, so now it frees it as soon as everything is parsed. * cherokee/config_node.h, cherokee/config_node.c (cherokee_config_node_new, cherokee_config_node_free): Added two new method (beside the stack'ed version _init()/_mrproper()). * cherokee/main_admin.c (config_server): Now it uses the new configuration strings rather than the internal API. * cherokee/server.c (cherokee_server_read_config_string): Added new method. Cherokee 0.5 supports it, so it was a regression. Fixed. * cherokee/config_node.c (cherokee_config_node_parse_string): Addnew new method. * Makefile.am, sites-default.sample.pre, cherokee/handler_redir, cherokee/handler_redir.h, cherokee/module_loader.c, cherokee/handler_server_info.c, cherokee/module_loader.h, cherokee/dict.c, cherokee/dict.h, cherokee/handler_cgi_base.c, cherokee/resolv_cache.c, cherokee/handler_cgi_base.h, cherokee/access.c, cherokee/handler_dirlist.c, cherokee/module_loader-protected.h, cherokee/list.c, cherokee/handler_dirlist.h, cherokee/virtual_server.c, cherokee/list.h, cherokee/virtual_server.h, cherokee/handler_common.c, cherokee/cherokee_show.c, cherokee/config_entry.c, cherokee/module.h, cherokee/config_entry.h, cherokee/request.h, cherokee/avl, cherokee/validator_plain.c, cherokee/reqs_list.h, cherokee/ext_source.c, cherokee/avl.c, cherokee/ext_source.h, cherokee/validator.c, cherokee/avl.h, cherokee/exts_table.c, cherokee/validator.h, cherokee/encoder_table.h, cherokee/typed_table.c, cherokee/main_admin.c, cherokee/typed_table.h, cherokee/validator_htpasswd.c, cherokee/thread.c, cherokee/buffer.c, cherokee/handler_file.c, cherokee/thread.h, cherokee/buffer.h, cherokee/main.c, cherokee/Makefile.am, cherokee/handler_fcgi.c, cherokee/session_cache.c, cherokee/config_node.c, cherokee/icons.c, cherokee/session_cache.h, cherokee/config_node.h, cherokee/icons.h, cherokee/handler_scgi.c, cherokee/handler_error.c, cherokee/table.c, cherokee/list_ext.c, cherokee/logger_table.h, cherokee/table.h, cherokee/handler_cgi.c, cherokee/list_ext.h, cherokee/dict, cherokee/server-protected.h, cherokee/handler_cgi.h, cherokee/module_read_config.c, cherokee/module_read_config.h, cherokee/admin_server.c, cherokee/connection_info.h, cherokee/validator_htdigest.c, cherokee/mime-protected.h, cherokee/table-protected.h, cherokee/matching_list.c, cherokee/cherokee.h, cherokee/matching_list.h, cherokee/iocache.c, cherokee/connection.c, cherokee/list_merge_sort.c, cherokee/list_merge_sort.h, cherokee/server.c, cherokee/handler_phpcgi.c, cherokee/dirs_table.c, cherokee/mime_entry.c, cherokee/server.h, cherokee/dirs_table.h, cherokee/virtual_entries.c, cherokee/validator_pam.c, cherokee/virtual_entries.h, cherokee/socket.c, cherokee/connection-protected.h, cherokee/reqs_list_entry.h, windows/cherokee.nsi.in, cherokee_logrotate.1, doc/develop/Intro.txt, cherokee.1, configure.in, README: Many changes mixed together in here: 1.- The list and AVL implementations are new. 2.- I've added a new configuration system much more generic than the previous one (it doesn't require yacc or lex any longer! but it isn't meant to be written by hand though). 3.- Most of the modules have been updated to read its configuration with the new method. * qa/031-Post+urlencoded2.py, qa/112-NiceError-CGI.py, qa/034-DirIndex2.py, qa/083-RedirParam.py, qa/125-domain-redir1.py, qa/080-Extension2.py, qa/070-Inherit.py, qa/104-ScriptAlias_PathInfo.py, qa/091-Digest2.py, qa/029-Post+Without-lenght.py, qa/127-SCGI-Post.py, qa/086-AuthUsers2.py, qa/020-VirtualHost.py, qa/087-Location.py, qa/015-CGI-simple.py, qa/082-Auth-header.py, qa/047-Redir2.py, qa/017-CGI-pathinfo2.py, qa/042-Pipelining.py, qa/118-Request-redir.py, qa/040-Auth-Basic2.py, qa/107-Priority1.py, qa/108-Priority2.py, qa/033-DirIndex.py, qa/076-AccessRange2.py, qa/109-Priority3.py, qa/089-gzip-encoding.py, qa/037-PHP-post.py, qa/061-PAM.py, qa/043-Pipelining2.py, qa/075-AccessRange.py, qa/072-Inherit3.py, qa/093-InvalidLinks.py, qa/097-htpasswd-sha1.py, qa/run-tests.py, qa/073-Access.py, qa/046-Redir.py, qa/117-DomainToDir.py, qa/045-Home2.py, qa/081-DocumentRoot-Common-index.py, qa/066-DirectoryIndex3.py, qa/063-DocumentRoot.py, qa/071-Inherit2.py, qa/126-SCGI.py, qa/102-QueryString.py, qa/128-ValidMethod-common.py, qa/124-DomainToDir2.py, qa/062-PAM2.py, qa/041-Auth-Basic3.py, qa/122-Methods.py, qa/098-htpasswd-crypt.py, qa/016-CGI-pathinfo.py, qa/001-basic.py, qa/044-Home.py, qa/116-RequestTiny.py, qa/021-VirtualHost2.py, qa/121-NoUserDir.py, qa/077-AccessRange3.py, qa/035-PHP-simple.py, qa/065-DirectoryIndex2.py, qa/088-CGI-envs.py, qa/085-AuthUsers.py, qa/131-ChangeUser-phpcgi.py, qa/018-CGI-pathinfo3.py, qa/094-URL-request.py, qa/110-Priority4.py, qa/123-ImplicitRedit.py, qa/099-htpasswd-plain.py, qa/050-HeadBody.py, qa/079-Extension.py, qa/113-HeaderFile.py, qa/074-Access2.py, qa/096-htpasswd-md5.py, qa/084-RedirParamShow.py, qa/049-NN-broken.py, qa/064-DirectoryIndex.py, qa/030-Post+urlencoded.py, qa/068-PathInfo2.py, qa/069-PathInfo3.py, qa/092-Digest3.py, qa/095-htpasswd-apache-md5.py, qa/067-PathInfo.py, qa/048-NN.py, qa/039-Auth-Basic.py, qa/105-If-Range.py, qa/130-Digest-EmptyPasswd.py, qa/115-Respin.py, qa/103-ScriptName.py, qa/129-Basic-EmptyPasswd.py, qa/114-HeaderFile2.py, qa/106-If-Range2.py, qa/036-DocumentRoot-common.py, qa/090-Digest.py, qa/078-AccessAny.py, qa/100-Digest-htdigest.py: Rewritten using the new configuration file syntax. 2006-04-15 Alvaro Lopez Ortega * cherokee/handler_dirlist.c (cherokee_handler_dirlist_add_headers): Added charset entry into Content-Type header. 2006-04-12 Alvaro Lopez Ortega * cherokee/main.c (common_server_initialization): PID file must to written before the server changes its user identity. * cherokee.1, cherokee_logrotate.1, doc/develop/Intro.txt, README, sites-default.sample.pre, windows/cherokee.nsi.in: URL poiting to alobbs.com has been fixed to point to 0x50.org. Patch by Gunnar Wolf 2006-04-08 Rodrigo Fernandez-Vizarra * cget/main.c: Modified cget not to use the event interface of the download and to use the new interface to query the status of a download * cherokee/downloader-protected.h: Added field the cherokee_downloader struct to store the status of the download * cherokee/downloader.c: Implemented the interface to query the status of a download * cherokee/downloader.h: Added interface to query the status of a download 2006-04-07 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_dup): New method. 2006-04-05 Alvaro Lopez Ortega * cherokee/macros.h (equal_str, equal_buf_str): Added new macros 2006-04-04 Alvaro Lopez Ortega * cherokee/module_loader.c, cherokee/module_loader.h (cherokee_module_loader_get): New method. * cherokee/icons.c (cherokee_icons_configure): Added. * cherokee/icons.h, cherokee/icons.c (cherokee_icons_read_config_file, cherokee_icons_read_config_string): Removed. 2006-04-03 Alvaro Lopez Ortega * cherokee/main_admin.c, cherokee/Makefile.am: Added file to build the administration server. * cherokee/config_node.c, cherokee/config_node.h: Added new class. * cherokee/cherokee_admin.c, cherokee/Makefile.am: cherokee_admin.c renamed to cherokee/cherokee_show.c * admin, admin/Makefile.am, configure.in: Added new directory to hold the admin interface sources. * cherokee/virtual_server.h, cherokee/virtual_server.c: A few buffers are now embedded rather than pointers. 2006-04-01 Alvaro Lopez Ortega * cherokee/util.c (cherokee_gethostbyname): Fixes segfault. * configure.in, cherokee/Makefile.am: Added compilation stuff for handler proxy. 2006-04-01 Cesar Fernandez Gago * handler_proxy.c, handler_proxy.h: Added new handler. 2006-04-01 Alvaro Lopez Ortega * cherokee/connection.c (get_host): Little clean up. * cherokee/handler_error.c (build_hardcoded_response_page): It was missing a break. Patch by Philip Pemberton 2006-03-31 Alvaro Lopez Ortega * cherokee.spec.in: Fixed extra space. Reported by rui.lapa@ruilapa.net 2006-03-29 Alvaro Lopez Ortega * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_envp): Under some circumstances it was trying to access NULL. Fixed by olivier-ml1@oleastre.be 2006-03-28 Alvaro Lopez Ortega * cherokee/ext_source.c (cherokee_ext_source_spawn_srv): Cleaned up. olivier-ml1@oleastre.be reported problems compiling on Win32 because of a bunch of includes I forgot after some tests. * cherokee/buffer.c (cherokee_buffer_print_debug): Improved by olivier-ml1@oleastre.be. 2006-03-26 Alvaro Lopez Ortega * cherokee/handler_fcgi.c (cherokee_handler_fcgi_free): Memory leak. Fixed. * cherokee/header.c (cherokee_header_parse): Partially rewritten. It should be slightly faster. Some headers were added as known as well. * qa/134-HTTP_headers.py: New test to check HTTP_* headers inside in cgi_base based handlers. * cherokee/header.h, cherokee/header.c, cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): From now on, "Cookie: " is a known header. * qa/042-Pipelining.py, qa/043-Pipelining2.py: Fixed. It was using "Connection-type: " instead of "Connection: " * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): Added HTTP_ACCEPT header. * cherokee/socket.c: fd 0 is okay. Fixed. 2006-03-25 Alvaro Lopez Ortega * cherokee/handler_cgi_base.c, cherokee/handler_cgi_base.h, cherokee/ext_source.c, cherokee/read_config_grammar.y, cherokee/handler_fcgi.c: Many thing fixed in here. Some environment variables were fixed. New code to signal the FastCGI that it is certainly a Fastcgi, and some clean up. 2006-03-22 Alvaro Lopez Ortega * cherokee/handler_fcgi.c (process_package): Quite important bug fix. It wasn't taking in consideration the padding when it was checking if the fastcgi package was big enough to be processed. 2006-03-20 Alvaro Lopez Ortega * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): Added some aditional headers: HTTP_IF_RANGE, HTTP_IF_MODIFIED_SINCE, HTTP_AUTHORIZATION and HTTP_ACCEPT_ENCODING. * cherokee/read_config_scanner.l, cherokee/read_config_grammar.y (fix_win32_path): The space character wasn't allowed in Win32 paths. Fixed. Patch by olivier-ml1@oleastre.be * cherokee/header.h, cherokee/header.c: Losing some fat.. cherokee_header_foreach() removed. * cherokee/header.h, cherokee/header.c, cherokee/handler_file.c (check_cached): Yet another header promoted to known: "If-Modified-Since" * cherokee/handler_file.c (check_cached): Fixed. "If-None-Match" is a known header, I made this change yesterday. * cherokee/header.h, cherokee/header.c (cherokee_header_parse), cherokee/connection.c: "Authorization" promoted to known header. * cherokee/logger_w3c.c: Removed a static method array that was used to look up the name of the http method used in the connection. Now, it uses cherokee_http_method_to_string(). * cherokee/handler_cgi_base.c, cherokee/validator.c, cherokee/thread.c, cherokee/handler_file.c, cherokee/header.c, cherokee/header.h, cherokee/handler_fcgi.c, cherokee/handler_fastcgi.c, cherokee/logger_ncsa.c, cherokee/handler_error.c, cherokee/handler_cgi.c, cherokee/connection.c, cherokee/logger_w3c.c, cherokee/connection-protected.h: con->header is no longer dynamic, now it is embedded inside the connection object. * cherokee/connection-protected.h, cherokee/connection.c, cherokee/handler_cgi_base.c, cherokee/handler_dirlist.c, cherokee/thread.c, cherokee/handler_file.c, cherokee/logger_ncsa.c, cherokee/handler_error.c, cherokee/connection_info.c, cherokee/url.c: Now conn->socket is embedded inside connection. It does not logger use a _new/_free object. * cherokee/icons.c (cherokee_icons_get_icon): It was using a case sensitive search for the extension, but it does much more sense to do a case insensitive search. Changed. * cherokee/table.h, cherokee/table.c (cherokee_table_init_case): Added new method. If performs searches on the tree using strcasecmp rather than strcmp. 2006-03-19 Alvaro Lopez Ortega * cherokee/Makefile.am: Applied a patch to compile Win32 modules, by olivier-ml1@oleastre.be * configure.in: Added check for the getopt.h header file. * cherokee/handler_redir.c, cherokee/handler_server_info.c, cherokee/handler_dirlist.c, cherokee/handler_file.c, cherokee/handler_error.c, cherokee/connection.c: Some clean up. There were many cherokee_buffer_add() calls with hardcoded lenghts. I have changed them for cherokee_buffer_add_str calls. * cherokee/handler_file.c (check_cached): Fixed to work with If-Range as a known header. * cherokee/header.c (cherokee_header_parse): Little hack to slightly speed up the header parsing. * qa/133-If-None-Match.py, qa/Makefile.am: Added new test. It checks the HTTP_IF_NONE_MATCH. * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): Now it adds HTTP_IF_NONE_MATCH. * cherokee/header.h, cherokee/header.c (cherokee_header_parse): Added support of If-Range and If-None-Match headers. * cherokee/buffer.c (cherokee_buffer_drop_endding): Added a little sanity check. It isn't possible to drop negative amounts. * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): Bug fix. It was setting SERVER_NAME twice. * cherokee/module.h, cherokee/validator_plain.c, cherokee/read_config_grammar.y, cherokee/validator_htpasswd.c, cherokee/validator_htdigest.c, cherokee/validator_pam.c: Added a check in the configuration parser to ensure that the authentification method are supported by the validators. It closes bug #55. * cherokee/handler_cgi_base.c (cherokee_handler_cgi_base_build_basic_env): Bug fix. It was setting the SERVER_NAME variable with the colon and the port number. Patch by olivier-ml1@oleastre.be 2006-03-18 Alvaro Lopez Ortega * qa/132-file-ContentType.py: Added another QA probe. It tests that the Content-Type header is sent properly. * qa/131-ChangeUser-phpcgi.py: Added new test. It checks the ChangeUser property of the phpcgi handler. * qa/130-Digest-EmptyPasswd.py: Added new test to ensure Digest authentication works with emtpy passwords. * cherokee/handler_fcgi.c, cherokee/handler_fcgi.h: Added new handler. It implements a very basic FastCGI protocol.. a so small subset of the original spec that is even supported by the brain death implementation of the PHP interpreter. * qa/129-Basic-EmptyPasswd.py: Added new test case to ensure previous bug is fixed. * cherokee/validator_plain.c (cherokee_validator_plain_check): Bug fix. It was crashing it the password provided by the client was emtpy. * qa/040-Auth-Basic2.py: The Base64 string is not longer hardcoded 2006-03-07 Alvaro Lopez Ortega * cherokee/socket.h, cherokee/socket.c (cherokee_socket_init, cherokee_socket_mrproper): Added new methods. 2006-02-28 Alvaro Lopez Ortega * qa/run-tests.py: Added new option -f to disable PHP/FastCGI in the QA tests. By default it's enabled. * cherokee/handler_fastcgi.c (send_post): Post greater than 64k were broken. Now, it splits the post in smaller FCGI packages in order to be able to send it all. * cherokee/post.c, cherokee/post.h (cherokee_post_walk_finished): Added new function. * cherokee/handler_file.h, cherokee/handler_file.c: Fixes "IOCache off". 2006-02-16 Alvaro Lopez Ortega * cherokee/thread.c (cherokee_thread_close_polling_connections): New function. 2006-02-15 Alvaro Lopez Ortega * cherokee/thread.c (process_active_connections): Lingering close related bug fixed. 2006-02-14 Alvaro Lopez Ortega * cherokee/read_config_embedded.c, cherokee/handler_common.c, cherokee/handler_file.c, cherokee/Makefile.embedded: There were some problem with the IOCache in the embedded version. This patch fixes them. * cherokee/read_config_embedded.c (cherokee_embedded_read_config): I must use the default handler entry in the virtual server structrure rather than the "/" directory. Fixed. * config.h.win32: Patch by Gisle Vanem 2006-02-13 Alvaro Lopez Ortega * cherokee/handler_fastcgi.c (send_post): Oops! I forgot to implement the POST. O:-) * cherokee/socket.c: A few little problem were fixed. 2006-02-11 Alvaro Lopez Ortega * cherokee/handler_cgi.c (fork_and_execute_cgi_win32): A few bug were fixed. * cherokee/handler_redir.h, cherokee/handler_redir.c: is_hidden must be a property of each regex entry rather than a global property to the handler. It fixes bug #42. 2006-02-06 Alvaro Lopez Ortega * qa/122-Methods.py: There were some wrong paths in these requests. Fixed. * qa/128-ValidMethod-common.py, qa/Makefile.am (EXTRA_DIST): Added a new test case to cover the previous bug fix. * cherokee/handler_common.c: valid_methods should be http_all_methods. This handler relays in other ones, so the final handler should be the one which checks it. 2006-02-04 Alvaro Lopez Ortega * cherokee/read_config_grammar.y: A few checks for Win32 paths were added. 2006-02-03 Alvaro Lopez Ortega * cherokee.nsi, configure.in: Added new file * handler_gnomevfs.h handler_gnomevfs.c, cherokee/Makefile.am, configure.in: Gnome-VFS stuff removed. We are not longer supporting it. 2006-02-02 Alvaro Lopez Ortega * cherokee/read_config_grammar.y (fulldir): The grammar now uses the rule fulldir instead of the T_FULLDIR token. This has allowed me to fix up the paths on Windows. 2006-02-01 Alvaro Lopez Ortega * cherokee/macros.h: Added SLASH macro. * cherokee/fdpoll.c (cherokee_fdpoll_new): If it has Win32 select, don't try to use the common select as well. * configure.in: Added check for the new Win32 select. * cherokee/fdpoll-win32.c, cherokee/Makefile.am, cherokee/fdpoll.c (cherokee_fdpoll_new, cherokee_fdpoll_best_new): Added new I/O backend for Windows. * cherokee/fdpoll.c (cherokee_fdpoll_has_method): Removed. * cherokee/win32_misc.c (win_init): Added atexit to call WSACleanup(). Is it really needed? I have no idea! 2006-01-31 Alvaro Lopez Ortega * cherokee/win32_misc.c (win_dlopen): Patch for dlopen(NULL) on Windows. By Gorka Eguileor Gimeno * qa/126-SCGI.py, qa/127-SCGI-Post.py, qa/Makefile.am: Added new couple of QA tests for SCGI. 2006-01-30 Alvaro Lopez Ortega * cherokee/ext_source.h, cherokee/ext_source.c: Many changes to share code between the FastCGI and SCGI handlers. * cherokee/handler_cgi.c, cherokee/handler_cgi.h: This handler is now based on handler_cgi_base. * cherokee/handler_cgi_base.c, cherokee/handler_cgi_base.h: New class. It is the base for the handler CGI and SCGI. * cherokee/handler_cgi.h, cherokee/handler_cgi.c, cherokee/Makefile.am: New handler for SCGI! 2006-01-28 Alvaro Lopez Ortega * cget/main.c (do_download__has_headers): It has to use strrchr() instead of rindex(). Fixed. * cherokee/server.c (initialize_server_socket6, initialize_server_socket4): Socket #0 is okay. The check was wrong. * cherokee/macros.h (CHEROKEE_EXPORT): New macho for Win32 defining __declspec(dllexport). * cherokee/module_read_config.c (read_config_file): Use CHEROKEE_EXPORT. The server has to be able to discover this symbol at run time. In Win32 it is mandatory to use a flag for this. * cherokee/win32_misc.h, cherokee/win32_misc.c (sleep): Implemented sleep() system call for Win32. * cherokee/handler_dirlist.c (generate_file_entry): User PATH_MAX is _PC_NAME_MAX is undefined (in Win32). * cherokee/ncpus.c: Don't use this function in Win32. There is port on win32_misc.c. 2006-01-27 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_accept_fd): 0 is a valid file descriptor. There is no problem if accept() returns it. Fixed. It fixes bug #12: http://www.0x50.org/bugs/ticket/12 * cherokee/util.c (cherokee_trace): Now, it can log the debugging information in syslog. It is handy for debugging the server when it has been launched as daemon (-b switch). * cherokee/util.c (cherokee_estimate_va_length): Added support for %p entries. 2006-01-26 Alvaro Lopez Ortega * http-cherokee.xml: Added SMF support, by Rodrigo Fernandez-Vizarra * SUNWcherokee.spec: Updated. by Rodrigo Fernandez-Vizarra * contrib/cherokee: Bugfix by Alex del Pozo Peralta 2006-01-24 Alvaro Lopez Ortega * cherokee/read_config_grammar.y (pidfile), cherokee/server.h, cherokee/server.c (cherokee_server_write_pidfile), cherokee/main.c (common_server_initialization): Now it writes down the pid file after forking as a daemon. 2006-01-21 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_connect): Now there are two cases for the connect call: with and without IPv6. Solaris was failing (EINVAL) because the last argument (the size) was too big. * cherokee/macros.h: CHEROKEE_FUNCTION_NAME macro removed in favor of the C99 __func__ variable. * configure.in: Added checks for __func__ and __FUNCTION__. * qa/067-PathInfo.py: Added a comment about a bug in the current version of PHP5 which affects this test. * qa/066-DirectoryIndex3.py (Test.Prepare, Test.Precondition): It wasn't using the Interpreter entry in the test configuration. It is mandatory for the tests. Fixed. * cherokee/handler_phpcgi.c (cherokee_handler_phpcgi_new): Fixed a potential SEGFAULT printing the error message. * qa/run-tests.py (mainloop_iterator): Little fix. It was failing to test the preconditions in quiet mode (-q). * qa/045-Home2.py (Test.Precondition): There was a little typo here: f.close rather f.close(). It wasn't closing the descriptor. * configure.in, cherokee/socket.c: Added a check for systems with a broken version of setsockopt (SO_RCVTIMEO): SO_RCVTIMEO is defined but unimplemented. * cherokee/buffer.c (cherokee_buffer_escape_html): It was an out by one here. Seems to be fixed now. * cherokee/util.c (cherokee_short_path): After each removed block it was coming back too much, which in some cases was causing it go out of the buffer. Fixed. * cherokee/handler_cgi.c (parse_header): It should access directly to conn->header_buffer. There is local variable called "buffer" for that. Actually, is the same buffer, but it is cleaner in this way. * qa/run-tests.py: Now the -d option (pause for attach a debugger) accepts a number as argument.. it is really handy :-) * configure.in: poll() took over port event in Solaris time ago, but the configure information wasn't showing it like that. 2006-01-20 Alvaro Lopez Ortega * cherokee/handler_redir.c, cherokee/virtual_server.c, cherokee/virtual_server.h, cherokee/config_entry.c, cherokee/config_entry.h, cherokee/read_config_grammar.y, cherokee/thread.c, cherokee/connection.c, cherokee/dirs_table.c, cherokee/connection-protected.h, configure.in, qa/117-DomainToDir.py, qa/124-DomainToDir2.py, qa/Makefile.am, qa/123-ImplicitRedit.py, qa/base.py, qa/115-Respin.py: This big commit targets a healthier dirs_table and web_directory management. It adds a new default handler entry in each virtual host, and takes care about redirect the requests that are equal to any the directory entries if it don't end with a slash. This patch has also changed the way in which the directories are stored in the table: now they never end with a slash. A positive side effect of this is that it will do less look-ups in each request. * cherokee/icons_grammar.y: Fixed shift/reduce conflict. Reported by Rodrigo Fernandez-Vizarra . This fix allows to generate the scanner using Lex (in addition to Flex). * cherokee/handler_dirlist.c (generate_file_entry): Bugfix. It was using _PC_NAME_MAX like a constant with the maximun length rather than call to pathconf(). It was causing a Segment Fault on OpenSolaris. 2006-01-19 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_gethostbyname): Wrong conditional compilation entry fixed. Patch by olivier-ml1@oleastre.be * 0.4.30 released 2006-01-18 Alvaro Lopez Ortega * Makefile.am (EXTRA_DIST): Changed the old Blastwave compilation scripts for a CBE spec file (by Damien Carbery) * cherokee/handler_file.c (cherokee_handler_file_add_headers): uCherokee compilation fix. * cherokee/typed_table.h, cherokee/typed_table.c (cherokee_typed_table_set_free): Added new function. * configure.in: Added tar-ustar to AM_INIT_AUTOMAKE. It doesn't need to create tar v7. * cherokee/fcgi_manager.c (process_buffer): strndup() is unimplemented in both OpenSolaris and BSDes. I have replaced the code which was using strndup() a couple of call to the cherokee_buffer_*() API. * configure.in: It uses printf rather than echo and sed in order to fix a compilation problem in OpenSolaris and BSD machines: http://www.0x50.org/bugs/ticket/10 2006-01-16 Alvaro Lopez Ortega * cherokee/util.c (cherokee_trace): Little improvement. I was calling getenv many times if the TRACE_ENV variable wasn't set. Now, it does it only once. * cherokee/fcgi_manager.c (connect_to_srv): Now the socket opened to the FastCGI is set in non-blocking mode. * cherokee/handler_fastcgi.c (cherokee_handler_fastcgi_step, cherokee_handler_fastcgi_add_headers): Integrated with the connection polling list. 2006-01-15 Alvaro Lopez Ortega * cherokee/handler_fastcgi.c (cherokee_handler_fastcgi_add_headers): If the connection could write the request to the server, but it has an ret_error trying to read the reply, it means it must launch a new one. * cherokee/fcgi_manager.c, cherokee/fcgi_manager.h, cherokee/read_config_grammar.y, cherokee/fastcgi-common.c, cherokee/fastcgi-common.h, cherokee/handler_fastcgi.c, cherokee/handler_fastcgi.h: Added support for setting environment variables on the FastCGI process. * cherokee/fastcgi-common.c (cherokee_fcgi_server_add_env): Added new function. * cherokee/handler_fastcgi.c, cherokee/fcgi_manager.c, , cherokee/fcgi_manager.h: Some FastCGI fixes by Mohammad DAMT. * cherokee/handler_fastcgi.h, cherokee/handler_fastcgi.c (add_more_env): Added "Env" support. It allows to add custom environment variables just like the CGI handler. 2006-01-13 Alvaro Lopez Ortega * cherokee/http.c (entry): There was a memory corruption problem here. It came from of the yesterday commits. * mime.compression.types.sample, Makefile.am (uninstall-local, install-data-local): Added mime.compression.types.sample containing the mime types we want the server to send but not really MIME types but compressors. * cherokee/read_config_grammar.y, cherokee/handler_file.c, cherokee/Makefile.am, cherokee/mime.c, cherokee/mime.h, cherokee/server-protected.h, cherokee/module_read_config.c, cherokee/read_config_scanner.l, cherokee/cherokee.h, cherokee/server.c, cherokee/mime_entry.c, cherokee/mime_entry.h, mime.types.sample: Now it reads the format of the /etc/mime.types file. It also accepts a new configuration entry in the main grammar: MimeType to replace the old functionality. This big change shouldn't generate any kind of regression, besides the fact the configuration file format has change slightly. * mime.conf.sample, cherokee/mime_grammar.y, cherokee/mime_scanner.l: Removed. 2006-01-12 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_get_request), cherokee/thread.c (process_active_connections): It must use http_method_with_input() instead of the checking with http_post. * qa/122-Methods.py, qa/Makefile.am (EXTRA_DIST): New test to check non common methods. * cherokee/handler_redir.c, cherokee/handler_error_redir.c, cherokee/handler_server_info.c, cherokee/handler_admin.c, cherokee/handler_dirlist.c, cherokee/handler_nn.c, cherokee/handler_common.c, cherokee/config_entry.c, cherokee/module.h, cherokee/config_entry.h, cherokee/thread.c, cherokee/handler_file.c, cherokee/handler.c, cherokee/handler.h, cherokee/handler_fastcgi.c, cherokee/http.c, cherokee/handler_gnomevfs.c, cherokee/http.h, cherokee/logger_ncsa.c, cherokee/handler_cgi.c, cherokee/connection.c, cherokee/server.c, cherokee/handler_phpcgi.c, cherokee/logger_w3c.c, cherokee/connection-protected.h: It will check if the used HTTP method is valid. Each handler has an entry describing which ones are allowed. * qa/base.py (TestCollection): New class * cherokee/http.h (http_method_with_input): Added new macro. Now http_post isn't the only method with input. * cherokee/http.h: Added new http error: 405, method not allowed. We will need it from now on. 2006-01-11 Alvaro Lopez Ortega * cherokee/util.c (cherokee_short_path): There was an out by one here. In some situations, it was reading one byte outside the reserved memory. It is now fixed. * cherokee/util.h, cherokee/util.c (cherokee_get_timezone_ref): timezone is long, not int. * cherokee/header.c (parse_request_first_line, parse_method): Added a bunch of methods. Now it should be able to parse WebDAV requests. * cherokee/http.c (cherokee_http_method_to_string, cherokee_http_version_to_string): Rewritten. * configure.in: Added a new check for the localtime localtime_r functions. * cherokee/util.h, cherokee/util.c (cherokee_localtime, cherokee_get_timezone_ref): Added new functions. * cherokee/server.c (update_bogo_now): Fixed, now it sends the header with the right GMT value. Until now, it was using the coverted time to GMT (which was the same time, but it is king of weird to be in GMT+1 and reply header like being in GMT). * cherokee/logger_w3c.c (cherokee_logger_w3c_write_access) (cherokee_logger_w3c_write_error), cherokee/logger_ncsa.c (build_log_string): Integrated with cherokee_localtime() and cherokee_get_timezone_ref() functions. 2006-01-10 Alvaro Lopez Ortega * cherokee/handler_fastcgi.c (fixup_padding): It keeps track of the last header package. In this way, it doesn't need to parse the buffer header in order to set the padding length. 2006-01-08 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_get_request), cherokee/thread.c (process_active_connections): If UserDir is unset it should manage requests starting by /~ like common requests. Fixed. * qa/121-NoUserDir.py, qa/Makefile.am: New test: "If UserDir isn't set, it should threat ~ as a common character" * cherokee/connection.c (cherokee_connection_get_request): There was an error in the UserDir redirections. * www/Makefile.am (install-data-local): Little bugfix. * cherokee/handler_fastcgi.c (fixup_padding): Applied path by Mohammad DAMT . The padding entry of the last packet was set to zero (which was incorrect in 7 of 8 cases). 2006-01-07 Alvaro Lopez Ortega * www/Makefile.am: It shouldn't overwrtie /var/www/index.html if it already exits. Fixed. 2006-01-01 Alvaro Lopez Ortega * configure.in, cherokee_replace.c, cget/main.c, cherokee/win32_misc.c, cherokee.spec.in, cherokee/read_config_grammar.y, cherokee/logger_w3c.h, cherokee/handler_redir.c, cherokee/fcgi_manager.c, cherokee/handler_redir.h, fcgi_manager.h, cherokee/read_config_embedded.c, cherokee/handler_error_redir.c, module_loader.c, cherokee/handler_server_info.c, cherokee/read_config_embedded.h, module_loader.h, cherokee/fdpoll.c, cherokee/handler_error_redir.h, cherokee/dict.c, handler_server_info.h, cherokee/fdpoll.h, cherokee/handler_admin.c, cherokee/dict.h, handler_admin.h, cherokee/resolv_cache.c, cherokee/fdpoll-select.c, cherokee/admin_request.c, access.c, cherokee/resolv_cache.h, cherokee/admin_request.h, cherokee/access.h, handler_dirlist.c, cherokee/module_loader-protected.h, cherokee/handler_nn.c, handler_dirlist.h, cherokee/virtual_server.c, cherokee/handler_nn.h, virtual_server.h, cherokee/win32_misc.h, cherokee/handler_common.c, cherokee/module.c, config_entry.c, cherokee/request.c, cherokee/macros.h, cherokee/buffer_escape.c, fdpoll-epoll.c, cherokee/handler_common.h, cherokee/downloader-protected.h, module.h, cherokee/config_entry.h, cherokee/icons_scanner.l, cherokee/request.h, buffer_escape.h, cherokee/reqs_list.c, cherokee/validator_plain.c, cherokee/reqs_list.h, validator_plain.h, cherokee/fdpoll-poll.c, cherokee/validator.c, cherokee/encoder_table.c, validator.h, cherokee/exts_table.c, cherokee/encoder_table.h, cherokee/typed_table.c, downloader.c, cherokee/exts_table.h, cherokee/typed_table.h, cherokee/validator_htpasswd.c, downloader.h, cherokee/fastcgi-common.c, cherokee/validator_htpasswd.h, cherokee/thread.c, common-internal.h, cherokee/mime_scanner.l, cherokee/buffer.c, cherokee/regex.c, fastcgi-common.h, cherokee/thread.h, cherokee/fdpoll-protected.h, cherokee/handler_file.c, handler.c, cherokee/buffer.h, cherokee/regex.h, cherokee/encoder.c, cherokee/handler_file.h, handler.h, cherokee/main.c, cherokee/encoder.h, cherokee/handler_remote_control.c, cherokee/header.c, unix4win32.c, cherokee/ncpus.h, cherokee/cherokee_admin.c, cherokee/common.h, handler_remote_control.h, cherokee/header.h, cherokee/unix4win32.h, cherokee/session_cache.c, md5crypt.c, cherokee/encoder_gzip.c, cherokee/session_cache.h, cherokee/icons.c, cherokee/util.c, encoder_gzip.h, cherokee/handler_fastcgi.c, cherokee/http.c, cherokee/icons.h, handler_gnomevfs.c, cherokee/util.h, cherokee/handler_fastcgi.h, cherokee/http.h, handler_gnomevfs.h, cherokee/nonce.c, cherokee/fdpoll-port.c, cherokee/nonce.h, logger_ncsa.c, cherokee/post.c, cherokee/logger_table.c, cherokee/handler_error.c, admin_client.c, cherokee/mime.c, cherokee/table.c, cherokee/logger_ncsa.h, cherokee/post.h, logger_table.h, cherokee/list_ext.c, cherokee/handler_webcam.c, cherokee/handler_error.h, admin_client.h, cherokee/mime.h, cherokee/table.h, cherokee/handler_cgi.c, cherokee/list_ext.h, handler_webcam.h, cherokee/server-protected.h, cherokee/handler_cgi.h, cherokee_logrotate.c, cherokee/module_read_config.c, cherokee/icons_grammar.y, connection_info.c, cherokee/module_read_config.h, cherokee/fdpoll-kqueue.c, admin_server.c, cherokee/logger.c, cherokee/connection_info.h, cherokee/validator_htdigest.c, read_config_scanner.l, cherokee/admin_server.h, cherokee/mime-protected.h, table-protected.h, cherokee/logger.h, cherokee/header-protected.h, cherokee/matching_list.c, validator_htdigest.h, cherokee/cherokee.h, cherokee/matching_list.h, cherokee/iocache.c, match.c, cherokee/connection.c, cherokee/iocache.h, cherokee/list_merge_sort.c, cherokee/match.h, cgi.c, cherokee/url.c, cherokee/connection.h, cherokee/list_merge_sort.h, cherokee/server.c, handler_phpcgi.c, cherokee/cgi.h, cherokee/url.h, cherokee/dirs_table.c, cherokee/logger-protected.h, server.h, cherokee/handler_phpcgi.h, cherokee/dirs_table.h, cherokee/logger_combined.c, validator_pam.c, cherokee/mime_grammar.y, cherokee/logger_combined.h, reqs_list_entry.c, cherokee/validator_pam.h, cherokee/socket.c, cherokee/logger_w3c.c, connection-protected.h, cherokee/reqs_list_entry.h, cherokee/socket.h: Copyright notice updated. * doc/Makefile.am: Updated 2005-12-30 Alvaro Lopez Ortega * qa/119-Dotdot2.py, qa/120-Dotdot3.py, qa/Makefile.am (EXTRA_DIST): Added two new tests to check the new "dot dot" parsing function. * cherokee/connection.c (cherokee_connection_get_request): Now it uses cherokee_short_path() rather than strcmp() and cherokee_buffer_remove_string(). * cherokee/util.c (cherokee_short_path): New function. 2005-12-26 Alvaro Lopez Ortega * cherokee/reqs_list_entry.h, cherokee/reqs_list_entry.c (cherokee_reqs_list_entry_new): Added ovector and ovecsize to store "Points to a vector of ints for result offsets". * qa/117-DomainToDir.py, qa/Makefile.am: Added new test. 2005-12-25 Alvaro Lopez Ortega * cherokee/handler_dirlist.c (read_header_file): Now, it accepts full paths in the HeaderFile parameter. * cherokee/read_config_grammar.y (handler_option T_HEADERFILE): Now it accepts "ID or path" lists instead of ID lists. * cherokee/handler_fastcgi.c (fixup_params, add_env_pair_2_params, add_env_pair_with_id): Now, parameter entries are added with the right ID, so there is no fix up needed beyond a basic padding check. 2005-12-18 Alvaro Lopez Ortega * m4/network.m4: Added new macro AC_ACME_SOCKADDR_UN * cherokee/win32_misc.c, cherokee/socket.h, cherokee/socket.c: Better W32 support. Patch by Gisle Vanem 2005-12-17 Alvaro Lopez Ortega * cherokee/handler_fastcgi.c (cherokee_handler_fastcgi_init): It is going to use just one connection to each FastCGI server instead of one per thread as I thought previously. * cherokee/regex.c (_add): Potential SegFault fixed. 2005-12-15 Alvaro Lopez Ortega * cherokee/Makefile.am (libcherokee_server_la_SOURCES): Moved fcgi_managed.{c,h} to the library. 2005-12-14 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_get_req_entry): Fixed for the embedded version. * cherokee/util.c (cherokee_split_arguments): Fixed. 2005-12-12 Alvaro Lopez Ortega * cherokee/Makefile.am (handler_server_info): Added logo.inc to the handler code * cherokee/logo.inc: Logo updated. 2005-12-09 Alvaro Lopez Ortega * cherokee/post.c (cherokee_post_walk_read): Fixed. 2005-12-05 Alvaro Lopez Ortega * configure.in: Updated ${srcdir}/cherokee/loader.init.inc generation. Now it executes the module init function even if it is compiled statically. 2005-12-04 Alvaro Lopez Ortega * cherokee/handler_cgi.c (cherokee_handler_cgi_new, cherokee_handler_cgi_init): Added support for ChangeUser. * cherokee/read_config_grammar.y (str_type): Added ChangeUser option. * cherokee/read_config_scanner.l, cherokee/read_config_grammar.y (T_IO_CACHE): Reserved word removed. 2005-12-01 Alvaro Lopez Ortega * m4/sendfile_samba.m4: --with-sendfile-support parameter fixed. 2005-11-18 Alvaro Lopez Ortega * cherokee/thread.c (cherokee_thread_new): Letf-hand thread->server casted with the SRV() macro. * cherokee/typed_table.c: There were some wrong casting calling cherokee_typed_table_get() * cherokee/avl/avl.c: s/new/new_entry/g * cherokee/module.c, cherokee/module.h: Renamed "new" entry to "instance" * cherokee/list.h: Renamed new variables to new_entry * cherokee/handler_dirlist.c (generate_file_entry): Added casting to malloc. * cherokee/resolv_cache.h: Added CHEROKEE_BEGIN_DECLS * cherokee/handler_redir.c (build_regexs_list): Renamed "new" to "new_regex", it was not compiling with a C++ compiler. 2005-11-15 Alvaro Lopez Ortega * qa/run-tests.py (BOTTON_CONF), qa/068-PathInfo2.py, qa/115-Respin.py, qa/087-Location.py, qa/080-Extension2.py, qa/079-Extension.py, qa/072-Inherit3.py (Test.__init__): Added the PHPCGI_PATH. 2005-11-14 Alvaro Lopez Ortega * cherokee/util.c: Don't even define cherokee_trace() if TRACE_ENABLED is not enabled. Reported by Rodrigo Fernandez-Vizarra * cherokee/util.c: (cherokee_estimate_va_length), cherokee/handler_server_info.c: Fixed. Bug reported by Rodolfo Pilas 2005-11-13 Alvaro Lopez Ortega * qa/115-Respin.py: Added new test. * cherokee/reqs_list.c (cherokee_reqs_list_get): It does not use cherokee_header_get_request_w_args any longer, there was a problem here when a connection was respined. * cherokee/thread.c (process_active_connections): Moved request checking after extensions and directories. It will need to remove a previous web_directory assignement if a Request matches. * cherokee/connection.c (cherokee_connection_get_req_entry): It removes the content of web_directory if a Request entry is matched in the connection. * qa/113-HeaderFile.py (Test.__init__): Fixed, it shouldn't use the full path to the header file. * cherokee/macros.h (TRACE): Added new macro. * cherokee/util.c (cherokee_trace): Added new tracing function. 2005-11-12 Alvaro Lopez Ortega * configure.in: Added --enable-trace parameter 2005-11-11 Alvaro Lopez Ortega * qa/Makefile.am (EXTRA_DIST), qa/114-HeaderFile2.py: Added new test to ensure previous path works. * cherokee/read_config_grammar.y, cherokee/read_config_scanner.l, cherokee/handler_dirlist.h, cherokee/handler_dirlist.c (read_header_file): The dirlist handler now accepts a list on the HeaderFile parameter. It will use the first match as header. * cherokee/fdpoll-kqueue.c: Performance fix: it duplicates the speed of the kqueue backend! Patch by Rodrigo Fernandez-Vizarra * configure.in: Added DragonFly entry in the host detection. Patch by Rodrigo Fernandez-Vizarra * qa/113-HeaderFile.py, qa/Makefile.am (EXTRA_DIST): Added new test. * cherokee/handler_server_info.c (server_info_build_page): Now it checks the server token parameter in order to show the server version. 2005-11-10 Alvaro Lopez Ortega * 0.4.29 released * cherokee/server-protected.h: Removed include_list property. * cherokee/read_config_scanner.l, cherokee/read_config_grammar.y: "Include" reserved word removed. It is not longer needed. * cherokee/module_read_config.c: Almost rewritten. The inclusions are now managed in a more handy way. * cherokee/buffer.c (cherokee_buffer_read_file): Fixed. There was a consistency problem with the memory management. 2005-11-07 Alvaro Lopez Ortega * cherokee/handler_cgi.c: Better POST management: now it moves the connection to the polling list if needed. * qa/run-tests.py: Addad new parameter -b. * cherokee/handler_cgi.c (cherokee_handler_cgi_init): Removed O_NONBLOCK property from cgi->pipeOutput. 2005-11-06 Alvaro Lopez Ortega * qa/util.py (letters_random, str_random): Slightly optimized for a faster start time. 2005-11-05 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_ensure_size): size is now size_t type instead of int. * cherokee/buffer.h, cherokee/buffer.c (cherokee_buffer_ref_buffer): Removed. * cherokee/buffer.h, cherokee/buffer.c (cherokee_buffer_swap_buffers): Added new method. * cherokee/buffer.h (cherokee_buffer_is_empty): Added a macro to replace the function. * cherokee/buffer.c (cherokee_buffer_is_empty): Removed. 2005-11-04 Alvaro Lopez Ortega * cherokee/handler_cgi.c (cherokee_handler_cgi_new), cherokee/handler_cgi.h, cherokee/read_config_grammar.y: Added support to error handling in the CGI module. It can be defined using the option "ErrorHandler on". * qa/112-NiceError-CGI.py: Added new QA test. 2005-11-03 Alvaro Lopez Ortega * sites-default.sample.pre: Updated. 2005-11-02 Alvaro Lopez Ortega * cherokee/header.c (cherokee_header_get_request_w_args): Added new function. * qa/107-Priority1.py, qa/108-Priority2.py, qa/109-Priority3.py, qa/110-Priority4.py, qa/Makefile.am: Added new tests to check priorities. * cherokee/config_entry.c (cherokee_config_entry_complete): Now it implements priority between Directory, Extension and Request entries. Last defined entry wins. * qa/079-Extension.py, qa/080-Extension2.py: Fixed precedence. 2005-11-01 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_get_request): Little test order change. * cherokee/config_entry.h, cherokee/read_config_grammar.y (config_entry_new): Added priority support for prioroties. * cherokee/config_entry.h, cherokee/config_entry.c: dirs_table_entry.h and dirs_table_entry.c have been renamed. * cherokee/handler_file.c (check_cached): Added support for If-Range headers. * qa/105-If-Range.py, qa/106-If-Range2.py, qa/Makefile.am (EXTRA_DIST): Added to two tests to check the support of the "If-Range:" header from HTTP/1.1. 2005-10-31 Alvaro Lopez Ortega * cherokee/post.c (cherokee_post_walk_to_fd): bugfix. It must return ret_eagain if there is some remaining information waiting to be sent. * cherokee/regex.h, cherokee/regex.c (cherokee_regex_table_add): Added new method. 2005-10-30 Alvaro Lopez Ortega * cherokee/handler_cgi.c (cherokee_handler_cgi_free): Bugfix, Only close file descriptors if it is greeter than zero. * cherokee/socket.c (cherokee_socket_set_timeout): Removed call to setsockopt with SO_SNDTIMEO. That side of the socket is already closed. * cherokee/thread.c (purge_maybe_lingering, process_active_connections): Added a new function for purge (and maybe perform the lingering close) a connection from the active connection list. The error management of the error situations of the loop call to purge_closed_connection instead of set the lingering close phase. * cherokee/socket.c, cherokee/connection.c (cherokee_connection_pre_lingering_close): Error management improved. Now it checks if there was some error in the ioctl calls. 2005-10-29 Alvaro Lopez Ortega * cherokee/handler_dirlist.c (cherokee_handler_dirlist_step): It should print the version number only if "ServerTokens" was set to "Full", otherwise it should just show the port number. Reported by Mark Nipper * cherokee/dirs_table_entry.c, cherokee/dirs_table.c, cherokee/connection.c: The property table which was inside the dir_table_entry struct has been splitted in two: handler_properties and validador_properties. * cherokee/thread.c (process_active_connections): Do not use lingering close on keep-alive connections. 2005-10-28 Alvaro Lopez Ortega * qa/104-ScriptAlias_PathInfo.py: Added new test to ensure previous problem is fixed. * cherokee/handler_cgi.c (_extract_path): Added support for PathInfo in ScriptAlias'ed configurations. * cherokee/handler_cgi.c (build_envp): Now, the user defined variables have precedence over the server's ones. * cherokee/fdpoll.c (cherokee_fdpoll_best_new): The poll method has taken over BSD kqueue and Solaris port event. In the real life it is faster. * qa/061-PAM.py (Test.Precondition), qa/062-PAM2.py (Test.Precondition): Added a try: except: block to ensure it does not fail if Cherokee is not installed on /usr and the conf.py is untouched. * cherokee/Makefile.am: Some yacc parameter were displaced. It was working with GNU bison, but it was failing with byacc. Patch by Tim Wilde * mods-admin.sample: It wasn't using the Name entry. Reported by John Hampton * qa/103-ScriptName.py, qa/Makefile.am (EXTRA_DIST): Added new test. * cherokee/cgi.c (cherokee_cgi_build_basic_env): Set REMOTE_USER even if it is empty. Trac was also expecting to read it.. These problems have been reported by John Hampton * cherokee/handler_cgi.c (build_envp): Fixed SCRIPT_NAME variable. Trac was failing because it wasn't properly set. 2005-10-27 Alvaro Lopez Ortega * configure.in: 0.4.28 released * autogen.sh (LIBTOOL, LIBTOOLIZE): Define two variables for the name of these utilities. MacOS X has a different name for it. Patch by Sébastien Arnaud 2005-10-26 Alvaro Lopez Ortega * configure.in, cherokee/macros.h (CST_OFFSET): Fixed a off_t size issue in MacOS X. Patch by Marko Mikulicic * configure.in: Fixed FreeBSD/OpenBSD compilation. It needed -pthread in the LDFLAGS. * Makefile.am (EXTRA_DIST): Removed config.h.mingw * cherokee/thread.c (process_active_connections): Removed calls to cherokee_iocache_mmap_release(), it will be freed on cherokee_connection_clean(). It is safer in this way. * cherokee/connection.c (cherokee_connection_clean): It checks for an IOCache entry reference in order to free it at this point. * cherokee/thread.c (process_active_connections): If cherokee_connection_pre_lingering_close() returns ret_eagain it will set the connection in read mode. 2005-10-25 Alvaro Lopez Ortega * config.h.win32: Added some new definitions. Patch by Gisle Vanem * config.h.mingw: Removed, it is not longer needed. * cherokee/cgi.c (cherokee_cgi_build_basic_env): Added HTTP_REFERER header. Wordpress was failing to perform certain operation due to this problem. Reported by Rodolfo Pilas. 2005-10-24 Alvaro Lopez Ortega * cherokee/connection.c (process_handler_complex_headers): Removed. * cherokee/cgi.c (cherokee_cgi_build_basic_env): Added HTTPS variable. * cherokee/handler_cgi.c (parse_header): Added new function. Now, hsupport_complex_headers is deprecated. It is parsed inside the handler, no longer in the connection. * cherokee/buffer.c (cherokee_buffer_remove_chunk): Added new method. * qa/102-QueryString.py, qa/Makefile.am (EXTRA_DIST): Added new test in order to ensure QUERY_STRING is working. * cherokee/handler_redir.c (match_and_substitute): It wasn't storing the right petition in the log file. Reported by Kurt McKee * qa/Makefile.am (EXTRA_DIST), qa/101-HugePost.py: Added new QA test. * cherokee/post.c: Bug fixed. 2005-10-22 Alvaro Lopez Ortega * cherokee/unix4win32.h (ENOTSOCK, EHOSTUNREACH): Some missing defines in this file. Patch by Gisle Vanem * cherokee/main.c (process_parameters): Specifying a config-file has no effect in main.c when built with CHEROKEE_EMBEDDED. Patch by Gisle Vanem * cherokee/iocache.c (iocache_clean_up_each): Fixed a signess problem here. It was an important issue. * cherokee/logger_ncsa.c (build_log_string): Bad casting fixed. Reported by Marko Mikulicic 2005-10-21 Alvaro Lopez Ortega * cherokee/module.c (cherokee_module_get_name): return fixed. * cherokee/iocache.c (cherokee_iocache_free_default): __global renamed to global_io. Sun CC did not like it. * Makefile.am (COMPILATION_TESTS): Added debian_testing.sh and debian_testing_chroot.sh to extra dist. * cherokee/Makefile.embedded (OBJS): Fixed. It was not working from the changes of 2005-10-19. * cherokee/handler_server_info.c (cherokee_handler_server_info_new): It was outdated. I was trying to read a wrong structure and hence, it was providing random information. Reported by Borja <@softonic.com> 2005-10-20 Alvaro Lopez Ortega * cherokee/handler_file.c (cherokee_handler_file_add_headers): Content-Range header fixed. Patch by Mark Nipper . 2005-10-19 Alvaro Lopez Ortega * cherokee/read_config_scanner.l, cherokee/read_config_grammar.y (port_tls), cherokee.conf.sample.pre: Added new configuration entry to configure the TLS port. * cherokee/handler_dirlist.c (generate_file_entry): Now it uses cherokee_readdir instead of readdir(). It was not thread safe. * qa/100-Digest-htdigest.py (Test.__init__): Changed name, it was too long. * cherokee/handler_cgi.c (cherokee_handler_cgi_init): Adapted to the new POST management class. * cherokee/post.c, cherokee/post.h: Added new class to manage POST information. * cherokee/validator.c (digest_A1): Removed. No longer needed. 2005-10-18 Alvaro Lopez Ortega * cherokee/connection.c (post_init): Rewritten using the post class. * cherokee/connection.c (cherokee_connection_get_request): Fixed. Some times, it was not replying with the right error code. * cherokee/post.h, cherokee/post.c: Added new class. * 0.4.27 released * cherokee/util.c: Added sys/filio.h in order to import FIONBIO for cherokee_fd_set_nonblocking() * cherokee/Makefile.embedded (OBJS): Added nonce.o and typed_table.o * cherokee/buffer.c (cherokee_buffer_encode_sha1_base64, cherokee_buffer_encode_sha1): It will compile on u-Cherokee. * cherokee/handler_file.c (cherokee_handler_file_init): Check if the request is a directory in order to deny the request. * cherokee/iocache.c (cherokee_iocache_mmap_get_w_fd): Fixed a concurrency problem which might cause some troubles. 2005-10-17 Alvaro Lopez Ortega * cherokee/socket.h (OPENSSL_LAST_ERROR): Fixed. It wasn't compiling because there was a parameter left on the call to ERR_error_string(). Reported by Cesar Fernandez. 2005-10-16 Alvaro Lopez Ortega * qa/100-Digest-htdigest.py, qa/Makefile.am: Added new test unit. * qa/run-tests.py: Fixed to use three digit indexes. * qa/??-*py, qa/Makefile.am: Moved to three digits index. We are about to reach one hundred tests. * cherokee/validator_htdigest.c (validate_digest): Implemented. Now htpasswd works with Digest authentication. 2005-10-15 Alvaro Lopez Ortega * cherokee/validator_htdigest.c (validate_basic, extract_user_entry): Rewritten. Now htdigest works with Basic authentication. * cherokee/logger_ncsa.c, cherokee/logger_w3c.c: There files now use cherokee_syslog() instead of syslog(). * cherokee/util.c, cherokee/util.h (cherokee_syslog): Added new method to send information to syslog line by line, each one on a different call. 2005-10-14 Alvaro Lopez Ortega * cherokee/validator_pam.c: Compilation was broken for this validator. Alexander Serkov sent a patch for it. * cherokee.conf.sample.pre, sites-default.sample.pre: DirectoryIndex and DocumentRoot moved from cherokee.conf to site-default. Requested by Cesar Fernandez 2005-10-12 Alvaro Lopez Ortega * cherokee/read_config_grammar.y (tuple): Bug fix. s/cherokee_table_add/cherokee_typed_table_add_str/. It was causing the logging system to use syslog() rather than a target file, even if it was configured for it. * cherokee/md5crypt.c (md5_crypt): Fixed to validate Apache MD5 passwords. 2005-10-11 Alvaro Lopez Ortega * cherokee/thread.c (process_polling_connections): Actually I am not sure about this. If the connection is polling for an extra fd and it returns an error, it will clean the connection calling purge_closed_polling_connection() instead of re-queuing it with cherokee_thread_reactive_from_polling(). 2005-10-10 Alvaro Lopez Ortega * qa/94-URL-request.py: Added a new test case to test the proxy like requests. * cherokee/header.c (parse_request_first_line): Now, it accepts proxy like requests. * cherokee/util.h, cherokee/util.c (cherokee_crypt): Added new function. * cherokee/validator_htpasswd.c (validate_plain): Added support for plain text passwords inside htpasswd files. * cherokee/validator.c (cherokee_validator_parse_basic): Fixed. There was an error here which caused an incorret password length. * cherokee/util.c (cherokee_isbigendian): Added new function. * cherokee/buffer.c (cherokee_buffer_encode_base64): Rewritten. 2005-10-09 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_encode_base64): in and out are not unsigned. Fixed. * cherokee/connection.c (cherokee_connection_recv): Added switch case to manage ret_error value. * cherokee/socket.c (cherokee_read, cherokee_write): Added case for EHOSTUNREACH: No route to host 2005-10-08 Alvaro Lopez Ortega * cherokee/socket.c, cherokee/socket.h, cherokee/virtual_server.c: Igor Sysoev has sent me a mail warning about an error on the OpenSSL management code. He was right. I have added a new macro OPENSSL_LAST_ERROR in order to get the newer error instead of the older as we were doing. * cherokee/buffer.c (cherokee_buffer_decode_hex): Added new method. * cherokee/util.h: Added arpa/inet.h header. 2005-10-06 Alvaro Lopez Ortega * cherokee/buffer.c (BUFFER_VA_LEN): removed. It is not longer needed. * cherokee/buffer.c (cherokee_buffer_encode_sha1_digest, cherokee_buffer_encode_sha1): Added a SHA1 encoding interface. * cherokee/connection.c (cherokee_connection_check_authentication): Added check to ensure the validator supports the authorization type. 2005-10-05 Alvaro Lopez Ortega * cherokee/handler_phpcgi.c (search_php_executable): Fixed to search the interpreter if it is not defined with the "Interpreter" configuration entry. It will look for it on a couple of directories for it.. * qa/93-InvalidLinks.py, qa/Makefile.am: Added a new QA to test the prevoius problem. * cherokee/handler_dirlist.c (generate_file_entry): Listing was failing if there was an invalid link inside the directory. Reported by Mark Nipper 2005-09-28 Alvaro Lopez Ortega * cherokee/validator.c (cherokee_validator_digest_response): Digest authentication fixed. (In 4to Festival de Software Libre, Puerto Vallarta, Mexico) * qa/90-Digest.py, qa/91-Digest2.py, qa/92-Digest3.py, qa/Makefile.am (EXTRA_DIST): Added new QA tests for Digest authentication. 2005-09-22 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_read): Added EBADF case. * cherokee/request.h: Included sys/types.h. It was not compiling on MacOS X. Patch by Tito Ciuro 2005-09-21 Alvaro Lopez Ortega * cherokee/connection.c, cherokee/connection.h, cherokee/connection-protected.h: Removed user, passwd and nonce buffers. 2005-09-20 Alvaro Lopez Ortega * cherokee/buffer.h, cherokee/buffer.c (cherokee_buffer_cmp, cherokee_buffer_cmp_buf, cherokee_buffer_cmp_str, cherokee_buffer_case_cmp, cherokee_buffer_case_cmp_buf, cherokee_buffer_case_cmp_str): Added new methods. * cherokee/connection.c (get_host): Remove final dot in the host name if found. 2005-09-19 Alvaro Lopez Ortega * 0.4.26 released 2005-09-21 Alvaro Lopez Ortega * cherokee/server.c (build_server_string): It was reading an out of memory possition. Fixed. * qa/66-DirectoryIndex3.py (Test.JustBefore): It was failing executing more than one time in a row. Fixed. * cherokee/encoder_gzip.c: Almost rewrotten. 2005-09-20 Alvaro Lopez Ortega * cherokee/crc32.c (crc32_partial_sz): Added new. (crc32_sz): It now uses crc32_partial_sz(). 2005-09-19 Alvaro Lopez Ortega * cherokee/encoder.h, cherokee/encoder.c (cherokee_encoder_flush): Added new virtual method. * cherokee/encoder_gzip.h, cherokee/encoder_gzip.c (cherokee_encoder_gzip_new, cherokee_encoder_gzip_free): It was a memory problem here. Added workspace. 2005-09-18 Alvaro Lopez Ortega * cherokee/header.c (cherokee_header_parse): "Accept-Encoding" must be before "Accept". Fixed. * cherokee/connection.c (post_init): It uses atol() instead of sscanf(). 2005-09-11 Alvaro Lopez Ortega * cherokee/regex.c (cherokee_regex_table_free): Call free rather than pcre_free. It was failing to compile, and it is just a pointer to free. * cherokee/unix4win32.c (inet_aton): Added new function * cherokee/util.c (cherokee_fd_set_nonblocking): Added new function. * m4/etr_socket_nsl.m4: Detection implemented for Win32 2005-09-10 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_pre_lingering_close): Fixed a potential memory corruption bug. It may try to write an int in to a NULL pointer. * cherokee/socket.c (cherokee_socket_close): Fixed a little which might cause a segment fault if a TLS connection get a CGI timeout. 2005-09-06 Alvaro Lopez Ortega * build_solaris.sh.in: Rewritten. Now, it builds a package for blastwave instead of a package for Sunfreeware. Tested on OpenSolaris (Nevada b20). * cherokee/handler_redir.c (cherokee_handler_redir_new): "url" property read fixed. * cherokee/handler_server_info.c: Fixed little compilation problem. It was including a deprecated header. 2005-08-31 Alvaro Lopez Ortega * cherokee/read_config_grammar.y, cherokee/read_config_scanner.l, cherokee/handler_cgi.c (cherokee_handler_cgi_new): Added "ENV" configuration entry to allow to define custon environment variables for the CGI. 2005-08-25 Alvaro Lopez Ortega * cherokee/win32_misc.h: Added fcntl.h header file. (by Gisle Vanem, giva@bgnett.no) * cherokee/handler_file.c (open_local_directory): It now use CHE_O_READ (by Gisle Vanem, giva@bgnett.no) * cherokee/macros.h (CHE_O_READ): Added O_BINARY to CHE_O_READ (by Gisle Vanem, giva@bgnett.no) 2005-08-18 Alvaro Lopez Ortega * qa/61-PAM.py (Test.Prepare), qa/61-PAM.py (Test.Prepare): Pam module detection fixed. * cherokee/connection-protected.h: netinet/in.h has to be defined before arpa/inet.h * cherokee/read_config_scanner.l, cherokee/read_config_scanner.y: Removed some tokens: T_BGCOLOR, T_TEXT, T_LINK, T_VLINK, T_ALINK, T_BACKGROUND, T_HEADER_FILE, T_INTERPRETER, T_URL and T_FILEDIR. * configure.in: Added AC_CHECK_HEADERS for pwd.h, sys/select.h and sys/mman.h * cherokee/Makefile.am (CLEANFILES): Added clean.h 2005-08-10 Alvaro Lopez Ortega * cherokee/win32_misc.c (cherokee_server_daemonize): Removed. * cherokee/Makefile.MingW.in (vclean): Remove dependency on libtidy. 2005-08-09 Gisle Vanem * cherokee/util.h: #ifdef for Win32 compilation. * cherokee/util.c (cherokee_readdir): typo fixed. * cherokee/util.c: #ifdef for Win32 compilation. * cherokee/url.c (cherokee_url_init): #ifdef for Win32 compilation. * cherokee/server.c: #ifdef for Win32 compilation. * cherokee/resolv_cache.c: #ifdef for Win32 compilation. * cherokee/module_loader.c: Only load dlfcn.h if it is not the embedded version. * cherokee/logger_ncsa.c: Added #ifdef for syslog.h. (open_output): ifdef for fcntl(). * cherokee/levenshtein_distance.c (min): Renamed to _min(). * cherokee/iocache.c: Added a couple of #ifdefs for header files. * cherokee/handler_dirlist.c: Added a couple of #ifdefs for header files. * cherokee/handler_cgi.c: Win32 compilation fixes. * cherokee/fdpoll-select.c: Added #ifdef for sys/select.h. * cherokee/buffer.c (cherokee_buffer_encode_base64): Removed #ifdefs to inhibit embedded version. 2005-08-09 Alvaro Lopez Ortega * configure.in (cherokee_*_version_len): removed. * cherokee/cgi.c (cherokee_cgi_build_basic_env): It doesn't use PACKAGE_VERSION_LEN from automake any longer. * cherokee/server.c (build_server_string): It doesn't use *_LEN variables from automake any longer. * cherokee/nonce.c, cherokee/nonce.h: Added new class. 2005-08-08 Alvaro Lopez Ortega * cherokee/server.c (cherokee_server_clean): Removed. * cherokee/dirs_table.c (cherokee_dirs_table_clean): Removed. * cherokee/virtual_server.c (cherokee_virtual_server_clean): Removed. * cherokee/logger_table.c (cherokee_logger_table_clean): Removed. * cherokee/encoder_table.c (cherokee_encoder_table_clean): Removed. * cherokee/regex.c (cherokee_regex_table_clean): Removed. * cherokee/iocache.c (cherokee_iocache_clean): Removed. * cherokee/icons.c (cherokee_icons_clean): Removed. * cherokee/exts_table.c (cherokee_exts_table_add): Fixed. It was addinf the entries to the list more than once. 2005-08-07 Alvaro Lopez Ortega * cherokee/logger_ncsa.c (close_output): Fixed a jump depending on uninitialised value. * cherokee/module_loader.c, cherokee/module_loader.h: It is no longer a _new/_free class; converted to _init/_mrproper. * cherokee/Makefile.am (libcherokee_server_la_SOURCES): module_loader-protected.h removed. * cherokee/module_loader.c (get_sym_from_dlopen_handler): Little aesthetic fix. * cherokee/read_config_grammar.y (T_ONLY_SECURE): Message fixed. It wasn't a error but a warning. * cherokee/iocache.c (cherokee_iocache_free): Fixed, it was trying to free too much memory. 2005-08-06 Alvaro Lopez Ortega * cherokee/thread.c (cherokee_thread_new): Swaped from PTHREAD_CREATE_DETACHED to PTHREAD_CREATE_JOINABLE 2005-08-05 Alvaro Lopez Ortega * qa/83-RedirParam.py: Added precondition of an installed version of PHP * cherokee/logger_w3c.c (cherokee_logger_w3c_new), cherokee/logger_ncsa.c (cherokee_logger_ncsa_init_base), cherokee/validator_htdigest.c (cherokee_validator_htdigest_new), cherokee/validator_htpasswd.c (cherokee_validator_htpasswd_new): Swapped to use type tables. * cherokee/validator_plain.c (cherokee_validator_plain_new): It uses the typed table mechanism, and PRINT_MSG. * cherokee/dirs_table_entry.c (cherokee_dirs_table_entry_free): It works with a typed_table instead of a table. * cherokee/read_config_grammar.y: Now it uses PRINT_MSG instead PRINT_ERROR. * cherokee/macros.h (PRINT_MSG, PRINT_MSG_S): Added new macros. 2005-08-04 Alvaro Lopez Ortega * cherokee/list_ext.c (cherokee_list_free_item, cherokee_list_free_item_simple): Add new these two methods. Now, cherokee_list_free() uses cherokee_list_free_item() * cherokee/handler_server_info.c (cherokee_handler_server_info_new), cherokee/handler_phpcgi.c (cherokee_handler_phpcgi_new), cherokee/handler_error_redir.c (cherokee_handler_error_redir_new), cherokee/handler_dirlist.c (cherokee_handler_dirlist_new), cherokee/handler_cgi.c (cherokee_handler_cgi_new), cherokee/handler_common.c (cherokee_handler_common_new): Now, they use cherokee_typed_table_get_str() instead of cherokee_table_get() * cherokee/handler_dirlist.c (cherokee_handler_dirlist_new): A little bug has been fixed here. The "group" property was not working correctly. * cherokee/typed_table.c: Added new class. 2005-08-03 Alvaro Lopez Ortega * cherokee/list.h (list_reparent): Added new function to reparent lists. * 0.4.25: Relased 2005-08-02 Alvaro Lopez Ortega * cherokee/cherokee_logrotate.1, cherokee/Makefile.am: Added new man page. * mods-admin.sample, Makefile.am (install-data-local, uninstall-local): Added new configuration file. 2005-08-01 Alvaro Lopez Ortega * cherokee/socket.c (initialize_tls_session): Allow anon TLS connections. * cherokee/socket.c (cherokee_socket_init_client_tls): Added implementation based on OpenSSL. * cherokee/util.c (cherokee_tls_init): Added new function. 2005-07-26 Alvaro Lopez Ortega * qa/54-ContentRange.py, 55-ContentRange2.py, 56-ContentRange3.py, 57-ContentRange4.py, 58-ContentRange-Double.py, 59-ContentRange-Double2.py: Fixed to fit with the previous patch. * cherokee/handler_file.c, cherokee/header.c: Changed header "Content-Range" by "Range". Based on a path by Daniel Glöckner 2005-07-24 Alvaro Lopez Ortega * cherokee/handler_common.c (stat_file): Integrated with the I/O cache layer. 2005-07-23 Alvaro Lopez Ortega * cherokee/read_config_grammar.y, cherokee/read_config_scanner.l, cherokee/handler_files.c: Added new parameter "IOCache". 2005-07-19 Alvaro Lopez Ortega * cherokee/server.h, cherokee/server.c, cherokee/virtual_server.h, cherokee/virtual_server.c, cherokee/read_config_grammar.y: DocumentIndex has been converted from being a Server property to a Virtual server property. * qa/66-DirectoryIndex3.py: I've rewrote to fix some problems with the global DirectoryIndex. * cherokee/connection.c: Authentication problem fixed. 2005-07-15 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_shutdown, cherokee_socket_set_timeout): Added new methods * cherokee/thread.c (process_active_connections): Bug fix. There was a problem witht the header("Location:") PHP entries. 2005-07-14 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_encode_base64): u_int8_t -> cuchar_t 2005-07-13 Alvaro Lopez Ortega * cherokee/connection.c (process_handler_complex_headers): Handler with complex header post-processing works with the error handlers now (mainly the PHP and CGI handlers). * cherokee/util.h, cherokee/util.c (cherokee_gethostbyname): Added new function. 2005-07-12 Alvaro Lopez Ortega * cherokee/Makefile.am, cherokee/resolv_cache.h, cherokee/resolv_cache.c: Added new revolv cache class. * cherokee/read_config_grammar.y: Error handlers are that the virtual servers level. Fixed. * configure.in: htpasswd compilation preconditions fixed. 2005-07-11 Alvaro Lopez Ortega * configure.in, cherokee/module_loader.c (add_static_entry): There was a bug here. Memory inconsistency. 2005-07-10 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_encode_base64): Added new method. * cherokee/url.h, cherokee/url.c (cherokee_url_parse_ptr): Added user and password support. * cherokee/handler_dirlist.c (render_page_header): Bug fixed. 2005-07-09 Alvaro Lopez Ortega * qa/85-AuthUsers.py, qa/86-AuthUsers2.py: Added two new QA tests. * qa/39-Auth-Basic.py (Test.Prepare): Removed handler. * cherokee/cherokee_logrotate.c: Added new utility to rotate log without turning the server off. 2005-07-08 Alvaro Lopez Ortega * cherokee/server.c, cherokee/server.h (cherokee_server_get_backup_mode, cherokee_server_set_backup_mode): Added new methods. 2005-07-07 Alvaro Lopez Ortega * cherokee/logger.c (cherokee_logger_set_backup_mode): Added new method. * cherokee/logger.c (cherokee_logger_flush): It won't flush if the logger is on backup mode. * cherokee/logger.h, cherokee/logger.c, cherokee/logger_ncsa.h, cherokee/logger_ncsa.c, cherokee/logger_w3c.h, cherokee/logger_w3c.c: Added new method reopen(). * 0.4.24 released * configure.in (SETENV_IS_THREADSAFE): Typo error fixed. * doc/Makefile.am (doc_DATA): Documentation updated. 2005-07-06 Alvaro Lopez Ortega * cherokee/handler_dirlist.c: Fixed acording to the previous change. * icons.conf.sample: "/icons/" removed from the icon entries. 2005-07-04 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_add_comma_marks): Added new method. * cherokee/connection-protected.h, cherokee/thread.c: Add connections ID. 2005-06-30 Alvaro Lopez Ortega * cherokee/module.c, cherokee/module.h: Added new virtual method: get_name. * configure.in, cherokee/Makefile.am, cherokee/handler_remote_control.c, cherokee/handler_remote_control.h: Removed. It was a failed proof of concept. * cherokee/handler_file.c (cherokee_handler_file_step): It didn't update the transference counter. 2005-06-27 Alvaro Lopez Ortega * cherokee/url.c: Now, it's a size known type. 2005-06-24 Alvaro Lopez Ortega * cherokee/handler_nn.c (get_nearest): A few fixes. A memory leak has been fixed. Now it is faster and less memory hungry. * cherokee/handler_redir.c (substitute_groups): Some memory corruptions problems have been sorted out. 02005-06-12 Alvaro Lopez Ortega * cherokee/util.c (cherokee_readdir): Added new function. 2005-06-03 Alvaro Lopez Ortega * qa/83-RedirParam.py, qa/84-RedirParamShow.py: New QA tests to cover the redir handler. Both internal and external redirection are covered by these tests. * cherokee/handler_redir.c (cherokee_handler_redir_add_headers): Bug fix. It was printing "Location:" twice. * cherokee/handler_redir.c: Some logic moved from _init to _new to allow internal redirections. * cherokee/util.c (cherokee_split_arguments): Added new function. 2005-06-02 Alvaro Lopez Ortega * cherokee/handler_redir.c (cherokee_handler_redir_new), cherokee/read_config_grammar.y (handler_redir_add_property): Changes in the internal string to store a 'show/hide' argument. * cherokee/handler_redir.c (substitute_groups): Now it uses a cherokee_buffer_t rather than a char[]. * cherokee/read_config_grammar.y (T_QSTRING): Bugfix 2005-06-01 Alvaro Lopez Ortega * cherokee/cgi.c (cherokee_cgi_build_basic_env): Added user remove variable. Reported by bass@gentoo.org 2005-05-26 Alvaro Lopez Ortega * cherokee/fdpoll-kqueue.c: Rewrited by Rodrigo Fernandez-Vizarra * cherokee/buffer.h (cherokee_buffer_add_str): Added cherokee_buffer_add_str macro. * configure.in, doc/*: Clean up. Integration of the wiki documentation. 2005-05-25 Rodrigo Fernandez-Vizarra * cherokee/fdpoll-kqueue.c: Rewrited. 2005-05-23 Alvaro Lopez Ortega * 0.4.23 released * cherokee/server.c (cherokee_server_new): Bugfix. There was a incorrect value as string lenght. * qa/72-Inherit3.py (Test.Precondition): Precondition fixed. * cherokee/buffer.c (cherokee_buffer_add_va_list): Fixed. It was coredump-ing on Linux/PPC. * cherokee/encoder_gzip.h, cherokee/encoder_gzip.c: Fixed compilation problem. 2005-05-21 Alvaro Lopez Ortega * cherokee/handler_cgi.c (cherokee_handler_cgi_init), cherokee/handler_phpcgi.c (cherokee_handler_phpcgi_init): Improved performance with big posts. * qa/*py: I have fixed some QA tests to reduce the memory usage. * qa/base.py (TestBase.WriteTemp): Added new method. 2005-05-20 Alvaro Lopez Ortega * configure.in (--with-wwwroot): Fixed. * cherokee/Makefile.embedded, cherokee/read_config_embedded.c, cherokee/read_config_embedded.h: u-Cherokee is now fixed for the changes of the last release. * cherokee/server.c (cherokee_server_init): Fixed a bug using chroot. It has to read the password file entry before to chroot, otherwhise it won't be able to do it after it. * cherokee/fdpoll-port.c: First functional version. Sent by Rodrigo Fernandez Vizarra: * cherokee/handler_dirlist.c (new_file_entry): Fixed. There was a logic problem introducced on 0.4.22. 2005-05-19 Alvaro Lopez Ortega * cherokee/read_config_grammar.y, cherokee/dirs_table_entry.c: Fixed bug. There wasn't possible to access some of the index pages directly. Reported by Rodolfo Pilas. 2005-05-18 Alvaro Lopez Ortega * Grand reduce Cherokee's memory footprint. :-) 2005-05-17 Alvaro Lopez Ortega * cherokee/mmap2.h, cherokee/mmap2.c (cherokee_mmap2_clean_up, entry_set_mmap): Added two more parameters. 2005-05-16 Alvaro Lopez Ortega * 0.4.22 released * cherokee/handler_dirlist.c (new_file_entry): Fixed bug only reproducible on Solaris. 2005-05-13 Alvaro Lopez Ortega * cherokee/downloader.c, cherokee/downloader.h, cherokee/downloader-protected.h: Added post support. * Makefile.am (install-data-local): Fixed installation bug. Reported as Debian's bug #308852 2005-05-12 Alvaro Lopez Ortega * cherokee/table.c (cherokee_table_free2): Little memory leak fixed. * qa/66-DirectoryIndex3.py (Test.Precondition): Try to fix it to work in multithread tests. 2005-05-11 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_add_va): Re-written. * cherokee/logger_ncsa.c (build_log_string): Now, it uses a buffer. 2005-05-10 Alvaro Lopez Ortega * cherokee/handler_dirlist (cherokee_handler_dirlist_step), cherokee/handler_error.c (build_hardcoded_response_page): Now it prints the right port number if the connection is using TLS. Reported by Rodolfo Pilas. * cherokee/macros.h (CHE_O_READ): Added new macro * cherokee/handler_file.c (cherokee_handler_file_init): It will use O_NOATIME if it is available. * cherokee/connection.c (cherokee_connection_log_or_delay): It was adding the 4xx and 5xx replies to the main log instead of adding it to the error log. Reported by Rodolfo Pilas. * cherokee/thread.c, cherokee/handler_common.c (cherokee_handler_common_new): Fix fixed. It wasn't working for directories with DocumentRoot with index files. Reported by Rodolfo Pilas 2005-05-09 Alvaro Lopez Ortega * 0.4.21 released * cherokee/handler_common.c: It doesn't longer deppends on cgi or phpcgi. Integrated with the internal redirection mechanism. 2005-05-08 Alvaro Lopez Ortega * sites-default.sample.pre: Added an example for the PHP extension * qa, qa/Makefile.am: Added more tests * cherokee/access.c (cherokee_access_add): Little fix * cherokee/read_config_grammar.y (ip_list): Better error management. 2005-05-07 Alvaro Lopez Ortega * cherokee/socket.c, cherokee/access.c: Added support for IPv4 over IPv6 addresses. * cherokee/socket.c, cherokee/socket.h: Some IPv6 related fixes. 2005-05-06 Alvaro Lopez Ortega * cherokee/dirs_table_entry.c, cherokee/dirs_table_entry.h, cherokee/dirs_table.c, cherokee/dirs_table_entry.h, cherokee/connection.h, cherokee/connection.c: Directories now can inherit from its predecesors. * qa/70-Inherit.py, qa/71-Inherit2.py: Added two new test cases for configuration inheritation. * cherokee/table.c (cherokee_table_mrproper, cherokee_table_mrproper2): Added two methods. cherokee_table_clean and cherokee_table_clean2 were rewritten to use the new methods. * cherokee/handler_table.[ch]: Renamed to dirs_table.[ch] * cherokee/handler_table_entry.[ch]: Renamed to dirs_table_entry.[ch]. Some clean up was made as well. * cherokee/read_config_grammar.y: Updated to work with dirs_table. 2005-05-04 Alvaro Lopez Ortega * debian/cherokee.init (PIDFILE): Removed check_alive() function * cherokee/handler_dirlist.c (render_page_header): Fixed to make it work property with long file names. * cherokee/buffer.c (cherokee_buffer_add_char_n): Added new method. * configure.in, Makefile.am (SUBDIRS): Directory debian will not be longer included in the tarball. * cherokee/handler_cgi.c (cherokee_cgi_add_env_pair, cherokee_cgi_add_env): Splitted to a new file cgi.c to be shared with the FastCGI handler. * cherokee/read_config_scanner.l: Addnew new rule: address_port. It recognices a host with ":" and a optional port number. 2005-05-03 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_set_client): Added new parameter: type to allow it to use unix sockets. * cherokee/Makefile.embedded (all): Added two rules to use yacc and lex properly. (OBJS): Added list_merge_sort. 2005-05-02 Alvaro Lopez Ortega * cherokee/fdpoll.c (cherokee_fdpoll_new): Now returns ret_no_sys instead of ret_error if it could instace the fdpoll object. * cherokee/socket.c (cherokee_socket_sendfile): Added LINUX_BROKEN_SENDFILE_API case. * cherokee/common.h: Added new ret_t value: ret_no_sys * configure.in: Added check off64_t 2005-05-01 Alvaro Lopez Ortega * configure.in: --disable-pcre option removed. 2005-04-30 Alvaro Lopez Ortega * cherokee/url.c (cherokee_url_clean): Added new method. * cherokee/downloader.c (cherokee_downloader_set): Renamed to cherokee_downloader_set_url() * cherokee/downloader.c (cherokee_downloader_mrproper, cherokee_downloader_init): Added new methods. * cherokee/mmap2.c (mmap2_print_item): Compilation fix. * cherokee/socket.c (cherokee_socket_accept_fd): Compilation fix. * cherokee/session_cache.h, cherokee/session_cache.c (cherokee_session_cache_add, cherokee_session_cache_retrieve, cherokee_session_cache_del): Compilation fix. * cherokee/buffer.c (cherokee_buffer_encode_md5): Compilation warning fixed. * cherokee/server.c: Some changes to make time updating more consistent. There was a problem when a blocked thread became alive again and accepts a new connection. It was using the old time value, so the connection probably could be dropped in the next server timeout checking. * cherokee/server.c (update_bogo_now): s/CHEROKEE_RWLOCK_TRYWRITER/CHEROKEE_RWLOCK_WRITER/. Server must update always. 2005-04-28 Alvaro Lopez Ortega * cherokee/thread.c (cherokee_thread_deactive_to_polling, cherokee_thread_move_connection_to_polling): Code clean up. 2005-04-27 Alvaro Lopez Ortega * cherokee/connection.h, cherokee/connection.c (cherokee_connection_close): Removed. * qa/run-tests.py, qa/conf.py (STRACE_PATH): Added new option to use strace. * qa/run-tests.py: Added support for the new configuration entry "PollMethod". The new parameter -m allows to set it. 2005-04-26 Alvaro Lopez Ortega * cherokee/read_config_scanner.l, cherokee/read_config_grammar.y, cherokee/server.c, cherokee/server-protected.h, advanced.conf.sample.pre: Added a new configuration "PollMethod". It allows you to force a polling method. * cherokee/Makefile.am (EXTRA_DIST): getopt and pcre sources are always included in the tarball. * cherokee/pcre/*, configure.in, cherokee/Makefile.am: libcherokee-basic now supports pcre. If the libpcre library is installed on the system, it will use it, otherwhise it'll compile the pcre sources inside libcherokee-base. 2005-04-25 Alvaro Lopez Ortega * cherokee/Makefile.am (libcherokee_base_la_SOURCES): Removed ltdl entries. * cherokee/fdpoll-poll.c (fdpoll_poll_new): Better initialization of the struct pollfd entries. * cherokee/thread.c (process_polling_connections): Remove the connection from the polling list before destroy it. It was breaking the polling list if an element got a timeout. * cherokee/thread.c (purge_closed_polling_connection): Purgation from the polling list fixed. * cherokee/server.c (print_banner): Little bugfix. There were two cherokee_buffer_add calls with a wrong length. 2005-04-24 Alvaro Lopez Ortega * cherokee/handler_cgi.c (cherokee_handler_cgi_init): Added CGI_TIMEOUT to the handler initialization. * cherokee/macros.h (CGI_TIMEOUT): Added new constant. 2005-04-23 Alvaro Lopez Ortega * cherokee/fdpoll-poll.c (_check): Added POLLERR to rw=0 and rw=1 * cherokee/fdpoll-poll.c (_add): s/POLL_READ/POLLIN/ and s/POLL_WRITE/POLLOUT/ 2005-04-22 Alvaro Lopez Ortega * cherokee/fdpoll-epoll.c (fdpoll_epoll_new): Stop complaing about epoll() if it runs on Linux 2.4. * cherokee/connection.c (get_authorization): Added a smarter authentication method checking. * cherokee/validator_htdigest.c, cherokee/validator_htdigest.h, cherokee/Makefile.am: Added new authentication backend. 2005-04-21 Alvaro Lopez Ortega * cherokee/cherokee-panic (action): Added 2>/dev/null to the "type" calls. * cherokee/buffer.c (cherokee_buffer_encode_md5_digest): It doesn't use sprintf() to convert to hexadecimal any more. I have added a new macro TO_HEX to replace that call. * cherokee/header.c (get_new_line): Added support for multiline headers. * cherokee/validator.h: Added support property. * cherokee/validator.c (cherokee_validator_free_base): Added new method. * cherokee/validator.h, cherokee/validator.c (cherokee_validator_add_headers): Added new virtual method. 2005-04-19 Alvaro Lopez Ortega * cherokee/common.h: Added new type cuint_t * cherokee/util.c (cherokee_sys_fdlimit_set, cherokee_sys_fdlimit_get): Made s/uint32_t/cuint_t/. It had a dependency on stdint.h or inttypes.h that couldn't be handled without HAVE_ macros. 2005-04-18 Rodrigo Fernandez * cherokee/virtual_server.c: Initialize mutextes in the constructor. It was making NetBSD 2.0 to crash on every request 2005-04-15 Alvaro Lopez Ortega * cherokee/Makefile.am (libplugin_*_la_LDFLAGS): Added -export-dynamic * cherokee/libltdl/*, cherokee/Makefile.am (libcherokee_base_la_SOURCES): Added libltdl source code. * cherokee/module_loader.c (dylib_open): Added more descriptive error reporting string. * cherokee/Makefile.am: Removed -no-undefined parameter from all the module LDFLAGS. Let them free to use whatever they want! :-p * cherokee/socket.h (CHE_INET_ADDRSTRLEN): There was a problem compiling Cherokee 0.4.19 on Cygwin becase it doesn't export the value of INET_ADDRSTRLEN. I have added the default value of it to the macro. See RFC 2553. * cherokee/header.c: "const known_headers_names" to "static known_header_names" * cherokee/socket.c (cherokee_socket_pton): inet_pton is not available on Cygwin. I've added a new ifdef entry to use inet_aton in that case. 2005-04-14 Alvaro Lopez Ortega * Cherokee 0.4.19 released 2005-04-13 Alvaro Lopez Ortega * cherokee/util.h, cherokee/util.c (cherokee_setenv): Removed! It is not longer needed. * cherokee/macros.h: Removed stdint.h include. There was a problem in Solaris 9 Sparc due to this. * build_solaris.sh.in, configure.in, Makefile.am: Added new script to build Solaris binary packages. * cherokee/mime_scanner.l: Added stdlib include. 2005-04-12 Alvaro Lopez Ortega * cherokee/buffer.h, cherokee/buffer.c (cherokee_buffer_make_empty), cherokee/read_config_grammar.y, cherokee/mmap2.c (entry_clean), cherokee/logger_ncsa.c (cherokee_logger_ncsa_flush), cherokee/header.c (cherokee_header_foreach), cherokee/handler_nn.c (get_nearest), cherokee/handler_dirlist.c (check_request_finish_with_slash), cherokee/handler_common.c (cherokee_handler_common_new), cherokee/connection.c (cherokee_connection_mrproper) (process_handler_complex_headers, build_response_header) (cherokee_connection_send_header_and_mmaped) (cherokee_connection_send, post_init): Removed cherokee_buffer_make_empty() function. * cherokee/buffer.h, cherokee/buffer.c (cherokee_buffer_init, cherokee_buffer_mrproper): Added new functions. * cherokee/handler_error.c (build_hardcoded_response_page): Fixed to show the right URL in the error reporting page. * cherokee/buffer_escape.c (cherokee_buffer_escape_set_ref): Slightly modified. Now it allows to re-set a buffer. * cherokee/logger_w3c.c (cherokee_logger_w3c_write_access) (cherokee_logger_w3c_write_error): Fixed logger string. * cherokee/connection.h, cherokee/connection.c (cherokee_connection_build_local_directory): Added new structure member: request_original. * cherokee/logger_ncsa.c (build_log_string): Fixed request string. It was logging a wrong request string if the DocumentRoot configuration key was used for that directory. * cherokee/handler_dirlist.c (build_public_path): Fixed "Index of" string. I was printing a wring directory if a DocumentRoot was configured for that directory. * cherokee/handler_cgi.c (_extract_path): Bug fix. Indirecty reported by Allan Wind . 2005-04-11 Alvaro Lopez Ortega * cherokee.spec.in, Makefile.am: Remake RPM. It is a JDS/SuSE package. * configure.in: Added new parameter --with-wwwroot 2005-04-09 Alvaro Lopez Ortega * cherokee/handler_dirlist.c, cherokee/handler_dirlist.h: Added support for sorting out files. 2005-04-05 Alvaro Lopez Ortega * cherokee/handler_phpcgi.c (cherokee_handler_phpcgi_new): Tiny bugfix in a corned case. * cherokee/connection-protected.h, cherokee/handler_cgi.c, cherokee/handler_cgi.h, cherokee/handler_common.c, cherokee/handler_phpcgi.c, cherokee/util.c: Added a much better support of PathInfo. Lot of stuff have been changed to make it work. * qa/66-DirectoryIndex3.py, qa/67-PathInfo.py, qa/68-PathInfo2.py, 69-PathInfo3.py: Added new test cases. * cherokee/handler_cgi.c: Some variables has been fixed to make DokuWiki and PHP Indexer work. Reported by Rodolfo Pilas 2005-04-02 Alvaro Lopez Ortega * cherokee/handler_cgi.c (cherokee_handler_cgi_init), cherokee/connection-private.h, cherokee/connection.c, cherokee/handler_common.c: Added support for effective directory. * cherokee/connection.c (cherokee_connection_create_handler): Little fix: if the directory is using the "common" handler and the server receives a request for a file that doesn't exists, it doesn't need to instance a file handler to return the error. It is a little speed improvement for a corner case. * cherokee/common.deps: Added cgi * debian/cherokee.init (restart): Fixed. * cherokee/read_config_grammar.y: Slightly modified to support full paths in the DocumentIndex configuration entry. 2005-04-01 Alvaro Lopez Ortega * cherokee/validator_pam.c: Fixed compilation. Reported by Link Dupont . Ilya Pashkovsky also sent a patch for this. * cherokee/validator_pam.c (cherokee_validator_pam_check): Fixed little memory leak. * configure.in: Added new configuration parameter to disable PAM. 2005-03-31 Alvaro Lopez Ortega * 0.4.18 released * cherokee/thread.c (cherokee_thread_step_SINGLE_THREAD): Bug fixed: there was a problem in the pipelined request. * configure.in, cherokee/thread.c (cherokee_thread_new): Added detection for pthread_attr_setschedpolicy(). It fixes a compilation problem for some platforms. 2005-03-30 Alvaro Lopez Ortega * cherokee/Makefile.embedded: Added new Makefile for the u-cherokee version. 2005-03-28 Alvaro Lopez Ortega * cherokee/header-protected, cherokee/connection-protected: New header files. 2005-03-25 Alvaro Lopez Ortega * cherokee/logger_ncsa.c (cherokee_logger_ncsa_free): Silly bug fixed. It was closing twice the same file descriptor and forgoting another one unclosed. Remember: some times copy&paste sucks :-p * cherokee/header.c (cherokee_header_parse), cherokee/handler_file.c (cherokee_handler_file_init): Partial content fixes. 2005-03-23 Alvaro Lopez Ortega * cherokee/http.h (http_mehod_with_body): Added new macro 2005-03-19 Alvaro Lopez Ortega * cherokee/connection.c (get_host): Improved: Now it is slightly faster and has a better broken header detection. 2005-03-18 Alvaro Lopez Ortega * cherokee/handler_file.c (cherokee_handler_file_init): Fixed compilation problem. * cherokee/socket.c (cherokee_read): Added support for the «Connection timed out» error. 2005-03-17 Lidia Fernandez Gago * autogen.sh: Updated. * m4/*: Moved macro files. * configure.in: Fixed some macro problems. 2005-03-15 Alvaro Lopez Ortega * sendfile_samba.m4, configure.in: Fixed inclusion of sendfile() check - at CeBit 2005, Hanover. 2005-03-06 Alvaro Lopez Ortega * cherokee/fdpoll-epoll.c: Some little bug fixes * cherokee/Makefile.am (gnu_getopt): getopt files moved inside cherokee/getopt directory. 2005-03-03 Alvaro Lopez Ortega * cherokee/buffer.c (cherokee_buffer_read_from_fd): Added EIO management. 2005-03-02 Alvaro Lopez Ortega * cherokee/socket.c (initialize_tls_session): Fixed compilation problem. Reported by Cesar Fernandez Gago. 2005-02-27 Alvaro Lopez Ortega * cherokee_replace.c: Fixed some compilation warnings. 2005-02-25 Alvaro Lopez Ortega * cherokee/macros.h (CST_OFFSET): Added new macro 2005-02-24 Alvaro Lopez Ortega * cherokee/table.c (cherokee_table_del): Last argmente removed. It was used to return the value of the deleted element. * configure.in, cherokee/zlib/Makefile.am: Improved zlib compilation. 2005-02-21 Rodrigo Fernandez-Vizarra * cherokee/mmap2.c (table_is_full): Fixed the condition to check if the table is full. 2005-02-20 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_gethostbyname): Replaced __SUN_PROC by SOLARIS. There was an error here compiling Cherokee in Solaris with GCC. * cherokee/header.c (parse_request_first_line): Improved parsing. Now it is a bit more secure. * cherokee/connection.c (cherokee_connection_setup_error_handler): On error, it will close the socket: keepalive = 0. * cherokee/server.c (print_banner): Added new substring about IPv6 2005-02-19 Alvaro Lopez Ortega * cherokee/handler_cgi.c: Fixed silly bug. Now POST requests are working again. This problem was introducced in the execl() to execve() code conversion. 2005-02-18 Alvaro Lopez Ortega * cherokee/server.c (set_fdmax_limit): Fixed logic. * configure.in: Added check for getrlimit() and getdtablesize() * cherokee/util.c (cherokee_sys_fdlimit_get): Added WIN32 * cherokee/thread.c (cherokee_thread_step_MULTI_THREAD): Fixed code logic problem. This was the CGI execution problems source. * configure.in: Added AC_DEFINE for Solaris 2005-02-15 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_socket_accept_fd, cherokee_socket_set_sockaddr): Added new helper function to improve performance in thread.c * cherokee/connection.c (cherokee_connection_mrproper): It shouldn't keep information in incoming_header if it is not a keep-alive connection. Fixed. * cherokee/mmap2.c (cherokee_mmap2_get): Added a new mutex: cherokee_mmap2_get_mutex. From this moment _get() is atomic. 2005-02-14 Alvaro Lopez Ortega * cherokee/cherokee-panic (action): Added "full" to the bt action. * cherokee/mmap2.c (entry_free): Fixed tiny memory corruption problem. * cherokee/handler_file.c (cherokee_handler_file_new): Fixed: move depends on uninitialised value. * cherokee/socket.c (cherokee_socket_ntop): Fixed: move depends on uninitialised value. * cherokee/buffer.c (cherokee_buffer_ensure_size): If ->buf is NULL just use malloc and return. 2005-02-13 Alvaro Lopez Ortega * cherokee/fdpoll-epoll.c (_check): Added sanity check 2005-02-12 Alvaro Lopez Ortega * cherokee/handler_cgi.h: changed type of the pid property. Now it is pid_t. * cherokee/buffer.c (cherokee_buffer_read_from_fd): It didn't support EINTR error handling. * cherokee/handler_cgi.c (cherokee_handler_cgi_init): Now it uses execve() instead execl(). All cherokee_setenv() calls have been dropped out. 2005-02-09 Alvaro Lopez Ortega * cherokee/handler_file.c (cherokee_handler_file_add_headers): Now it uses cherokee_gmtime() instead of gmtime(). * cherokee/http.h (http_moved_temporarily_string), cherokee/http.c (cherokee_http_code_copy): Fixed 302 string. * cherokee/common-internal.h (CHEROKEE_RWLOCK_TRYWRITER, CHEROKEE_RWLOCK_TRYREADER, CHEROKEE_MUTEX_TRY_LOCK): If Cherokee is compiled without pthread support, it is 0 <- that means that it has locked. * cherokee/logger_ncsa.c (build_log_string), cherokee/logger_w3c.c (cherokee_logger_w3c_write_access, cherokee_logger_w3c_write_error): Now it uses bogo_now from the thread. * cherokee/server-protected.h: Added new rwlock: bogo_now_mutex. * cherokee/common-internal.h (CHEROKEE_RWLOCK_TRYREADER, CHEROKEE_RWLOCK_TRYWRITER): Added two new macros to wrap pthread_rwlock_tryrdlock() and pthread_rwlock_trywrlock() * cherokee/thread.c (set_sigpipe): Removed. * cherokee/thread.h: Added new properties: time_t bogo_now, struct tm bogo_now_tm, cherokee_buffer_t *bogo_now_string. * cherokee/mmap2.c (cherokee_mmap2_get), cherokee/handler_file.c (cherokee_handler_file_init): Added new bogo_now parameter. 2005-02-08 Alvaro Lopez Ortega * cherokee/connection.c, cherokee/macros.h: Now, it look at the traffic_next property to update the virtual server traffic counters each DEFAULT_TRAFFIC_UPDATE seconds. It uses to the new cherokee_connection_update_vhost_traffic() function. It should improve the performance. * cherokee/connection.c (cherokee_connection_update_vhost_traffic): Added new method to update the virtual server traffic information. It just call the new cherokee_virtual_server_add_{tx,rx} to update it safely. * cherokee/connection.h: Added rx and tx properties. * cherokee/virtual_server.h, cherokee/virtual_server.c (cherokee_virtual_server_add_rx, cherokee_virtual_server_add_tx): Added these new function to make rx/tx increment thread safe. There are connection in the threads that could want to increment this values at the same time. * cherokee/server-protected.h: Added new property: type struct tm. * cherokee/util.h, cherokee/util.c (cherokee_gmtime): Added new function. * cherokee/server.c (cherokee_server_unlock_threads): Added new function. * cherokee/thread.h, cherokee/thread.c (cherokee_thread_unlock): Added new function to launch the thread. It just unlocks the starting mutex. * cherokee/thread.h, cherokee/thread.c: Added starting_lock. * cherokee/mmap2.c (cherokee_mmap2_clean_up): Fixed some concurency problems. 2005-02-06 Alvaro Lopez Ortega * cherokee/thread.c: Integrated lingering close stuff. 2005-02-06 Rodrigo Fernandez-Vizarra * ChangeLog: Fixed a typo in my name ;-) * cherokee/Makefile.am: Changed a GNU specific rule to a GNU/BSD compatible rule * cherokee/handler_cgi.c: Added signal.h so that it compiles in NetBSD 2.0 2005-02-05 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_read): Now it supports read to a NULL. It is useful to implement lingering close. * cherokee/connection.h, cherokee/connection.c (cherokee_connection_pre_lingering_close): Added new function. * cherokee/connection.h: Added lingering state 2005-02-03 Alvaro Lopez Ortega * cherokee/server.c (read_config_path): Added closedir() call. There was a memory leak due to this. * cherokee/icons.c (cherokee_icons_set_suffixes): Tiny memory leak fixed. * cherokee/mmap2.c, cherokee/mmap2.h: Now it does not use CHEROKEE_NEW_STRUCT_WITH_PRIV. * cherokee/macros.h (CHEROKEE_NEW_STRUCT_WITH_PRIV): Removed!! It was the source of lot of problems. 2005-02-03 Rodrigo Fernandez-Vizarra * cherokee/fdpoll-kqueue.c: Fixed compilation problem in Freebsd and Netbsd. 2005-02-01 Alvaro Lopez Ortega * cherokee/server.c (cherokee_server_init): Fixed wrong thread number in single-thread executable. * cherokee/handler_cgi.c (cherokee_handler_cgi_free): Now calls to close() safely. * cherokee/thread.c (cherokee_thread_step_SINGLE_THREAD): tls_enabled fixed. 2005-01-30 Alvaro Lopez Ortega * cherokee/handler_cgi.c (cherokee_handler_cgi_new): Better error handling. * cherokee/header.c (cherokee_header_get_arguments): Now it returns ret_ok instead ret_error parsing requests without parameters. * cherokee/connection.c (cherokee_connection_parse_args): Added sanity check. 2005-01-24 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_free): Memory leak fixed. It was not freeing query_string buffer. 2005-01-21 Alvaro Lopez Ortega * cherokee/connection.c (get_host): Added security check. Hostname can't start by dot. 2005-01-20 Alvaro Lopez Ortega * cherokee/socket.c (cherokee_read, cherokee_writev, cherokee_write): Added EINTR and EWOULDBLOCK 2005-01-19 Alvaro Lopez Ortega * cherokee/handler_cgi.h: Removed HANDLERCGI_PARAM and HANDLERCGI_FILE macros. 2005-01-15 Alvaro Lopez Ortega * cherokee/Makefile.am: Fixed libpcre support 2005-01-12 Alvaro Lopez Ortega * cherokee/buffer.h, cherokee/buffer.c (cherokee_buffer_replace_string): Added new method. 2005-01-09 Alvaro Lopez Ortega * cherokee/macros.h, cherokee/fdpoll-epoll.c: Errors around epoll are not more fatal errors. 2005-01-06 Emil Beinroth * cherokee/server.c (change_execution_user): Now it uses initgroups() to reset the user groups on change. 2005-01-01 Alvaro Lopez Ortega * cherokee/*c, *h, *l, *y: Copyright notice updated * configure.in: Added PCRE library detection * cherokee/handler_redir.c, cherokee/handler_redir.h: Ayose's patch integration and some little fixes. 2005-12-31 Ayose Cazorla León * cherokee/handler_redirc, cherokee/handler_redir.c: Added PCRE library support 2004-12-29 Alvaro Lopez Ortega * cherokee/connection.c (cherokee_connection_get_request): It will only try to process the Connection: Upgrade information if TLS is enabled in the server. 2004-12-27 Alvaro Lopez Ortega * configure.in: Clean up to use AC_HELP_STRING 2004-12-26 Ayose Cazorla León * cherokee/handler_cgi.c, cherokee/handler_error.c, cherokee/handler_file.c: Bug fixes. 2004-12-24 Alvaro Lopez Ortega * cherokee/server.c (cherokee_server_read_config_file): It configuration file is NULL, it will read the default one: CHEROKEE_CONFDIR"/cherokee.conf" * cherokee/macros.h: Added inclusion to avoid problems due to use int32_t in the cherokee structs. 2004-12-23 Alvaro Lopez Ortega * cherokee/fdpoll.c, cherokee/fdpoll.h: Added "port" support. * configure.in, cherokee/Makefile.am: Added check for the new Solaris 10 "Event Ports". * cherokee/fdpoll-kqueue.c: Fixed kqueue support 2004-12-22 Alvaro Lopez Ortega * debian/rules (config.status): It does not use --disable-epoll anymore. Now the polling method is choosen on-the-fly. * debian/rules: Removed cherokee-bench package. * configure.in: Removed --disable-epoll parameter. * cherokee/cherokee-panic: Added Solaris 10 support - with dbx 2004-12-20 Alvaro Lopez Ortega * cherokee/list_mergesort.c, cherokee/list_mergesort.h: Added Mergesort algorithm. http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html * cherokee/table.c (cherokee_table_len): Added new method. * cherokee/table.c (cherokee_table_clean_up): Added new method. 2004-12-18 Alvaro Lopez Ortega * cherokee/Makefile.am, src/*.deps, src/module_loader.c: Modules are not longer linked against other modules. Added .deps for this. 2004-12-07 Rodrigo Fernandez-Vizarra * cherokee.m4: Regexps fixed. 2004-11-27 Alvaro Lopez Ortega * configure.in, src/Makefile.am, src/handler_mono.c, src/handler_mono.h: Removed Mono support. * src/common.c: No longer needed. Removed. * src/common.c (PRINT_ERROR, PRINT_DEBUG): Now these are macros instead functions - defined in the header file. * src/util.h, src/util.c: Added new files for common.h clean up. 2004-11-24 Alvaro Lopez Ortega * src/handler_cgi.c (_LOG): Removed. A new macro "dbg" has been added, it is cleaner than _LOG. 2004-11-21 Alvaro Lopez Ortega * src/server.c (print_banner): Some little improvements. 2004-11-20 Alvaro Lopez Ortega * src/buffer_escape.c (cherokee_buffer_escape_free): Bugfix. s/esc->internal/esc->internal[i]/ * src/read_config_scanner.l, src/read_config_grammar.y: Added new configuration entry "MaxConnReuse" to set the max number of connection to reuse in each thread. * src/thread.c (connection_reuse_or_free): Added new function. * src/Makefile.am (libcherokee_server_la_SOURCES): Removed log.c and log.h. These files are not longer used. * src/handler_cgi.c (cherokee_handler_cgi_init): Droped O_ASYNC from O_ASYNC|O_NDELAY|O_NONBLOCK. 2004-11-16 Alvaro Lopez Ortega * src/*.c: Added LOT of "unlikely"s in the "ret" error checkings. * src/thread.c: Added some unlike()s * src/common.h (CHEROKEE_PRETTY_FUNCTION): It uses __func__ instead "???" if __PRETTY_FUNCTION__ is not supported. * src/common.h: Added likely and unlikely macros. * src/socket.c (cherokee_socket_init_tls): Call to gnutls_bye before deinit the TLS connection. It tries to fix a segmentation fault detected at the production server. 2004-11-04 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_write): ssize_t -> size_t (cherokee_socket_read): ssize_t -> size_t (cherokee_socket_gethostbyname): Added implementation for Solaris10. * src/list.h, src/common.h: Some fixes around __inline__ to make Cherokee compile in Solaris w/ the Forte compiler. * configure.in: Added better check for __inline__ 2004-11-02 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_get_request): It returns 411 «Length required» error on POST without length. 2004-10-30 Alvaro Lopez Ortega * src/logger_ncsa.c (cherokee_logger_ncsa_write_string): Security bug fixed. Reported by Dan Margolis . 2004-10-21 Alvaro Lopez Ortega * configure.in: Removed Debian apt-get examples.. 2004-10-17 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_clean): There was a bug clearing the request buffer_escape object. * src/buffer_escape.c (cherokee_buffer_escape_get_html): Bug fixed. There was a SEGFAULT here because it was trying to read from NULL. 2004-10-16 Alvaro Lopez Ortega * icons/back.png: Updated. * icons/sound.png: Updated. * icons/movie.png: Updated. * icons/image.png: Updated. * icons/readme.png: Updated. * icons/java.png, icons/Makefile.am, icons.conf.sample: Added new icon. * src/http.h, src/connection.h, src/connection.c, src/thread.h, src/thread.c: Implemented RFC2817: «Upgrading to TLS Within HTTP/1.1» :-) 2004-10-13 Alvaro Lopez Ortega * src/server.c (build_server_string): New server string feature. * cherokee.conf.sample.pre: Added new block describing ServerTokens * src/handler_dirlist.c (cherokee_handler_dirlist_step), src/handler_error.c (build_hardcoded_response_page): Updated to use the new srv->server_token * debian/rules (config.status): It uses the new enable-os-string parameter. * configure.in (OS_TYPE): Added new --enable-os-string=STR * cherokee.m4: Little update * src/connection.h, src/connection.c, src/handler_error.c (build_hardcoded_response_page): Changed to use the new cherokee_buffer_escape_t class. * src/buffer_escape.h, src/buffer_escape.c, src/Makefile.am (libcherokee_base_la_SOURCES): Added new class. 2004-10-12 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_escape_html): Added new method. * src/connection.c (cherokee_connection_reading_check): On huge requests, it uses "Request-URI too long" instead of the generic "Bad Request". * src/http.h, src/http.c (http_request_uri_too_long_string): Added "Request URI too long" response. * doc: Added rfc1952.txt rfc2616.txt rfc2817.txt * src/header.c (cherokee_header_parse): Added "Upgrade" header to common ones. * src/connection.h: Added "upgrade" property to connection class. * src/http.h: Added cherokee_http_upgrade_t type 2004-10-11 Alvaro Lopez Ortega * src/thread.c (process_active_connections): Bugfix. * src/common.h (RET_UNKNOWN, SHOULDNT_HAPPEN): Reformatted. * configure.in, src/Makefile.am, src/handler_gotls.h, src/handler_gotls.c: Removed GoTLS handler. * src/handler_error.c (cherokee_handler_error_add_headers): Bugfix. It was generating a bad Content-length header. * src/connection.c (build_response_header): Added "Connection: Upgrade" support. * src/handler_table_entry.h, src/handler_table_entry.c: New class property: only_secure. * src/read_config_grammar.y: Added 'directory_option' to implement the «Only secure access» feature. * src/read_config_scanner.l: Added T_ONLY_SECURE token 2004-10-10 Alvaro Lopez Ortega * src/handler_phpcgi.c (cherokee_handler_phpcgi_{new,init}): Now, it look for a "Interpreter" handler parameter and use it as interpreter. * src/read_config_scanner.l, src/read_config_grammar.y (T_FULLDIR): Added "Interpreter" property. 2004-10-01 Alvaro Lopez Ortega * cget/main.c (print_help): Write as wget * debian/control (Build-Depends): Removed zlib1g-dev dependency. * src/zlib, configure.in: Added zlib deflate code * configure.in: Removed check for zlib library * src/Makefile.am: Now uses src/zlib/ instead libz.so 2004-09-27 Alvaro Lopez Ortega * src/handler_dirlist.c (cherokee_handler_dirlist_new): Wrong initialization fixed. 2004-09-26 Alvaro Lopez Ortega * icons/iso.png, icons.conf.sample, icons/Makefile.am: Added «ISO Image» icon. * src/handler_cgi.c (_set_envs_cgi): index() -> strchr() * src/icons.c: Misc clean up * src/fdpoll.h: Added cherokee_fdpoll_reset() prototype * src/connection.h: Added prototype cherokee_connection_setup_error_handler() * src/connection.c: Some clean ups * src/url.c: Added inclusion of * src/header.c: Added inclusion of strings.h. * src/header.c (cherokee_header_parse): Typo fixed. * src/socket.c: Added inclusion of sys/socket.h header 2004-09-23 Alvaro Lopez Ortega * src/access.c (cherokee_access_ip_match): Removed two unused variables. * src/mime.c (cherokee_mime_entry_free): Return value fixed * src/header.c: Added string.h inclusion: strncasecmp(), strsep() * src/header.c (cherokee_header_copy_method, cherokee_header_copy_version): These two functions have been rewrited to use the http.h API. * src/mmap.c (cherokee_mmap_get_default): Clean up: Removed unused variable * src/socket.c (initialize_tls_session): Fixed precompilator directives: HAVE_GNUTLS / HAVE_OPENSSL * src/socket.c (cherokee_socket_gethostbyname): Little clean up * src/socket.c: Added inclusion of netdb.h: gethostbyname_r() * src/buffer.c (cherokee_buffer_decode): Return fixed. * src/buffer.c (cherokee_buffer_replace): Fixed return value * src/common.c: Added inclusion of unistd.h and sys/time.h * src/http.c (cherokee_http_code_copy): Added http_continue and http_switching_protocolos cases. * src/connection.c (process_handler_complex_headers): Better complex header handling. * src/handler_cgi.c (cherokee_handler_cgi_init): Improved error report. It will return 404 or 500 in each case; until now, it was just closing the connection. 2004-09-22 Alvaro Lopez Ortega * src/header.c (cherokee_header_parse): Fixed a bug processing 'header_type_basic' headers. * src/read_config_grammar.y (yyerror): Better error reporting. 2004-09-19 Alvaro Lopez Ortega * src/cherokee-panic (action): Added new argument 'action'. 2004-09-15 Alvaro Lopez Ortega * src/common.h (RET_UNKNOWN): Added new macro. * src/handler_cgi.c: It is working again!! :-) 2004-09-14 Alvaro Lopez Ortega * src/handler_cgi.c: Lot of changes * src/fdpoll.c (fdpoll_epoll_del): It fill not exit() on error. 2004-09-11 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_read_from_fd): Addned new function. 2004-09-07 Alvaro Lopez Ortega * src/handler.h (HANDLER_THREAD): Added new macro. 2004-09-05 Alvaro Lopez Ortega * src/thread.c (cherokee_thread_conn_wants_poll_for_fd): Added new function. * src/downloader.c, src/downloader.h: Added struct entries to count the information send/received. * src/downloader.c, src/downloader.h: (cherokee_downloader_connect): Added new function. 2004-09-04 Alvaro Lopez Ortega * src/downloader.c (downloader_header_read): Added content-length header check. 2004-09-02 Alvaro Lopez Ortega * src/handler_cgi.c (_send_post_data): Clean up * src/handler_cgi.c: Some changes to make POST request >4Kb working. * src/connection.c (cherokee_connection_get_request): Now it uses the header class instead of look inside the request string "by hand". * src/thread.c (process_active_connections): Bugfix. userdir detection was wrong. * src/thread.c (process_active_connections): Incoming headers parsing improved. * src/thread.c (process_active_connections): Bugfix. Incoming headers was not managed properly. 2004-09-01 Alvaro Lopez Ortega * src/read_config_scanner.l, src/read_config_grammar.y: Added "https" urls recognition. Reported by Rodolfo Pilas. 2004-08-30 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_gethostbyname): Fixed concurrent version of the function. It was not copy the query in the socket struct. (Santa Cruz ~ Bolivia to Sao Paulo ~ Brazil) 2004-08-29 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_connect): Added new method (Hotel, Sucre ~ Bolivia). 2004-08-23 Alvaro Lopez Ortega * src/url.c (cherokee_url_parse_ptr): Fixed. It was including the port number in the hostname string after parsing. * src/socket.c (cherokee_socket_gethostbyname): Added new function. (Waiting in the Santa Cruz ~ Bolivia airport) 2004-08-22 Alvaro Lopez Ortega * configure.in: Added check for gethostbyname, gethostbyname_r functions. (Arequipa ~ Perú) 2004-08-19 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_set_client): Added new method. (XII CONEIS, Lima ~ Perú) 2004-08-10 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_pton): Added new method. (National Free Software Congress, Sucre ~ Bolivia) 2004-08-09 Alvaro Lopez Ortega * bench/main.c (main): Print_usage() fixed. * src/thread.c (process_active_connections): Now, it uses cherokee_header_has_header() instead of cherokee_connection_eoh() * src/header.c (cherokee_header_has_header): Added new function * src/connection.c (cherokee_connection_eoh): Dropped out * src/thread.c (process_active_connections): Fixed userdir directories management. 2004-08-05 Alvaro Lopez Ortega * bench/connection.h: changed struct sockaddr_in by cherokee_sockaddr_t * bench/request.h, bench/request.c: Moved to src, to libcherokee-client. Renamed from cherokee_bench_request_* to cherokee_request_header_* * bench/main.c (main): Adapted to last changes: It uses cherokee_buffer_t instead of char *. * bench/bench.h (cherokee_bench_add_url), src/url.h (cherokee_url_parse): Now, it accepts a cherokee_buffer_t instead of a char* * bench/url.c, bench/url.h: Moved to src, for libcherokee-client. 2004-07-16 Alvaro Lopez Ortega * src/read_config_grammar.y ('directory'): Some fixes. Now, it is more generic. * src/virtual_server.c, src/virtual_server.h (cherokee_virtual_server_set): Dropped out. 2004-07-14 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_init_tls, initialize_tls_session): Fixed compilation problem reported by Yusuf. 2004-07-13 Alvaro Lopez Ortega * README (NAME): Updated to new module name. * src/module_loader.c (dylib_open): Fixed to work with the new module prefix. * src/Makefile.am: libcherokee_* are now plugin_* 2004-07-12 Alvaro Lopez Ortega * sites-default.sample.pre: Changed form ErrorDocument to the new ErrorHandler syntaxis. * src/handler_redir.c (cherokee_handler_redir_new, cherokee_handler_redir_init): Some little fixes. * src/handler_error_redir.c (cherokee_handler_error_redir_new), src/Makefile.am, configure.in: Added new file. * src/connection.c: Error handling code fixed. 2004-07-08 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_build_header): Fixed to work with the new error management code. * src/connection.c (build_response_header): Error related headers are not needed anymore. The error module now manage all that. * src/connection.c (send_buffer_unsafe): Removed! It is not needed anymore. "Unsafe" is not the right way.. ;-) * src/connection.c (build_hardcoded_response_page): Removed! "Hardcoded" sounds horrible! We can do it much better than that. :-p * src/connection.c (cherokee_connection_send_response_page_hardcoded, cherokee_connection_send_response_page_file): Droped out! Now this work is delegated to the internal error handler. Much more clean!! * configure.in: IPv6 detection problem fixed. Reported by Juan Cespedes. * debian/rules (build-arch-stamp): It will now execute the tests by default. We have to check the Python version and add some dependences to the control file before. * doc/Intro.txt: It as dupped. Reported by Juan Cespedes. * src/handler.h (HANDLER_SUPPORT_ERROR): Added error handling property. * src/read_config_grammar.y (T_FULLDIR), virtual_server.h, virtual_server.c, connection.c: Clean up: it uses a cherokee_buffer_t instead a char* + int 2004-07-07 Alvaro Lopez Ortega * 0.4.17 released 2004-07-04 Alvaro Lopez Ortega * configure.in: Added check for ClamAV library * src/connection.c (cherokee_connection_get_request): Fixed "Host:" header management. Cesar Fernandez reported a problem with some broken proxies from Telefonica.es * src/handler_cgi.c (_set_envs_cgi): Fixed bug. It was generating a Segment Fault in the CGI process when there was no "Host:" entry in the request headers. * README: Added some information about how to compile a Cherokee module by hand (using libtool like in the current Automake code) 2004-07-03 Alvaro Lopez Ortega * Makefile.am (install-data-local, uninstall-local): Addeded new rule to install cherokee-config.h * src/cherokee.h, src/Makefile.am: Removed * src/module_loader.c: Clean up 2004-07-02 Alvaro Lopez Ortega * src/handler_dirlist.c (build_public_path): Fixed bug in the public path printing. 2004-07-01 Alvaro Lopez Ortega * src/handler.h, src/handler.c (cherokee_handler_free_base): Added new virutal method. * src/handler_file.c (file_init): _file_is_init now is cherokee_boolean_t instead int. * debian/rules: Updated to install the cherokee binary in /usr/sbin insted /usr/bin 2004-06-30 Alvaro Lopez Ortega * src/Makefile.am (sbin_PROGRAMS): Changed bin_PROGRAMS to sbin_PROGRAMS. Now the cherokee executable will be installed in /usr/sbin instead /usr/bin. 2004-06-28 Alvaro Lopez Ortega * src/read_config_scanner.l: Added domain name recognition. * sites-default.sample.pre: Added the logging related configuration entries. * advanced.conf.sample.pre: Moved LogFlushInterval here. 2004-06-27 Alvaro Lopez Ortega * src/table.c (cherokee_table_while): Bugfix. There was an error in the parameter order in the parameter function call. * src/handler_redir.c (cherokee_handler_redir_new): Better error check. * src/read_config_grammar.y (T_HTTP_URL): There was an error with the HTTP redirection configuration entries. * src/handler_cgi.c (cherokee_handler_cgi_add_headers): Wrong error handling fixed. 2004-06-20 Alvaro Lopez Ortega * src/mime.c (cherokee_mime_free): Bugfix. It was free memory twice. * src/logger_ncsa.c (build_log_string), src/handler_file.c (cherokee_handler_file_add_headers): Now uses the new FMT_OFFSET constant. * src/common.h (FMT_OFFSET): Added constant for format string of off_t * src/handler_cgi.c (_read_from_cgi): Some fixes arround the CGI termination. 2004-06-19 Alvaro Lopez Ortega * src/server.c (set_fdmax_limit): Moved from _new to _init just before to create the threads. * src/common.h, src/common.c (set_system_fd_num_limit): Added new function. * src/server.c (initialize_server_socket), src/read_config_scanner.l, src/read_config_grammar.y, src/server.h, advanced.conf.sample.pre: Added "ListenQueue" new configuration entry. * src/server.h, src/server.c, src/read_config_scanner.l, src/read_config_grammar.y, advanced.conf.sample.pre, src/handler_file.c: Added "Sendfile" new configuration entry. * src/virtual_server.c (cherokee_virtual_server_init_tls): OpenSSL implementation error fixed. It is working now. * src/server.c (read_config_path): It did not building the path correctly. Fixed. * src/server.c(cherokee_server_init): I was not detecting the TLS configuration correctly. Fixed. 2004-06-17 Alvaro Lopez Ortega * advanced.conf.sample.pre: Added new config file * src/server.c (print_banner): Added TLS library to the banner. 2004-06-13 Alvaro Lopez Ortega * src/mime.c (cherokee_mime_init): Bugfix 2004-06-06 Alvaro Lopez Ortega * src/cherokee-panic: It was a bug calling mktemp * src/Makefile.am (dynamic_validator_htpasswd_lib): It was compiling htpasswd module dinamically even it was set to --enable-static-module=all * src/server.c (read_default_config_files): Better mime global object management. * cherokee.conf.sample.pre: Commented out PAM example. Reported by Miguel Angel Ajo, ajo@godsmaze.org 2004-06-05 Alvaro Lopez Ortega * src/socket.c, src/socket.h, src/server.c, src/virtual_server.h, src/virtual_server.c: Added some OpenSSL support code. * src/virtual_server.c (cherokee_virtual_server_free): Now it fixes the credentials object. Memory_leaks--; * configure.in, src/Makefile.am, bench/Makefile.am: Added new options to compile with GNUTLS or OpenSSL. --enable-tls=[gnutls|openssl] 2004-06-04 Alvaro Lopez Ortega * bench/url.c (cherokee_url_parse): Bugfix. There was some incorrect string handling code. * bench/bench.c (_cherokee_bench_get_request): Compilation warning fixed. * src/logger_ncsa.c (build_log_string): Bug fixed. It was "int **" instead "int *". * src/handler_remote_control.c (cherokee_handler_remote_control_init): Fixed compilation warnings arround the 64bits long files support. * src/handler_mono.c (send_headers_callback): Compilation fix. * src/handler_dirlist.c (cherokee_handler_dirlist_step): Bugfix. It was: conn->userdir, instead of conn->userdir->len. * src/handler_dirlist.c (cherokee_handler_dirlist_step): Two compilation warnings were fixed. * src/handler_file.c (check_cached): Bugfix. It was an char *, instead a single char. * src/handler_server_info.c: Fixed some compilation warnings. * src/table.c (cherokee_table_while): The last two parameters: return of the key and the value found in the table new can be NULL. * src/table.h: New api. * src/icons.c (cherokee_icons_get_icon): Fixed to the new cherokee_table_while api. * src/handler_cgi.c (_set_envs_cgi): Compilation warnings fixed. * src/session_cache.c (equal): Compilation warning fixed. * src/thread.c (process_active_connections): 64 bits file in 32 bit machines bug fixed. (cherokee_thread_get_new_connection): Compilation warning fixed. * src/encoder_gzip.c (cherokee_encoder_gzip_encode): GZip Footer code rewritted. 2004-06-03 Alvaro Lopez Ortega * src/socket.h: Added new type cherokee_sockaddr_t * network.m4: Added AC_ACME_SOCKADDR_IN6 and AC_ACME_SOCKADDR_STORAGE * src/buffer.c (cherokee_buffer_swap_chars): Now, it returns ret_t * src/buffer.c (cherokee_buffer_end_char): Added new helper function * src/connection.c (cherokee_connection_build_local_directory_userdir): URL like http://www.alobbs.com/~alo are redirected to http://www.alobbs.com/~alo/ 2004-05-31 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_ntop): Conditional compilation reordered. * configure.in: Added check for the inet_ntop() function 2004-05-28 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_build_local_directory_userdir): Fixed bug. There was a problem with URL like: http://www.alobbs.com/~/cosa/ 2004-05-23 Alvaro Lopez Ortega * src/main.c (panic_handler): Function `panic' has been renamed to panic_handler because it was causing a linkage error on MacOS X. * configure.in (cherokee_version_len): Check form _pam_dispatch instead of pam_end. 2004-05-17 Alvaro Lopez Ortega * src/access.[ch] (cherokee_access_add), src/read_config_grammar.y (ip_list): Added new method. * src/socket.c (cherokee_socket_clean): Now, it cleans the struct sockaddr structure. * configure.in: It uses Automake1.8 so depends on autoconf >= 2.58 * src/server.c (init_tls_library), configure.in, src/Makefile.am: It does not depend on libgnutls-extra library anymore. * src/logger_ncsa.c (build_log_string): method and version string len is now NULL. It was unneeded here. * src/http.c (cherokee_http_{version,method}_to_string): Pointer to string len can be NULL. 2004-05-16 Alvaro Lopez Ortega * cherokee_replace.c (main): Added a new tiny program to replace the paths in the example configuration files. * Makefile.am, configure.in: Now use the cherokee_replace hack. * cherokee.conf.sample.in: Removed * cherokee.conf.sample.pre: Added * src/Makefile.am: Fixed problem with "common" handler. The LDFLAGS of the handlers now is "-module" instead "-shared" 2004-05-15 Alvaro Lopez Ortega * src/handler_cgi.c (_set_envs_cgi): It now uses the generic CHE_INET_ADDRSTRLEN macro. Fixed compilation in HP-UX 11. * src/socket.h (CHE_INET_ADDRSTRLEN): Added new macro. 2004-05-13 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_sendfile): Added HP-UX sendfile() support. 2004-05-12 Alvaro Lopez Ortega * src/connection.h: Added new phase `phase_send_headers'. * src/handler_file.c (cherokee_handler_file_init): Security fix. The request "http://localhost/~bin" was causing a segment fault. * src/connection.c (cherokee_connection_send_header): Rewritten. * src/connection.c (cherokee_connection_send): Now, it has a better error handling. * src/thread.c (process_active_connections): The new phase `phase_send_headers' is integrated now. The server will not send partial headers on EAGAIN anymore. 2004-05-11 Alvaro Lopez Ortega * src/server.c (cherokee_server_daemonize), src/main.c: Added new parameter -b (background). Now Cherokee can be running in background in a detached terminal. * src/connection.c (cherokee_connection_check_authentication): Bugfix. It was comparing a string with a random memory chunk. * src/connection.c (build_response_header): Some work arround the "WWW-Authenticate" response header. * src/connection.c (cherokee_connection_get_plugin_entry): Authentication type are copied from the handler entry to the connection object. * src/cherokee-panic: Changed "bt" by "thread apply all bt". * src/read_config_grammar.y (directory): It does not add a slash at end of the directory name. Now, http://localhost/about works with the "Directory /about {}" configuration entry. 2004-05-10 Alvaro Lopez Ortega * src/connection.c (build_response_header): Added headers for Digest authentication. * src/buffer.h (cherokee_buffer_encode_hex): Bugfix. * src/server.h, src/server.c (cherokee_server_get_total_traffic): It uses off_t instead unsigned long int. * src/virtual_server.h, src/virtual_server.c: LFS fixes. * src/read_config_grammar.y, src/virtual_server.c, src/virtual_server.h: Fixed virtual host list management. * src/handler_table_entry.c (cherokee_handler_table_entry_free): Better management of the memory. There was a little memory leak in the class destructor. * cherokee.conf.sample.in, src/handler_server_info.c, src/read_config_grammar.y, src/read_config_scanner.l: Added JustAbout flag. 2004-05-09 Alvaro Lopez Ortega * src/icons.c, src/connection.c, src/handler_file.c, src/handler_nn.c, src/handler_phpcgi: Replaced rindex() by strrchr() * src/md5.c, src/md5.h: Clean up * src/Makefile.mingw: Some work arround the Windows port. 2004-05-08 Alvaro Lopez Ortega * src/unix4win32.h, src/unix4win32.c, src/unix4win32_errno.h: Added new files to try to port Cherokee to Windows. * src/libc_interface.c, src/libc_interface.h, src/libc_internal.h: Removed. * src/Makefile.mingw: Lot of changes. 2004-05-05 Alvaro Lopez Ortega * src/logger_ncsa.c (build_log_string): Fixed for Large File Support. * src/handler_file.h: Fixed compilation in archs without sendfile() function. * src/cherokee-panic: It uses mktemp instead tempfile. Reported by Ali Ebrahim. * bench/Makefile.am, bench/main.c, src/Makefile.am, src/access.c, src/buffer.c, src/buffer.h, src/cherokee-panic, src/common.c, src/common.h, src/connection.c, src/connection.h, src/encoder_gzip.c, src/encoder_gzip.h, src/encoder_table.c, src/encoder_table.h, src/handler.c, src/handler.h, src/handler_cgi.c, src/handler_cgi.h, src/handler_common.c, src/handler_common.h, src/handler_dirlist.c, src/handler_dirlist.h, src/handler_file.c, src/handler_file., src/handler_nn.c, src/handler_phpcgi.c, src/handler_redir.c, src/handler_remote_control.h, src/handler_server_info.c, src/handler_table.c, src/handler_table.h, src/handler_table_entry.c, src/handler_table_entry.h, src/http.c, src/http.h, src/levenshtein_distance.c, src/levenshtein_distance.h, src/log.c, src/logger.c, src/logger_ncsa.h, src/logger_w3c.c, src/logger_w3c.h, src/md5.c, src/mime.c, src/mime_scanner.l, src/module_loader.c, src/read_config_grammar.y, src/server.c, src/server.h, src/socket.c, src/socket.h, src/thread.c, src/validator.h, src/validator_htpasswd.c, src/validator_pam.c, src/virtual_server.c, src/virtual_server.h: The LFS (Large File Support) is working. Some header were reordened. Some variables has changed the type. 2004-05-02 Alvaro Lopez Ortega * configure.in (cherokee_version_len): Version now uses m4 macros instead shell script code 2004-04-29 Alvaro Lopez Ortega * network.m4: Little fix for automake >= 1.8 2004-04-28 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_drop_endding): Added better error handling. * cherokee.conf.sample.in: Added Digest or Basic authentication example. 2004-04-28 Stephen Hemminger * src/socket.c: Bugfix: There was truncated file outputs running a load test on Linux 2.6 using Cherokee (epoll, sendfile). 2004-04-27 Alvaro Lopez Ortega * src/read_config_grammar.y: Added "Digest" authentication mode. * src/buffer.c (cherokee_buffer_prepend, cherokee_buffer_add): Little clean up * src/buffer.c (cherokee_buffer_add_chunked, cherokee_buffer_add_buffer_chunked): Added new functions. * src/handler_file.c (cherokee_handler_file_step): Now it uses the new cherokee_socket_sendfile function. * src/socket.c (cherokee_socket_sendfile): Added new function * src/http.h, src/http.c (cherokee_http_method_to_string): Added methods DELETE, TRACE and CONNECT. 2004-04-26 Alvaro Lopez Ortega * src/virtual_server.c (cherokee_virtual_server_init_tls): Fixed TLS initialization warning. * src/handler_dirlist.c (cherokee_handler_dirlist_step): Fixed bug. It was showing a bad "Index of" string in aliases directories. Reported by Ayose. * src/handler_table.c (cherokee_handler_table_get): Clean up 2004-04-25 Alvaro Lopez Ortega * src/read_config_grammar.y (directory_option): A bit improved * src/cherokee-panic, Makefile.am, cherokee.conf.sample.in, configure.in, debian/rules, src/Makefile.am, src/common.c, src/common.h, src/main.c, src/read_config_grammar.y, src/read_config_scanner.l, src/server.c, src/server.h: Added new "PanicAction" feature. * src/handler_dirlist.h, src/handler_dirlist.c (cherokee_handler_dirlist_step): Fixed problem when there were lot of files in the same directory. 2004-04-23 Alvaro Lopez Ortega * src/validator_plain.c (cherokee_validator_plain_check): Bugfix * src/logger_ncsa.c (build_log_string): Better logging without referer. * src/thread.c (process_active_connections): Tiny bugfix 2004-04-22 Alvaro Lopez Ortega * src/handler_dirlist.c (cherokee_handler_dirlist_step): Bugfix. * src/handler_dirlist.c (cherokee_handler_dirlist_step): I was an error in the memory management when the server had not a loaded icon table * src/buffer.h, src/buffer.c (cherokee_buffer_is_endding): Added new function. * src/socket.c (cherokee_write, cherokee_read): Fixed GNUTLS error handling. 2004-04-21 Alvaro Lopez Ortega * src/handler_common.c (cherokee_handler_common_new): Bugfix * src/handler_dirlist.c (cherokee_handler_dirlist_init): Little bug fix 2004-04-20 Alvaro Lopez Ortega * src/thread.c: Added support for TLS connections in the mail server_step code (single and multi thread versions) * src/session_cache.h (cherokee_session_cache_retrieve): Added new function. * src/virtual_server.c (cherokee_virtual_server_free): Fixed managed TLS releated memory manage. * src/session_cache.h, src/session_cache.c: Added new class 2004-04-19 Alvaro Lopez Ortega * src/server.c, src/socket.h, src/socket.c, src/connection.c: Finished the initial TLS support. * src/socket.c (cherokee_socket_clean): Added new function. * src/handler_file.c (cherokee_handler_file_init): Bug fix arroung TLS and sendfile() support. * src/connection.c (send_buffer_unsafe): Little bug fix 2004-04-18 Alvaro Lopez Ortega * src/socket.c (cherokee_socket_ntop): Returns ret_t not char * 2004-04-18 CoKi * src/common.c (PRINT_ERROR): Fixed security bug. No System Group - http://www.nosystem.com.ar 2004-04-16 Alvaro Lopez Ortega * src/virtual_server.c (cherokee_virtual_server_get_name): Added new method. * src/socket.h: Added new type cherokee_socket_type_t: TLS o non_TLS * configure.in: Fixed epoll detection. It was failing in systems with a new glibc but without kernel support. 2004-04-15 Alvaro Lopez Ortega * cherokee.m4: Added new tests for needed functions 2004-04-14 Alvaro Lopez Ortega * cherokee.m4: Added default version to 0.4.16 * 0.4.16 released. * bench/connection.c: Fixed compilation in Solaris. It was failing because the FIONBIO constant. * Makefile.am, qa/Makefile.am (test): Added new target to execute de QA tests from the Makefile * qa/cherokee-test.py: On python version error or execution test error, it returns an error code. * src/list_ext.c (cherokee_list_free): Added initialization of the list after free the items. 2004-04-14 Gunnar Wolf * Debian support updated 2004-04-13 Alvaro Lopez Ortega * src/read_config_scenner.l, src/read_config_grammar.y, src/server.c, src/server.h: some work to add the "Include" feature. 2004-04-12 Alvaro Lopez Ortega * configure.in, src/common.h, src/common.c: Added strsep() emulation code. * src/validator_htpasswd.c (crypt_r_emu): Bugfix for Solaris. * src/connection.c (add_error_code_string_to_buffer): Dropped out. Now, the connection class uses the cherokee_http_code_copy function. * src/http.c (cherokee_http_code_copy): New function. * src/http.h (http_moved_temporarily_string): 302 error message is "Found". * src/connection.c (build_hardcoded_response_page): Redirect error now uses the "moved temporarily" not "moved permanently". Added new error response. * src/handler_file.c (cherokee_handler_file_init): Bug fixed. It was sending all the file in partial contents if the file was too long to use mmap. * src/handler_file.c (cherokee_handler_file_init): There was a bug in the mmap table instance. Fixed. * qa/tests/Test01.py (TestErrorDocumentRedirect): Added new class to check the redirection of the ErrorDocument entries. * src/thread.c (process_active_connections): ErrorDocument (on redirection) fixed. 2004-04-11 Alvaro Lopez Ortega * src/handler_cgi.c (_set_envs_cgi): Removed "method" array. Now, it uses the cherokee_http_method_to_string and cherokee_http_version_to_string functions. * src/server.c (initialize_server_socket4, initialize_server_socket6): Better initialization. * src/socket.c (cherokee_write): Return parameter is ssize_t not int * src/encoder.c, src/encoder.h, src/encoder_gzip.c, src/handler.c, src/handler.h, src/handler_cgi.c, src/handler_dirlist.c, src/handler_file.c, src/handler_gnomevfs.c, src/handler_mono.c, src/handler_nn.c, src/handler_phpcgi.c, src/handler_redir.c, src/handler_remote_control.c, src/handler_server_info.c, src/logger.c, src/logger.h, src/logger_combined.c, src/logger_ncsa.c, src/logger_w3c.c, src/module.c, src/module.h, src/validator.c, src/validator.h, src/validator_htpasswd.c, src/validator_pam.c, src/validator_plain.c: Encoder, Handlers, Validators and Loggers are now based in the module class. Some code clean ups around it. 2004-04-11 Ayose Cazorla León * src/handler_cgi.c: Partial fix for the zombies CGIs 2004-04-10 Alvaro Lopez Ortega * src/logger_combined.h, src/logger_combined.c: Added new logger. It support the NCSA "combined" logging format. It is compatible with the Apache's "combined". * src/connection.c (cherokee_connection_log_delayed): log_at_end error fixed. * src/thread.c (cherokee_thread_step): Added new "don't block" parameter. The main thread should not block.. it have to another works like flush the log files. It fixed a bug arround the log bufferring. * src/http.c: Added new file and two new functions: cherokee_http_version_to_string and cherokee_http_method_to_string * src/logger_ncsa.c (cherokee_logger_ncsa_write_access): Added user ID support. * src/logger_ncsa.c: Little clean up. There was unneeded macros. * src/read_config_grammar.y, src/read_config_scanner.l, cherokee.conf.sample.in: Added "LogFlushInterval" configuration entry to set the elapse time before write down the log to disk * src/handler_cgi.c (cherokee_handler_cgi_add_headers): Rewritten. * src/read_config_scanner.l: Added "HTTP sort" URLs to grammar. T_FULLDIR, T_HTTP_URL shorted. * src/socket.c (cherokee_socket_read): Bugfix 2004-04-09 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_move_to_begin): Better implementation. * src/common.h: Added new MIN and MAX macros * src/access.c (parse_ip): There was a memory error compiling Cherokee without IPv6 support and trying to parse an v6 IP address. * src/server.c (cherokee_server_init): Thread creation is now the last action in the init sequence. * src/server.c (initialize_server_socket): Jump on non-initialized variable bug fixed. * src/access.c (cherokee_access_add_ip): Added a better error handling. 2004-04-08 Alvaro Lopez Ortega * src/handler_file.c (cherokee_handler_file_init): Better error handling creating the mmap object. * cherokee.conf.sample.in: Gzip encoding section commented by default. * configure.in: Fixed common handler compilation * src/Makefile.am (handler_common): Compilation orden changed to ensure that the "handler common" can link with phpcgi, dirlist, etc.. * configure.in: Fixed getopt_long for system(s?) with libiberty but not getopt.h header file - AFAIK, only Solaris. * src/read_config_grammar.y, src/icons_grammar.y: Global variables of the analizer has been set to "static" to prevent linkage problems in Solaris. * configure.in: inet_pton detection fixed. 2004-04-07 Alvaro Lopez Ortega * src/access.c (s6_addr32): Dropped out the usage of s6_addr32. It will help to compile in Solaris * src/sha1.h, src/sha1.c: Replaced u_int32_t by uint32_t. I was not compiling in Solaris because it. * src/socket.c (cherokee_socket_ntop): SunOS 5.9 compilation bug fixed. * src/Makefile.am, bench/main.c: FreeBSD 4.8 with GCC 2.95 compilation fix 2004-04-06 Alvaro Lopez Ortega * qa/cherokee-test.py: Added a test to check the Python version. It needs >= 2.3 * configure.in: Added GNUTLS version to 1.0.4 * configure.in: Added check for getopt_long function in the gnugetopt or iberty library * doc/Intro.txt: Little update * src/fdpoll.c, src/fdpoll.h, bench/bench.c, bench/thread.c, bench/thread.h, doc/Intro.txt, src/connection.c, src/server.c, src/thread.c, src/thread.h: Now, the file descriptors poll class uses two parameters: per thread fd limit, and global system fd limit. 2004-04-04 Taher Shihadeh * doc/Intro.txt: LOT of fixes :-) 2004-04-03 Alvaro Lopez Ortega * src/thread.c (cherokee_thread_new), src/read_config_scanner.l, src/read_config_grammar.y, src/server.c, src/server.h: Added support for choose the scheduling policy from the config file 2004-04-02 Alvaro Lopez Ortega * src/thread.c (__accept_from_server): Better error handling of failed connections. * src/fdpoll.c (fdpoll_epoll_check): Some small fixes. * src/server.c (print_banner): Added more information to the banner line. 2004-03-31 Alvaro Lopez Ortega * 0.4.15 released * Makefile.am, src/Makefile.am: distcheck fixed. Now, it removes all the installed files. * Makefile.am (uninstall-local): Added mime.conf and icons.conf * bench/Makefile.am (INCLUDES), configure.in: Fixed compilation from remote directories (like in distcheck) * src/thread.c (cherokee_thread_new): Fixed gcc 2.95 compilation problem 2004-03-28 Alvaro Lopez Ortega * src/thread.c (cherokee_thread_new): Fixed single thread version of the server. 2004-03-27 Gunnar Wolf * Debian packages writted from scratch (with DebHelper) 2004-03-23 Alvaro Lopez Ortega * src/common.h: Added new macro CHEROKEE_NEW2 2004-03-23 Eugene Rosenzweig * src/common.h, src/header.c, src/access.c: (parse_request_first_line): Compilation bugfixes. 2004-03-22 Antonio Buiza Calero * src/main.c: Fixed header inclusion to fix the FreeBSD 4.8 compilation. 2004-03-21 Alvaro Lopez Ortega * configure.in: Fixed crypt_data detection * src/access.c (s6_addr32): Fixed BSD support * src/validator_htpasswd.c (validate_crypt): #ifdef Bugfix * bench/Makefile.am (cherokee_bench_LDADD), src/Makefile.am (cherokee_LDADD): Added pthread library 2004-03-20 Alvaro Lopez Ortega * src/http.h, src/connection.c (add_error_code_string_to_buffer): Added error code 411 "Length Required" 2004-03-19 Alvaro Lopez Ortega * configure.in: Fixed detection of crypt_r. Now it is not a critical error. * configure.in: Fixed kqueue and select detection. * configure.in: Improved show of supported polling methods. * src/handler_cgi.c (cherokee_handler_cgi_init): Better error checking 2004-03-18 Alvaro Lopez Ortega * src/connection.c (get_encoding, cherokee_connection_parse_header): Added better error handling. * qa/tests/Test01.py: Added two new tests: "overflow range detection" and "switched range detection". * src/connection.c (get_range): Added switched range detection check. * qa/tests/Test01.py: Range tests rewritten. Much cleaner code. * src/handler_file.c (cherokee_handler_file_init): Added check for partial petitions out of range. * src/http.h (http_not_modified_string), src/connection.c (add_error_code_string_to_buffer): Added error code 416, "Requested range not satisfiable". 2004-03-17 Alvaro Lopez Ortega * Released 0.4.14 * qa: Added new directory * src/handler_file.c (cherokee_handler_file_init): Fixed "Range: bytes=" with mmap()ed content 2004-03-14 Alvaro Lopez Ortega * src/module_loader.c (dylib_open): Removed gbl_buffer usage * src/connection.c (get_range): Rewritten without gbl_buffer * src/read_config_grammar.y (T_FULLDIR): Removed gbl_buffer usage 2004-03-12 Alvaro Lopez Ortega * bench: Added file descriptor number limitation. 2004-03-11 Alvaro Lopez Ortega * src/handler_cgi.c (cherokee_handler_cgi_init): Better error reporting * configure.in: Really stupid bug fixed: s/echo -e/echo -n/ It was counting the new line character as version string. 2004-03-10 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_move_to_begin): Bugfix * src/socket.c (cherokee_socket_read): Better error checking * src/header.c (cherokee_header_parse): Header endding calculation fix. * src/server.c: FreeBSD compilation problem. Fixed by Petr Holub hopet@ics.muni.cz * src/connection.c (cherokee_connection_clean): Fixed pipelining bug. It was failing with FireFox 0.8 (with the network.http.pipelining parameter actived) * src/fdpoll.h, src/fdpoll.c: Droped out get_fd_limit(). Added new parameter to the _new method. * src/server.c (cherokee_server_init): Threads init change to set a file descriptors number limit per each * src/handler_mono.c (cherokee_handler_mono_init): Better error reporting when the handler can not contact xsp server 2004-03-09 Alvaro Lopez Ortega * configure.in, src/configure.in : Version management improvement. * src/module_loader.c: Better error reporting on module loading fails. * src/validator_htpasswd.c: Added crypt_r emulation function for multithread systems that don't support it (like Solaris). * src/header.c (cherokee_header_get_number, cherokee_header_foreach): Implemented. * src/validator_htpasswd.c (validate_crypt): Little fix in crypt_r usage. It was accessing a memory area in the heap that maybe could be droped out. * configure.in: Fixed compilation bug arround -D_XOPEN_SOURCE=500 parameter. * Released 0.4.13 * src/fdpoll.c: Better error reporting from epoll functions * src/server.c: Droped out add_socket_to_thread_fdpolls. With the new polling method it is not needed. Reported by Yusuf Goolamabbas . 2004-03-08 Alvaro Lopez Ortega * configure.in: New crypt_r detection: -D_GNU_SOURCE * src/connection.c (send_buffer_unsafe): Error handling fix. * src/validator_htpasswd.c (validate_crypt): Empty user fix. * src/server.c (cherokee_server_init): chroot bug fixed. Reported by Haas Wernfried . * src/socket.c: Added filio.h include * src/connection.c, src/connection.h, src/header.c, src/thread.c, src/thread.h: Finished the pipelining support. * configure.in: Some places was using "$with_threads" instead "$with_phtread". * src/header.c (cherokee_header_parse): Pipelined header fix 2004-03-07 Alvaro Lopez Ortega * src/handler_file.c (cherokee_handler_file_init): It should not use mmap() content if it will use an encoder. * src/read_config_grammar.y: Fixed bug reading encoders related information. * src/validator_htpasswd.c: Fixed authentication bug. Reported by Haas Wernfried . 2004-03-06 Hiroshi Yamashita * src/access.c, src/connection.c, mmap.c, src/handler_file.c, src/server.c: Compilation fixes for FreeBSD * src/fdpoll.h, src/fdpoll.c: Added support for kqueue() 2004-03-05 Yusuf Goolamabbas * bench/main.c (main): Parsing parameters bugfix. 2004-03-04 Alvaro Lopez Ortega * src/header.c (cherokee_header_get_length): Added new method * Released 0.4.12 * src/thread.c, src/connection.c: Fixed bug. It was only doing one keepalive connection. Now it does MAX_KEEPALIVE. * src/common.h: Fixed inclusion of stdint.h It didn't compile in Solaris 9. Fixed by Iván Chavero. 2004-03-03 Alvaro Lopez Ortega * configure.in: Switch threading support. Now, it enabled by default. * src/Makefile.am (libcherokee_la_LIBADD): Removed CRYP_LIBS * src/mime.c (cherokee_mime_get): Warning fixed 2004-03-02 Alvaro Lopez Ortega * src/handler_mono.c: More code arround the Mono-Cherokee integration. * src/read_config_grammar.y: Added new handler property "socket" for the ASPX (Mono) handler. * src/header.c, src/header.h (cherokee_header_copy_method, cherokee_header_copy_version): Added new methods. 2004-03-01 Alvaro Lopez Ortega * src/handler_mono.c, src/handler_mono.h: Added new handler 2004-02-29 Alvaro Lopez Ortega * 0.4.11 released * bench/url_grammar.y, bench/url_grammar.l, bench/bench.c, bench/Makefile.am: Added support for reading URL files. * src/common.h: Added stdind.h include by default * src/http.h: Added http_put enum entry * bench/request.c (cherokee_bench_request_build_string): Added new method * bench/url.c (cherokee_url_build_string): Added new method 2004-02-27 Alvaro Lopez Ortega * bench/.cvsignore: Added url_* from lex & bison * bench/bench.c: It uses the new class "request" instead the "url" one. "url" now contained in "request". * bench/request.c, bench/request.h: Added new class * src/common.h: Added new type cherokee_boolean_t 2004-02-26 Alvaro Lopez Ortega * debian/rules, debian/control: Added new package cherokee-bench * debian/rules: Added --enable-pthreads 2004-02-25 Alvaro Lopez Ortega * bench/info.c, bench.h: New class * bench/bench.c, bench/bench.h, bench/main.c: Big clean up. * bench/url.h, bench/url.c: Add port URL class * bench/main.c, bench/bench.h, bench/bench.c: Remove port form these classes. 2004-02-23 Alvaro Lopez Ortega * bench, bench/bench.c, bench/bench.h, bench/cherokee-bench, bench/connection.c, bench/connection.h, bench/main.c, bench/thread.c, bench/thread.h: Added new benchmarking utility. This is the initial version. 2004-02-01 Alvaro Lopez Ortega * src/header.c, src/header.h, src/http.h, src/socket.c, src/socket.h: Code clean up for better support of TLS. 2004-02-05 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_recv): Rewritten. It is faster and cleaner than the previous version (uses the new cherokee_buffer_read_from_fd function). * src/buffer.c (cherokee_buffer_multiply): Add new method * src/buffer.c (cherokee_buffer_read_from_fd): New method 2004-01-31 Alvaro Lopez Ortega * src/handler_file.c, src/mime.c, src/mime.h, src/mime_grammar.y: Changed property mime_name of the mime entry class from a char * to a cherokee_buffer_t * to know the length in handler_file and copy the string faster. * mime.conf.sample: Added new xhtml and openoffice.org mime types 2004-01-30 Alvaro Lopez Ortega * debian/rules: Updated mime. Added cherokee-config.1 to man pages installation. * src/mime_scanner.l, mime_grammar.y, src/Makefile.am, src/common.h, src/handler_file.c, src/handler_file.h, icons_grammar.y, src/icons_scanner.l, src/mime.c, src/mime.h, read_config_grammar.y, src/server.c, src/server.h, Makefile.am, mime.conf.sample: Added new mime configuration system. * Cherokee 0.4.10 released 2004-01-29 Alvaro Lopez Ortega * configure.in: epoll() detection rewritten There was a problem reported by Yusuf Goolamabbas. 2004-01-28 Alvaro Lopez Ortega * Cherokee 0.4.9 released 2004-01-27 Alvaro Lopez Ortega * configure.in: Removed check for poll_emu * src/fdpoll.c: Added support for select() * src/poll_emu.c, src/poll_emu.h: Droped out! * debian/copyright (Copyright): Removed poll_emu license. 2004-01-25 Alvaro Lopez Ortega * Cherokee 0.4.8 released 2004-01-24 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_send_response_page_hardcoded): Fixed crosss site scripting bug. Bug #29: http://bugs.alobbs.com/29 * src/buffer.c, src/buffer.h, src/connection.c, src/fdpoll.c, src/fdpoll.h, src/server.c: Some work to add select() to fdpoll. 2004-01-22 Alvaro Lopez Ortega * src/server.c (print_banner): Added the polling method to the banner. * src/fdpoll.c, src/fdpoll.h: Added get_method method. 2004-01-20 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_build_header): Fixed non-200 type responses. 2004-01-20 Ramon Pons Vivanco * Cherokee 0.4.7 released 2004-01-20 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_send_header_and_mmaped): Fixed partial content management. 2004-01-19 Alvaro Lopez Ortega * src/access.c, src/common.c, src/connection.c, src/connection.h, src/handler_server_info.c, src/handler_table_entry.h, src/header.c, src/icons.c, src/icons.h, src/log.c, src/mmap.c, src/module_loader.c, src/module_loader.h, src/read_config_grammar.y, src/server.c, src/server.h, src/socket.c, src/thread.c: Clean up to avoid compilation warnings. * src/common.c: Dropped vsyslog() usage. * src/server.c (initialize_server_socket6): Moved setsockopt() calls to set_server_socket_opts() function. 2004-01-18 Alvaro Lopez Ortega * src/handler_file.c (cherokee_handler_file_add_headers): Switched from two call to cherokee_buffer_add() to one to cherokee_buffer_add_va() 2004-01-16 Alvaro Lopez Ortega * src/handler_file.c (cherokee_handler_file_init): Fixed mmaped content problem. 2004-01-14 Alvaro Lopez Ortega * src/thread.c: Big changes to improve multithread mode. * src/thread.c: (set_sigpipe): Added SIGBUS * src/server.c (print_banner): Fixed banner * configure.in: Added check for poll.h 2004-01-13 Alvaro Lopez Ortega * src/fdpoll.c (fdpoll_poll_new): Clean ups 2004-01-10 Alvaro Lopez Ortega * src/thread.c, src/connection.c: Fixed EAGAIN error management as result of read() 2004-01-08 Alvaro Lopez Ortega * src/mmap.c: Now, it's thread-safe. * src/mmap.h, src/mmap.c: Fixed function prototipes that did not return ret_t. * src/common.h: Added CHEROKEE_RWLOCK_* macros. 2004-01-08 Ayose Cazorla León * src/handler_cgi.c: Fixed processes. 2004-01-07 Alvaro Lopez Ortega * src/mmap.h, src/mmap.c (cherokee_mmap_init, cherokee_mmap_get_default): Added new methods. 2004-01-04 Alvaro Lopez Ortega * src/common.h (CHEROKEE_MUTEX_TRY_LOCK): Added new macro. * src/connection.c (cherokee_connection_open_request): Fixed keep-alive management. * src/header.c (parse_first_line): Fixed bug in protocolor version detection code. * src/Makefile.am: Fixed PAM library usage * src/handler_file.c (cherokee_handler_file_init): Mime fix. * src/mime.c (cherokee_mime_init_with_file): Added a better error checking. * configure.in: Some clean up. 2004-01-03 Alvaro Lopez Ortega * configure.in: Fixed bug in module static compilation. Added code for drop out modules that will not be compiled. * src/access.c, src/buffer.c, src/common.h, src/connection.c, src/connection.h, src/fdpoll.c, src/header.c, src/logger_ncsa.c, src/logger_w3c.c, src/module_loader.c, src/read_config_grammar.y, src/read_config_scanner.l, src/server.c, src/server.h, src/socket.c, src/socket.h, src/thread.c, src/thread.h: Lot of changes to improve threaded mode. * src/read_config_grammar.y (thread_num): Droped out #ifdef HAVE_PTHREAD * src/access.c (parse_netmask): Fixed /128 mask. * src/header.c (cherokee_header_parse): Fixed bug: it fails is HEADER_INTERNAL_DEBUG was not defined previously. * src/validator_htpasswd.c: Added MD5-digest passwords support. * src/logger_w3c.c (cherokee_logger_w3c_write_string): Fixed bad use of syslog() function that could compromise the server. Reported by Matthew Murphy 2004-01-02 Alvaro Lopez Ortega * src/read_config_grammar.y (ip_list): Added parsing of "Allow from" sentences inside directory configuration. 2004-01-01 Alvaro Lopez Ortega * src/handler_cgi.c (cherokee_handler_cgi_init): Change the current directory to to the program's own directory. * src/read_config_scanner.l: Added rule to parse IPv6 addresses. * src/access.c, src/access.h, src/buffer.c, src/buffer.h, src/cherokee.h, src/cherokee_modules.c, src/common.c, src/common.h, src/connection.c, src/connection.h, src/encoder.c, src/encoder.h, src/encoder_fixer.c, src/encoder_fixer.h, src/encoder_gzip.c, src/encoder_gzip.h, src/encoder_table.c, src/encoder_table.h, src/fdpoll.c, src/fdpoll.h, src/handler.c, src/handler.h, src/handler_cgi.c, src/handler_cgi.h, src/handler_common.c, src/handler_common.h, src/handler_dirlist.c, src/handler_dirlist.h, src/handler_file.c, src/handler_file.h, src/handler_gnomevfs.c, src/handler_gnomevfs.h, src/handler_nn.c, src/handler_nn.h, src/handler_php4.c, src/handler_php4.h, src/handler_phpcgi.c, src/handler_phpcgi.h, src/handler_redir.c, src/handler_redir.h, src/handler_remote_control.c, src/handler_remote_control.h, src/handler_server_info.c, src/handler_server_info.h, src/handler_table.c, src/handler_table.h, src/handler_table_entry.c, src/handler_table_entry.h, src/header.c, src/header.h, src/http.h, src/icons.c, src/icons.h, src/list_ext.c, src/list_ext.h, src/log.c, src/log.h, src/logger.c, src/logger.h, src/logger_ncsa.c, src/logger_ncsa.h, src/logger_table.c, src/logger_table.h, src/logger_w3c.c, src/logger_w3c.h, src/main.c, src/match.c, src/match.h, src/matching_list.c, src/matching_list.h, src/mime.c, src/mime.h, src/mmap.c, src/mmap.h, src/module.c, src/module.h, src/module_loader.c, src/module_loader.h, src/ncpus.h, src/server.c, src/server.h, src/socket.c, src/socket.h, src/table.c, src/table.h, src/thread.c, src/thread.h, src/validator.c, src/validator.h, src/validator_htpasswd.c, src/validator_htpasswd., src/validator_pam.c, src/validator_pam.h, src/validator_plain.c, src/validator_plain.h, src/virtual_server.c, src/virtual_server.h: Update copyright notice. * src/access.c (cherokee_access_ip_match): Added initial version of access class for filtering based in IP addresses. 2003-12-31 Ramon Pons Vivanco * Cherokee 0.4.6-20031231 released 2003-12-30 Alvaro Lopez Ortega * src/socket.h: Added two new macros: SOCKET_ADDR_IPv4, SOCKET_ADDR_IPv6 2003-12-29 Alvaro Lopez Ortega * src/handler_common.c (common_init): Added dependency initialization of the phpcgi module. * src/handler_phpcgi.c (phpcgi_init): Added security check for the PHP interpreter executable. 2003-12-28 Alvaro Lopez Ortega * src/md5.h: Added config.h 2003-12-27 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_encode_md5): Renamed to cherokee_buffer_encode_md5 2003-12-26 Alvaro Lopez Ortega * src/connection.c: Fixed DoS problem with POST requests. Reported by vnull@pcnet.com.pl. 2003-12-25 Alvaro Lopez Ortega * cherokee.conf.sample.in: Added a /remote directory which uses the remote_control handler. 2003-12-25 Ramon Pons Vivanco * Cherokee 0.4.6-20031225 released 2003-12-21 Alvaro Lopez Ortega * src/handler_server_info.c (add_data_sent_row): It now uses the new method get_total_traffic. * src/server.c (cherokee_server_get_total_traffic): Added new method. * src/header.c (cherokee_header_get_arguments): Bug fix. It was getting just the first argument. * src/handler_server_info.c (cherokee_handler_server_info_add_headers): changed cherokee_buffer_add_va -> cherokee_buffer_add 2003-12-20 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_send_header): Added no-cache headers in headers of error pages. 2003-12-18 Alvaro Lopez Ortega * configure.in: Removed phpsite handler and added remote_control one. * src/server.c, src/server.h (cherokee_server_get_reusable_conns, cherokee_server_get_active_conns): Add new methods. * src/handler_common.c (cherokee_handler_common_new): There was a problem when it get a request of a directory and it contains a index.php (included in DirectoryIndex conf entry) that should be executed. Fixed. * src/read_config_grammar.y (directoryindex): It was storing the list of index files inverted. Fixed. * src/list_ext.c, src/list_ext.h (cherokee_list_add_tail): Added new function. * src/header.c (HEADER_INTERNAL_CHECK): Verbose output * cherokee.conf.sample.in: Added index.php to the default DirectoryIndex tag. * cherokee-config.1: Added to CVS. 2003-12-14 Alvaro Lopez Ortega * cherokee-config.1, Makefile.am (man_MANS): Added new manual page to be Debian policy compliant. :-p 2003-12-13 Alvaro Lopez Ortega * src/handler_server_info.c (PAGE_HEADER): Fixed space after CRLF\ * debian/copyright: Changed the licence of the MD5 code. * src/md5.h, src/md5.c, configure.in, src/buffer.c: Changed the RSA Data Security Inc. copyrighted code by a really free one. 2003-12-11 Alvaro Lopez Ortega * src/thread.c (process_active_connections): Fixed managing for HTTP 300 connections. It was running like it was a 200 connection. 2003-12-10 Alvaro Lopez Ortega * src/handler_file.c (check_cached): "If-None-Match" processing fixes. * src/read_config_grammar.y (userdir): Fixed error reporting when Cherokee can not load a handler. * src/thread.c (process_active_connections): Bug fixed. It was logging the HTTP 300 responses as error messages. * src/connection.c (cherokee_connection_parse_get_header): Droped out. It was using the old header processing method. * src/handler_file.c (check_cached): Change to use the new header processing method. 2003-12-10 Ramon Pons Vivanco * Cherokee 0.4.6-20031210 released 2003-12-10 Alvaro Lopez Ortega * cherokee.m4: Updated from 0.4.2 to 0.4.5 * src/handler_gnomevfs.c (cherokee_handler_gnomevfs_new): Fixed GNOME-VFS handler compilation 2003-12-09 Alvaro Lopez Ortega * src/header.c (cherokee_header_get_arguments): It uses strsep() instead of strtok() to avoid the silly on-by-one bug of strtok: ==25427== Invalid read of size 1 ==25427== at 0x402F349A: strtok (in /lib/libc-2.3.2.so) * src/buffer.c (cherokee_buffer_move_to_begin): Changed memcpy by memmove to avoid possible memory overlaping. * src/header.c (HEADER_INTERNAL_CHECK): Added new check to ensure the sanity of the information stored in the object * src/handler_cgi.c, src/header.c, src/header.h, src/thread.c: Fixed memory problem. The header class was storing pointers to the content of a buffer that could be reallocated. 2003-12-08 Alvaro Lopez Ortega * src/connection.c: cherokee_connection_parse_args() function now uses the ::get_arguments() method. Droped out the previous implementation. * src/header.c (cherokee_header_get_arguments): Added new method * src/handler_cgi.c (_set_envs_cgi): Added HTTP_USER_AGENT enviroment variable. 2003-12-07 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_clean): Fixed virtual server managing problem with Keep-alive connections. 2003-12-06 Alvaro Lopez Ortega * src/handler_server_info.c: Added a new "General Information" section. * src/thread.c: It sets the server and the default virtual server by default to all connections for security reasons. * src/connection.h, src/connection.c, src/virtual_server.c, src/virtual_server.h: It stores the received and sent information per virtual host instead of just the tx. 2003-12-05 Alvaro Lopez Ortega * src/handler_common.c (cherokee_handler_common_new): Bugfix handling PHP index files. 2003-12-04 Ramon Pons Vivanco * Cherokee 0.4.6-20031204 released 2003-12-03 Alvaro Lopez Ortega * src/read_config_grammar.y: improved error reporting and some clean ups * src/connection.c, src/virtual_server.c, src/virtual_server.h: Added data sent counter per virtual host. * src/handler_server_info.c: Added data sent row. It shows the data amount with the right suffix (Kb, Mb, Gb, Tb, ..) 2003-12-02 Alvaro Lopez Ortega * configure.in: Added check for spread library: http://www.spread.org * src/handler_server_info.c, src/server.c, srv/server.h: Added uptime support. * configure.in: Static / Dynamic module compilation improved. Some clean ups and new parameter --enable-static-module=all to compile statically all the modules. * src/handler_server_info.c, src/logo.inc: The handler server_info can return a GIF image with the logo. * src/handler_server_info.c: Added icons table. * contrib/bin2buffer.py, contrib/Makefile.am: Added a mini-utility to encode binary content inside a Cherokee buffer. 2003-12-01 Alvaro Lopez Ortega * src/handler_server_info.c: Added mew handler to get information about the server. * src/read_config_grammar.y (thread_number): Fixed problem with the thread number. I was an error when Cherokee was compiled wihtout pthread library support. * src/connection.c (cherokee_connection_get_request): Remove "./" strings from the query. * src/buffer.c (cherokee_buffer_decode): Replace null bytes (%00) with spaces to prevents attacks. * src/buffer.c (cherokee_buffer_remove_string): Added new method. * src/common.c (PRINT_DEBUG): Added new debugging function 2003-11-30 Alvaro Lopez Ortega * configure.in: Updated GNUTLS depencente to version 0.9.99. * src/Makefile.am: Fixed GNUTLS compilation support * src/buffer.c (cherokee_buffer_remove_dups): Added new method * src/connection.c, src/header.c, src/http.h, src/thread.c: Added OPTIONS method support. * src/connection.c (delete_double_slash): Fixed potential security problem with corrupted URLs. 2003-11-29 Alvaro Lopez Ortega * validator_plain.h, validator_plain.c, cherokee.conf.sample, src/Makefile.am, configure.in: Added new Plain Text validator module. * src/encoder_gzip.c, src/connection.c, src/encoder.h, src/encoder_gzip.h, src/handler.h, src/handler_file.c, src/server.c, src/thread.c: Improvements in the GZip encoder. 2003-11-27 Alvaro Lopez Ortega * src/server.c (cherokee_server_new): Better error handling in TLS init. 2003-11-26 Alvaro Lopez Ortega * src/read_config_grammar.y, connection.c, server.c, server.h, thread.c, virtual_server.c, virtual_server.h: Added virtual servers aliases. Now, a virtual sever can has more than one domain server name. * src/connection.c (cherokee_connection_get_request): Fixed bug in the "Host" header parsing * src/buffer.c (cherokee_buffer_print_debug): Print a CRLF at the end of the block. 2003-11-25 Alvaro Lopez Ortega * src/encoder.c, src/connection.c, src/encoder.c, src/encoder.h: Fixed _init() method of the encoder class. * src/connection.c, src/connection.h: Added a new buffer to the connection structure to improve the performance of the encoders. cnt->encoder_buffer is reused in all the steps of a connection. 2003-11-24 Ayose Cazorla León * src/connection.c,http.h: Added http_moved_temporarily * CGI handler: POST added 2003-11-24 Alvaro Lopez Ortega * src/encoder_gzip.c: Some code clean-ups * src/handler_common.c (cherokee_handler_common_new): Added check to execute PHP code in the suffix is ".php" * configure.in, src/Makefile.am: Fixed problem for system with crypt() in the libcrypt library * src/connection.c, src/connection.h, src/header.c, src/header.h, src/thread.c: Added POST method support. 2003-11-23 Alvaro Lopez Ortega * src/connection.c (process_handler_complex_headers): Added "Status:" header support for accept status from CGI or PHP. (cherokee_connection_open_request): Fixed KeepAlive problem with CGIs. * src/connection.c, src/connection.h: Some query_string related clean ups. * src/handler_cgi.c (cherokee_handler_cgi_add_headers): Method rewritten. * src/header.c (cherokee_header_parse): Improved header parsing. 2003-11-23 Ayose Cazorla León * src/handler_cgi.c: Use the cherokee_header API for set SERVER_NAME a HTTP_COOKIE vars * src/handler_phpsite.{c,h}: Very basic handler to combine the common handler and phpcgi * configure.in, src/Makefile.am: Compile phpsite handler * src/handler_cgi.c, src/header.c: Some fixes to the CGI * src/buffer.c (cherokee_buffer_make_empty): Bugfix 2003-11-22 Alvaro Lopez Ortega * src/handler_cgi.h, src/handler_cgi.c: Added initial version of PHP handler (forking as CGI). 2003-11-19 Alvaro Lopez Ortega , Christopher Pruden * src/Makefile.am, src/buffer.c, src/buffer.h, src/cherokee_headers.c, src/connection.c, src/connection.h, src/handler_cgi.c, src/handler_file.c, src/header.c, src/header.h, src/http.h, src/logger_ncsa.c, src/logger_w3c.c, src/thread.c: Added new header parsing method. 2003-11-19 Ramon Pons Vivanco * Cherokee 0.4.6-20031119 released 2003-11-16 William Jon McCann * src/Makefile.am: Fixed build on Fedora Linux. 2003-11-14 Alvaro Lopez Ortega , Ramon Pons , Juan Badia * src/read_config_grammar.y, src/server.c: Added dynamic timeout support in the connection headers. * src/server.c (look_for_new_connection): Optimized connection time-out. It uses the server bogo_now entry instead of a time() system call. * src/common.h: Changed "#ifdef HAVE_PTHREADS" to "#ifdef HAVE_PTHREAD". It fixes lot of random crashes and race conditions. 2003-11-11 Ramon Pons Vivanco * icons/*.png: Added 5 new icons. * icons.conf.sample: Added the new icons to the sample configuration file. 2003-11-11 Christopher Pruden * src/buffer.c (cherokee_buffer_decode): Fixed segmentation fault on empty buffer. 2003-11-08 Alvaro Lopez Ortega * src/connection.c (get_uri): Bugfix in query_string processing 2003-11-01 Alvaro Lopez Ortega * src/read_config_grammar.y (maybe_auth_option_params), src/module_loader.c: Error reporting clean up. * src/thread.c (thread_routine), src/main.c: Fixed concurrency problem. Now, each thread catch the broken pipe signal to avoid randomly crashes if Cherokee run in threaded mode. * src/sha1.c: Fixed a byte order problem * src/common.h: Added byte order macros * src/endian_fix.h, src/Makefile.am: Removed * configure.in: Added check for endianness * src/thread.c (cherokee_thread_free): Fixed race condition. 2003-10-30 Alvaro Lopez Ortega * configure.in: Added support for GNU/Linux distributions with 2.6.0 kernels but without a libc with epoll() support. (Like Debian at this moment). Added condition to compile TLS/SSL: --dissable-tls 2003-10-29 Alvaro Lopez Ortega * src/connection.c (get_uri): Bug fixed. There was problems with some requests if it had complex referers. Reported by Thomas Seifert. 2003-10-28 Alvaro Lopez Ortega * src/server.c (cherokee_server_read_config_string): It'll show an error if cannot load the icons configuration file. Reported by Thomas Seifert. (look_for_new_connection): Bugfix accepting new connections. * src/Makefile.am, src/buffer.c, src/connection.c, src/handler_cgi.c, src/handler_cgi.h, src/read_config_grammar.y, src/read_config_scanner.l, src/server.c, src/server.h, src/socket.c, src/socket.h, src/virtual_server.c, src/virtual_server.h, configure.in: Lot of changes to add TLS support. 2003-10-27 Alvaro Lopez Ortega * cherokee.conf.sample.in, src/read_config_grammar.y, src/read_config_scenner.l: Added "SSLCAListFile" configuration key entry. * src/server.h: port and port_ssl are now unsigned short instead int. 2003-10-26 Alvaro Lopez Ortega * configure.in, openssl.m4: Added check for OpenSSL. Removed liblzo check. Check for GNU TLS commented. * src/buffer.c (cherokee_buffer_add): Added sanity check * src/handler_cgi.c, src/connection.c: CGI execution improvements. * cherokee.conf.sample.in: Commented ErrorDocument. It's unset by default. * src/validator_htpasswd.c (cherokee_validator_htpasswd_check): Client should not download the password file. 2003-10-25 Alvaro Lopez Ortega * src/server.c: Added "Date" header. * src/handler_file.c (check_cached): Added support for cached contents based in Etag ("If-None-Match") and in the time ("If-Modified-Since"). * src/tdate_parse.c, src/tdate_parse.h, src/Makefile.am: Added new files. * src/handler_file.c (cherokee_handler_file_add_headers): Added "ETag" and "Last-Modified" headers support. * src/buffer.c (cherokee_buffer_encode_hex): Added cherokee_buffer_encode_hex() function. 2003-10-24 Alvaro Lopez Ortega * configure.in: Added check for crypt_r() 2003-10-23 Alvaro Lopez Ortega * pam.d_cherokee, Makefile.am (install-data-local): Added PAM configuration file. * cherokee.conf.sample.in: Fixed bug related to icons.conf installation place. Reported by Ayose. * src/validator_htpasswd.h, src/validator_htpasswd.c, src/Makefile.am, src/connection.c, src/read_config_grammar.y, src/read_config_scanner.l: Added new validator for htpasswd files. * configure.in: Added crypt() check. * src/read_config_scanner.l: T_QSTRING returns unquoted. * src/connection.c, src/connection.h, src/http.h, src/thread.c, src/validator.c, src/validator.h: Added authentication support. * src/Makefile.am, src/buffer.h, src/handler.c, src/handler_file.c, src/handler_file.h, src/logger.c: Clean ups. * src/validator_pam.c, src/validator_pam.h: Added new validator based in PAM library. * configure.in: Added check for installed old versions 2003-10-22 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_decode_base64): Added new function to decode Base64. * src/buffer.c (cherokee_buffer_encode_md5): Added new function to encode MD5. * src/icons.c, src/icons.h: cherokee_icons_read_file() renamed to cherokee_icons_read_config_file(). Added a new function cherokee_icons_read_config_string() to support configuration from external programs. 2003-10-21 Alvaro Lopez Ortega * src/icons.c, src/icons.h, src/icons_grammar.y, src/icons_scanner.l, icons.conf.sample, src/handler_dirlist.c: Added new icons managment system. 2003-10-20 Alvaro Lopez Ortega * icons/image.png, icons/back.png: Added new icons. 2003-10-19 Alvaro Lopez Ortega * src/table.c (cherokee_table_while): Added new function. 2003-10-18 Alvaro Lopez Ortega * Makefile.am: Added src/match.h, src/match.c * src/read_config_grammar.y, src/read_config_scanner.l: Added Icons configuration entry. 2003-10-18 Juan Cespedes * src/match.h, src/match.c: Added match() function. 2003-10-17 Alvaro Lopez Ortega * src/server.c, src/server.h: server->mimetypes_file clean up. * Makefile.am, icons.conf.sample: Added new configuration file. 2003-10-16 Alvaro Lopez Ortega * debian/*: Added Debian GNU/Linux packaging information. * src/Makefile.mingw, src/libc_internal, src/libc_interface.h, src/libc_interface.c: Added initial Win32 support. 2003-10-15 Alvaro Lopez Ortega * configure.in: Added checks for syslog.h, sys/socket.h * src/connection.c (cherokee_connection_build_local_directory_userdir): Fixed bug with request like: http://server/~user * src/handler_dirlist.c (cherokee_handler_dirlist_init): Fixed redirect with userdirs. * src/buffer.c (cherokee_buffer_move_to_begin): Added check for ensure position is great than zero. * src/buffer.c (cherokee_buffer_add_buffer): Added new function. * src/connection.c, src/connection.h, src/handler.c, src/handler.h, src/handler_dirlist.c, src/handler_nn.c, src/handler_redir.c, src/module_loader.c, src/thread.c: Droped out handler->redirect, instead it uses conn->redirect. 2003-10-14 Alvaro Lopez Ortega * src/Makefile.am (libcherokee_nn_la_LIBADD): Added libcherokee_redir as dependence of libcherokee_nn 2003-10-11 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_build_local_directory_userdir): Fixed redirection to correct URL. Eg: ~alo/dir/dir2 -> ~alo/dir/dir2 2003-10-10 Alvaro Lopez Ortega * src/module_loader.c, src/module_loader.h, src/validator_pam.c, src/validator_pam.h, src/handler_table.h, src/handler_table_entry.c, src/handler_table_entry.h, src/handler_table.c, src/cherokee_modules.c, src/cherokee_add_static_module.sh: New added files. * configure.in, src/Makefile.am, src/buffer.c, src/connection.c, src/connection.h, src/encoder_gzip.c, src/encoder_gzip.h, src/encoder_table.c, src/encoder_table.h, src/fdpoll.c, src/handler_cgi.c, src/handler_common.c, src/handler_dirlist.c, src/handler_file.c, src/handler_gnomevfs.c, src/handler_nn.c, src/handler_redir.c, src/logger_ncsa.c, src/logger_table.c, src/logger_table.h, src/logger_w3c.c, src/module.h, src/read_config_grammar.y, src/read_config_scanner.l, src/server.c, src/server.h, src/socket.h, src/thread.c, src/thread.h, src/validator.c, src/virtual_server.c, src/virtual_server.h: Integration with the new module system. * src/library.c, src/library.h, src/static_encoders.h.orig, src/static_handlers.h.orig, src/static_loggers.h.orig, src/plugin_table.c, src/plugin_table.h, src/plugin_table_entry.c, src/plugin_table_entry.h: Removed files. 2003-10-08 Alvaro Lopez Ortega * configure.in: Added check for PAM 2003-10-08 Juan Cespedes * src/buffer.c (cherokee_buffer_add): Fixed bug: Off-by-one. 2003-10-07 Alvaro Lopez Ortega * src/module.c, src/validator.h, src/validator.c: Added initial version. * src/common.h: Added deny to ret_t. 2003-10-06 Alvaro Lopez Ortega * src/module.h: Added. 2003-10-05 Stuart Herbert * Makefile.am: Fixed a couple of problems. 2003-10-02 Silvio Ventres * src/fdpoll.c, src/thread.c: Fixed epoll() support. On socket error, it'll close the connection ASAP. 2003-09-28 Alvaro Lopez Ortega * src/thread.c (process_active_connections): Fixed bug #21 http://bugs.alobbs.com/21. 2003-09-10 Pablo Neira * src/thread.c (process_active_connections): Bug fixed. On security check failure, the connections wasn't a virtual host reference. Now, it uses the default one. 2003-09-09 Alvaro Lopez Ortega * src/thread.c (process_active_connections): Fixed bug #19 http://bugs.alobbs.com/19 * src/read_config_grammar.y: Moved logging entry from "server" to "virtual server" entry. 2003-09-24 Alvaro Lopez Ortega * Removed stolen code from SCO Unix System V 2003-08-21 Alvaro Lopez Ortega * src/server.c (cherokee_server_read_config_file): Now, it stores the last configuration filename. Maybe the server will need it if receive a HUP signal. (cherokee_server_read_config_file): Fixed reloading. There was a bug reusing a Yacc+Lex parser. 2003-08-20 Ramon Pons Vivanco * Cherokee 0.4.6-030820 release 2003-08-19 Alvaro Lopez Ortega * src/main.c (process_parameters): Added argument support * src/read_config_grammar.y (T_FULLDIR): Fixed compilation w/o GNU/TLS library * src/thread.c, src/connection.c, src/virtual_server.c: Fixed "ErrorDocument XXX http://url" redirection feature. * src/connection.c (send_buffer_unsafe): Improvement. If it was an error sending the buffer, it turns off the keepalive flag. 2003-08-18 Alvaro Lopez Ortega * cherokee.conf.sample.in, src/connection.c, src/connection.h, src/http.h, src/read_config_grammar.y, src/read_config_scanner.l, src/thread.c, src/virtual_server.c, src/virtual_server.h: Added "ErrorDocument" support. Custom error pages based on file content or redirections. * cherokee.conf.sample.in, src/connection.c, src/read_config_grammar.y, src/read_config_scanner.l, src/server.c, src/server.h, src/virtual_server.c: Added "MaxKeepAliveRequests" configuration parameter. 2003-08-17 Ramon Pons Vivanco * doc/SSL-howto.html: Added self signed certs script 2003-08-17 Alvaro Lopez Ortega * src/read_config_grammar.y, src/virtual_server.c, srv/virtual_server.h. src/read_config_scanner.l: cherokee.conf.sample.in: Some work arround the GNU/TLS support * doc/SSL-howto.html: Added u-Howto to manage SSL certs * src/server.c (cherokee_server_daemonize): Added new method 2003-08-16 Alvaro Lopez Ortega * configure.in: Added check for GNUTLS and liblzo: http://www.gnu.org/software/gnutls/ http://packages.debian.org/unstable/libdevel/liblzo-dev.html * src/connection.c (cherokee_connection_send_response_page), src/handler_dirlist.c (cherokee_handler_dirlist_step): Now uses the new cherokee_buffer_add_version function * src/buffer.c (cherokee_buffer_add_version): Added new method 2003-08-16 Ramon Pons Vivanco * Cherokee 0.4.6-030816 release 2003-08-16 Alvaro Lopez Ortega * src/handler_common.c (cherokee_handler_common_new): Fixed manage of the local directories * src/handler_dirlist.c (cherokee_handler_dirlist_new): Fixed incorrect initialization. * src/read_config_grammar.y (new_string_to_lowercase): Bugfix * configure.in, Makefile.am (EXTRA_DIST), cherokee.pc.in: Added pkg-config support * src/buffer.c (cherokee_buffer_read_file): Added new method to add the file content to a buffer. * src/table.c (cherokee_table_clean): Bugfix * src/library.c (cherokee_library_get): Added support for reloading a running enviroment * src/table.c (cherokee_table_clean): Bugfix * src/handler_dirlist.c (cherokee_handler_dirlist_step), src/read_config_grammar.y, src/read_config_scanner.l: Added new feature "HeaderFile" to handler_dirlist to insert a header file in the response page. 2003-08-15 Alvaro Lopez Ortega * src/handler_file.c (cherokee_handler_file_step): Fixed sendfile() bug on FreeBSD. Thanks to Pablo Neira. * aclocal.m4 (HAVE_PTHREAD): Removed SAMBA_SENDFILE function. Added sendfile.samba.m4 * etr_socket_nsl.m4: Added new func ETR_SOCKET_NSL http://ac-archive.sourceforge.net * doc/draft-coar-cgi-v11-03.txt: Added CGI/1.1 rev3 documentation * src/main.c (restart_server): Clean up * src/server.c (cherokee_server_add_directory_index): removed (cherokee_server_handle_HUP): Added new function * configure.in (HAVE_EPOLL): Bugfix * src/encoder_fixer.h, src/encoder_fixer.c, configure.in, src/Makefile.am: Encoder fixer droped out * src/server.c (cherokee_server_init), src/read_config_grammar.y, src/read_config_scanner.l: Added chroot * src/logger_w3c.c (cherokee_logger_w3c_init), src/logger_ncsa.c (cherokee_logger_ncsa_init): Set the close-on-exec flag to log file descriptors 2003-08-14 Alvaro Lopez Ortega * src/common.h: Fixed bug #12 * src/connection.c, src/connection.h, src/handler_dirlist.c, src/read_config_gramma.y, src/read_config_scanner.l, src/server.c, src/server.h, src/thread.c: Fixed bug #14 http://bugs.alobbs.com/14 2003-08-13 Alvaro Lopez Ortega * src/encoder_table.c (cherokee_encoder_table_get): Bugfix * src/encoder_fixer.h, src/encoder_fixer.c, configure.in, src/Makefile.am: Added new encoder module * configure.in: Added check for Tidy library: http://tidy.sourceforge.net 2003-08-12 Alvaro Lopez Ortega * src/mmap.c: Almost implemented. * src/fdpoll.c (fdpoll_epoll_set_mode): Implemented * src/handler_dirlist.c (cherokee_handler_dirlist_step): Added initial support for "Show Owner" (handler_dirlist) * table.h, table.c, ....: Added new func cherokee_table_get_val() and fixed old calls to cherokee_table_get() with the new function interface. 2003-08-11 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_parse_args): Added new method to process the QueryString and to build the argument table of the connection. * src/endian_fix.h, md5.c, sha1.c: Fixed FreeBSD compilation problem. Pablo Neira & me. * src/connection.c: Some query_string code clean ups 2003-08-10 Alvaro Lopez Ortega * src/fdpoll.h, src/fdpoll.c, server.c: Added /dev/epoll support * configure.in: Added --disable-epoll option 2003-08-09 Alvaro Lopez Ortega * configure.in: Added check for FastCGI library. * src/handler_common.c (cherokee_handler_common_new), src/read_config_grammar.y, src/read_config_scanner.l: Added DirectoryIndex support. Based on the patch submited by Pablo Neira * src/common.h, src/common.c: Added apr_strfsize() function from Apache2 to improve handler_dirlist output. * src/list_ext.h, src/list_ext.c: Added new helper functions to manage list easier. * src/server.c (cherokee_server_free): Virtual servers table deallocation and clean done. * src/handler_dirlist.c (cherokee_handler_dirlist_step): Added time and size support. To set up it, "Show size" and "Show date" in cherokee.conf 2003-08-08 Alvaro Lopez Ortega * src/read_config_grammar.y, src/read_config_scanner.l, src/handler_dirlisrt.h, src/handler_dirlist.c: Added parameters: bgcolor, text, link, alink, vlink and background. * configure.in: Added check for header sys/epoll.h and libepoll.a and epoll() 2003-08-06 Alvaro Lopez Ortega * src/connection.c: Fixed bug #18 2003-08-05 Alvaro Lopez Ortega * src/connection.c: Fixed bug #16 2003-07-29 Alvaro Lopez Ortega * read_config_grammar.y, read_config_scanner.l, server.c, server.h: Added a parameter to (de)active the IPv6 support 2003-07-26 Alvaro Lopez Ortega * src/server.c (look_for_new_connection): Bugfix 2003-07-25 Alvaro Lopez Ortega * connection.c, encoder_gzip.c, encoder_table.c, handler_cgi.c, handler_file.c, library.c, library.h, logger.h, logger_ncsa.c, logger_table.c, logger_w3c.c, mmap.c, plugin_table.c, server.c, thread.c: Code clean up to compile with "-Wall" * src/plugin_table.c (load_plugin_library): Type warning fixed * src/connection.c (delete_double_slash): Fixed bug #17 (cherokee_connection_new): Removed two unused globals 2003-07-20 Alvaro Lopez Ortega * src/plugin_table.c (cherokee_plugin_table_get): Little bugfix 2003-07-20 Ayose Cazorla León * cherokee.conf.sample.in: Directory entry for cgi-bin * configure.in, src/Makefile.am: Added libcherokee_cgi * src/connection.c,h: Added query_string * src/handler_cgi.c,h: The CGI handler for Cherokee 2003-07-14 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_set_cork): Replaced SOL_TCP by IPPROTO_TCP * configure.in: Added check for AC_FUNC_MMAP Added check for TCP CORK option. Added --enable-gnomevfs, the GNOME-VFS handler won't compile by default. Added check for stat64 2003-07-13 Alvaro Lopez Ortega * src/handler_file.c, src/handler_file.h, thread.c: Added sendfile() support. * configure.in, acinclude.m4: Added check for sendfile(). Copy-Paste from the Samba configure.in ;-) 2003-07-12 Alvaro Lopez Ortega * configure.in: Added check for pthread_rwlock_t * acinclude.m4: Added ACX_PTHREAD macro * src/fdpoll.h, src/fdpoll.c, src/server.c, src/server.h, src/thread.c, src/thread.h: Thread support is working now 2003-07-10 Alvaro Lopez Ortega * src/thread.c, src/thread.h: Added initial version * src/read_config_grammar.y (T_THREAD_NUM): Added "ThreadNumber" * src/handler_file.c (cherokee_handler_file_init): Code clean up * src/connection.h: Removed "handler_file.h" inclusion * src/Makefile.am (libcherokeeinclude_HEADERS): Added some forgoten header files 2003-07-09 Pablo Neira * src/connection.h: Patch for FreeBSD compilation 2003-07-08 Alvaro Lopez Ortega * configure.in: Added --enable-pthreads option * src/logger.c (cherokee_logger_write_string): Rewritten. * src/logger_w3c.c, src/logger_ncsa.c: It'll cut the string if it's too long and add a \n at the end. * src/logger_ncsa.c (cherokee_logger_ncsa_write_error): Bugfix working with long requests. * src/connection.c (cherokee_connection_send_header): Bugfix. It didn't include the connect-type header in the error replies. * src/handler_file.c (cherokee_handler_file_init): Fixed bug. It was reporting a error 404 (Not Found) instead 403 (Forbidden) in the request for file without reading permission. Reported by Pablo Neira. * src/connection.c (cherokee_connection_send_header): Fixed bug with some kind of corrupted requests. Reported by Pablo Neira :) * src/logger_ncsa.c (cherokee_logger_ncsa_write_error): Fixed little bug. 2003-07-07 Alvaro Lopez Ortega * configure.in: little bug * src/logger_w3c.c, src/logger_ncsa.c: Added syslog support 2003-07-06 Alvaro Lopez Ortega * src/common.h (CHEROKEE_TEMP): Added new macro 2003-07-04 Alvaro Lopez Ortega * Makefile.am: Fixed bug #15 2003-07-03 Alvaro Lopez Ortega * src/logger_w3c.[ch]: Added new W3C logger * src/logger.h, src/logger_ncsa.c, src/logger_ncsa.h: Added the new method: cherokee_logger_write_string(). Added the write_error() and write_string() to the NCSA logger. 2003-07-02 Pablo Neira * src/connection.c: Fixed FreeBSD 5.0 compilation 2003-07-02 Alvaro Lopez Ortega * src/logger.[hc], src/logger_ncsa.[hc]: Added write_access and write_error method and removed the old wirte one. 2003-07-01 Pablo Neira * cherokee.spec.in: Updated. It have been tested in Red Hat 7.2, 8.0 and Mandrake 9.1 2003-07-01 Alvaro Lopez Ortega * src/logger_table.[hc]: Added new class * src/Makefile.am, configure.in: Fixes for the modular loggers support * cherokee.conf.in, src/Makefile.am, src/encoder_table.c, src/logger_ncsa.c, src/read_config_grammar.y, src/server.c, src/server.h, src/static_loggers.h.orig, src/virtual_server.c, src/virtual_server.h: Work on loggers integration. 2003-06-30 Miguel Angel Ajo Pelayo * src/logger.c src/logger.h: files added for logger modules suport. * src/logger_NCSA_common.[ch]: NCSA logger module, based on changes by Pablo Neira * the above files are still not used, untested. 2003-06-30 Alvaro Lopez Ortega * src/Makefile.am, src/common.c, common.h, encoder_table.c, plugin_table.c, src/read_config_grammar.y: Integrated with the new class Library * src/library.c, src/library.h: Added new class for module loading * cherokee.conf.in, src/connection.c, src/encoder.c, src/encoder.h, src/encoder_table.c, src/encoder_table.h, src/matching_list.c, src/read_config_grammar.y: Added matching support in the encoders. The encoder+matching lists support were partially rewritten. 2003-06-29 Alvaro Lopez Ortega * src/read_config_scanner.l, src/read_config_grammar.y: Renamed read_config.l and read_config.y * configure.in: Added some checks * src/server.c (process_active_connections): Bugfix. Reported by rpons * src/handler_dirlist.c (cherokee_handler_dirlist_add_headers): Added header "Content-Type: text/html" to response header of the autogenerated pages. Reported by rpons. * src/connection.c (cherokee_connection_build_local_directory_userdir): Bugfix for userdir request that hasn't directory. This requests are redirected to a slash-finished URL. Eg: http://www.alobbs.com/~alo => http://www.alobbs.com/~alo/ 2003-06-28 Alvaro Lopez Ortega * src/encoder_gzip.c (cherokee_encoder_gzip_encode): GZip encoder finished. * src/buffer.c (cherokee_buffer_prepend): Added new method (cherokee_buffer_print_debug): New methos of debugging 2003-06-27 Alvaro Lopez Ortega * doc/.cvsignore, doc/Makefile.am, doc/doxygen.cfg: Added doxygen * src/buffer.h: Added CRC32 method * crc32.h, crc32.c, src/Makefile.am: Added CRC32 code (from postgresql) 2003-06-18 Alvaro Lopez Ortega * src/connection.c, src/fdpoll.c, src/handler_dirlist.c, src/handler_file.c, src/handler_redir.c, src/matching_list.c, src/mime.c, src/plugin_table.c, src/plugin_table_entry.c, src/server.c, src/table.c: structures instance clean up. 2003-06-17 Alvaro Lopez Ortega * configure.in, icons/Makefile.am: Added icon directory * Makefile.am, configure.in, cherokee.conf, cherokee.conf.in: Removed cherokee.conf. Added the new cherokee.conf.in for manage the icon path at installation time * configure.in, doc/Makefile.am, doc/es/Makefile.am: Added the new documentation * src/read_config.y: Each directory needs a handler. Added a check for this * src/connection.c, src/read_config.y: Added DocumentRoot support inside of a Directory entry.. aka "Alias" support * src/common.h (CHEROKEE_NEW, CHEROKEE_NEW_STRUCT): New macro for object instance 2003-06-07 Alvaro Lopez Ortega * src/connection.c, src/connection.h, src/encoder.c, src/encoder.h, src/encoder_gzip.c, src/encoder_gzip.h, src/encoder_table.c, src/encoder_table.h, src/handler_file.c, src/read_config.y, src/server.c: GZip encoder work, and misc. (cherokee_connection_step): bugfix 2003-06-01 Alvaro Lopez Ortega * src/buffer.c (cherokee_buffer_move_to_begin): Now can set an empty string as result * src/connection.c (cherokee_connection_build_local_directory_userdir): Bugfix in the request buffer * src/server.c (process_active_connections): Bugfix in the "Host: " support 2003-05-31 Ramon Pons * src/read_config.y: Compilartion problem fixed 2003-05-31 Alvaro Lopez Ortega * src/server.c (process_active_connections): Bug in host management * src/read_config.y: Mostly rewritten * src/Makefile.am: Added static_encoders.h.orig 2003-05-25 Alvaro Lopez Ortega * src/encoder_table.[ch], src/Makefile.am, src/plugin_table, src/common.c, configure.in: More work on dynamic/static modules/encoders. 2003-05-23 Alvaro Lopez Ortega * src/read_config.[yl]: Added "encoder" token and rules * src/handler*.[hc]: Changed func_* by handler_func_* * src/connection.c (get_host): replaced strstr by strchr (get_uri): Added "Accept-Encoding: " detection. (cherokee_connection_parse_header): Keepalive detection optimized. * src/encoder_gzip.[ch]: Added initial version 2003-05-20 Alvaro Lopez Ortega * src/Makefile.am (libcherokee_gzip_la): Added new module * src/encode.[ch]: Added new files * configure.in: Added check for zlib 2003-05-11 Alvaro Lopez Ortega * src/handler_dirlist.c (cherokee_handler_dirlist_step): Added the "hide version" feature. 2003-05-10 Alvaro Lopez Ortega * src/server.c, src/connection.h, src/connection.c, src/handler.h, src/handler.c, src/handler_file.c, src/handler_dirlist.c, src/handler_redir.c, src/handler_nn.c, src/handler_php4.c: Connection has a reference to the server. Now the handlers can access to the server configuration. 2003-05-09 Alvaro Lopez Ortega * src/connection.c (get_uri): Security problem fixed. 2003-05-06 Alvaro Lopez Ortega * TODO: Updated 2003-05-05 Alvaro Lopez Ortega * src/Makefile.am: Bison and Flex fixes * configure.in: GnomeVFS checking fix * src/read_config.l, src/read_config.y, src/server.h, src/server.c: Add "hide version" feature. 2003-04-20 Alvaro Lopez Ortega * configure.in: pkg-config detection fixed * src/read_config.l: now the '\r' character is "new line" too * cherokee.conf: Comment out "User" and "Group" * configure.in: Added timezone check * src/log.c (cherokee_log), src/common.c (PRINT_ERROR), configure.in: Check for vsyslog to fix Cygwin compilation problems 2003-04-18 Alvaro Lopez Ortega * src/Makefile.am (CLEANFILES): Added files generated by Bison and Flex 2003-04-17 Alvaro Lopez Ortega * *.h: Changed __CHEROKEE2_ by__CHEROKEE_ 2003-04-16 Pablo Neira * src/handler_file.c (cherokee_handler_file_add_headers): changed "Content-type" by "Content-Type" * src/handler_file.c (cherokee_handler_file_init): get a "Forbidden" error when try to access to a directory. * src/server.c (look_for_new_connection): Get the addr_in at accept(). * src/connection.c (cherokee_connection_log): New log writting function CLF (Common Log Format) compliant. * src/connection.c (get_uri): HTTP/1.1 needs a Host entry, otherwise it's going to be a Bad Request. 2003-04-16 Alvaro Lopez Ortega * src/http.h (http_type_[2,3,4,5]00): fixed * src/connection.c (cherokee_connection_fill_log): Added * src/server.c (process_active_connections): New log system 2003-04-15 Pablo Neira * contrib/cherokee: Added init.d script for RedHat 2003-04-15 Alvaro Lopez Ortega * contrib/Makefile.am: Added new file * doc/Benchmark-0.4.3-pre7.txt: Added new benchmark: Cherokee, Boa, thttpd and Apache * src/handler.h, src/handler.c, src/handler_common.h, src/handler_common.c, src/handler_dirlist.h, src/handler_dirlist.c, src/handler_file.h, src/handler_file.c, src/handler_gnomevfs.h, src/handler_gnomevfs.c, src/handler_redir.h, src/handler_redir.c: Partial rewritten. * src/handler_nn.h, src/handler_nn.c: Added new handler * src/buffer.c (cherokee_buffer_swap_chars): Added 2003-04-14 Alvaro Lopez Ortega * src/read_config.y: Make handler dir finish with a slash * src/buffer.c (cherokee_buffer_decode): Added 2003-04-13 Alvaro Lopez Ortega * src/read_config.y: UserDir must ends with a slash * src/handler_redir.c (cherokee_handler_redir_new): Fixed problem if there're any properties * configure.in: inet_pton and inet_addr detection work arround * src/server.c (process_active_connections): Fixed bug closing connections (look_for_new_connection): Keep-Alive fixed. * src/read_config.l: ID can start with a dot. Eg: UserDir .web 2003-04-12 Alvaro Lopez Ortega * src/server.c (process_active_connections): Fixed keep-alive related bug * src/handler_gnomevfs.c: Added new handler based in the GNOME (2.0) VFS library * src/server.c (process_active_connections): Rewrited. New one is cleanier and faster. 2003-04-11 Alvaro Lopez Ortega * src/read_config.[y,l]: Added listen entry * configure.in: Added check for GnomeVFS 2003-04-09 Alvaro Lopez Ortega * src/read_config.[l,y]: Added PidFile configuration entry * cherokee.spec.in: Added new file * cherokee.spec.in: Fixed version management 2003-04-07 Pablo Neira * cherokee.spec: Added spec file to build RPM packages. 2003-04-07 Alvaro Lopez Ortega * src/connection.c (cherokee_connection_get_request): Fixed vulnerability. Reported by Pablo Neira 2003-03-22 Alvaro Lopez Ortega * src/server.c (cherokee_server_read_config_string): Fixed. 2003-03-19 Alvaro Lopez Ortega * TODO: Added "IP Range restrictions" * cherokee.1: Added new man page * src/server.c (cherokee_server_set_min_latency): Added new function -- 2001-12-20 Alvaro Lopez Ortega * Cherokee started in 2001, but I didn't start this Changelog file until March 2003. Slightly lazy? Yeah.. maybe ;-)