Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>SIP is a transaction based protocol, this means, every negotiation process is a transaction (e.g. a basic registration process would imply sending a REISTER request and receive 200 OK response). I posted a small example in <a href="https://stackoverflow.com/a/20443357/1419134">this</a> response.</p> <p>IN_PROGRESS error initially indicates that you tried to start a new transaction, in your scenario you're trying to send a REGISTER request, when client is already in another related one.</p> <p>A quite typical scenario is, in a fast logout/login, trying to register when unregistration process is still running (no 200 OK final response has been received).</p> <p>Main problem regarding Android's SIP implementation and this error code is that it's used when as generic error when processing a SIP request fails so, previous meaning loses its significance. </p> <p>Because of previous problem you would need to check logcat to get more information (you should see something like "~~~~~ SipSessionGroup:: processing ") but, best way to handle this, would be working with different listeners provided by the stack.</p> <p>The stack provides two listeners that can get registration errors: <a href="https://developer.android.com/reference/android/net/sip/SipRegistrationListener.html" rel="nofollow noreferrer">SipRegistrationListener</a> and <a href="https://developer.android.com/reference/android/net/sip/SipSession.Listener.html" rel="nofollow noreferrer">SipSession.Listener</a>. Both provides <a href="https://developer.android.com/reference/android/net/sip/SipRegistrationListener.html#onRegistrationFailed%28java.lang.String,%20int,%20java.lang.String%29" rel="nofollow noreferrer">onRegistrationFailed</a> callback but, later one, also provides <a href="https://developer.android.com/reference/android/net/sip/SipSession.Listener.html#onRegistrationTimeout%28android.net.sip.SipSession%29" rel="nofollow noreferrer">onRegistrationTimeout</a>, that can be quite helpful. Actually, you already used SipRegistrationListener in your code but I don't really get why you say that it should be set after <code>open</code> because <code>open</code> would try to automatically register and, if some error occurs, you won't be notified.</p> <p>On the other hand, main problem with this listeners is that registration can fail because of several reason (you can check a list of different error responses <a href="https://en.wikipedia.org/wiki/SIP_Responses#4xx.E2.80.94Client_Failure_Responses" rel="nofollow noreferrer">here</a>) and current implementation only notifies of error codes >= 500 (those are server and global failures) but not others like quite common 406. This is, in my opinion, an important bug in this stack. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload