Opened 3 years ago
Closed 3 years ago
#379 closed баг (готово)
Проверять успешность ответа в сторону сети IP
Reported by: | alx | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 1 очередь |
Component: | any | Keywords: | |
Cc: |
Description
Обнаружена возможность ситуации, когда канальное окончание пытается передать ответ "200 OK" в ответ на входящий INVITE, но из-за того что перед этим был принят CANCEL, отправка ответа заканчивается неудачей. Однако успешность отправки не проверяется, в результате чего происходит рассинхранизация состояний местного и удаленного канальных окончаний: местное думает, что соединение установлено и находится в состоянии Connected
, а удаленное выполнило отмену вызова и вернулось в исходное. Примером такого окончания является FXO, выполняющее ответ вызовом localAnswer().
Предлагается пройтись по коду канальных окончаний и добавить необходимые проверки успешности. В случае неуспешной отправки ответа отбивать соединение и переходить в исходное.
Change History (17)
comment:1 by , 3 years ago
comment:16 by , 3 years ago
Виртуальные абоненты в правке не нуждаются, так как даже без проверки успешности localAnswer() они перейдут в исходное то таймауту или после завершения воспроизведения голосового анонса.
comment:17 by , 3 years ago
Resolution: | → готово |
---|---|
Status: | new → closed |
r1976: eсли при ответе канального окончания в localAnswer() не смогли послать "200 OK" в сеть IP,
то дескриптор соединения не отмечаем отвеченным и не запускаем таймер соединения.
Думаю, это все, что следовало исправить по данной проблеме.
In 1960/sip_ua: