Refactor Merkle sync into bounded bidirectional rounds with atomic member updates
This commit is contained in:
1 parent
1b92b4885b
commit
3e25bcef02
21 files changed
+1550
-1859
No files matched your search
@@ -602,6 +602,10 @@ static void cs_on_conn_down(struct ETCP_CONN* conn, int event, void* arg) { (voi
|
||||
static void cs_on_conn_status(struct ETCP_CONN* conn, int status, void* arg) {
|
||||
switch (status) {
|
||||
case ETCP_CONN_STATUS_UP: cs_on_conn_up(conn, ETCP_CBK_EVENT_UP, arg); break;
|
||||
case ETCP_CONN_STATUS_REINIT:
|
||||
cs_on_conn_down(conn, ETCP_CBK_EVENT_DOWN, arg);
|
||||
cs_on_conn_up(conn, ETCP_CBK_EVENT_UP, arg);
|
||||
break;
|
||||
case ETCP_CONN_STATUS_DOWN:
|
||||
case ETCP_CONN_STATUS_DELETE: cs_on_conn_down(conn, ETCP_CBK_EVENT_DOWN, arg); break;
|
||||
default: break;
|
||||
@@ -683,6 +687,11 @@ int chat_sync_init(struct UTUN_INSTANCE* inst) {
|
||||
cs->initialized = 1;
|
||||
inst->chat_sync = cs;
|
||||
|
||||
if (member_sync_init(inst) < 0) {
|
||||
DEBUG_ERROR(DEBUG_CATEGORY_MEMBER_SYNC, "%s: member synchronization initialization failed", CS_ID);
|
||||
inst->chat_sync = NULL; u_free(cs); return -1;
|
||||
}
|
||||
|
||||
etcp_bind(inst, ETCP_RT_ID_CHAT_SYNC, chat_sync_recv_cb);
|
||||
etcp_add_conn_status_cbk(inst, cs_on_conn_status, cs);
|
||||
|
||||
@@ -693,7 +702,6 @@ int chat_sync_init(struct UTUN_INSTANCE* inst) {
|
||||
cs->info_req_timer = NULL;
|
||||
cs->join_timer = NULL;
|
||||
|
||||
member_sync_init(inst);
|
||||
member_sync_add_apply_cbk(inst, cs_on_member_applied, cs);
|
||||
utun_add_peer_sleep_cbk(inst, cs_on_peer_sleep, cs);
|
||||
chat_admin_init(inst);
|
||||
|
||||
Reference in new issue
Block a user