[reSIProcate] Session handle lifecycle question

Robert Whitaker capnwhit at yahoo.com
Mon Oct 16 20:37:20 CDT 2006


Hello reSIProcate gurus,

I am replying to Bill's post, but please feel free to jump in the conversation below and help me understand this better...

Hello Bill, 

Regarding your original post, I do something very similar in my code and I am curious why your original code did not work for you... see my comments below. 

Bill Kovar wrote: 
>> but the handle is still valid and isTerminated() = true. 
>> 
As far as I know handle.isValid() should return "true" because the underlying pointer should still be valid... otherwise you would get a core dump (or a HandleException) if you try to use the handle. In other words, the following asserts should be valid inside "onTerminated":

void
SampleUserAgent::onTerminated(resip::InviteSessionHandle handle, ...)
{
  assert(handle.isValid());
  assert(handle->isTerminated()); // This will (may) coredump if previous "isValid" line returns false
  assert(handle.get()->isTerminated()); // This is the same as the previous line
}

Bill Kovar wrote: 
>> Is there somewhere ... I can look to find out if 
>> the session is no longer valid?
>>
I think you were looking in the right place, inside the "onTerminated" handler... in this case the *handle* will be valid but the *session* will be terminated... In other words, the *handle* is valid because the underlying pointer (kept by DUM) is still valid, but the *session* has been terminated (maybe because somebody hung up).

Bill Kovar wrote: 
>> I stash session handles within my call management logic 
>> and had hoped that I can remove them in onTerminated() 
>> 
QUESTION: I'm curious why you couldn't? I do something similar... I stash them into a map in the "onNewSession" handler and remove them inside the "onTerminated" handler... Please let me know why this didn't work for you...

Thanks!


----- Original Message ---- 
From: "Kovar, William (Bill)" <bkovar at avaya.com> 
To: resiprocate-devel at list.sipfoundry.org 
Sent: Friday, October 13, 2006 4:29:45 PM 
Subject: [reSIProcate] Session handle lifecycle question 


All, 

Is there a way to know when a session has been 'disconnected' from its handle, i.e. handle.isValid() == false other then to check for it?? 

I stash session handles within my call management logic and had hoped that I can remove them in onTerminated() but the handle is still valid and isTerminated() = true. Is there somewhere in the destructor of either AppDialog or AppDialogSet that I can look to find out if the session is no longer valid? This way I can clean my calls that this session is a part of. 

Thanks 

Bill Kovar 
_______________________________________________ 
resiprocate-devel mailing list 
resiprocate-devel at list.sipfoundry.org 
https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel






More information about the resiprocate-devel mailing list