mirror of
https://github.com/samba-team/samba.git
synced 2025-01-05 09:18:06 +03:00
ctdb-tcp: Do not stop outbound connection in ctdb_tcp_node_connect()
The only place the outgoing connection needs to be stopped is when
there is a timeout when waiting for the connection to become writable.
Add a new function ctdb_tcp_node_connect_timeout() to handle this
case.
All of the other cases are attempts to establish a new outgoing
connection (initial attempt, retry after an error or disconnect, ...)
so drop stopping the connection in those cases.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14295
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Signed-off-by: Martin Schwenke <martin@meltin.net>
Autobuild-User(master): Martin Schwenke <martins@samba.org>
Autobuild-Date(master): Thu Mar 12 05:29:20 UTC 2020 on sn-devel-184
(cherry picked from commit 319c93f0c6
)
Autobuild-User(v4-10-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-10-test): Tue Mar 24 10:48:31 UTC 2020 on sn-devel-144
This commit is contained in:
parent
3d7da45136
commit
d7936eab41
@ -161,6 +161,11 @@ static void ctdb_node_connect_write(struct tevent_context *ev,
|
||||
}
|
||||
|
||||
|
||||
static void ctdb_tcp_node_connect_timeout(struct tevent_context *ev,
|
||||
struct tevent_timer *te,
|
||||
struct timeval t,
|
||||
void *private_data);
|
||||
|
||||
/*
|
||||
called when we should try and establish a tcp connection to a node
|
||||
*/
|
||||
@ -251,7 +256,7 @@ static void ctdb_tcp_start_outgoing(struct ctdb_node *node)
|
||||
tnode->connect_te = tevent_add_timer(ctdb->ev,
|
||||
tnode,
|
||||
timeval_current_ofs(1, 0),
|
||||
ctdb_tcp_node_connect,
|
||||
ctdb_tcp_node_connect_timeout,
|
||||
node);
|
||||
|
||||
return;
|
||||
@ -273,6 +278,17 @@ void ctdb_tcp_node_connect(struct tevent_context *ev,
|
||||
struct ctdb_node *node = talloc_get_type_abort(private_data,
|
||||
struct ctdb_node);
|
||||
|
||||
ctdb_tcp_start_outgoing(node);
|
||||
}
|
||||
|
||||
static void ctdb_tcp_node_connect_timeout(struct tevent_context *ev,
|
||||
struct tevent_timer *te,
|
||||
struct timeval t,
|
||||
void *private_data)
|
||||
{
|
||||
struct ctdb_node *node = talloc_get_type_abort(private_data,
|
||||
struct ctdb_node);
|
||||
|
||||
ctdb_tcp_stop_outgoing(node);
|
||||
ctdb_tcp_start_outgoing(node);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user