svn commit: samba r5170 - in branches/SAMBA_4_0/source/lib: .

tridge at samba.org tridge at samba.org
Wed Feb 2 10:24:48 GMT 2005


Author: tridge
Date: 2005-02-02 10:24:47 +0000 (Wed, 02 Feb 2005)
New Revision: 5170

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5170

Log:
fixed a bug handling events that have already timed out - they were
being treated as events that never time out, so they happened on the
next other event



Modified:
   branches/SAMBA_4_0/source/lib/events.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/events.c
===================================================================
--- branches/SAMBA_4_0/source/lib/events.c	2005-02-02 09:59:01 UTC (rev 5169)
+++ branches/SAMBA_4_0/source/lib/events.c	2005-02-02 10:24:47 UTC (rev 5170)
@@ -223,7 +223,7 @@
 	struct loop_event *le;
 	struct timed_event *te, *te_next;
 	int selrtn;
-	struct timeval tval, t;
+	struct timeval tval, t, *tvalp=NULL;
 	uint32_t destruction_count = ev->destruction_count;
 
 	t = timeval_current();
@@ -264,13 +264,13 @@
 			talloc_free(te);
 			continue;
 		}
-
 		tv = timeval_diff(&te->next_event, &t);
-		if (timeval_is_zero(&tval)) {
+		if (tvalp == NULL) {
 			tval = tv;
 		} else {
 			tval = timeval_min(&tv, &tval);
 		}
+		tvalp = &tval;
 	}
 
 	/* only do a select() if there're fd_events
@@ -290,11 +290,7 @@
 		 * sys_select() with something in the events
 		 * structure - for now just use select() 
 		 */
-		if (timeval_is_zero(&tval)) {
-			selrtn = select(ev->maxfd+1, &r_fds, &w_fds, NULL, NULL);
-		} else {
-			selrtn = select(ev->maxfd+1, &r_fds, &w_fds, NULL, &tval);
-		}
+		selrtn = select(ev->maxfd+1, &r_fds, &w_fds, NULL, tvalp);
 		
 		t = timeval_current();
 		



More information about the samba-cvs mailing list