]> git.kaiwu.me - nginx.git/commitdiff
two commits those go together by mistake
authorIgor Sysoev <igor@sysoev.ru>
Mon, 1 Oct 2007 16:00:13 +0000 (16:00 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 1 Oct 2007 16:00:13 +0000 (16:00 +0000)
*) fix gzip broken in r1544
*) fix memcached END test

src/http/modules/ngx_http_gzip_filter_module.c
src/http/modules/ngx_http_memcached_module.c

index d060190c26c0c84b5a6b06bc63ba953e41abd873..c278230049342a409fe6f13b43a5214476a4e1b4 100644 (file)
@@ -279,7 +279,9 @@ ngx_http_gzip_header_filter(ngx_http_request_t *r)
         || r->headers_in.accept_encoding == NULL
         || (r->headers_out.content_length_n != -1
             && r->headers_out.content_length_n < conf->min_length)
-        || ngx_strcasestrn(r->headers_in.accept_encoding->value.data, "gzip", 3)
+        || ngx_strcasestrn(r->headers_in.accept_encoding->value.data,
+                           "gzip", 4 - 1)
+           == NULL
        )
     {
         return ngx_http_next_header_filter(r);
index 2a44ad36ec04b0f4458470e36432d1205710f86d..73652d517d278a36fae9388c9a978ae61a06c36f 100644 (file)
@@ -426,15 +426,15 @@ ngx_http_memcached_filter(void *data, ssize_t bytes)
 
         if (ngx_strncmp(b->last,
                    ngx_http_memcached_end + NGX_HTTP_MEMCACHED_END - ctx->rest,
-                   bytes)
+                   ctx->rest)
             != 0)
         {
             ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0,
                           "memcached sent invalid trailer");
         }
 
-        u->length -= bytes;
-        ctx->rest -= bytes;
+        u->length = 0;
+        ctx->rest = 0;
 
         return NGX_OK;
     }
@@ -453,7 +453,8 @@ ngx_http_memcached_filter(void *data, ssize_t bytes)
 
     *ll = cl;
 
-    cl->buf->pos = b->last;
+    last = b->last;
+    cl->buf->pos = last;
     b->last += bytes;
     cl->buf->last = b->last;
 
@@ -461,20 +462,19 @@ ngx_http_memcached_filter(void *data, ssize_t bytes)
                    "memcached filter bytes:%z size:%z length:%z rest:%z",
                    bytes, b->last - b->pos, u->length, ctx->rest);
 
-    if (b->last - b->pos <= (ssize_t) (u->length - NGX_HTTP_MEMCACHED_END)) {
+    if (bytes <= (ssize_t) (u->length - NGX_HTTP_MEMCACHED_END)) {
         u->length -= bytes;
         return NGX_OK;
     }
 
-
-    last = b->pos + u->length - NGX_HTTP_MEMCACHED_END;
+    last += u->length - NGX_HTTP_MEMCACHED_END;
 
     if (ngx_strncmp(last, ngx_http_memcached_end, b->last - last) != 0) {
         ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0,
                       "memcached sent invalid trailer");
     }
 
-    ctx->rest = u->length - (b->last - b->pos);
+    ctx->rest -= b->last - last;
     b->last = last;
     cl->buf->last = last;
     u->length = ctx->rest;