mirror of
https://github.com/samba-team/samba.git
synced 2025-08-26 01:49:31 +03:00
ctdb-tcp: Only mark a node connected if both directions are up
Nodes are currently marked as up if the outgoing connection is
established. However, if the incoming connection is not yet
established then this node could send a request where the replying
node can not queue its reply. Wait until both directions are up
before marking a node as connected.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14084
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit 8c98c10f24
)
This commit is contained in:
committed by
Karolin Seeger
parent
9155ad23d4
commit
1e45ab3c23
@ -148,8 +148,14 @@ static void ctdb_node_connect_write(struct tevent_context *ev,
|
||||
/* the queue subsystem now owns this fd */
|
||||
tnode->out_fd = -1;
|
||||
|
||||
/* tell the ctdb layer we are connected */
|
||||
node->ctdb->upcalls->node_connected(node);
|
||||
/*
|
||||
* Mark the node to which this connection has been established
|
||||
* as connected, but only if the corresponding listening
|
||||
* socket is also connected
|
||||
*/
|
||||
if (tnode->in_fd != -1) {
|
||||
node->ctdb->upcalls->node_connected(node);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -343,7 +349,15 @@ static void ctdb_listen_event(struct tevent_context *ev, struct tevent_fd *fde,
|
||||
}
|
||||
|
||||
tnode->in_fd = fd;
|
||||
}
|
||||
|
||||
/*
|
||||
* Mark the connecting node as connected, but only if the
|
||||
* corresponding outbound connected is also up
|
||||
*/
|
||||
if (tnode->out_queue != NULL) {
|
||||
node->ctdb->upcalls->node_connected(node);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user