Author: Pekka Helenius (~Fincer), 2018

Patch: Implements 'ServerTokens None' to Apache2/httpd Hypertext Transfer Protocol Server
Makes it possible to remove 'Server:' tag from HTTP header

--- a/server/core.c
+++ b/server/core.c
@@ -3373,7 +3373,8 @@
     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_PRODUCT_ONLY   /* eg: Apache */
+    SrvTk_PRODUCT_ONLY,  /* eg: Apache */
+    SrvTk_NONE           /* Returns nothing */
 };
 static enum server_token_type ap_server_tokens = SrvTk_FULL;
 
@@ -3440,6 +3441,9 @@
     if (ap_server_tokens == SrvTk_PRODUCT_ONLY) {
         ap_add_version_component(pconf, AP_SERVER_BASEPRODUCT);
     }
+    else if (ap_server_tokens == SrvTk_NONE) {
+        ap_add_version_component(pconf, "");
+    }
     else if (ap_server_tokens == SrvTk_MINIMAL) {
         ap_add_version_component(pconf, AP_SERVER_BASEVERSION);
     }
@@ -3487,11 +3491,14 @@
     else if (!strcasecmp(arg, "Prod") || !strcasecmp(arg, "ProductOnly")) {
         ap_server_tokens = SrvTk_PRODUCT_ONLY;
     }
+    else if (!strcasecmp(arg, "None")) {
+        ap_server_tokens = SrvTk_NONE;
+    }
     else if (!strcasecmp(arg, "Full")) {
         ap_server_tokens = SrvTk_FULL;
     }
     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 'None'";
     }
 
     return NULL;
@@ -4369,7 +4376,7 @@
   "A numeric IP address:port, or the name of a host"),
 AP_INIT_TAKE1("ServerTokens", set_serv_tokens, NULL, RSRC_CONF,
   "Determine tokens displayed in the Server: header - Min(imal), "
-  "Major, Minor, Prod(uctOnly), OS, or Full"),
+  "Major, Minor, Prod(uctOnly), OS, Full or None"),
 AP_INIT_TAKE1("LimitRequestLine", set_limit_req_line, NULL, RSRC_CONF,
   "Limit on maximum size of an HTTP request line"),
 AP_INIT_TAKE1("LimitRequestFieldsize", set_limit_req_fieldsize, NULL,
