1. 修复HDRPC在回调为NULL的情况下, 无法注册超时函数的问题
This commit is contained in:
parent
3fb9057dd9
commit
46601f7f8a
14
src/HDRPC.c
14
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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user