Sip Fehler während der Registrierung

8

Ich benutze native Methoden von SIP-Calling und es funktioniert gut, aber einige Zeit gibt es Registrierung Fehler IN_PROGRESS (Error-Code -9) .Ich habe in Sip-Fehlercodes suchen, aber finde keinen Fehlercode dieser Art. Hier ist mein Code für die SIP-Registrierung. Bitte sagen Sie mir, wenn jemand eine Idee über diesen Fehler haben, sagen Sie es mir bitte.

%Vor%     
Bansal_Sneha 13.12.2013, 09:57
quelle

1 Antwort

6

SIP ist ein transaktionsbasiertes Protokoll, dh jeder Verhandlungsprozess ist eine Transaktion (z. B. würde ein grundlegender Registrierungsprozess das Senden einer REISER-Anfrage und das Empfangen einer OK-Antwort von 200 beinhalten). Ich habe ein kleines Beispiel in dieser Antwort veröffentlicht.

Der Fehler IN_PROGRESS zeigt anfänglich an, dass Sie versucht haben, eine neue Transaktion zu starten. In Ihrem Szenario versuchen Sie, eine REGISTER-Anfrage zu senden, wenn sich der Client bereits in einer anderen Transaktion befindet.

Ein ziemlich typisches Szenario ist, dass bei einer schnellen Abmeldung / Anmeldung versucht wird, sich zu registrieren, wenn der Abmeldeprozess noch läuft (keine 200 OK endgültige Antwort wurde empfangen).

Das Hauptproblem in Bezug auf die SIP-Implementierung von Android und dieser Fehlercode ist, dass es verwendet wird, wenn ein generischer Fehler bei der Verarbeitung einer SIP-Anfrage fehlschlägt, so dass die vorherige Bedeutung ihre Bedeutung verliert.

Wegen des vorherigen Problems müssten Sie logcat überprüfen, um mehr Informationen zu erhalten (Sie sollten etwas wie "~~~~~ SipSessionGroup :: processing" sehen), aber die beste Methode, um damit umzugehen, würde mit anderen Listenern funktionieren durch den Stapel.

Der Stapel bietet zwei Listener, die Registrierungsfehler bekommen können: SipRegistrationListener und SipSession.Listener . Beide bieten onRegistrationFailed Callback, aber später auch onRegistrationTimeout , das kann sehr hilfreich sein. Eigentlich haben Sie bereits SipRegistrationListener in Ihrem Code verwendet, aber ich verstehe nicht wirklich, warum Sie sagen, dass es nach open gesetzt werden sollte, weil open versuchen würde, sich automatisch zu registrieren, und wenn ein Fehler auftritt, werden Sie nicht benachrichtigt .

Auf der anderen Seite besteht das Hauptproblem bei diesen Listenern darin, dass die Registrierung aus verschiedenen Gründen fehlschlagen kann (Sie können eine Liste verschiedener Fehlerantworten überprüfen hier ) und die aktuelle Implementierung benachrichtigt nur Fehlercodes & gt; = 500 (das sind Server- und globale Fehler), aber nicht andere wie ganz normale 406. Dies ist meiner Meinung nach ein wichtiger Fehler in diesem Stapel.

    
jcm 13.12.2013, 10:22
quelle

Tags und Links