diff --git a/src/backend.c b/src/backend.c index c0283d20a..1601c408c 100644 --- a/src/backend.c +++ b/src/backend.c @@ -186,7 +186,10 @@ int assign_server(struct session *s) else /* unknown balancing algorithm */ return SRV_STATUS_INTERNAL; } - s->flags |= SN_ASSIGNED; + else if (*(int *)&s->be->beprm->dispatch_addr.sin_addr || s->fe->options & PR_O_TRANSP) + s->flags |= SN_ASSIGNED; + else + return SRV_STATUS_NOSRV; } return SRV_STATUS_OK; } @@ -243,6 +246,10 @@ int assign_server_address(struct session *s) return SRV_STATUS_INTERNAL; } } + else { + /* no server and no LB algorithm ! */ + return SRV_STATUS_INTERNAL; + } s->flags |= SN_ADDR_SET; return SRV_STATUS_OK;