diff --git a/server/core.c b/server/core.c index c36ff26..621c82a 100644 --- a/server/core.c +++ b/server/core.c @@ -3569,6 +3569,7 @@ enum server_token_type { SrvTk_MINIMAL, /* eg: Apache/2.0.41 */ SrvTk_OS, /* eg: Apache/2.0.41 (UNIX) */ SrvTk_FULL, /* eg: Apache/2.0.41 (UNIX) PHP/4.2.2 FooBar/1.2b */ + SrvTk_FULL_RELEASE, /* eg: Apache/2.0.41 (UNIX) (Release 32.el7) PHP/4.2.2 FooBar/1.2b */ SrvTk_PRODUCT_ONLY /* eg: Apache */ }; static enum server_token_type ap_server_tokens = SrvTk_FULL; @@ -3645,7 +3646,10 @@ static void set_banner(apr_pool_t *pconf) else if (ap_server_tokens == SrvTk_MAJOR) { ap_add_version_component(pconf, AP_SERVER_BASEPRODUCT "/" AP_SERVER_MAJORVERSION); } - else { + else if (ap_server_tokens == SrvTk_FULL_RELEASE) { + ap_add_version_component(pconf, AP_SERVER_BASEVERSION " (" PLATFORM ") (Release @RELEASE@)"); + } + else { ap_add_version_component(pconf, AP_SERVER_BASEVERSION " (" PLATFORM ")"); } @@ -3653,7 +3657,7 @@ static void set_banner(apr_pool_t *pconf) * Lock the server_banner string if we're not displaying * the full set of tokens */ - if (ap_server_tokens != SrvTk_FULL) { + if (ap_server_tokens != SrvTk_FULL && ap_server_tokens != SrvTk_FULL_RELEASE) { banner_locked++; } server_description = AP_SERVER_BASEVERSION " (" PLATFORM ")"; @@ -3686,8 +3690,11 @@ static const char *set_serv_tokens(cmd_parms *cmd, void *dummy, else if (!ap_cstr_casecmp(arg, "Full")) { ap_server_tokens = SrvTk_FULL; } + else if (!strcasecmp(arg, "Full-Release")) { + ap_server_tokens = SrvTk_FULL_RELEASE; + } else { - return "ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'"; + return "ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', 'Full' or 'Full-Release'"; } return NULL;