Use UDPMAP request address to limit client, not server

This commit is contained in:
Vladimir Dubrovin 2026-05-07 16:07:59 +03:00
parent ff7f4b8ea6
commit 7a139e59a5

View file

@ -111,6 +111,11 @@ int udpsockmap(struct clientparam *param, int timeo)
memcmp(SAADDR(&sin), SAADDR(&param->sincr), SAADDRLEN(&sin)))
continue;
if (firstpacket) {
if (!SAISNULL(&param->req) && *SAPORT(&param->req) &&
SAADDRLEN(&param->req) == SAADDRLEN(&sin) &&
!memcmp(SAADDR(&param->req), SAADDR(&sin), SAADDRLEN(&param->req)) &&
memcmp(SAPORT(&param->req), SAPORT(&sin), 2))
continue;
param->sincr = sin;
firstpacket = 0;
} else if (memcmp(SAPORT(&sin), SAPORT(&param->sincr), 2)) {
@ -184,13 +189,6 @@ int udpsockmap(struct clientparam *param, int timeo)
memcmp(SAPORT(&from), SAPORT(&param->sinsr), 2))
continue;
}
} else {
if (!SAISNULL(&param->req) && *SAPORT(&param->req)) {
if (SAADDRLEN(&from) != SAADDRLEN(&param->req) ||
memcmp(SAADDR(&from), SAADDR(&param->req), SAADDRLEN(&from)) ||
memcmp(SAPORT(&from), SAPORT(&param->req), 2))
continue;
}
}
param->statssrv64 += len;
param->nreads++;