I have written code as follows ( in my active class):

Code:
void MyActiveClass::RunL()
{
	if (iStatus.Int() == KErrNone) 
	{ 						
		if ( iCallStatus == RCall::EStatusIdle || 
				iCallStatus	== RCall::EStatusHangingUp ||
				iCallStatus == RCall::EStatusUnknown )		
		{ 			
			iCall.Close();	
			iLine.Close();	
			//does something
		}		
		else
		{
			iLine.NotifyStatusChange(iStatus, iCallStatus); 
			SetActive();		
		}		
	}
}
I use Dial(const TTelNumberC &aTelNumber) function to dial.
CMyActiveClass is run with EPriorityNormal priority.

There are two problems here:
1. When dial, if when the other party terminate the call, this event does not trap in my RunL function.
2. When dial , the other party phone ring estimate 20 second after that my app get panic (App.Close MyApp ViewSrv 11) and close.

- How to resolve these problems?
- Am I use the correct function?
- Should I use the Dial(TRequestStatus &aStatus, const TTelNumberC &aTelNumber) instead ?
- I hear the inherited active class should run in EPriorityIdle priority because if it runs in EPriorityStandard priority , it may conflict with the View. Is it correct?

Plese help me. Thanks a lot.