[MEDIUM] server: add support for the "send-proxy" option

This option enables use of the PROXY protocol with the server, which
allows haproxy to transport original client's address across multiple
architecture layers.
diff --git a/src/backend.c b/src/backend.c
index 93a8fc8..397216d 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -971,6 +971,14 @@
 	s->req->cons->connect = tcp_connect_server;
 	copy_target(&s->req->cons->target, &s->target);
 
+	/* process the case where the server requires the PROXY protocol to be sent */
+	s->req->cons->send_proxy_ofs = 0;
+	if (s->target.type == TARG_TYPE_SERVER && (s->target.ptr.s->state & SRV_SEND_PROXY)) {
+		s->req->cons->send_proxy_ofs = 1; /* must compute size */
+		if (!(s->flags & SN_FRT_ADDR_SET))
+			get_frt_addr(s);
+	}
+
 	assign_tproxy_address(s);
 
 	err = s->req->cons->connect(s->req->cons);
diff --git a/src/cfgparse.c b/src/cfgparse.c
index b5e077a..9cc23d1 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -4167,6 +4167,10 @@
 				newsrv->state |= SRV_BACKUP;
 				cur_arg ++;
 			}
+			else if (!defsrv && !strcmp(args[cur_arg], "send-proxy")) {
+				newsrv->state |= SRV_SEND_PROXY;
+				cur_arg ++;
+			}
 			else if (!strcmp(args[cur_arg], "weight")) {
 				int w;
 				w = atol(args[cur_arg + 1]);
@@ -4454,7 +4458,7 @@
 			}
 			else {
 				if (!defsrv)
-					Alert("parsing [%s:%d] : server %s only supports options 'backup', 'cookie', 'redir', 'observer', 'on-error', 'error-limit', 'check', 'disabled', 'track', 'id', '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', 'redir', 'observer', 'on-error', 'error-limit', 'check', 'disabled', 'track', 'id', 'inter', 'fastinter', 'downinter', 'rise', 'fall', 'addr', 'port', 'source', 'send-proxy', 'minconn', 'maxconn', 'maxqueue', 'slowstart' and 'weight'.\n",
 					      file, linenum, newsrv->id);
 				else
 					Alert("parsing [%s:%d]: default-server only supports options 'on-error', 'error-limit', 'inter', 'fastinter', 'downinter', 'rise', 'fall', 'port', 'minconn', 'maxconn', 'maxqueue', 'slowstart' and 'weight'.\n",