diff --git a/core/bus_center/ipc/include/lnn_bus_center_ipc.h b/core/bus_center/ipc/include/lnn_bus_center_ipc.h index 31e3a5a44a0ca6e2ee8977cb38160724946e7b73..e0e60b1b7a12da2a3f0da8283a9b1878ac3ad29b 100644 --- a/core/bus_center/ipc/include/lnn_bus_center_ipc.h +++ b/core/bus_center/ipc/include/lnn_bus_center_ipc.h @@ -36,7 +36,7 @@ int32_t LnnIpcGetNodeKeyInfo(const char *pkgName, const char *networkId, int key int32_t LnnIpcSetNodeDataChangeFlag(const char *pkgName, const char *networkId, uint16_t dataChangeFlag); int32_t LnnIpcGetNodeKeyInfoLen(int32_t key); int32_t LnnIpcStartTimeSync(const char *pkgName, const char *targetNetworkId, int32_t accuracy, int32_t period); -int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId); +int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId, int32_t callingPid); int32_t LnnIpcPublishLNN(const char *pkgName, const PublishInfo *info); int32_t LnnIpcStopPublishLNN(const char *pkgName, int32_t publishId); int32_t LnnIpcRefreshLNN(const char *pkgName, const SubscribeInfo *info); diff --git a/core/bus_center/ipc/mini/lnn_bus_center_ipc.c b/core/bus_center/ipc/mini/lnn_bus_center_ipc.c index c121467662cdde99800de51997d0073e62c64a69..c4e27376c5f3d324288fa058a4f4da3a89c97a94 100644 --- a/core/bus_center/ipc/mini/lnn_bus_center_ipc.c +++ b/core/bus_center/ipc/mini/lnn_bus_center_ipc.c @@ -94,9 +94,9 @@ int32_t LnnIpcStartTimeSync(const char *pkgName, const char *targetNetworkId, in return LnnStartTimeSync(pkgName, targetNetworkId, (TimeSyncAccuracy)accuracy, (TimeSyncPeriod)period); } -int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId) +int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId, int32_t callingPid) { - return LnnStopTimeSync(pkgName, targetNetworkId); + return LnnStopTimeSync(pkgName, targetNetworkId, callingPid); } int32_t LnnIpcPublishLNN(const char *pkgName, const PublishInfo *info) diff --git a/core/bus_center/ipc/small/src/lnn_bus_center_ipc.c b/core/bus_center/ipc/small/src/lnn_bus_center_ipc.c index 093dd3499089eb47cf135eb11176c1acf9bf7327..94f086eb6bbb8b253205b54e6b5b19aa004062bd 100644 --- a/core/bus_center/ipc/small/src/lnn_bus_center_ipc.c +++ b/core/bus_center/ipc/small/src/lnn_bus_center_ipc.c @@ -290,9 +290,9 @@ int32_t LnnIpcStartTimeSync(const char *pkgName, const char *targetNetworkId, in return LnnStartTimeSync(pkgName, targetNetworkId, (TimeSyncAccuracy)accuracy, (TimeSyncPeriod)period); } -int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId) +int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId, int32_t callingPid) { - return LnnStopTimeSync(pkgName, targetNetworkId); + return LnnStopTimeSync(pkgName, targetNetworkId, callingPid); } int32_t LnnIpcPublishLNN(const char *pkgName, const PublishInfo *info) diff --git a/core/bus_center/ipc/standard/src/lnn_bus_center_ipc.cpp b/core/bus_center/ipc/standard/src/lnn_bus_center_ipc.cpp index dee178e0bb213a2b1ff09973ec8ccc143c9c69b9..88f4d4d2b8ce67ccbef70200982ff9d289442c32 100644 --- a/core/bus_center/ipc/standard/src/lnn_bus_center_ipc.cpp +++ b/core/bus_center/ipc/standard/src/lnn_bus_center_ipc.cpp @@ -304,9 +304,9 @@ int32_t LnnIpcStartTimeSync(const char *pkgName, const char *targetNetworkId, in return LnnStartTimeSync(pkgName, targetNetworkId, (TimeSyncAccuracy)accuracy, (TimeSyncPeriod)period); } -int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId) +int32_t LnnIpcStopTimeSync(const char *pkgName, const char *targetNetworkId, int32_t callingPid) { - return LnnStopTimeSync(pkgName, targetNetworkId); + return LnnStopTimeSync(pkgName, targetNetworkId, callingPid); } int32_t LnnIpcPublishLNN(const char *pkgName, const PublishInfo *info) diff --git a/core/bus_center/lnn/lane_hub/time_sync/include/lnn_time_sync_manager.h b/core/bus_center/lnn/lane_hub/time_sync/include/lnn_time_sync_manager.h index a0bc811dbc821c6b4ff7a5e7c0b43fe8b55c9711..6ac9db2ef083fe6858ebcdf79c419799dd9c8438 100644 --- a/core/bus_center/lnn/lane_hub/time_sync/include/lnn_time_sync_manager.h +++ b/core/bus_center/lnn/lane_hub/time_sync/include/lnn_time_sync_manager.h @@ -25,7 +25,7 @@ extern "C" { int32_t LnnStartTimeSync(const char *pkgName, const char *targetNetworkId, TimeSyncAccuracy accuracy, TimeSyncPeriod period); -int32_t LnnStopTimeSync(const char *pkgName, const char *targetNetworkId); +int32_t LnnStopTimeSync(const char *pkgName, const char *targetNetworkId, int32_t callingPid); int32_t LnnInitTimeSync(void); void LnnDeinitTimeSync(void); diff --git a/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager.c b/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager.c index f0b47a03b9b3edde18e05bca1703edf7cf53da0d..092797d797710d9e1f60e3e12b5c824201d19ece 100644 --- a/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager.c +++ b/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager.c @@ -39,6 +39,7 @@ typedef enum { typedef struct { ListNode node; char pkgName[PKG_NAME_SIZE_MAX]; + int32_t pid; TimeSyncAccuracy accuracy; TimeSyncPeriod period; } StartTimeSyncReq; @@ -61,12 +62,14 @@ typedef struct { typedef struct { char pkgName[PKG_NAME_SIZE_MAX]; + int32_t pid; char targetNetworkId[NETWORK_ID_BUF_LEN]; TimeSyncAccuracy accuracy; TimeSyncPeriod period; } StartTimeSyncReqMsgPara; typedef struct { + int32_t pid; char pkgName[PKG_NAME_SIZE_MAX]; char targetNetworkId[NETWORK_ID_BUF_LEN]; } StopTimeSyncReqMsgPara; @@ -165,12 +168,12 @@ static int32_t TryUpdateStartTimeSyncReq(TimeSyncReqInfo *info, const StartTimeS return SOFTBUS_OK; } -static void RemoveStartTimeSyncReq(const TimeSyncReqInfo *info, const char *pkgName) +static void RemoveStartTimeSyncReq(const TimeSyncReqInfo *info, const char *pkgName, int32_t callingPid) { StartTimeSyncReq *item = NULL; LIST_FOR_EACH_ENTRY(item, &info->startReqList, StartTimeSyncReq, node) { - if (strcmp(pkgName, item->pkgName) != 0) { + if (strcmp(pkgName, item->pkgName) != 0 || item->pid != callingPid) { continue; } ListDelete(&item->node); @@ -224,7 +227,7 @@ static int32_t ProcessStartTimeSyncRequest(const StartTimeSyncReqMsgPara *para) if (LnnStartTimeSyncImpl(existInfo->targetNetworkId, existInfo->curAccuracy, existInfo->curPeriod, &g_timeSyncImplCb) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "start time sync fail"); - RemoveStartTimeSyncReq(existInfo, para->pkgName); + RemoveStartTimeSyncReq(existInfo, para->pkgName, para->pid); break; } } @@ -290,7 +293,7 @@ static int32_t ProcessStopTimeSyncRequest(const StopTimeSyncReqMsgPara *para) SoftBusFree((void *)para); return SOFTBUS_ERR; } - RemoveStartTimeSyncReq(info, para->pkgName); + RemoveStartTimeSyncReq(info, para->pkgName, para->pid); TryUpdateTimeSyncReq(info); SoftBusFree((void *)para); return SOFTBUS_OK; @@ -332,7 +335,7 @@ static void RemoveAllStartTimeSyncReq(TimeSyncReqInfo *info) StartTimeSyncReq *startTimeSyncNextItem = NULL; LIST_FOR_EACH_ENTRY_SAFE(startTimeSyncItem, startTimeSyncNextItem, &info->startReqList, StartTimeSyncReq, node) { - RemoveStartTimeSyncReq(info, startTimeSyncItem->pkgName); + RemoveStartTimeSyncReq(info, startTimeSyncItem->pkgName, startTimeSyncItem->pid); } (void)LnnStopTimeSyncImpl(info->targetNetworkId); ListDelete(&info->node); @@ -526,7 +529,7 @@ int32_t LnnStartTimeSync(const char *pkgName, const char *targetNetworkId, return SOFTBUS_OK; } -int32_t LnnStopTimeSync(const char *pkgName, const char *targetNetworkId) +int32_t LnnStopTimeSync(const char *pkgName, const char *targetNetworkId, int32_t callingPid) { StopTimeSyncReqMsgPara *para = NULL; @@ -543,6 +546,7 @@ int32_t LnnStopTimeSync(const char *pkgName, const char *targetNetworkId) SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "malloc stop time sync request msg para fail"); return SOFTBUS_MALLOC_ERR; } + para->pid = callingPid; if (strncpy_s(para->pkgName, PKG_NAME_SIZE_MAX, pkgName, strlen(pkgName)) != EOK || strncpy_s(para->targetNetworkId, NETWORK_ID_BUF_LEN, targetNetworkId, strlen(targetNetworkId)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy time sync request info fail"); diff --git a/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager_virtual.c b/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager_virtual.c index efd851fb5f0049131a92f829ec60e7cdec71f8ba..2708802dd683fa84d4fbd6bc52c08d9bd41fe535 100644 --- a/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager_virtual.c +++ b/core/bus_center/lnn/lane_hub/time_sync/src/lnn_time_sync_manager_virtual.c @@ -28,10 +28,11 @@ int32_t LnnStartTimeSync(const char *pkgName, const char *targetNetworkId, return SOFTBUS_NOT_IMPLEMENT; } -int32_t LnnStopTimeSync(const char *pkgName, const char *targetNetworkId) +int32_t LnnStopTimeSync(const char *pkgName, const char *targetNetworkId, int32_t callingPid) { (void)pkgName; (void)targetNetworkId; + (void)callingPid; return SOFTBUS_NOT_IMPLEMENT; } diff --git a/core/frame/small/init/src/bus_center_server_stub.c b/core/frame/small/init/src/bus_center_server_stub.c index f7ef191a40283004295bb9d47a19449c64e70a1e..198d46f2c81359ac7234f8de14125d7f2f264961 100644 --- a/core/frame/small/init/src/bus_center_server_stub.c +++ b/core/frame/small/init/src/bus_center_server_stub.c @@ -286,7 +286,7 @@ int32_t ServerStopTimeSync(IpcIo *req, IpcIo *reply) SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "ServerStopTimeSync no permission."); return SOFTBUS_PERMISSION_DENIED; } - int32_t ret = LnnIpcStopTimeSync(pkgName, targetNetworkId); + int32_t ret = LnnIpcStopTimeSync(pkgName, targetNetworkId, 0); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "ServerStopTimeSync start time sync failed."); return SOFTBUS_ERR; diff --git a/core/frame/standard/init/src/softbus_server.cpp b/core/frame/standard/init/src/softbus_server.cpp index a26e76fc66a447a8405ef566f11f4d9cc5f6f3c2..065a95e5bd7ef048491b133c73a827eed2ec68b1 100644 --- a/core/frame/standard/init/src/softbus_server.cpp +++ b/core/frame/standard/init/src/softbus_server.cpp @@ -222,7 +222,8 @@ int32_t SoftBusServer::StartTimeSync(const char *pkgName, const char *targetNetw int32_t SoftBusServer::StopTimeSync(const char *pkgName, const char *targetNetworkId) { - return LnnIpcStopTimeSync(pkgName, targetNetworkId); + pid_t callingPid = OHOS::IPCSkeleton::GetCallingPid(); + return LnnIpcStopTimeSync(pkgName, targetNetworkId, callingPid); } int32_t SoftBusServer::QosReport(int32_t channelId, int32_t chanType, int32_t appType, int32_t quality) diff --git a/sdk/bus_center/ipc/mini/bus_center_server_proxy.c b/sdk/bus_center/ipc/mini/bus_center_server_proxy.c index 5b499fcfe88e65afc013951f4bba94d720745028..a826682e50d4a323833e326716c03be7461c6667 100644 --- a/sdk/bus_center/ipc/mini/bus_center_server_proxy.c +++ b/sdk/bus_center/ipc/mini/bus_center_server_proxy.c @@ -87,7 +87,7 @@ int32_t ServerIpcStartTimeSync(const char *pkgName, const char *targetNetworkId, int32_t ServerIpcStopTimeSync(const char *pkgName, const char *targetNetworkId) { - return LnnIpcStopTimeSync(pkgName, targetNetworkId); + return LnnIpcStopTimeSync(pkgName, targetNetworkId, 0); } int32_t ServerIpcPublishLNN(const char *pkgName, const PublishInfo *info)