Changeset 60af37
- Timestamp:
- 12/08/08 19:02:39 (3 years ago)
- 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)
- Location:
- server
- Files:
-
- 23 edited
-
CHANGES (modified) (1 diff)
-
CHANGES.ru (modified) (1 diff)
-
src/core/nginx.h (modified) (1 diff)
-
src/core/ngx_times.c (modified) (1 diff)
-
src/core/ngx_times.h (modified) (1 diff)
-
src/event/ngx_event_connect.c (modified) (1 diff)
-
src/http/modules/ngx_http_charset_filter_module.c (modified) (1 diff)
-
src/http/modules/ngx_http_fastcgi_module.c (modified) (1 diff)
-
src/http/modules/ngx_http_flv_module.c (modified) (2 diffs)
-
src/http/modules/ngx_http_gzip_filter_module.c (modified) (2 diffs)
-
src/http/modules/ngx_http_gzip_static_module.c (modified) (1 diff)
-
src/http/modules/ngx_http_headers_filter_module.c (modified) (6 diffs)
-
src/http/modules/ngx_http_index_module.c (modified) (5 diffs)
-
src/http/modules/ngx_http_proxy_module.c (modified) (1 diff)
-
src/http/modules/ngx_http_rewrite_module.c (modified) (1 diff)
-
src/http/modules/ngx_http_static_module.c (modified) (4 diffs)
-
src/http/modules/perl/nginx.pm (modified) (1 diff)
-
src/http/ngx_http.c (modified) (1 diff)
-
src/http/ngx_http_core_module.c (modified) (4 diffs)
-
src/http/ngx_http_header_filter_module.c (modified) (2 diffs)
-
src/http/ngx_http_request.c (modified) (1 diff)
-
src/http/ngx_http_request.h (modified) (2 diffs)
-
src/http/ngx_http_upstream.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
server/CHANGES
r648814 r60af37 1 2 Changes 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 1 34 2 35 Changes 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 1 35 2 36 éÚÍÅÎÅÎÉÑ × nginx 0.6.33 20.11.2008 -
server/src/core/nginx.h
r648814 r60af37 9 9 10 10 11 #define NGINX_VERSION "0.6.3 3"11 #define NGINX_VERSION "0.6.34" 12 12 #define NGINX_VER "nginx/" NGINX_VERSION 13 13 -
server/src/core/ngx_times.c
re5ee98 r60af37 292 292 tp->ngx_tm_wday = (ngx_tm_wday_t) wday; 293 293 } 294 295 296 time_t 297 ngx_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 26 26 void ngx_gmtime(time_t t, ngx_tm_t *tp); 27 27 28 time_t ngx_next_time(time_t when); 29 #define ngx_next_time_n "mktime()" 30 28 31 29 32 extern volatile ngx_time_t *ngx_cached_time; -
server/src/event/ngx_event_connect.c
r2fe1a6 r60af37 140 140 err = ngx_socket_errno; 141 141 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 { 146 150 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 147 158 || err == NGX_ENETDOWN 148 159 || err == NGX_ENETUNREACH -
server/src/http/modules/ngx_http_charset_filter_module.c
r02e055 r60af37 205 205 if (r == r->main) { 206 206 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 207 213 if (r->headers_out.content_type.len == 0) { 208 214 return ngx_http_next_header_filter(r); -
server/src/http/modules/ngx_http_fastcgi_module.c
r883f79 r60af37 1190 1190 u->headers_in.status_line = *status_line; 1191 1191 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 1192 1199 } else { 1193 1200 u->headers_in.status_n = 200; -
server/src/http/modules/ngx_http_flv_module.c
rcef790 r60af37 61 61 ngx_http_flv_handler(ngx_http_request_t *r) 62 62 { 63 u_char *p, * last;63 u_char *p, *n, *last; 64 64 off_t start, len; 65 65 size_t root; … … 169 169 p += 6; 170 170 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); 172 178 173 179 if (start == NGX_ERROR || start >= len) { -
server/src/http/modules/ngx_http_gzip_filter_module.c
r08686b r60af37 205 205 ngx_http_gzip_header_filter(ngx_http_request_t *r) 206 206 { 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; 213 212 214 213 conf = ngx_http_get_module_loc_conf(r, ngx_http_gzip_filter_module); … … 265 264 r->headers_out.content_encoding = h; 266 265 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 282 266 ctx->length = r->headers_out.content_length_n; 283 267 -
server/src/http/modules/ngx_http_gzip_static_module.c
rcef790 r60af37 204 204 r->headers_out.content_encoding = h; 205 205 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 219 206 /* we need to allocate all before the header would be sent */ 220 207 -
server/src/http/modules/ngx_http_headers_filter_module.c
r6cd908 r60af37 37 37 #define NGX_HTTP_EXPIRES_ACCESS 3 38 38 #define NGX_HTTP_EXPIRES_MODIFIED 4 39 #define NGX_HTTP_EXPIRES_DAILY 5 39 40 40 41 … … 188 189 { 189 190 size_t len; 190 time_t since;191 time_t now, expires_time, max_age; 191 192 ngx_uint_t i; 192 193 ngx_table_elt_t *expires, *cc, **ccp; … … 280 281 } 281 282 283 now = ngx_time(); 284 282 285 if (conf->expires == NGX_HTTP_EXPIRES_ACCESS 283 286 || r->headers_out.last_modified_time == -1) 284 287 { 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; 286 294 287 295 } 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); 292 301 293 302 if (conf->expires_time < 0) { … … 304 313 } 305 314 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) 308 316 - cc->value.data; 309 317 … … 515 523 } 516 524 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] == '+') { 518 537 value[n].data++; 519 538 value[n].len--; … … 533 552 if (hcf->expires_time == NGX_ERROR) { 534 553 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"; 535 560 } 536 561 -
server/src/http/modules/ngx_http_index_module.c
r648814 r60af37 28 28 static ngx_int_t ngx_http_index_test_dir(ngx_http_request_t *r, 29 29 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);30 static 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); 32 32 33 33 static ngx_int_t ngx_http_index_init(ngx_conf_t *cf); … … 226 226 227 227 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); 229 229 } 230 230 … … 304 304 if (of.err == NGX_ENOENT) { 305 305 *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); 307 307 } 308 308 … … 341 341 342 342 static ngx_int_t 343 ngx_http_index_error(ngx_http_request_t *r, u_char *file, ngx_err_t err) 343 ngx_http_index_error(ngx_http_request_t *r, ngx_http_core_loc_conf_t *clcf, 344 u_char *file, ngx_err_t err) 344 345 { 345 346 if (err == NGX_EACCES) { … … 350 351 } 351 352 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 } 354 357 355 358 return NGX_HTTP_NOT_FOUND; -
server/src/http/modules/ngx_http_proxy_module.c
r6cd908 r60af37 425 425 { ngx_string("Connection"), ngx_string("close") }, 426 426 { ngx_string("Keep-Alive"), ngx_string("") }, 427 { ngx_string("Expect"), ngx_string("") }, 427 428 { ngx_null_string, ngx_null_string } 428 429 }; -
server/src/http/modules/ngx_http_rewrite_module.c
r0019fc r60af37 358 358 } 359 359 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 360 366 if (cf->args->nelts == 4) { 361 367 if (ngx_strcmp(value[3].data, "last") == 0) { -
server/src/http/modules/ngx_http_static_module.c
r648814 r60af37 49 49 { 50 50 u_char *last, *location; 51 size_t root ;51 size_t root, len; 52 52 ngx_str_t path; 53 53 ngx_int_t rc; … … 145 145 } 146 146 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) { 148 150 location = path.data + clcf->root.len; 149 151 152 *last = '/'; 153 150 154 } 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); 152 160 if (location == NULL) { 153 161 return NGX_HTTP_INTERNAL_SERVER_ERROR; … … 155 163 156 164 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 } 160 173 161 174 /* … … 164 177 */ 165 178 166 r->headers_out.location->value.len = r->uri.len + 1;179 r->headers_out.location->value.len = len; 167 180 r->headers_out.location->value.data = location; 168 181 -
server/src/http/modules/perl/nginx.pm
r648814 r60af37 48 48 ); 49 49 50 our $VERSION = '0.6.3 3';50 our $VERSION = '0.6.34'; 51 51 52 52 require XSLoader; -
server/src/http/ngx_http.c
re5ee98 r60af37 559 559 in_addr[a].core_srv_conf = cscfp[s]; 560 560 in_addr[a].default_server = 1; 561 in_addr[a].listen_conf = &lscf[l].conf; 561 562 } 562 563 -
server/src/http/ngx_http_core_module.c
r6cd908 r60af37 31 31 static ngx_int_t ngx_http_core_find_location(ngx_http_request_t *r, 32 32 ngx_array_t *locations, ngx_uint_t regex_start, size_t len); 33 static ngx_int_t ngx_http_core_send_continue(ngx_http_request_t *r); 33 34 34 35 static ngx_int_t ngx_http_core_preconfiguration(ngx_conf_t *cf); … … 786 787 u_char *p; 787 788 size_t len; 788 ngx_int_t rc ;789 ngx_int_t rc, expect; 789 790 ngx_http_core_loc_conf_t *clcf; 790 791 ngx_http_core_srv_conf_t *cscf; … … 833 834 } 834 835 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 } 835 844 836 845 if (rc == NGX_HTTP_LOCATION_AUTO_REDIRECT) { … … 1250 1259 1251 1260 return NGX_OK; 1261 } 1262 1263 1264 static ngx_int_t 1265 ngx_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; 1252 1300 } 1253 1301 -
server/src/http/ngx_http_header_filter_module.c
r6cd908 r60af37 348 348 } 349 349 350 #if (NGX_HTTP_GZIP) 351 if (r->gzip && clcf->gzip_vary) { 352 len += sizeof("Vary: Accept-Encoding" CRLF) - 1; 353 } 354 #endif 355 350 356 part = &r->headers_out.headers.part; 351 357 header = part->elts; … … 517 523 } 518 524 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 519 532 part = &r->headers_out.headers.part; 520 533 header = part->elts; -
server/src/http/ngx_http_request.c
r648814 r60af37 110 110 ngx_http_process_header_line }, 111 111 112 { ngx_string("Expect"), 113 offsetof(ngx_http_headers_in_t, expect), 114 ngx_http_process_unique_header_line }, 115 112 116 #if (NGX_HTTP_GZIP) 113 117 { ngx_string("Accept-Encoding"), -
server/src/http/ngx_http_request.h
r6cd908 r60af37 172 172 173 173 ngx_table_elt_t *transfer_encoding; 174 ngx_table_elt_t *expect; 174 175 175 176 #if (NGX_HTTP_GZIP) … … 468 469 unsigned request_output:1; 469 470 unsigned header_sent:1; 471 unsigned expect_tested:1; 470 472 unsigned done:1; 471 473 unsigned utf8:1; -
server/src/http/ngx_http_upstream.c
r648814 r60af37 138 138 139 139 { 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), 141 142 ngx_http_upstream_rewrite_location, 0, 0 }, 142 143
Note: See TracChangeset
for help on using the changeset viewer.
