Hi All,
I am working on a sip application. Things are going fine but at one senario
CSIP* CSIP::NewL ( const TUid & aUid, MSIPObserver & aObserver) crashes.
The senario is :-
first time
CSip is created.
CSIPConnection is created.
after some time i get connection state change callback from SIP Stack.
MSIPConnectionObserver::ConnectionStateChanged() gets called and shows the state of connection as
EInactive(4). (For reference, see all connection state)
//
// enum TState {
// EInit = 1,EActive,ESuspended, EInactive, EUnavailable }
When i get connection state EInactive i delete
CSIPConnection
CSip
in the above mentioned sequence. Deleting these pointer is the design requirement of our application.
then after some time i try to Create CSIP again by calling CSIP::NEWL(); Here it crashes. It is a crash not leave and it is persistent in the above mentioned senario.
The above mentioned sequence works fine in case of GPRS EActive and ESuspended connection state change senario, when ConnectionStateChanged() is called with connection state 2 and 3. So the sequence is fine. But when connection state EInactive comes i delete CSIP pointer and after sometime i try to recreate CSIP::NEWL(), it crashes.
When i restart the application after the crash, it works fine. No crash at all.
My assumption is the problem is :-
Nokia SIP stack delete some pointer when EInactive connections state is reported and when i try to recreate CSIP it tries to use delete pointer(or resources).
This is because SIP Stack know the App Uid of the client when the client calls CSIP first time, and it might maintains
some resource for the client till the process exits. (that is why if exit when EInactive comes and restart the application it works fine but if i try to recreate CSIP it fails.)
Nokia Expert Pls have a look at it.
Regards,
Yasir



