comparison src/http/ngx_http_header_filter_module.c @ 6885:25203fc377fb

Implemented the "server_tokens build" option. Based on a patch by Tom Thorogood.
author Ruslan Ermilov <ru@nginx.com>
date Tue, 31 Jan 2017 12:09:40 +0300
parents d15172ebb400
children 3ef4cadfad7f
comparison
equal deleted inserted replaced
6884:640f03529395 6885:25203fc377fb
44 NULL, /* exit master */ 44 NULL, /* exit master */
45 NGX_MODULE_V1_PADDING 45 NGX_MODULE_V1_PADDING
46 }; 46 };
47 47
48 48
49 static char ngx_http_server_string[] = "Server: nginx" CRLF; 49 static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
50 static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; 50 static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
51 static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
51 52
52 53
53 static ngx_str_t ngx_http_status_lines[] = { 54 static ngx_str_t ngx_http_status_lines[] = {
54 55
55 ngx_string("200 OK"), 56 ngx_string("200 OK"),
272 } 273 }
273 274
274 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); 275 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
275 276
276 if (r->headers_out.server == NULL) { 277 if (r->headers_out.server == NULL) {
277 len += clcf->server_tokens ? sizeof(ngx_http_server_full_string) - 1: 278 if (clcf->server_tokens == NGX_HTTP_SERVER_TOKENS_ON) {
278 sizeof(ngx_http_server_string) - 1; 279 len += sizeof(ngx_http_server_full_string) - 1;
280
281 } else if (clcf->server_tokens == NGX_HTTP_SERVER_TOKENS_BUILD) {
282 len += sizeof(ngx_http_server_build_string) - 1;
283
284 } else {
285 len += sizeof(ngx_http_server_string) - 1;
286 }
279 } 287 }
280 288
281 if (r->headers_out.date == NULL) { 289 if (r->headers_out.date == NULL) {
282 len += sizeof("Date: Mon, 28 Sep 1970 06:00:00 GMT" CRLF) - 1; 290 len += sizeof("Date: Mon, 28 Sep 1970 06:00:00 GMT" CRLF) - 1;
283 } 291 }
434 b->last = ngx_sprintf(b->last, "%03ui ", status); 442 b->last = ngx_sprintf(b->last, "%03ui ", status);
435 } 443 }
436 *b->last++ = CR; *b->last++ = LF; 444 *b->last++ = CR; *b->last++ = LF;
437 445
438 if (r->headers_out.server == NULL) { 446 if (r->headers_out.server == NULL) {
439 if (clcf->server_tokens) { 447 if (clcf->server_tokens == NGX_HTTP_SERVER_TOKENS_ON) {
440 p = (u_char *) ngx_http_server_full_string; 448 p = ngx_http_server_full_string;
441 len = sizeof(ngx_http_server_full_string) - 1; 449 len = sizeof(ngx_http_server_full_string) - 1;
442 450
451 } else if (clcf->server_tokens == NGX_HTTP_SERVER_TOKENS_BUILD) {
452 p = ngx_http_server_build_string;
453 len = sizeof(ngx_http_server_build_string) - 1;
454
443 } else { 455 } else {
444 p = (u_char *) ngx_http_server_string; 456 p = ngx_http_server_string;
445 len = sizeof(ngx_http_server_string) - 1; 457 len = sizeof(ngx_http_server_string) - 1;
446 } 458 }
447 459
448 b->last = ngx_cpymem(b->last, p, len); 460 b->last = ngx_cpymem(b->last, p, len);
449 } 461 }