Allow cancellation of an empty file operation as a no-op

This commit is contained in:
evgeny committed 2026-10-28 00:58:59 +01:00
1 parent ba44e243a9
commit 59cd456386
2 files changed
+3 -2

No files matched your search

+1 -1
View File
@@ -292,7 +292,7 @@ struct mf_transfer_request;
* Нужны gui_bridge_init и опубликованное работающее ядро; UI callbacks всегда через очередь Qt. */
int gui_bridge_member_files_request(uint64_t group, uint64_t server, const struct mf_message* message);
int gui_bridge_member_files_transfer(const struct mf_transfer_request* request);
/* Запросить отмену ненулевого ID у текущего ядра; 0 — принято, -1 — отказ с логом.
/* Запросить отмену ID у текущего ядра; id=0 ничего не делает. 0 — принято/no-op, -1 — отказ с логом.
* Память команды принадлежит мосту. Итог операции приходит по её RESPONSE/TRANSFER, отдельного ответа cancel нет. */
int gui_bridge_member_files_cancel(uint64_t id);
void gui_bridge_set_avatar_result_cb(gui_dm_messages_fn cb);
+2 -1
View File
@@ -829,8 +829,9 @@ int gui_bridge_member_files_transfer(const struct mf_transfer_request* source) {
/* После исполнения отменяет native handle; при detach до исполнения payload просто освобождается. */
int gui_bridge_member_files_cancel(uint64_t id) {
if (!id) return 0;
std::lock_guard<std::mutex> guard(bridge_mutex);
if (!id || !g_inst || !g_ua || !uasync_is_running(g_ua)) {
if (!g_inst || !g_ua || !uasync_is_running(g_ua)) {
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "file bridge: cancel rejected id=%llu core_available=%d",
(unsigned long long)id, g_inst && g_ua && uasync_is_running(g_ua)); return -1;
}