2017-11-09 6 views
3

複数のSIPアカウントを作成しようとしていますが、異なるサーバーで動作するはずですが、いずれかのサーバーが利用可能になると、私は簡単に異なるIPとSIP番号を持つアカウントを作成することができ、それは正常に動作しています。私は別のサーバーのIPアドレスと口座番号を作成するが、同じ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をシーケンシャルまたはパラレルに転送します。もしあなたが "サードパーティーの登録を一口"して、あなたが実装したいシナリオであるかどうかを確認することをお勧めします。 – 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

関連する問題