--- /dev/null
+*** timer.c.orig Thu Nov 30 15:08:21 2000
+--- timer.c Thu Nov 30 15:14:48 2000
+***************
+*** 183,188 ****
+--- 183,189 ----
+
+ static TimerList * PendingTimers;
+ static char * current_exec_timer = empty_string;
++ static int parsingtimer = 0;
+
+ /*
+ * ExecuteTimers: checks to see if any currently pending timers have
+***************
+*** 196,202 ****
+ {
+ time_t now;
+ TimerList * current;
+- static int parsingtimer = 0;
+ int old_from_server = from_server;
+
+ /*
+--- 197,202 ----
+***************
+*** 530,535 ****
+--- 530,541 ----
+ time_t current;
+ time_t timeout_in;
+
++ /*
++ * If executing ExecuteTimers here would be invalid, then
++ * do not bother telling the caller we are ready.
++ */
++ if (waiting_out > waiting_in || parsingtimer || !PendingTimers)
++ return 100000;
+ if (!PendingTimers)
+ return 100000; /* Absurdly large. */
+ time(¤t);