instrumentisto / medea

[Closed] Medea media server
Mozilla Public License 2.0
23 stars 3 forks source link

Kick Member instead of closing Room on internal errors (#27) #175

Closed alexlapa closed 3 years ago

alexlapa commented 3 years ago

Synopsis

На ранних этап развития проекта во многих непонятных ситуациях мы просто закрывали комнату. Тогда еще было не ясно как обрабатывать определенные некорректные ситуации, а, таким образом их было проще обнаруживать.

Постепенно таких моментов становилось все меньше, на данный момент осталось всего два.

Необходимо их убрать, и ввести правило, что, комната может закрываться только в двух случаях:

  1. По команде через Control API
  2. В случае завершения приложения.

Solution

Что за два места, которые нужно поправить:

  1. Отправка PeersRemoved Event'а. Просто убираем shutdown, все проблемы рассинхронов состояния в результате утерянных сообщений чинятся в #47.
  2. Ошибка обработки комманды. Эти ошибки на практике не происходят, следовательно, накручивать логику их обработки нецелесообразно, так как это потребует значительных временных ресурсов, а выхлоп стремится к нулю. Также, нельзя исключать возможность работы с модифицированным клиентом (например злоумышленно модифицированным). Простейшим выходом из этой ситуации будет отключение клиента. Клиент будет отключен с CloseReason::InternalError, в CallbackEvent'е будет значится причина "Kicked".

Checklist

alexlapa commented 3 years ago

FCM:

Kick Member instead of closing Room on internal errors (#175, #27)

Additionally:
- update Cargo deps