(main): process all slaves, not just up to the last slave sending data
(bug report from Björn Sandell <biorn@dce.chalmers.se>) (*): only send one ARE_YOU_THERE git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13918 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -94,6 +94,7 @@ struct slave {
|
||||
time_t seen;
|
||||
unsigned long flags;
|
||||
#define SLAVE_F_DEAD 0x1
|
||||
#define SLAVE_F_AYT 0x2
|
||||
struct slave *next;
|
||||
};
|
||||
|
||||
@@ -124,6 +125,7 @@ check_acl (krb5_context context, const char *name)
|
||||
static void
|
||||
slave_seen(slave *s)
|
||||
{
|
||||
s->flags &= ~SLAVE_F_AYT;
|
||||
s->seen = time(NULL);
|
||||
}
|
||||
|
||||
@@ -365,9 +367,11 @@ send_are_you_there (krb5_context context, slave *s)
|
||||
char buf[4];
|
||||
int ret;
|
||||
|
||||
if (s->flags & SLAVE_F_DEAD)
|
||||
if (s->flags & (SLAVE_F_DEAD|SLAVE_F_AYT))
|
||||
return 0;
|
||||
|
||||
s->flags |= SLAVE_F_AYT;
|
||||
|
||||
data.data = buf;
|
||||
data.length = 4;
|
||||
|
||||
@@ -739,17 +743,19 @@ main(int argc, char **argv)
|
||||
continue;
|
||||
}
|
||||
--ret;
|
||||
assert(ret >= 0);
|
||||
old_version = current_version;
|
||||
kadm5_log_get_version_fd (log_fd, ¤t_version);
|
||||
for (p = slaves; p != NULL; p = p->next)
|
||||
send_diffs (context, p, log_fd, database, current_version);
|
||||
}
|
||||
|
||||
for(p = slaves; ret && p != NULL; p = p->next) {
|
||||
for(p = slaves; p != NULL; p = p->next) {
|
||||
if (p->flags & SLAVE_F_DEAD)
|
||||
continue;
|
||||
if (FD_ISSET(p->fd, &readset)) {
|
||||
if (ret && FD_ISSET(p->fd, &readset)) {
|
||||
--ret;
|
||||
assert(ret >= 0);
|
||||
if(process_msg (context, p, log_fd, database, current_version))
|
||||
slave_dead(p);
|
||||
} else if (slave_gone_p (p))
|
||||
@@ -761,6 +767,7 @@ main(int argc, char **argv)
|
||||
if (ret && FD_ISSET(listen_fd, &readset)) {
|
||||
add_slave (context, keytab, &slaves, listen_fd);
|
||||
--ret;
|
||||
assert(ret >= 0);
|
||||
}
|
||||
write_stats(context, slaves, current_version);
|
||||
}
|
||||
|
Reference in New Issue
Block a user