mirror of
https://github.com/samba-team/samba.git
synced 2025-08-30 17:49:30 +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:
committed by
Karolin Seeger
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
|
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->connect_te = tevent_add_timer(ctdb->ev,
|
||||||
tnode,
|
tnode,
|
||||||
timeval_current_ofs(1, 0),
|
timeval_current_ofs(1, 0),
|
||||||
ctdb_tcp_node_connect,
|
ctdb_tcp_node_connect_timeout,
|
||||||
node);
|
node);
|
||||||
|
|
||||||
return;
|
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 *node = talloc_get_type_abort(private_data,
|
||||||
struct ctdb_node);
|
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_stop_outgoing(node);
|
||||||
ctdb_tcp_start_outgoing(node);
|
ctdb_tcp_start_outgoing(node);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user