Hold в SDP: inactive и порт 0 обозначают разные состояния
Фотография конкретного исполнения не приложена.
Удержание разговора может менять направление медиапотока без завершения всего SIP-диалога. Для диагностики важно читать SDP с точки зрения стороны, которая его отправила. Sendonly у одного участника не означает, что другой тоже должен передавать звук.
RFC 3264 различает sendrecv, sendonly, recvonly и inactive. При отсутствии direction действует sendrecv. Inactive означает отсутствие передачи и приёма media в выбранный момент, но не равен отказу от самого потока. В описанной RTP-модели RTCP может продолжаться и при ограниченном направлении media.
Порт 0 имеет другой смысл: поток не используется, отклонён в answer или удаляется при изменении сеанса. Поэтому заменять любое удержание нулевым портом без понимания согласования нельзя. Возврат к разговору требует правильного обновления действующих параметров, а не только локального снятия mute.
В приёмке проверяют hold с обеих сторон, предусмотренное направление музыки и возврат звука. Сопоставляют offer/answer и реальные пакеты. Неизменившийся SIP dialog не подтверждает неизменный медиапуть. Отсутствие RTP во время согласованного inactive оценивается иначе, чем потеря RTP у активного sendrecv-потока.
Основание — Numbered IETF voice and NAT-traversal RFCs with selected RFC8863 ICE update; protocol scopes identified per task, разделы RFC3264 sendonly/recvonly/inactive; rejected streams; modifying streams. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — указанные номерные RFC о SIP, SDP, RTP и NAT traversal; рассматриваются конкретные границы поведения, а не полный современный профиль реализации или защиты. Реальные шлюзы, АТС, терминалы и медиапотоки не проверялись; вызовы и записи звука не выполнялись.