SOURCES: lighttpd-branch.diff - update to r2389: * Do not pass Proxy-Conn...
glen
glen at pld-linux.org
Thu Feb 5 18:40:37 CET 2009
Author: glen Date: Thu Feb 5 17:40:37 2009 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- update to r2389:
* Do not pass Proxy-Connection: header from client to backend http server in mod_proxy (#1877)
* Fix wrong malloc sizes in mod_accesslog (probably nothing bad happened...) (fixes #1855, thx ycheng)
* Some small buffer.c fixes (closes #1837)
* Remove floating point math from server.c (fixes #1402)
* Disable SSLv2 by default
* Use/enforce sane max-connection values (fixes #1803)
* Allow mod_compress to return 304 (Not Modified); compress ignores the static-file.etags option.(fixes #1884)
* Add option to ignore the "Expect: 100-continue" header instead of returning 417 Expectation failed (closes #1017)
* Use modified etags in mod_compress (fixes #1800)
* Fix max-connection limit handling/100% cpu usage (fixes #1436)
* Fix error handling in freebsd-sendfile (fixes #1813)
---- Files affected:
SOURCES:
lighttpd-branch.diff (1.43 -> 1.44)
---- Diffs:
================================================================
Index: SOURCES/lighttpd-branch.diff
diff -u SOURCES/lighttpd-branch.diff:1.43 SOURCES/lighttpd-branch.diff:1.44
--- SOURCES/lighttpd-branch.diff:1.43 Mon Jan 19 11:06:14 2009
+++ SOURCES/lighttpd-branch.diff Thu Feb 5 18:40:31 2009
@@ -1,7 +1,7 @@
Index: cmake/LighttpdMacros.cmake
===================================================================
--- cmake/LighttpdMacros.cmake (.../tags/lighttpd-1.4.20) (revision 0)
-+++ cmake/LighttpdMacros.cmake (.../branches/lighttpd-1.4.x) (revision 2371)
++++ cmake/LighttpdMacros.cmake (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -0,0 +1,43 @@
+## our modules are without the "lib" prefix
+
@@ -50,8 +50,8 @@
===================================================================
Index: src/configfile-glue.c
===================================================================
---- src/configfile-glue.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/configfile-glue.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/configfile-glue.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/configfile-glue.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -1,4 +1,5 @@
#include <string.h>
+#include <stdlib.h>
@@ -83,8 +83,8 @@
return -1;
Index: src/mod_cgi.c
===================================================================
---- src/mod_cgi.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_cgi.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_cgi.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_cgi.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -822,15 +822,27 @@
);
cgi_env_add(&env, CONST_STR_LEN("SERVER_PORT"), buf, strlen(buf));
@@ -153,10 +153,22 @@
cgi_env_add(&env, CONST_STR_LEN("REMOTE_ADDR"), s, strlen(s));
LI_ltostr(buf,
+Index: src/base.h
+===================================================================
+--- src/base.h (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/base.h (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -497,6 +497,7 @@
+ #endif
+ } stat_cache_engine;
+ unsigned short enable_cores;
++ unsigned short reject_expect_100_with_417;
+ } server_config;
+
+ typedef struct {
Index: src/mod_rewrite.c
===================================================================
---- src/mod_rewrite.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_rewrite.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_rewrite.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_rewrite.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -350,11 +350,7 @@
if (!p->conf.rewrite) return HANDLER_GO_ON;
@@ -172,8 +184,8 @@
pcre *match;
Index: src/connections.c
===================================================================
---- src/connections.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/connections.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/connections.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/connections.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -330,15 +330,13 @@
buffer_prepare_copy(b, 4 * 1024);
len = recv(con->fd, b->ptr, b->size - 1, 0);
@@ -208,8 +220,8 @@
/* the chunk is too large now, close it */
Index: src/mod_alias.c
===================================================================
---- src/mod_alias.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_alias.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_alias.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_alias.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -103,9 +103,8 @@
}
/* ok, they have same prefix. check position */
@@ -224,9 +236,34 @@
}
Index: src/configfile.c
===================================================================
---- src/configfile.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/configfile.c (.../branches/lighttpd-1.4.x) (revision 2371)
-@@ -940,7 +940,6 @@
+--- src/configfile.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/configfile.c (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -94,6 +94,7 @@
+ { "etag.use-inode", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 49 */
+ { "etag.use-mtime", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 50 */
+ { "etag.use-size", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 51 */
++ { "server.reject-expect-100-with-417", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 52 */
+ { "server.host", "use server.bind instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
+ { "server.docroot", "use server.document-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
+ { "server.virtual-root", "load mod_simple_vhost and use simple-vhost.server-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
+@@ -135,6 +136,7 @@
+
+ cv[43].destination = &(srv->srvconf.max_conns);
+ cv[12].destination = &(srv->srvconf.max_request_size);
++ cv[52].destination = &(srv->srvconf.reject_expect_100_with_417);
+ srv->config_storage = calloc(1, srv->config_context->used * sizeof(specific_config *));
+
+ assert(srv->config_storage);
+@@ -159,7 +161,7 @@
+ s->max_write_idle = 360;
+ s->use_xattr = 0;
+ s->is_ssl = 0;
+- s->ssl_use_sslv2 = 1;
++ s->ssl_use_sslv2 = 0;
+ s->use_ipv6 = 0;
+ #ifdef HAVE_LSTAT
+ s->follow_symlink = 1;
+@@ -940,7 +942,6 @@
}
int config_parse_cmd(server *srv, config_t *context, const char *cmd) {
@@ -234,7 +271,7 @@
tokenizer_t t;
int ret;
buffer *source;
-@@ -960,7 +959,7 @@
+@@ -960,7 +961,7 @@
chdir(context->basedir->ptr);
}
@@ -245,8 +282,8 @@
ret = -1;
Index: src/mod_trigger_b4_dl.c
===================================================================
---- src/mod_trigger_b4_dl.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_trigger_b4_dl.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_trigger_b4_dl.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_trigger_b4_dl.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -1,5 +1,6 @@
#include <ctype.h>
#include <stdlib.h>
@@ -266,8 +303,8 @@
#if defined(HAVE_PCRE_H)
Index: src/mod_mysql_vhost.c
===================================================================
---- src/mod_mysql_vhost.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_mysql_vhost.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_mysql_vhost.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_mysql_vhost.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -245,7 +245,6 @@
if (!(buffer_is_empty(s->myuser) ||
buffer_is_empty(s->mydb))) {
@@ -309,10 +346,32 @@
}
#define PATCH(x) \
+Index: src/request.c
+===================================================================
+--- src/request.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/request.c (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -894,11 +894,12 @@
+ *
+ */
+
+- con->http_status = 417;
+- con->keep_alive = 0;
+-
+- array_insert_unique(con->request.headers, (data_unset *)ds);
+- return 0;
++ if (srv->srvconf.reject_expect_100_with_417 && 0 == buffer_caseless_compare(CONST_BUF_LEN(ds->value), CONST_STR_LEN("100-continue"))) {
++ con->http_status = 417;
++ con->keep_alive = 0;
++ array_insert_unique(con->request.headers, (data_unset *)ds);
++ return 0;
++ }
+ } else if (cmp > 0 && 0 == (cmp = buffer_caseless_compare(CONST_BUF_LEN(ds->key), CONST_STR_LEN("Host")))) {
+ if (!con->request.http_host) {
+ con->request.http_host = ds->value;
Index: src/inet_ntop_cache.c
===================================================================
---- src/inet_ntop_cache.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/inet_ntop_cache.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/inet_ntop_cache.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/inet_ntop_cache.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -11,7 +11,7 @@
#ifdef HAVE_IPV6
size_t ndx = 0, i;
@@ -324,8 +383,8 @@
/* IPv6 found in cache */
Index: src/mod_rrdtool.c
===================================================================
---- src/mod_rrdtool.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_rrdtool.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_rrdtool.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_rrdtool.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -179,6 +179,11 @@
p->read_fd = from_rrdtool_fds[0];
p->rrdtool_pid = pid;
@@ -340,8 +399,8 @@
}
Index: src/response.c
===================================================================
---- src/response.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/response.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/response.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/response.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -44,16 +44,15 @@
buffer_append_string(b, get_http_status_name(con->http_status));
@@ -431,10 +490,31 @@
* - based on the clean URL
*
*/
+Index: src/buffer.c
+===================================================================
+--- src/buffer.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/buffer.c (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -159,7 +159,7 @@
+ if (!src) return -1;
+
+ if (src->used == 0) {
+- b->used = 0;
++ buffer_reset(b);
+ return 0;
+ }
+ return buffer_copy_string_len(b, src->ptr, src->used - 1);
+@@ -187,6 +187,7 @@
+ if (!s || !b) return -1;
+
+ s_len = strlen(s);
++ if (s_len > maxlen) s_len = maxlen;
+ buffer_prepare_append(b, maxlen + 1);
+ if (b->used == 0)
+ b->used++;
Index: src/mod_simple_vhost.c
===================================================================
---- src/mod_simple_vhost.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_simple_vhost.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_simple_vhost.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_simple_vhost.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -249,6 +249,8 @@
return HANDLER_GO_ON;
} else {
@@ -446,9 +526,17 @@
buffer_copy_string_buffer(con->server_name, con->uri.authority);
Index: src/mod_proxy.c
===================================================================
---- src/mod_proxy.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_proxy.c (.../branches/lighttpd-1.4.x) (revision 2371)
-@@ -652,7 +652,7 @@
+--- src/mod_proxy.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_proxy.c (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -454,6 +454,7 @@
+
+ if (ds->value->used && ds->key->used) {
+ if (buffer_is_equal_string(ds->key, CONST_STR_LEN("Connection"))) continue;
++ if (buffer_is_equal_string(ds->key, CONST_STR_LEN("Proxy-Connection"))) continue;
+
+ buffer_append_string_buffer(b, ds->key);
+ buffer_append_string_len(b, CONST_STR_LEN(": "));
+@@ -652,7 +653,7 @@
buffer_prepare_append(hctx->response, b + 1);
hctx->response->used = 1;
} else {
@@ -457,7 +545,7 @@
}
if (-1 == (r = read(hctx->fd, hctx->response->ptr + hctx->response->used - 1, b))) {
-@@ -1198,7 +1198,8 @@
+@@ -1198,7 +1199,8 @@
host = (data_proxy *)extension->value->data[0];
/* Use last_used_ndx from first host in list */
@@ -470,12 +558,19 @@
Index: src/config.h.cmake
===================================================================
--- src/config.h.cmake (.../tags/lighttpd-1.4.20) (revision 0)
-+++ src/config.h.cmake (.../branches/lighttpd-1.4.x) (revision 2371)
-@@ -0,0 +1,150 @@
++++ src/config.h.cmake (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -0,0 +1,157 @@
+/*
+ CMake autogenerated config.h file. Do not edit!
+*/
+
++/* Package details */
++#define LIGHTTPD_VERSION_ID ${LIGHTTPD_VERSION_ID}
++#define PACKAGE_NAME "${PACKAGE_NAME}"
++#define PACKAGE_VERSION "${PACKAGE_VERSION}"
++#define PACKAGE_BUILD_DATE "${PACKAGE_BUILD_DATE}"
++#define LIBRARY_DIR "${LIGHTTPD_LIBRARY_DIR}"
++
+/* System */
+#cmakedefine HAVE_SYS_DEVPOLL_H
+#cmakedefine HAVE_SYS_EPOLL_H
@@ -622,10 +717,47 @@
+#cmakedefine HAVE_FASTCGI_FASTCGI_H
+
+#cmakedefine LIGHTTPD_STATIC
+Index: src/network_freebsd_sendfile.c
+===================================================================
+--- src/network_freebsd_sendfile.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/network_freebsd_sendfile.c (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -167,6 +167,7 @@
+ switch(errno) {
+ case EAGAIN:
+ case EINTR:
++ r = 0; /* try again later */
+ break;
+ case ENOTCONN:
+ return -2;
+@@ -174,10 +175,7 @@
+ log_error_write(srv, __FILE__, __LINE__, "ssd", "sendfile: ", strerror(errno), errno);
+ return -1;
+ }
+- }
+-
+- if (r == 0 && (errno != EAGAIN && errno != EINTR)) {
+- int oerrno = errno;
++ } else if (r == 0) {
+ /* We got an event to write but we wrote nothing
+ *
+ * - the file shrinked -> error
+@@ -190,12 +188,9 @@
+
+ if (offset >= sce->st.st_size) {
+ /* file shrinked, close the connection */
+- errno = oerrno;
+-
+ return -1;
+ }
+
+- errno = oerrno;
+ return -2;
+ }
+
Index: src/http_auth.c
===================================================================
---- src/http_auth.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/http_auth.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/http_auth.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/http_auth.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -57,22 +57,25 @@
static const char base64_pad = '=';
@@ -750,8 +882,8 @@
if (NULL == (ldap = ldap_init(p->conf.auth_ldap_hostname->ptr, LDAP_PORT))) {
Index: src/mod_redirect.c
===================================================================
---- src/mod_redirect.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_redirect.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_redirect.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_redirect.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -178,11 +178,7 @@
mod_redirect_patch_connection(srv, con, p);
@@ -767,8 +899,8 @@
pcre *match;
Index: src/http_auth.h
===================================================================
---- src/http_auth.h (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/http_auth.h (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/http_auth.h (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/http_auth.h (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -63,7 +63,7 @@
mod_auth_plugin_config **config_storage;
@@ -780,8 +912,8 @@
int http_auth_basic_check(server *srv, connection *con, mod_auth_plugin_data *p, array *req, buffer *url, const char *realm_str);
Index: src/mod_webdav.c
===================================================================
---- src/mod_webdav.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_webdav.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_webdav.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_webdav.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -1026,6 +1026,8 @@
if (MAP_FAILED == (c->file.mmap.start = mmap(0, c->file.length, PROT_READ, MAP_SHARED, c->file.fd, 0))) {
log_error_write(srv, __FILE__, __LINE__, "ssbd", "mmap failed: ",
@@ -802,8 +934,8 @@
}
Index: src/mod_compress.c
===================================================================
---- src/mod_compress.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_compress.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_compress.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_compress.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -49,6 +49,7 @@
buffer *compress_cache_dir;
array *compress;
@@ -896,7 +1028,47 @@
}
}
}
-@@ -668,27 +709,21 @@
+@@ -619,6 +660,7 @@
+ size_t m;
+ off_t max_fsize;
+ stat_cache_entry *sce = NULL;
++ buffer *mtime = NULL;
+
+ if (con->mode != DIRECT || con->http_status) return HANDLER_GO_ON;
+
+@@ -636,8 +678,30 @@
+
+ max_fsize = p->conf.compress_max_filesize;
+
+- stat_cache_get_entry(srv, con, con->physical.path, &sce);
++ if (con->conf.log_request_handling) {
++ log_error_write(srv, __FILE__, __LINE__, "s", "-- handling file as static file");
++ }
+
++ if (HANDLER_ERROR == stat_cache_get_entry(srv, con, con->physical.path, &sce)) {
++ con->http_status = 403;
++
++ log_error_write(srv, __FILE__, __LINE__, "sbsb",
++ "not a regular file:", con->uri.path,
++ "->", con->physical.path);
++
++ return HANDLER_FINISHED;
++ }
++
++ /* we only handle regular files */
++#ifdef HAVE_LSTAT
++ if ((sce->is_symlink == 1) && !con->conf.follow_symlink) {
++ return HANDLER_GO_ON;
++ }
++#endif
++ if (!S_ISREG(sce->st.st_mode)) {
++ return HANDLER_GO_ON;
++ }
++
+ /* don't compress files that are too large as we need to much time to handle them */
+ if (max_fsize && (sce->st.st_size >> 10) > max_fsize) return HANDLER_GO_ON;
+
+@@ -668,27 +732,21 @@
if (NULL != (ds = (data_string *)array_get_element(con->request.headers, "Accept-Encoding"))) {
int accept_encoding = 0;
char *value = ds->value->ptr;
@@ -929,10 +1101,92 @@
if (matched_encodings) {
const char *dflt_gzip = "gzip";
+@@ -698,6 +756,17 @@
+ const char *compression_name = NULL;
+ int compression_type = 0;
+
++ mtime = strftime_cache_get(srv, sce->st.st_mtime);
++
++ /* try matching original etag of uncompressed version */
++ etag_mutate(con->physical.etag, sce->etag);
++ if (HANDLER_FINISHED == http_response_handle_cachable(srv, con, mtime)) {
++ response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_BUF_LEN(sce->content_type));
++ response_header_overwrite(srv, con, CONST_STR_LEN("Last-Modified"), CONST_BUF_LEN(mtime));
++ response_header_overwrite(srv, con, CONST_STR_LEN("ETag"), CONST_BUF_LEN(con->physical.etag));
++ return HANDLER_FINISHED;
++ }
++
+ /* select best matching encoding */
+ if (matched_encodings & HTTP_ACCEPT_ENCODING_BZIP2) {
+ compression_type = HTTP_ACCEPT_ENCODING_BZIP2;
+@@ -710,41 +779,34 @@
+ compression_name = dflt_deflate;
+ }
+
+- /* deflate it */
+- if (p->conf.compress_cache_dir->used) {
+- if (0 == deflate_file_to_file(srv, con, p,
+- con->physical.path, sce, compression_type)) {
+- buffer *mtime;
++ /* try matching etag of compressed version */
++ buffer_copy_string_buffer(srv->tmp_buf, sce->etag);
++ buffer_append_string_len(srv->tmp_buf, CONST_STR_LEN("-"));
++ buffer_append_string(srv->tmp_buf, compression_name);
++ etag_mutate(con->physical.etag, srv->tmp_buf);
+
+- response_header_overwrite(srv, con, CONST_STR_LEN("Content-Encoding"), compression_name, strlen(compression_name));
+-
+- mtime = strftime_cache_get(srv, sce->st.st_mtime);
+- response_header_overwrite(srv, con, CONST_STR_LEN("Last-Modified"), CONST_BUF_LEN(mtime));
+-
+- etag_mutate(con->physical.etag, sce->etag);
+- response_header_overwrite(srv, con, CONST_STR_LEN("ETag"), CONST_BUF_LEN(con->physical.etag));
+-
+- response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_BUF_LEN(sce->content_type));
+-
+- return HANDLER_GO_ON;
+- }
+- } else if (0 == deflate_file_to_buffer(srv, con, p,
+- con->physical.path, sce, compression_type)) {
+- buffer *mtime;
+-
++ if (HANDLER_FINISHED == http_response_handle_cachable(srv, con, mtime)) {
+ response_header_overwrite(srv, con, CONST_STR_LEN("Content-Encoding"), compression_name, strlen(compression_name));
+-
+- mtime = strftime_cache_get(srv, sce->st.st_mtime);
++ response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_BUF_LEN(sce->content_type));
+ response_header_overwrite(srv, con, CONST_STR_LEN("Last-Modified"), CONST_BUF_LEN(mtime));
+-
+- etag_mutate(con->physical.etag, sce->etag);
+ response_header_overwrite(srv, con, CONST_STR_LEN("ETag"), CONST_BUF_LEN(con->physical.etag));
+-
+- response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_BUF_LEN(sce->content_type));
+-
+ return HANDLER_FINISHED;
+ }
+- break;
++
++ /* deflate it */
++ if (p->conf.compress_cache_dir->used) {
++ if (0 != deflate_file_to_file(srv, con, p, con->physical.path, sce, compression_type))
++ return HANDLER_GO_ON;
++ } else {
++ if (0 != deflate_file_to_buffer(srv, con, p, con->physical.path, sce, compression_type))
++ return HANDLER_GO_ON;
++ }
++ response_header_overwrite(srv, con, CONST_STR_LEN("Content-Encoding"), compression_name, strlen(compression_name));
++ response_header_overwrite(srv, con, CONST_STR_LEN("Last-Modified"), CONST_BUF_LEN(mtime));
++ response_header_overwrite(srv, con, CONST_STR_LEN("ETag"), CONST_BUF_LEN(con->physical.etag));
++ response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_BUF_LEN(sce->content_type));
++ /* let mod_staticfile handle the cached compressed files, physical path was modified */
++ return p->conf.compress_cache_dir->used ? HANDLER_GO_ON : HANDLER_FINISHED;
+ }
+ }
+ }
Index: src/spawn-fcgi.c
===================================================================
---- src/spawn-fcgi.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/spawn-fcgi.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/spawn-fcgi.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/spawn-fcgi.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -58,7 +58,7 @@
@@ -963,8 +1217,8 @@
Index: src/mod_auth.c
===================================================================
---- src/mod_auth.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_auth.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_auth.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_auth.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -115,7 +115,7 @@
PATCH(auth_ldap_starttls);
PATCH(auth_ldap_allow_empty_pw);
@@ -1004,8 +1258,8 @@
Index: src/http-header-glue.c
===================================================================
---- src/http-header-glue.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/http-header-glue.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/http-header-glue.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/http-header-glue.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -280,6 +280,7 @@
strncpy(buf, con->request.http_if_modified_since, used_len);
buf[used_len] = '\0';
@@ -1024,8 +1278,8 @@
* parsing failed, let's get out of here
Index: src/mod_fastcgi.c
===================================================================
---- src/mod_fastcgi.c (.../tags/lighttpd-1.4.20) (revision 2371)
-+++ src/mod_fastcgi.c (.../branches/lighttpd-1.4.x) (revision 2371)
+--- src/mod_fastcgi.c (.../tags/lighttpd-1.4.20) (revision 2389)
++++ src/mod_fastcgi.c (.../branches/lighttpd-1.4.x) (revision 2389)
@@ -3252,6 +3252,7 @@
fcgi_connection_close(srv, hctx);
@@ -1126,8 +1380,8 @@
Index: src/CMakeLists.txt
===================================================================
--- src/CMakeLists.txt (.../tags/lighttpd-1.4.20) (revision 0)
-+++ src/CMakeLists.txt (.../branches/lighttpd-1.4.x) (revision 2371)
-@@ -0,0 +1,604 @@
++++ src/CMakeLists.txt (.../branches/lighttpd-1.4.x) (revision 2389)
+@@ -0,0 +1,598 @@
+INCLUDE(CheckCSourceCompiles)
+INCLUDE(CheckIncludeFiles)
+INCLUDE(CheckFunctionExists)
@@ -1489,12 +1743,10 @@
+ CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_LIBDL)
+ENDIF(HAVE_DLFCN_H)
+
-+ADD_DEFINITIONS(
-+ -DLIGHTTPD_VERSION_ID=10400
-+ -DPACKAGE_NAME="\\"${CMAKE_PROJECT_NAME}\\""
-+ -DPACKAGE_VERSION="\\"${CPACK_PACKAGE_VERSION}\\""
-+ -DPACKAGE_BUILD_DATE="\\"-\\""
-+ )
++SET(LIGHTTPD_VERSION_ID 10400)
++SET(PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
++SET(PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}")
++EXEC_PROGRAM(date ARGS "'+%b %d %Y %H:%M:%S UTC'" OUTPUT_VARIABLE PACKAGE_BUILD_DATE)
+
+IF(NOT SBINDIR)
+ SET(SBINDIR "sbin")
@@ -1505,14 +1757,10 @@
+ENDIF(NOT LIGHTTPD_MODULES_DIR)
+
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/lighttpd-branch.diff?r1=1.43&r2=1.44&f=u
More information about the pld-cvs-commit
mailing list