diff --git a/include/proto/httperr.h b/include/proto/httperr.h
deleted file mode 100644
index 749e427..0000000
--- a/include/proto/httperr.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  include/proto/httperr.h
-  This file contains declarations for HTTP responses and errors.
-
-  Copyright (C) 2000-2006 Willy Tarreau - w@1wt.eu
-  
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation, version 2.1
-  exclusively.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#ifndef _PROTO_HTTPERR_H
-#define _PROTO_HTTPERR_H
-
-#include <types/httperr.h>
-
-extern const int http_err_codes[HTTP_ERR_SIZE];
-extern struct chunk http_err_chunks[HTTP_ERR_SIZE];
-extern const char *HTTP_200;
-extern const char *HTTP_302;
-extern const char *HTTP_303;
-extern const char *HTTP_401_fmt;
-
-struct chunk *error_message(struct session *s, int msgnum);
-
-#endif /* _PROTO_HTTPERR_H */
-
-/*
- * Local variables:
- *  c-indent-level: 8
- *  c-basic-offset: 8
- * End:
- */
diff --git a/include/proto/proto_http.h b/include/proto/proto_http.h
index 73ec35f..4cb4f0b 100644
--- a/include/proto/proto_http.h
+++ b/include/proto/proto_http.h
@@ -49,6 +49,11 @@
 extern const char http_is_token[256];
 extern const char http_is_ver_token[256];
 
+extern const int http_err_codes[HTTP_ERR_SIZE];
+extern struct chunk http_err_chunks[HTTP_ERR_SIZE];
+extern const char *HTTP_302;
+extern const char *HTTP_303;
+
 #define HTTP_IS_CTL(x)   (http_is_ctl[(unsigned char)(x)])
 #define HTTP_IS_SEP(x)   (http_is_sep[(unsigned char)(x)])
 #define HTTP_IS_LWS(x)   (http_is_lws[(unsigned char)(x)])
@@ -101,6 +106,7 @@
 
 struct http_req_rule *parse_http_req_cond(const char **args, const char *file, int linenum, struct proxy *proxy);
 void free_http_req_rules(struct list *r);
+struct chunk *error_message(struct session *s, int msgnum);
 
 /* to be used when contents change in an HTTP message */
 #define http_msg_move_end(msg, bytes) do { \
diff --git a/include/types/httperr.h b/include/types/httperr.h
deleted file mode 100644
index 48c013a..0000000
--- a/include/types/httperr.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-  include/types/httperr.h
-  This file defines everything related to HTTP responses and errors.
-
-  Copyright (C) 2000-2006 Willy Tarreau - w@1wt.eu
-  
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation, version 2.1
-  exclusively.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#ifndef _TYPES_HTTPERR_H
-#define _TYPES_HTTPERR_H
-
-#include <common/config.h>
-
-/*
- * All implemented return codes
- */
-enum {
-	HTTP_ERR_400 = 0,
-	HTTP_ERR_403,
-	HTTP_ERR_408,
-	HTTP_ERR_500,
-	HTTP_ERR_502,
-	HTTP_ERR_503,
-	HTTP_ERR_504,
-	HTTP_ERR_SIZE
-};
-
-
-#endif /* _TYPES_HTTPERR_H */
-
-/*
- * Local variables:
- *  c-indent-level: 8
- *  c-basic-offset: 8
- * End:
- */
diff --git a/include/types/proto_http.h b/include/types/proto_http.h
index 3ccb2bd..8dd1d52 100644
--- a/include/types/proto_http.h
+++ b/include/types/proto_http.h
@@ -236,6 +236,20 @@
 	HTTP_REQ_ACT_MAX
 };
 
+/*
+ * All implemented return codes
+ */
+enum {
+	HTTP_ERR_400 = 0,
+	HTTP_ERR_403,
+	HTTP_ERR_408,
+	HTTP_ERR_500,
+	HTTP_ERR_502,
+	HTTP_ERR_503,
+	HTTP_ERR_504,
+	HTTP_ERR_SIZE
+};
+
 /* This is an HTTP message, as described in RFC2616. It can be either a request
  * message or a response message.
  *
diff --git a/include/types/proxy.h b/include/types/proxy.h
index 214cdf5..e9532ed 100644
--- a/include/types/proxy.h
+++ b/include/types/proxy.h
@@ -41,9 +41,9 @@
 #include <types/buffers.h>
 #include <types/counters.h>
 #include <types/freq_ctr.h>
-#include <types/httperr.h>
 #include <types/log.h>
 #include <types/protocols.h>
+#include <types/proto_http.h>
 #include <types/session.h>
 #include <types/server.h>
 #include <types/stick_table.h>
