--- ./source/private_module/epl/epl_xnet.c	2018-04-22 07:50:17.000000000 +0000
+++ ./source/private_module/epl/epl_xnet.c.hotpatch	2019-07-12 02:13:52.000000000 +0000
@@ -1349,14 +1349,11 @@
     }
     return FALSE;
 }
-
 /**************************************************************************
 *     : һͬ¼ڵ㣬͵
 * : node:ͬڵ
-*
 * : 
-* ֵ  : RETURN_OK:ͳɹ
-*           !RETURN_OK:ʧ
+* ֵ  : RETURN_OK:ͳɹ !RETURN_OK:ʧ
 *     : 
 **************************************************************************/
 int32_t eplXnetHandleSyncNode(EPL_SYNC_CTRLS_S *node)
@@ -1365,7 +1362,6 @@
     int32_t index = 0;
     EPL_SYNC_CONTEXT_S *context = NULL;
 
-    /*bitmap¼ͬп*/
     for (index = 0; index < EPL_MAX_CTRL; index++)
     {
         if (!LVOS_test_bit(index, (void *)(&node->sendNid)))
@@ -1375,7 +1371,6 @@
         context = eplXnetNewContext();
         if (NULL == context)
         {
-            /*ͬʧøbitΪfail*/
             LVOS_set_bit(index, (void *)(&node->failNid));
             continue;
         }
@@ -1387,18 +1382,23 @@
         if (RETURN_OK != ret)
         {
             DBG_LogError(EPL_LOG_ID_0505, "EPL sync dev(%d:%d) to ctrl(%d) fail.",
-                        context->devId, context->opCode, context->ctrlId);
+                        context->devId, context->opCode, context->ctrlId);  
+            spin_lock(&node->lock);
             LVOS_set_bit(index, (void *)(&node->failNid));
             eplXnetFreeContext(context);
+            if ((node->failNid | node->rspNid) == node->sendNid)
+            {
+                spin_unlock(&node->lock);
+                eplXnetDiscardSyncNode(node, RETURN_ERROR);
+                return RETURN_OK;
+            }
+            spin_unlock(&node->lock);            
         }
     }
-
-    /*ֻҪ͵һɹˣظͳɹϢغ*/
     if (node->failNid != node->sendNid)
     {
         return RETURN_OK;
     }
-
     return RETURN_ERROR;
 }
 
