This is a forked call. These two dialogs should have
matching DialogSetId’s. How are you ending a session when you “disconnect”?
If you call InviteSessionHandle->end(), then only that session will be BYE’d.
Once one end of a forked call has been answered, the other session will be automatically
destroyed (onForkDestroyed) by DUM 32 seconds later, if the application does
not explicitly end() the session.
Scott
From:
resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxxx
[mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Nilay
Tripathi
Sent: Tuesday, January 02, 2007 1:12 AM
To: resiprocate-devel@xxxxxxxxxxxxxxxxxxxx;
resiprocate-devel@xxxxxxxxxxxxxxxxxxx
Subject: [reSIProcate] Multiple handles for same session
Hi,
Wishing all a very Happy New Year 2007 !!
So here it goes ... perhaps the first prob. for 2007 :)
The scenario:
I make a call to some peer UA (let's say A ). Now A is registered with Sipx
SIP Proxy and is available. On receiving Invite, it sends back 180 Ringing.
Now nobody picks up the call at A, so after some time Sipx Proxy takes
the chargs and sends a new 180 Ringing (the to-tag is different in this,
but the branch is same) followed by a 200 OK and the recorded message starts
(IVR).
The problem is that the new handle in onNewSession does not match with the
previously stored handle. But if I disconnect immediately, DUM sends two BYE
for each of the dialog. However, if I disconnect after some time (say a couple
of minutes), the previously stored handle is not valid at all, so I am not able
to close the call to proxy ... It seems I should store the newly received
handle for future actions, but what happens to the previous one, is it
destroyed automatically by DUM or not. If yes, how !! ... and if no, is it a
leak ??
Right now I refer DialogId to match handles, but is there something else which
I can refer through handle to match these two handles of same branch but
different Dialogs. This would save me storing a new handle for same session
everytime !!
Thanks,
Nilay
|