localconnectivityservice/dun/atext/src/DunAtCmdPusher.cpp
branchRCL_3
changeset 38 3dcb815346df
parent 23 27dcfaab8b5b
--- a/localconnectivityservice/dun/atext/src/DunAtCmdPusher.cpp	Thu Jul 15 19:38:28 2010 +0300
+++ b/localconnectivityservice/dun/atext/src/DunAtCmdPusher.cpp	Thu Aug 19 10:46:39 2010 +0300
@@ -103,19 +103,24 @@
 // Starts AT command handling
 // ---------------------------------------------------------------------------
 //
-TInt CDunAtCmdPusher::IssueRequest( TDesC8& aCommand, TBool aNormalMode )
+TInt CDunAtCmdPusher::IssueRequest( TDesC8& aInput, TBool aNormalMode )
     {
     FTRACE(FPrint( _L("CDunAtCmdPusher::IssueRequest()") ));
     FTRACE(FPrint( _L("CDunAtCmdPusher::IssueRequest() send ATEXT:") ));
-    FTRACE(FPrintRaw(aCommand) );
+    FTRACE(FPrintRaw(aInput) );
     if ( iAtPushState!=EDunStateIdle && aNormalMode )
         {
         FTRACE(FPrint( _L("CDunAtCmdPusher::IssueRequest() (not ready) complete") ));
         return KErrNotReady;
         }
+    if ( iDownstream->IsDataInQueue(&iRecvBuffer) )
+        {
+        FTRACE(FPrint( _L("CDunAtCmdPusher::IssueRequest() (in queue!) complete") ));
+        return KErrGeneral;
+        }
     iStatus = KRequestPending;
     iAtCmdExt->HandleCommand( iStatus,
-                              aCommand,
+                              aInput,
                               iRecvBuffer,
                               iReplyLeftPckg,
                               iReplyTypePckg );
@@ -132,6 +137,7 @@
 TInt CDunAtCmdPusher::Stop()
     {
     FTRACE(FPrint( _L("CDunAtCmdPusher::Stop()") ));
+    SetEndOfCmdLine();
     if ( iAtPushState != EDunStateAtCmdPushing )
         {
         FTRACE(FPrint( _L("CDunAtCmdHandler::Stop() (not ready) complete" )));
@@ -142,7 +148,6 @@
     // idle eventually), cancel the actual operation in DoCancel()
     Cancel();
     iAtPushState = EDunStateIdle;
-    SetEndOfCmdLine();
     FTRACE(FPrint( _L("CDunAtCmdPusher::Stop() complete") ));
     return KErrNone;
     }
@@ -480,8 +485,9 @@
     // First check if error or stop condition detected
     if ( iReplyType==EReplyTypeError || iStop )
         {
+        SetEndOfCmdLine();
+        iAtPushState = EDunStateIdle;
         iCallback->NotifyEndOfCmdLineProcessing();
-        iAtPushState = EDunStateIdle;
         FTRACE(FPrint( _L("CDunAtCmdPusher::NotifyDataPushComplete() (error reply) complete") ));
         return;
         }