|
@@ -148,6 +148,8 @@ static void
|
|
|
Operation_CreateMonitoredItem(UA_Server *server, UA_Session *session, struct createMonContext *cmc,
|
|
|
const UA_MonitoredItemCreateRequest *request,
|
|
|
UA_MonitoredItemCreateResult *result) {
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
+
|
|
|
/* Check available capacity */
|
|
|
if(cmc->sub &&
|
|
|
(((server->config.maxMonitoredItems != 0) &&
|
|
@@ -278,6 +280,7 @@ Service_CreateMonitoredItems(UA_Server *server, UA_Session *session,
|
|
|
const UA_CreateMonitoredItemsRequest *request,
|
|
|
UA_CreateMonitoredItemsResponse *response) {
|
|
|
UA_LOG_DEBUG_SESSION(&server->config.logger, session, "Processing CreateMonitoredItemsRequest");
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
|
|
|
if(server->config.maxMonitoredItemsPerCall != 0 &&
|
|
|
request->itemsToCreateSize > server->config.maxMonitoredItemsPerCall) {
|
|
@@ -303,6 +306,8 @@ Service_CreateMonitoredItems(UA_Server *server, UA_Session *session,
|
|
|
/* Reset the subscription lifetime */
|
|
|
cmc.sub->currentLifetimeCount = 0;
|
|
|
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
+
|
|
|
response->responseHeader.serviceResult =
|
|
|
UA_Server_processServiceOperations(server, session, (UA_ServiceOperation)Operation_CreateMonitoredItem, &cmc,
|
|
|
&request->itemsToCreateSize, &UA_TYPES[UA_TYPES_MONITOREDITEMCREATEREQUEST],
|
|
@@ -369,6 +374,7 @@ Service_ModifyMonitoredItems(UA_Server *server, UA_Session *session,
|
|
|
const UA_ModifyMonitoredItemsRequest *request,
|
|
|
UA_ModifyMonitoredItemsResponse *response) {
|
|
|
UA_LOG_DEBUG_SESSION(&server->config.logger, session, "Processing ModifyMonitoredItemsRequest");
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
|
|
|
if(server->config.maxMonitoredItemsPerCall != 0 &&
|
|
|
request->itemsToModifySize > server->config.maxMonitoredItemsPerCall) {
|
|
@@ -391,6 +397,8 @@ Service_ModifyMonitoredItems(UA_Server *server, UA_Session *session,
|
|
|
|
|
|
sub->currentLifetimeCount = 0; /* Reset the subscription lifetime */
|
|
|
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
+
|
|
|
response->responseHeader.serviceResult =
|
|
|
UA_Server_processServiceOperations(server, session,
|
|
|
(UA_ServiceOperation)Operation_ModifyMonitoredItem, sub,
|
|
@@ -485,6 +493,7 @@ Service_SetMonitoringMode(UA_Server *server, UA_Session *session,
|
|
|
const UA_SetMonitoringModeRequest *request,
|
|
|
UA_SetMonitoringModeResponse *response) {
|
|
|
UA_LOG_DEBUG_SESSION(&server->config.logger, session, "Processing SetMonitoringMode");
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
|
|
|
if(server->config.maxMonitoredItemsPerCall != 0 &&
|
|
|
request->monitoredItemIdsSize > server->config.maxMonitoredItemsPerCall) {
|
|
@@ -500,6 +509,8 @@ Service_SetMonitoringMode(UA_Server *server, UA_Session *session,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
+
|
|
|
smc.sub->currentLifetimeCount = 0; /* Reset the subscription lifetime */
|
|
|
|
|
|
smc.monitoringMode = request->monitoringMode;
|
|
@@ -522,6 +533,7 @@ Service_DeleteMonitoredItems(UA_Server *server, UA_Session *session,
|
|
|
UA_DeleteMonitoredItemsResponse *response) {
|
|
|
UA_LOG_DEBUG_SESSION(&server->config.logger, session,
|
|
|
"Processing DeleteMonitoredItemsRequest");
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
|
|
|
if(server->config.maxMonitoredItemsPerCall != 0 &&
|
|
|
request->monitoredItemIdsSize > server->config.maxMonitoredItemsPerCall) {
|
|
@@ -536,6 +548,8 @@ Service_DeleteMonitoredItems(UA_Server *server, UA_Session *session,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ UA_LOCK_ASSERT(server->serviceMutex, 1);
|
|
|
+
|
|
|
/* Reset the subscription lifetime */
|
|
|
sub->currentLifetimeCount = 0;
|
|
|
|