Changeset 2a12f7


Ignore:
Timestamp:
02/04/08 16:12:02 (4 years ago)
Author:
Tomash Brechko <tomash.brechko@…>
Branches:
master-v0.7, master-v0.6, upstream_count_limit
Children:
c79fa6
Parents:
35dacc (diff), dbd2c3 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Tomash Brechko <tomash.brechko@…> (02/04/08 16:12:02)
git-committer:
Tomash Brechko <tomash.brechko@…> (02/04/08 16:12:02)
Message:

Merge branch 'memcached_gzip'

Files:
8 added
9 edited

Legend:

Unmodified
Added
Removed
  • server/src/core/nginx.c

    r0019fc r6a5335  
    274274    } 
    275275 
    276     /* ngx_crc32_init() requires ngx_cacheline_size set in ngx_os_init() */ 
    277  
    278     if (ngx_crc32_init() != NGX_OK) { 
     276    /* 
     277     * ngx_crc32_table_init() requires ngx_cacheline_size set in ngx_os_init() 
     278     */ 
     279 
     280    if (ngx_crc32_table_init() != NGX_OK) { 
    279281        return 1; 
    280282    } 
  • server/src/core/ngx_crc32.c

    r0019fc r6a5335  
    103103 
    104104ngx_int_t 
    105 ngx_crc32_init(void) 
     105ngx_crc32_table_init(void) 
    106106{ 
    107107    void  *p; 
  • server/src/core/ngx_crc32.h

    r0019fc r6a5335  
    5050 
    5151 
    52 ngx_int_t ngx_crc32_init(void); 
     52#define ngx_crc32_init(crc)                                                   \ 
     53    crc = 0xffffffff 
     54 
     55 
     56static ngx_inline void 
     57ngx_crc32_update(uint32_t *crc, u_char *p, size_t len) 
     58{ 
     59    uint32_t  c; 
     60 
     61    c = *crc; 
     62 
     63    while (len--) { 
     64        c = ngx_crc32_table256[(c ^ *p++) & 0xff] ^ (c >> 8); 
     65    } 
     66 
     67    *crc = c; 
     68} 
     69 
     70 
     71#define ngx_crc32_final(crc)                                                  \ 
     72    crc ^= 0xffffffff 
     73 
     74 
     75ngx_int_t ngx_crc32_table_init(void); 
    5376 
    5477 
  • server/src/core/ngx_string.h

    r0019fc r8760a9  
    6464#define ngx_memset(buf, c, n)     (void) memset(buf, c, n) 
    6565 
     66#define ngx_memmove(dst, src, n)  (void) memmove(dst, src, n) 
    6667 
    6768#if (NGX_MEMCPY_LIMIT) 
  • server/src/http/modules/ngx_http_fastcgi_module.c

    r0019fc r66a597  
    180180    { ngx_string("invalid_header"), NGX_HTTP_UPSTREAM_FT_INVALID_HEADER }, 
    181181    { ngx_string("http_500"), NGX_HTTP_UPSTREAM_FT_HTTP_500 }, 
     182    { ngx_string("http_502"), NGX_HTTP_UPSTREAM_FT_HTTP_502 }, 
    182183    { ngx_string("http_503"), NGX_HTTP_UPSTREAM_FT_HTTP_503 }, 
     184    { ngx_string("http_504"), NGX_HTTP_UPSTREAM_FT_HTTP_504 }, 
     185    { ngx_string("http_507"), NGX_HTTP_UPSTREAM_FT_HTTP_507 }, 
    183186    { ngx_string("http_404"), NGX_HTTP_UPSTREAM_FT_HTTP_404 }, 
    184187    { ngx_string("off"), NGX_HTTP_UPSTREAM_FT_OFF }, 
  • server/src/http/modules/ngx_http_gzip_filter_module.c

    r2bbdb3 r95d817  
    309309    ngx_http_gzip_ctx_t   *ctx; 
    310310    ngx_http_gzip_conf_t  *conf; 
     311    const char            *method = (r->gunzip ? "inflate" : "deflate"); 
    311312 
    312313    ctx = ngx_http_get_module_ctx(r, ngx_http_gzip_filter_module); 
     
    366367        if (rc != Z_OK) { 
    367368            ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0, 
    368                           "deflateInit2() failed: %d", rc); 
     369                          "%sInit2() failed: %d", method, rc); 
    369370            ngx_http_gzip_error(ctx); 
    370371            return NGX_ERROR; 
     
    456457 
    457458                if (ctx->in_buf->last_buf) { 
    458                     ctx->flush = Z_FINISH; 
     459                    /* 
     460                     * We use Z_BLOCK below for the following reason: 
     461                     * if we would use Z_FINISH, then decompression 
     462                     * may return Z_BUF_ERROR, meaning there wasn't 
     463                     * enough room for decompressed data.  This error 
     464                     * is not fatal according to zlib.h, however 
     465                     * ignoring it is dangerous and may mask real 
     466                     * bugs.  For instance, sometimes completely empty 
     467                     * last buffer is passed to this filter, and 
     468                     * decompression would enter the infinite loop: no 
     469                     * progress is possible because input is void and 
     470                     * Z_BUF_ERROR is ignored.  We can't use 
     471                     * Z_NO_FLUSH, because it will never return 
     472                     * Z_STREAM_END.  We can't use Z_SYNC_FLUSH, 
     473                     * because it has a special meaning.  So we use 
     474                     * Z_BLOCK, which eventually would return 
     475                     * Z_STREAM_END. 
     476                     * 
     477                     * Perhaps the above is also true for compression, 
     478                     * but right now we won't try to change the old 
     479                     * behaviour. 
     480                     */ 
     481                    ctx->flush = (!r->gunzip ? Z_FINISH : Z_BLOCK); 
    459482 
    460483                } else if (ctx->in_buf->flush) { 
     
    474497 
    475498 
    476             /* is there a space for the gzipped data ? */ 
     499            /* is there a space for the output data ? */ 
    477500 
    478501            if (ctx->zstream.avail_out == 0) { 
     
    503526            } 
    504527 
    505             ngx_log_debug6(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 
    506                          "deflate in: ni:%p no:%p ai:%ud ao:%ud fl:%d redo:%d", 
     528            ngx_log_debug7(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 
     529                         "%s in: ni:%p no:%p ai:%ud ao:%ud fl:%d redo:%d", 
     530                         method, 
    507531                         ctx->zstream.next_in, ctx->zstream.next_out, 
    508532                         ctx->zstream.avail_in, ctx->zstream.avail_out, 
     
    515539            } 
    516540 
    517             if (rc != Z_OK && rc != Z_STREAM_END && rc != Z_BUF_ERROR) { 
     541            if (rc != Z_OK && rc != Z_STREAM_END) { 
    518542                ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0, 
    519                               "deflate() failed: %d, %d", ctx->flush, rc); 
     543                              "%s() failed: %d, %d", method, ctx->flush, rc); 
    520544                ngx_http_gzip_error(ctx); 
    521545                return NGX_ERROR; 
    522546            } 
    523547 
    524             ngx_log_debug5(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 
    525                            "deflate out: ni:%p no:%p ai:%ud ao:%ud rc:%d", 
     548            ngx_log_debug6(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 
     549                           "%s out: ni:%p no:%p ai:%ud ao:%ud rc:%d", 
     550                           method, 
    526551                           ctx->zstream.next_in, ctx->zstream.next_out, 
    527552                           ctx->zstream.avail_in, ctx->zstream.avail_out, 
    528553                           rc); 
    529554 
    530             ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 
    531                            "gzip in_buf:%p pos:%p", 
    532                            ctx->in_buf, ctx->in_buf->pos); 
     555            ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 
     556                           "%s in_buf:%p pos:%p", 
     557                           method, ctx->in_buf, ctx->in_buf->pos); 
    533558 
    534559 
     
    588613                if (rc != Z_OK) { 
    589614                    ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0, 
    590                                   "deflateEnd() failed: %d", rc); 
     615                                  "%sEnd() failed: %d", method, rc); 
    591616                    ngx_http_gzip_error(ctx); 
    592617                    return NGX_ERROR; 
     
    601626                } 
    602627 
    603                 cl->buf = ctx->out_buf; 
    604                 cl->next = NULL; 
    605                 *ctx->last_out = cl; 
    606                 ctx->last_out = &cl->next; 
     628                /* 
     629                 * On decompression we could already output everything 
     630                 * under (ctx->flush == Z_SYNC_FLUSH), so we test here 
     631                 * that the buffer is not empty. 
     632                 */ 
     633                if (!r->gunzip || ctx->out_buf->last > ctx->out_buf->pos) { 
     634                    cl->buf = ctx->out_buf; 
     635                    cl->next = NULL; 
     636                    *ctx->last_out = cl; 
     637                    ctx->last_out = &cl->next; 
     638                } 
    607639 
    608640                if (!r->gunzip) { 
  • server/src/http/modules/ngx_http_proxy_module.c

    ra64318 r66a597  
    134134    { ngx_string("invalid_header"), NGX_HTTP_UPSTREAM_FT_INVALID_HEADER }, 
    135135    { ngx_string("http_500"), NGX_HTTP_UPSTREAM_FT_HTTP_500 }, 
     136    { ngx_string("http_502"), NGX_HTTP_UPSTREAM_FT_HTTP_502 }, 
    136137    { ngx_string("http_503"), NGX_HTTP_UPSTREAM_FT_HTTP_503 }, 
     138    { ngx_string("http_504"), NGX_HTTP_UPSTREAM_FT_HTTP_504 }, 
     139    { ngx_string("http_507"), NGX_HTTP_UPSTREAM_FT_HTTP_507 }, 
    137140    { ngx_string("http_404"), NGX_HTTP_UPSTREAM_FT_HTTP_404 }, 
    138141    { ngx_string("off"), NGX_HTTP_UPSTREAM_FT_OFF }, 
  • server/src/http/ngx_http_upstream.c

    r0019fc r445d49  
    10941094    } 
    10951095 
     1096    if (u->headers_in.status_n == NGX_HTTP_BAD_GATEWAY) { 
     1097 
     1098        if (u->peer.tries > 1 
     1099            && u->conf->next_upstream & NGX_HTTP_UPSTREAM_FT_HTTP_502) 
     1100        { 
     1101            ngx_http_upstream_next(r, u, NGX_HTTP_UPSTREAM_FT_HTTP_502); 
     1102            return; 
     1103        } 
     1104    } 
     1105 
     1106    if (u->headers_in.status_n == NGX_HTTP_SERVICE_UNAVAILABLE) { 
     1107 
     1108        if (u->peer.tries > 1 
     1109            && u->conf->next_upstream & NGX_HTTP_UPSTREAM_FT_HTTP_503) 
     1110        { 
     1111            ngx_http_upstream_next(r, u, NGX_HTTP_UPSTREAM_FT_HTTP_503); 
     1112            return; 
     1113        } 
     1114    } 
     1115 
     1116    if (u->headers_in.status_n == NGX_HTTP_GATEWAY_TIME_OUT) { 
     1117 
     1118        if (u->peer.tries > 1 
     1119            && u->conf->next_upstream & NGX_HTTP_UPSTREAM_FT_HTTP_504) 
     1120        { 
     1121            ngx_http_upstream_next(r, u, NGX_HTTP_UPSTREAM_FT_HTTP_504); 
     1122            return; 
     1123        } 
     1124    } 
     1125 
     1126    if (u->headers_in.status_n == NGX_HTTP_INSUFFICIENT_STORAGE) { 
     1127 
     1128        if (u->peer.tries > 1 
     1129            && u->conf->next_upstream & NGX_HTTP_UPSTREAM_FT_HTTP_507) 
     1130        { 
     1131            ngx_http_upstream_next(r, u, NGX_HTTP_UPSTREAM_FT_HTTP_507); 
     1132            return; 
     1133        } 
     1134    } 
    10961135 
    10971136    if (u->headers_in.status_n >= NGX_HTTP_BAD_REQUEST 
     
    21732212        switch(ft_type) { 
    21742213 
     2214        case NGX_HTTP_UPSTREAM_FT_HTTP_504: 
    21752215        case NGX_HTTP_UPSTREAM_FT_TIMEOUT: 
    21762216            status = NGX_HTTP_GATEWAY_TIME_OUT; 
     
    21832223        case NGX_HTTP_UPSTREAM_FT_HTTP_404: 
    21842224            status = NGX_HTTP_NOT_FOUND; 
     2225            break; 
     2226 
     2227        case NGX_HTTP_UPSTREAM_FT_HTTP_502: 
     2228            status = NGX_HTTP_BAD_GATEWAY; 
     2229            break; 
     2230 
     2231        case NGX_HTTP_UPSTREAM_FT_HTTP_503: 
     2232            status = NGX_HTTP_SERVICE_UNAVAILABLE; 
     2233            break; 
     2234 
     2235        case NGX_HTTP_UPSTREAM_FT_HTTP_507: 
     2236            status = NGX_HTTP_INSUFFICIENT_STORAGE; 
    21852237            break; 
    21862238 
     
    31393191    } 
    31403192 
     3193    us->name = u.url; 
    31413194    us->addrs = u.addrs; 
    31423195    us->naddrs = u.naddrs; 
  • server/src/http/ngx_http_upstream.h

    r0019fc r445d49  
    2525#define NGX_HTTP_UPSTREAM_FT_BUSY_LOCK       0x00000080 
    2626#define NGX_HTTP_UPSTREAM_FT_MAX_WAITING     0x00000100 
     27#define NGX_HTTP_UPSTREAM_FT_HTTP_502        0x00000200 
     28#define NGX_HTTP_UPSTREAM_FT_HTTP_504        0x00000400 
     29#define NGX_HTTP_UPSTREAM_FT_HTTP_507        0x00000800 
    2730#define NGX_HTTP_UPSTREAM_FT_OFF             0x80000000 
    2831 
     
    6568 
    6669typedef struct { 
     70    ngx_str_t                       name; 
    6771    ngx_peer_addr_t                *addrs; 
    6872    ngx_uint_t                      naddrs; 
Note: See TracChangeset for help on using the changeset viewer.