From 46601f7f8a0cd8a859485b06458ff0cc6af0babd Mon Sep 17 00:00:00 2001 From: coffee Date: Thu, 28 May 2026 14:39:03 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E5=A4=8DHDRPC=E5=9C=A8=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E4=B8=BANULL=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B,=20?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=B3=A8=E5=86=8C=E8=B6=85=E6=97=B6=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/HDRPC.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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; }