atext/server/src/atextsession.cpp
changeset 24 b69e63ed1902
parent 21 5e5528a288fe
--- a/atext/server/src/atextsession.cpp	Fri May 14 16:59:23 2010 +0300
+++ b/atext/server/src/atextsession.cpp	Thu May 27 14:01:54 2010 +0300
@@ -199,6 +199,7 @@
 //
 CATExtSession::CATExtSession( CATExtSrv& aServer, const TVersion& aVersion ) :
     iServer( aServer ),
+    iEComSession( NULL ),
     iListener( NULL ),
     iMetadata( NULL ),
     iVersion( aVersion )
@@ -217,8 +218,7 @@
         TRACE_FUNC_EXIT
         User::Leave( KErrGeneral );
         }
-    REComSession& ecomSession = REComSession::OpenL();
-    CleanupClosePushL( ecomSession );
+    iEComSession = &REComSession::OpenL();
     TPckgBuf<TUid> ifUidPckgBuf;
     TInt retTemp = ReadStructFromMessage( ifUidPckgBuf,
                                           EATExtConnectParamUid,
@@ -239,10 +239,10 @@
         User::Leave( retTemp );
         }
     // Create listener
-    CATExtListen* listener = CATExtListen::NewLC( ecomSession, this );
+    CATExtListen* listener = CATExtListen::NewLC( *iEComSession, this );
     listener->AddInterfaceUid( ifUidPckgBuf() );
     // Create metadata. Pass iListener to add the UIDs
-    CATExtMetadata* metadata = CATExtMetadata::NewLC( ecomSession,
+    CATExtMetadata* metadata = CATExtMetadata::NewLC( *iEComSession,
                                                       listener,
                                                       *this );
     metadata->CreateImplementationMetadataL( ifUidPckgBuf(), connectionName );
@@ -250,8 +250,6 @@
     CleanupStack::Pop( metadata );
     CleanupStack::Pop( listener );
     CleanupStack::PopAndDestroy( &connectionName );
-    CleanupStack::Pop( &ecomSession );
-    iEComSession = ecomSession;
     iListener = listener;
     iMetadata = metadata;
     TRACE_FUNC_EXIT
@@ -897,7 +895,10 @@
     iListener = NULL;
     delete iMetadata;
     iMetadata = NULL;
-    iEComSession.Close();
+    if ( iEComSession )
+        {
+        iEComSession->Close();
+        }
     if ( !aSyncClose )
         {
         REComSession::FinalClose();