Index: xc/programs/Xserver/dix/dispatch.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/dix/dispatch.c,v retrieving revision 1.5 diff -u -2 -0 -r1.5 dispatch.c --- xc/programs/Xserver/dix/dispatch.c 31 Jul 2004 01:48:27 -0000 1.5 +++ xc/programs/Xserver/dix/dispatch.c 11 Aug 2004 03:11:52 -0000 @@ -3637,41 +3637,47 @@ #ifdef LBX ProcessQTagZombies(); #endif CloseDownConnection(client); /* If the client made it to the Running stage, nClients has * been incremented on its behalf, so we need to decrement it * now. If it hasn't gotten to Running, nClients has *not* * been incremented, so *don't* decrement it. */ if (client->clientState != ClientStateInitial && client->clientState != ClientStateAuthenticating ) { --nClients; } } if (really_close_down) { if (client->clientState == ClientStateRunning && nClients == 0) + { dispatchException |= dispatchExceptionAtReset; + /* Dispose audit timer since there are no clients left which + * may cause audit events + * (see https://freedesktop.org/bugzilla/show_bug.cgi?id=964) */ + FreeAuditTimer(); + } client->clientState = ClientStateGone; if (ClientStateCallback) { NewClientInfoRec clientinfo; clientinfo.client = client; clientinfo.prefix = (xConnSetupPrefix *)NULL; clientinfo.setup = (xConnSetup *) NULL; CallCallbacks((&ClientStateCallback), (pointer)&clientinfo); } FreeClientResources(client); if (client->index < nextFreeClientID) nextFreeClientID = client->index; clients[client->index] = NullClient; #ifdef SMART_SCHEDULE SmartLastClient = NullClient; #endif xfree(client); Index: xc/programs/Xserver/os/log.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/os/log.c,v retrieving revision 1.2 diff -u -2 -0 -r1.2 log.c --- xc/programs/Xserver/os/log.c 30 Jun 2004 20:06:56 -0000 1.2 +++ xc/programs/Xserver/os/log.c 11 Aug 2004 03:11:53 -0000 @@ -386,41 +386,41 @@ #ifdef __GNUC__ void AbortServer(void) __attribute__((noreturn)); #endif void AbortServer(void) { OsCleanup(TRUE); AbortDDX(); fflush(stderr); if (CoreDump) abort(); exit (1); } #ifndef AUDIT_PREFIX #define AUDIT_PREFIX "AUDIT: %s: %ld %s: " #endif #ifndef AUDIT_TIMEOUT -#define AUDIT_TIMEOUT ((CARD32)(120 * 1000)) /* 2 mn */ +#define AUDIT_TIMEOUT ((CARD32)(120 * 1000)) /* 2mins(=120secs) */ #endif static int nrepeat = 0; static int oldlen = -1; static OsTimerPtr auditTimer = NULL; void FreeAuditTimer(void) { if (auditTimer != NULL) { /* Force output of pending messages */ TimerForce(auditTimer); TimerFree(auditTimer); auditTimer = NULL; } } static char * AuditPrefix(void) {