summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libsm/clock.c
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2002-04-10 03:05:00 +0000
committergshapiro <gshapiro@FreeBSD.org>2002-04-10 03:05:00 +0000
commit9e3bd35cd79720a6547b183a6a6fb97ab1ae7b84 (patch)
tree348e6162af337e0b74db963f6e4dcc567e2f99e9 /contrib/sendmail/libsm/clock.c
parent1a7e50d796833cbb4346a251bc88555ea2c58e94 (diff)
downloadFreeBSD-src-9e3bd35cd79720a6547b183a6a6fb97ab1ae7b84.zip
FreeBSD-src-9e3bd35cd79720a6547b183a6a6fb97ab1ae7b84.tar.gz
Import sendmail 8.12.3
Diffstat (limited to 'contrib/sendmail/libsm/clock.c')
-rw-r--r--contrib/sendmail/libsm/clock.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/contrib/sendmail/libsm/clock.c b/contrib/sendmail/libsm/clock.c
index eed1ded..ada9689 100644
--- a/contrib/sendmail/libsm/clock.c
+++ b/contrib/sendmail/libsm/clock.c
@@ -12,7 +12,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: clock.c,v 1.34 2001/11/05 18:33:20 ca Exp $")
+SM_RCSID("@(#)$Id: clock.c,v 1.35 2002/03/22 18:34:38 gshapiro Exp $")
#include <unistd.h>
#include <time.h>
#include <errno.h>
@@ -160,6 +160,8 @@ sm_sigsafe_seteventm(intvl, func, arg)
timersub(&SmEventQueue->ev_time, &now, &itime.it_value);
itime.it_interval.tv_sec = 0;
itime.it_interval.tv_usec = 0;
+ if (itime.it_value.tv_sec < 0)
+ itime.it_value.tv_sec = 0;
if (itime.it_value.tv_sec == 0 && itime.it_value.tv_usec == 0)
itime.it_value.tv_usec = 1000;
(void) setitimer(ITIMER_REAL, &itime, NULL);
@@ -412,6 +414,11 @@ sm_tick(sig)
&clr.it_value);
clr.it_interval.tv_sec = 0;
clr.it_interval.tv_usec = 0;
+ if (clr.it_value.tv_sec < 0)
+ clr.it_value.tv_sec = 0;
+ if (clr.it_value.tv_sec == 0 &&
+ clr.it_value.tv_usec == 0)
+ clr.it_value.tv_usec = 1000;
(void) setitimer(ITIMER_REAL, &clr, NULL);
}
else
@@ -452,6 +459,10 @@ sm_tick(sig)
timersub(&SmEventQueue->ev_time, &now, &clr.it_value);
clr.it_interval.tv_sec = 0;
clr.it_interval.tv_usec = 0;
+ if (clr.it_value.tv_sec < 0)
+ clr.it_value.tv_sec = 0;
+ if (clr.it_value.tv_sec == 0 && clr.it_value.tv_usec == 0)
+ clr.it_value.tv_usec = 1000;
(void) setitimer(ITIMER_REAL, &clr, NULL);
#else /* SM_CONF_SETITIMER */
(void) alarm((unsigned) (SmEventQueue->ev_time - now));
OpenPOWER on IntegriCloud