Opened 4 years ago
Closed 4 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 , 4 years ago
comment:16 by , 4 years ago
Виртуальные абоненты в правке не нуждаются, так как даже без проверки успешности localAnswer() они перейдут в исходное то таймауту или после завершения воспроизведения голосового анонса.
comment:17 by , 4 years ago
| Resolution: | → готово | 
|---|---|
| Status: | new → closed | 
r1976: eсли при ответе канального окончания в localAnswer() не смогли послать "200 OK" в сеть IP,
то дескриптор соединения не отмечаем отвеченным и не запускаем таймер соединения.
Думаю, это все, что следовало исправить по данной проблеме.


In 1960/sip_ua: