Changes between Initial Version and Version 1 of Ticket #373, comment 27
- Timestamp:
- Nov 25, 2021, 7:59:25 PM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #373, comment 27
initial v1 3 3 Когда UAC получает ответ на INVITE, он, как было описано выше, проверяет флаг terminated, но не проверяет, был ли установлен диалог. Ранее я не учел, что когда в ответ на INVITE приходит "100 Trying", диалог еще не установлен. Однако в этом состоянии диалога eXosip_call_terminate() не возвращает ошибки, а возвращает 1 (то есть и не ошибку, и не успех). Последствия этого разные и непонятные: например CANCEL может просто не отправиться из платы. Или CANCEL (без To-tag) отправляется, но игнорируется принимаемой стороной (libeXosip не генерирует никакого события) и т.п. 4 4 5 Сейчас я доработал код так, чтобы eXosip_call_terminate() вызывался только при установленном диалоге (то есть если был получен ответ с кодом больше 100). В моих тестах проблема полностью ушла - после получения ответа "200 OK" вызывающая сторона передает BY S, и вызов корректно завершается с обеих сторон.5 Сейчас я доработал код так, чтобы eXosip_call_terminate() вызывался только при установленном диалоге (то есть если был получен ответ с кодом больше 100). В моих тестах проблема полностью ушла - после получения ответа "200 OK" вызывающая сторона передает BYE, и вызов корректно завершается с обеих сторон. 6 6 7 7 Остается непонятным, почему в логе не было записи "'terminated' flag set, calling eXosip_call_terminate", но это можно списать на известное нам "пропадание" строк в логе, которое так полностью и не было устранено...