[BUG] use backend's source and not server's source with tproxy

copy-paste typo.
This commit is contained in:
Willy Tarreau 2008-01-13 18:10:06 +01:00
parent 0a45989de3
commit 786d1915b0

View File

@ -1274,23 +1274,20 @@ int connect_server(struct session *s)
struct sockaddr_in *remote = NULL; struct sockaddr_in *remote = NULL;
int ret, flags = 0; int ret, flags = 0;
if (s->srv->state & SRV_TPROXY_MASK) { switch (s->srv->state & SRV_TPROXY_MASK) {
switch (s->srv->state & SRV_TPROXY_MASK) { case SRV_TPROXY_ADDR:
case SRV_TPROXY_ADDR: remote = (struct sockaddr_in *)&s->srv->tproxy_addr;
remote = (struct sockaddr_in *)&s->srv->tproxy_addr; flags = 3;
flags = 3; break;
break; case SRV_TPROXY_CLI:
case SRV_TPROXY_CLI: flags |= 2;
flags |= 2; /* fall through */
/* fall through */ case SRV_TPROXY_CIP:
case SRV_TPROXY_CIP: /* FIXME: what can we do if the client connects in IPv6 ? */
/* FIXME: what can we do if the client connects in IPv6 ? */ flags |= 1;
flags |= 1; remote = (struct sockaddr_in *)&s->cli_addr;
remote = (struct sockaddr_in *)&s->cli_addr; break;
break;
}
} }
ret = bind_ipv4(fd, flags, &s->srv->source_addr, remote); ret = bind_ipv4(fd, flags, &s->srv->source_addr, remote);
if (ret) { if (ret) {
close(fd); close(fd);
@ -1314,24 +1311,22 @@ int connect_server(struct session *s)
struct sockaddr_in *remote = NULL; struct sockaddr_in *remote = NULL;
int ret, flags = 0; int ret, flags = 0;
if (s->be->options & PR_O_TPXY_MASK) { switch (s->be->options & PR_O_TPXY_MASK) {
switch (s->be->options & PR_O_TPXY_MASK) { case PR_O_TPXY_ADDR:
case PR_O_TPXY_ADDR: remote = (struct sockaddr_in *)&s->be->tproxy_addr;
remote = (struct sockaddr_in *)&s->be->tproxy_addr; flags = 3;
flags = 3; break;
break; case PR_O_TPXY_CLI:
case PR_O_TPXY_CLI: flags |= 2;
flags |= 2; /* fall through */
/* fall through */ case PR_O_TPXY_CIP:
case PR_O_TPXY_CIP: /* FIXME: what can we do if the client connects in IPv6 ? */
/* FIXME: what can we do if the client connects in IPv6 ? */ flags |= 1;
flags |= 1; remote = (struct sockaddr_in *)&s->cli_addr;
remote = (struct sockaddr_in *)&s->cli_addr; break;
break;
}
} }
ret = bind_ipv4(fd, flags, &s->srv->source_addr, remote); ret = bind_ipv4(fd, flags, &s->be->source_addr, remote);
if (ret) { if (ret) {
close(fd); close(fd);
if (ret == 1) { if (ret == 1) {