summaryrefslogtreecommitdiffstats
path: root/ctdb/tcp
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2007-10-19 09:39:07 +1000
committerAndrew Tridgell <tridge@samba.org>2007-10-19 09:39:07 +1000
commitf47f758fe86dcaa77c8d6fdc67553a0f0dbfe63a (patch)
treedbfeb12c18b6a9484c02de57dba5a5ccf9920a35 /ctdb/tcp
parent623e216dcf02de0afbf9c5cea350818943eafdde (diff)
parente81e008a36bf94248acef72aa526f153bbec32eb (diff)
downloadsamba-f47f758fe86dcaa77c8d6fdc67553a0f0dbfe63a.tar.gz
samba-f47f758fe86dcaa77c8d6fdc67553a0f0dbfe63a.tar.xz
samba-f47f758fe86dcaa77c8d6fdc67553a0f0dbfe63a.zip
merge from ronnie
(This used to be ctdb commit d444fdc7782496abe4b27003b647ac49fb52e6be)
Diffstat (limited to 'ctdb/tcp')
-rw-r--r--ctdb/tcp/tcp_init.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/ctdb/tcp/tcp_init.c b/ctdb/tcp/tcp_init.c
index f5d4e4c1d6b..1b186c3f400 100644
--- a/ctdb/tcp/tcp_init.c
+++ b/ctdb/tcp/tcp_init.c
@@ -88,6 +88,24 @@ static int ctdb_tcp_start(struct ctdb_context *ctdb)
return 0;
}
+/*
+ shutdown and try to restart a connection to a node after it has been
+ disconnected
+*/
+static void ctdb_tcp_restart(struct ctdb_node *node)
+{
+ struct ctdb_tcp_node *tnode = talloc_get_type(
+ node->private_data, struct ctdb_tcp_node);
+
+ DEBUG(0,("Tearing down connection to dead node :%d\n", node->pnn));
+
+ tnode->fd = -1;
+ ctdb_queue_set_fd(tnode->out_queue, -1);
+
+ event_add_timed(node->ctdb->ev, tnode, timeval_zero(),
+ ctdb_tcp_node_connect, node);
+}
+
/*
shutdown the transport
@@ -121,6 +139,7 @@ static const struct ctdb_methods ctdb_tcp_methods = {
.add_node = ctdb_tcp_add_node,
.allocate_pkt = ctdb_tcp_allocate_pkt,
.shutdown = ctdb_tcp_shutdown,
+ .restart = ctdb_tcp_restart,
};
/*