fix: cm_invite_pending — deferred free + cancelled guard

Корень краша: cm_handle_invite_info_resp вызывал cm_invite_cleanup(inv)
без unlink из invite_list — висячий указатель при conn_mgr_destroy → SIGSEGV.

Механизм защиты:
- cancelled:1 в cm_invite_pending — блокирует все коллбэки после cancel
- cm_invite_cancel: cancelled=1 первой строкой, deferred free через uasync_post
- Все коллбэки (NCD, TCP ready/close, overall timer): guard + DEBUG_WARN
- Success path: temp_nq=NULL (передача владения), вызов cm_invite_cancel
- INV_CANCEL логи: skip (NULL) / done — видно что реально сделано
This commit is contained in:
evgeny committed 2026-08-06 10:54:56 +03:00
1 parent f476188566
commit dc8c9f7875
9 files changed
+456 -207

No files matched your search

@@ -485,6 +485,7 @@ class ChatViewModel : ViewModel() {
fun clearState() {
repo?.close()
repo = null
dbReady = false
_channels.value = emptyList()
_messages.value = emptyList()
_currentChannel.value = null