void CHttpClientTransactionImpl::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
	{
    __ASSERT_DEBUG (iTransaction == aTransaction, User::Invariant());
    switch(aEvent.iStatus)
        {
        case THTTPEvent::EGotResponseHeaders:
            {
            // Parse the headers
            if(aTransaction.Response().GetHeaderCollection().iImplementation->ConvertAllHeadersToParsedFormat() != KErrNone)
                {
                iClientTrans.OnError(KErrCorrupt); // Change the error code.
                return;
                }
            iClientTrans.OnResponseHeaders();
            if(iDataReceiver)
                {
                iDataReceiver->SetDataSupplier(aTransaction.Response().Body());
                }
            }
        break;
        
        case THTTPEvent::EGotResponseBodyData:
            {
            iDataReceiver->DataAvailable();
            }
        break;
        
        case THTTPEvent::ERedirectedTemporarily:
        case THTTPEvent::ERedirectedPermanently:
             {
            if(!iClientTrans.OnRedirection())
                {  
                aTransaction.Cancel();
                }
              }
        break;
        case THTTPEvent::ERedirectRequiresConfirmation:
            {
            aTransaction.Cancel();
            if(iClientTrans.OnRedirection())
                {  
                aTransaction.Submit();
                }
            // Otherwise no need to do anything. Response will complete by itself
            }
        break;
        
        case THTTPEvent::EResponseComplete:
            // Do nothing
            break;
        
        case THTTPEvent::ESucceeded:
            {
            iClientTrans.OnCompletion();
            }
        break;
        
        case THTTPEvent::EFailed:
            {
            // Cancel the transaction. The failure would have been indicated to the
            // client already.
            iTransaction.Cancel();
            }
        break;

        case THTTPEvent::ESendTimeOut:
            {            
            }
            break;
            
        case THTTPEvent::EReceiveTimeOut:
            {
            iTransaction.Cancel();
            iClientTrans.OnError(KErrHttpResponseNotReceived);
            }
            break;
                   
        default:
            {
            iClientTrans.OnError(aEvent.iStatus);
            }
        break;
        }
	}