Author: glen                         Date: Thu Dec  1 11:11:25 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- update branch diff:
  [mod_auth] Fix signedness error in http_auth (fixes #2370, CVE-2011-4362)
- rel 4

---- Files affected:
packages/lighttpd:
   branch.sh (1.20 -> 1.21) , lighttpd-branch.diff (1.69 -> 1.70) , 
lighttpd.spec (1.349 -> 1.350) 

---- Diffs:

================================================================
Index: packages/lighttpd/branch.sh
diff -u packages/lighttpd/branch.sh:1.20 packages/lighttpd/branch.sh:1.21
--- packages/lighttpd/branch.sh:1.20    Mon Feb  8 07:49:47 2010
+++ packages/lighttpd/branch.sh Thu Dec  1 12:11:19 2011
@@ -1,7 +1,7 @@
 #!/bin/sh
 set -e
 svn=svn://svn.lighttpd.net/lighttpd
-tag=lighttpd-1.4.26
+tag=lighttpd-1.4.29
 branch=lighttpd-1.4.x
 out=lighttpd-branch.diff
 

================================================================
Index: packages/lighttpd/lighttpd-branch.diff
diff -u packages/lighttpd/lighttpd-branch.diff:1.69 
packages/lighttpd/lighttpd-branch.diff:1.70
--- packages/lighttpd/lighttpd-branch.diff:1.69 Mon May 24 13:03:31 2010
+++ packages/lighttpd/lighttpd-branch.diff      Thu Dec  1 12:11:19 2011
@@ -1,249 +1,1932 @@
-# Revision 2724
+# Revision 2812
+Index: src/http_auth_digest.c
+===================================================================
+--- src/http_auth_digest.c     (.../tags/lighttpd-1.4.29)
++++ src/http_auth_digest.c     (.../branches/lighttpd-1.4.x)
+@@ -1,26 +0,0 @@
+-#include "buffer.h"
+-
+-#include "http_auth_digest.h"
+-
+-#include <string.h>
+-
+-#ifndef USE_OPENSSL
+-# include "md5.h"
+-
+-typedef li_MD5_CTX MD5_CTX;
+-#define MD5_Init li_MD5_Init
+-#define MD5_Update li_MD5_Update
+-#define MD5_Final li_MD5_Final
+-
+-#endif
+-
+-void CvtHex(IN HASH Bin, OUT HASHHEX Hex) {
+-      unsigned short i;
+-
+-      for (i = 0; i < HASHLEN; i++) {
+-              Hex[i*2] = int2hex((Bin[i] >> 4) & 0xf);
+-              Hex[i*2+1] = int2hex(Bin[i] & 0xf);
+-      }
+-      Hex[HASHHEXLEN] = '\0';
+-}
+-
+Index: src/http_auth_digest.h
+===================================================================
+--- src/http_auth_digest.h     (.../tags/lighttpd-1.4.29)
++++ src/http_auth_digest.h     (.../branches/lighttpd-1.4.x)
+@@ -1,24 +0,0 @@
+-#ifndef _DIGCALC_H_
+-#define _DIGCALC_H_
+-
+-#ifdef HAVE_CONFIG_H
+-# include "config.h"
+-#endif
+-
+-#define HASHLEN 16
+-typedef unsigned char HASH[HASHLEN];
+-#define HASHHEXLEN 32
+-typedef char HASHHEX[HASHHEXLEN+1];
+-#ifdef USE_OPENSSL
+-#define IN const
+-#else
+-#define IN
+-#endif
+-#define OUT
+-
+-void CvtHex(
+-    IN HASH Bin,
+-    OUT HASHHEX Hex
+-    );
+-
+-#endif
+Index: src/network_write.c
+===================================================================
+--- src/network_write.c        (.../tags/lighttpd-1.4.29)
++++ src/network_write.c        (.../branches/lighttpd-1.4.x)
+@@ -24,17 +24,16 @@
+ # include <sys/resource.h>
+ #endif
+ 
+-int network_write_chunkqueue_write(server *srv, connection *con, int fd, 
chunkqueue *cq) {
++int network_write_chunkqueue_write(server *srv, connection *con, int fd, 
chunkqueue *cq, off_t max_bytes) {
+       chunk *c;
+-      size_t chunks_written = 0;
+ 
+-      for(c = cq->first; c; c = c->next) {
++      for(c = cq->first; (max_bytes > 0) && (NULL != c); c = c->next) {
+               int chunk_finished = 0;
+ 
+               switch(c->type) {
+               case MEM_CHUNK: {
+                       char * offset;
+-                      size_t toSend;
++                      off_t toSend;
+                       ssize_t r;
+ 
+                       if (c->mem->used == 0) {
+@@ -44,6 +43,8 @@
+ 
+                       offset = c->mem->ptr + c->offset;
+                       toSend = c->mem->used - 1 - c->offset;
++                      if (toSend > max_bytes) toSend = max_bytes;
++
+ #ifdef __WIN32
+                       if ((r = send(fd, offset, toSend, 0)) < 0) {
+                               /* no error handling for windows... */
+@@ -72,6 +73,7 @@
+ 
+                       c->offset += r;
+                       cq->bytes_out += r;
++                      max_bytes -= r;
+ 
+                       if (c->offset == (off_t)c->mem->used - 1) {
+                               chunk_finished = 1;
+@@ -85,7 +87,7 @@
+ #endif
+                       ssize_t r;
+                       off_t offset;
+-                      size_t toSend;
++                      off_t toSend;
+                       stat_cache_entry *sce = NULL;
+                       int ifd;
+ 
+@@ -98,6 +100,8 @@
+                       offset = c->file.start + c->offset;
+                       toSend = c->file.length - c->offset;
+ 
++                      if (toSend > max_bytes) toSend = max_bytes;
++
+                       if (offset > sce->st.st_size) {
+                               log_error_write(srv, __FILE__, __LINE__, "sb", 
"file was shrinked:", c->file.name);
+ 
+@@ -181,6 +185,7 @@
+ 
+                       c->offset += r;
+                       cq->bytes_out += r;
++                      max_bytes -= r;
+ 
+                       if (c->offset == c->file.length) {
+                               chunk_finished = 1;
+@@ -200,11 +205,9 @@
+ 
+                       break;
+               }
+-
+-              chunks_written++;
+       }
+ 
+-      return chunks_written;
++      return 0;
+ }
+ 
+ #if 0
+Index: src/mod_secure_download.c
+===================================================================
+--- src/mod_secure_download.c  (.../tags/lighttpd-1.4.29)
++++ src/mod_secure_download.c  (.../branches/lighttpd-1.4.x)
+@@ -8,18 +8,8 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-#ifdef USE_OPENSSL
+-# include <openssl/md5.h>
+-#else
+-# include "md5.h"
++#include "md5.h"
+ 
+-typedef li_MD5_CTX MD5_CTX;
+-#define MD5_Init li_MD5_Init
+-#define MD5_Update li_MD5_Update
+-#define MD5_Final li_MD5_Final
+-
+-#endif
+-
+ #define HASHLEN 16
+ typedef unsigned char HASH[HASHLEN];
+ #define HASHHEXLEN 32
+@@ -200,7 +190,7 @@
+ 
+ URIHANDLER_FUNC(mod_secdownload_uri_handler) {
+       plugin_data *p = p_d;
+-      MD5_CTX Md5Ctx;
++      li_MD5_CTX Md5Ctx;
+       HASH HA1;
+       const char *rel_uri, *ts_str, *md5_str;
+       time_t ts = 0;
+@@ -266,9 +256,9 @@
+       buffer_append_string(p->md5, rel_uri);
+       buffer_append_string_len(p->md5, ts_str, 8);
+ 
+-      MD5_Init(&Md5Ctx);
+-      MD5_Update(&Md5Ctx, (unsigned char *)p->md5->ptr, p->md5->used - 1);
+-      MD5_Final(HA1, &Md5Ctx);
++      li_MD5_Init(&Md5Ctx);
++      li_MD5_Update(&Md5Ctx, (unsigned char *)p->md5->ptr, p->md5->used - 1);
++      li_MD5_Final(HA1, &Md5Ctx);
+ 
+       buffer_copy_string_hex(p->md5, (char *)HA1, 16);
+ 
+Index: src/base.h
+===================================================================
+--- src/base.h (.../tags/lighttpd-1.4.29)
++++ src/base.h (.../branches/lighttpd-1.4.x)
+@@ -277,6 +277,7 @@
+       buffer *ssl_cipher_list;
+       buffer *ssl_dh_file;
+       buffer *ssl_ec_curve;
++      unsigned short ssl_honor_cipher_order; /* determine SSL cipher in 
server-preferred order, not client-order */
+       unsigned short ssl_use_sslv2;
+       unsigned short ssl_use_sslv3;
+       unsigned short ssl_verifyclient;
+@@ -284,6 +285,7 @@
+       unsigned short ssl_verifyclient_depth;
+       buffer *ssl_verifyclient_username;
+       unsigned short ssl_verifyclient_export_cert;
++      unsigned short ssl_disable_client_renegotiation;
+ 
+       unsigned short use_ipv6, set_v6only; /* set_v6only is only a temporary 
option */
+       unsigned short defer_accept;
+@@ -437,6 +439,7 @@
+ # ifndef OPENSSL_NO_TLSEXT
+       buffer *tlsext_server_name;
+ # endif
++      unsigned int renegotiations; /* count of SSL_CB_HANDSHAKE_START */
+ #endif
+       /* etag handling */
+       etag_flags_t etag_flags;
+@@ -647,11 +650,9 @@
+ 
+       fdevent_handler_t event_handler;
+ 
+-      int (* network_backend_write)(struct server *srv, connection *con, int 
fd, chunkqueue *cq);
+-      int (* network_backend_read)(struct server *srv, connection *con, int 
fd, chunkqueue *cq);
++      int (* network_backend_write)(struct server *srv, connection *con, int 
fd, chunkqueue *cq, off_t max_bytes);
+ #ifdef USE_OPENSSL
+-      int (* network_ssl_backend_write)(struct server *srv, connection *con, 
SSL *ssl, chunkqueue *cq);
+-      int (* network_ssl_backend_read)(struct server *srv, connection *con, 
SSL *ssl, chunkqueue *cq);
++      int (* network_ssl_backend_write)(struct server *srv, connection *con, 
SSL *ssl, chunkqueue *cq, off_t max_bytes);
+ #endif
+ 
+       uid_t uid;
 Index: src/connections.c
 ===================================================================
---- src/connections.c  (.../tags/lighttpd-1.4.26)
+--- src/connections.c  (.../tags/lighttpd-1.4.29)
 +++ src/connections.c  (.../branches/lighttpd-1.4.x)
-@@ -82,6 +82,11 @@
+@@ -223,6 +223,12 @@
  
-       if (-1 == con->ndx) return -1;
+               len = SSL_read(con->ssl, b->ptr + read_offset, toread);
  
-+      buffer_reset(con->uri.authority);
-+      buffer_reset(con->uri.path);
-+      buffer_reset(con->uri.query);
-+      buffer_reset(con->request.orig_uri);
++              if (con->renegotiations > 1 && 
con->conf.ssl_disable_client_renegotiation) {
++                      connection_set_state(srv, con, CON_STATE_ERROR);
++                      log_error_write(srv, __FILE__, __LINE__, "s", "SSL: 
renegotiation initiated by client");
++                      return -1;
++              }
 +
-       i = con->ndx;
+               if (len > 0) {
+                       if (b->used > 0) b->used--;
+                       b->used += len;
+@@ -445,6 +451,7 @@
+               default:
+                       switch(con->http_status) {
+                       case 400: /* bad request */
++                      case 401: /* authorization required */
+                       case 414: /* overload request header */
+                       case 505: /* unknown protocol */
+                       case 207: /* this was webdav */
+@@ -617,8 +624,9 @@
+ }
  
-       /* not last element */
+ static int connection_handle_write(server *srv, connection *con) {
+-      switch(network_write_chunkqueue(srv, con, con->write_queue)) {
++      switch(network_write_chunkqueue(srv, con, con->write_queue, 
MAX_WRITE_LIMIT)) {
+       case 0:
++              con->write_request_ts = srv->cur_ts;
+               if (con->file_finished) {
+                       connection_set_state(srv, con, CON_STATE_RESPONSE_END);
+                       joblist_append(srv, con);
+@@ -635,6 +643,7 @@
+               joblist_append(srv, con);
+               break;
+       case 1:
++              con->write_request_ts = srv->cur_ts;
+               con->is_writable = 0;
+ 
+               /* not finished yet -> WRITE */
+@@ -1251,8 +1260,6 @@
+                       log_error_write(srv, __FILE__, __LINE__, "ds",
+                                       con->fd,
+                                       "handle write failed.");
+-              } else if (con->state == CON_STATE_WRITE) {
+-                      con->write_request_ts = srv->cur_ts;
+               }
+       }
+ 
+@@ -1352,6 +1359,7 @@
+                               return NULL;
+                       }
+ 
++                      con->renegotiations = 0;
+ #ifndef OPENSSL_NO_TLSEXT
+                       SSL_set_app_data(con->ssl, con);
+ #endif
+@@ -1667,8 +1675,6 @@
+                                                       con->fd,
+                                                       "handle write failed.");
+                                       connection_set_state(srv, con, 
CON_STATE_ERROR);
+-                              } else if (con->state == CON_STATE_WRITE) {
+-                                      con->write_request_ts = srv->cur_ts;
+                               }
+                       }
+ 
+Index: src/mod_staticfile.c
+===================================================================
+--- src/mod_staticfile.c       (.../tags/lighttpd-1.4.29)
++++ src/mod_staticfile.c       (.../branches/lighttpd-1.4.x)
+@@ -26,6 +26,7 @@
+ typedef struct {
+       array *exclude_ext;
+       unsigned short etags_used;
++      unsigned short disable_pathinfo;
+ } plugin_config;
+ 
+ typedef struct {
+@@ -84,6 +85,7 @@
+       config_values_t cv[] = {
+               { "static-file.exclude-extensions", NULL, T_CONFIG_ARRAY, 
T_CONFIG_SCOPE_CONNECTION },       /* 0 */
+               { "static-file.etags",    NULL, T_CONFIG_BOOLEAN, 
T_CONFIG_SCOPE_CONNECTION }, /* 1 */
++              { "static-file.disable-pathinfo", NULL, T_CONFIG_BOOLEAN, 
T_CONFIG_SCOPE_CONNECTION }, /* 2 */
+               { NULL,                         NULL, T_CONFIG_UNSET, 
T_CONFIG_SCOPE_UNSET }
+       };
+ 
+@@ -97,9 +99,11 @@
+               s = calloc(1, sizeof(plugin_config));
+               s->exclude_ext    = array_init();
+               s->etags_used     = 1;
++              s->disable_pathinfo = 0;
+ 
+               cv[0].destination = s->exclude_ext;
+               cv[1].destination = &(s->etags_used);
++              cv[2].destination = &(s->disable_pathinfo);
+ 
+               p->config_storage[i] = s;
+ 
+@@ -119,6 +123,7 @@
+ 
+       PATCH(exclude_ext);
+       PATCH(etags_used);
++      PATCH(disable_pathinfo);
+ 
+       /* skip the first, the global context */
+       for (i = 1; i < srv->config_context->used; i++) {
+@@ -136,7 +141,9 @@
+                               PATCH(exclude_ext);
+                       } else if (buffer_is_equal_string(du->key, 
CONST_STR_LEN("static-file.etags"))) {
+                               PATCH(etags_used);
+-                      } 
++                      } else if (buffer_is_equal_string(du->key, 
CONST_STR_LEN("static-file.disable-pathinfo"))) {
++                              PATCH(disable_pathinfo);
++                      }
+               }
+       }
+ 
+@@ -350,7 +357,6 @@
+ URIHANDLER_FUNC(mod_staticfile_subrequest) {
+       plugin_data *p = p_d;
+       size_t k;
+-      int s_len;
+       stat_cache_entry *sce = NULL;
+       buffer *mtime = NULL;
+       data_string *ds;
+@@ -376,7 +382,12 @@
+ 
+       mod_staticfile_patch_connection(srv, con, p);
+ 
+-      s_len = con->uri.path->used - 1;
++      if (p->conf.disable_pathinfo && 0 != con->request.pathinfo->used) {
++              if (con->conf.log_request_handling) {
++                      log_error_write(srv, __FILE__, __LINE__,  "s",  "-- NOT 
handling file as static file, pathinfo forbidden");
++              }
++              return HANDLER_GO_ON;
++      }
+ 
+       /* ignore certain extensions */
+       for (k = 0; k < p->conf.exclude_ext->used; k++) {
 Index: src/network.c
 ===================================================================
---- src/network.c      (.../tags/lighttpd-1.4.26)
+--- src/network.c      (.../tags/lighttpd-1.4.29)
 +++ src/network.c      (.../branches/lighttpd-1.4.x)
-@@ -82,6 +82,9 @@
-       buffer_copy_string(con->tlsext_server_name, servername);
-       buffer_to_lower(con->tlsext_server_name);
+@@ -27,6 +27,19 @@
+ # include <openssl/rand.h>
+ #endif
  
-+      /* Sometimes this is still set, confusing COMP_HTTP_HOST */
-+      buffer_reset(con->uri.authority);
++#ifdef USE_OPENSSL
++static void ssl_info_callback(const SSL *ssl, int where, int ret) {
++      UNUSED(ret);
 +
-       config_cond_cache_reset(srv, con);
-       config_setup_connection(srv, con);
++      if (0 != (where & SSL_CB_HANDSHAKE_START)) {
++              connection *con = SSL_get_app_data(ssl);
++              ++con->renegotiations;
++      } else if (0 != (where & SSL_CB_HANDSHAKE_DONE)) {
++              ssl->s3->flags |= SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS;
++      }
++}
++#endif
++
+ static handler_t network_server_handle_fdevent(server *srv, void *context, 
int revents) {
+       server_socket *srv_socket = (server_socket *)context;
+       connection *con;
+@@ -480,9 +493,11 @@
+       network_backend_t backend;
+ 
+ #if OPENSSL_VERSION_NUMBER >= 0x0090800fL
++#ifndef OPENSSL_NO_ECDH
+       EC_KEY *ecdh;
+       int nid;
+ #endif
++#endif
+ 
+ #ifdef USE_OPENSSL
+       DH *dh;
+@@ -553,6 +568,11 @@
+       /* load SSL certificates */
+       for (i = 0; i < srv->config_context->used; i++) {
+               specific_config *s = srv->config_storage[i];
++#ifndef SSL_OP_NO_COMPRESSION
++# define SSL_OP_NO_COMPRESSION 0
++#endif
++              long ssloptions =
++                      SSL_OP_ALL | 
SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION | SSL_OP_NO_COMPRESSION;
  
-@@ -525,7 +528,7 @@
+               if (buffer_is_empty(s->ssl_pemfile)) continue;
  
+@@ -586,6 +606,9 @@
+                       return -1;
+               }
+ 
++              SSL_CTX_set_options(s->ssl_ctx, ssloptions);
++              SSL_CTX_set_info_callback(s->ssl_ctx, ssl_info_callback);
++
                if (!s->ssl_use_sslv2) {
                        /* disable SSLv2 */
--                      if (SSL_OP_NO_SSLv2 != SSL_CTX_set_options(s->ssl_ctx, 
SSL_OP_NO_SSLv2)) {
-+                      if (!(SSL_OP_NO_SSLv2 & SSL_CTX_set_options(s->ssl_ctx, 
SSL_OP_NO_SSLv2))) {
-                               log_error_write(srv, __FILE__, __LINE__, "ss", 
"SSL:",
+                       if (!(SSL_OP_NO_SSLv2 & SSL_CTX_set_options(s->ssl_ctx, 
SSL_OP_NO_SSLv2))) {
+@@ -611,6 +634,10 @@
                                                
ERR_error_string(ERR_get_error(), NULL));
                                return -1;
-Index: src/response.c
-===================================================================
---- src/response.c     (.../tags/lighttpd-1.4.26)
-+++ src/response.c     (.../branches/lighttpd-1.4.x)
-@@ -136,6 +136,8 @@
-       X509 *xs;
-       X509_NAME *xn;
-       X509_NAME_ENTRY *xe;
-+      int i, nentries;
-+
-       if (
-               SSL_get_verify_result(con->ssl) != X509_V_OK
-               || !(xs = SSL_get_peer_certificate(con->ssl))
-@@ -144,7 +146,7 @@
-       }
- 
-       xn = X509_get_subject_name(xs);
--      for (int i = 0, nentries = X509_NAME_entry_count(xn); i < nentries; 
++i) {
-+      for (i = 0, nentries = X509_NAME_entry_count(xn); i < nentries; ++i) {
-               int xobjnid;
-               const char * xobjsn;
-               data_string *envds;
-@@ -581,7 +583,7 @@
-                       };
- #endif
-                       if (S_ISDIR(sce->st.st_mode)) {
--                              if 
(con->physical.path->ptr[con->physical.path->used - 2] != '/') {
-+                              if (con->uri.path->ptr[con->uri.path->used - 2] 
!= '/') {
-                                       /* redirect to .../ */
+                       }
++
++                      if (s->ssl_honor_cipher_order) {
++                              SSL_CTX_set_options(s->ssl_ctx, 
SSL_OP_CIPHER_SERVER_PREFERENCE);
++                      }
+               }
  
-                                       
http_response_redirect_to_directory(srv, con);
-Index: src/mod_proxy.c
-===================================================================
---- src/mod_proxy.c    (.../tags/lighttpd-1.4.26)
-+++ src/mod_proxy.c    (.../branches/lighttpd-1.4.x)
-@@ -349,6 +349,10 @@
-               srv->cur_fds--;
+               /* Support for Diffie-Hellman key exchange */
+@@ -847,7 +874,7 @@
+       return 0;
+ }
+ 
+-int network_write_chunkqueue(server *srv, connection *con, chunkqueue *cq) {
++int network_write_chunkqueue(server *srv, connection *con, chunkqueue *cq, 
off_t max_bytes) {
+       int ret = -1;
+       off_t written = 0;
+ #ifdef TCP_CORK
+@@ -855,16 +882,34 @@
+ #endif
+       server_socket *srv_socket = con->srv_socket;
+ 
+-      if (con->conf.global_kbytes_per_second &&
+-          *(con->conf.global_bytes_per_second_cnt_ptr) > 
con->conf.global_kbytes_per_second * 1024) {
+-              /* we reached the global traffic limit */
++      if (con->conf.global_kbytes_per_second) {
++              off_t limit = con->conf.global_kbytes_per_second * 1024 - 
*(con->conf.global_bytes_per_second_cnt_ptr);
++              if (limit <= 0) {
++                      /* we reached the global traffic limit */
+ 
+-              con->traffic_limit_reached = 1;
+-              joblist_append(srv, con);
++                      con->traffic_limit_reached = 1;
++                      joblist_append(srv, con);
+ 
+-              return 1;
++                      return 1;
++              } else {
++                      if (max_bytes > limit) max_bytes = limit;
++              }
        }
  
-+      if (hctx->host) {
-+              hctx->host->usage--;
++      if (con->conf.kbytes_per_second) {
++              off_t limit = con->conf.kbytes_per_second * 1024 - 
con->bytes_written_cur_second;
++              if (limit <= 0) {
++                      /* we reached the traffic limit */
++
++                      con->traffic_limit_reached = 1;
++                      joblist_append(srv, con);
++
++                      return 1;
++              } else {
++                      if (max_bytes > limit) max_bytes = limit;
++              }
 +      }
 +
-       handler_ctx_free(hctx);
-       con->plugin_ctx[p->id] = NULL;
+       written = cq->bytes_out;
+ 
+ #ifdef TCP_CORK
+@@ -879,10 +924,10 @@
+ 
+       if (srv_socket->is_ssl) {
+ #ifdef USE_OPENSSL
+-              ret = srv->network_ssl_backend_write(srv, con, con->ssl, cq);
++              ret = srv->network_ssl_backend_write(srv, con, con->ssl, cq, 
max_bytes);
+ #endif
+       } else {
+-              ret = srv->network_backend_write(srv, con, con->fd, cq);
++              ret = srv->network_backend_write(srv, con, con->fd, cq, 
max_bytes);
+       }
+ 
+       if (ret >= 0) {
+@@ -903,12 +948,5 @@
+ 
+       *(con->conf.global_bytes_per_second_cnt_ptr) += written;
+ 
+-      if (con->conf.kbytes_per_second &&
+-          (con->bytes_written_cur_second > con->conf.kbytes_per_second * 
1024)) {
+-              /* we reached the traffic limit */
+-
+-              con->traffic_limit_reached = 1;
+-              joblist_append(srv, con);
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/lighttpd/branch.sh?r1=1.20&r2=1.21&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/lighttpd/lighttpd-branch.diff?r1=1.69&r2=1.70&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/lighttpd/lighttpd.spec?r1=1.349&r2=1.350&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to