SIP Error 412 Conditional Request Failed: сбой условных запросов
- Службы статусов доступности (BLF / Presence / Event State) возвращают
SIP/2.0 412 Conditional Request Failed. - Ошибки при отправке запросов
PUBLISHилиNOTIFY. - Индикаторы занятости линий (BLF) на IP-телефонах гаснут или светятся некорректным цветом.
1. Анализ заголовка SIP-If-Match в пакетах PUBLISH
sngrep -c "412 Conditional Request Failed"Ошибка 412 означает, что переданный в запросе SIP-If-Match ETag-токен не совпадает с текущим состоянием документа состояния (Presence Document) на сервере.
2. Сброс состояния Presence подписок в Asterisk
asterisk -rx "pjsip show subscriptions"
asterisk -rx "core reload"3. Конфигурация таймеров Event State в pjsip.conf
Убедитесь, что клиент своевременно обновляет подписку до истечения времени жизни ETag:
[endpoint_template](!)
type=endpoint
allow_subscribe=yes
sub_min_expiry=60
sub_max_expiry=3600 Частые вопросы (FAQ)
Что означает заголовок SIP-If-Match?
Это аналог HTTP If-Match (RFC 3903), предотвращающий перезапись состояния ресурса (Lost Update Problem), если другой клиент уже успел обновить статус линии или присутствия.
Как клиенту восстановиться после ошибки 412?
Клиент должен отбросить сохраненный локальный ETag и отправить новый начальный запрос PUBLISH без заголовка SIP-If-Match, чтобы получить свежий ETag от сервера.