Changeset 60af37


Ignore:
Timestamp:
12/08/08 19:02:39 (3 years ago)
Author:
������nephrite@…>
Branches:
master-v0.6, nginx-v0.6
Children:
6c857c, feb0c3
Parents:
648814
git-author:
������nephrite@…> (12/08/08 19:02:39)
git-committer:
������nephrite@…> (12/08/08 19:02:39)
Message:

vendor drop 0.6.34

Location:
server
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • server/CHANGES

    r648814 r60af37  
     1 
     2Changes with nginx 0.6.34                                        27 Nov 2008 
     3 
     4    *) Change: now the EAGAIN error returned by connect() is not considered  
     5       as temporary error. 
     6 
     7    *) Change: now the "gzip_vary" directive turned on issues a  
     8       "Vary: Accept-Encoding" header line for uncompressed responses too. 
     9 
     10    *) Feature: the "expires" directive supports daily time. 
     11 
     12    *) Feature: the "Expect" request header line support. 
     13 
     14    *) Feature: now the "rewrite" directive does a redirect automatically  
     15       if the "https://" protocol is used. 
     16 
     17    *) Bugfix: the "listen" directive parameters such as "backlog",  
     18       "rcvbuf", etc. were not set, if a default server was not the first  
     19       one. 
     20 
     21    *) Bugfix: the "log_not_found" directive did not work for index files  
     22       tests. 
     23 
     24    *) Bugfix: now if FastCGI server sends a "Location" header line without  
     25       status line, then nginx uses 302 status code. 
     26       Thanks to Maxim Dounin. 
     27 
     28    *) Bugfix: the ngx_http_flv_module did not support several values in a  
     29       query string. 
     30 
     31    *) Bugfix: when a request to a directory was redirected with the slash  
     32       added, nginx dropped a query string from the original request. 
     33 
    134 
    235Changes with nginx 0.6.33                                        20 Nov 2008 
  • server/CHANGES.ru

    r648814 r60af37  
     1 
     2éÚÍÅÎÅÎÉÑ × nginx 0.6.34                                          27.11.2008 
     3 
     4    *) éÚÍÅÎÅÎÉÅ: ÔÅÐÅÒØ ÏÛÉÂËÁ EAGAIN ÐÒÉ ×ÙÚÏ×Å connect() ÎÅ ÓÞÉÔÁÅÔÓÑ  
     5       ×ÒÅÍÅÎÎÏÊ. 
     6 
     7    *) éÚÍÅÎÅÎÉÅ: ÔÅÐÅÒØ ÄÉÒÅËÔÉ×Á "gzip_vary on" ×ÙÄÁ£Ô ÓÔÒÏËÕ  
     8       "Vary: Accept-Encoding" × ÚÁÇÏÌÏ×ËÅ ÏÔ×ÅÔÁ É ÄÌÑ ÎÅÓÖÁÔÙÈ ÏÔ×ÅÔÏ×. 
     9 
     10    *) äÏÂÁ×ÌÅÎÉÅ: ÄÉÒÅËÔÉ×Á expires ÐÏÄÄÅÒÖÉ×ÁÅÔ ÓÕÔÏÞÎÏÅ ×ÒÅÍÑ. 
     11 
     12    *) äÏÂÁ×ÌÅÎÉÅ: ÐÏÄÄÅÒÖËÁ ÓÔÒÏËÉ "Expect" × ÚÁÇÏÌÏ×ËÅ ÚÁÐÒÏÓÁ. 
     13 
     14    *) äÏÂÁ×ÌÅÎÉÅ: ÔÅÐÅÒØ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÐÒÏÔÏËÏÌÁ "https://" ×  
     15       ÄÉÒÅËÔÉ×Å rewrite Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÅÌÁÅÔÓÑ ÒÅÄÉÒÅËÔ. 
     16 
     17    *) éÓÐÒÁ×ÌÅÎÉÅ: ÐÁÒÁÍÅÔÒÙ ÄÉÒÅËÔÉ×Ù listen, ÔÁËÉÅ ËÁË backlog, rcvbuf É  
     18       ÐÒÏÞÉÅ, ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÌÉÓØ, ÅÓÌÉ ÓÅÒ×ÅÒÏÍ ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÙÌ ÎÅ ÐÅÒ×ÙÊ  
     19       ÓÅÒ×ÅÒ. 
     20 
     21    *) éÓÐÒÁ×ÌÅÎÉÅ: ÄÉÒÅËÔÉ×Á log_not_found ÎÅ ÒÁÂÏÔÁÌÁ ÐÒÉ ÐÏÉÓËÅ  
     22       ÉÎÄÅËÓÎÙÈ ÆÁÊÌÏ×. 
     23 
     24    *) éÓÐÒÁ×ÌÅÎÉÅ: ÔÅÐÅÒØ, ÅÓÌÉ FastCGI-ÓÅÒ×ÅÒ ÐÒÉÓÙÌÁÅÔ ÓÔÒÏËÕ "Location"  
     25       × ÚÁÇÏÌÏ×ËÅ ÏÔ×ÅÔÁ ÂÅÚ ÓÔÒÏËÉ ÓÔÁÔÕÓÁ, ÔÏ nginx ÉÓÐÏÌØÚÕÅÔ ËÏÄ  
     26       ÓÔÁÔÕÓÁ 302. 
     27       óÐÁÓÉÂÏ íÁËÓÉÍÕ äÕÎÉÎÕ. 
     28 
     29    *) éÓÐÒÁ×ÌÅÎÉÅ: ÍÏÄÕÌØ ngx_http_flv_module ÎÅ ÐÏÄÄÅÒÖÉ×ÁÌ ÎÅÓËÏÌØËÏ  
     30       ÚÎÁÞÅÎÉÊ × ÁÒÇÕÍÅÎÔÁÈ ÚÁÐÒÏÓÁ. 
     31 
     32    *) éÓÐÒÁ×ÌÅÎÉÅ: ÐÒÉ ÒÅÄÉÒÅËÔÅ ÚÁÐÒÏÓÁ Ë ËÁÔÁÌÏÇÕ Ó ÄÏÂÁ×ÌÅÎÉÅÍ ÓÌÜÛÁ  
     33       nginx ÎÅ ÄÏÂÁ×ÌÑÌ ÁÒÇÕÍÅÎÔÙ ÉÚ ÏÒÉÇÉÎÁÌØÎÏÇÏ ÚÁÐÒÏÓÁ. 
     34 
    135 
    236éÚÍÅÎÅÎÉÑ × nginx 0.6.33                                          20.11.2008 
  • server/src/core/nginx.h

    r648814 r60af37  
    99 
    1010 
    11 #define NGINX_VERSION      "0.6.33" 
     11#define NGINX_VERSION      "0.6.34" 
    1212#define NGINX_VER          "nginx/" NGINX_VERSION 
    1313 
  • server/src/core/ngx_times.c

    re5ee98 r60af37  
    292292    tp->ngx_tm_wday = (ngx_tm_wday_t) wday; 
    293293} 
     294 
     295 
     296time_t 
     297ngx_next_time(time_t when) 
     298{ 
     299    time_t     now, next; 
     300    struct tm  tm; 
     301 
     302    now = ngx_time(); 
     303 
     304    ngx_libc_localtime(now, &tm); 
     305 
     306    tm.tm_hour = (int) (when / 3600); 
     307    when %= 3600; 
     308    tm.tm_min = (int) (when / 60); 
     309    tm.tm_sec = (int) (when % 60); 
     310 
     311    next = mktime(&tm); 
     312 
     313    if (next == -1) { 
     314        return -1; 
     315    } 
     316 
     317    if (next - now > 0) { 
     318        return next; 
     319    } 
     320 
     321    tm.tm_mday++; 
     322 
     323    /* mktime() should normalize a date (Jan 32, etc) */ 
     324 
     325    next = mktime(&tm); 
     326 
     327    if (next != -1) { 
     328        return next; 
     329    } 
     330 
     331    return -1; 
     332} 
  • server/src/core/ngx_times.h

    r0019fc r60af37  
    2626void ngx_gmtime(time_t t, ngx_tm_t *tp); 
    2727 
     28time_t ngx_next_time(time_t when); 
     29#define ngx_next_time_n      "mktime()" 
     30 
    2831 
    2932extern volatile ngx_time_t  *ngx_cached_time; 
  • server/src/event/ngx_event_connect.c

    r2fe1a6 r60af37  
    140140        err = ngx_socket_errno; 
    141141 
    142         /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */ 
    143  
    144         if (err != NGX_EINPROGRESS && err != NGX_EAGAIN) { 
    145  
     142 
     143        if (err != NGX_EINPROGRESS 
     144#if (NGX_WIN32) 
     145            /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */ 
     146            && err != NGX_EAGAIN 
     147#endif 
     148            ) 
     149        { 
    146150            if (err == NGX_ECONNREFUSED 
     151#if (NGX_LINUX) 
     152                /* 
     153                 * Linux returns EAGAIN instead of ECONNREFUSED 
     154                 * for unix sockets if listen queue is full 
     155                 */ 
     156                || err == NGX_EAGAIN 
     157#endif 
    147158                || err == NGX_ENETDOWN 
    148159                || err == NGX_ENETUNREACH 
  • server/src/http/modules/ngx_http_charset_filter_module.c

    r02e055 r60af37  
    205205    if (r == r->main) { 
    206206 
     207        if (r->headers_out.content_encoding 
     208            && r->headers_out.content_encoding->value.len) 
     209        { 
     210            return ngx_http_next_header_filter(r); 
     211        } 
     212 
    207213        if (r->headers_out.content_type.len == 0) { 
    208214            return ngx_http_next_header_filter(r); 
  • server/src/http/modules/ngx_http_fastcgi_module.c

    r883f79 r60af37  
    11901190                    u->headers_in.status_line = *status_line; 
    11911191 
     1192                } else if (u->headers_in.location) { 
     1193                    u->headers_in.status_n = 302; 
     1194                    u->headers_in.status_line.len = 
     1195                                           sizeof("302 Moved Temporarily") - 1; 
     1196                    u->headers_in.status_line.data = 
     1197                                           (u_char *) "302 Moved Temporarily"; 
     1198 
    11921199                } else { 
    11931200                    u->headers_in.status_n = 200; 
  • server/src/http/modules/ngx_http_flv_module.c

    rcef790 r60af37  
    6161ngx_http_flv_handler(ngx_http_request_t *r) 
    6262{ 
    63     u_char                    *p, *last; 
     63    u_char                    *p, *n, *last; 
    6464    off_t                      start, len; 
    6565    size_t                     root; 
     
    169169            p += 6; 
    170170 
    171             start = ngx_atoof(p, r->args.len - (p - r->args.data)); 
     171            for (n = p; n < r->args.data + r->args.len; n++) { 
     172                if (*n == '&') { 
     173                    break; 
     174                } 
     175            } 
     176 
     177            start = ngx_atoof(p, n - p); 
    172178 
    173179            if (start == NGX_ERROR || start >= len) { 
  • server/src/http/modules/ngx_http_gzip_filter_module.c

    r08686b r60af37  
    205205ngx_http_gzip_header_filter(ngx_http_request_t *r) 
    206206{ 
    207     ngx_str_t                 *type; 
    208     ngx_uint_t                 i; 
    209     ngx_table_elt_t           *h; 
    210     ngx_http_gzip_ctx_t       *ctx; 
    211     ngx_http_gzip_conf_t      *conf; 
    212     ngx_http_core_loc_conf_t  *clcf; 
     207    ngx_str_t             *type; 
     208    ngx_uint_t             i; 
     209    ngx_table_elt_t       *h; 
     210    ngx_http_gzip_ctx_t   *ctx; 
     211    ngx_http_gzip_conf_t  *conf; 
    213212 
    214213    conf = ngx_http_get_module_loc_conf(r, ngx_http_gzip_filter_module); 
     
    265264    r->headers_out.content_encoding = h; 
    266265 
    267     clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); 
    268  
    269     if (clcf->gzip_vary) { 
    270         h = ngx_list_push(&r->headers_out.headers); 
    271         if (h == NULL) { 
    272             return NGX_ERROR; 
    273         } 
    274  
    275         h->hash = 1; 
    276         h->key.len = sizeof("Vary") - 1; 
    277         h->key.data = (u_char *) "Vary"; 
    278         h->value.len = sizeof("Accept-Encoding") - 1; 
    279         h->value.data = (u_char *) "Accept-Encoding"; 
    280     } 
    281  
    282266    ctx->length = r->headers_out.content_length_n; 
    283267 
  • server/src/http/modules/ngx_http_gzip_static_module.c

    rcef790 r60af37  
    204204    r->headers_out.content_encoding = h; 
    205205 
    206     if (clcf->gzip_vary) { 
    207         h = ngx_list_push(&r->headers_out.headers); 
    208         if (h == NULL) { 
    209             return NGX_ERROR; 
    210         } 
    211  
    212         h->hash = 1; 
    213         h->key.len = sizeof("Vary") - 1; 
    214         h->key.data = (u_char *) "Vary"; 
    215         h->value.len = sizeof("Accept-Encoding") - 1; 
    216         h->value.data = (u_char *) "Accept-Encoding"; 
    217     } 
    218  
    219206    /* we need to allocate all before the header would be sent */ 
    220207 
  • server/src/http/modules/ngx_http_headers_filter_module.c

    r6cd908 r60af37  
    3737#define NGX_HTTP_EXPIRES_ACCESS    3 
    3838#define NGX_HTTP_EXPIRES_MODIFIED  4 
     39#define NGX_HTTP_EXPIRES_DAILY     5 
    3940 
    4041 
     
    188189{ 
    189190    size_t            len; 
    190     time_t            since; 
     191    time_t            now, expires_time, max_age; 
    191192    ngx_uint_t        i; 
    192193    ngx_table_elt_t  *expires, *cc, **ccp; 
     
    280281    } 
    281282 
     283    now = ngx_time(); 
     284 
    282285    if (conf->expires == NGX_HTTP_EXPIRES_ACCESS 
    283286        || r->headers_out.last_modified_time == -1) 
    284287    { 
    285         since = ngx_time(); 
     288        expires_time = now + conf->expires_time; 
     289        max_age = conf->expires_time; 
     290 
     291    } else if (conf->expires == NGX_HTTP_EXPIRES_DAILY) { 
     292        expires_time = ngx_next_time(conf->expires_time); 
     293        max_age = expires_time - now; 
    286294 
    287295    } else { 
    288         since = r->headers_out.last_modified_time; 
    289     } 
    290  
    291     ngx_http_time(expires->value.data, since + conf->expires_time); 
     296        expires_time = r->headers_out.last_modified_time + conf->expires_time; 
     297        max_age = expires_time - now; 
     298    } 
     299 
     300    ngx_http_time(expires->value.data, expires_time); 
    292301 
    293302    if (conf->expires_time < 0) { 
     
    304313    } 
    305314 
    306     cc->value.len = ngx_sprintf(cc->value.data, "max-age=%T", 
    307                                 since + conf->expires_time - ngx_time()) 
     315    cc->value.len = ngx_sprintf(cc->value.data, "max-age=%T", max_age) 
    308316                    - cc->value.data; 
    309317 
     
    515523    } 
    516524 
    517     if (value[n].data[0] == '+') { 
     525    if (value[n].data[0] == '@') { 
     526        value[n].data++; 
     527        value[n].len--; 
     528        minus = 0; 
     529 
     530        if (hcf->expires == NGX_HTTP_EXPIRES_MODIFIED) { 
     531            return "daily time can not be used with \"modified\" parameter"; 
     532        } 
     533 
     534        hcf->expires = NGX_HTTP_EXPIRES_DAILY; 
     535 
     536    } else if (value[n].data[0] == '+') { 
    518537        value[n].data++; 
    519538        value[n].len--; 
     
    533552    if (hcf->expires_time == NGX_ERROR) { 
    534553        return "invalid value"; 
     554    } 
     555 
     556    if (hcf->expires == NGX_HTTP_EXPIRES_DAILY 
     557        && hcf->expires_time > 24 * 60 * 60) 
     558    { 
     559        return "daily time value must be less than 24 hours"; 
    535560    } 
    536561 
  • server/src/http/modules/ngx_http_index_module.c

    r648814 r60af37  
    2828static ngx_int_t ngx_http_index_test_dir(ngx_http_request_t *r, 
    2929    ngx_http_core_loc_conf_t *clcf, u_char *path, u_char *last); 
    30 static ngx_int_t ngx_http_index_error(ngx_http_request_t *r, u_char *file, 
    31     ngx_err_t err); 
     30static ngx_int_t ngx_http_index_error(ngx_http_request_t *r, 
     31    ngx_http_core_loc_conf_t *clcf, u_char *file, ngx_err_t err); 
    3232 
    3333static ngx_int_t ngx_http_index_init(ngx_conf_t *cf); 
     
    226226 
    227227            if (of.err == NGX_ENOTDIR || of.err == NGX_EACCES) { 
    228                 return ngx_http_index_error(r, path.data, of.err); 
     228                return ngx_http_index_error(r, clcf, path.data, of.err); 
    229229            } 
    230230 
     
    304304            if (of.err == NGX_ENOENT) { 
    305305                *last = c; 
    306                 return ngx_http_index_error(r, dir.data, NGX_ENOENT); 
     306                return ngx_http_index_error(r, clcf, dir.data, NGX_ENOENT); 
    307307            } 
    308308 
     
    341341 
    342342static ngx_int_t 
    343 ngx_http_index_error(ngx_http_request_t *r, u_char *file, ngx_err_t err) 
     343ngx_http_index_error(ngx_http_request_t *r, ngx_http_core_loc_conf_t  *clcf, 
     344    u_char *file, ngx_err_t err) 
    344345{ 
    345346    if (err == NGX_EACCES) { 
     
    350351    } 
    351352 
    352     ngx_log_error(NGX_LOG_ERR, r->connection->log, err, 
    353                   "\"%s\" is not found", file); 
     353    if (clcf->log_not_found) { 
     354        ngx_log_error(NGX_LOG_ERR, r->connection->log, err, 
     355                      "\"%s\" is not found", file); 
     356    } 
    354357 
    355358    return NGX_HTTP_NOT_FOUND; 
  • server/src/http/modules/ngx_http_proxy_module.c

    r6cd908 r60af37  
    425425    { ngx_string("Connection"), ngx_string("close") }, 
    426426    { ngx_string("Keep-Alive"), ngx_string("") }, 
     427    { ngx_string("Expect"), ngx_string("") }, 
    427428    { ngx_null_string, ngx_null_string } 
    428429}; 
  • server/src/http/modules/ngx_http_rewrite_module.c

    r0019fc r60af37  
    358358    } 
    359359 
     360    if (ngx_strncmp(value[2].data, "https://", sizeof("https://") - 1) == 0) { 
     361        regex->status = NGX_HTTP_MOVED_TEMPORARILY; 
     362        regex->redirect = 1; 
     363        last = 1; 
     364    } 
     365 
    360366    if (cf->args->nelts == 4) { 
    361367        if (ngx_strcmp(value[3].data, "last") == 0) { 
  • server/src/http/modules/ngx_http_static_module.c

    r648814 r60af37  
    4949{ 
    5050    u_char                    *last, *location; 
    51     size_t                     root; 
     51    size_t                     root, len; 
    5252    ngx_str_t                  path; 
    5353    ngx_int_t                  rc; 
     
    145145        } 
    146146 
    147         if (!clcf->alias && clcf->root_lengths == NULL) { 
     147        len = r->uri.len + 1; 
     148 
     149        if (!clcf->alias && clcf->root_lengths == NULL && r->args.len == 0) { 
    148150            location = path.data + clcf->root.len; 
    149151 
     152            *last = '/'; 
     153 
    150154        } else { 
    151             location = ngx_palloc(r->pool, r->uri.len + 1); 
     155            if (r->args.len) { 
     156                len += r->args.len + 1; 
     157            } 
     158 
     159            location = ngx_palloc(r->pool, len); 
    152160            if (location == NULL) { 
    153161                return NGX_HTTP_INTERNAL_SERVER_ERROR; 
     
    155163 
    156164            last = ngx_copy(location, r->uri.data, r->uri.len); 
    157         } 
    158  
    159         *last = '/'; 
     165 
     166            *last = '/'; 
     167 
     168            if (r->args.len) { 
     169                *++last = '?'; 
     170                ngx_memcpy(++last, r->args.data, r->args.len); 
     171            } 
     172        } 
    160173 
    161174        /* 
     
    164177         */ 
    165178 
    166         r->headers_out.location->value.len = r->uri.len + 1; 
     179        r->headers_out.location->value.len = len; 
    167180        r->headers_out.location->value.data = location; 
    168181 
  • server/src/http/modules/perl/nginx.pm

    r648814 r60af37  
    4848); 
    4949 
    50 our $VERSION = '0.6.33'; 
     50our $VERSION = '0.6.34'; 
    5151 
    5252require XSLoader; 
  • server/src/http/ngx_http.c

    re5ee98 r60af37  
    559559                        in_addr[a].core_srv_conf = cscfp[s]; 
    560560                        in_addr[a].default_server = 1; 
     561                        in_addr[a].listen_conf = &lscf[l].conf; 
    561562                    } 
    562563 
  • server/src/http/ngx_http_core_module.c

    r6cd908 r60af37  
    3131static ngx_int_t ngx_http_core_find_location(ngx_http_request_t *r, 
    3232    ngx_array_t *locations, ngx_uint_t regex_start, size_t len); 
     33static ngx_int_t ngx_http_core_send_continue(ngx_http_request_t *r); 
    3334 
    3435static ngx_int_t ngx_http_core_preconfiguration(ngx_conf_t *cf); 
     
    786787    u_char                    *p; 
    787788    size_t                     len; 
    788     ngx_int_t                  rc; 
     789    ngx_int_t                  rc, expect; 
    789790    ngx_http_core_loc_conf_t  *clcf; 
    790791    ngx_http_core_srv_conf_t  *cscf; 
     
    833834    } 
    834835 
     836    if (r->headers_in.expect) { 
     837        expect = ngx_http_core_send_continue(r); 
     838 
     839        if (expect != NGX_OK) { 
     840            ngx_http_finalize_request(r, expect); 
     841            return NGX_OK; 
     842        } 
     843    } 
    835844 
    836845    if (rc == NGX_HTTP_LOCATION_AUTO_REDIRECT) { 
     
    12501259 
    12511260    return NGX_OK; 
     1261} 
     1262 
     1263 
     1264static ngx_int_t 
     1265ngx_http_core_send_continue(ngx_http_request_t *r) 
     1266{ 
     1267    ngx_int_t   n; 
     1268    ngx_str_t  *expect; 
     1269 
     1270    if (r->expect_tested) { 
     1271        return NGX_OK; 
     1272    } 
     1273 
     1274    r->expect_tested = 1; 
     1275 
     1276    expect = &r->headers_in.expect->value; 
     1277 
     1278    if (expect->len != sizeof("100-continue") - 1 
     1279        || ngx_strncasecmp(expect->data, (u_char *) "100-continue", 
     1280                           sizeof("100-continue") - 1) 
     1281           != 0) 
     1282    { 
     1283        return NGX_OK; 
     1284    } 
     1285 
     1286    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 
     1287                   "send 100 Continue"); 
     1288 
     1289    n = r->connection->send(r->connection, 
     1290                            (u_char *) "HTTP/1.1 100 Continue" CRLF CRLF, 
     1291                            sizeof("HTTP/1.1 100 Continue" CRLF CRLF) - 1); 
     1292 
     1293    if (n == sizeof("HTTP/1.1 100 Continue" CRLF CRLF) - 1) { 
     1294        return NGX_OK; 
     1295    } 
     1296 
     1297    /* we assume that such small packet should be send successfully */ 
     1298 
     1299    return NGX_HTTP_INTERNAL_SERVER_ERROR; 
    12521300} 
    12531301 
  • server/src/http/ngx_http_header_filter_module.c

    r6cd908 r60af37  
    348348    } 
    349349 
     350#if (NGX_HTTP_GZIP) 
     351    if (r->gzip && clcf->gzip_vary) { 
     352        len += sizeof("Vary: Accept-Encoding" CRLF) - 1; 
     353    } 
     354#endif 
     355 
    350356    part = &r->headers_out.headers.part; 
    351357    header = part->elts; 
     
    517523    } 
    518524 
     525#if (NGX_HTTP_GZIP) 
     526    if (r->gzip && clcf->gzip_vary) { 
     527        b->last = ngx_cpymem(b->last, "Vary: Accept-Encoding" CRLF, 
     528                             sizeof("Vary: Accept-Encoding" CRLF) - 1); 
     529    } 
     530#endif 
     531 
    519532    part = &r->headers_out.headers.part; 
    520533    header = part->elts; 
  • server/src/http/ngx_http_request.c

    r648814 r60af37  
    110110                 ngx_http_process_header_line }, 
    111111 
     112    { ngx_string("Expect"), 
     113                 offsetof(ngx_http_headers_in_t, expect), 
     114                 ngx_http_process_unique_header_line }, 
     115 
    112116#if (NGX_HTTP_GZIP) 
    113117    { ngx_string("Accept-Encoding"), 
  • server/src/http/ngx_http_request.h

    r6cd908 r60af37  
    172172 
    173173    ngx_table_elt_t                  *transfer_encoding; 
     174    ngx_table_elt_t                  *expect; 
    174175 
    175176#if (NGX_HTTP_GZIP) 
     
    468469    unsigned                          request_output:1; 
    469470    unsigned                          header_sent:1; 
     471    unsigned                          expect_tested:1; 
    470472    unsigned                          done:1; 
    471473    unsigned                          utf8:1; 
  • server/src/http/ngx_http_upstream.c

    r648814 r60af37  
    138138 
    139139    { ngx_string("Location"), 
    140                  ngx_http_upstream_ignore_header_line, 0, 
     140                 ngx_http_upstream_process_header_line, 
     141                 offsetof(ngx_http_upstream_headers_in_t, location), 
    141142                 ngx_http_upstream_rewrite_location, 0, 0 }, 
    142143 
Note: See TracChangeset for help on using the changeset viewer.