@ -7,7 +7,7 @@
* Portions Copyright ( c ) 1994 , Regents of the University of California
*
* IDENTIFICATION
* $ Header : / cvsroot / pgsql / src / backend / commands / async . c , v 1.91 2002 / 09 / 16 01 : 24 : 41 tgl Exp $
* $ Header : / cvsroot / pgsql / src / backend / commands / async . c , v 1.92 2003 / 02 / 18 02 : 53 : 29 tgl Exp $
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
@ -599,6 +599,16 @@ Async_NotifyHandler(SIGNAL_ARGS)
if ( notifyInterruptEnabled )
{
bool save_ImmediateInterruptOK = ImmediateInterruptOK ;
/*
* We may be called while ImmediateInterruptOK is true ; turn it off
* while messing with the NOTIFY state . ( We would have to save
* and restore it anyway , because PGSemaphore operations inside
* ProcessIncomingNotify ( ) might reset it . )
*/
ImmediateInterruptOK = false ;
/*
* I ' m not sure whether some flavors of Unix might allow another
* SIGUSR2 occurrence to recursively interrupt this routine . To
@ -626,6 +636,13 @@ Async_NotifyHandler(SIGNAL_ARGS)
elog ( LOG , " Async_NotifyHandler: done " ) ;
}
}
/*
* Restore ImmediateInterruptOK , and check for interrupts if needed .
*/
ImmediateInterruptOK = save_ImmediateInterruptOK ;
if ( save_ImmediateInterruptOK )
CHECK_FOR_INTERRUPTS ( ) ;
}
else
{