ipropd-slave: don't send I_HAVE in response to AYT

ipropd-master sends AYT messages often as a result of a possibly-
transient error, but if the slave responds to such an AYT with I_HAVE,
then the same code path that failed will be executed on the master, and
if the error wasn't transient then we'll loop hard.  So don't send an
I_HAVE in response to an AYT.
This commit is contained in:
Nicolas Williams
2019-09-18 20:35:23 -05:00
committed by Nico Williams
parent c6d0793e63
commit 9de1728850

View File

@@ -1023,11 +1023,14 @@ main(int argc, char **argv)
if (verbose)
krb5_warnx(context, "master sent us a ping");
is_up_to_date(context, status_file, server_context);
ret = ihave(context, auth_context, master_fd,
server_context->log_context.version);
if (ret)
connected = FALSE;
/*
* We used to send an I_HAVE here. But the master may send
* ARE_YOU_THERE messages in response to local, possibly-
* transient errors, and if that happens and we respond with an
* I_HAVE then we'll loop hard if the error was not transient.
*
* So we don't ihave() here.
*/
send_im_here(context, master_fd, auth_context);
break;
case YOU_HAVE_LAST_VERSION: