diff --git a/src/HDRPC.c b/src/HDRPC.c index 99a3712..884b438 100644 --- a/src/HDRPC.c +++ b/src/HDRPC.c @@ -132,11 +132,15 @@ static void Call(HDRPCSession *session, uint16_t exception) { continue; } - if (sInfo.localCallBuffer[i].nameLen != session->args[index].buffer.len) { + if (sInfo.localCallBuffer[i].funcCode != session->func) { continue; } - if (strncmp(sInfo.localCallBuffer[i].name, (char *)session->args[index].buffer.data, session->args[index].buffer.len) != 0) { + if (sInfo.localCallBuffer[i].nameLen != 0 && sInfo.localCallBuffer[i].nameLen != session->args[index].buffer.len) { + continue; + } + + if (sInfo.localCallBuffer[i].nameLen != 0 && strncmp(sInfo.localCallBuffer[i].name, (char *)session->args[index].buffer.data, session->args[index].buffer.len) != 0) { continue; } @@ -159,7 +163,7 @@ static void Call(HDRPCSession *session, uint16_t exception) { static HDRPCIndexId_t AddCall(HDRPCSession *session, HDRPCCallback callBack, const char *funcName, uint8_t nameLen, HDRPCTimeoutCall timeout) { HDRPCIndexId_t result = -1; - if (session == NULL || callBack == NULL || nameLen == 0) { + if (session == NULL || ((callBack == NULL || nameLen == 0) && timeout == NULL)) { LogD("funcName[%s], len[%d] add Faild", funcName, nameLen); return result; } @@ -755,11 +759,11 @@ HDRPCIndexId_t _HDRPCSendData(HDRPCSession *session, uint16_t funcCode, HDRPCCal } do { - if (nameLen == 0 || callBack == NULL) { + if ((nameLen == 0 || callBack == NULL) && timeout == NULL) { break; } - if (HDRPCAddUserData(session, (void *)funcName, nameLen) == 0) { + if (nameLen != 0 && HDRPCAddUserData(session, (void *)funcName, nameLen) == 0) { LogD("Add Call Data[%s] faild", funcName); break; }