localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp
changeset 31 a26669f87b46
parent 29 3ae5cb0b4c02
child 37 d9d8313203af
--- a/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp	Fri Jun 25 16:54:01 2010 +0800
+++ b/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp	Fri Jul 09 17:58:21 2010 +0800
@@ -1413,9 +1413,25 @@
         {
         iDecodeInfo.iExtendedIndex = aEndIndex;
         SaveFoundCharDecodeState( aCharacter );
-        FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (no border) complete") ));
+        FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (no border normal) complete") ));
         return EFalse;
         }
+    // Now suspect border found so peek the next character after the suspected
+    // extended character. If it is not alphabetical character, return with EFalse.
+    // This case is to detect the cases such as "AT+VTS={*,3000}", where '*' would
+    // be the start of the next command in normal cases.
+    TInt peekIndex = aEndIndex + 1;
+    TInt lineLength = iLineBuffer.Length();
+    if ( peekIndex < lineLength )
+        {
+        TChar nextCharacter = iLineBuffer[peekIndex];
+        if ( !nextCharacter.IsAlpha() )
+            {
+            SaveFoundCharDecodeState( aCharacter );
+            FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (no border special) complete") ));
+            return EFalse;
+            }
+        }
     aEndIndex--;
     FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (border) complete") ));
     return ETrue;