[reSIProcate] DUM: Cancelling client session in initial state
kaiduan xie
kaiduanx at yahoo.ca
Fri Dec 17 11:53:32 CST 2004
Dmitry,
I thought the reason was:
In DialogUsageManager::send()
if (msg.header(h_RequestLine).method() != CANCEL &&
msg.header(h_RequestLine).method() != ACK &&
msg.exists(h_Vias))
{
msg.header(h_Vias).front().param(p_branch).reset();
^^^^^^^
}
For example, if the initial DUM created INVITE's
branch is BranchA, after this function, the branch is
changed to BranchB and passed to transaction layer. In
transaction layer, the transaction ID is BranchB. But
for CANCEL message created in DUM, the branch is still
BranchA. So transaction layer cannot find the
corresponding INVITE transaciton!!!
Can anyone explain why the branch parameter is reset
here? Thanks,
kaiduan
--- Dmitry Semyonov <dsemyonov at dins.ru> wrote:
> On Fri, 5 Nov 2004, Dmitry Semyonov wrote:
>
> > DUM does not send CANCEL request when I call end()
> method of
> > ClientInviteSessionHandle. Also note the empty
> Contact AOR of the
> > scheduled CANCEL request. I use r3433 based
> reSIProcate, and
> > process(fdset).
> [...]
>
> Well the described behavior was caused by using
> SipMessage instance
> instead of reference to it:
>
> < SipMessage is_msg =
> m_pDum->makeInviteSession( dstAor, FromAddr,
> ---
> > // Warning! Using SipMessage instead of
> SipMessage& here will result
> > // in wrong transaction Id!
> > SipMessage &is_msg =
> m_pDum->makeInviteSession( dstAor, FromAddr,
>
> --
> ...Bye..Dmitry.
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at list.sipfoundry.org
>
https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
>
______________________________________________________________________
Post your free ad now! http://personals.yahoo.ca
More information about the resiprocate-devel
mailing list