我正在使用PJSIP构建应用程序,特别是PJSUA组件。有时,如果在程序启动期间传入的INVITE到达,我将得到断言失败
../src/pjsua-lib/pjsua_acc.c:2777: pjsua_acc_find_for_incoming: Assertion `pjsua_var.acc_cnt!=0' failed.
pjsua_acc_find_for_incoming
函数从pjsua_call_on_incoming
无条件调用,在收到INVITE时从mod_pjsua_on_rx_request
调用。
问题出现是因为我使用pjsua_acc_add_local
,需要pjsua_transport_id
来自pjsua_transport_create
。因此,必须先创建传输,然后才能添加帐户。如果INVITE在中间时间到达,则会触发此断言。
答案 0 :(得分:1)
事实证明,我的问题是由于在使用pjsua_init
添加帐户之前调用了pjsua_start
和pjsua_acc_add_local
。通过切换初始化顺序,以便在pjsua_acc_add_local
之前调用pjsua_init
,可以避免此问题。如果PJSUA模块未运行,则在创建帐户之前不可能有INVITE到达。