[BUILD] backend.c and checks.c did not build without tproxy !

missing #ifdefs.
diff --git a/doc/configuration.txt b/doc/configuration.txt
index 900b9a7..0e40988 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -3844,24 +3844,6 @@
   inetd for instance. This parameter is ignored if the "check" parameter is not
   set. See also the "addr" parameter.
 
-redir <prefix>
-  The "redir" parameter enables the redirection mode for all GET and HEAD
-  requests addressing this server. This means that instead of having HAProxy
-  forward the request to the server, it will send an "HTTP 302" response with
-  the "Location" header composed of this prefix immediately followed by the
-  requested URI beginning at the leading '/' of the path component. That means
-  that no trailing slash should be used after <prefix>. All invalid requests
-  will be rejected, and all non-GET or HEAD requests will be normally served by
-  the server. Note that since the response is completely forged, no header
-  mangling nor cookie insertion is possible in the respose. However, cookies in
-  requests are still analysed, making this solution completely usable to direct
-  users to a remote location in case of local disaster. Main use consists in
-  increasing bandwidth for static servers by having the clients directly
-  connect to them. Note: never use a relative location here, it would cause a
-  loop between the client and HAProxy!
-
-  Example :  server srv1 192.168.1.1:80 redir http://image1.mydomain.com check
-
 rise <count>
   The "rise" parameter states that a server will be considered as operational
   after <count> consecutive successful health checks. This value defaults to 2
diff --git a/include/types/server.h b/include/types/server.h
index c93236c..cfc4d7d 100644
--- a/include/types/server.h
+++ b/include/types/server.h
@@ -2,7 +2,7 @@
   include/types/server.h
   This file defines everything related to servers.
 
-  Copyright (C) 2000-2008 Willy Tarreau - w@1wt.eu
+  Copyright (C) 2000-2007 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
@@ -73,9 +73,7 @@
 	int state;				/* server state (SRV_*) */
 	int prev_state;				/* server state before last change (SRV_*) */
 	int  cklen;				/* the len of the cookie, to speed up checks */
-	int rdr_len;				/* the length of the redirection prefix */
 	char *cookie;				/* the id set in the cookie */
-	char *rdr_pfx;				/* the redirection prefix */
 
 	struct proxy *proxy;			/* the proxy this server belongs to */
 	int cur_sess, cur_sess_max;		/* number of currently active sessions (including syn_sent) */
diff --git a/include/types/session.h b/include/types/session.h
index 9437198..46569a5 100644
--- a/include/types/session.h
+++ b/include/types/session.h
@@ -50,7 +50,7 @@
 #define SN_FRT_ADDR_SET	0x00000080	/* set if the frontend address has been filled */
 #define SN_REDISP	0x00000100	/* set if this session was redispatched from one server to another */
 #define SN_CONN_TAR	0x00000200	/* set if this session is turning around before reconnecting */
-#define SN_REDIRECTABLE	0x00000400	/* set if this session is redirectable (GET or HEAD) */
+/* unused:              0x00000400 */
 /* unused:              0x00000800 */
 
 /* session termination conditions, bits values 0x1000 to 0x7000 (0-7 shift 12) */
