From: Alan T. DeKok Date: Mon, 3 Nov 2014 13:47:47 +0000 (-0500) Subject: Better checks for duplicates. X-Git-Tag: branch_3_1_x~4793 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aa7f24d05730a16614ebc47801ee97ded023d845;p=thirdparty%2Ffreeradius-server.git Better checks for duplicates. If the old packet is in RESPONSE_DELAY or CLEANUP_DELAY, we can delete the old packet. This is really only for DHCP. --- diff --git a/src/main/process.c b/src/main/process.c index 8788e2d4cb8..a9176467d82 100644 --- a/src/main/process.c +++ b/src/main/process.c @@ -1483,6 +1483,9 @@ STATE_MACHINE_DECL(request_finish) pairfree(&request->reply->vps); RDEBUG2("Finished request"); + request->component = ""; + request->module = ""; + #ifdef WITH_ACCOUNTING if (request->packet->code == PW_CODE_ACCOUNTING_REQUEST) { NO_CHILD_THREAD; @@ -1656,9 +1659,12 @@ int request_receive(rad_listen_t *listener, RADIUS_PACKET *packet, sizeof(packet->vector)) == 0)) { /* - * If the request is running, it' + * If the request is running, don't muck + * with it. */ - if (request->child_state != REQUEST_DONE) { + if ((request->child_state != REQUEST_DONE) && + (request->child_state != REQUEST_RESPONSE_DELAY) && + (request->child_state != REQUEST_CLEANUP_DELAY)) { request->process(request, FR_ACTION_DUP); #ifdef WITH_STATS