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:

committed by
Nico Williams

parent
c6d0793e63
commit
9de1728850
@@ -1023,11 +1023,14 @@ main(int argc, char **argv)
|
|||||||
if (verbose)
|
if (verbose)
|
||||||
krb5_warnx(context, "master sent us a ping");
|
krb5_warnx(context, "master sent us a ping");
|
||||||
is_up_to_date(context, status_file, server_context);
|
is_up_to_date(context, status_file, server_context);
|
||||||
ret = ihave(context, auth_context, master_fd,
|
/*
|
||||||
server_context->log_context.version);
|
* We used to send an I_HAVE here. But the master may send
|
||||||
if (ret)
|
* ARE_YOU_THERE messages in response to local, possibly-
|
||||||
connected = FALSE;
|
* 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);
|
send_im_here(context, master_fd, auth_context);
|
||||||
break;
|
break;
|
||||||
case YOU_HAVE_LAST_VERSION:
|
case YOU_HAVE_LAST_VERSION:
|
||||||
|
Reference in New Issue
Block a user