< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

Re: [reSIProcate] generate a 183 with SDP on the server side


    sorry, I make a mistake. It will not throw an exception here.
    what happen after I call provideAnswer () method is that it will
not revise mProposedLocalSdp. So when I call provisional() later, the
SDP message will still not be appended.
as shown In ServerInviteSession.cxx,
ServerInviteSession::provideAnswer(const SdpContents& answer)
{
 .....................................
  case UAS_Offer:
         transition(UAS_OfferProvidedAnswer);
         mCurrentRemoteSdp = mProposedRemoteSdp;
         mCurrentLocalSdp = InviteSession::makeSdp(answer);
         break;
.......................................
}
we can see that the revised variables are mCurrentRemoteSdp and
mCurrentLocalSdp, not mProposedLocalSdp.


2005/11/8, Sasha Youkhananov <y_Sasha@xxxxxxxxxx>:
> I call provideAnswer (sdp) when I wish to accept an incoming call.
> I'm sure that session is not yet in connected state.
> My code looks like this:
>
> ....
>
> case TH_OP_ACCEPT_CALL:
> {
>        Data            *pCallID = reinterpret_cast <Data *>
> (Msg.wParam);
>                       ReSipAppDialog  *pDlg = g_DlgHash.GetDlg
> (*pCallID);
>
>        if (pDlg)
>      {
>        ServerInviteSession *pServInvSess = dynamic_cast
> <ServerInviteSession *> (pDlg->getInviteSession ().get ());
>
>            if (pServInvSess)
>            {
>                g_pSdpHelper->CompleteAnswer (); //* this is my sdp
>                        //* here session is not connected yet
>                  pServInvSess->provideAnswer (*g_pSdpHelper->Answer
> ());                                    pServInvSess->accept ();
>                }
>        }
>
>     delete pCallID;
> }
>
> ....
>
> I have no an exceptions for this code.
>
>
> -----Original Message-----
> From: resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx
> [mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
> frank zhao
> Sent: Tuesday, November 08, 2005 3:53 PM
> To: resiprocate-devel
> Subject: Re: [reSIProcate] generate a 183 with SDP on the server side
>
> Thanks for your suggestion, but when I call provideAnswer () method like
> this:
> ------------------------------------------------------
> mSis->provideAnswer (somesdp);
> mSis->provisional(183);
> -----------------------------------------------------
> an exception will throwed and a warning message will be printed like
> this:
>  "Can't provideAnswer when not in Connected state",
> which is located on InviteSession.cxx.
>
> It seems that provideAnswer() method can't not be called here.So what
> will I do?
>
> 2005/11/8, Sasha Youkhananov <y_Sasha@xxxxxxxxxx>:
> > I think you should write something like this:
> >
> > mSis->provideAnswer (place here pointer to your sdp);
> > mSis->provisional(183);
> >
> >
> > -----Original Message-----
> > From: resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx
> > [mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
> zhao
> > hongbin
> > Sent: Tuesday, November 08, 2005 3:28 PM
> > To: resiprocate-devel
> > Subject: [reSIProcate] generate a 183 with SDP on the server side
> >
> > How can I generate a 183 message with SDP on the server side, the
> > senario is as following:
> >
> >
> > Client                           Server
> >    F1:INVITE(offer)
> > |--------------------------------->|
> > |   F2:100 TRYING             |
> > |<---------------------------------|
> > |   F3:183 (answer)            |
> > |<---------------------------------|
> > |.............
> > |.............
> > |
> >
> > I use the following code(come from the basiccall.cxx) to do this.
> >
> ------------------------------------------------------------------------
> > ------------------
> > virtual void onOffer(InviteSessionHandle is, const SipMessage& msg,
> > const SdpContents& sdp)
> > {
> >     InfoLog( << name << ": InviteSession-onOffer(SDP)" );
> >     //ServerInviteSessionHandle mSis;
> >     mSis->provisional(183);
> > }
> >
> ------------------------------------------------------------------------
> > ------------------
> >   But the stack only send a 183 message without SDP. and I found the
> > following code in ServerInviteSession.cxx.
> > ------------------------------------------------------
> >  ServerInviteSession::sendProvisional(int code)
> > {
> >   mDialog.makeResponse(m1xx, mFirstRequest, code);
> >   if (mProposedLocalSdp.get()) // early media
> >   {
> >      setSdp(m1xx, *mProposedLocalSdp);
> >   }
> >   startRetransmit1xxTimer();
> >   mDialog.send(m1xx);
> > }
> > ------------------------------------------------------
> >    The above code indicate that I must set the mProposedLocalSdp
> > before I call the provisional() method.So I want to know how can I set
> > the variable to send a provisional message with SDP answer.Or is there
> > another way to realize it?
> >   Can anyone give me some suggestions?
> >
> > Thanks!!!
> > _______________________________________________
> > resiprocate-devel mailing list
> > resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> > https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
> >
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
>