diff --git a/Dev_Docs/Pending_Features/2026-06-19_1742_turn-uzel-93-only.md b/Dev_Docs/Pending_Features/2026-06-19_1742_turn-uzel-93-only.md new file mode 100644 index 0000000..afee8ba --- /dev/null +++ b/Dev_Docs/Pending_Features/2026-06-19_1742_turn-uzel-93-only.md @@ -0,0 +1,14 @@ +# Отключение устаревшего TURN-узла `45.136.124.227` + +- краткое описание: + - из конфигурации звонков убран устаревший TURN-узел `45.136.124.227:3478`; + - основным и единственным выдаваемым TURN-узлом оставлен `93.170.12.154:3478`. +- что проверять: + - сделать несколько тестовых звонков между разными устройствами/сетями; + - убедиться, что звонок доходит до стадии соединения и появляется звук; + - убедиться, что в логах `CallDeliveryReport` больше не фигурирует `45.136.124.227`. +- ожидаемый результат: + - клиентам больше не выдаётся устаревший TURN-адрес; + - звонки не заваливаются из-за попыток использовать отключённый TURN-узел. +- статус: + - pending diff --git a/Dev_Docs/Pending_Features/2026-06-19_1835_fix-stop-call-push-self-kill.md b/Dev_Docs/Pending_Features/2026-06-19_1835_fix-stop-call-push-self-kill.md new file mode 100644 index 0000000..891e248 --- /dev/null +++ b/Dev_Docs/Pending_Features/2026-06-19_1835_fix-stop-call-push-self-kill.md @@ -0,0 +1,15 @@ +# Фикс самообрыва звонка из-за `stop_call` push своей же сессии + +- краткое описание: + - исправлена ситуация, когда активный звонок мог оборваться сразу после соединения; + - причина была в том, что `stop_call` push, предназначенный для других сессий того же пользователя, обрабатывался и в исходной сессии. +- что проверять: + - открыть несколько вкладок/устройств одного пользователя; + - принять звонок на одной сессии; + - убедиться, что активная сессия не обрывает звонок сразу после соединения; + - убедиться, что лишние сессии при этом закрывают свой локальный экран звонка. +- ожидаемый результат: + - звонок не завершается сразу после `call_connected`; + - `accepted_on_other_device` и связанные `stop_call` события больше не убивают исходную активную сессию. +- статус: + - pending diff --git a/SHiNE-server/src/main/resources/application.properties b/SHiNE-server/src/main/resources/application.properties index 7609457..369673e 100644 --- a/SHiNE-server/src/main/resources/application.properties +++ b/SHiNE-server/src/main/resources/application.properties @@ -42,14 +42,14 @@ call.ice.turn.password= # Каждый блок описывает один TURN-узел. Новые узлы добавляются по индексу. # Приоритет авторизации на узел: sharedSecret -> статические username/password. # ------------------------------------------------------------ -call.ice.turn.servers.1.id=vps-05 -call.ice.turn.servers.1.urls=turn:45.136.124.227:3478?transport=udp,turn:45.136.124.227:3478?transport=tcp +call.ice.turn.servers.1.id=promo-node-93 +call.ice.turn.servers.1.urls=turn:93.170.12.154:3478?transport=udp,turn:93.170.12.154:3478?transport=tcp call.ice.turn.servers.1.sharedSecret=def6d444734d380d2f67a9d345b1debf985eaba0973c343e392c060d97c30106 call.ice.turn.servers.1.username= call.ice.turn.servers.1.password= -call.ice.turn.servers.2.id=promo-node-93 -call.ice.turn.servers.2.urls=turn:93.170.12.154:3478?transport=udp,turn:93.170.12.154:3478?transport=tcp +call.ice.turn.servers.2.id=shineup-main-185 +call.ice.turn.servers.2.urls=turn:185.229.109.118:3478?transport=udp,turn:185.229.109.118:3478?transport=tcp call.ice.turn.servers.2.sharedSecret=def6d444734d380d2f67a9d345b1debf985eaba0973c343e392c060d97c30106 call.ice.turn.servers.2.username= call.ice.turn.servers.2.password= diff --git a/VERSION.properties b/VERSION.properties index a8b6c74..ee18127 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.216 -server.version=1.2.204 +client.version=1.2.217 +server.version=1.2.205 diff --git a/shine-UI/js/services/call-service.js b/shine-UI/js/services/call-service.js index da018ff..7534b7e 100644 --- a/shine-UI/js/services/call-service.js +++ b/shine-UI/js/services/call-service.js @@ -1636,7 +1636,13 @@ export async function handleStopCallPush(payload = {}) { if (!callId) return; const call = getCall(callId); if (!call) return; + const fromSessionId = String(payload?.fromSessionId || '').trim(); const reason = String(payload?.reason || 'stop_call_push').trim() || 'stop_call_push'; + const currentSessionId = String(state?.session?.sessionId || '').trim(); + if (fromSessionId && currentSessionId && fromSessionId === currentSessionId) { + await emitDebug(call, 'info', 'stop_call_push_ignored_for_origin_session', reason); + return; + } await finalizeCall(call, { localReasonCode: call.connectedAtMs ? 'completed' : 'no_answer', debugReason: `stop_call_push:${reason}`,