packages: lighttpd/lighttpd-branch.diff, lighttpd/lighttpd.spec - bugfix fo...
glen
glen at pld-linux.org
Mon Oct 26 17:42:22 CET 2009
Author: glen Date: Mon Oct 26 16:42:22 2009 GMT
Module: packages Tag: HEAD
---- Log message:
- bugfix for #1307; rel 2
---- Files affected:
packages/lighttpd:
lighttpd-branch.diff (1.60 -> 1.61) , lighttpd.spec (1.306 -> 1.307)
---- Diffs:
================================================================
Index: packages/lighttpd/lighttpd-branch.diff
diff -u packages/lighttpd/lighttpd-branch.diff:1.60 packages/lighttpd/lighttpd-branch.diff:1.61
--- packages/lighttpd/lighttpd-branch.diff:1.60 Wed Sep 30 12:08:30 2009
+++ packages/lighttpd/lighttpd-branch.diff Mon Oct 26 17:42:16 2009
@@ -1,3065 +1,91 @@
-Index: ChangeLog
-===================================================================
-Index: .cvsignore
-===================================================================
-Index: src/.cvsignore
-===================================================================
-Index: src/configfile-glue.c
-===================================================================
---- 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;
- break;
--
- }
- }
-
-@@ -112,10 +111,40 @@
- return -1;
- }
- default:
-- log_error_write(srv, __FILE__, __LINE__, "ssds", "unexpected type for key:", cv[i].key, du->type, "expected a integer, range 0 ... 65535");
-+ log_error_write(srv, __FILE__, __LINE__, "ssds", "unexpected type for key:", cv[i].key, du->type, "expected a short integer, range 0 ... 65535");
- return -1;
- }
- break;
-+ case T_CONFIG_INT:
-+ switch(du->type) {
-+ case TYPE_INTEGER: {
-+ data_integer *di = (data_integer *)du;
-+
-+ *((unsigned int *)(cv[i].destination)) = di->value;
-+ break;
-+ }
-+ case TYPE_STRING: {
-+ data_string *ds = (data_string *)du;
-+
-+ if (ds->value->ptr && *ds->value->ptr) {
-+ char *e;
-+ long l = strtol(ds->value->ptr, &e, 10);
-+ if (e != ds->value->ptr && !*e && l >= 0) {
-+ *((unsigned int *)(cv[i].destination)) = l;
-+ break;
-+ }
-+ }
-+
-+
-+ log_error_write(srv, __FILE__, __LINE__, "ssb", "got a string but expected an integer:", cv[i].key, ds->value);
-+
-+ return -1;
-+ }
-+ default:
-+ log_error_write(srv, __FILE__, __LINE__, "ssds", "unexpected type for key:", cv[i].key, du->type, "expected an integer, range 0 ... 4294967295");
-+ return -1;
-+ }
-+ break;
- case T_CONFIG_BOOLEAN:
- if (du->type == TYPE_STRING) {
- data_string *ds = (data_string *)du;
-Index: src/mod_cgi.c
-===================================================================
---- src/mod_cgi.c (.../tags/lighttpd-1.4.23)
-+++ src/mod_cgi.c (.../branches/lighttpd-1.4.x)
-@@ -56,6 +56,7 @@
-
- typedef struct {
- array *cgi;
-+ unsigned short execute_x_only;
- } plugin_config;
-
- typedef struct {
-@@ -151,6 +152,7 @@
-
- config_values_t cv[] = {
- { "cgi.assign", NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION }, /* 0 */
-+ { "cgi.execute-x-only", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 1 */
- { NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET}
- };
-
-@@ -165,8 +167,10 @@
- assert(s);
-
- s->cgi = array_init();
-+ s->execute_x_only = 0;
-
- cv[0].destination = s->cgi;
-+ cv[1].destination = &(s->execute_x_only);
-
- p->config_storage[i] = s;
-
-@@ -580,12 +584,9 @@
- #if 0
- log_error_write(srv, __FILE__, __LINE__, "sd", "(debug) cgi exited fine, pid:", pid);
- #endif
-- pid = 0;
--
- return HANDLER_GO_ON;
- } else {
- log_error_write(srv, __FILE__, __LINE__, "sd", "cgi died, pid:", pid);
-- pid = 0;
- return HANDLER_GO_ON;
- }
- }
-@@ -1005,7 +1006,7 @@
- args[i++] = cgi_handler->ptr;
- }
- args[i++] = con->physical.path->ptr;
-- args[i++] = NULL;
-+ args[i ] = NULL;
-
- /* search for the last / */
- if (NULL != (c = strrchr(con->physical.path->ptr, '/'))) {
-@@ -1018,8 +1019,6 @@
- *c = '/';
- }
-
-- openDevNull(STDERR_FILENO);
--
- /* we don't need the client socket */
- for (i = 3; i < 256; i++) {
- if (i != srv->errorlog_fd) close(i);
-@@ -1198,6 +1197,8 @@
-
- if (buffer_is_equal_string(du->key, CONST_STR_LEN("cgi.assign"))) {
- PATCH(cgi);
-+ } else if (buffer_is_equal_string(du->key, CONST_STR_LEN("cgi.execute-x-only"))) {
-+ PATCH(execute_x_only);
- }
- }
- }
-@@ -1220,6 +1221,7 @@
-
- if (HANDLER_ERROR == stat_cache_get_entry(srv, con, con->physical.path, &sce)) return HANDLER_GO_ON;
- if (!S_ISREG(sce->st.st_mode)) return HANDLER_GO_ON;
-+ if (p->conf.execute_x_only == 1 && (sce->st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) == 0) return HANDLER_GO_ON;
-
- s_len = fn->used - 1;
-
-Index: src/network_write.c
-===================================================================
---- 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
- if ((r = send(fd, offset, toSend, 0)) < 0) {
-- log_error_write(srv, __FILE__, __LINE__, "ssd", "write failed: ", strerror(errno), fd);
-+ /* no error handling for windows... */
-+ log_error_write(srv, __FILE__, __LINE__, "ssd", "send failed: ", strerror(errno), fd);
-
- return -1;
- }
- #else
- if ((r = write(fd, offset, toSend)) < 0) {
-- log_error_write(srv, __FILE__, __LINE__, "ssd", "write failed: ", strerror(errno), fd);
-+ switch (errno) {
-+ case EAGAIN:
-+ case EINTR:
-+ r = 0;
-+ break;
-+ case EPIPE:
-+ case ECONNRESET:
-+ return -2;
-+ default:
-+ log_error_write(srv, __FILE__, __LINE__, "ssd",
-+ "write failed:", strerror(errno), fd);
-
-- return -1;
-+ return -1;
-+ }
- }
- #endif
-
-@@ -98,7 +110,7 @@
- return -1;
- }
-
--#if defined USE_MMAP
-+#ifdef USE_MMAP
- if (MAP_FAILED == (p = mmap(0, sce->st.st_size, PROT_READ, MAP_SHARED, ifd, 0))) {
- log_error_write(srv, __FILE__, __LINE__, "ss", "mmap failed: ", strerror(errno));
-
-@@ -109,13 +121,26 @@
- close(ifd);
-
- if ((r = write(fd, p + offset, toSend)) <= 0) {
-- log_error_write(srv, __FILE__, __LINE__, "ss", "write failed: ", strerror(errno));
-- munmap(p, sce->st.st_size);
-- return -1;
-+ switch (errno) {
-+ case EAGAIN:
-+ case EINTR:
-+ r = 0;
-+ break;
-+ case EPIPE:
-+ case ECONNRESET:
-+ munmap(p, sce->st.st_size);
-+ return -2;
-+ default:
-+ log_error_write(srv, __FILE__, __LINE__, "ssd",
-+ "write failed:", strerror(errno), fd);
-+ munmap(p, sce->st.st_size);
-+
-+ return -1;
-+ }
- }
-
- munmap(p, sce->st.st_size);
--#else
-+#else /* USE_MMAP */
- buffer_prepare_copy(srv->tmp_buf, toSend);
-
- lseek(ifd, offset, SEEK_SET);
-@@ -127,12 +152,33 @@
- }
- close(ifd);
-
-- if (-1 == (r = send(fd, srv->tmp_buf->ptr, toSend, 0))) {
-- log_error_write(srv, __FILE__, __LINE__, "ss", "write: ", strerror(errno));
-+#ifdef __WIN32
-+ if ((r = send(fd, srv->tmp_buf->ptr, toSend, 0)) < 0) {
-+ /* no error handling for windows... */
-+ log_error_write(srv, __FILE__, __LINE__, "ssd", "send failed: ", strerror(errno), fd);
-
- return -1;
- }
--#endif
-+#else /* __WIN32 */
-+ if ((r = write(fd, srv->tmp_buf->ptr, toSend)) < 0) {
-+ switch (errno) {
-+ case EAGAIN:
-+ case EINTR:
-+ r = 0;
-+ break;
-+ case EPIPE:
-+ case ECONNRESET:
-+ return -2;
-+ default:
-+ log_error_write(srv, __FILE__, __LINE__, "ssd",
-+ "write failed:", strerror(errno), fd);
-+
-+ return -1;
-+ }
-+ }
-+#endif /* __WIN32 */
-+#endif /* USE_MMAP */
-+
- c->offset += r;
- cq->bytes_out += r;
-
-Index: src/mod_secure_download.c
-===================================================================
---- 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;
-
-- unsigned short timeout;
-+ unsigned int timeout;
- } plugin_config;
-
- typedef struct {
-@@ -99,7 +99,7 @@
- { "secdownload.secret", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 0 */
- { "secdownload.document-root", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 1 */
- { "secdownload.uri-prefix", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 2 */
-- { "secdownload.timeout", NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION }, /* 3 */
-+ { "secdownload.timeout", NULL, T_CONFIG_INT, T_CONFIG_SCOPE_CONNECTION }, /* 3 */
- { NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
- };
-
-@@ -245,8 +245,8 @@
- }
-
- /* timed-out */
-- if ( (srv->cur_ts > ts && srv->cur_ts - ts > p->conf.timeout) ||
-- (srv->cur_ts < ts && ts - srv->cur_ts > p->conf.timeout) ) {
-+ if ( (srv->cur_ts > ts && (unsigned int) (srv->cur_ts - ts) > p->conf.timeout) ||
-+ (srv->cur_ts < ts && (unsigned int) (ts - srv->cur_ts) > p->conf.timeout) ) {
- /* "Gone" as the url will never be valid again instead of "408 - Timeout" where the request may be repeated */
- con->http_status = 410;
-
-Index: src/base.h
-===================================================================
---- 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,
- T_CONFIG_SHORT,
-+ T_CONFIG_INT,
- T_CONFIG_BOOLEAN,
- T_CONFIG_ARRAY,
- T_CONFIG_LOCAL,
-@@ -281,7 +282,7 @@
- unsigned short etag_use_mtime;
- unsigned short etag_use_size;
- unsigned short force_lowercase_filenames; /* if the FS is case-insensitive, force all files to lower-case */
-- unsigned short max_request_size;
-+ unsigned int max_request_size;
-
- unsigned short kbytes_per_second; /* connection kb/s limit */
-
-@@ -472,6 +473,7 @@
-
- buffer *errorlog_file;
- unsigned short errorlog_use_syslog;
-+ buffer *breakagelog_file;
-
- unsigned short dont_daemonize;
- buffer *changeroot;
-@@ -490,7 +492,7 @@
- unsigned short max_worker;
- unsigned short max_fds;
- unsigned short max_conns;
-- unsigned short max_request_size;
-+ unsigned int max_request_size;
-
- unsigned short log_request_header_on_error;
- unsigned short log_state_handling;
-@@ -538,7 +540,7 @@
-
- /* the errorlog */
- int errorlog_fd;
-- enum { ERRORLOG_STDERR, ERRORLOG_FILE, ERRORLOG_SYSLOG, ERRORLOG_PIPE } errorlog_mode;
-+ enum { ERRORLOG_FILE, ERRORLOG_FD, ERRORLOG_SYSLOG, ERRORLOG_PIPE } errorlog_mode;
- buffer *errorlog_buf;
-
- fdevents *ev, *ev_ins;
-Index: src/mod_rewrite.c
-===================================================================
---- 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;
-
- if (NULL != (du = array_get_element(ca, option))) {
-- data_array *da = (data_array *)du;
-+ data_array *da;
- size_t j;
-
- if (du->type != TYPE_ARRAY) {
-@@ -373,7 +373,7 @@
- }
- } else {
- const char **list;
-- size_t start, end;
-+ size_t start;
- size_t k;
-
- /* it matched */
-@@ -383,17 +383,15 @@
-
- buffer_reset(con->request.uri);
-
-- start = 0; end = pattern_len;
-+ start = 0;
- for (k = 0; k < pattern_len; k++) {
- if (pattern[k] == '$' || pattern[k] == '%') {
- /* got one */
-
- size_t num = pattern[k + 1] - '0';
-
-- end = k;
-+ buffer_append_string_len(con->request.uri, pattern + start, k - start);
-
-- buffer_append_string_len(con->request.uri, pattern + start, end - start);
--
- if (!isdigit((unsigned char)pattern[k + 1])) {
- /* enable escape: "%%" => "%", "%a" => "%a", "$$" => "$" */
- 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)
-+++ src/connections.c (.../branches/lighttpd-1.4.x)
-@@ -782,13 +782,13 @@
- CLEAN(request.pathinfo);
- CLEAN(request.request);
-
-- CLEAN(request.orig_uri);
-+ /* CLEAN(request.orig_uri); */
-
- CLEAN(uri.scheme);
-- CLEAN(uri.authority);
-- CLEAN(uri.path);
-+ /* CLEAN(uri.authority); */
-+ /* CLEAN(uri.path); */
- CLEAN(uri.path_raw);
-- CLEAN(uri.query);
-+ /* CLEAN(uri.query); */
-
- CLEAN(physical.doc_root);
- CLEAN(physical.path);
-@@ -1401,6 +1401,11 @@
- "state for fd", con->fd, connection_get_state(con->state));
- }
-
-+ buffer_reset(con->uri.authority);
-+ buffer_reset(con->uri.path);
-+ buffer_reset(con->uri.query);
-+ buffer_reset(con->request.orig_uri);
-+
- if (http_request_parse(srv, con)) {
- /* we have to read some data from the POST request */
-
-@@ -1725,7 +1730,7 @@
- case HANDLER_FINISHED:
- break;
- default:
-- log_error_write(srv, __FILE__, __LINE__, "");
-+ log_error_write(srv, __FILE__, __LINE__, "sd", "unhandling return value", r);
- break;
- }
- break;
-Index: src/network.c
+Index: src/mod_magnet.c
===================================================================
---- 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;
- }
- }
-
-+#ifdef FD_CLOEXEC
-+ /* set FD_CLOEXEC now, fdevent_fcntl_set is called later; needed for pipe-logger forks */
-+ fcntl(srv_socket->fd, F_SETFD, FD_CLOEXEC);
-+#endif
-+
- /* */
- srv->cur_fds = srv_socket->fd;
-
- 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;
-+ 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;
- }
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/lighttpd/lighttpd-branch.diff?r1=1.60&r2=1.61&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/lighttpd/lighttpd.spec?r1=1.306&r2=1.307&f=u
More information about the pld-cvs-commit
mailing list