comparison src/http/v2/ngx_http_v2_filter_module.c @ 6451:155871d773cc

Backed out server_tokens changes. Backed out changesets: cf3e75cfa951, 6b72414dfb4f, 602dc42035fe, e5076b96fd01.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 22 Mar 2016 16:58:38 +0300
parents e5076b96fd01
children b3b7e33083ac 9d61ecbe979e
comparison
equal deleted inserted replaced
6450:22c32937a41f 6451:155871d773cc
126 static ngx_int_t 126 static ngx_int_t
127 ngx_http_v2_header_filter(ngx_http_request_t *r) 127 ngx_http_v2_header_filter(ngx_http_request_t *r)
128 { 128 {
129 u_char status, *pos, *start, *p, *tmp; 129 u_char status, *pos, *start, *p, *tmp;
130 size_t len, tmp_len; 130 size_t len, tmp_len;
131 ngx_str_t host, location, tokens; 131 ngx_str_t host, location;
132 ngx_uint_t i, port, server_tokens; 132 ngx_uint_t i, port;
133 ngx_list_part_t *part; 133 ngx_list_part_t *part;
134 ngx_table_elt_t *header; 134 ngx_table_elt_t *header;
135 ngx_connection_t *fc; 135 ngx_connection_t *fc;
136 ngx_http_cleanup_t *cln; 136 ngx_http_cleanup_t *cln;
137 ngx_http_v2_out_frame_t *frame; 137 ngx_http_v2_out_frame_t *frame;
227 227
228 len = status ? 1 : 1 + ngx_http_v2_literal_size("418"); 228 len = status ? 1 : 1 + ngx_http_v2_literal_size("418");
229 229
230 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); 230 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
231 231
232 server_tokens = clcf->server_tokens;
233
234 #if (NGX_SUPPRESS_WARN)
235 ngx_str_null(&tokens);
236 #endif
237
238 if (r->headers_out.server == NULL) { 232 if (r->headers_out.server == NULL) {
239 233 len += 1 + (clcf->server_tokens ? nginx_ver_len : sizeof(nginx));
240 if (server_tokens == 0) {
241 len += 1 + sizeof(nginx);
242 ngx_str_set(&tokens, "nginx");
243
244 } else if (server_tokens == 1) {
245 len += 1 + nginx_ver_len;
246 ngx_str_set(&tokens, NGINX_VER);
247
248 } else {
249 if (ngx_http_complex_value(r, &clcf->server_tokens_value, &tokens)
250 != NGX_OK)
251 {
252 return NGX_ERROR;
253 }
254
255 if (tokens.len == 0
256 || (tokens.len == 3 && ngx_strncmp(tokens.data, "off", 3) == 0))
257 {
258 server_tokens = 0;
259 len += 1 + sizeof(nginx);
260 ngx_str_set(&tokens, "nginx");
261
262 } else {
263 server_tokens = 1;
264 len += 1 + nginx_ver_len;
265 ngx_str_set(&tokens, NGINX_VER);
266 }
267 }
268 } 234 }
269 235
270 if (r->headers_out.date == NULL) { 236 if (r->headers_out.date == NULL) {
271 len += 1 + ngx_http_v2_literal_size("Wed, 31 Dec 1986 18:00:00 GMT"); 237 len += 1 + ngx_http_v2_literal_size("Wed, 31 Dec 1986 18:00:00 GMT");
272 } 238 }
468 pos = ngx_sprintf(pos, "%03ui", r->headers_out.status); 434 pos = ngx_sprintf(pos, "%03ui", r->headers_out.status);
469 } 435 }
470 436
471 if (r->headers_out.server == NULL) { 437 if (r->headers_out.server == NULL) {
472 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, 438 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0,
473 "http2 output header: \"server: %V\"", 439 "http2 output header: \"server: %s\"",
474 &tokens); 440 clcf->server_tokens ? NGINX_VER : "nginx");
475 441
476 *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_SERVER_INDEX); 442 *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_SERVER_INDEX);
477 443
478 if (server_tokens == 0) { 444 if (clcf->server_tokens) {
479 pos = ngx_cpymem(pos, nginx, sizeof(nginx));
480
481 } else {
482 if (nginx_ver[0] == '\0') { 445 if (nginx_ver[0] == '\0') {
483 p = ngx_http_v2_write_value(nginx_ver, (u_char *) NGINX_VER, 446 p = ngx_http_v2_write_value(nginx_ver, (u_char *) NGINX_VER,
484 sizeof(NGINX_VER) - 1, tmp); 447 sizeof(NGINX_VER) - 1, tmp);
485 nginx_ver_len = p - nginx_ver; 448 nginx_ver_len = p - nginx_ver;
486 } 449 }
487 450
488 pos = ngx_cpymem(pos, nginx_ver, nginx_ver_len); 451 pos = ngx_cpymem(pos, nginx_ver, nginx_ver_len);
452
453 } else {
454 pos = ngx_cpymem(pos, nginx, sizeof(nginx));
489 } 455 }
490 } 456 }
491 457
492 if (r->headers_out.date == NULL) { 458 if (r->headers_out.date == NULL) {
493 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, 459 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0,