Changes between Initial Version and Version 1 of Ticket #373, comment 27


Ignore:
Timestamp:
Nov 25, 2021, 7:59:25 PM (3 years ago)
Author:
alx

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #373, comment 27

    initial v1  
    33Когда UAC получает ответ на INVITE, он, как было описано выше, проверяет флаг terminated, но не проверяет, был ли установлен диалог. Ранее я не учел, что когда в ответ на INVITE приходит "100 Trying", диалог еще не установлен. Однако в этом состоянии диалога eXosip_call_terminate() не возвращает ошибки, а возвращает 1 (то есть и не ошибку, и не успех). Последствия этого разные и непонятные: например CANCEL может просто не отправиться из платы. Или CANCEL (без To-tag) отправляется, но игнорируется принимаемой стороной (libeXosip не генерирует никакого события) и т.п.
    44
    5 Сейчас я доработал код так, чтобы eXosip_call_terminate() вызывался только при установленном диалоге (то есть если был получен ответ с кодом больше 100). В моих тестах проблема полностью ушла - после получения ответа "200 OK" вызывающая сторона передает BYS, и вызов корректно завершается с обеих сторон.
     5Сейчас я доработал код так, чтобы eXosip_call_terminate() вызывался только при установленном диалоге (то есть если был получен ответ с кодом больше 100). В моих тестах проблема полностью ушла - после получения ответа "200 OK" вызывающая сторона передает BYE, и вызов корректно завершается с обеих сторон.
    66
    77Остается непонятным, почему в логе не было записи "'terminated' flag set, calling eXosip_call_terminate", но это можно списать на известное нам "пропадание" строк в логе, которое так полностью и не было устранено...