[sip-comm-dev] codec change during call session


#1

Hi,

I'm trying to implement change of codec during a call.

Here is the scenario :

            INVITE sdpA1
A --------------------------------> B
          180 RINGING
A <-------------------------------- B
           200 OK sdpB1
A <-------------------------------- B
            ACK
A --------------------------------> B
            INVITE sdpA2
A --------------------------------> B
  
           200 OK sdpB2
A <-------------------------------- B
            ACK
A --------------------------------> B

The problem is that the 2nd 200 OK is not taken in charge by SipManager (I can't see any debugging messages in the shell -> no [entry/exit] ProcessResponse).
I check the packets by ethereal and all seems OK. And despite this fact, the 2nd ACK is well sent.

David


#2

hi David,

did you use the first Dialog to send you second request? That mean you use some things like this:
" dialog.sendRequest(inviteTransaction); " instead of " inviteTransaction.sendRequest(); " check the packets by ethereal if the Cseq of you second Invite ist greather than 1, if it is the case, you are sending a RE-INVITE and that is the reason why the ProcessInvite of SIpmanager doesn´t reply.
regards
Lyly

···

----- Original Message -----
  From: David Le Kim
  To: dev@sip-communicator.dev.java.net
  Cc: emil_ivov@yahoo.com
  Sent: Monday, January 17, 2005 11:01 AM
  Subject: [sip-comm-dev] codec change during call session

  Hi,

  I'm trying to implement change of codec during a call.

  Here is the scenario :

              INVITE sdpA1
  A --------------------------------> B
            180 RINGING
  A <-------------------------------- B
             200 OK sdpB1
  A <-------------------------------- B
              ACK
  A --------------------------------> B
              INVITE sdpA2
  A --------------------------------> B
    
             200 OK sdpB2
  A <-------------------------------- B
              ACK
  A --------------------------------> B

  The problem is that the 2nd 200 OK is not taken in charge by SipManager (I can't see any debugging messages in the shell -> no [entry/exit] ProcessResponse).
  I check the packets by ethereal and all seems OK. And despite this fact, the 2nd ACK is well sent.

  David


#3

Hi Lyly,

Thank you for you explanation. You were right, I'm using dialog.sendRequest(inviteTransaction); and the Cseq of my second Invite is 2. I implemented the Re-Invite process in SipManager. ReinviteProcess handle the 2nd Invite but how can I do to make it able to take my 2nd 200 OK in charge? I don't understand why it send back an ACK as it doesn't handle the 2nd 200 OK...

Regards,

David

···

----- Original Message -----
  From: Lyly Yonkwa
  To: dev@sip-communicator.dev.java.net
  Cc: emil_ivov@yahoo.com
  Sent: Monday, January 17, 2005 12:31 PM
  Subject: Re: [sip-comm-dev] codec change during call session

  hi David,

  did you use the first Dialog to send you second request? That mean you use some things like this:
   " dialog.sendRequest(inviteTransaction); " instead of " inviteTransaction.sendRequest(); " check the packets by ethereal if the Cseq of you second Invite ist greather than 1, if it is the case, you are sending a RE-INVITE and that is the reason why the ProcessInvite of SIpmanager doesn´t reply.
  regards
  Lyly
    ----- Original Message -----
    From: David Le Kim
    To: dev@sip-communicator.dev.java.net
    Cc: emil_ivov@yahoo.com
    Sent: Monday, January 17, 2005 11:01 AM
    Subject: [sip-comm-dev] codec change during call session

    Hi,

    I'm trying to implement change of codec during a call.

    Here is the scenario :

                INVITE sdpA1
    A --------------------------------> B
              180 RINGING
    A <-------------------------------- B
               200 OK sdpB1
    A <-------------------------------- B
                ACK
    A --------------------------------> B
                INVITE sdpA2
    A --------------------------------> B
      
               200 OK sdpB2
    A <-------------------------------- B
                ACK
    A --------------------------------> B

    The problem is that the 2nd 200 OK is not taken in charge by SipManager (I can't see any debugging messages in the shell -> no [entry/exit] ProcessResponse).
    I check the packets by ethereal and all seems OK. And despite this fact, the 2nd ACK is well sent.

    David


#4

hi David,
i don´t know if i really understand what you mean. as far as i understand you have to implement somethings like " processReInviteOK " if you want the SIPmanager to handle an OK comming from a ReINVITE differently. You also muss register your ProcessReinvite in the method ProcessResponse of the SIPManager. You have to introduce a Line like this in the SIPManager class:

else if (method.equals(Request.REINVITE)) {
                    callProcessing.processREInviteOK(clientTransaction, response);

in the ProcessReinvite you can now implement what you want thre SiPmanager to do if the 200 OK is coming from a REINVITE.
i hope this will help you.
Lyly

···

----- Original Message -----
  From: David Le Kim
  To: dev@sip-communicator.dev.java.net
  Sent: Monday, January 17, 2005 2:18 PM
  Subject: Re: [sip-comm-dev] codec change during call session

  Hi Lyly,

  Thank you for you explanation. You were right, I'm using dialog.sendRequest(inviteTransaction); and the Cseq of my second Invite is 2. I implemented the Re-Invite process in SipManager. ReinviteProcess handle the 2nd Invite but how can I do to make it able to take my 2nd 200 OK in charge? I don't understand why it send back an ACK as it doesn't handle the 2nd 200 OK...

  Regards,

  David
    ----- Original Message -----
    From: Lyly Yonkwa
    To: dev@sip-communicator.dev.java.net
    Cc: emil_ivov@yahoo.com
    Sent: Monday, January 17, 2005 12:31 PM
    Subject: Re: [sip-comm-dev] codec change during call session

    hi David,

    did you use the first Dialog to send you second request? That mean you use some things like this:
     " dialog.sendRequest(inviteTransaction); " instead of " inviteTransaction.sendRequest(); " check the packets by ethereal if the Cseq of you second Invite ist greather than 1, if it is the case, you are sending a RE-INVITE and that is the reason why the ProcessInvite of SIpmanager doesn´t reply.
    regards
    Lyly
      ----- Original Message -----
      From: David Le Kim
      To: dev@sip-communicator.dev.java.net
      Cc: emil_ivov@yahoo.com
      Sent: Monday, January 17, 2005 11:01 AM
      Subject: [sip-comm-dev] codec change during call session

      Hi,

      I'm trying to implement change of codec during a call.

      Here is the scenario :

                  INVITE sdpA1
      A --------------------------------> B
                180 RINGING
      A <-------------------------------- B
                 200 OK sdpB1
      A <-------------------------------- B
                  ACK
      A --------------------------------> B
                  INVITE sdpA2
      A --------------------------------> B
        
                 200 OK sdpB2
      A <-------------------------------- B
                  ACK
      A --------------------------------> B

      The problem is that the 2nd 200 OK is not taken in charge by SipManager (I can't see any debugging messages in the shell -> no [entry/exit] ProcessResponse).
      I check the packets by ethereal and all seems OK. And despite this fact, the 2nd ACK is well sent.

      David


#5

I have solved my problem. It comes from the Cseq of my 2nd 200 OK, it was Cseq : 1 INVITE instead of Cseq : 2 INVITE

I have another problem that you may help me :

When sending the 2nd INVITE, I close the streams with mediaManager.closestreams() for client A and B. I keep exactly the same source code for ProcessInviteOK and ProcessAck as the original one. But the new media session is not displayed (fireplayerStarting is not launched) but when checking with ethereal, there are video/audio flows between A and B. How can I display the new video stream?

Cheers,

David

···

----- Original Message -----
  From: Lyly Yonkwa
  To: dev@sip-communicator.dev.java.net
  Sent: Monday, January 17, 2005 3:17 PM
  Subject: Re: [sip-comm-dev] codec change during call session

  hi David,
  i don´t know if i really understand what you mean. as far as i understand you have to implement somethings like " processReInviteOK " if you want the SIPmanager to handle an OK comming from a ReINVITE differently. You also muss register your ProcessReinvite in the method ProcessResponse of the SIPManager. You have to introduce a Line like this in the SIPManager class:

   else if (method.equals(Request.REINVITE)) {
                      callProcessing.processREInviteOK(clientTransaction, response);

  in the ProcessReinvite you can now implement what you want thre SiPmanager to do if the 200 OK is coming from a REINVITE.
  i hope this will help you.
  Lyly
    ----- Original Message -----
    From: David Le Kim
    To: dev@sip-communicator.dev.java.net
    Sent: Monday, January 17, 2005 2:18 PM
    Subject: Re: [sip-comm-dev] codec change during call session

    Hi Lyly,

    Thank you for you explanation. You were right, I'm using dialog.sendRequest(inviteTransaction); and the Cseq of my second Invite is 2. I implemented the Re-Invite process in SipManager. ReinviteProcess handle the 2nd Invite but how can I do to make it able to take my 2nd 200 OK in charge? I don't understand why it send back an ACK as it doesn't handle the 2nd 200 OK...

    Regards,

    David
      ----- Original Message -----
      From: Lyly Yonkwa
      To: dev@sip-communicator.dev.java.net
      Cc: emil_ivov@yahoo.com
      Sent: Monday, January 17, 2005 12:31 PM
      Subject: Re: [sip-comm-dev] codec change during call session

      hi David,

      did you use the first Dialog to send you second request? That mean you use some things like this:
       " dialog.sendRequest(inviteTransaction); " instead of " inviteTransaction.sendRequest(); " check the packets by ethereal if the Cseq of you second Invite ist greather than 1, if it is the case, you are sending a RE-INVITE and that is the reason why the ProcessInvite of SIpmanager doesn´t reply.
      regards
      Lyly
        ----- Original Message -----
        From: David Le Kim
        To: dev@sip-communicator.dev.java.net
        Cc: emil_ivov@yahoo.com
        Sent: Monday, January 17, 2005 11:01 AM
        Subject: [sip-comm-dev] codec change during call session

        Hi,

        I'm trying to implement change of codec during a call.

        Here is the scenario :

                    INVITE sdpA1
        A --------------------------------> B
                  180 RINGING
        A <-------------------------------- B
                   200 OK sdpB1
        A <-------------------------------- B
                    ACK
        A --------------------------------> B
                    INVITE sdpA2
        A --------------------------------> B
          
                   200 OK sdpB2
        A <-------------------------------- B
                    ACK
        A --------------------------------> B

        The problem is that the 2nd 200 OK is not taken in charge by SipManager (I can't see any debugging messages in the shell -> no [entry/exit] ProcessResponse).
        I check the packets by ethereal and all seems OK. And despite this fact, the 2nd ACK is well sent.

        David