MINOR: http: Add 404 to http-request deny

This patch adds http status code 404 Not Found to http-request deny. See
issue #80.

(cherry picked from commit 9205fea13a5e1711a54e6eca68b94128d47c391a)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit da56520e899a5a58e6b9c273317e179244b010f4)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/doc/configuration.txt b/doc/configuration.txt
index 530236d..b5e37f7 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -365,6 +365,7 @@
    401  when an authentication is required to perform the action (when
         accessing the stats page)
    403  when a request is forbidden by a "block" ACL or "reqdeny" filter
+   404  when the requested resource could not be found
    408  when the request timeout strikes before the request is complete
    410  when the requested resource is no longer available and will not
         be available again
@@ -3668,8 +3669,8 @@
                                  yes   |    yes   |   yes  |   yes
   Arguments :
     <code>    is the HTTP status code. Currently, HAProxy is capable of
-              generating codes 200, 400, 403, 405, 408, 410, 425, 429, 500, 502,
-              503, and 504.
+              generating codes 200, 400, 403, 404, 405, 408, 410, 425, 429, 500,
+              502, 503, and 504.
 
     <file>    designates a file containing the full HTTP response. It is
               recommended to follow the common practice of appending ".http" to
@@ -3717,8 +3718,8 @@
                                  yes   |    yes   |   yes  |   yes
   Arguments :
     <code>    is the HTTP status code. Currently, HAProxy is capable of
-              generating codes 200, 400, 403, 405, 408, 410, 425, 429, 500, 502,
-              503, and 504.
+              generating codes 200, 400, 403, 404, 405, 408, 410, 425, 429, 500,
+              502, 503, and 504.
 
     <url>     it is the exact contents of the "Location" header. It may contain
               either a relative URI to an error page hosted on the same site,
@@ -3749,8 +3750,8 @@
                                  yes   |    yes   |   yes  |   yes
   Arguments :
     <code>    is the HTTP status code. Currently, HAProxy is capable of
-              generating codes 200, 400, 403, 405, 408, 410, 425, 429, 500, 502,
-              503, and 504.
+              generating codes 200, 400, 403, 404, 405, 408, 410, 425, 429, 500,
+              502, 503, and 504.
 
     <url>     it is the exact contents of the "Location" header. It may contain
               either a relative URI to an error page hosted on the same site,
diff --git a/include/common/http.h b/include/common/http.h
index eb12f25..66114d3 100644
--- a/include/common/http.h
+++ b/include/common/http.h
@@ -83,6 +83,7 @@
 	HTTP_ERR_200 = 0,
 	HTTP_ERR_400,
 	HTTP_ERR_403,
+	HTTP_ERR_404,
 	HTTP_ERR_405,
 	HTTP_ERR_408,
 	HTTP_ERR_410,
diff --git a/src/http.c b/src/http.c
index 0e9977d..bb932e1 100644
--- a/src/http.c
+++ b/src/http.c
@@ -221,6 +221,7 @@
 	[HTTP_ERR_200] = 200,  /* used by "monitor-uri" */
 	[HTTP_ERR_400] = 400,
 	[HTTP_ERR_403] = 403,
+	[HTTP_ERR_404] = 404,
 	[HTTP_ERR_405] = 405,
 	[HTTP_ERR_408] = 408,
 	[HTTP_ERR_410] = 410,
@@ -261,6 +262,15 @@
 	"\r\n"
 	"<html><body><h1>403 Forbidden</h1>\nRequest forbidden by administrative rules.\n</body></html>\n",
 
+	[HTTP_ERR_404] =
+	"HTTP/1.1 404 Not Found\r\n"
+	"Content-length: 83\r\n"
+	"Cache-Control: no-cache\r\n"
+	"Connection: close\r\n"
+	"Content-Type: text/html\r\n"
+	"\r\n"
+	"<html><body><h1>404 Not Found</h1>\nThe resource could not be found.\n</body></html>\n",
+
 	[HTTP_ERR_405] =
 	"HTTP/1.1 405 Method Not Allowed\r\n"
 	"Content-length: 146\r\n"
@@ -392,6 +402,7 @@
 	case 200: return HTTP_ERR_200;
 	case 400: return HTTP_ERR_400;
 	case 403: return HTTP_ERR_403;
+	case 404: return HTTP_ERR_404;
 	case 405: return HTTP_ERR_405;
 	case 408: return HTTP_ERR_408;
 	case 410: return HTTP_ERR_410;