summaryrefslogtreecommitdiff
path: root/net/isc-dhcp31-server/files/patch-common::dispatch.c
blob: 0aa709cf0860bd848f42f5733cfa1c0dc4e95a25 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
--- common/dispatch.c.orig	Sun Nov 17 03:26:57 2002
+++ common/dispatch.c	Wed Mar  3 16:20:15 2004
@@ -95,11 +95,26 @@
 void dispatch ()
 {
 	struct timeval tv, *tvp;
+#ifdef ENABLE_POLLING_MODE
+	struct timeval *tvp_new;
+#endif
 	isc_result_t status;
+	TIME cur_time;
 
+	tvp = NULL;
+#ifdef ENABLE_POLLING_MODE
+	tvp_new = NULL;
+#endif
 	/* Wait for a packet or a timeout... XXX */
 	do {
 		tvp = process_outstanding_timeouts (&tv);
+#ifdef ENABLE_POLLING_MODE
+		GET_TIME (&cur_time);
+		add_timeout(cur_time + polling_interval, state_polling, 0, 0, 0);
+		tvp_new = process_outstanding_timeouts(&tv);
+		if (tvp != NULL && (tvp -> tv_sec > tvp_new -> tv_sec))
+			tvp = tvp_new;
+#endif /* ENABLE_POLLING_MODE */
 		status = omapi_one_dispatch (0, tvp);
 	} while (status == ISC_R_TIMEDOUT || status == ISC_R_SUCCESS);
 	log_fatal ("omapi_one_dispatch failed: %s -- exiting.",