HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Redmine-4.x/redmine-4.2.9/files/180213112732_patch.diff
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/include/SubscriptionClient.h OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/include/SubscriptionClient.h
--- OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/include/SubscriptionClient.h	2018-02-12 10:03:34.968080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/include/SubscriptionClient.h	2018-02-13 10:46:57.451671154 +0900
@@ -81,7 +81,7 @@
 			OpcUa_StatusCode AddMonitoredItem(CMonitoredItemClient* pMonitoredItem);
 			OpcUa_StatusCode DeleteMonitoredItemById(OpcUa_UInt32 Id);
 			CMonitoredItemClient* FindMonitoredItemById(OpcUa_UInt32 Id);
-			CMonitoredItemClient* FindMonitoredItemByHandle(OpcUa_UInt32 uiClientHandle);
+			CMonitoredItemClient* FindMonitoredItemByHandle(OpcUa_UInt64 uiClientHandle);
 			OpcUa_StatusCode DeleteMonitoredItems(OpcUa_Boolean bForceRemove);
 			OpcUa_StatusCode DeleteMonitoredItems(CMonitoredItemClientList* pMonitoredItemList, OpcUa_Boolean bForceRemove);
 			OpcUa_StatusCode DeleteMonitoredItem(CMonitoredItemClient* pMonitoredItemClient);
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientApplication.cpp OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientApplication.cpp
--- OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientApplication.cpp	2018-02-13 14:33:08.454000000 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientApplication.cpp	2018-02-13 10:56:28.913000200 +0900
@@ -732,8 +732,10 @@
 		SetApplicationName(&(pLocalizedText));
 		// definition du nom du fichier de log
 		OpcUa_String strExtension;
+		OpcUa_String_Initialize(&strExtension);
 		OpcUa_String_AttachCopy(&strExtension,".log");
 		OpcUa_String FileName;
