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