|
|
CVS-Version: $Id: ChangeLog,v 1.18 2004/04/09 22:08:19 weigon Exp $ |
|
|
|
|
|
Feature Requests: |
|
|
* complex |
|
|
- limit read-queue to 64k and use traffic-shaping cap |
|
|
- if fastcgi/cgi are not ready ignore incoming FDEVENT_IN for a while |
|
|
-> reduce memory usage |
|
|
- userdir + suphp |
|
|
-> internal config-hash |
|
|
- don't strip // from PATHINFO |
|
|
- TLS |
|
|
|
|
|
* moderate |
|
|
- errorlog piping |
|
|
- gracefull restart |
|
|
- mod_accesslog_mysql |
|
|
- mod_auth_mysql |
|
|
- IPv6 for FastCGI |
|
|
- man-page for spawn-fcgi |
|
|
- server.base-directory |
|
|
|
|
|
* simple |
|
|
- file-mapping for alias |
|
|
- hostnames for remote-FastCGI |
|
|
- cgi exec via shell |
|
|
- crash in read-post |
|
|
- remove default port from Host: |
|
|
|
|
|
15.06.2005 13:59 - 1.3.14 |
|
|
- documentation |
|
|
|
|
|
more fix-ups for mod_fastcgi, configuration and mysql-vhost |
|
|
|
|
|
- tests |
|
|
|
|
|
unified test-scripts to use the same framework |
|
|
|
|
|
14.06.2005 23:38 |
|
|
- documentation |
|
|
|
|
|
updated docs for mod_proxy and mod_scgi |
|
|
|
|
|
12.06.2005 12:55 - pre-release |
|
|
- mod_fastcgi |
|
|
|
|
|
fixed event handling after delayed connect |
|
|
|
|
|
make retry timeout configurable |
|
|
|
|
|
removed unused events if we switch to FCGI_STATE_READ |
|
|
|
|
|
disabled adaptive spawning |
|
|
|
|
|
- mod_proxy |
|
|
|
|
|
added hash-based and round-robin balancing |
|
|
|
|
|
use port 80 is default |
|
|
|
|
|
fixed errorhandling on connection refused |
|
|
|
|
|
fixed usage of dead hosts [285] |
|
|
|
|
|
- mod_cgi |
|
|
|
|
|
send 500 if the CGI died before we received any data |
|
|
|
|
|
redirect the stderr of CGI to our errorlog |
|
|
|
|
|
cleanup cgi-env after we finished our request |
|
|
|
|
|
- uri-handling |
|
|
|
|
|
don't replace + to space before the ?query part |
|
|
|
|
|
accept characters > 127 again |
|
|
|
|
|
- mod_auth |
|
|
|
|
|
fixed segfault if debugging is enabled [371] |
|
|
|
|
|
- mod_scgi |
|
|
|
|
|
added SCGI support for python + WSGI [381], [382] |
|
|
|
|
|
- mod_setenv |
|
|
|
|
|
fixed conditionals for setenv.add-environment [109] |
|
|
|
|
|
- generic |
|
|
|
|
|
report an error on duplicate config-keys in configfile [267] |
|
|
|
|
|
call initgroups to join the groups of the users [239] |
|
|
|
|
|
fixed automatic redirects if SSL is used |
|
|
|
|
|
fixed compilation on Solaris [283] |
|
|
|
|
|
disable accept-filtering on FreeBSD if ssl is used [320] |
|
|
|
|
|
fixed handling of range-request larger than 2Gb |
|
|
|
|
|
fixed comparisions of mime-types to case-insensitive [266] |
|
|
|
|
|
added quotation of ETags [376], [378] |
|
|
|
|
|
06.03.2005 12:22 - 1.3.13 |
|
|
- mod_accesslog |
|
|
|
|
|
fixed NULL dereference on logfile cycling if accesslog is not set |
|
|
|
|
|
05.03.2005 17:30 |
|
|
- mod_proxy |
|
|
|
|
|
handle delayed connect in the same way as mod_fastcgi |
|
|
|
|
|
03.03.2005 19:00 |
|
|
- freebsd |
|
|
|
|
|
handle remote-close gracefully |
|
|
|
|
|
- ssl |
|
|
|
|
|
handle remote-close gracefully |
|
|
|
|
|
- dir-listing |
|
|
|
|
|
added dir-listing.hide-dotfiles and added an option to set css files |
|
|
|
|
|
02.03.2005 19:41 |
|
|
- fastcgi |
|
|
|
|
|
fixed path-info for prefix-patterns |
|
|
|
|
|
fixed path-info for PHP |
|
|
|
|
|
02.03.2005 14:47 - 1.3.12 |
|
|
- mod_fastcgi |
|
|
|
|
|
fixed handling of dead fastcgi process which sent their SIGCLD to |
|
|
initd and not to lighttpd. Moving the daemonize before starting |
|
|
the fastcgi procs fixes this. |
|
|
|
|
|
01.03.2005 23:59 |
|
|
- irix |
|
|
|
|
|
fixed minor compile issues with MIPSpro |
|
|
|
|
|
01.03.2005 11:57 |
|
|
- request-handling |
|
|
|
|
|
handle most duplicate headers as 400, Bug #25 |
|
|
|
|
|
- mod_fastcgi |
|
|
|
|
|
added more checks |
|
|
|
|
|
28.02.2005 18:26 |
|
|
- mod_expire |
|
|
|
|
|
don't ignore 'modification' any more, Bug #39 |
|
|
only handles static files |
|
|
|
|
|
- last-modified |
|
|
|
|
|
really compare timestamps, Bug #34 |
|
|
|
|
|
28.02.2005 11:54 |
|
|
- buffer |
|
|
|
|
|
rewrote int2buffer functions |
|
|
|
|
|
simplified path_simplify |
|
|
|
|
|
- pid-file |
|
|
|
|
|
ignore EACCESS on unlink |
|
|
|
|
|
28.02.2005 10:35 |
|
|
- mod_fastcgi |
|
|
|
|
|
accept \n\n, Bug #32 |
|
|
|
|
|
- cygwin |
|
|
|
|
|
moved functions used by plugin and main-program to *-glue.c |
|
|
|
|
|
- lemon |
|
|
|
|
|
removed warnings about shadowed variables |
|
|
|
|
|
28.02.2005 01:00 |
|
|
- ssl |
|
|
|
|
|
added ssl.ca-file, Bug #19 |
|
|
|
|
|
improved error-messages |
|
|
|
|
|
27.02.2005 23:48 |
|
|
- test cases |
|
|
|
|
|
rewrote to test-framework to use Perl + Test::More |
|
|
ported more test-cases |
|
|
|
|
|
22.02.2005 01:20 |
|
|
- mod_fastcgi |
|
|
|
|
|
replaced inet_addr by inet_aton |
|
|
|
|
|
- request-handling |
|
|
|
|
|
fixed segfault if host is empty |
|
|
|
|
|
20.02.2005 20:05 |
|
|
- cgi |
|
|
|
|
|
fixed cgi.assign for empty handlers again |
|
|
|
|
|
20.02.2005 16:54 - 1.3.11 |
|
|
- request handling |
|
|
|
|
|
ignore \r\n before request-line in keep-alive requests (Bug #13) |
|
|
|
|
|
- cgi, fastcgi |
|
|
|
|
|
added REMOTE_PORT and SERVER_ADDR |
|
|
|
|
|
fixed check for broken status-code in nph-scripts (Bug #14) |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
fixed passing cmdline options the spawned binary (Bug #16) |
|
|
|
|
|
fixed failed reconnects (Bug #9) |
|
|
|
|
|
- macos x |
|
|
|
|
|
fixed build on max |
|
|
|
|
|
- mod_secdownload |
|
|
|
|
|
parse conditional secure-download.secret (Bug #8) |
|
|
|
|
|
- mod_userdir |
|
|
|
|
|
redirect if username is not followed by / (Bug #15) |
|
|
|
|
|
13.02.2005 17:33 |
|
|
- mod_auth |
|
|
|
|
|
fix crash if require, realm or method are empty (Bug #5) |
|
|
|
|
|
13.02.2005 14:52 |
|
|
- network |
|
|
|
|
|
handle EPIPE and ECONNRESET as 'client has closed connection' in writev() |
|
|
(Bug #1) |
|
|
|
|
|
- macosx |
|
|
|
|
|
compile error on MacOS X due to missing environ (patch by Johan S<EFBFBD>rensen) |
|
|
(Bug #2) |
|
|
|
|
|
- indexfiles |
|
|
|
|
|
append the detected indexfile only once to uri.path (reported by Thomas |
|
|
Seifert) |
|
|
(Bug #3) |
|
|
|
|
|
06.02.2005 15:16 - 1.3.10 |
|
|
- fastcgi |
|
|
|
|
|
display a error-message if a hostname if specified in fastcgi.server->host |
|
|
we need an IP here |
|
|
|
|
|
- debug |
|
|
|
|
|
added debug.log-state-handling |
|
|
|
|
|
- spawn-fcgi |
|
|
|
|
|
accept a full commandline for spawning |
|
|
|
|
|
06.02.2005 12:50 |
|
|
- fastcgi |
|
|
|
|
|
fixed openssl handling |
|
|
|
|
|
- network_freebsd_sendfilev |
|
|
|
|
|
gracefull handling of connections closed on client-side |
|
|
removed debug-message |
|
|
|
|
|
06.02.2005 01:44 - 1.3.9 |
|
|
- documentation |
|
|
|
|
|
added docs for SSL setup and mod_status |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
fixed config handling on PowerPC for local-spawning |
|
|
|
|
|
05.02.2005 15:14 |
|
|
- fastcgi |
|
|
|
|
|
added bin-environment to setup the environment of the spawned process |
|
|
|
|
|
added bin-copy-environment to copy only the specified set of options |
|
|
from the old environment |
|
|
|
|
|
added handling of cmd-line options to bin-path |
|
|
|
|
|
- setenv |
|
|
|
|
|
fixed crashed in setenv.add-response-header |
|
|
|
|
|
04.02.2005 18:09 |
|
|
- configure |
|
|
|
|
|
fixed docs for --with-mysql |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
improved performance of building the header (drop strlen()) |
|
|
|
|
|
04.02.2005 01:59 |
|
|
- cgi |
|
|
|
|
|
don't send file on error |
|
|
|
|
|
check if cgi-handler exists before executing it |
|
|
|
|
|
added support for nph-... |
|
|
|
|
|
02.02.2005 21:18 - pre-release |
|
|
- request parsing |
|
|
|
|
|
handle invalid characters in URI |
|
|
|
|
|
02.02.2005 15:12 |
|
|
- makefiles |
|
|
|
|
|
dropped unused header files from the distribution |
|
|
|
|
|
02.02.2005 14:18 |
|
|
- fastcgi |
|
|
|
|
|
delete sockets on shutdown |
|
|
|
|
|
- http/1.1 |
|
|
|
|
|
adding option to disable http/1.1 |
|
|
|
|
|
01.02.2005 12:03 |
|
|
- cygwin |
|
|
|
|
|
fixed plugins_load to use the right extensions again |
|
|
removed mmap check |
|
|
added ssl support |
|
|
|
|
|
01.02.2005 01:49 |
|
|
- configure |
|
|
|
|
|
make check for valgrind.h covered by --with-valgrind |
|
|
|
|
|
- mod_localizer, mod_maps |
|
|
|
|
|
remove both plugins from the distribution |
|
|
|
|
|
- file-not-found |
|
|
|
|
|
handle file not found again |
|
|
|
|
|
30.01.2005 16:44 |
|
|
- HEAD requests |
|
|
|
|
|
don't send content on dynamic HEAD requests with status 200 |
|
|
|
|
|
30.01.2005 15:16 - 1.3.8 |
|
|
- network-handler |
|
|
|
|
|
remove debug output on writev() if the remote side closed the connection |
|
|
|
|
|
- directory index |
|
|
|
|
|
handle EACCES correctly |
|
|
|
|
|
29.01.2005 15:16 - pre-release |
|
|
- mod_alias |
|
|
|
|
|
fixed mod_alias + pathinfo handling |
|
|
|
|
|
- mod_accesslog |
|
|
|
|
|
added access-log to syslog patch from allan |
|
|
|
|
|
28.01.2005 17:30 |
|
|
- directory redirect without Host-header |
|
|
|
|
|
use server-ip instead of client-ip for the Location: |
|
|
|
|
|
- fastcgi + pathinfo |
|
|
|
|
|
if fastcgi-auth redirects to a directory which doesn't exist handle it |
|
|
correctly (bug introduced in 1.3.8) |
|
|
|
|
|
- requesting directories |
|
|
|
|
|
clean physical.path if directory is requested and dir-listing is disabled |
|
|
send 403 again (buf introduced in 1.3.8) |
|
|
|
|
|
28.01.2005 12:08 |
|
|
- fastcgi |
|
|
|
|
|
ignore FDEVENT_HUP for unix-sockets as a simple read + timeout will do |
|
|
the job anyway |
|
|
|
|
|
22.01.2005 20:28 - pre-release |
|
|
- fastcgi |
|
|
|
|
|
send content and headers if authorizer mode is used |
|
|
|
|
|
use a new connection if connection is died to fastcgi |
|
|
and we have not used it yet |
|
|
|
|
|
18.01.2005 21:21 - pre-release |
|
|
- plugins |
|
|
|
|
|
added version-id to plugins to detect plugins which are not up-to-date |
|
|
|
|
|
16.01.2005 23:11 |
|
|
- fastcgi |
|
|
|
|
|
fixed write-failed after crash of fastcgi-child |
|
|
|
|
|
16.01.2005 20:43 |
|
|
- setenv |
|
|
|
|
|
fixed setenv.add-environment |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
fixed authorizer + added testcases |
|
|
|
|
|
16.01.2005 17:40 - pre-release |
|
|
- mod_status |
|
|
|
|
|
beautified mod_status |
|
|
|
|
|
- mod_setenv |
|
|
|
|
|
added setenv.add-environment |
|
|
|
|
|
- timeouts |
|
|
|
|
|
add timeout to read-post |
|
|
|
|
|
15.01.2005 12:57 |
|
|
- debug |
|
|
|
|
|
added debug options to log |
|
|
- missing files |
|
|
- request header |
|
|
- response header |
|
|
- request handling |
|
|
|
|
|
added a more usefull error message for the status-code changes in the |
|
|
request parser |
|
|
|
|
|
- server announcement |
|
|
|
|
|
set Server: header for dynamic content too |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
fixed double free |
|
|
|
|
|
don't crash on FDEVENT_ERR |
|
|
|
|
|
added a comment for EAGAIN on connect() |
|
|
|
|
|
08.01.2005 17:45 |
|
|
- ssl |
|
|
|
|
|
report an error if ssl.engine is enable but no ssl support compiled in |
|
|
|
|
|
08.01.2005 12:23 |
|
|
- mod_status |
|
|
|
|
|
added request time to the output |
|
|
|
|
|
(late changelog) added host and filename to the output (fobax) |
|
|
(late changelog) HTMLalized the output (fobax) |
|
|
|
|
|
06.01.2005 19:51 - pre-release |
|
|
- error-handler |
|
|
|
|
|
let the error-handler handle 403 requests too |
|
|
|
|
|
make the error-handler setable by a module |
|
|
|
|
|
- error-pages |
|
|
|
|
|
reworked the error-page handling |
|
|
|
|
|
05.01.2005 13:10 |
|
|
- keep-alive handling |
|
|
|
|
|
made sure that keep-alive is really handled correctly |
|
|
|
|
|
04.01.2005 17:02 |
|
|
- mod_setenv |
|
|
|
|
|
added a module to added request and response headers on the fly |
|
|
|
|
|
- error-log |
|
|
|
|
|
send error log to syslog() if no errorlogfile is specified (again) |
|
|
|
|
|
02.01.2005 22:44 - pre-release |
|
|
- response handling |
|
|
|
|
|
cut of body for status 301, 304 and 205 |
|
|
|
|
|
- buffer |
|
|
|
|
|
optimized all _hex functions (Silvan Minghetti) |
|
|
|
|
|
02.01.2005 20:32 |
|
|
- fastcgi |
|
|
|
|
|
if bin-path is not specified, don't die (bug introduced in the last pre-rel) |
|
|
|
|
|
- auth |
|
|
|
|
|
if userfile is empty don't auth. |
|
|
|
|
|
02.01.2005 19:06 |
|
|
- mod_compress |
|
|
|
|
|
fixed off by one if cache-dir is not set |
|
|
|
|
|
02.01.2005 16:10 |
|
|
- conditional config |
|
|
|
|
|
fixed !~ and != |
|
|
|
|
|
- buffer |
|
|
|
|
|
copy empty buffers correctly |
|
|
|
|
|
31.12.2004 17:45 |
|
|
- ipv6 + pidfile |
|
|
|
|
|
don't complain if we can't remove the pidfile (Silvan Minghetti) |
|
|
|
|
|
remove ipv6 option from the commandline of lighttpd doesn't support |
|
|
ipv6 (Silvan Minghetti) |
|
|
|
|
|
31.12.2004 15:41 - pre-release |
|
|
- kqueue |
|
|
|
|
|
simplified event handling (adam) |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
fixed div-by-zero bugs in the adaptive process spawning |
|
|
|
|
|
- mysql-vhost |
|
|
|
|
|
added mysql-vhost (Christer Holgersson) |
|
|
|
|
|
30.12.2004 19:09 |
|
|
- fastcgi |
|
|
|
|
|
added adaptive spawning of FastCGI processes |
|
|
|
|
|
- traffic shaping |
|
|
|
|
|
added traffic shaping per virtual server |
|
|
|
|
|
28.12.2004 23:26 |
|
|
- traffic shaping |
|
|
|
|
|
added traffic shaping per connection |
|
|
|
|
|
25.12.2004 22:58 |
|
|
- mod_status |
|
|
|
|
|
fixed status.url again (Timo) |
|
|
|
|
|
21.12.2004 11:29 |
|
|
- configure |
|
|
|
|
|
added check for signal and select (compile fix for netbsd 1.4 and 1.5) |
|
|
|
|
|
11.12.2004 12:38 - 1.3.7 |
|
|
- fastcgi + php |
|
|
|
|
|
retry to connect to another PHP child if one of them dies after |
|
|
connect |
|
|
|
|
|
- cgi + multipart |
|
|
|
|
|
don't transform CONTENT_TYPE to HTTP_CONTENT_TYPE |
|
|
|
|
|
- debian |
|
|
|
|
|
more cleanup, updated changelog, added more deps and suggests |
|
|
(Chris Brown) |
|
|
|
|
|
10.12.2004 22:33 |
|
|
- event handler |
|
|
|
|
|
fixed crashes in kqueue |
|
|
|
|
|
10.12.2004 13:57 - pre-release |
|
|
- mod_status |
|
|
|
|
|
fixed wraparound in total requests and total traffic |
|
|
|
|
|
- debian |
|
|
|
|
|
updated licence and packaging |
|
|
|
|
|
- security |
|
|
|
|
|
call setgroups() to get rid of all groups |
|
|
|
|
|
- ssl |
|
|
|
|
|
handle SSL_shutdown() == 0 correctly |
|
|
|
|
|
fixed openssl detection in configure |
|
|
|
|
|
fixed handling of chunked encoding |
|
|
|
|
|
- request handling |
|
|
|
|
|
handle Connection: keep-alive correctly (case as not ignored) |
|
|
|
|
|
21.11.2004 02:39 |
|
|
- windows |
|
|
|
|
|
merged basic native windows port (compiles with mingw) |
|
|
|
|
|
20.11.2004 18:43 |
|
|
- conditional |
|
|
|
|
|
ported |
|
|
- cgi |
|
|
- secdownload |
|
|
- expire |
|
|
- localizer |
|
|
- usertrack |
|
|
- status |
|
|
- proxy |
|
|
|
|
|
- server-tag |
|
|
|
|
|
Server: ... can now be specified by server.tag = "..." |
|
|
|
|
|
- spawn-fcgi |
|
|
|
|
|
fixed typo in usage text |
|
|
|
|
|
- ssl |
|
|
|
|
|
fixed detection of libs and headers |
|
|
|
|
|
05.11.2004 16:01 |
|
|
- fastcgi |
|
|
|
|
|
added more usefull error messages |
|
|
|
|
|
04.11.2004 23:01 |
|
|
- ssi |
|
|
|
|
|
added support for ${...} |
|
|
|
|
|
03.11.2004 14:51 - 1.3.6 |
|
|
- fastcgi |
|
|
|
|
|
added spawn-fcgi to the distribution |
|
|
added spawn-local-fastcgi yourself ( bin-path ) |
|
|
|
|
|
03.11.2004 11:22 |
|
|
- accesslog |
|
|
|
|
|
don't cycle accesslogs of external processes are used |
|
|
|
|
|
02.11.2004 15:34 |
|
|
- fastcgi |
|
|
|
|
|
handle END-OF-REQUEST correctly if chunk-encoding is not used |
|
|
|
|
|
02.11.2004 10:53 |
|
|
- internal redirects |
|
|
|
|
|
fixed handling of query strings in internal redirects for directories |
|
|
|
|
|
02.11.2004 09:54 - pre-release |
|
|
- cgi |
|
|
|
|
|
add REMOTE_USER, suppress AUTHORIZATION |
|
|
handle payloads > 4k |
|
|
|
|
|
- mod_alias |
|
|
|
|
|
fixed url checking |
|
|
|
|
|
- follow-symlink |
|
|
|
|
|
fixed config |
|
|
|
|
|
31.10.2004 11:30 - 1.3.5 |
|
|
- writev |
|
|
|
|
|
fixed seg-fault in debug-message if write() fails and LFS is enabled |
|
|
handle EINTR |
|
|
|
|
|
- sendfile linux |
|
|
|
|
|
handle EINTR |
|
|
|
|
|
31.10.2004 09:09 |
|
|
- freebsd |
|
|
|
|
|
added missing header in joblist.c |
|
|
fixed test-scripts for zsh |
|
|
|
|
|
30.10.2004 22:26 |
|
|
- modules |
|
|
|
|
|
added mod_userdir and mod_alias |
|
|
added docs for the new modules |
|
|
|
|
|
30.10.2004 19:52 |
|
|
- porting |
|
|
|
|
|
added defines for MAP_FAILED for NetBSD 1.3.x |
|
|
|
|
|
30.10.2004 18:54 - pre-release |
|
|
- pipelining |
|
|
|
|
|
fixed offset calculations |
|
|
|
|
|
- ipv6 |
|
|
|
|
|
IPv6 might be disabled at compile-time |
|
|
|
|
|
- rewrite |
|
|
|
|
|
close mem-leak |
|
|
|
|
|
- auth |
|
|
|
|
|
forgot to reset the global-config handler |
|
|
|
|
|
- symlink |
|
|
|
|
|
add option to disable follow-symlink |
|
|
|
|
|
- ssi |
|
|
|
|
|
added support for exec-cmd |
|
|
|
|
|
23.10.2004 - 1.3.4 |
|
|
- max-fds |
|
|
|
|
|
set the upper limit of fds only if server.max-fds is set |
|
|
|
|
|
23.10.2004 13:49 |
|
|
- accesslog |
|
|
|
|
|
use a shell to handle accesslog-pipes |
|
|
|
|
|
22.10.2004 17:00 |
|
|
- accesslog |
|
|
|
|
|
added logging of user-supplied data via %{...}o and |
|
|
X-LIGHTTPD-* header |
|
|
|
|
|
22.10.2004 14:57 - pre-release |
|
|
- openwrt |
|
|
|
|
|
fixed configure-checks and Makefile.am's to build cleanly with a |
|
|
cross-compiler |
|
|
|
|
|
builds cleanly for openwrt |
|
|
|
|
|
22.10.2004 13:03 |
|
|
- out-of-fd |
|
|
|
|
|
improved the out-of-fd handler |
|
|
|
|
|
- cgi, fastcgi |
|
|
|
|
|
set SERVER_NAME to server.name or the value submitted by Host: |
|
|
|
|
|
- error-handler |
|
|
|
|
|
only set old status code if it wasn't set by a handler |
|
|
|
|
|
21.10.2004 22:36 - pre-release |
|
|
- fastcgi |
|
|
|
|
|
don't crash on out-of-fd condition |
|
|
|
|
|
- out-of-fd |
|
|
|
|
|
try handle the out-of-fd condition in a sane way |
|
|
|
|
|
21.10.2004 15:03 |
|
|
- mod_auth |
|
|
|
|
|
seperated auth.backend.*.userfile for plain, htpasswd and htdigest |
|
|
|
|
|
added 'digest-auth' against 'plain-backend' |
|
|
|
|
|
added auth.debug for debugging |
|
|
|
|
|
16.10.2004 10:18 - 1.3.3 |
|
|
- mod_simple_vhost, mod_evhost |
|
|
|
|
|
conditional-ized |
|
|
|
|
|
- mod_rrdtool |
|
|
|
|
|
maintain the request-counter for each conditional-config (adam) |
|
|
|
|
|
14.10.2004 11:30 |
|
|
- accesslogs |
|
|
|
|
|
cycle all access-logs |
|
|
|
|
|
- mod_rewrite |
|
|
|
|
|
tell the user to install pcre.h if he wants to use mod_rewrite |
|
|
|
|
|
10.10.2004 10:11 - pre-release |
|
|
- error-handler |
|
|
|
|
|
added a error-handler for status 404 (server.error-handler-404) |
|
|
|
|
|
09.10.2004 16:28 - pre-release |
|
|
- cgi |
|
|
|
|
|
added support for \n in headers |
|
|
|
|
|
- mod_auth |
|
|
|
|
|
added conditional auth |
|
|
|
|
|
01.10.2004 09:28 |
|
|
- plugins |
|
|
|
|
|
fixed off by one error in plugin initialization (Mike) |
|
|
related into a segfault on AMD64 |
|
|
|
|
|
30.09.2004 21:44 - 1.3.2 |
|
|
- file-cache |
|
|
|
|
|
disabled the file-cache it was taken the wrong files from the cache |
|
|
|
|
|
30.09.2004 08:39 - 1.3.1 |
|
|
- file-cache |
|
|
|
|
|
drop a unused file-cache entry after 10 seconds |
|
|
reuse unused entries |
|
|
|
|
|
- request-parser |
|
|
|
|
|
accept IPv6 adresses in Host header |
|
|
|
|
|
- tests |
|
|
|
|
|
modified the scripts to work with zsh (check on Linux, Irix and FreeBSD) |
|
|
|
|
|
26.09.2004 12:28 |
|
|
- comparission function |
|
|
|
|
|
file-cache has delivering the wrong entry if only the last character of |
|
|
the filename differed and the filesize was the same. |
|
|
|
|
|
- cgi + cygwin |
|
|
|
|
|
cgi need s SYSTEMROOT environment |
|
|
|
|
|
|
|
|
22.09.2004 08:55 |
|
|
- network |
|
|
|
|
|
detect of file has been shrinked while we are sending it out and terminate |
|
|
the connection if would run over the edge |
|
|
|
|
|
22.09.2004 07:56 |
|
|
- mod rewrite, fastcgi, ... |
|
|
|
|
|
keep REQUEST_URI after rewrite |
|
|
|
|
|
21.09.2004 22:49 |
|
|
- fastcgi authorizer |
|
|
|
|
|
fixed cleanup code (matt) |
|
|
|
|
|
21.09.2004 20:08 |
|
|
- rrdtool |
|
|
|
|
|
rrdtool.db-name is now conditional |
|
|
|
|
|
fixed check if write() failed (adam) |
|
|
|
|
|
17.09.2004 17:50 - 1.3.0 |
|
|
- rewrite |
|
|
|
|
|
added url.rewrite-final = ... |
|
|
|
|
|
17.09.2004 15:55 |
|
|
- code cleanup |
|
|
|
|
|
integrated the fixes from cygwin into the main tree |
|
|
|
|
|
- kqueue |
|
|
|
|
|
init kqueue after daemonizing (broken since 12.09.2004 14:02) |
|
|
|
|
|
16.09.2004 21:00 |
|
|
- cygwin + macosx |
|
|
|
|
|
finished the cygwin port |
|
|
this port seems to fix the problems on macosx too |
|
|
|
|
|
12.09.2004 14:02 |
|
|
- socket handling |
|
|
|
|
|
added support to handle more than one server socket |
|
|
|
|
|
11.09.2004 12:23 - 1.2.8 |
|
|
- EINTR |
|
|
|
|
|
handle EINTR for linux-sendfile |
|
|
|
|
|
- configfile |
|
|
|
|
|
ignore an extra comma at the end of the array declaration |
|
|
|
|
|
11.09.2004 09:46 |
|
|
- mod_proxy |
|
|
|
|
|
pass remote-addr as X-Forwarded-For to the real server behind the proxy |
|
|
|
|
|
- code cleanup |
|
|
|
|
|
moved all cut'n'paste versions of the inet_ntop cache to inet_ntop_cache.c |
|
|
|
|
|
- fcgi |
|
|
|
|
|
don't overwrite the fd in fcgi_establish connection if connect fails. this |
|
|
results in various problem in other places. |
|
|
|
|
|
05.09.2004 09:46 |
|
|
- file-cache |
|
|
|
|
|
cache the mimetype |
|
|
|
|
|
- last-modified |
|
|
|
|
|
don't complain if the If-Modified-Since contains a valid comment/option |
|
|
like <timestamp>; length = ... |
|
|
|
|
|
05.09.2004 09:13 |
|
|
- expires |
|
|
|
|
|
overwrite the Expire if it is set by a previous plugin |
|
|
|
|
|
- conditional config |
|
|
|
|
|
conditional config as disabled in 1.2.7 by accident |
|
|
|
|
|
04.09.2004 10:02 - 1.2.7 |
|
|
- mod-proxy |
|
|
|
|
|
remove the \0 before the post content |
|
|
|
|
|
- cgi |
|
|
|
|
|
fixed hanging process if cgi-crash terminates to fast (before we read its |
|
|
response) |
|
|
|
|
|
- extented attributes |
|
|
|
|
|
added xattr support, submitted by Ari |
|
|
|
|
|
29.08.2004 16:00 |
|
|
- rrdtool |
|
|
|
|
|
moved the rrdtool support from mod_status into its own module mod_rrdtool |
|
|
|
|
|
rrdtool.binary = "/usr/bin/rrdtool" |
|
|
rrdtool.db-name = "/var/www/lighttpd.rrd" |
|
|
|
|
|
29.08.2004 11:00 - pre-release |
|
|
- timeouts |
|
|
|
|
|
server.max-keep-alive-requests = 0 replaces |
|
|
server.use-keep-alive = "disable" |
|
|
|
|
|
added |
|
|
server.max-keep-alive-idle |
|
|
server.max-read-idle |
|
|
server.max-write-idle |
|
|
|
|
|
- docs |
|
|
|
|
|
added a entry for each config-value into configuration.txt |
|
|
added simple docs for |
|
|
rewrite |
|
|
redirect |
|
|
compress |
|
|
cgi |
|
|
simple-vhost |
|
|
|
|
|
29.08.2004 10:05 |
|
|
- config options |
|
|
|
|
|
complain if no configfile is specified |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
removed stupid allocation bug which might cause a problem in really rare |
|
|
cases |
|
|
|
|
|
26.08.2004 22:06 - 1.2.6 |
|
|
- optimize |
|
|
|
|
|
use array_strcasecmp() in favour of strcasecmp() as it is slightly |
|
|
faster. |
|
|
|
|
|
apply the case-insentive conversion also on the last character. (adam) |
|
|
|
|
|
sort the checked elements in request.c and filter apply the logic to |
|
|
compare some less fields, if the header is not used. |
|
|
|
|
|
improved the config-patch function to use our internal buffer-compare |
|
|
functions instead of strcmp |
|
|
|
|
|
22.08.2004 16:09 - pre-release |
|
|
- cgi |
|
|
|
|
|
added missing cleanup code |
|
|
|
|
|
- fastcgi |
|
|
|
|
|
remove double-free |
|
|
added handling of EINTR in some places |
|
|
|
|
|
- leaks |
|
|
|
|
|
fixed some leaks in the new config code |
|
|
|
|
|
- array_strcasecmp |
|
|
|
|
|
fixed alignment in the improved array_strcasecmp function (adam) |
|
|
|
|
|
20.08.2004 14:46 - pre-release |
|
|
- performance |
|
|
|
|
|
optimized a few useless strlen() away as we either know the length from |
|
|
buffer->used - 1 or by sizeof(str) - 1 if it is constant. |
|
|
|
|
|
optimized the 'find the \r\n\r\n' function. |
|
|
|
|
|
improved the array_strcasecmp() based on another idea from (ralf) |
|
|
|
|
|
- accesslog |
|
|
|
|
|
enabled the strftime cache again |
|
|
|
|
|
15.08.2004 23:41 |
|
|
- accesslog |
|
|
|
|
|
added apache-like CustomLog handling in accesslog.format |
|
|
|
|
|
accesslog.format = "..." |
|
|
|
|
|
15.08.2004 21:08 |
|
|
- test-cases |
|
|
|
|
|
remove testdir |
|
|
|
|
|
- configfiles |
|
|
|
|
|
handle escaping of " in strings properly |
|
|
|
|
|
13.08.2004 12:07 |
|
|
- array |
|
|
|
|
|
improved inner-loop of array_strcasecmp() (ralf) |
|
|
|
|
|
11.08.2004 14:14 |
|
|
- fcgi socket |
|
|
|
|
|
use SUN_LEN if available |
|
|
|
|
|
- keep-alive |
|
|
|
|
|
disable keep-alive on request |
|
|
|
|
|
server.use-keep-alive = "disable" |
|
|
|
|
|
10.08.2004 15:59 - 1.2.5 |
|
|
- conditional config |
|
|
|
|
|
mod_fastcgi |
|
|
mod_rewrite |
|
|
mod_redirect |
|
|
mod_access |
|
|
mod_compress |
|
|
mod_accesslog |
|
|
|
|
|
are ported |
|
|
|
|
|
10.08.2004 13:05 |
|
|
- pipelining |
|
|
|
|
|
fixed very stupid pipelining bug |
|
|
|
|
|
09.08.2004 22:07 - pre-release |
|
|
- conditional config |
|
|
|
|
|
first code for conditional config |
|
|
|
|
|
09.08.2004 14:21 |
|
|
- fcgi |
|
|
|
|
|
fixed access to free()'d memory (doesn't create any harm) |
|
|
|
|
|
- isdigit, warings |
|
|
|
|
|
signed -> unsigned for 2 more isdigit() calls (adam) |
|
|
removed some unused var's if pcre is not available (adam) |
|
|
|
|
|
08.08.2004 20:57 - pre-release |
|
|
- debian |
|
|
|
|
|
added a chmod to /var/log/lighttpd/ (allan) |
|
|
|
|
|
08.08.2004 12:05 |
|
|
- kqueue |
|
|
|
|
|
use EV_SET() instead of setting the ev-struct by hand (adam) |
|
|
|
|
|
- fcgi |
|
|
|
|
|
fixed the EINPROGRESS handling to use getsockopt (er) |
|
|
fixed a leak of server is disabled (er) |
|
|
|
|
|
- solaris 10 port-api |
|
|
|
|
|
added a skeleton for the sol10 port api |
|
|
|
|
|
06.08.2004 10:18 |
|
|
- mod_ssi |
|
|
|
|
|
fix DATE_LOCAL so it displays the correct time zone (Jeremy Hinegardner) |
|
|
|
|
|
04.08.2004 11:43 |
|
|
- openbsd fixes |
|
|
|
|
|
dropped usage of MAX() in buffer.c |
|
|
added prober includes for md5.h if openssl is enabled (brad) |
|
|
|
|
|
- memory usage |
|
|
|
|
|
documented the way how lighttpd caches memory blocks |
|
|
reset the buffers after they have been written by the network-layer |
|
|
|
|
|
- kqueue |
|
|
|
|
|
modify fd-bitmask only if kevent succeeded (adam) |
|
|
|
|
|
|
|
|
03.08.2004 15:09 |
|
|
- mod_compress |
|
|
|
|
|
compress even if you have no cachedir set |
|
|
|
|
|
03.08.2004 13:26 - pre-release |
|
|
- Makefile |
|
|
|
|
|
fixed dependencies for parallel build in mod_ssi_expr.c |
|
|
|
|
|
- combo patch |
|
|
|
|
|
* Tinker with kqueue(). Add a reset method so that the kqueue file |
|
|
descriptor can be re-enabled after a fork(). Emulate the devpoll driver |
|
|
in that adds and deletes are sent to the notification mechanism im- |
|
|
mediately, which should cut down on phantom events. Use |
|
|
ev->kq_results as a sliding window. |
|
|
|
|
|
* Change F_SETFD calls to use the preferred FD_CLOEXEC instead of 1. |
|
|
|
|
|
* Remove unnecessary fdevent fcntl handlers. It appears that the only |
|
|
driver that needs one is Linux RT signals. |
|
|
|
|
|
* Quiet compiler warning about unused parameter. |
|
|
|
|
|
* Set the close-on-exec flag for the /dev/poll and epoll_create() file |
|
|
descriptors. |
|
|
|
|
|
* Return failure if /dev/poll could not be opened instead of logging |
|
|
and continuing. |
|
|
|
|
|
* Detect EAGAIN after writev() failures. FreeBSD sendfile() doesn't need |
|
|
protection, as the man page says: |
|
|
|
|
|
When using a socket marked for non-blocking I/O, sendfile() may send |
|
|
fewer bytes than requested. In this case, the number of bytes success- |
|
|
fully written is returned in *sbytes (if specified), and the error |
|
|
EAGAIN is returned. |
|
|
|
|
|
(adam, georg, matt) |
|
|
|
|
|
|
|
|
02.08.2004 18:08 |
|
|
- mod_ssi |
|
|
|
|
|
check for pcre before compiling the module |
|
|
|
|
|
- fdevents |
|
|
|
|
|
dropped fdevent_fcntl added by the last patch (adam) |
|
|
kqueue: events == FDEVENT_IN -> events & FDEVENT_IN (adam) |
|
|
|
|
|
31.07.2004 22:07 - 1.2.4 |
|
|
- fdevents |
|
|
|
|
|
* Test at configure time for kqueue() and <sys/event.h> |
|
|
* Remove various hard-coded constants from event handlers |
|
|
* Move maxfds into the event structure, and out of the |
|
|
fdevent_*_init handlers. Event handlers can use the maxfds |
|
|
member to size arrays. |
|
|
* Various event structure renames to discourage clashes |
|
|
* Remove extra (ignored) call to fdevent_event_next_fdndx() in |
|
|
the main server loop. |
|
|
* Wrestle with kqueue(). The implementation has to deal with |
|
|
phantom events (for fds which have been deleted/closed), similar |
|
|
to the Linux RT signals code. Like the RT code, it maintains a |
|
|
bitmask of active fds. After a successful call to kevent(), the |
|
|
code will compress/overwrite dead events. The other annoyance is |
|
|
that the handler must track the event filter for each fd, even |
|
|
though you cannot support both read and write filters for the same |
|
|
fd in one kqueue. The handler maintains a separate bitmask for fd |
|
|
filters (1 == EVFILT_IN, 0 == EVFILT_OUT). |
|
|
(adam) |
|
|
|
|
|
- server side includes |
|
|
|
|
|
added native server-side includes based on the docs from apache: |
|
|
http://httpd.apache.org/docs/mod/mod_include.html |
|
|
|
|
|
not supported are: |
|
|
- exec |
|
|
- nested virtual |
|
|
- config.errmsg |
|
|
- echo.encoding |
|
|
|
|
|
24.07.2004 |
|
|
- fdevents |
|
|
|
|
|
added a bitset to figure out if we received a event for an unregistered fd |
|
|
in rt-signal (adam) |
|
|
|
|
|
- kqueue |
|
|
|
|
|
added kqueue support (Matt Levine) |
|
|
|
|
|
13.07.2004 08:58 |
|
|
- configfile |
|
|
|
|
|
parse keys correctly that contain a digit (Geoff Adams) |
|
|
|
|
|
- fcgi |
|
|
|
|
|
fixed large post uploads (Geoff Adams) |
|
|
fixed uri if docroot is set (Geoff Adams) |
|
|
|
|
|
03.07.2004 22:50 - 1.2.3 |
|
|
- index-files |
|
|
|
|
|
rewrite uri.path to the index-file instead of keeping it at .../ |
|
|
this fixes index-file handling in FastCGI/CGI docroot is used |
|
|
|
|
|
- close-on-exec |
|
|
|
|
|
enable close-on-exec handling to simplify FD handling in CGI code |
|
|
|
|
|
- cgi |
|
|
|
|
|
keep error-log-fd open to catch the error handling for execve() |
|
|
|
|
|
report error if cgi-exec file doesn't exist |
|
|
|
|
|
- proxy |
|
|
|
|
|
pass page-content on error to the user (E.R.) |
|
|
code cleanup (E.R.) |
|
|
|
|
|
- ssi |
|
|
|
|
|
first skeleton of a plugin for ServerSideIncludes |
|
|
|
|
|
- security |
|
|
|
|
|
limit the headerlength again to 64k max |
|
|
|
|
|
03.07.2004 14:23 |
|
|
- configure |
|
|
|
|
|
fixed compile-check for libpcre if pcre-config doesn't point to /usr/lib |
|
|
|
|
|
02.07.2004 18:17 |
|
|
- buffers |
|
|
|
|
|
always allocate a multiply of 64bytes. this should reduce the number of |
|
|
realloc()s and still doesn't has a too high overhead. |
|
|
|
|
|
02.07.2004 11:07 |
|
|
- fds |
|
|
|
|
|
connect stdin, stdout and stderr to /dev/null instead of just closing it |
|
|
use dup2() instead of dup() |
|
|
|
|
|
- accesslog |
|
|
|
|
|
if accesslog.filename starts with a | spawn a process which will get data |
|
|
in one chunk once in a while |
|
|
|
|
|
01.07.2004 11:00 |
|
|
- sample config |
|
|
|
|
|
added text/css and text/javascript mimetypes |
|
|
|
|
|
28.06.2004 12:18 |
|
|
- proxy module |
|
|
|
|
|
added a proxy module (based on the fastcgi module) and added some |
|
|
documentation |
|
|
|
|
|
25.06.2004 21:41 |
|
|
- last-modified handling |
|
|
|
|
|
replaced %Z by GMT. otherwise the last-modified check will most often fail. |
|
|
|
|
|
24.06.2004 20:20 |
|
|
- relax http-parser |
|
|
|
|
|
don't reply 400 in case of an empty header-field, just ignore it |
|
|
|
|
|
23.06.2004 22:10 |
|
|
- file-cache |
|
|
|
|
|
don't cache mmap() for files larger than 64k as we run out of RAM otherwise |
|
|
too fast (check with some 200mb files) |
|
|
|
|
|
- 64bit fixes |
|
|
|
|
|
fixed buffer_equal on sparc64 |
|
|
|
|
|
15.06.2004 19:09 - 1.2.2 |
|
|
- mmap cache |
|
|
|
|
|
fixed mmap-caching in network_write.c and network_writev.c after a direct |
|
|
hint by E.Rodichev |
|
|
|
|
|
- sendfile + linux |
|
|
|
|
|
check at config-time if sendfile() works on Linux |
|
|
|
|
|
11.06.2004 15:09 |
|
|
- fcgi + unix sockets |
|
|
|
|
|
added support for unix domain sockets (spawn-fcgi 1.2.0 required) |
|
|
|
|
|
10.06.2004 11:49 |
|
|
- configure |
|
|
|
|
|
use pcre-config to determine the position of the pcre headers |
|
|
|
|
|
05.06.2004 22:06 |
|
|
- filehandle-cache |
|
|
|
|
|
remove mmap-segment if filecache gets invalidated |
|
|
|
|
|
30.05.2004 14:13 - lighttpd 1.2.1 |
|
|
- response headers |
|
|
|
|
|
request headers that appear twice are grouped together like expected by |
|
|
the CGI spec (concat with a ", ") |
|
|
response headers behaved the same way but are not grouped anymore. They |
|
|
stay seperated. Actually they are concated by \r\n<key>: <value> which is |
|
|
the same in the end. |
|
|
|
|
|
- file uploads |
|
|
|
|
|
the handling of longer post requests is fixed now. |
|
|
|
|
|
28.05.2004 09:13 |
|
|
- cgi |
|
|
|
|
|
added support for direct calls to cgi-binary |
|
|
|
|
|
22.05.2004 21:58 |
|
|
- pipeling |
|
|
|
|
|
the code cleanup is finished successfully. Now all cases of pipelining are |
|
|
handle the right way. POST pipelining was still not working up to now. |
|
|
|
|
|
22.05.2004 12:55 |
|
|
- code cleanup |
|
|
|
|
|
use the well-tested code from the write-queue as the base for the |
|
|
read-queues and simplify the pipeline handling alot that way. |
|
|
|
|
|
20.05.2004 15:08 |
|
|
- network backends |
|
|
|
|
|
enabled sendfile support again (__FreeBSD__ instead of __freebsd__) |
|
|
|
|
|
added a mmap cache as part of the filedescriptor cache |
|
|
|
|
|
added AIX specific send_file() support (untested) |
|
|
|
|
|
20.05.2004 10:40 |
|
|
- segfaults |
|
|
|
|
|
fixed some minor segfaults on startup when no config file is used. |
|
|
|
|
|
17.05.2004 10:58 - lighttpd 1.2.0 |
|
|
- documentation |
|
|
|
|
|
reformated the documentation the doc/ directory |
|
|
|
|
|
15.05.2004 14:45 |
|
|
- localizer |
|
|
|
|
|
fixed build of localizer extension |
|
|
|
|
|
15.05.2004 12:35 |
|
|
- POST requests |
|
|
|
|
|
there is no need to die if we spot a simple POST request on a static file |
|
|
|
|
|
- pipelining |
|
|
|
|
|
fixed HTTP/1.1 pipelining which caused the problems with opera |
|
|
|
|
|
- array handling |
|
|
|
|
|
how did that bug survive such a long time ? a wrong compare function was |
|
|
used in one case, but not the other. |
|
|
|
|
|
15.05.2004 03:20 |
|
|
- secure and fast downloads |
|
|
|
|
|
added a module which allows secure and fast downloading of files: |
|
|
1. the application (.php, ...) controls the access to the files |
|
|
2. the webserver is handling the transfer (and check the app generated |
|
|
tokens) |
|
|
|
|
|
the token is based on |
|
|
- a secret |
|
|
- a timestamp |
|
|
- the filename |
|
|
this means even if the token is is distributed by the user it will get |
|
|
invalid after a given timeout (default 60 seconds) |
|
|
|
|
|
- errorfiles |
|
|
|
|
|
check for errorfiles before using them |
|
|
|
|
|
- code cleanup |
|
|
|
|
|
applied cleanup fixes from adam |
|
|
|
|
|
14.05.2004 18:47 |
|
|
- fdevent handling |
|
|
|
|
|
added a more generic callback interface to the fdevent structures which |
|
|
simplifies the writing of plugins. this might destabilize lighttpd for a |
|
|
while |
|
|
|
|
|
- cgi |
|
|
|
|
|
fixed header parsing of the header is sent in chunks and the terminator is |
|
|
sent in a single chunk |
|
|
|
|
|
- EINTR |
|
|
|
|
|
fixed some occurences of EINTR which read() |
|
|
|
|
|
03.05.2004 23:55 |
|
|
- portability |
|
|
|
|
|
E.R.: |
|
|
* portability fixes for Solaris 2.5 |
|
|
|
|
|
02.05.2004 10:15 |
|
|
- Expect: Handling |
|
|
|
|
|
added incomplete support for Expect: 100-continue (RFC 2616 8.2.3) by |
|
|
sending always 417 for every Expect-request (see 14.20) |
|
|
|
|
|
we have been blamed for not supporting it: |
|
|
http://lists.w3.org/Archives/Public/ietf-http-wg/2004JanMar/0059.html |
|
|
|
|
|
29.04.2004 23:07 - 1.1.9 |
|
|
- usertracking |
|
|
|
|
|
added a very basic usertracking cookie handler |
|
|
|
|
|
29.04.2004 19:37 |
|
|
- network-writev |
|
|
|
|
|
Adam: |
|
|
* call munmap() on error in write() |
|
|
|
|
|
- docs |
|
|
|
|
|
E.R: |
|
|
* documented 'check-local' |
|
|
|
|
|
- test-env |
|
|
|
|
|
made the shell scripts more portable (checked with zsh, bash and ksh) |
|
|
|
|
|
fixed compilation on NetBSD |
|
|
|
|
|
28.04.2004 22:22 |
|
|
- FastCGI |
|
|
|
|
|
E.Rodichev: |
|
|
* added "Authorizer" mode for FastCGI |
|
|
|
|
|
27.04.2004 18:08 |
|
|
- ssl |
|
|
|
|
|
Alexey Slynko: |
|
|
* handle SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE in SSL_write the |
|
|
right way. |
|
|
|
|
|
- FastCGI |
|
|
|
|
|
add 'check-local' instead of the implicit 'if-docroot-is-set' handling |
|
|
implemented at 24.04.2004 14:34 |
|
|
|
|
|
E.Rodichev: |
|
|
* remove useless extra-/ in before uri.path |
|
|
* add 'prefix' notation for FastCGI processes |
|
|
|
|
|
26.04.2004 16:52 |
|
|
- code cleanup |
|
|
|
|
|
patches from Alexey Slynko: |
|
|
* remove the pidfile if lighttpd terminates the normal way (if not in chroot) |
|
|
* init SSL before getting daemonized |
|
|
|
|
|
25.04.2004 19.15 |
|
|
- mem-leak |
|
|
|
|
|
fixed mem-leak on broken HTTP-headers |
|
|
|
|
|
- FastCGI |
|
|
|
|
|
patches from E.Rodichev: |
|
|
|
|
|
1. CONTENT_LENGTH |
|
|
"If no data are attached, then this metavariable is either NULL or not |
|
|
defined". |
|
|
|
|
|
2. QUERY_STRING |
|
|
If the Script-URI does not include a query component, the QUERY_STRING |
|
|
metavariable MUST be defined as an empty string (""). |
|
|
|
|
|
3. Doubling of REMOTE_ADDR removed. |
|
|
|
|
|
patches from adam: |
|
|
* fixed bug in the sizeof() patches from yesterday. |
|
|
* some more *_long to *_off_t |
|
|
|
|
|
24.04.2004 14:34 |
|
|
- FastCGI |
|
|
|
|
|
don't check for localfile if 'docroot' for a FastCGI host is specified. |
|
|
|
|
|
24.04.2004 12:13 |
|
|
- POST |
|
|
|
|
|
fixed POST request handling |
|
|
|
|
|
- chunk-encoding |
|
|
|
|
|
the generated HEX strings where broken since the 1.1.8 |
|
|
(this effected all HTTP/1.1 requests without Content-Length like FastCGI-PHP) |
|
|
|
|
|
- code cleanup |
|
|
|
|
|
patches from adam: |
|
|
* malloc + memset -> calloc |
|
|
* sizeof(int) -> sizeof(<variable>) |
|
|
* assign fd_set instead of memcpy() |
|
|
* init fd -> connection fd pointers to -1 |
|
|
|
|
|
16.04.2004 08:48 - 1.1.8 |
|
|
- code cleanup |
|
|
|
|
|
don't reuse buffer > 64k (see settings.h) |
|
|
|
|
|
added server.max-request-size to limit the maximum request-body size |
|
|
(in kBytes) |
|
|
|
|
|
don't accept HTTP-request headers larger then 32kBytes (see settings.h) |
|
|
|
|
|
minor speed improvements in the request-parser |
|
|
|
|
|
More cleanup patches from adam: |
|
|
|
|
|
* change pre-ANSI C/valid C++ syntax for function declarations/definitions |
|
|
from using () to (void). Ex: int foo(); --> int foo(void); |
|
|
* use static linkage as much as possible, to limit possible symbol |
|
|
collisions |
|
|
* whack more unneeded variables |
|
|
* try and prevent any errno clobbering by storing the old errno value before |
|
|
any subsequent system calls, and restoring before function exit. |
|
|
* change printf syntax for unsigned variables from %d to %u |
|
|
|
|
|
15.04.2004 18:41 |
|
|
- code cleanup |
|
|
|
|
|
handle all int != size_t cases in fcgi.c correctly |
|
|
|
|
|
check headerfields to have a value |
|
|
|
|
|
handle both EINVAL cases of writev() before the can occur |
|
|
|
|
|
limit content-length to SSIZE_MAX |
|
|
disallow negative content-length |
|
|
|
|
|
the usage of ltostr() has been reduced to the minimum in favour of |
|
|
buffer_/append|copy)_(long|off_t) |
|
|
|
|
|
dropped ultostr() and ultohex() in favour of buffer_* |
|
|
|
|
|
15.04.2004 16:35 |
|
|
- portablity |
|
|
|
|
|
more patches from adam: |
|
|
|
|
|
* remove warnings for unused parameters and variables |
|
|
* remove warnings for mismatched pointer assignments |
|
|
* change "gtime_r" to "gmtime_r" |
|
|
|
|
|
13.04.2004 20:48 |
|
|
- test-cases |
|
|
|
|
|
made the 'make check' target self-contained |
|
|
|
|
|
In our case we have to call the targets in the following order: |
|
|
|
|
|
$ ./configure ... |
|
|
$ make |
|
|
$ make install |
|
|
$ make check |
|
|
|
|
|
because the path to the plugins is hardcoded in the binary itself |
|
|
|
|
|
using |
|
|
|
|
|
$ ./configure --prefix=/tmp/lighttpd-1.1.x/ |
|
|
... |
|
|
|
|
|
will help if you don't really want to install before testing. |
|
|
|
|
|
13.04.2004 00:05 |
|
|
- portability |
|
|
|
|
|
adam sent another patchset: |
|
|
|
|
|
* Wrap PCRE-specific data member access with an #ifdef |
|
|
* Add const to pointer using return value from dlerror() |
|
|
* Explicitly initialize pointer in the lemon parser to 0, |
|
|
in order to catch missing else { } clause |
|
|
* Use a time_t rather than an int for gmtime() call. On some |
|
|
systems (including 32- and 64-bit SPARC) time_t is a long. |
|
|
|
|
|
12.04.2004 17:00 - 1.1.7 |
|
|
- fastcgi |
|
|
|
|
|
strip WS after HTTP-response headers coming from the FastCGI process |
|
|
|
|
|
added REMOTE_USER to the Server->FastCGI headers |
|
|
removed HTTP_AUTHORIZATION from the Server->FastCGI headers |
|
|
|
|
|
12.04.2004 10:24 |
|
|
- cgi |
|
|
|
|
|
if we don't get a partial HTTP-response-header send the content out as soon |
|
|
as the cgi script is finished |
|
|
|
|
|
12.04.2004 01:23 |
|
|
- compression |
|
|
|
|
|
added bzip2 compression (supported by w3m) |
|
|
|
|
|
12.04.2004 00:12 |
|
|
- configfile |
|
|
|
|
|
add some usefull error messages if the tokenizer or the parser fail to |
|
|
read the configfile |
|
|
|
|
|
11.04.2004 22:04 |
|
|
- configure |
|
|
|
|
|
added --with-ldap and --disable-lfs to the configure options |
|
|
|
|
|
11.04.2004 20:28 |
|
|
- 64bit offset size |
|
|
|
|
|
disable linux-sendfile support for linux 2.4.x for now as it don't |
|
|
support 64bit transfers |
|
|
|
|
|
fixed all assignments on the path from the stat() to the Content-Length |
|
|
HTTP-header |
|
|
|
|
|
- head requests |
|
|
set content-length in HEAD requests |
|
|
|
|
|
- accesslog |
|
|
|
|
|
write accesslog entry on network error |
|
|
|
|
|
write the correct amount of byte written to the accesslog |
|
|
|
|
|
11.04.2004 11:48 |
|
|
- code cleanup |
|
|
|
|
|
moved the config for the cgi-plugin from config.c to the plugin. |
|
|
|
|
|
moved some buffers which were only used by a one or two plugin from |
|
|
the server-structure to the plugins |
|
|
|
|
|
keeping the plugins independent from the server-core is a 'good thing' |
|
|
|
|
|
10.04.2004 19:06 |
|
|
- configfile parser |
|
|
|
|
|
removed the leaks from the configfile parser |
|
|
|
|
|
09.04.2004 23:15 - 1.1.6 |
|
|
- stricter http-parser |
|
|
|
|
|
added line-folding although noone really seems to use it. |
|
|
|
|
|
09.04.2004 18:42 |
|
|
- configfile parser |
|
|
|
|
|
the hand-written configfile parser has been replaced by a LALR(1) one. |
|
|
'lemon' from the sqlite guys has been used to generate the parser. |
|
|
|
|
|
- by-host, by-url, by-file, by ... |
|
|
|
|
|
$HTTP["url"] =~ "~$" { |
|
|
access.deny = "all" |
|
|
} |
|
|
|
|
|
$HTTP["host"] =~ "." { |
|
|
simple-vhost.server-root = "/home/weigon/wwwroot/servers/" |
|
|
simple-vhost.default-host = "grisu.home.kneschke.de" |
|
|
simple-vhost.document-root = "pages" |
|
|
} |
|
|
|
|
|
$HTTP["host"] == "incremental.home.kneschke.de" { |
|
|
server.docroot = "/hasdasd" |
|
|
} |
|
|
|
|
|
at least the parser can handle it now. Currently there is no real support |
|
|
for this context-based config-option. But the syntax and the parser are |
|
|
done. |
|
|
|
|
|
09.04.2004 10:58 |
|
|
- ssl support |
|
|
|
|
|
enable ssl support again |
|
|
|
|
|
- mmap |
|
|
|
|
|
enabled mmap+write again |
|
|
|
|
|
08.04.2004 12:34 |
|
|
- stricter http-parser |
|
|
|
|
|
based on a thread at |
|
|
|
|
|
http://lists.w3.org/Archives/Public/ietf-http-wg/2004JanMar/0050.html |
|
|
|
|
|
the HTTP-parser has been adjusted to be more correct when it comes to |
|
|
request-header fieldnames |
|
|
|
|
|
the whitespace handling around the ':' has been relaxed as requested |
|
|
|
|
|
07.04.2004 17:06 |
|
|
- sigaction |
|
|
|
|
|
use sigaction instead of signal if possible |
|
|
|
|
|
07.04.2004 13:55 |
|
|
- accesslog |
|
|
|
|
|
use localtime-timestamps in accesslogs if struct tm has a tm_gmtoff field |
|
|
|
|
|
07.04.2004 10:41 - 1.1.5 |
|
|
- -D_REENTRANT |
|
|
|
|
|
solaris + localtime_r() needs it |
|
|
|
|
|
07.04.2004 02:54 |
|
|
- mod_auth + ldap |
|
|
|
|
|
added a ldap backend to the auth plugin. |
|
|
|
|
|
06.04.2004 13:37 |
|
|
- pidfile |
|
|
|
|
|
fixed the permissions of the pidfile (Matthijs van der Klip) |
|
|
|
|
|
- specfile |
|
|
|
|
|
merge the RedHat and SuSE specfile with Matthijs |
|
|
|
|
|
- 64bit file-offsets |
|
|
|
|
|
moved the FILE_OFFSET_BITS settings from the config.h the Makefile to enable |
|
|
64bit offsets the right way |
|
|
|
|
|
06.04.2004 12:32 |
|
|
- mod_expire |
|
|
|
|
|
added an apache compatible mod_expire which adds Expires: headers to the |
|
|
request |
|
|
|
|
|
expire.url = ( "/buggy/" => "access 2 hours" ) |
|
|
|
|
|
05.04.2004 22:34 |
|
|
- solaris devpoll |
|
|
|
|
|
forgot to provide the infrastructure to actually enable the devpoll event |
|
|
handler. the same has been done for the freebsd-kqueue handler (which |
|
|
doesn't work yet) |
|
|
|
|
|
fixed the devpoll support while testing it on a real solaris box |
|
|
|
|
|
05.04.2004 09:49 |
|
|
- debian |
|
|
|
|
|
added debian packaging support written by Vincent Wagelaar |
|
|
|
|
|
- solaris |
|
|
|
|
|
Another set of patches for Solaris from Adam |
|
|
* Detect <sys/devpoll.h> |
|
|
* Detect and include <sys/filio.h> for definition of FIONREAD |
|
|
* Detect and link against the library exporting hstrerror |
|
|
* Correct typo in SENDFILE_LIB |
|
|
* Use__sun instead of __solaris__ for detecting operating system. |
|
|
Please see http://predef.sourceforge.net/preos.html for more |
|
|
detail |
|
|
* Explicitly cast arguments to isalpha() and toupper() to unsigned |
|
|
char. The man page says that the functions support the range of |
|
|
an unsigned char, and EOF. |
|
|
* Include <limits.h> and define UIO_MAXIOV as IOV_MAX for Solaris. |
|
|
|
|
|
04.04.2004 18:05 - 1.1.4 |
|
|
- pidfile |
|
|
|
|
|
added pidfile writing after deamonizing |
|
|
|
|
|
04.04.2004 01:05 |
|
|
- fdevent |
|
|
|
|
|
added framework for freebsd_kqueue and solaris_devpoll |
|
|
|
|
|
the solaris_devpoll one might event work (untested) |
|
|
|
|
|
03.04.2004 16:41 |
|
|
- network |
|
|
|
|
|
added framework for filebased chunks |
|
|
- read-write + mmap-write |
|
|
- linux-sendfile |
|
|
- freebsd-sendfile |
|
|
- solaris-sendfilev (untested) |
|
|
|
|
|
and memorybased chunks |
|
|
- write |
|
|
- writev |
|
|
|
|
|
made TCP_CORK a 'global' flag around the write_chunkqueue-calls |
|
|
|
|
|
the writev() support should improve the performance for all non-static |
|
|
pages. |
|
|
|
|
|
170 req/s against 158 req/s for the following script if writev() is used |
|
|
instead of write() |
|
|
|
|
|
<?php |
|
|
|
|
|
for ($i = 0; $i < 1000; $i++) { |
|
|
print $i."<br />\n"; |
|
|
flush(); |
|
|
} |
|
|
|
|
|
?> |
|
|
|
|
|
28.03.2004 13:42 |
|
|
- cleanup |
|
|
|
|
|
applied some cleanup patches submitted by Adam: |
|
|
* variables modified in signal handlers should be sig_atomic_t |
|
|
* assert statements should not have side effects |
|
|
* STD{IN,OUT,ERR}_FILENO preferred instead of {0,1,2} |
|
|
* dieing --> dying |
|
|
* SEGFAULT calls abort directly, instead of derefencing a NULL pointer |
|
|
|
|
|
- mod_accesslog |
|
|
|
|
|
modified the accesslog format to be CLF compatible |
|
|
set locale for LC_TIME to C |
|
|
|
|
|
26.03.2004 16:13 |
|
|
- path info |
|
|
|
|
|
enabled the pathinfo code again |
|
|
|
|
|
|
|
|
25.03.2004 13:30 - 1.1.3 |
|
|
- portability |
|
|
|
|
|
compiles fine now without any patches on IRIX |
|
|
|
|
|
- hostname detection |
|
|
|
|
|
reworked "get the hostname for HTTP/1.0 requests which don't specify a |
|
|
Host: ..." to only query the name in this single case for the server side |
|
|
of the connection |
|
|
|
|
|
- errorlog handling |
|
|
|
|
|
stderr is only used until the errorlog is init'ed |
|
|
if no error-log is specified, syslog() is used |
|
|
if cycling error-log fails, syslog() is used |
|
|
|
|
|
- accesslog cycling |
|
|
|
|
|
don't fall back to stdout anymore |
|
|
|
|
|
- event-handler |
|
|
|
|
|
use poll() as the default event-handler again |
|
|
|
|
|
24.03.2004 01:37 - 1.1.2a |
|
|
- error messages |
|
|
|
|
|
added some hints to the failing error-messages |
|
|
|
|
|
22.03.2004 01:58 - 1.1.2 |
|
|
- configure |
|
|
|
|
|
some protability changes to get the 'inline' working with the MIPS CC |
|
|
|
|
|
21.03.2004 22:00 |
|
|
- mod_rewrite, mod_redirect |
|
|
|
|
|
reading the config for those two plugins was not working |
|
|
|
|
|
- fdevents |
|
|
|
|
|
changed the compile time setting for the event handling into a run-time |
|
|
setting. |
|
|
|
|
|
server.event-handler = "select" # poll, linux-rtsig, linux-sysepoll |
|
|
|
|
|
added sys_epoll() for linux 2.6 |
|
|
|
|
|
select - all systems |
|
|
poll - Linux 2.1.23+, all XPG4-UNIX |
|
|
sigio - linux 2.4.0+ |
|
|
sysepoll - linux 2.5.66+ |
|
|
|
|
|
1000-4k-nok 1000-100k-nok |
|
|
select 1776.99 296.52 |
|
|
poll 678.02 607.28 |
|
|
sigio 3754.46 1411.23 |
|
|
sysepoll 3817.67 1431.02 |
|
|
|
|
|
21.03.2004 00:10 |
|
|
- configure script |
|
|
|
|
|
rewrote large parts of the lib/header detection of the configure script |
|
|
|
|
|
20.03.2004 01:39 |
|
|
- fastcgi |
|
|
|
|
|
as the docroot on external hosts might be different than the webserver |
|
|
docroot it can now be specified in the config: |
|
|
|
|
|
fastcgi.server = ( ".php" => |
|
|
( "grisu" => |
|
|
( |
|
|
"host" => "192.168.2.41", |
|
|
"docroot" => "/home/jan/servers/", |
|
|
"port" => 1026 |
|
|
) |
|
|
) |
|
|
) |
|
|
|
|
|
a huge internal cleanup in the config handling made the code more readable. |
|
|
some more warnings and error checking should track most of the config |
|
|
errors for the fastcgi plugin |
|
|
|
|
|
19.03.2004 12:34 |
|
|
- external patches |
|
|
|
|
|
Matthijs van der Klip submitted three nice patches: |
|
|
- turn off writing in mod_status if status.rrd-reports is set to disable |
|
|
- fix for a debug message |
|
|
- get the hostname for HTTP/1.0 requests which don't specify a Host: ... |
|
|
- rc-script for RedHat |
|
|
|
|
|
- documentation |
|
|
|
|
|
added a documentation section about authentification |
|
|
- doc/authentification.txt |
|
|
|
|
|
19.03.2004 05:11 |
|
|
- optimizations |
|
|
|
|
|
implemented special versions of |
|
|
- strcasecmp (array_strcasecmp) |
|
|
- isdigit, isalpha, isalnum (light_*) |
|
|
|
|
|
added a faster check for a finished header |
|
|
|
|
|
after disabling all modules it is still possible to get 20 kreq/s. |
|
|
|
|
|
15.03.2004 19:45 - 1.1.1 |
|
|
- localizer server |
|
|
|
|
|
added the localizer-server module to the code |
|
|
|
|
|
- chunked-encoding |
|
|
|
|
|
Apple's Safari or HTTP-Handler doesn't handle chunked-extensions defined by |
|
|
RFC 2616 correctly and doesn't ignore them. Disabled the chunked-extension |
|
|
which were just used for debugging purposes. |
|
|
|
|
|
07.03.2004 12:20 |
|
|
- optimization |
|
|
|
|
|
moved the checks if a plugins support a given function from the dispatcher |
|
|
(plugins_call) to plugins_call_init() to do the check only once. |
|
|
|
|
|
equalized the plugins functions to only two types: |
|
|
SERVER_FUNC() |
|
|
CONNECTION_FUNC() |
|
|
|
|
|
replaced all handwritten plugin_call-handlers with macros |
|
|
|
|
|
made all plugin-functions 'static' |
|
|
|
|
|
with all plugins loaded we are at 15kreq/s gain |
|
|
without any plugin loaded at 16kreq/s |
|
|
|
|
|
before the change we were at 13kreq/s |
|
|
|
|
|
06.03.2004 21:13 |
|
|
- compilation fixes |
|
|
|
|
|
fixed some warnings on FreeBSD and NetBSD by adding |
|
|
#include <netinet/in.h> |
|
|
|
|
|
ifdef'ed a pcre-entry in base.h |
|
|
|
|
|
remove #define _XOPEN_SOURCE from http_auth.c for IRIX |
|
|
crypt() on Linux needs _XOPEN_SOURCE |
|
|
|
|
|
06.03.2004 19:18 - 1.1.0 |
|
|
- authentification |
|
|
|
|
|
added htpasswd and htdigest backends to work against user-files generated |
|
|
by htpasswd and htdigest. |
|
|
|
|
|
for basic auth: |
|
|
- plain |
|
|
- htpasswd (crypt only) |
|
|
- htdigest |
|
|
|
|
|
for digest auth: |
|
|
- plain |
|
|
- htdigest |
|
|
|
|
|
06.03.2004 17:35 |
|
|
- authentification |
|
|
|
|
|
check the method in the authorization header againt the configured method |
|
|
|
|
|
06.03.2004 14:54 |
|
|
- hostname parsing |
|
|
|
|
|
added a RFC-2396 conforming "Host:" parser |
|
|
added 17 checks for the parser |
|
|
|
|
|
06.03.2004 10:25 |
|
|
- configuration |
|
|
|
|
|
added a warning for unknown configuration variables. |
|
|
|
|
|
dropped the 'specific-for.url' ideas for now as it is not known yet how to |
|
|
implement it the right way |
|
|
|
|
|
renamed some config-variables to reflect there actual meaning |
|
|
- server.host -> server.bind |
|
|
- server.virtual-* -> simple-vhost.* |
|
|
- server.userid -> server.username |
|
|
- server.groupid -> server.groupname |
|
|
- server.docroot -> server.document-root |
|
|
|
|
|
|
|
|
05.03.2004 15:36 |
|
|
- fastcgi |
|
|
|
|
|
internals: moved all mod_fastcgi settings from the global struct to the |
|
|
plugin itself |
|
|
|
|
|
- vhosting |
|
|
|
|
|
got a patch for enhanced virtualhosting from christian kruse -> mod_evhost |
|
|
|
|
|
moved the virtual hosting config (server.virtual-*) to it's own module |
|
|
called mod_simple_vhost |
|
|
|
|
|
23.02.2004 10:06 |
|
|
- configfile |
|
|
|
|
|
rearragned the config-file structure again to be able to add settings for |
|
|
a given URL, Host, Filename, ... |
|
|
This change affects some config-options directly (access.deny, |
|
|
url.rewrite, url.redirect, virtual-hosting, ...) |
|
|
|
|
|
added 'specific-for.url' for url specific config settings |
|
|
|
|
|
- digest auth |
|
|
|
|
|
FIX: md5-sess type |
|
|
|
|
|
seperate the auth-backend stuff |
|
|
|
|
|
13.02.2004 22:23 - lighttpd 1.0.3 |
|
|
- content-length + POST |
|
|
|
|
|
FIX: If header and content didn't fit into one single packet the rest of |
|
|
the content was not read correctly |
|
|
|
|
|
13.02.2004 01:07 |
|
|
- content-length + POST |
|
|
|
|
|
the check for content-length on a POST request vanished somehow in one of |
|
|
the previous releases. |
|
|
|
|
|
- header search |
|
|
|
|
|
FIX: the search for header fields was up to now case-sensitive. Now it is |
|
|
like required by the standard case-in-sensitive. |
|
|
|
|
|
- browser bugs |
|
|
|
|
|
w3m 0.2.5 adds an additional \r\n at the end of the POST requests which is |
|
|
handled now |
|
|
|
|
|
10.02.2004 10:12 |
|
|
- start script |
|
|
|
|
|
took the suse rc-skeleton which states to be LSB compliant and modified it |
|
|
for lighttpd needs |
|
|
|
|
|
09.02.2004 11:48 |
|
|
- HEAD requests |
|
|
|
|
|
FIX: HEAD requests for static files delived the content from the GET |
|
|
request. (test case is added) |
|
|
|
|
|
08.02.2004 15:53 |
|
|
- directory listings |
|
|
|
|
|
FIX: the pathname has not encoded at all before it was transfered to the |
|
|
browser. a proper url and html-encoding has been added. |
|
|
|
|
|
added modification-time and filesize to the output |
|
|
|
|
|
added a basic css for the virtual listings |
|
|
|
|
|
07.02.2004 22:15 - lighttpd 1.0.2 |
|
|
- sample configfile |
|
|
|
|
|
rearranged the config-file to have all the important options at the top |
|
|
|
|
|
- docs |
|
|
|
|
|
added a mod-rewrite options |
|
|
|
|
|
- mod_accesslog |
|
|
|
|
|
stdout is no longer used a default for the accesslog |
|
|
|
|
|
- error-messages |
|
|
|
|
|
the 404 is now reported in the error-log |
|
|
|
|
|
07.02.2004 17:30 |
|
|
- configfile handling |
|
|
|
|
|
if a key is used twice like |
|
|
|
|
|
url.rewrite = ( "url1" => "url") |
|
|
url.rewrite = ( "url2" => "url") |
|
|
|
|
|
you get an error now. You have to write: |
|
|
|
|
|
url.rewrite = ( "url1" => "url", |
|
|
"url2" => "url") |
|
|
|
|
|
31.01.2004 12:22 - lighttpd 1.0.1 |
|
|
- log cycling |
|
|
|
|
|
added a sighup-handler to the plugin interface and fixed the log-cycling |
|
|
for access-logs |
|
|
|
|
|
- portability |
|
|
|
|
|
disabled the interval-time optimization on IRIX |
|
|
|
|
|
- documentation |
|
|
|
|
|
added a lot of new documentation to README |
|
|
|
|
|
31.01.2004 10:59 |
|
|
- status module |
|
|
|
|
|
added two new options rrd-dir and rrd-reports: |
|
|
|
|
|
rrd-reports = (boolean) # enables RRD-reports |
|
|
rrd-dir = (string) # path for the daily status-files |
|
|
|
|
|
fixed the "status-files in /"-bug this way |
|
|
|
|
|
|
|
|
22.01.2004 13:38 - lighttpd 1.0.0 |
|
|
- simple docroot |
|
|
|
|
|
fixed handling of docroots if virtual-host is disabled |
|
|
|
|
|
27.12.2003 11:12 |
|
|
- license handling |
|
|
|
|
|
added the first interface to license handling. |
|
|
|
|
|
25.12.2003 23:48 |
|
|
- protability |
|
|
|
|
|
Verified again that the code compiles and runs cleanly on Linux, FreeBSD, |
|
|
NetBSD and IRIX |
|
|
|
|
|
compiling with gcc and the option -pedantic works fine |
|
|
compiling with mipspro cc works fine, too |
|
|
|
|
|
- tests |
|
|
|
|
|
added some more tests: 39 tests |
|
|
|
|
|
25.12.2003 16:01 |
|
|
- protability |
|
|
|
|
|
some compile fixes for FreeBSD have been applied and a new switch has been |
|
|
added to choose between IPv4 and IPv6 on FreeBSD. |
|
|
(cmdline: -6, configfile: server.use-ipv6) |
|
|
|
|
|
- packaging |
|
|
|
|
|
cleaned up the specfile for building RPMs |
|
|
|
|
|
21.12.2003 01:00 |
|
|
- authorization |
|
|
|
|
|
brought basic and digest auth back to life. this module as the last one |
|
|
which had to be updated after the config-file changes |
|
|
|
|
|
- test harness framework |
|
|
|
|
|
add 3 tests for basic auth |
|
|
|
|
|
20.12.2003 22:10 |
|
|
- compression |
|
|
|
|
|
added gzip compression (gzip-header + deflate + crc) |
|
|
|
|
|
- test harness framework |
|
|
|
|
|
added a 22 tests to verify the correct behaviour of lighttpd |
|
|
|
|
|
- request parsing |
|
|
|
|
|
GET http://www.yahoo.com/ HTTP/1.0 |
|
|
|
|
|
is handled now as |
|
|
|
|
|
GET / HTTP/1.0 |
|
|
|
|
|
- plugins |
|
|
|
|
|
moved FastCGI and CGI handling into modules which can be loaded at run-time |
|
|
|
|
|
17.12.2003 13:18 |
|
|
- compression |
|
|
|
|
|
the directory structure is now build automaticly |
|
|
|
|
|
15.12.2003 01:00 |
|
|
- compression |
|
|
|
|
|
added a compression cache to the compression module (mod_compress) |
|
|
|
|
|
Vary: Accept-Encoding is set now as it influences to delivered stream of |
|
|
bytes. This is important for caches. |
|
|
|
|
|
10.12.2003 00:24 |
|
|
- config files |
|
|
|
|
|
a new config-file format is ready for the final release of lighttpd. |
|
|
|
|
|
it supports: |
|
|
|
|
|
server.docroot = "string" |
|
|
server.host = integer |
|
|
server.modules = ( "string", "string" ) |
|
|
server.mimetypes = ( "key" => "value" ) |
|
|
server.complex = ( "key" => ( "string", integer ), |
|
|
"string", |
|
|
integer ) |
|
|
|
|
|
the syntax should look familar to all who worked with Perl or PHP. |
|
|
|
|
|
config-file handling has been seperated into a parser and a lexer. Both |
|
|
are currently written by hand and will propably be rewritten into bison + |
|
|
flex if time permits. But that would be a cosmetical change. |
|
|
|
|
|
05.12.2003 03:07 |
|
|
- status-page |
|
|
|
|
|
improved the status page to display |
|
|
- the current connection-stati |
|
|
- average throughput over 5 seconds |
|
|
(requests/s and output-bound traffic) |
|
|
|
|
|
now you can see what is going on in the server |
|
|
|
|
|
- access-log |
|
|
|
|
|
the accesslog is now a module and can be disabled by just removing the |
|
|
plugin from the list of loaded plugins |
|
|
|
|
|
04.12.2003 16:18 |
|
|
- chroot-ing |
|
|
|
|
|
how-to: using chroot |
|
|
|
|
|
- chroot to /home/www/ |
|
|
- docroot at /servers/<hostname>/pages/ |
|
|
- defaulthost www.example.org |
|
|
|
|
|
e.g. (external view) |
|
|
/home/www/servers/www.example.org/pages/index.html |
|
|
|
|
|
(in chroot) |
|
|
/servers/www.example.org/pages/index.html |
|
|
|
|
|
config: |
|
|
|
|
|
chroot /home/www/ |
|
|
userid wwwrun |
|
|
groupid nogroup |
|
|
|
|
|
virtual-server-root /servers/ |
|
|
virtual-server-default-host www.example.org |
|
|
virtual-server-docroot /pages/ |
|
|
|
|
|
The FastCGI process is living outside this chroot definition as it is |
|
|
started seperatly. |
|
|
|
|
|
01.12.2003 02:06 |
|
|
- cleanup |
|
|
|
|
|
in preparation for the first stable release some internals had to be |
|
|
cleaned up. Basicly it was a cleanup of workflow of the creation of the |
|
|
response-header. All modules can use a clean interface for this purpose |
|
|
now. This is espacially usefull for all modules which have to pass some |
|
|
HTTP-headers to the client. |
|
|
|
|
|
29.11.2003 22:22 |
|
|
- modules |
|
|
|
|
|
finally moved the modules to shared libraries and cleaned up some code |
|
|
path to become more readable. |
|
|
|
|
|
So far we have: |
|
|
|
|
|
mod_rewrite |
|
|
mod_redirect |
|
|
mod_access |
|
|
mod_auth |
|
|
mod_cache |
|
|
mod_chat |
|
|
mod_status |
|
|
mod_maps |
|
|
|
|
|
28.11.2003 18:16 |
|
|
- redirects |
|
|
|
|
|
as lighttpd supports url-rewriting redirection was a few lines of new code. |
|
|
|
|
|
redirect ^/wishlist/(.+) http://jan.kneschke.de/wishlist/$1 |
|
|
|
|
|
rewrite ^/wishlist/(.+) /new/wishlist/$1 |
|
|
|
|
|
28.11.2003 17:00 |
|
|
- signal stuff |
|
|
|
|
|
setitimer is used to send a event every second to call time() only once a |
|
|
second. another system call which has been remove from the main-loop. |
|
|
|
|
|
sending HUP to lighttpd will close and re-open the logfiles. this is used |
|
|
for cycling logfiles. |
|
|
|
|
|
#! /bin/sh |
|
|
|
|
|
### |
|
|
# |
|
|
# a simple logfile rotator for lighttpd |
|
|
# |
|
|
|
|
|
DATE=`date +"%Y%m%d-%H%M"` |
|
|
LPID=`pidof lighttpd` |
|
|
mv access.log access.log.${DATE} |
|
|
kill -HUP ${LPID} |
|
|
gzip access.log.${DATE} |
|
|
|
|
|
27.11.2003 01:07 |
|
|
- native win32 port |
|
|
|
|
|
a first attempt for a native win32 has been done. For now mingw is the |
|
|
base for the development as it provides a basic unix-like framework for |
|
|
building native win32 applications. |
|
|
|
|
|
the most internal files have been ported and the over all progress is |
|
|
going well. At the end this will just be a prove of concept. |
|
|
|
|
|
26.11.2003 01:17 |
|
|
- access denied |
|
|
|
|
|
added a access-deny filter to block specific urls like |
|
|
|
|
|
access-deny ~ |
|
|
access-deny .inc |
|
|
|
|
|
17.11.2003 01:06 |
|
|
- bug fixing |
|
|
|
|
|
a fstat() on a opened fd which has changed reports wrong the file-info. |
|
|
Using stat() again helps to solve this problem. |
|
|
|
|
|
the sig-io version doesn't suffer from this problem. |
|
|
|
|
|
the etags are now used for verifing file-cache-entries. |
|
|
|
|
|
- chat |
|
|
|
|
|
enabled the internal login mechanism again |
|
|
|
|
|
added support transfering session-infos over MySQL. |
|
|
|
|
|
15.11.2003 00:19 |
|
|
- optimizing |
|
|
|
|
|
added a buffer_equal_reverse function which is optimized version of strcmp |
|
|
which is going backwards as pathnames are often the same for in the first |
|
|
bytes. |
|
|
|
|
|
wrote a one-pass parser for the request-header. The combination of |
|
|
strstr(..., "\r\n") to seperate lines and strchr(..., ':') to seperate |
|
|
keys from values more or less touched every byte twice. |
|
|
|
|
|
we are still at 18.000 req/s for 4kb keep-alive requests even with etags |
|
|
and handling all header fields. |
|
|
|
|
|
14.11.2003 17:26 |
|
|
- fcgi |
|
|
|
|
|
Content-Type wasn't passed correctly to the FastCGI app. HTTP_CONTENT_TYPE |
|
|
was sent instead. |
|
|
|
|
|
- cache |
|
|
|
|
|
provided access to the Session-ID |
|
|
|
|
|
- error-log |
|
|
|
|
|
the timestamp is now written in a human readable form |
|
|
|
|
|
22.10.2003 00:06 |
|
|
- fcgi, cgi |
|
|
|
|
|
added a special set of array-functions which are optimised for the "insert |
|
|
only once" case. |
|
|
|
|
|
this provides access to the headers which are now forwarded to the external |
|
|
interfaces. Before this change only a limited set of request-headers were |
|
|
forwarded. |
|
|
|
|
|
21.10.2003 11:58 |
|
|
- modules |
|
|
|
|
|
added a new module-hook after the basic-init of the module for handling |
|
|
config-settings and prepare the overall operartion (like building |
|
|
db-connections, compiling regexes, ...) |
|
|
|
|
|
- cache |
|
|
|
|
|
use turckmm-cache 2.4.3 to get some numbers for the php-latency: |
|
|
|
|
|
/usr/sbin/ab -n 10000 -c 10 http://alba.home.kneschke.de:1025/index.php |
|
|
|
|
|
handling the cache-decision and the cache-hit in php: |
|
|
|
|
|
cache-miss: 100% (-> $version = 0) |
|
|
|
|
|
plain : 108.13 req/s |
|
|
turckmm-cache: 218.39 req/s |
|
|
|
|
|
cache-hit: 100% (-> $version = 1) |
|
|
|
|
|
plain : 164.45 req/s |
|
|
turckmm-cache: 653.98 req/s |
|
|
|
|
|
handling the cache-decision and the cache-hit in the server: |
|
|
|
|
|
cache-hit: 100%, but using index.cml |
|
|
|
|
|
cml: 4918.84 req/s (no keep-alive) |
|
|
cml: 6901.31 req/s (keep-alive) |
|
|
|
|
|
cache-miss: 100%, but using index.cml |
|
|
|
|
|
plain : 108.39 req/s |
|
|
turckmm-cache: 217.84 req/s |
|
|
|
|
|
Conclusion: |
|
|
- there is no loss in the cache-miss case through the cml-handling |
|
|
- the cache-hit case can be improved dramaticly with lighttpd-cache |
|
|
- turckmm-cache improves the cache-miss case alot |
|
|
|
|
|
20.10.2003 00:40 |
|
|
- cache |
|
|
|
|
|
the first 'real-life' test showed dramatic improvements in the req/s |
|
|
handling. |
|
|
|
|
|
The basic idea was to move the decision if a php-page can be taken from |
|
|
the cache from the php-code to the webserver. |
|
|
|
|
|
See here why this is a good thing: |
|
|
|
|
|
the quite common code which works for http://jan.kneschke.de/ is using |
|
|
templates and is quite static, but depends on 4 external files (the |
|
|
menu-structure, the template, the current content, the class-file). |
|
|
|
|
|
the index-file is always: |
|
|
|
|
|
include_once "jk.inc"; |
|
|
|
|
|
$v = new view(); |
|
|
print $v->get(array(array ("file" => "content.html"))); |
|
|
|
|
|
It is more or less the same for all pages. |
|
|
|
|
|
This basic setup can deliver 100 requests/s. |
|
|
|
|
|
The next step has: |
|
|
- application bases caching |
|
|
|
|
|
as we know that each pages depends on those 4 files, you can check if they |
|
|
have been modified since the last request and deliver the content from the |
|
|
cache otherwise. |
|
|
|
|
|
this increased the throughput to 150 req/s. (cache-hit ratio 100%) |
|
|
|
|
|
The next logic step is to move the decision-making process out of the PHP |
|
|
code as PHP is to slow for the cache-hit path: |
|
|
|
|
|
a CML (Cache-Markup-Language) has been written which describes the whole |
|
|
decision process which has been written in PHP-code before: |
|
|
|
|
|
|
|
|
output.content-type text/html |
|
|
|
|
|
output.include _cache.html |
|
|
|
|
|
trigger.handler index.php |
|
|
|
|
|
trigger.if file.mtime("../lib/php/menu.csv") > file.mtime("_cache.html") |
|
|
trigger.if file.mtime("templates/jk.tmpl") > file.mtime("_cache.html") |
|
|
trigger.if file.mtime("content.html") > file.mtime("_cache.html") |
|
|
|
|
|
if one of the 'trigger.if' statements is true the 'trigger.handler' is |
|
|
called to generate the pages. |
|
|
|
|
|
if none of the them is trigger the files from 'output.include' are sent to |
|
|
the browser with content-type specified in the first line: |
|
|
|
|
|
The result was very 'promissing': |
|
|
|
|
|
5900 req/s with keep-alive |
|
|
3800 req/s without keep-alive |
|
|
|
|
|
(both for a cache-hit ratio of 100%) |
|
|
|
|
|
for keep-alive this is factor <b>59</b> against the plain un-cached |
|
|
version and still <b>39</b> againt the php-cache-version which is doing |
|
|
exactly the same. |
|
|
|
|
|
Time for party. :) |
|
|
|
|
|
19.10.2003 - 18:55 |
|
|
- cache |
|
|
|
|
|
the handling of functions has been improved. they are now 'plugable'. just |
|
|
the dlopen() stuff is missing. |
|
|
|
|
|
a new datatype has been added: the string |
|
|
|
|
|
this makes it possible to evaluate something like: |
|
|
|
|
|
trigger.if unix.time.now() - file.mtime("head.html") > 30 |
|
|
trigger.if mysql.query("SELECT count(*) " + \ |
|
|
" FROM structure AS struc, session AS sess " + \ |
|
|
" WHERE struct.user = sess.user" + \ |
|
|
" AND sess.id = \"" + mysql.escape("ab\"c") + "\"") |
|
|
|
|
|
you see: |
|
|
- string operations (concat) |
|
|
- handing of escape-sequences |
|
|
- functions |
|
|
- comparisions |
|
|
|
|
|
18.10.2003 - 13:39 |
|
|
- cvs |
|
|
|
|
|
imported everything into the cvs server which makes the whole revision |
|
|
handler a lot easier. The CVS server was up all the time but not used. |
|
|
Importing required 5 minutes of work which included merge the freebsd and |
|
|
the linux tree. |
|
|
|
|
|
- compilers + platforms |
|
|
|
|
|
on a regular various compilers and platform are check to compile with with |
|
|
the current code base: |
|
|
|
|
|
platform | os | compiler | state |
|
|
---------+---------------------+--------------+--------- |
|
|
ia32 | Linux 2.4.22 | gcc 2.95.3 | ok |
|
|
ia32 | FreeBSD 5.1-CURRENT | gcc 3.3.1 | ok |
|
|
mips64 | IRIX 6.5 | gcc 3.2.2 | ok |
|
|
misp64 | IRIX 6.5 | MIPSpro 7.41 | ok |
|
|
|
|
|
the mipspro compiler revealed some warning which resulted in a nice |
|
|
code-cleanup that made the code more readable. |
|
|
|
|
|
18.10.2003 - 03:00 |
|
|
- e-tags and friends |
|
|
|
|
|
in preparation for the php-conference at the begin of november in |
|
|
frankfurt/main the server has the support some more caching/proxy tags |
|
|
like: |
|
|
- E-Tag (14.19) [done] |
|
|
- If-Match (14.24) |
|
|
- If-None-Match (14.26) [done] |
|
|
- If-Range (14.27) |
|
|
|
|
|
Section (13.3.3) binds them together. [RFC 2616] |
|
|
|
|
|
using lxr.kde.org and lxr.mozilla.org revealed that |
|
|
- konqui only uses if-none-match |
|
|
- mozilla uses if-none-match and if-range |
|
|
|
|
|
it looks like it isn't that easy to trigger the if-range case. |
|
|
|
|
|
As ulf suggested the etag is a hash of file-size, inode-number and mtime. |
|
|
|
|
|
- fd-caching |
|
|
|
|
|
ulf just phoned me ask proposed the free the cache more agressivly in case |
|
|
of fd-shortage. increasing the the fd-limit is the better idea. :) |
|
|
|
|
|
17.10.2003 12:45 |
|
|
- chat |
|
|
|
|
|
finished the mysql-support for storing the sessions |
|
|
|
|
|
12.10.2003 20:56 |
|
|
- valgrind |
|
|
|
|
|
used valgrind again to verify that the code a free of mem-leaks and found |
|
|
a 'leak generator' in the chunk-api. |
|
|
|
|
|
the last few leaks were just some missing free()'s at the end of the |
|
|
program run which would have been freed anyway. |
|
|
|
|
|
at the end valgrind couldn't find any missing free()'s. |
|
|
|
|
|
11.10.2003 12:09 |
|
|
- FastCGI |
|
|
|
|
|
reduced the number of system calls for FastCGI to WebServer to 2 calls per |
|
|
fd-event. (ioctl() + read()) |
|
|
|
|
|
this has no direct effect of the performance of the server, but improves |
|
|
the possible througput of the load-balancer. |
|
|
|
|
|
10.10.2003 21:09 |
|
|
- FastCGI - load-balancing |
|
|
|
|
|
a brown paper bug has been fixed which caused to decreasing throughput if |
|
|
load-balancing was enabled. |
|
|
|
|
|
|
|
|
benchmarking the req/s with load-balancing shows really nice results: |
|
|
|
|
|
|
|
|
server : req/s comment |
|
|
---------+-------------------------------------------------- |
|
|
ulf : 764.06 (php) |
|
|
lappi : 800.06 (php) |
|
|
|
|
|
ulf+lappi: 1526.95 (2 * php) |
|
|
|
|
|
grisu : 1265.66 (php + ab + lighttpd) |
|
|
|
|
|
|
|
|
all : 1647.72 (3 * php + ab + lighttpd) |
|
|
all(nice): 1904.40 (same as all, but the local php on grisu |
|
|
has been 'nice -20'd) |
|
|
|
|
|
|
|
|
if a php is run on the load-balancer it has to get a lower priority than |
|
|
the load-balancer itself as to handle the work of (here) 3 php-servers. |
|
|
|
|
|
|
|
|
10.10.2003 15:11 |
|
|
- java ? |
|
|
|
|
|
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/common/AJPv13.html |
|
|
|
|
|
08.10.2003 21:08 |
|
|
- gigE |
|
|
|
|
|
Last week 3 RTL8169S gigE cards arrived and were installed in the |
|
|
test-framework. |
|
|
|
|
|
They are very cheap (20 Euros) and are a good start for a low-level |
|
|
benchmark network. |
|
|
|
|
|
First result show us: |
|
|
|
|
|
48 Mb/s with ab. |
|
|
|
|
|
The webserver and the test-server are equipped with a 2000+ AMD CPU. The |
|
|
system load 95%, user load is 3%, the rest is idle on both plattforms. |
|
|
|
|
|
After some calculations at gets clear that there are various bottlenecks: |
|
|
|
|
|
1. The PCI-Bus (32bit/33Mhz) can only transfer 133Mb/s |
|
|
- 48 Mb/s TCP-Traffic results in 55Mb/s Ethernet-Traffic (verified with |
|
|
slurm) [outgoing] |
|
|
- there is about 10Mb/s incomming traffic at the PCI bus which the |
|
|
requests |
|
|
- the rest of the devices at the PCI bus are eating the last few mb/s |
|
|
2. IRQ-Handling |
|
|
- There are reasons why the RTL8169S cards are so cheap |
|
|
- they can't send jumbo-frames |
|
|
- only 8k/64k buffers which results in a interrupt every 3 packets |
|
|
- they are at least handling checksum offloading for ip, udp and tcp |
|
|
|
|
|
In the end there is a need for new hardware to limit the throughput by the |
|
|
Ethernet again. |
|
|
- PCI-X, 64bit-PCI, ... |
|
|
- 'real' gigE-Network cards |
|
|
- ... |
|
|
|
|
|
|
|
|
BTW: 2.4.22 + the r8139 driver are very flacky and resulted in 3 lock-ups |
|
|
for today. |
|
|
|
|
|
In another test the dual-PPro-FreeBSD 5.1-CURRENT machine has been used as |
|
|
server with a gigE interface (re0) at has shown that the CPU is the limit |
|
|
for this combination. The maximum thoughput was 7Mb/s. |
|
|
|
|
|
Another small benchmark: |
|
|
$ ab -n 1000 -c 10 http://192.168.2.41:<port>/lighttpd-20030925.tar |
|
|
|
|
|
port | server | CPU Idle |
|
|
------+-------<EFBFBD>---------+----------- |
|
|
1025 | lighttpd | 75% |
|
|
1026 | thttpd 2.23b1 | 75% |
|
|
1027 | boa-0.94.14rc17 | 69% * |
|
|
1028 | apache 1.3.x | 77% |
|
|
|
|
|
|
|
|
In all 4 cases the thoughput was 8600 kbytes/s. |
|
|
|
|
|
* boa had 9 failed transfers. |
|
|
|
|
|
- FreeBSD |
|
|
|
|
|
The problems with FreeBSD 5.0-RELEASE vanished after updating to |
|
|
5.1-CURRENT. |
|
|
|
|
|
26.09.2003 18:22 |
|
|
- FreeBSD |
|
|
|
|
|
A SMP-machine has been added to the test-farm. It is running FreeBSD |
|
|
5.1-RELEASE and will help to the improve the scalability. |
|
|
|
|
|
fixed sendfile() handling. |
|
|
|
|
|
- FreeBSD problems |
|
|
|
|
|
FreeBSD-5.1-RELEASE-SMP |
|
|
2 * Pentium Pro 200 MHz |
|
|
192.168.2.38 (doubleheart) |
|
|
(webserver [lighttpd at port 1025, thttpd at port 1027]) |
|
|
|
|
|
Linux 2.4.20 |
|
|
1 * AMD 2000+ |
|
|
192.168.2.10 (grisu) |
|
|
(ab) |
|
|
|
|
|
Problem: |
|
|
Connections are reset by the kernel without any application intervention. |
|
|
|
|
|
Calling 'ab' (apachebench) at grisu with the following paramters: |
|
|
|
|
|
/usr/sbin/ab -n 10000 -c 10 http://192.168.2.38:1025/index.html |
|
|
|
|
|
results in the following output: |
|
|
|
|
|
... |
|
|
Time taken for tests: 40.610 seconds |
|
|
Complete requests: 10000 |
|
|
Failed requests: 5980 |
|
|
(Connect: 0, Length: 5980, Exceptions: 0) |
|
|
... |
|
|
|
|
|
|
|
|
This is reproducable and the number of failed requests is always |
|
|
5980 +/- 50 requests. In other words: after 4000 requests tcpdump shows |
|
|
the following output: |
|
|
|
|
|
tcpdump shows: |
|
|
|
|
|
00:53:48.923029 192.168.2.10.39774 > 192.168.2.38.1025: S [tcp sum ok] |
|
|
1013737315:1013737315(0) win 5840 <mss 1460,sackOK,timestamp 5208461 |
|
|
0,nop,wscale0> (DF) (ttl 64, id 7918, len 60) |
|
|
0x0000 4500 003c 1eee 4000 4006 964d c0a8 020a E..<..@.@..M.... |
|
|
0x0010 c0a8 0226 9b5e 0401 3c6c 6763 0000 0000 ...&.^..<lgc.... |
|
|
0x0020 a002 16d0 eeaa 0000 0204 05b4 0402 080a ................ |
|
|
0x0030 004f 798d 0000 0000 0103 0300 .Oy......... |
|
|
|
|
|
00:53:48.923330 192.168.2.38.1025 > 192.168.2.10.39774: S [tcp sum ok] |
|
|
1803860672:1803860672(0) ack 1013737316 win 65535 <mss 1460,nop,wscale |
|
|
1,nop,nop,timestamp 4459794 5208461> (DF) (ttl 64, id 6821, len 60) |
|
|
0x0000 4500 003c 1aa5 4000 4006 9a96 c0a8 0226 E..<..@.@......& |
|
|
0x0010 c0a8 020a 0401 9b5e 6b84 bac0 3c6c 6764 .......^k...<lgd |
|
|
0x0020 a012 ffff d4ce 0000 0204 05b4 0103 0301 ................ |
|
|
0x0030 0101 080a 0044 0d12 004f 798d .....D...Oy. |
|
|
|
|
|
00:53:48.924009 192.168.2.10.39774 > 192.168.2.38.1025: . [tcp sum ok] ack 1 |
|
|
win 5840 <nop,nop,timestamp 5208461 4459794> (DF) |
|
|
(ttl 64, id 7919, len 52) |
|
|
0x0000 4500 0034 1eef 4000 4006 9654 c0a8 020a E..4..@.@..T.... |
|
|
0x0010 c0a8 0226 9b5e 0401 3c6c 6764 6b84 bac1 ...&.^..<lgdk... |
|
|
0x0020 8010 16d0 e9c3 0000 0101 080a 004f 798d .............Oy. |
|
|
0x0030 0044 0d12 |
|
|
|
|
|
00:53:48.924150 192.168.2.10.39774 > 192.168.2.38.1025: P [tcp sum ok] |
|
|
1:29(28) ack 1 win 5840 <nop,nop,timestamp 5208461 4459794> (DF) |
|
|
(ttl 64, id 7920, len 80) |
|
|
0x0000 4500 0050 1ef0 4000 4006 9637 c0a8 020a E..P..@.@..7.... |
|
|
0x0010 c0a8 0226 9b5e 0401 3c6c 6764 6b84 bac1 ...&.^..<lgdk... |
|
|
0x0020 8018 16d0 27e4 0000 0101 080a 004f 798d ....'........Oy. |
|
|
0x0030 0044 0d12 4745 5420 2f69 6e64 6578 2e68 .D..GET./index.h |
|
|
0x0040 746d 6c20 4854 5450 2f31 2e30 0d0a 0d0a tml.HTTP/1.0.... |
|
|
|
|
|
00:53:48.924728 192.168.2.38.1025 > 192.168.2.10.39774: R [tcp sum ok] |
|
|
1803860673:1803860673(0) win 0 (ttl 64, id 6831, len 40) |
|
|
0x0000 4500 0028 1aaf 0000 4006 daa0 c0a8 0226 E..(....@......& |
|
|
0x0010 c0a8 020a 0401 9b5e 6b84 bac1 0000 0000 .......^k....... |
|
|
0x0020 5004 0000 64ba 0000 |
|
|
|
|
|
SYN, SYN+ACK, ACK, DATA, RST |
|
|
|
|
|
strace shows that no connection attempt has been reported to the |
|
|
application which is poll()'ing the server socket. |
|
|
|
|
|
/* the common loop without any block attempts */ |
|
|
|
|
|
accept(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, [0]) = 5 |
|
|
fcntl(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0 |
|
|
read(5, "GET /index.html HTTP/1.0\r\n\r\n", 4095) = 28 |
|
|
stat("/home/jan/lighttpd-0.1.0/servers/", {st_mode=S_IFDIR|0755, st_size=512, ...}) = 0 |
|
|
fstat(6, {st_mode=S_IFREG|0644, st_size=4348, ...}) = 0 |
|
|
write(5, "HTTP/1.0 200 OK\r\nConnection: clo"..., 235) = 235 |
|
|
write(2, "1064875136: (network.c.210) 235 "..., 33) = 33 |
|
|
syscall_393(0x6, 0x5, 0, 0, 0x10fc, 0, 0xbfbff2c0, 0) = 0 |
|
|
close(5) = 0 |
|
|
|
|
|
/* no futher waiting connections */ |
|
|
|
|
|
accept(3, 0xbfbff700, [1852702730]) = -1 EAGAIN (Resource temporarily unavailable) |
|
|
|
|
|
/* enter the main-loop */ |
|
|
|
|
|
gettimeofday({1769235301, 1663069807}, NULL) = 0 |
|
|
poll([{fd=3, events=POLLIN}], 1, 1000) = 0 |
|
|
gettimeofday({4294967295, 65537}, NULL) = 0 |
|
|
poll([{fd=3, events=POLLIN}], 1, 1000) = 0 |
|
|
gettimeofday({4294967295, 65537}, NULL) = 0 |
|
|
poll([{fd=3, events=POLLIN}], 1, 1000) = 0 |
|
|
... |
|
|
|
|
|
(strace is broken for accept() and gettimeofday(), syscall_393() is sendfile()) |
|
|
|
|
|
after entering the main-loop the webserver doesn't receive any new POLLIN |
|
|
events at all for the next 10-15 seconds. Any connection-attempt within |
|
|
the period is, as you can see in the tcpdump output, accepted by the |
|
|
kernel and the received data is thrown away as the kernel sends a RST. |
|
|
After those 10-15 seconds the application gets a POLLIN event for the |
|
|
server socket and the normal data-transfer taken place for the next 4000 |
|
|
requests. |
|
|
|
|
|
This behaviour is reproducable with thttpd 2.20c and the current lighttpd. |
|
|
|
|
|
|
|
|
26.09.2003 11:42 |
|
|
- localizer |
|
|
|
|
|
ported the localizer-server application into a module for lighttpd. After |
|
|
30 minutes the code was ported and funtional. This modules provides access |
|
|
to the localizer-db by a HTTP-Interface and generates the response as |
|
|
HTML, CSV and plain-text. |
|
|
|
|
|
So far, the module-interface looks good and flexible enough. |
|
|
|
|
|
7000 req/s is good enough too. Generating the HTML and querying the DB |
|
|
needs some time. |
|
|
|
|
|
22.09.2003 08:40 |
|
|
- modules |
|
|
|
|
|
introduced a simple module interface which allow to hook into the process |
|
|
of handling the requests. Basicly it allows to move the url-rewriter, the |
|
|
auth-sub-system and the cache out of the main-code. The module-interface |
|
|
will be extended to allow the cgi and the fastcgi sub-processes to be |
|
|
<