Cancel delayed CM UP before deferring failover

This commit is contained in:
evgeny committed 2026-10-22 18:31:12 +02:00
1 parent 05ace58589
commit e02c9f7727
2 files changed
+6 -2

No files matched your search

+5 -1
View File
@@ -197,7 +197,7 @@ static int md_dl_request_block(struct media_download* dl, int bi) {
}
uint64_t holder = b->holders[b->holder_idx];
struct media_download_peer* p = md_dl_get_peer(dl, holder);
if (!p) { b->state = MD_BLK_WAIT; b->wait_reason = MD_WAIT_SLOT; return 0; }
if (!p || p->pending_event) { b->state = MD_BLK_WAIT; b->wait_reason = MD_WAIT_SLOT; return 0; }
if (md_dl_reset_block_file(dl, bi)) { dl->err = -1; return -1; }
b->bytes_received = 0; b->last_progress_tb = now;
b->state = MD_BLK_CONN; b->wait_reason = MD_WAIT_NONE;
@@ -341,6 +341,10 @@ void md_dl_conn_cb(struct CONN_MGR_HANDLE* h, uint64_t node_id, uint64_t group_i
MDL_ID, (unsigned long long)node_id, (void*)h); return;
}
p->pending_event = (uint8_t)event + 1;
if (event != CONN_EVENT_UP) {
p->cm_handle = NULL; p->connected = 0;
conn_mgr_close(h); // Сразу отменить отложенный UP, до любого следующего uasync callback.
}
if (!dl->pump_timer) dl->pump_timer = uasync_call_soon(dl->inst->ua, dl, md_dl_pump_cb);
if (!dl->pump_timer) {
DEBUG_ERROR(DEBUG_CATEGORY_MEDIA, "%s: cannot defer CM event", MDL_ID); dl->err = -1;
+1 -1
View File
@@ -177,7 +177,7 @@ static void phase3_query(void) {
struct media_pkt_query* q = (struct media_pkt_query*)pkt;
memset(q, 0, sizeof(*q));
q->subcmd = MEDIA_SUBCMD_QUERY;
q->group_id = TOPO_GROUP_UTUN;
memset(q->request_id, 0x91, sizeof(q->request_id));
memcpy(q->media_id, block_uuid, 16);
q->num_blocks = 1;
memcpy(pkt + MEDIA_QUERY_HDR_SIZE, block_uuid, 16);