mirror of
https://github.com/samba-team/samba.git
synced 2025-01-22 22:04:08 +03:00
ctdb-takeover: Do not call ctdb_announce_vnn_iface() for updateip
This causes any tracked connections for the IP address to be lost. When doing a takeip, the server sends a tickle ACK to the client, the client responds with a valid ACK and the server's TCP stack responds with a reset because the connection does not exist. However, in the updateip, case the connection *does* exist, so the tickle *does not* cause the connection to be reset. ctdb_announce_vnn_iface() clears the list of tracked TCP connections while sending the tickle ACKs. So, if there are no reconnects as in the takeip case, then the list of connections is simply lost. The "updateip" event in the 10.interface event script already sends gratuitous ARPs and tickles connections in both directions. This ensures that traffic continues after packets may have been dropped when the script temporarily blocks traffic to the IP address. All of this means that the call to ctdb_announce_vnn_iface() can just be deleted. Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
parent
769e889e0e
commit
eb66ef2e3b
@ -576,7 +576,6 @@ static void ctdb_do_updateip_callback(struct ctdb_context *ctdb, int status,
|
||||
{
|
||||
struct ctdb_do_updateip_state *state =
|
||||
talloc_get_type(private_data, struct ctdb_do_updateip_state);
|
||||
int32_t ret;
|
||||
|
||||
if (status != 0) {
|
||||
if (status == -ETIME) {
|
||||
@ -601,17 +600,6 @@ static void ctdb_do_updateip_callback(struct ctdb_context *ctdb, int status,
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctdb->do_checkpublicip) {
|
||||
|
||||
ret = ctdb_announce_vnn_iface(ctdb, state->vnn);
|
||||
if (ret != 0) {
|
||||
ctdb_request_control_reply(ctdb, state->c, NULL, -1, NULL);
|
||||
talloc_free(state);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* the control succeeded */
|
||||
ctdb_request_control_reply(ctdb, state->c, NULL, 0, NULL);
|
||||
talloc_free(state);
|
||||
|
Loading…
x
Reference in New Issue
Block a user