2017-11-09 21 views
3

다른 서버에서 작동해야하는 여러 SIP 계정을 만들려고합니다. 단 하나의 서버 만 사용할 수있을 때 동시에 하나씩 사용해야합니다. 다른 IP 및 SIP 번호로 쉽게 계정을 만들 수 있으며 정상적으로 작동합니다. 그러나 경우에, 나는 다른 서버의 IP를 가진 계정 번호를 만들 경우 만 SAME SIP는이 오류와 함께 pjsip 충돌 계정 :Pjsua 2 안드로이드는 동일한 모금 수를 사용하지만 다른 IP 주소로 계정을 만듭니다.

A/DEBUG(200): Abort message: '../src/pj/os_core_unix.c:692: pj_thread_this: assertion "!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions."" failed' 

내가 pjsip에 새로운 오전 모두 SIP, 문제는 그것이 가능한 모든입니까 ??

+1

환경에서 SIP 프록시를 사용합니까? 그렇다면 SIP URI에 대해 여러 개의 연락처 (= 여러 끝점, 예 : "하드웨어"SIP 전화 및 Linphone과 같은 소프트웨어 SIP 전화)를 등록 할 수 있어야합니다. 도메인에 들어오는 SIP INVITE는 SIP 프록시로 라우팅되어야합니다. SIP 프록시의 구성에 따라 SIP INVITE를 순차 또는 병렬 방식으로 전달합니다. 만약 당신이 "제 3 자 등록을 한 모금"당신에게 제안하고 그게 구현하려는 시나리오인지 확인하십시오. – Moerwald

답변

1

이 크래시는 등록자가 아닌 스레드에서 PJSUA2를 호출했거나 개체가 수동으로 삭제되지 않고 등록되지 않은 스레드에서 GC가 정리 되었기 때문에 발생할 수 있습니다.

는 스레드가 등록되어 있는지 여부를 확인하려면 다음

libIsThreadRegistered() 

스레드를 등록하려면 :

libRegisterThread(const string &name) 

pjsua2 reference를 참조하십시오.

수동 문서에 따라 오브젝트를 파괴해야합니다 :

... application ‘’‘MUST immediately destroy PJSUA2 objects using object’s delete() 
method (in Java)’‘’, instead of relying on the GC to clean up the object 

그래서 당신은 예를 들어, PjSip이 개체를 수동으로 삭제해야합니다 :

account.delete(); 

See also합니다.

+0

그런 메소드 checkThread()가 있지만 도움이되지 않았습니다. –

+0

스레드가 등록되어 있고 충돌 한 코드가 등록 된 스레드에서 호출 된 경우 문제가 GC에있는 것보다 많습니다. – IvBaranov