diff --git a/lib/kadm5/ipropd_slave.c b/lib/kadm5/ipropd_slave.c index 60c7afe8d..73180acae 100644 --- a/lib/kadm5/ipropd_slave.c +++ b/lib/kadm5/ipropd_slave.c @@ -727,8 +727,8 @@ main(int argc, char **argv) krb5_warnx(context, "ipropd-slave started at version: %ld", (long)server_context->log_context.version); - ret = ihave (context, auth_context, master_fd, - server_context->log_context.version); + ret = ihave(context, auth_context, master_fd, + server_context->log_context.version); if (ret) goto retry; @@ -777,30 +777,33 @@ main(int argc, char **argv) } sp = krb5_storage_from_mem (out.data, out.length); - krb5_ret_int32 (sp, &tmp); + krb5_ret_int32(sp, &tmp); switch (tmp) { case FOR_YOU : - receive (context, sp, server_context); - ret = ihave (context, auth_context, master_fd, - server_context->log_context.version); - if (ret) { - connected = FALSE; - } else { - is_up_to_date(context, status_file, server_context); - } - - break; - case TELL_YOU_EVERYTHING : - ret = receive_everything (context, master_fd, server_context, - auth_context); + receive(context, sp, server_context); + ret = ihave(context, auth_context, master_fd, + server_context->log_context.version); if (ret) connected = FALSE; else is_up_to_date(context, status_file, server_context); + + break; + case TELL_YOU_EVERYTHING : + ret = receive_everything(context, master_fd, server_context, + auth_context); + if (ret == 0) { + ret = ihave(context, auth_context, master_fd, + server_context->log_context.version); + } + if (ret) + connected = FALSE; + else + is_up_to_date(context, status_file, server_context); break; case ARE_YOU_THERE : is_up_to_date(context, status_file, server_context); - send_im_here (context, master_fd, auth_context); + send_im_here(context, master_fd, auth_context); break; case YOU_HAVE_LAST_VERSION: is_up_to_date(context, status_file, server_context); diff --git a/tests/kdc/Makefile.am b/tests/kdc/Makefile.am index d57815c17..daad09c99 100644 --- a/tests/kdc/Makefile.am +++ b/tests/kdc/Makefile.am @@ -12,6 +12,7 @@ noinst_DATA = \ krb5-weak.conf \ krb5-pkinit.conf \ krb5-pkinit-win.conf \ + krb5-slave2.conf \ krb5-slave.conf check_SCRIPTS = $(SCRIPT_TESTS) @@ -138,7 +139,7 @@ check-pkinit: check-pkinit.in Makefile krb5-pkinit.conf $(chmod) +x check-pkinit.tmp && \ mv check-pkinit.tmp check-pkinit -check-iprop: check-iprop.in Makefile krb5.conf krb5-slave.conf +check-iprop: check-iprop.in Makefile krb5.conf krb5-slave.conf krb5-slave2.conf $(do_subst) < $(srcdir)/check-iprop.in > check-iprop.tmp && \ $(chmod) +x check-iprop.tmp && \ mv check-iprop.tmp check-iprop @@ -212,6 +213,13 @@ krb5-slave.conf: krb5.conf.in Makefile -e 's,[@]kdc[@],.slave,g' < $(srcdir)/krb5.conf.in > krb5-slave.conf.tmp && \ mv krb5-slave.conf.tmp krb5-slave.conf +krb5-slave2.conf: krb5.conf.in Makefile + $(do_subst) \ + -e 's,[@]WEAK[@],true,g' \ + -e 's,[@]dk[@],,g' \ + -e 's,[@]kdc[@],.slave2,g' < $(srcdir)/krb5.conf.in > krb5-slave2.conf.tmp && \ + mv krb5-slave2.conf.tmp krb5-slave2.conf + krb5-pkinit.conf: krb5-pkinit.conf.in Makefile $(do_subst) -e 's,[@]w2k[@],no,g' < $(srcdir)/krb5-pkinit.conf.in > krb5-pkinit.conf.tmp && \ mv krb5-pkinit.conf.tmp krb5-pkinit.conf @@ -247,6 +255,7 @@ CLEANFILES= \ krb5-hdb-mitdb.conf \ krb5-pkinit-win.conf \ krb5-pkinit.conf \ + krb5-slave2.conf \ krb5-slave.conf \ krb5-weak.conf \ krb5.conf \ diff --git a/tests/kdc/check-iprop.in b/tests/kdc/check-iprop.in index 4d54da826..b4773288c 100644 --- a/tests/kdc/check-iprop.in +++ b/tests/kdc/check-iprop.in @@ -172,7 +172,7 @@ sleep 2 KRB5_CONFIG="${objdir}/krb5-slave.conf" \ ${kadmin} -l get host/bar@${R} > /dev/null 2>/dev/null && exit 1 -echo "kill slave" +echo "kill slave and remove log and database" > iprop-stats sh ${leaks_kill} ipropd-slave $ipds || exit 1 rm -f iprop-slave-status @@ -181,6 +181,8 @@ ${EGREP} 'iprop/slave.test.h5l.se@TEST.H5L.SE.*Down' iprop-stats >/dev/null || e # ----------------- checking: slave is missing changes while down +rm current.slave.log current-db.slave* || exit 1 + echo "doing changes while slave is down" ${kadmin} -l cpw --random-password user@${R} > /dev/null || exit 1 ${kadmin} -l cpw --random-password user@${R} > /dev/null || exit 1