]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Catch non-fatal race conditions
authorAlan T. DeKok <aland@freeradius.org>
Mon, 17 Aug 2009 06:53:47 +0000 (08:53 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 17 Aug 2009 06:53:47 +0000 (08:53 +0200)
src/main/event.c

index aab1856b138b128d94907538af9b2d5e5d4fef2a..9a42dbe6c8d322b797e11c6dc4f8b33e1591e457 100644 (file)
@@ -2721,11 +2721,22 @@ static void received_conflicting_request(REQUEST *request,
                return;
 #endif
 
+               /*
+                *      Catch race conditions.  It may have switched
+                *      from running to done while this code is being
+                *      executed.
+                */
+       case REQUEST_REJECT_DELAY:
+       case REQUEST_CLEANUP_DELAY:
+       case REQUEST_DONE:
+               break;
+
                /*
                 *      It's in some other state, and therefore also
                 *      in the event queue.  At some point, the
                 *      child will notice, and we can then delete it.
                 */
+       case REQUEST_PROXIED:
        default:
                rad_assert(request->ev != NULL);
                break;