Cancel delayed CM UP before deferring failover
This commit is contained in:
1 parent
05ace58589
commit
e02c9f7727
2 files changed
+6
-2
No files matched your search
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user