[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

thinko in ipropd-master?

ipropd-master has an annoying tendency to spin, sucking all available CPU 
time.  It does not propagate changes to slaves when this happens.

select() is returning 1 with listen_fd set in readset, but the code for 
listen_fd is never invoked because the slave fd check unconditionally 
decrements ret for each slave (instead of only doing so when that slave's 
fd  is active).

Untested (as yet; about to recompile now) but logical fix:

--- lib/kadm5/ipropd_master.c.dist	Wed Jan 17 18:48:04 2001
+++ lib/kadm5/ipropd_master.c	Wed Jan 17 18:48:59 2001
@@ -472,8 +472,9 @@
 		send_diffs (context, p, log_fd, database, current_version);

-	for(p = slaves; p != NULL && ret--; p = p->next)
+	for(p = slaves; p != NULL; p = p->next)
 	    if (FD_ISSET(p->fd, &readset)) {
+		ret--;
 		if(process_msg (context, p, log_fd, database, current_version))
 		    remove_slave (context, p, &slaves);

brandon s. allbery     [os/2][linux][solaris][japh]   allbery@kf8nh.apk.net
system administrator        [WAY too many hats]         allbery@ece.cmu.edu
electrical and computer engineering                                   KF8NH
carnegie mellon university     ["better check the oblivious first" -ke6sls]