diff --git a/src/backend.c b/src/backend.c
index 20e3a04..a9d42a6 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1059,13 +1059,6 @@
 		return SRV_STATUS_INTERNAL;
 
 	if (s->flags & SN_ASSIGNED) {
-		if ((s->flags & SN_REDIRECTABLE) && s->srv && s->srv->rdr_len) {
-			/* server scheduled for redirection, and already assigned. We
-			 * don't want to go further nor check the queue.
-			 */
-			return SRV_STATUS_OK;
-		}
-
 		if (s->srv && s->srv->maxqueue > 0 && s->srv->nbpend >= s->srv->maxqueue) {
 			s->flags &= ~(SN_DIRECT | SN_ASSIGNED | SN_ADDR_SET);
 			s->srv = NULL;
@@ -1091,13 +1084,6 @@
 	err = assign_server(s);
 	switch (err) {
 	case SRV_STATUS_OK:
-		if ((s->flags & SN_REDIRECTABLE) && s->srv && s->srv->rdr_len) {
-			/* server supporting redirection and it is possible.
-			 * Let's report that and ignore maxconn !
-			 */
-			return SRV_STATUS_OK;
-		}
-
 		/* in balance mode, we might have servers with connection limits */
 		if (s->srv &&
 		    s->srv->maxconn && s->srv->cur_sess >= srv_dynamic_maxconn(s->srv)) {
@@ -1203,6 +1189,7 @@
 		struct sockaddr_in *remote = NULL;
 		int ret, flags = 0;
 
+#if defined(CONFIG_HAP_CTTPROXY) || defined(CONFIG_HAP_LINUX_TPROXY)
 		switch (s->srv->state & SRV_TPROXY_MASK) {
 		case SRV_TPROXY_ADDR:
 			remote = (struct sockaddr_in *)&s->srv->tproxy_addr;
@@ -1217,6 +1204,7 @@
 			remote = (struct sockaddr_in *)&s->cli_addr;
 			break;
 		}
+#endif
 		ret = tcpv4_bind_socket(fd, flags, &s->srv->source_addr, remote);
 		if (ret) {
 			close(fd);
@@ -1240,6 +1228,7 @@
 		struct sockaddr_in *remote = NULL;
 		int ret, flags = 0;
 
+#if defined(CONFIG_HAP_CTTPROXY) || defined(CONFIG_HAP_LINUX_TPROXY)
 		switch (s->be->options & PR_O_TPXY_MASK) {
 		case PR_O_TPXY_ADDR:
 			remote = (struct sockaddr_in *)&s->be->tproxy_addr;
@@ -1254,7 +1243,7 @@
 			remote = (struct sockaddr_in *)&s->cli_addr;
 			break;
 		}
-
+#endif
 		ret = tcpv4_bind_socket(fd, flags, &s->be->source_addr, remote);
 		if (ret) {
 			close(fd);
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 9329df3..1815ed4 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1547,11 +1547,6 @@
 				newsrv->cklen = strlen(args[cur_arg + 1]);
 				cur_arg += 2;
 			}
-			else if (!strcmp(args[cur_arg], "redir")) {
-				newsrv->rdr_pfx = strdup(args[cur_arg + 1]);
-				newsrv->rdr_len = strlen(args[cur_arg + 1]);
-				cur_arg += 2;
-			}
 			else if (!strcmp(args[cur_arg], "rise")) {
 				newsrv->rise = atol(args[cur_arg + 1]);
 				newsrv->health = newsrv->rise;
@@ -1696,7 +1691,7 @@
 				return -1;
 			}
 			else {
-				Alert("parsing [%s:%d] : server %s only supports options 'backup', 'cookie', 'redir', 'check', 'inter', 'fastinter', 'downinter', 'rise', 'fall', 'addr', 'port', 'source', 'minconn', 'maxconn', 'maxqueue', 'slowstart' and 'weight'.\n",
+				Alert("parsing [%s:%d] : server %s only supports options 'backup', 'cookie', 'check', 'inter', 'fastinter', 'downinter', 'rise', 'fall', 'addr', 'port', 'source', 'minconn', 'maxconn', 'maxqueue', 'slowstart' and 'weight'.\n",
 				      file, linenum, newsrv->id);
 				return -1;
 			}
@@ -2910,19 +2905,6 @@
 			curproxy->to_log &= ~LW_BYTES;
 
 		/*
-		 * ensure that we're not cross-dressing a TCP server into HTTP.
-		 */
-		newsrv = curproxy->srv;
-		while (newsrv != NULL) {
-			if ((curproxy->mode != PR_MODE_HTTP) && (newsrv->rdr_len || newsrv->cklen)) {
-				Alert("parsing %s, %s '%s' : server cannot have cookie or redirect prefix in non-HTTP mode.\n",
-				      file, proxy_type_str(curproxy), curproxy->id, linenum);
-				goto err;
-			}
-			newsrv = newsrv->next;
-		}
-
-		/*
 		 * If this server supports a maxconn parameter, it needs a dedicated
 		 * tasks to fill the emptied slots when a connection leaves.
 		 */
diff --git a/src/checks.c b/src/checks.c
index 124f40c..0fbe166 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -422,10 +422,12 @@
 					struct sockaddr_in *remote = NULL;
 					int ret, flags = 0;
 
+#if defined(CONFIG_HAP_CTTPROXY) || defined(CONFIG_HAP_LINUX_TPROXY)
 					if ((s->state & SRV_TPROXY_MASK) == SRV_TPROXY_ADDR) {
 						remote = (struct sockaddr_in *)&s->tproxy_addr;
 						flags  = 3;
 					}
+#endif
 					ret = tcpv4_bind_socket(fd, flags, &s->source_addr, remote);
 					if (ret) {
 						s->result |= SRV_CHK_ERROR;
@@ -445,10 +447,12 @@
 					struct sockaddr_in *remote = NULL;
 					int ret, flags = 0;
 
+#if defined(CONFIG_HAP_CTTPROXY) || defined(CONFIG_HAP_LINUX_TPROXY)
 					if ((s->proxy->options & PR_O_TPXY_MASK) == PR_O_TPXY_ADDR) {
 						remote = (struct sockaddr_in *)&s->proxy->tproxy_addr;
 						flags  = 3;
 					}
+#endif
 					ret = tcpv4_bind_socket(fd, flags, &s->proxy->source_addr, remote);
 					if (ret) {
 						s->result |= SRV_CHK_ERROR;
diff --git a/src/proto_http.c b/src/proto_http.c
index 429f571..16b2f07 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -592,54 +592,6 @@
 
 }
 
-/* Parse the URI from the given transaction (which is assumed to be in request
- * phase) and look for the "/" beginning the PATH. If not found, return NULL.
- * It is returned otherwise.
- */
-static char *
-http_get_path(struct http_txn *txn)
-{
-	char *ptr, *end;
-
-	ptr = txn->req.sol + txn->req.sl.rq.u;
-	end = ptr + txn->req.sl.rq.u_l;
-
-	if (ptr >= end)
-		return NULL;
-
-	/* RFC2616, par. 5.1.2 :
-	 * Request-URI = "*" | absuri | abspath | authority
-	 */
-
-	if (*ptr == '*')
-		return NULL;
-
-	if (isalpha((unsigned char)*ptr)) {
-		/* this is a scheme as described by RFC3986, par. 3.1 */
-		ptr++;
-		while (ptr < end &&
-		       (isalnum((unsigned char)*ptr) || *ptr == '+' || *ptr == '-' || *ptr == '.'))
-			ptr++;
-		/* skip '://' */
-		if (ptr == end || *ptr++ != ':')
-			return NULL;
-		if (ptr == end || *ptr++ != '/')
-			return NULL;
-		if (ptr == end || *ptr++ != '/')
-			return NULL;
-	}
-	/* skip [user[:passwd]@]host[:[port]] */
-
-	while (ptr < end && *ptr != '/')
-		ptr++;
-
-	if (ptr == end)
-		return NULL;
-
-	/* OK, we got the '/' ! */
-	return ptr;
-}
-
 /* Processes the client and server jobs of a session task, then
  * puts it back to the wait queue in a clean state, or
  * cleans up its resources if it must be deleted. Returns
@@ -2499,59 +2451,9 @@
 
 			do {
 				/* first, get a connection */
-				if (txn->meth == HTTP_METH_GET || txn->meth == HTTP_METH_HEAD)
-					t->flags |= SN_REDIRECTABLE;
-
 				if (srv_redispatch_connect(t))
 					return t->srv_state != SV_STIDLE;
 
-				if ((t->flags & SN_REDIRECTABLE) && t->srv && t->srv->rdr_len) {
-					/* Server supporting redirection and it is possible.
-					 * Invalid requests are reported as such. It concerns all
-					 * the largest ones.
-					 */
-					struct chunk rdr;
-					char *path;
-					int len;
-
-					/* 1: create the response header */
-					rdr.len = strlen(HTTP_302);
-					rdr.str = trash;
-					memcpy(rdr.str, HTTP_302, rdr.len);
-
-					/* 2: add the server's prefix */
-					if (rdr.len + t->srv->rdr_len > sizeof(trash))
-						goto cancel_redir;
-
-					memcpy(rdr.str + rdr.len, t->srv->rdr_pfx, t->srv->rdr_len);
-					rdr.len += t->srv->rdr_len;
-
-					/* 3: add the request URI */
-					path = http_get_path(txn);
-					if (!path)
-						goto cancel_redir;
-					len = txn->req.sl.rq.u_l + (txn->req.sol+txn->req.sl.rq.u) - path;
-					if (rdr.len + len > sizeof(trash) - 4) /* 4 for CRLF-CRLF */
-						goto cancel_redir;
-
-					memcpy(rdr.str + rdr.len, path, len);
-					rdr.len += len;
-					memcpy(rdr.str + rdr.len, "\r\n\r\n", 4);
-					rdr.len += 4;
-
-					srv_close_with_err(t, SN_ERR_PRXCOND, SN_FINST_C, 302, &rdr);
-					/* FIXME: we should increase a counter of redirects per server and per backend. */
-					if (t->srv)
-						t->srv->cum_sess++;
-					return 1;
-				cancel_redir:
-					txn->status = 400;
-					t->fe->failed_req++;
-					srv_close_with_err(t, SN_ERR_PRXCOND, SN_FINST_C,
-							   400, error_message(t, HTTP_ERR_400));
-					return 1;
-				}
-
 				/* try to (re-)connect to the server, and fail if we expire the
 				 * number of retries.
 				 */
@@ -5324,9 +5226,39 @@
 		/* ensure the indexes are not affected */
 		return 0;
 
+	ptr = txn->req.sol + txn->req.sl.rq.u;
+	end = ptr + txn->req.sl.rq.u_l;
+
+	if (ptr >= end)
+		return 0;
+
+	/* RFC2616, par. 5.1.2 :
+	 * Request-URI = "*" | absuri | abspath | authority
+	 */
+
+	if (*ptr == '*')
+		return 0;
+
-	end = txn->req.sol + txn->req.sl.rq.u + txn->req.sl.rq.u_l;
-	ptr = http_get_path(txn);
-	if (!ptr)
+	if (isalpha((unsigned char)*ptr)) {
+		/* this is a scheme as described by RFC3986, par. 3.1 */
+		ptr++;
+		while (ptr < end &&
+		       (isalnum((unsigned char)*ptr) || *ptr == '+' || *ptr == '-' || *ptr == '.'))
+			ptr++;
+		/* skip '://' */
+		if (ptr == end || *ptr++ != ':')
+			return 0;
+		if (ptr == end || *ptr++ != '/')
+			return 0;
+		if (ptr == end || *ptr++ != '/')
+			return 0;
+	}
+	/* skip [user[:passwd]@]host[:[port]] */
+
+	while (ptr < end && *ptr != '/')
+		ptr++;
+
+	if (ptr == end)
 		return 0;
 
 	/* OK, we got the '/' ! */
diff --git a/tests/test-redir.cfg b/tests/test-redir.cfg
deleted file mode 100644
index 4aebafd..0000000
--- a/tests/test-redir.cfg
+++ /dev/null
@@ -1,35 +0,0 @@
-# This is a test configuration.
-# It makes use of a farm built from 4 servers, 3 of which are remote and
-# referenced only via an HTTP redirect (302), and the 4th one is normal.
-# HTTP requests different from GET/HEAD should reach the servers directly
-# while GET/HEAD should get redirected for the 3 first ones.
-
-global
-	#log /dev/log local0
-	maxconn    1000
-        stats socket /tmp/sock1 mode 600
-        stats timeout 3000
-        stats maxconn 2000
-
-listen  sample1
-	#log global
-	#option httplog
-        mode       http
-        retries    1
-        option redispatch
-        contimeout 1000
-        clitimeout 5000
-        srvtimeout 5000
-        maxconn    40000
-        bind       :8080
-        #balance    source
-        balance    roundrobin
-	option     allbackups
-        server     rdr1 127.0.0.1:80 redir http://static1:80 weight 10 check inter 1000 fall 4
-        server     rdr2 127.0.0.2:80 redir http://static2:80 weight 20 check inter 1000 fall 4
-        server     rdr3 127.0.0.3:80 redir http://static3:80 weight 30 check inter 1000 fall 4
-        server     dir4 127.0.0.4:80 redir weight 30 check inter 1000 fall 4
-        option     httpclose
-	stats      uri /stats
-	stats      refresh 5
-