diff --git a/lib/liblynq-call/lynq_call.cpp b/lib/liblynq-call/lynq_call.cpp
index a72566c..6fb06f0 100755
--- a/lib/liblynq-call/lynq_call.cpp
+++ b/lib/liblynq-call/lynq_call.cpp
@@ -362,6 +362,7 @@
             {
                 if(call_list[i].call_state ==4)//LYNQ_CALL_INCOMING = 4,   /* MT call only */
                 {
+                    /*you call me, and i call you,One party failed to dial*/
                     if(!checkHasCall(call_list[i].addr))
                     {
                         lynqIncomingCallId = getUnusedElement();
@@ -369,6 +370,18 @@
                         sendSignalIncomingCall();
                     }
                 }
+                /*if state changed*/
+                else
+                {
+                    /*update call state*/
+                    for(int n = 0 ; n < LYNQ_CALL_MAX; n++)
+                    {
+                        if(strcmp(call_list[i].addr,lynq_call_lists[n].addr)==0)
+                        {
+                            updateCallList(&lynq_call_lists[n],call_list[i].call_id,call_list[i].call_state,call_list[i].toa,call_list[i].direction);
+                        }
+                    }
+                }
             }
             else
             {
@@ -698,7 +711,7 @@
     if(error==0)
     {
         isDial = 1;
-        if(waitCallstateChange(3000)==ETIMEDOUT)//3000ms
+        if(waitCallstateChange(6000)==ETIMEDOUT)//6000ms
         {
             error = LYNQ_E_TIME_OUT;
             LYERRLOG("timeout:wait Call state fail!!!");
@@ -874,8 +887,36 @@
     LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
     return error;
 }
+
+/**
+ * @brief Check whether DTMF is valid
+ * 
+ * @param callnum dtmf eg:0-9 * #
+ * @return int 
+ */
+static int judge_dtmf(const char callnum)
+{
+    if(callnum == '#')
+    {
+        return 1;
+    }
+    if(callnum == '*')
+    {
+        return 1;
+    }
+    if(callnum >= '0'&& callnum <= '9')
+    {
+        return 1;
+    }
+    return 0;
+}
+
 int lynq_set_DTMF(const char callnum)
 {
+    if(!judge_dtmf(callnum))
+    {
+        return LYNQ_E_CONFLICT;
+    }
     Parcel p;
     lynq_client_t client;
     int resp_type = -1;
