===================================================================
Index: src/configfile-glue.c
===================================================================
---- src/configfile-glue.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/configfile-glue.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/configfile-glue.c (.../tags/lighttpd-1.4.23)
++++ src/configfile-glue.c (.../branches/lighttpd-1.4.x)
@@ -103,7 +103,6 @@
if (e != ds->value->ptr && !*e && l >=0 && l <= 65535) {
*((unsigned short *)(cv[i].destination)) = l;
data_string *ds = (data_string *)du;
Index: src/mod_cgi.c
===================================================================
---- src/mod_cgi.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_cgi.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_cgi.c (.../tags/lighttpd-1.4.23)
++++ src/mod_cgi.c (.../branches/lighttpd-1.4.x)
@@ -56,6 +56,7 @@
typedef struct {
Index: src/network_write.c
===================================================================
---- src/network_write.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/network_write.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/network_write.c (.../tags/lighttpd-1.4.23)
++++ src/network_write.c (.../branches/lighttpd-1.4.x)
@@ -46,15 +46,27 @@
toSend = c->mem->used - 1 - c->offset;
#ifdef __WIN32
Index: src/mod_secure_download.c
===================================================================
---- src/mod_secure_download.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_secure_download.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_secure_download.c (.../tags/lighttpd-1.4.23)
++++ src/mod_secure_download.c (.../branches/lighttpd-1.4.x)
@@ -37,7 +37,7 @@
buffer *secret;
buffer *uri_prefix;
Index: src/base.h
===================================================================
---- src/base.h (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/base.h (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/base.h (.../tags/lighttpd-1.4.23)
++++ src/base.h (.../branches/lighttpd-1.4.x)
@@ -84,6 +84,7 @@
typedef enum { T_CONFIG_UNSET,
T_CONFIG_STRING,
fdevents *ev, *ev_ins;
Index: src/mod_rewrite.c
===================================================================
---- src/mod_rewrite.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_rewrite.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_rewrite.c (.../tags/lighttpd-1.4.23)
++++ src/mod_rewrite.c (.../branches/lighttpd-1.4.x)
@@ -176,7 +176,7 @@
data_unset *du;
buffer_append_string_len(con->request.uri, pattern+k, pattern[k] == pattern[k+1] ? 1 : 2);
Index: src/connections.c
===================================================================
---- src/connections.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/connections.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/connections.c (.../tags/lighttpd-1.4.23)
++++ src/connections.c (.../branches/lighttpd-1.4.x)
@@ -782,13 +782,13 @@
CLEAN(request.pathinfo);
CLEAN(request.request);
break;
Index: src/network.c
===================================================================
---- src/network.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/network.c (.../branches/lighttpd-1.4.x) (revision 2613)
-@@ -167,6 +167,11 @@
+--- src/network.c (.../tags/lighttpd-1.4.23)
++++ src/network.c (.../branches/lighttpd-1.4.x)
+@@ -90,6 +90,7 @@
+
+ srv_socket = calloc(1, sizeof(*srv_socket));
+ srv_socket->fd = -1;
++ srv_socket->fde_ndx = -1;
+
+ srv_socket->srv_token = buffer_init();
+ buffer_copy_string_buffer(srv_socket->srv_token, host_token);
+@@ -103,7 +104,7 @@
+ if (NULL == (sp = strrchr(b->ptr, ':'))) {
+ log_error_write(srv, __FILE__, __LINE__, "sb", "value of $SERVER[\"socket\"] has to be \"ip:port\".", b);
+
+- return -1;
++ goto error_free_socket;
+ }
+
+ host = b->ptr;
+@@ -126,7 +127,7 @@
+ } else if (port == 0 || port > 65535) {
+ log_error_write(srv, __FILE__, __LINE__, "sd", "port out of range:", port);
+
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (*host == '\0') host = NULL;
+@@ -138,12 +139,12 @@
+
+ if (-1 == (srv_socket->fd = socket(srv_socket->addr.plain.sa_family, SOCK_STREAM, 0))) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "socket failed:", strerror(errno));
+- return -1;
++ goto error_free_socket;
+ }
+ #else
+ log_error_write(srv, __FILE__, __LINE__, "s",
+ "ERROR: Unix Domain sockets are not supported.");
+- return -1;
++ goto error_free_socket;
+ #endif
+ }
+
+@@ -153,7 +154,7 @@
+
+ if (-1 == (srv_socket->fd = socket(srv_socket->addr.plain.sa_family, SOCK_STREAM, IPPROTO_TCP))) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "socket failed:", strerror(errno));
+- return -1;
++ goto error_free_socket;
+ }
+ srv_socket->use_ipv6 = 1;
+ }
+@@ -163,17 +164,22 @@
+ srv_socket->addr.plain.sa_family = AF_INET;
+ if (-1 == (srv_socket->fd = socket(srv_socket->addr.plain.sa_family, SOCK_STREAM, IPPROTO_TCP))) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "socket failed:", strerror(errno));
+- return -1;
++ goto error_free_socket;
}
}
/* */
srv->cur_fds = srv_socket->fd;
-@@ -280,8 +285,6 @@
+ val = 1;
+ if (setsockopt(srv_socket->fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)) < 0) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "socketsockopt failed:", strerror(errno));
+- return -1;
++ goto error_free_socket;
+ }
+
+ switch(srv_socket->addr.plain.sa_family) {
+@@ -198,7 +204,7 @@
+ "sssss", "getaddrinfo failed: ",
+ gai_strerror(r), "'", host, "'");
+
+- return -1;
++ goto error_free_socket;
+ }
+
+ memcpy(&(srv_socket->addr), res->ai_addr, res->ai_addrlen);
+@@ -220,17 +226,17 @@
+ log_error_write(srv, __FILE__, __LINE__,
+ "sds", "gethostbyname failed: ",
+ h_errno, host);
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (he->h_addrtype != AF_INET) {
+ log_error_write(srv, __FILE__, __LINE__, "sd", "addr-type != AF_INET: ", he->h_addrtype);
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (he->h_length != sizeof(struct in_addr)) {
+ log_error_write(srv, __FILE__, __LINE__, "sd", "addr-length != sizeof(in_addr): ", he->h_length);
+- return -1;
++ goto error_free_socket;
+ }
+
+ memcpy(&(srv_socket->addr.ipv4.sin_addr.s_addr), he->h_addr_list[0], he->h_length);
+@@ -260,7 +266,7 @@
+ host);
+
+
+- return -1;
++ goto error_free_socket;
+ }
+
+ /* connect failed */
+@@ -275,14 +281,12 @@
+ "testing socket failed:",
+ host, strerror(errno));
+
+- return -1;
++ goto error_free_socket;
+ }
break;
default:
- addr_len = 0;
-
- return -1;
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (0 != bind(srv_socket->fd, (struct sockaddr *) &(srv_socket->addr), addr_len)) {
+@@ -298,12 +302,12 @@
+ host, port, strerror(errno));
+ break;
+ }
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (-1 == listen(srv_socket->fd, 128 * 8)) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "listen failed: ", strerror(errno));
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (s->is_ssl) {
+@@ -316,14 +320,14 @@
+ if (0 == RAND_status()) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",
+ "not enough entropy in the pool");
+- return -1;
++ goto error_free_socket;
+ }
+ }
+
+ if (NULL == (s->ssl_ctx = SSL_CTX_new(SSLv23_server_method()))) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",
+ ERR_error_string(ERR_get_error(), NULL));
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (!s->ssl_use_sslv2) {
+@@ -331,7 +335,7 @@
+ if (SSL_OP_NO_SSLv2 != SSL_CTX_set_options(s->ssl_ctx, SSL_OP_NO_SSLv2)) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",
+ ERR_error_string(ERR_get_error(), NULL));
+- return -1;
++ goto error_free_socket;
+ }
+ }
+
+@@ -340,33 +344,33 @@
+ if (SSL_CTX_set_cipher_list(s->ssl_ctx, s->ssl_cipher_list->ptr) != 1) {
+ log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",
+ ERR_error_string(ERR_get_error(), NULL));
+- return -1;
++ goto error_free_socket;
+ }
+ }
+
+ if (buffer_is_empty(s->ssl_pemfile)) {
+ log_error_write(srv, __FILE__, __LINE__, "s", "ssl.pemfile has to be set");
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (!buffer_is_empty(s->ssl_ca_file)) {
+ if (1 != SSL_CTX_load_verify_locations(s->ssl_ctx, s->ssl_ca_file->ptr, NULL)) {
+ log_error_write(srv, __FILE__, __LINE__, "ssb", "SSL:",
+ ERR_error_string(ERR_get_error(), NULL), s->ssl_ca_file);
+- return -1;
++ goto error_free_socket;
+ }
+ }
+
+ if (SSL_CTX_use_certificate_file(s->ssl_ctx, s->ssl_pemfile->ptr, SSL_FILETYPE_PEM) < 0) {
+ log_error_write(srv, __FILE__, __LINE__, "ssb", "SSL:",
+ ERR_error_string(ERR_get_error(), NULL), s->ssl_pemfile);
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (SSL_CTX_use_PrivateKey_file (s->ssl_ctx, s->ssl_pemfile->ptr, SSL_FILETYPE_PEM) < 0) {
+ log_error_write(srv, __FILE__, __LINE__, "ssb", "SSL:",
+ ERR_error_string(ERR_get_error(), NULL), s->ssl_pemfile);
+- return -1;
++ goto error_free_socket;
+ }
+
+ if (SSL_CTX_check_private_key(s->ssl_ctx) != 1) {
+@@ -374,7 +378,7 @@
+ "Private key does not match the certificate public key, reason:",
+ ERR_error_string(ERR_get_error(), NULL),
+ s->ssl_pemfile);
+- return -1;
++ goto error_free_socket;
+ }
+ SSL_CTX_set_default_read_ahead(s->ssl_ctx, 1);
+ SSL_CTX_set_mode(s->ssl_ctx, SSL_CTX_get_mode(s->ssl_ctx) | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
+@@ -390,7 +394,7 @@
+ log_error_write(srv, __FILE__, __LINE__, "ss", "SSL:",
+ "ssl requested but openssl support is not compiled in");
+
+- return -1;
++ goto error_free_socket;
+ #endif
+ #ifdef TCP_DEFER_ACCEPT
+ } else if (s->defer_accept) {
+@@ -414,7 +418,6 @@
}
-@@ -567,12 +570,8 @@
+ srv_socket->is_ssl = s->is_ssl;
+- srv_socket->fde_ndx = -1;
+
+ if (srv->srv_sockets.size == 0) {
+ srv->srv_sockets.size = 4;
+@@ -430,6 +433,21 @@
+ buffer_free(b);
+
+ return 0;
++
++error_free_socket:
++ if (srv_socket->fd != -1) {
++ /* check if server fd are already registered */
++ if (srv_socket->fde_ndx != -1) {
++ fdevent_event_del(srv->ev, &(srv_socket->fde_ndx), srv_socket->fd);
++ fdevent_unregister(srv->ev, srv_socket->fd);
++ }
++
++ close(srv_socket->fd);
++ }
++ buffer_free(srv_socket->srv_token);
++ free(srv_socket);
++
++ return -1;
+ }
+
+ int network_close(server *srv) {
+@@ -567,12 +585,8 @@
/* not our stage */
if (COMP_SERVER_SOCKET != dc->comp) continue;
for (j = 0; j < srv->srv_sockets.used; j++) {
Index: src/configfile.c
===================================================================
---- src/configfile.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/configfile.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/configfile.c (.../tags/lighttpd-1.4.23)
++++ src/configfile.c (.../branches/lighttpd-1.4.x)
@@ -42,12 +42,12 @@
{ "server.event-handler", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER }, /* 10 */
#endif
Index: src/mod_evhost.c
===================================================================
---- src/mod_evhost.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_evhost.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_evhost.c (.../tags/lighttpd-1.4.23)
++++ src/mod_evhost.c (.../branches/lighttpd-1.4.x)
@@ -213,7 +213,7 @@
if (colon != ptr) {
ds = data_string_init();
if (ds->value->used) {
Index: src/splaytree.c
===================================================================
---- src/splaytree.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/splaytree.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/splaytree.c (.../tags/lighttpd-1.4.23)
++++ src/splaytree.c (.../branches/lighttpd-1.4.x)
@@ -61,12 +61,11 @@
* size fields are maintained */
splay_tree * splaytree_splay (splay_tree *t, int i) {
for (;;) {
Index: src/lemon.c
===================================================================
---- src/lemon.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/lemon.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/lemon.c (.../tags/lighttpd-1.4.23)
++++ src/lemon.c (.../branches/lighttpd-1.4.x)
@@ -39,6 +39,12 @@
# endif
#endif
if( argv[0] ) fprintf(err,"%s",argv[0]);
spcnt = strlen(argv[0]) + 1;
for(i=1; i<n && argv[i]; i++){
-@@ -2913,7 +2918,7 @@
+@@ -2336,6 +2341,7 @@
+ if( filebuf==0 ){
+ ErrorMsg(ps.filename,0,"Can't allocate %d of memory to hold this file.",
+ filesize+1);
++ fclose(fp);
+ gp->errorcnt++;
+ return;
+ }
+@@ -2343,6 +2349,7 @@
+ ErrorMsg(ps.filename,0,"Can't read in all %d bytes of this file.",
+ filesize);
+ free(filebuf);
++ fclose(fp);
+ gp->errorcnt++;
+ return;
+ }
+@@ -2913,7 +2920,7 @@
}else if( sp->destructor ){
cp = sp->destructor;
fprintf(out,"#line %d \"%s\"\n{",sp->destructorln,lemp->filename);
cp = lemp->vardest;
if( cp==0 ) return;
fprintf(out,"#line %d \"%s\"\n{",lemp->vardestln,lemp->filename);
-@@ -3042,7 +3047,7 @@
+@@ -3042,7 +3049,7 @@
int *plineno; /* Pointer to the line number */
int mhflag; /* True if generating makeheaders output */
{
int maxdtlength; /* Maximum length of any ".datatype" field. */
Index: src/mod_scgi.c
===================================================================
---- src/mod_scgi.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_scgi.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_scgi.c (.../tags/lighttpd-1.4.23)
++++ src/mod_scgi.c (.../branches/lighttpd-1.4.x)
@@ -331,8 +331,21 @@
int scgi_proclist_sort_down(server *srv, scgi_extension_host *host, scgi_proc *proc);
Index: src/mod_mysql_vhost.c
===================================================================
---- src/mod_mysql_vhost.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_mysql_vhost.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_mysql_vhost.c (.../tags/lighttpd-1.4.23)
++++ src/mod_mysql_vhost.c (.../branches/lighttpd-1.4.x)
@@ -259,8 +259,14 @@
#define FOO(x) (s->x->used ? s->x->ptr : NULL)
}
Index: src/request.c
===================================================================
---- src/request.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/request.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/request.c (.../tags/lighttpd-1.4.23)
++++ src/request.c (.../branches/lighttpd-1.4.x)
@@ -111,7 +111,7 @@
/* check the first character at right of the dot */
con->request.request);
Index: src/network_backends.h
===================================================================
---- src/network_backends.h (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/network_backends.h (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/network_backends.h (.../tags/lighttpd-1.4.23)
++++ src/network_backends.h (.../branches/lighttpd-1.4.x)
@@ -45,6 +45,11 @@
#include "base.h"
int network_write_chunkqueue_writev(server *srv, connection *con, int fd, chunkqueue *cq);
Index: src/mod_rrdtool.c
===================================================================
---- src/mod_rrdtool.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_rrdtool.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_rrdtool.c (.../tags/lighttpd-1.4.23)
++++ src/mod_rrdtool.c (.../branches/lighttpd-1.4.x)
@@ -139,10 +139,8 @@
args[i++] = p->conf.path_rrdtool_bin->ptr;
Index: src/stat_cache.c
===================================================================
---- src/stat_cache.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/stat_cache.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/stat_cache.c (.../tags/lighttpd-1.4.23)
++++ src/stat_cache.c (.../branches/lighttpd-1.4.x)
@@ -503,12 +503,10 @@
}
sce = stat_cache_entry_init();
buffer_copy_string_buffer(sce->name, name);
+Index: src/response.h
+===================================================================
+--- src/response.h (.../tags/lighttpd-1.4.23)
++++ src/response.h (.../branches/lighttpd-1.4.x)
+@@ -10,6 +10,7 @@
+
+ int response_header_insert(server *srv, connection *con, const char *key, size_t keylen, const char *value, size_t vallen);
+ int response_header_overwrite(server *srv, connection *con, const char *key, size_t keylen, const char *value, size_t vallen);
++int response_header_append(server *srv, connection *con, const char *key, size_t keylen, const char *value, size_t vallen);
+
+ handler_t http_response_prepare(server *srv, connection *con);
+ int http_response_redirect_to_directory(server *srv, connection *con);
Index: src/mod_proxy.c
===================================================================
---- src/mod_proxy.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_proxy.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_proxy.c (.../tags/lighttpd-1.4.23)
++++ src/mod_proxy.c (.../branches/lighttpd-1.4.x)
@@ -756,12 +756,15 @@
switch(hctx->state) {
Index: src/Makefile.am
===================================================================
---- src/Makefile.am (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/Makefile.am (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/Makefile.am (.../tags/lighttpd-1.4.23)
++++ src/Makefile.am (.../branches/lighttpd-1.4.x)
@@ -13,14 +13,14 @@
versionstamp:
@test -f versionstamp.h || touch versionstamp.h; \
echo "#define REPO_VERSION \"-devel-$$REVISION\"" > versionstamp.h.tmp; \
Index: src/mod_expire.c
===================================================================
---- src/mod_expire.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_expire.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_expire.c (.../tags/lighttpd-1.4.23)
++++ src/mod_expire.c (.../branches/lighttpd-1.4.x)
@@ -342,7 +342,7 @@
buffer_copy_string_len(p->expire_tstmp, CONST_STR_LEN("max-age="));
buffer_append_long(p->expire_tstmp, expires - srv->cur_ts); /* as expires >= srv->cur_ts the difference is >= 0 */
- response_header_overwrite(srv, con, CONST_STR_LEN("Cache-Control"), CONST_BUF_LEN(p->expire_tstmp));
-+ response_header_insert(srv, con, CONST_STR_LEN("Cache-Control"), CONST_BUF_LEN(p->expire_tstmp));
++ response_header_append(srv, con, CONST_STR_LEN("Cache-Control"), CONST_BUF_LEN(p->expire_tstmp));
return HANDLER_GO_ON;
}
Index: src/http_auth.c
===================================================================
---- src/http_auth.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/http_auth.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/http_auth.c (.../tags/lighttpd-1.4.23)
++++ src/http_auth.c (.../branches/lighttpd-1.4.x)
@@ -918,15 +918,15 @@
char a1[256];
char a2[256];
log_error_write(srv, __FILE__, __LINE__, "s",
Index: src/mod_redirect.c
===================================================================
---- src/mod_redirect.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_redirect.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_redirect.c (.../tags/lighttpd-1.4.23)
++++ src/mod_redirect.c (.../branches/lighttpd-1.4.x)
@@ -203,7 +203,7 @@
}
} else {
buffer_append_string_len(p->location, pattern+k, pattern[k] == pattern[k+1] ? 1 : 2);
Index: src/mod_webdav.c
===================================================================
---- src/mod_webdav.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_webdav.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_webdav.c (.../tags/lighttpd-1.4.23)
++++ src/mod_webdav.c (.../branches/lighttpd-1.4.x)
@@ -1096,6 +1096,7 @@
}
#endif
*
Index: src/configparser.y
===================================================================
---- src/configparser.y (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/configparser.y (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/configparser.y (.../tags/lighttpd-1.4.23)
++++ src/configparser.y (.../branches/lighttpd-1.4.x)
@@ -72,7 +72,7 @@
op1->free(op1);
return (data_unset *)ds;
}
else {
buffer_copy_string_buffer(du->key, A);
+@@ -470,7 +469,7 @@
+ case CONFIG_COND_MATCH: {
+ #ifdef HAVE_PCRE_H
+ const char *errptr;
+- int erroff;
++ int erroff, captures;
+
+ if (NULL == (dc->regex =
+ pcre_compile(rvalue->ptr, 0, &errptr, &erroff, NULL))) {
+@@ -487,6 +486,14 @@
+ fprintf(stderr, "studying regex failed: %s -> %s\n",
+ rvalue->ptr, errptr);
+ ctx->ok = 0;
++ } else if (0 != (pcre_fullinfo(dc->regex, dc->regex_study, PCRE_INFO_CAPTURECOUNT, &captures))) {
++ fprintf(stderr, "getting capture count for regex failed: %s\n",
++ rvalue->ptr);
++ ctx->ok = 0;
++ } else if (captures > 9) {
++ fprintf(stderr, "Too many captures in regex, use (?:...) instead of (...): %s\n",
++ rvalue->ptr);
++ ctx->ok = 0;
+ } else {
+ dc->string = buffer_init_buffer(rvalue);
+ }
Index: src/mod_status.c
===================================================================
---- src/mod_status.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_status.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_status.c (.../tags/lighttpd-1.4.23)
++++ src/mod_status.c (.../branches/lighttpd-1.4.x)
@@ -438,7 +438,7 @@
buffer_append_string_len(b, CONST_STR_LEN(
/* we have nothing to send */
Index: src/mod_ssi.c
===================================================================
---- src/mod_ssi.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_ssi.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_ssi.c (.../tags/lighttpd-1.4.23)
++++ src/mod_ssi.c (.../branches/lighttpd-1.4.x)
@@ -362,7 +362,8 @@
switch(ssicmd) {
case SSI_ECHO: {
"ssi: unknow attribute for ",
Index: src/mod_auth.c
===================================================================
---- src/mod_auth.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_auth.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_auth.c (.../tags/lighttpd-1.4.23)
++++ src/mod_auth.c (.../branches/lighttpd-1.4.x)
@@ -468,7 +468,7 @@
if (method == NULL) {
}
Index: src/mod_cml_lua.c
===================================================================
---- src/mod_cml_lua.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_cml_lua.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_cml_lua.c (.../tags/lighttpd-1.4.23)
++++ src/mod_cml_lua.c (.../branches/lighttpd-1.4.x)
@@ -2,6 +2,7 @@
#include <stdio.h>
#include <errno.h>
#include "mod_cml_funcs.h"
Index: src/http-header-glue.c
===================================================================
---- src/http-header-glue.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/http-header-glue.c (.../branches/lighttpd-1.4.x) (revision 2613)
-@@ -259,7 +259,7 @@
+--- src/http-header-glue.c (.../tags/lighttpd-1.4.23)
++++ src/http-header-glue.c (.../branches/lighttpd-1.4.x)
+@@ -104,6 +104,21 @@
+ return response_header_insert(srv, con, key, keylen, value, vallen);
+ }
+
++int response_header_append(server *srv, connection *con, const char *key, size_t keylen, const char *value, size_t vallen) {
++ data_string *ds;
++
++ UNUSED(srv);
++
++ /* if there already is a key by this name append the value */
++ if (NULL != (ds = (data_string *)array_get_element(con->response.headers, key))) {
++ buffer_append_string_len(ds->value, CONST_STR_LEN(", "));
++ buffer_append_string_len(ds->value, value, vallen);
++ return 0;
++ }
++
++ return response_header_insert(srv, con, key, keylen, value, vallen);
++}
++
+ int http_response_redirect_to_directory(server *srv, connection *con) {
+ buffer *o;
+
+@@ -259,7 +274,7 @@
}
if (0 == strncmp(con->request.http_if_modified_since, mtime->ptr, used_len)) {
return HANDLER_FINISHED;
} else {
char buf[sizeof("Sat, 23 Jul 2005 21:20:01 GMT")];
-@@ -281,15 +281,16 @@
+@@ -281,15 +296,16 @@
strncpy(buf, con->request.http_if_modified_since, used_len);
buf[used_len] = '\0';
t_file = mktime(&tm);
if (t_file > t_header) return HANDLER_GO_ON;
-@@ -318,7 +319,7 @@
+@@ -318,7 +334,7 @@
}
if (0 == strncmp(con->request.http_if_modified_since, mtime->ptr, used_len)) {
return HANDLER_FINISHED;
} else {
char buf[sizeof("Sat, 23 Jul 2005 21:20:01 GMT")];
-@@ -331,18 +332,17 @@
+@@ -331,18 +347,17 @@
strncpy(buf, con->request.http_if_modified_since, used_len);
buf[used_len] = '\0';
if (t_file > t_header) return HANDLER_GO_ON;
Index: src/mod_setenv.c
===================================================================
---- src/mod_setenv.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_setenv.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_setenv.c (.../tags/lighttpd-1.4.23)
++++ src/mod_setenv.c (.../branches/lighttpd-1.4.x)
@@ -215,7 +215,7 @@
return HANDLER_GO_ON;
}
Index: src/mod_fastcgi.c
===================================================================
---- src/mod_fastcgi.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_fastcgi.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_fastcgi.c (.../tags/lighttpd-1.4.23)
++++ src/mod_fastcgi.c (.../branches/lighttpd-1.4.x)
@@ -122,24 +122,11 @@
*
*/
}
if (fcgi_spawn_connection(srv, p, host, proc)) {
+@@ -3288,18 +3270,18 @@
+ hctx->reconnects < 5) {
+ fcgi_reconnect(srv, hctx);
+
+- log_error_write(srv, __FILE__, __LINE__, "ssbsbs",
++ log_error_write(srv, __FILE__, __LINE__, "ssbsBSBs",
+ "response not received, request not sent",
+ "on socket:", proc->connection_name,
+- "for", con->uri.path, ", reconnecting");
++ "for", con->uri.path, "?", con->uri.query, ", reconnecting");
+
+ return HANDLER_WAIT_FOR_FD;
+ }
+
+- log_error_write(srv, __FILE__, __LINE__, "sosbsbs",
++ log_error_write(srv, __FILE__, __LINE__, "sosbsBSBs",
+ "response not received, request sent:", hctx->wb->bytes_out,
+ "on socket:", proc->connection_name,
+- "for", con->uri.path, ", closing connection");
++ "for", con->uri.path, "?", con->uri.query, ", closing connection");
+
+ fcgi_connection_close(srv, hctx);
+
+@@ -3311,10 +3293,10 @@
+ /* response might have been already started, kill the connection */
+ fcgi_connection_close(srv, hctx);
+
+- log_error_write(srv, __FILE__, __LINE__, "ssbsbs",
++ log_error_write(srv, __FILE__, __LINE__, "ssbsBSBs",
+ "response already sent out, but backend returned error",
+ "on socket:", proc->connection_name,
+- "for", con->uri.path, ", terminating connection");
++ "for", con->uri.path, "?", con->uri.query, ", terminating connection");
+
+ connection_set_state(srv, con, CON_STATE_ERROR);
+ }
+@@ -3364,9 +3346,9 @@
+ * even if the FCGI_FIN packet is not received yet
+ */
+ } else {
+- log_error_write(srv, __FILE__, __LINE__, "sbsbsd",
++ log_error_write(srv, __FILE__, __LINE__, "sBSbsbsd",
+ "error: unexpected close of fastcgi connection for",
+- con->uri.path,
++ con->uri.path, "?", con->uri.query,
+ "(no fastcgi process on socket:", proc->connection_name, "?)",
+ hctx->state);
+
@@ -3489,25 +3471,27 @@
/* check if extension matches */
for (k = 0; k < p->conf.exts->used; k++) {
return HANDLER_GO_ON;
}
}
+@@ -3535,8 +3519,8 @@
+ if (!extension->note_is_sent) {
+ extension->note_is_sent = 1;
+
+- log_error_write(srv, __FILE__, __LINE__, "sbsbs",
+- "all handlers for ", con->uri.path,
++ log_error_write(srv, __FILE__, __LINE__, "sBSbsbs",
++ "all handlers for", con->uri.path, "?", con->uri.query,
+ "on", extension->key,
+ "are down.");
+ }
@@ -3727,107 +3711,12 @@
for (n = 0; n < ex->used; n++) {
Index: src/fdevent_poll.c
===================================================================
---- src/fdevent_poll.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/fdevent_poll.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/fdevent_poll.c (.../tags/lighttpd-1.4.23)
++++ src/fdevent_poll.c (.../branches/lighttpd-1.4.x)
@@ -132,7 +132,7 @@
if (poll_r & POLLNVAL) r |= FDEVENT_NVAL;
if (poll_r & POLLPRI) r |= FDEVENT_PRI;
static int fdevent_poll_event_get_fd(fdevents *ev, size_t ndx) {
Index: src/fdevent_select.c
===================================================================
---- src/fdevent_select.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/fdevent_select.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/fdevent_select.c (.../tags/lighttpd-1.4.23)
++++ src/fdevent_select.c (.../branches/lighttpd-1.4.x)
@@ -38,7 +38,7 @@
UNUSED(fde_ndx);
===================================================================
Index: src/server.c
===================================================================
---- src/server.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/server.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/server.c (.../tags/lighttpd-1.4.23)
++++ src/server.c (.../branches/lighttpd-1.4.x)
@@ -187,6 +187,7 @@
CLEAN(cond_check_buf);
"if event-handler is 'select'. Use 'poll' or something else or reduce server.max-fds.");
Index: src/mod_dirlisting.c
===================================================================
---- src/mod_dirlisting.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_dirlisting.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_dirlisting.c (.../tags/lighttpd-1.4.23)
++++ src/mod_dirlisting.c (.../branches/lighttpd-1.4.x)
@@ -198,7 +198,7 @@
data_unset *du;
if (du->type != TYPE_ARRAY) {
Index: src/mod_magnet.c
===================================================================
---- src/mod_magnet.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/mod_magnet.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/mod_magnet.c (.../tags/lighttpd-1.4.23)
++++ src/mod_magnet.c (.../branches/lighttpd-1.4.x)
@@ -283,17 +283,11 @@
}
con = lua_touserdata(L, -1);
Index: src/log.c
===================================================================
---- src/log.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/log.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/log.c (.../tags/lighttpd-1.4.23)
++++ src/log.c (.../branches/lighttpd-1.4.x)
@@ -62,7 +62,6 @@
/* create write pipe and spawn process */
break;
Index: src/proc_open.c
===================================================================
---- src/proc_open.c (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ src/proc_open.c (.../branches/lighttpd-1.4.x) (revision 2613)
+--- src/proc_open.c (.../tags/lighttpd-1.4.23)
++++ src/proc_open.c (.../branches/lighttpd-1.4.x)
@@ -309,6 +309,14 @@
if (err) {
===================================================================
Index: tests/bug-12.conf
===================================================================
---- tests/bug-12.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/bug-12.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/bug-12.conf (.../tags/lighttpd-1.4.23)
++++ tests/bug-12.conf (.../branches/lighttpd-1.4.x)
@@ -8,6 +8,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/fastcgi-10.conf
===================================================================
---- tests/fastcgi-10.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/fastcgi-10.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/fastcgi-10.conf (.../tags/lighttpd-1.4.23)
++++ tests/fastcgi-10.conf (.../branches/lighttpd-1.4.x)
@@ -6,6 +6,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/bug-06.conf
===================================================================
---- tests/bug-06.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/bug-06.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/bug-06.conf (.../tags/lighttpd-1.4.23)
++++ tests/bug-06.conf (.../branches/lighttpd-1.4.x)
@@ -8,6 +8,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
===================================================================
Index: tests/var-include.conf
===================================================================
---- tests/var-include.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/var-include.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/var-include.conf (.../tags/lighttpd-1.4.23)
++++ tests/var-include.conf (.../branches/lighttpd-1.4.x)
@@ -10,6 +10,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/404-handler.conf
===================================================================
---- tests/404-handler.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/404-handler.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/404-handler.conf (.../tags/lighttpd-1.4.23)
++++ tests/404-handler.conf (.../branches/lighttpd-1.4.x)
@@ -10,6 +10,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/lowercase.conf
===================================================================
---- tests/lowercase.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/lowercase.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/lowercase.conf (.../tags/lighttpd-1.4.23)
++++ tests/lowercase.conf (.../branches/lighttpd-1.4.x)
@@ -6,6 +6,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/condition.conf
===================================================================
---- tests/condition.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/condition.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/condition.conf (.../tags/lighttpd-1.4.23)
++++ tests/condition.conf (.../branches/lighttpd-1.4.x)
@@ -10,6 +10,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/fastcgi-13.conf
===================================================================
---- tests/fastcgi-13.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/fastcgi-13.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/fastcgi-13.conf (.../tags/lighttpd-1.4.23)
++++ tests/fastcgi-13.conf (.../branches/lighttpd-1.4.x)
@@ -10,6 +10,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/mod-compress.conf
===================================================================
---- tests/mod-compress.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/mod-compress.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/mod-compress.conf (.../tags/lighttpd-1.4.23)
++++ tests/mod-compress.conf (.../branches/lighttpd-1.4.x)
@@ -11,6 +11,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
server.modules = (
Index: tests/lighttpd.conf
===================================================================
---- tests/lighttpd.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/lighttpd.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/lighttpd.conf (.../tags/lighttpd-1.4.23)
++++ tests/lighttpd.conf (.../branches/lighttpd-1.4.x)
@@ -13,6 +13,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/fastcgi-responder.conf
===================================================================
---- tests/fastcgi-responder.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/fastcgi-responder.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/fastcgi-responder.conf (.../tags/lighttpd-1.4.23)
++++ tests/fastcgi-responder.conf (.../branches/lighttpd-1.4.x)
@@ -15,6 +15,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/fastcgi-auth.conf
===================================================================
---- tests/fastcgi-auth.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/fastcgi-auth.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/fastcgi-auth.conf (.../tags/lighttpd-1.4.23)
++++ tests/fastcgi-auth.conf (.../branches/lighttpd-1.4.x)
@@ -12,6 +12,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/proxy.conf
===================================================================
---- tests/proxy.conf (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/proxy.conf (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/proxy.conf (.../tags/lighttpd-1.4.23)
++++ tests/proxy.conf (.../branches/lighttpd-1.4.x)
@@ -6,6 +6,7 @@
## bind to localhost (default: all interfaces)
server.bind = "localhost"
Index: tests/LightyTest.pm
===================================================================
---- tests/LightyTest.pm (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ tests/LightyTest.pm (.../branches/lighttpd-1.4.x) (revision 2613)
+--- tests/LightyTest.pm (.../tags/lighttpd-1.4.23)
++++ tests/LightyTest.pm (.../branches/lighttpd-1.4.x)
@@ -87,14 +87,21 @@
my $self = shift;
my $port = shift;
return 0;
Index: configure.ac
===================================================================
---- configure.ac (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ configure.ac (.../branches/lighttpd-1.4.x) (revision 2613)
-@@ -1,7 +1,7 @@
- # -*- Autoconf -*-
- # Process this file with autoconf to produce a configure script.
- AC_PREREQ(2.57)
--AC_INIT([lighttpd], [1.4.23], [contact@lighttpd.net])
-+AC_INIT([lighttpd], [1.4.24], [contact@lighttpd.net])
- AC_CONFIG_SRCDIR([src/server.c])
- AC_CONFIG_HEADER([config.h])
-
-@@ -417,12 +417,18 @@
- AC_DEFINE([HAVE_LUA], [1], [liblua])
- AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
- ],[
-- # for debian based systems
-- PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [
-- AC_DEFINE([HAVE_LUA], [1], [liblua])
-- AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
-- ])
-+ # for debian based systems
-+ PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [
-+ AC_DEFINE([HAVE_LUA], [1], [liblua])
-+ AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
-+ ],[
-+ # for freebsd
-+ PKG_CHECK_MODULES(LUA, lua-5.1 >= 5.1, [
-+ AC_DEFINE([HAVE_LUA], [1], [liblua])
-+ AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
- ])
-+ ])
-+ ])
-
- AC_SUBST(LUA_CFLAGS)
- AC_SUBST(LUA_LIBS)
Index: doc/.cvsignore
===================================================================
Index: doc/fastcgi.txt
===================================================================
---- doc/fastcgi.txt (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ doc/fastcgi.txt (.../branches/lighttpd-1.4.x) (revision 2613)
+--- doc/fastcgi.txt (.../tags/lighttpd-1.4.23)
++++ doc/fastcgi.txt (.../branches/lighttpd-1.4.x)
@@ -95,23 +95,22 @@
(
( "host" => <string> ,
Index: SConstruct
===================================================================
+Index: Makefile.am
+===================================================================
+--- Makefile.am (.../tags/lighttpd-1.4.23)
++++ Makefile.am (.../branches/lighttpd-1.4.x)
+@@ -2,4 +2,6 @@
+
+ EXTRA_DIST=autogen.sh SConstruct
+
++ACLOCAL_AMFLAGS = -I m4
++
+ distcleancheck_listfiles = find -type f -exec sh -c 'test -f $(srcdir)/{} || echo {}' ';'
+Index: autogen.sh
+===================================================================
+--- autogen.sh (.../tags/lighttpd-1.4.23)
++++ autogen.sh (.../branches/lighttpd-1.4.x)
+@@ -1,27 +1,92 @@
+ #!/bin/sh
+ # Run this to generate all the initial makefiles, etc.
+
+-LIBTOOLIZE=${LIBTOOLIZE:-libtoolize}
+ LIBTOOLIZE_FLAGS="--copy --force"
+-ACLOCAL=${ACLOCAL:-aclocal}
+-AUTOHEADER=${AUTOHEADER:-autoheader}
+-AUTOMAKE=${AUTOMAKE:-automake}
+-AUTOMAKE_FLAGS="--add-missing --copy"
+-AUTOCONF=${AUTOCONF:-autoconf}
++AUTOMAKE_FLAGS="--add-missing --copy --foreign"
+
+ ARGV0=$0
++ARGS="$@"
+
+-set -e
+
+-
+ run() {
+- echo "$ARGV0: running \`$@'"
+- $@
++ echo "$ARGV0: running \`$@' $ARGS"
++ $@ $ARGS
+ }
+
++## jump out if one of the programs returns 'false'
++set -e
++
++## on macosx glibtoolize, others have libtool
++if test x$LIBTOOLIZE = x; then
++ if test \! "x`which glibtoolize 2> /dev/null | grep -v '^no'`" = x; then
++ LIBTOOLIZE=glibtoolize
++ elif test \! "x`which libtoolize-1.5 2> /dev/null | grep -v '^no'`" = x; then
++ LIBTOOLIZE=libtoolize-1.5
++ elif test \! "x`which libtoolize 2> /dev/null | grep -v '^no'`" = x; then
++ LIBTOOLIZE=libtoolize
++ else
++ echo "libtoolize 1.5.x wasn't found, exiting"; exit 0
++ fi
++fi
++
++## suse has aclocal and aclocal-1.9
++if test x$ACLOCAL = x; then
++ if test \! "x`which aclocal-1.9 2> /dev/null | grep -v '^no'`" = x; then
++ ACLOCAL=aclocal-1.9
++ elif test \! "x`which aclocal19 2> /dev/null | grep -v '^no'`" = x; then
++ ACLOCAL=aclocal19
++ elif test \! "x`which aclocal 2> /dev/null | grep -v '^no'`" = x; then
++ ACLOCAL=aclocal
++ else
++ echo "automake 1.9.x (aclocal) wasn't found, exiting"; exit 0
++ fi
++fi
++
++if test x$AUTOMAKE = x; then
++ if test \! "x`which automake-1.9 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOMAKE=automake-1.9
++ elif test \! "x`which automake19 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOMAKE=automake19
++ elif test \! "x`which automake 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOMAKE=automake
++ else
++ echo "automake 1.9.x wasn't found, exiting"; exit 0
++ fi
++fi
++
++
++## macosx has autoconf-2.59 and autoconf-2.60
++if test x$AUTOCONF = x; then
++ if test \! "x`which autoconf-2.59 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOCONF=autoconf-2.59
++ elif test \! "x`which autoconf259 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOCONF=autoconf259
++ elif test \! "x`which autoconf 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOCONF=autoconf
++ else
++ echo "autoconf 2.59+ wasn't found, exiting"; exit 0
++ fi
++fi
++
++if test x$AUTOHEADER = x; then
++ if test \! "x`which autoheader-2.59 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOHEADER=autoheader-2.59
++ elif test \! "x`which autoheader259 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOHEADER=autoheader259
++ elif test \! "x`which autoheader 2> /dev/null | grep -v '^no'`" = x; then
++ AUTOHEADER=autoheader
++ else
++ echo "autoconf 2.59+ (autoheader) wasn't found, exiting"; exit 0
++ fi
++fi
++
++mkdir -p m4
+ run $LIBTOOLIZE $LIBTOOLIZE_FLAGS
+-run $ACLOCAL $ACLOCAL_FLAGS
++run $ACLOCAL $ACLOCAL_FLAGS -I m4
+ run $AUTOHEADER
+ run $AUTOMAKE $AUTOMAKE_FLAGS
+ run $AUTOCONF
+-echo "Now type './configure ...' and 'make' to compile."
++
++if test "$ARGS" = "" ; then
++ echo "Now type './configure ...' and 'make' to compile."
++fi
Index: NEWS
===================================================================
---- NEWS (.../tags/lighttpd-1.4.23) (revision 2613)
-+++ NEWS (.../branches/lighttpd-1.4.x) (revision 2613)
-@@ -3,7 +3,40 @@
+--- NEWS (.../tags/lighttpd-1.4.23)
++++ NEWS (.../branches/lighttpd-1.4.x)
+@@ -3,7 +3,42 @@
NEWS
====
+ * Print errors from include_shell to stderr
+ * Set tm.tm_isdst = 0 before mktime() (fixes #2047)
+ * Use linux-epoll by default if available (fixes #2021, thx Olaf van der Spek)
++ * Print an error if you use too many captures in a regex pattern (fixes #2059)
++ * Combine Cache-Control header value in mod_expire to existing HTTP header if header already added by other modules (fixes #2068)
+
+- 1.4.23 - 2009-06-19
* Added some extra warning options in cmake and fix the resulting warnings (unused/static functions)