From: Olivier Houchard Date: Tue, 4 Apr 2017 20:10:36 +0000 (+0200) Subject: MINOR server: Restrict dynamic cookie check to the same proxy. X-Git-Tag: v1.8-dev2~96 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b4a2d5e19a06225fd5b07632354314bc8d35a2d6;p=thirdparty%2Fhaproxy.git MINOR server: Restrict dynamic cookie check to the same proxy. Each time we generate a dynamic cookie, we try to make sure the same cookie hasn't been generated for another server, it's very unlikely, but it may happen. We only have to check that for the servers in the same proxy, no, need to check in others, plus the code was buggy and would always check in the first proxy of the proxy list. --- diff --git a/src/server.c b/src/server.c index 23343d86f6..6070de93ca 100644 --- a/src/server.c +++ b/src/server.c @@ -135,18 +135,17 @@ void srv_set_dyncookie(struct server *s) * Check that we did not get a hash collision. * Unlikely, but it can happen. */ - for (p = proxy; p != NULL; p = p->next) - for (tmpserv = proxy->srv; tmpserv != NULL; - tmpserv = tmpserv->next) { - if (tmpserv == s) - continue; - if (tmpserv->cookie && - strcmp(tmpserv->cookie, s->cookie) == 0) { - Warning("We generated two equal cookies for two different servers.\n" - "Please change the secret key for '%s'.\n", - s->proxy->id); - } + for (tmpserv = p->srv; tmpserv != NULL; + tmpserv = tmpserv->next) { + if (tmpserv == s) + continue; + if (tmpserv->cookie && + strcmp(tmpserv->cookie, s->cookie) == 0) { + Warning("We generated two equal cookies for two different servers.\n" + "Please change the secret key for '%s'.\n", + s->proxy->id); } + } } /*