+		OpcUa_String_Initialize(&FileName);
 		OpcUa_String_StrnCpy(
 			&FileName,
 			&(pLocalizedText.Text),
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientSession.cpp OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientSession.cpp
--- OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientSession.cpp	2018-02-12 10:03:16.484080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/ClientSession.cpp	2018-02-13 10:49:17.664928288 +0900
@@ -2627,7 +2627,7 @@
 		CSubscriptionClient* pInternalSubscriptionClient = m_SubscriptionList.at(ii);
 		if (pInternalSubscriptionClient)
 		{
-			CMonitoredItemClient* pMonitoredItemClient = pInternalSubscriptionClient->FindMonitoredItemByHandle((OpcUa_UInt32)hMonitoredItem);
+			CMonitoredItemClient* pMonitoredItemClient = pInternalSubscriptionClient->FindMonitoredItemByHandle((OpcUa_UInt64)hMonitoredItem);
 			if (pMonitoredItemClient)
 			{
 				(*pSubscriptionClient) = pInternalSubscriptionClient;
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/OpenOpcUaClientLib.cpp OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/OpenOpcUaClientLib.cpp
--- OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/OpenOpcUaClientLib.cpp	2018-02-12 10:03:16.480080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/OpenOpcUaClientLib.cpp	2018-02-13 10:50:19.024695116 +0900
@@ -1360,7 +1360,7 @@
 						CMonitoredItemClientList* pMonitoredItemList = new CMonitoredItemClientList();
 						for (OpcUa_Int32 i = 0; i < iNoOfMonitoredItem; i++)
 						{
-							CMonitoredItemClient* pMonitoredItem = pSubscriptionClient->FindMonitoredItemByHandle((OpcUa_UInt32)hMonitoredItems[i]);
+							CMonitoredItemClient* pMonitoredItem = pSubscriptionClient->FindMonitoredItemByHandle((OpcUa_UInt64)hMonitoredItems[i]);
 							if (pMonitoredItem)
 								pMonitoredItemList->push_back(pMonitoredItem);
 						}
@@ -2091,7 +2091,7 @@
 				CSubscriptionClient* pSubscriptionClient = (CSubscriptionClient*)hSubscription;
 				if (pSubscriptionClient)
 				{
-					CMonitoredItemClient* pMonitoredItemClient = pSubscriptionClient->FindMonitoredItemByHandle((OpcUa_UInt32)hMonitoredItem);
+					CMonitoredItemClient* pMonitoredItemClient = pSubscriptionClient->FindMonitoredItemByHandle((OpcUa_UInt64)hMonitoredItem);
 					if (pMonitoredItemClient)
 					{
 						*pInternalNode=( OpenOpcUa_InternalNode*)OpcUa_Alloc(sizeof(OpenOpcUa_InternalNode));
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/SubscriptionClient.cpp OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/SubscriptionClient.cpp
--- OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/SubscriptionClient.cpp	2018-02-12 10:03:16.484080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/OpenOpcUaClientLib/source/SubscriptionClient.cpp	2018-02-13 10:48:32.926517644 +0900
@@ -371,8 +371,8 @@
 	OpcUa_ProxyStubConfiguration* pTraceConfiguration = pClientApplication->GetTraceConfiguration();
 	if (m_bMonitoredItemsNotificationThread)
 	{
-		OpcUa_Mutex_Lock(m_MonitoredItemsNotificationListMutex);
 		m_bMonitoredItemsNotificationThread = OpcUa_False;
+		//OpcUa_Mutex_Lock(m_MonitoredItemsNotificationListMutex);
 		OpcUa_Semaphore_Post(m_hMonitoredItemsNotificationSem, 1);
 		uStatus = OpcUa_Semaphore_TimedWait(m_hStopMonitoredItemsNotificationSem, OPC_TIMEOUT * 2); // 15 secondes max.
 		if (uStatus == OpcUa_GoodNonCriticalTimeout)
@@ -387,7 +387,7 @@
 			m_hMonitoredItemsNotificationThread = OpcUa_Null;
 			OpcUa_Trace(pTraceConfiguration,OPCUA_TRACE_CLIENT_LEVEL_ERROR, "MonitoredItemsNotificationThread stopped properly\n");
 		}
-		OpcUa_Mutex_Unlock(m_MonitoredItemsNotificationListMutex);
+		//OpcUa_Mutex_Unlock(m_MonitoredItemsNotificationListMutex);
 	}
 	return uStatus;
 }
@@ -815,7 +815,7 @@
 	return NULL;
 }
 
-CMonitoredItemClient* CSubscriptionClient::FindMonitoredItemByHandle(OpcUa_UInt32 uiClientHandle)
+CMonitoredItemClient* CSubscriptionClient::FindMonitoredItemByHandle(OpcUa_UInt64 uiClientHandle)
 {
 	CMonitoredItemClient* pMonitoredItemClient=OpcUa_Null;
 	for (OpcUa_UInt32 ii=0;ii<m_pMonitoredItemList->size();ii++)
@@ -1185,7 +1185,7 @@
 
 	if (m_pChannel)
 	{
-		CMonitoredItemClient* pMonitoredItem = FindMonitoredItemByHandle((OpcUa_UInt32)hMonitoredItems);
+		CMonitoredItemClient* pMonitoredItem = FindMonitoredItemByHandle((OpcUa_UInt64)hMonitoredItems);
 		if (pMonitoredItem)
 		{
 			OpcUa_TimestampsToReturn eTimestampsToReturn = (OpcUa_TimestampsToReturn)aTimestampsToReturn;
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/include/opcua/opcua_types.h OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/include/opcua/opcua_types.h
--- OpenOpcUa_1_0_5_3/OpenOpcUaClientSdk/include/opcua/opcua_types.h	2018-02-12 10:03:34.924080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaClientSdk/include/opcua/opcua_types.h	2018-02-13 10:47:58.083820948 +0900
@@ -5448,7 +5448,7 @@
  *===========================================================================*/
 typedef struct _OpcUa_MonitoredItemNotification
 {
-	OpcUa_UInt32    ClientHandle;
+	OpcUa_UInt64    ClientHandle;
 	OpcUa_DataValue Value;
 }
 OpcUa_MonitoredItemNotification;
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaCoreServer/include/UADataChangeNotification.h OpenOpcUa_1_0_5_3_modified/OpenOpcUaCoreServer/include/UADataChangeNotification.h
--- OpenOpcUa_1_0_5_3/OpenOpcUaCoreServer/include/UADataChangeNotification.h	2018-02-12 10:03:34.560080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaCoreServer/include/UADataChangeNotification.h	2018-02-13 10:47:43.064256705 +0900
@@ -85,7 +85,7 @@
 
 			OpcUa_UInt32 GetSequenceNumber();
 			void SetSequenceNumber(OpcUa_UInt32 uiSequenceNumber);
-			OpcUa_UInt32 GetClientHandle(); 
+			OpcUa_UInt64 GetClientHandle(); 
 			OpcUa_Boolean IsAcked();
 			void Acked();
 			void UnAcked();
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaCoreServer/source/UADataChangeNotification.cpp OpenOpcUa_1_0_5_3_modified/OpenOpcUaCoreServer/source/UADataChangeNotification.cpp
--- OpenOpcUa_1_0_5_3/OpenOpcUaCoreServer/source/UADataChangeNotification.cpp	2018-02-12 10:03:16.416080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaCoreServer/source/UADataChangeNotification.cpp	2018-02-13 10:48:02.837497743 +0900
@@ -439,9 +439,9 @@
 /// <returns>	The client handle. </returns>
 ///-------------------------------------------------------------------------------------------------
 
-OpcUa_UInt32 CUADataChangeNotification::GetClientHandle(void)
+OpcUa_UInt64 CUADataChangeNotification::GetClientHandle(void)
 {
-	OpcUa_UInt32 clientHandle=0;
+	OpcUa_UInt64 clientHandle=0;
 	if (m_UAMonitoredItemNotificationList.size() > 0)
 	{
 		OpcUa_MonitoredItemNotification* pMonitoredItemNotification = m_UAMonitoredItemNotificationList.at(0)->GetMonitoredItemNotification();
diff -x '*build*' -ur OpenOpcUa_1_0_5_3/OpenOpcUaStackV1/source/opcua_thread.c OpenOpcUa_1_0_5_3_modified/OpenOpcUaStackV1/source/opcua_thread.c
--- OpenOpcUa_1_0_5_3/OpenOpcUaStackV1/source/opcua_thread.c	2018-02-12 10:03:27.288080879 +0900
+++ OpenOpcUa_1_0_5_3_modified/OpenOpcUaStackV1/source/opcua_thread.c	2018-02-12 19:16:48.730137900 +0900
@@ -170,6 +170,19 @@
 		//if (pThread->IsRunning == OpcUa_False)
 		//	return;
 
+#if 1
+		/*
+		 * Try to wait for proper thread termination
+		 */
+		if (pThread->ShutdownEvent) {
+			OpcUa_StatusCode uStatus = OpcUa_Semaphore_TimedWait(pThread->ShutdownEvent, 10000);
+			if (uStatus != OpcUa_Good) {
+				OpcUa_Trace(OpcUa_ProxyStub_g_Configuration,OPCUA_TRACE_CLIENT_LEVEL_ERROR, 
+					"OpcUa_Thread_Delete: Error waiting for thread to terminate! [0x%08lx]\n", uStatus);
+			}
+		}
+#endif
+
 		if (pThread->ShutdownEvent)
 			OpcUa_Semaphore_Delete(&(pThread->ShutdownEvent));
 		// Explicitly stop the thread