|
|
|
|
@ -273,9 +273,8 @@ int conn_mgr_connect_node(struct CONN_MGR* mgr, uint64_t node_id, uint32_t idle_
|
|
|
|
|
struct ll_entry* ce = queue_find_data_by_index(mgr->instance->connections, (const uint8_t*)&node_id); |
|
|
|
|
while (ce) { |
|
|
|
|
struct conn_queue_entry* cqe = (struct conn_queue_entry*)ce->data; |
|
|
|
|
if (cqe->conn && cqe->conn->peer_node_id == node_id && cqe->conn->links_up) { |
|
|
|
|
if (cqe->conn && cqe->conn->peer_node_id == node_id) { |
|
|
|
|
existing = cqe->conn; |
|
|
|
|
topo_group_new_conn(group, existing); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
ce = queue_find_next_by_index(mgr->instance->connections, (const uint8_t*)&node_id, ce); |
|
|
|
|
@ -297,6 +296,13 @@ int conn_mgr_connect_node(struct CONN_MGR* mgr, uint64_t node_id, uint32_t idle_
|
|
|
|
|
cm_deliver_result(entry, CONN_MGR_OK); |
|
|
|
|
return CONN_MGR_OK; |
|
|
|
|
} |
|
|
|
|
entry = cm_ensure_entry(mgr, node_id); |
|
|
|
|
if (!entry) return CONN_MGR_ERR_INTERNAL; |
|
|
|
|
entry->state = CONN_MGR_STATE_CONNECTING; |
|
|
|
|
{ struct cm_cb_node* cn = u_calloc(1, sizeof(struct cm_cb_node)); |
|
|
|
|
if (cn) { cn->cb = cb; cn->arg = cb_arg; cn->next = entry->cb_list; entry->cb_list = cn; } } |
|
|
|
|
topo_group_new_conn(group, existing); |
|
|
|
|
return CONN_MGR_OK; |
|
|
|
|
} |
|
|
|
|
entry = cm_ensure_entry(mgr, node_id); |
|
|
|
|
if (!entry) return CONN_MGR_ERR_INTERNAL; |
|
|
|
|
|