******************************************************************************** ******************************************************************************** ** ** ** Version 2.6.1.422 ** ** ** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes auto-exchange of lds certificate. Exchanging the lds certificate threw an exception. So manual putting of the application instance certficate to the trusted store of the lds was required. Now the auto-exchange is working again. Fixes HttpsTransportChannel. The DtdProcessing was not set to Prohibit for XmlReader when reading soap messages. This could be used for dos attacks if the server had an open https endpoint. Now DtdProcessing is set to Prohibit to avoid these attacks. Fixes using list of bytes as byte array. If a list of Byte was used as argument for Variant.SetByteArray, the Variant could not be encoded by BinaryEncoder or XmlEncoder. Now using a list of Byte for calling SetByteArray works. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes setting configuration in code. If the configuration of a server application was set in code and the ServerSettings have not been set, the server did not start because a NullPointerException was thrown on startup. The server can start now without setting ServerSettings. Fixes ConditionRefresh. When ConditionRefresh was called the current alarms got new event ids. Therefore other clients could not Acknowledge or Confirm the alarm because they did not know the new EventId of the alarm. Now ConditionRefresh does reuse the old EventId. Update base addressspace. Some bugfixes have been applied to the NodeSet for namespace 0 by OPC foundation. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Send at least one PublishRequest. There is a logic in the client to reduce the number of outstanding PublishRequests if the server returns BadTooManyPublishRequests. If the server sent too many PublishResponses with StatusCode BadTooMamyPublishes because the server was in an invalid state, the client did not send any PublishRepsonses. Now the client sends at least one PubluishRequest event if the server returns BadTooManyPublishRequests for each PublishRequest. Fixes timeout for Subscription.Delete. The OperationTimeout has not been evaluated for Subscription.Delete. As a result Subscription.Delete did not return if the connection to the server was broken. Now the timeout is evaluated correctly. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.6.0.418 ** ** ** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Update DataType classes to OPC UA specification 1.04. Update addressspece to OPC UA specification 1.04. Add SetByteArray to Variant. It is possible now to set an array of Byte to a Variant without an implicit cast to ByteString. ------------------------ Bug Fixes ------------------------ Fixes comparison of SubjectName. If a SubjectName of a CertificateGroup was specified with '/' as delimiter, the comparison failed even if the elements have been equal. The comparison has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Update model classes to OPC UA specification 1.04. Support of AccessLevelEx attribute. It is possible to set the attribute AccessLevelEx in code and by XML import. The bit WriteFullArrayOnly is evaluated by the SDK when an in-memory node is read. Support of DataTypeDefinition attribute. The attribute DataTypeDefinition can be set when a DataType node is created by XML import, by the SchemaBuilder and by calling CreateDataTypeNode. ------------------------ Bug Fixes ------------------------ No ModellingRules for instances. If instances have been created in code, the children of the instances got references to ModellingRule nodes. This behavior is allowed by the OPC UA specification but these referenced are unneeded since clients shall not evaluate them. The references to the ModellingRule nodes are not created for instances now. Fix for UserToken exploit. Add check for additional padding in the encrypted user token format. If there is an additional padding the connection is refused with StatusCode BadIdentityTokenInvalid. Add configuration option AllowDeprecatedPolicies. If a server has configured at least one of the deprecated security policies, the server will not start except AllowDeprecatedPolicies is set to 'true'. Check length of encrypted password. A check for the length of the encrypted password was added to make sure that the password is sent in only one chunk. Fixes setting boolean attributes. If a node with an attribute with DataType Boolean (e.g. IsAbstrct) was created in code, the attribute always had the value 'false'. Now the specified value is used for the attribute. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Add ReconnectTimeout. The setting ReconnectTimeout was added to specify the timeout for the whole reconnect operation including re-creating Subscriptions and MonitoredItems. Add ReconnectCreateSubscriptionDelay. Add setting ReconnectCreateSubscriptionDelay to specify a delay between a completed recreation of the Session and the recreation of Subscriptions and MonitoredItems. This setting can be used if clients connect to servers that can be connected after a restart before the whole addressspace is available. Call UntrustedCertificate when connecting with UserName. If a client tries to connect with UserName and Password to a server, the server certificate get evaluated. If the certificate has not been trusted yet, the EventHandler UntrustedCertificate is called. This can protect a client from sending its password in an insecure way. Set the default SecurityPolicy of UserTokens to Basic256Sha256. ------------------------ Bug Fixes ------------------------ Fix timeout on EndGetEndpoints. If Discovery.EndGetEndpoints was called in the callback that was passed to Discovery.BeginGetEndpoints, the operation always timed out because of a bug in the ThreadPool initialization. The ThreadPool is initialized correctly now and EndGetEndpoints can work without a timeout. Handle leak when calling FindServers. There was a handle leak when calling FindServers with a bad DiscoveryUrl. The handle leak has been fixed. Fixes exception when certificate at UserToken is null. If the type of the UserToken was set to certificate but the certificate was not set, a NullPointerException was thrown. Now a more meaningful StatusException is thrown. No evaluation of UserAccessLevel and UserExecutable. The attributes UserAccessLevel and UserExecutable could be set by setters or when a node was created in code or by loading an XML file. These attributes have been evaluated. However it does not make sense to set user specific attributes globally. Now the attributes are only calculated using the UserManagement. Fixes recreation of subscription. If the connection to a server has been interupted during the reconnect action, it was possible that a subscription was not recreated at all. Now the sdk tries to recreate subscriptions at each reconnect attempt. ConnectionStatus after Disconnect. If there was a Session with ConnnectionStatus Connected and AutomaticReconnect set to false, the ConnectionStatus changed to LicenseExpired instead of Disconnected after a shutdown of the server. Now the ConnectionStatus changes to Disconnected. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.8.410 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Use of FIPS compliant algorithms. The security methods of the SDK used some methods of the .NET framework that are not FIPS compliant. As a result connections with security and loading the UnifiedAutomation license have not been possible, if "Use FIPS compliant algorithms" was enabled in Local Group Editor of the Windows machine. Now FIPS compliant methods are used. Note: The FIPS compliance of some methods is depending on the OS and the .NET framework. So it is not possible to connect to an endpoint with security profiles Basic256Sha256 when running Windows XP or when running with .NET framework 3.5 when FIPS compliance in enabled. Additional traces when AddProcessLicenses is called. ------------------------ Bug Fixes ------------------------ Saving thumbprint of sdk. If an ApplicationInstanceCertificate was created by the SDK without calling the MissingApplicationCertificate EventHandler, the thumbprint of the certificate was not saved in the configuration file. The thumbprint is saved now. Fixes replacing SubjectName in EndpointSettings. If a configured EndpointSetting had an ApplicationCertificateSubjectName configured containing the string "localhost", this string had not been replaced by the hostname. So a certificate could not be loaded for the configured endpoint, if the EndpointConfiguration specified a certficate with localhost in its SubjectName. "localhost" is replaced by the hostname now. Fixes adding ApplicationInstanceCertificate to WindowsStore. If an ApplicationInstanceCertificate was created by the SDK and stored in the windows certificate store, the new certificate could not be used by the SDK, because it was not added correctly to the store. The certificate is added correctly now. Fixes adding trace listeners. The list of trace listeners had been cleared on ApplicationInstance.Start. If a custom trace listener was added before ApplicationInstance.Start has been called, the custom TraceListener did not receive any trace events after ApplicationInstace.Start. The custom trace listeners are not cleared now. Fixes comparing SubjectName. The compare method SubjectNames always returned 'true' if one of the SubjectNames was null or empty. As a result a wrong ApplicationInstanceCertificate could be found by the SDK, if an X509Certificate with an empty SubjectName was located in the certificate store for the own certificate. If this was the case an exception was thrown by the SDK. The compare method has been fixed. Fixes calling MissingApplicationCertificate EventHandler. The MissingApplicationCertificate EventHandler was only called if ApplicationInstance.AutoCreateCertificate was set to 'true'. Now the EventHandler is always called if no ApplicationCertificate could be found. Call ConfigurationChanged EventHandler on install. If the application configuration changes during ApplicationInstance.Install, e.g. by creating a certificate or by setting an opc tcp port number, the ConfigurationChanged EventHandler was not called. The EventHandler is called now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes potential crash on ServerManager.Stop. There was a race condition when calling ServerManager.Stop with SecondsTillShutdown > 0. As a result of this race condition a NullPointer exception could be thrown. An additional lock has been added to avoid this exception. Return ApplicationDescription in CreateSessionResponse. The ApplicationDescription was not returned in CreateSessionResponse to the client. The ApplicationDescription is returned now. Update EndpointSettings if server is started with '/opctcpport'. If a server application had EndpointSettings configured in its application settings and was started with the commandline argument '/opctcpport' the configured Endpoint was not updated. As a result this configuration setting was not updated and got ignored. The setting gets updated now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Dispose timer in Subscription. If a Session had a Subscription and the Session got into another ConnectionStatus than 'Connected', because the server was not available, and the client called Session.Disconnect, the WatchDog timer of the Subscription was not disposed. As a result a memory leak occured. The WatchDog timer gets disposed when calling Session.Disconnect even if the Session is currently not connected. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.7.406 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes saving configuration. If an application used an external file (not app.config) for loading its configuration, saving the application configuration could create an invalid XML file. This has been fixed. Fixes ApplicationThreadPool.Queue. ApplicationThreadPool.Queue did not block if the Queue was full. As a result requests may got overwritten in the RingBuffer and request may got lost. This could only happen if requests are pushed to the AplicationThreadPool by the application. ApplicationThreadPool.Queue blocks now if the queue is full. Evaluate AvailableServerProfiles. The configured value of AvailableServerProfiles ServerSettings has been ignored when setting the application configuration. The AvailableServerProfiles are set now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Add CreateNodeId method. Add a virtual method to take influence on the NodeIds of the children of an instance that the BaseNodeManager created when calling CreateNode. Add AfterNodesDeleted and BeforeNodesDeleted. Analog to BaseNodeManager.AfterNodesAdded and BaseNodeManager.BeforeNodesAdded the methods BaseNodeManager.AfterNodesDeleted and BaseNodeManager.BeforeNodesDeleted have been added. Add PermissionType.None. The PermissionType enumeration has been updated by a value for no permission. ------------------------ Bug Fixes ------------------------ Set value of DiagnosticsEnabled property to 'true'. Fixes BrowseName of EventQueueOverflowCount. There was a typo in EventQueueOverflowCount variable. The BrowseName is correct now. Fixes exception on ServerManager.Stop. There was a race condition when calling ServerManager.Stop with SecondsTillShutdown > 0. As a result of this race condition a NullPointer exception could be thrown. An additional lock has been added to avoid this exception. First value in bound not returned. If a server added the access to historical data by implementing the toolkit method CreateHistoryContinuationPoint, the first value in the bound was not returned. The correct historical values are returned now. Fixes last value in bound. If a server added the access to historical data by implementing the toolkit method CreateHistoryContinuationPoint, and a client called HistoryRead where the EndTime is before the StartTime and a historical value exits exaclty at the EndTime, the server returned this value even if ReturnBounds was set to false. The last value is returned correctly now. Fixes ModellingRule of method arguments. If a method was created using BaseNodeManager.CreateMethod, the specified method arguments never got ModellingRules. As a consequence the method arguments did not get created when creating instance of a type, if the method was created with CreateMethod. Now the method arguments get the ModellingRule Mandatory if the ModellingRule of the method is not null. Fixes events with optional fields with DataType DateTime. If an event had an event field with DataType DateTime and ValueRank -1 and a client selected this event field in an EventMonitoredItem, an exception was thrown when firing the event. As a consequence the whole event was not reported to the client. The event is sent to the client now. Fixes optional event fields. If an AlarmType had optional children and LinkModelToNode was called for this AlarmType, LinkModelToNode created values for the optional children if null in the model. As a consequence the server sent event fields with a default value if a client selected an optional event field which was originally null. Now the a null value is sent for optional event fields that are not set. Fixes writing of structured DataTypes with InternalClient. Values of variables with structured DataTypes could not be written with InternalClient. Structured DataTypes can be written with InternalClient now. Fixes deleting references in DeleteNode. If DeleteNode was called with argument deleteTargetReferences = 'true', the reference was not removed from the target node but the BaseNodeManager tried to remove the reference from the source node twice. As a consequence AfterReferenceDeleted was called twice. The reference is removed from the target node as well now. Fixes TranslateBrowsePaths method for InternalClient. If the Permissions of a Node are set to have no Browse access by a default user, the value of a child node of the node could not be set by InternalClient using the method WriteValue(context, nodeId, componentName, valueToWrite), because the InternalClient called HasAccess before browsing the child with the name componentName. The value can be written by the InternalClient now. Fixes evaluating of MaxOperationsPerRequest. If the RequestSettings configured MaxOperationsPerRequest, the sdk splitted the request to chunks of size MaxOperationsPerRequest + 1. Now the chunks have the size MaxOperationsPerRequest. Fixes NodeIdType of XML encoding node. If structured DataTypes are added to the server at runtime with the SchemaBuilder and the NodeIdType of the XML encoding node was not Numeric, the NodeIdType of this node was not set. As a result an exception was thrown when a the structured DataType while adding the DataType. The NodeIdType of the XML encoding node is set correctly now. Fixes return code of revoked certificates. If a certificate was revoked, the server returned the StatusCodes BadCertificateIssuerRevoked or BadCertificateRevoked. Now BadCertificateChecksFailed is returned. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ CacheManager.FindDataTypeId did not set the parent of the cache item correctly. If CacheManager.FindDataTypeId was called for an encoding node, the parent of the cache item was set to the cache item itself instead of the cache item of the DataType node. Now the parent of the cache item for the encoding node is set to the cache item of the DataType node. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.6.402 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fix / Feature ------------------------ OPC UA events require a unique EventId for every event and time stamp settings in the event fields Time and ReceiveTime. This includes events generated for state changes of condition and alarm objects. The SDK uses the EventId also to filter duplicated events reported through two parallel paths through an EventNotifier hierarchy. If the application is not setting the EventId, the resulting event is not OPC UA compliant and sending several events in a short time without an EventId set leads to loss of events generated by the server. To detect such invalid events, the method BaseNodeManager::ReportEvent() is now checking if the EventId is set and throws an exception if the EventId or the Time is null. In addition a new overload for BaseEventModel::CreateEvent() was added that provides a flag that forces automatic generation of EventId, Time and ReceiveTime by the SDK. This makes sure that every event has valid and unique settings for these fields. The original BaseEventModel::CreateEvent() is marked as Obsolete to give SDK users an indication to check the behavior of the event generation code. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Sample code ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ The current sample code was not setting EventId, Time and ReceiveTime for the alarm sample code. This is now done by using the new auto generate flag of BaseEventModel::CreateEvent(). ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.5.400 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes parsing DefaultNodeAccessInfo. The DefaultNodeAccessInfo model extension of a NodeSet XML file could not be parsed. Now this extension is parsed and loaded correctly. Fixes TcpListener. If a server ran at Windows XP with IPv6 enabled, a client could not connect to the server because of a problem in TcpListener. Now this issue is fixed and clients can connect. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes StatusCode for GetMonitoredItems. If GetMonitoredItems was called with a SubscriptionId that belonged to another session, the returned StatusCode was BadUserAccessDenied instead of BadSubscriptionIdInvalid. The returned StatusCode is correct now. Implement template constructor in Model classes. The template constructor of the Model classes created an instance of the Model with default values. The properties of the template have been ignored. The properties of the template are used for the new instance now. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.4.397 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Additional traces when the Opc.Ua.CertificateGenerator.exe is called. Avoid reading of DTD. If an XML element contained a link to a Documentation Type Definition (DTD), the DTD was loaded implicitly. If the DTD was a very large file, the RAM usage of the application grew. External DTDs are not loaded implicitly now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Checks session limits. The configured session limits are evaluated now. Implements ConditionRefresh2. ------------------------ Bug Fixes ------------------------ Fixes InternalClientFullDataMonitoredItem. A NullPointer exception occured if InternalClientFullDataMonitoredItem has been used in ServerInternalClient. This has been fixed. Fixes locking of tcp server channel. In a very rare case asynchronous calls within the server-side communication stack could not be completed because of wrong locking of tcp server channel. As a result the server created very much threads. The locking has been fixed. Fixes super type of CreateVariableTypeSettings. The super type of CreateVariableTypeSettings has been CreateInstanceSettings instead of CreateTypeSettings. The super type is CreateTypeSettings now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Adds Recreated EventHandler. An EventHandler is added that informs about a recreated subscription. It reports about the MonitoredItems that could not be mapped, the MonitoredItems that could not be recreated, and the links that could not be established again. ------------------------ Bug Fixes ------------------------ Checks shutdown state. The variable SecondsTillShutdown has always been evaluated in watchdog read. If a server incorrectly set a value greater than zero to this variable without setting the value of the variable State to Shutdown, the session changed its own state to ShutdownInProgress. The value of SecondsTillShutdown is evaluated only if the value of state is Shutdown now. Maps namespaces of MonitoredItems after reconnect. If a subscription had to be recreated after a connection break, the namespace indeces of the MonitoredItems have not been mapped. As a result MonitoredItems could not be created if a server changed its NamespaceArray after a restart. The namespace indeces are mapped if a subscription is recreated now. Fixes watchdog mechanism. The watchdog mechanism did not work correctly if a client application was very busy. In some rare cases, the timers of the operation system are very imprecise. This could be the reason for an unexpected change of the session state. The watchdog mechanism works correctly now even if the client application is very busy. Fixes evaluating of AutomaticReconnect. The AutomaticReconnect setting has not been evaluated correctly. In some situations reconnect loops have been started when the server has not been available although AutomaticReconnect has been set to 'false'. The setting is evaluated correctly now. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.3.389 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Adds new StatusCodes The StatusCodes BadLicenseExpired, BadLicenseLimitsExceeded, and BadLicenseNotAvailable have been added. These StatusCodes are defined by the OPC Foundation. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes setting SemanticsChanged and StructureChanged bit. If a DataValue with a StatusCode having the SemanticsChanged or StructureChanged bit set was pushed to a MonitoredItem, these bits have been lost in case of a queue overflow. The StatusCode of a DataValue is checked now before it is dequeued. If the SemanticsChanged or StructureChanged bit is set, this information is set to the next item in the queue. Fixes order of NotificationMessages. If more than one NotificationMessage has been sent in one publish cycle, the order of the NotificationMessages could be wrong. Now it is made sure that the NotificationMessages are sent in the correct order. Fixes access rights of Session diagnostics information. The values of SessionDiagnosticsSummary and SessionSecurityDiagnosticsSummary contained the information about the current Session only if a client read the value as anonymous user. But if these Variables have been subscribed, the DataChanges contained infomation about all Sessions. This behavior has been reworked. If SessionDiagnosticsSummary is read or monitored, information about all Sessions is returned. If SessionSecurityDiagnosticsSummary is read or monitored, information about all Sessions is returned for users that are authenticated as administrator and have a secure connection. Other users do not have access to this node. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Overload for CreateMonitoredItems. An overload CreateMonitoredItems has been added that can specify the TimestampsToReturn. ------------------------ Bug Fixes ------------------------ Fixes sending of PublishRequests. If the server returned BadTooManyPublishRequests in a PublishResponse, the client sent too many PublishRequests again if a new Subscription has been created. The calculation of PublishRequests to send is updated. If BadTooManyPublishRequests has been returned by the server, the client sends not more than one new PublishRequest per new Subscription. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.2.385 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes StatusCode for InverseName attribute. If the Symmetric attribute of a ReferenceType has been 'false' and the InverseName attribute has been empty, a null LocalizedText has been returned when reading the InverseName of the ReferenceType instead of BadAttributeIdInvalid. Now BadAttributeIdInvalid is returned. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ TransferSubscriptions. Methods for transferring subscriptions are added. These methods can be used to attach an existing subscription to a session. ------------------------ Bug Fixes ------------------------ Fixes memory leak for Discovery. There has been a memory leak produced by the class Discovery. The class Discovery implements the interface IDisposable now. Calling the method Dispose for the instance of Discovery fixes the memory leak. Fixes connection interrupts after system time update. If the system time has been updated by a time interval that is longer than the configured WatchDogTime while a client application has been connected to a server, the Session got into an error state. The Session does not get into an error state after the system time is changed now. Call SetTriggering in Subscription.Reactivate. Subscription.Reactivate did not call SetTriggering for MonitoredItems that have been used for calling SetTriggering before. As a result, the established links have been lost after Subscription.Recreate, e.g. if a subscription was recreated after a server restart. SetTriggering is called now. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.1.380 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes in ThreadPool implementation. A bug in the ThreadPool implementation could cause a memory leak on client side. Especially new Sessions and service calls for a large number of nodes could cause a memory leak. The ThreadPool implementation is fixed now. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.5.0.378 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- General ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Support of .NET Framework 4.6.1 Assemblies built with .NET Framework 4.6.1 are added to the setup. In addition, examples for Visual Studio 2015 that are based on Framework 4.6.1 are added. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Perfomance improvements. Performance improvements could be achieved by * reworking the locking in ApplicationThreadPool * advanced general locking * advanced tracing * the usage of more efficient .NET calls * removing unneccessary calling of methods These enhancements result in faster OPC UA applications. ApplicationSettings update. The ApplicationSettings schema has been updated. Some unused parameters have been removed. If there are errors when reading existing configuration files, the parameters that have been removed from the schema can be removed from the configuration without any risk. Verify signature using the expected algorithm. A signature is verified now using the signature algorithm that is specified for the particular security profile. The signature algorithm specfied in the signature itself is ignored. The OPC UA Specification explicitly defines the signature algorithm to use for a security profile. Only an error trace is created if the signature algorithm specified in the signature does not match the expected signature algorithm. This change does not imply a security risk. Documentation updates. ------------------------ Bug Fixes ------------------------ Fixes comparing empty ByteString with null. Comparing an empty ByteString with null using the CompareTo method did not return 0. Now 0 is returned. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Breaking Change ------------------------ Update of UserAccessMask. New values have been added to UserAccessMask. One of these values represents the access for reading attributes of a node. NodeManagers that implement the HasAccess(RequestContext, NodeAttributeHandle, UserAccessMask) method need to handle this value. Otherwise, the non-value attributes of the nodes managed by the NodeManager cannot be read. In addition, there is a property at the BaseNodeManager class to specify whether the HasAccess method is not called using the new value. If this propery is set to true, all non-value attributes can be read. ------------------------ Features ------------------------ Specifying access rights per node. Access rights for Read, Write, and Browse method calls as well as Historical Access can be specified on a per node basis for different roles directly at the node in the address space. The evaluation of the access rights is done by the SDK. The SDK contains a class that supports specifying access rights for two different roles (so-called scopes) and access rights for all other roles. If it is required to specify access rights for more than two roles, the user of the SDK can add its own implementation of the interface. Query Support. An interface has been added that can be used to implement Query on server side. Change trace settings at runtime. OPC UA Methods have been added to change the trace setting at runtime. Only administrators have execution rigths for these methods. Report AuditEvents. AuditEvents are reported for CreateSession, ActivateSession and CloseSession. Only administrators and security administrators have the rights to receive these events. Add configuration setting to specify the LDS certificate locations. An optional setting has been added to specify the path to the application instance certificate and the trusted folder of the LDS. These settings will be used when LDS certificate exchange is enabled. Add setting to specify server capabilities. A server can expose its capabilities like "Data Access" or "Historical Data" in the address space. A setting has been added to specify the capabilities in the configuration. Set Notifier implicitly. When adding a reference with ReferenceType HasNotifier, AddNotifier is called implicitly now for forward and inverse references. Additional check for verifying client signature. A client has to create a signature of the server certificate and the server nonce. An erratum for the OPC UA specification has been released saying that the leaf certificate has to be used, not the complete chain. As there might be implementations using the certificate chain for creating the signature, an additional check of signature on the server side was added. This addidtional check can not create a security risk. Documentation updates. ------------------------ Bug Fixes ------------------------ Fixes leak after TransferSubscription If a Subscription was still active on the server, but the Session that has created the Subscription has been already deleted, the Subscription never timed out after a calling TransferSubscription. The Subscription has never been deleted. The main reason for this error is a subscription lifetime that is longer than the session timeout besides having network interuptions. If a client created a new Session and transferring the Subscription failed, the Subscription could never be cleaned up on the server. The Subscription times out now if no Session can successfully transfer it. Fixes evaluation of MaxMonitoredItemsPerCall. The setting MaxMonitoredItemsPerCall has never been evaluated in server code. This setting is now taken into account when creating, modifying, and deleting MonitoredItems. Setting timestamp for ServiceFault. The timestamp in the ResponseHeader of a ServiceFault message has not been set. This timestamp is now set to the current time. Check access rights before executing DeleteReferences. If a client called DeleteReferences, there has been no check if the user has the rights to delete a reference. The check has been added. Use client leaf certificate for signature. When establishing a connection, the server creates a signature of the client nonce and the client certificate. This signature has been created for the nonce and the whole certificate data including the certificate chain. The signature data is composed of the leaf certificate and the nonce now. This fix was made after an erratum for the OPC UA specification. To be compatible to (non-compliant) clients that expect a signature created with the whole chain, a setting was added to the configuration schema to allow creating the signature with the whole chain. Fixes subscription for connection via https. For connections via https, Subscriptions did not work. Notifications with invalid SubscriptionIds have been sent. This has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Query support. Add methods to call Query services to Session. Use session timeout as default subscription lifetime. If the subscription lifetime is not specified, the session timeout is used. Watchdog cycle time depending on reviced session timeout. If the configured WatchdogCycleTime is greater than half the revised session timeout, the WatchdogCycleTime is set to half the revised session timeout. So it can be made sure that a watchdog read is executed before the session can time out on server side. Documentation updates. ------------------------ Bug Fixes ------------------------ Minor bugfixes. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.4.2.373 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Handling of DiagnosticInfo in BinarySchemaBuilder The BuiltInType DiagnosticInfo was not handled in BinarySchemaBuilder. As a result, an exception was thrown if a structure with a field of this DataType was used for the generic DataType handling. DiagnosticInfo can be used for generic DataTypes now without an exception. Fixes handling of structures without fields. If BinarySchemaBuilder.NewTypeFromDictionary was called for a structure without fields, an exception was thrown. The case of empty structure definitions is handled now. Documentation update of the configuration parameters. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes creating instances with children that are referenced twice. For types with children that are referenced twice with hierarchical references, the children have been created multiple times when calling CreateObject. The children are created only once now. Fixes check for DataChangeFilter. DataChangeFilters were only allowed for Variables with a numeric DataType. So DataChangeFilters with DataChangeTriggers and with DeadbandType None have been rejected for Variables with non numeric DataTypes. DataChangeFilters with DeadbandType None are allowed for Variables with all DataTypes now. Fixes StatusCode for HistoryReadProcessed. If a client called HistoryReadProcessed with differnt numbers of nodes to read and numbers of aggregate types, the returned StatusCode was wrong. The returned StatusCode is BadAggregateListMismatch now. Fixes checking MaxSessionTimeout. There was bug when checking the MaxSessionTimeout configuaration parameter. The MaxSessionTimeout was ignored. Insead, MaxSessionTimeout was calucalated as the maximum of the MinSessionTimeout and one hour. MaxSessionTimeout is the maximum of MaxSessionTimeout configuration parameter and one hour now. Fixes in demo server application * Fixes the context menu for rejected certificates * Return the NodeId of newly created directories ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Add AllowInsecureCredentials property to Session. If this property is set to true, connections with user name/password are possible although the password is sent insecurely. Add InsecureCredentials EventHandler to Session. This EventHandler is called if a password cannot be encrypted with sufficient security. You can accept the risk and connect anyway. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.4.1.366 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Support TypeUtils.Cast for enumerations. ------------------------ Bug Fixes ------------------------ Check depth when decoding DiagnosticInfo. The DiagnosticInfo structure is recursive. There has not been a check for the maximum call depth when decoding DiagnosticInfo. There is check for the maximum call depth now for decoding DiagnosticInfo. Fixes encoding array of GenericEncodeableObjects. An exception was thrown when encoding an array of GenericEncodeableObjects. It is possible to encode array of GenericEncodeableObjects now. Fixes comparison of null ByteStrings. Comparing two null ByteStrings using the operator != returned false. The implementation of the operator != has been fixed. Minor documentation updates. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Remove certificate from RejectedList after AddCertificate. If a certificate that was located in the RejectedList was added via GDS Push Model Interface, the certificate was located both in TrustedList and in RejectedList. The certificate is now removed from RejectedList after it has been added now. Send initial DataChange for sampled nodes. If a MonitoredItem was created for a Variable with NodeHandleType ExternalPolled, the initial DataChange was not sent. An initial DataChange is send now after creating the MonitoredItem. Fixes reading the value attribute of VariableType nodes. If the value attribute of a VariableType node was read, the StatusCode of the returned DataValue was BadNotReadable. This StatusCode is not allowed for the value attribute of VariableType nodes. The value of the node is returned correctly now. Fixes order of checking access. When reading a node's attribute the user access has been checked before the checking the general access to the node. For the case that client tried to read a variable with AccessLevel that does not set the CurrentRead bit and the user does not have any access to the node, the returned StatusCode was BadUserAccessDenied instead of BadNotReadable. The order of checks has been fixed. The returned StatusCodes are correct now. Fixes StatusCode when null NodeId is used. When a client tried to read a node with a null NodeId the returned StatusCodes was BadNodeIdInvalid instead of BadNodeIdUnknown. The StatusCode in the returned DataValue is BadNodeIdUnknown now. Fixes StatusCode when reading with IndexRange. If a client read an attribute other than the value attribute with IndexRange the returned StatusCode always was BadIndexRangeInvalid. Now it is also allowed to read the ArrayDimensions attribute with IndexRange. If other attributes than the Value attribute or the ArrayDimensions attribute are read with IndexRange, the returned StatusCode is BadIndexRangeNoData. Fixes usage of duplicated browse paths. If a client called TranslateBrowsePathsToNodeIds where a loop was specified in the BrowsePath and more than on node with a specified BrowseName was found, the same NodeId was returned multiple times. The handling in TranslateBrowsePathsToNodeIds is optimized now to return the found NodeIds only once. Fixes loading of ProductName from configuration. The property AssemblyProduct defined in AssemblyInfo.cs overwrote the ProductName defined in application configuration. The AssemblyProduct defined in AssemblyInfo.cs is a fallback now for the case that the ProductName is not specified in the configuration. Fixes deleting a certificate using GDS push. If a certificate was removed from the server's trust list, the appropriate client was still able to connect. Only after a restart of the server the client could not connect again. A client cannot connect again after its certificate has been removed. Minor fixes in examples. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Trace error if password is sent unencrypted. Throw an exception if server nonce is not valid for encrypting a password. Support values of VariableTypes in ModelManager. ------------------------ Bug Fixes ------------------------ Fixes finding types in generic dictionary parser. If a structured DataType contained a field having a structured DataType that is defined in namespace 0, the types was not evaluated correctly. This has been fixed. Minor fixes in examples. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.4.0.361 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Generic structured DataType support. Adds a class for creating structured DataTypes at runtime. This class registers the new structured DataType at the OPC UA communication stack. Adds a class for setting values where the fields of the structure can be accessed by name or by index. Timestamp in trace file configurable. The format of the timestamp in the trace files is now configurable. A setting has been added to configure the format. Certificate KeySize 4096 is now supported. SecurityProfile Basic256Sha256 is now supported. Auto clean-up of unused secure channels. Adds MaxChannelCount. ------------------------ Bug Fixes ------------------------ Creating password protected certificates. The property PrivateKeyPassword in CreateCertificateSettings has been ignored when creating a certificate. The password is used to protect the private part of the certificate now. Using KeySize from InstallationSettings. The CertificateKeyLength and the CertificateHashAlgorithm from InstallationSettings have been ignored when an application has been started with commandline argument '/install'. Other default values have been used instead. Now the values form the configuration are used. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Generic structured DataType support. Adds the required nodes to the addresssapce, adds a datatype dictionary and registers the DataTypes to the OPC UA communication stack. Global Discovery Server support. Implements the information model for Push Certificate management. Updates the OPC foundation address space to specification 1.03. ResendData support. Implements the ResendData method specified at the Server object to resend the values of all data monitored items in a Subscription. Auto clean-up of unused Sessions. Adds a toolkit class for FileDirectoryType. Adds a hook to implement HistoryReadEvent at Server object. ------------------------ Bug Fixes ------------------------ Fixes value of ArrayDimensions. The ArrayDimensions attribute of Variable nodes has been an empty array of UInt32. Now the ArrayDimensions attribute is a DataValue bit StatusCode BadAttributeIdInvalid. Fixes adding references multiple times. If a node is referenced twice by another node, the references have been added twice, resulting in four references from one node to the other node. Adding the references has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Generic structured DataType support. Access to the datatype dictionaries of the server and browse the addressspace to get required information about the structured DataTypes defined by the server. Global Discovery Server (GDS) support. Adds a helper class for calling methods defined by the Pull Certificate Management information model at a GDS. Adds toolkit classes for FileType. Addy two toolkit classes to wrap the OPC UA FileType. One class maps the signature of the OPC UA type directly. The other class is a subtype of Stream and can be used like any other Stream class of the .NET framework. Adds toolkit class for FileDirectoryType. Adds a toolkit class to wrap OPC UA FileDirectoryType. ------------------------ Bug Fixes ------------------------ Fixes calculation of publishes. Reworks the calculation of required PublishRequests that a client sends to the server when a Subscription is created. If more than one Subscription has been created for a Session, more PublishRequests than needed have been sent to the server. Fixes asynchronous connect. Dns.GetHostAddresses has been used in the BeginConnect method instead of Dns.BeginGetHostAddresses. If invalid hostnames have been used for the asynchronous Connect method, the method blocked. This has been fixed now. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.3.3.343 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Network Latency. The TCP network layer sends TCP acknowledge messages trying to ack multiple packages at once. This is known as the Nagle algorithm. In case of OPC UA communication with parallel asynchronous requests, especially with short message sizes, the Nagle algorithm leads to sporadic delays in the communication. To optimize the communication for short latency, the UA application now switches OFF the Nagle algorithm to achieve more predictable response time. Backward compatibility for .NET Framework. A .NET system function call was used that was introduced in an update of .NET framework 3.5. The client or server application could crash if used on this .NET framework without the latest service pack being installed. The fix now uses the legacy system function call and thus runs on legacy .NET framework, but also runs on the latest service pack because of backward compatibility within the .NET framework. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Events for Server object. When a client subscribed for events at the top level hierarchy, the Server object, no valid events were fired. Only for objects in the lower event hierarchy, the events have been sent correctly. This bug only affected version 2.3.2. The fix now allows to subscribe for all events by subscribing to the Server object. Log message clean-up Logs in TypeManager with little information have been removed to reduce start-up time when tracing is active. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.3.2.340 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Add Variant.ToVariantArray(). Advanced error tracing for full thread pool queues. ------------------------ Bug Fixes ------------------------ Fixes type check for Matrix. Checking the DataType of Matrix elements within a Variant did not work for structured DataTypes. As a result of this bug a server always returned a bad StatusCode if a client called a UA Method having an input argument with ValueRank > 1 and a Structure as DataType. This bug has been fixed. Minor bug fixes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Use a random number as initial subscription id. This avoids accidential transfers of subscriptions if multiple clients are connected. Do not allow transfering subscriptions from or to sessions with UserTokenType Anonymous. This avoids transferring subscriptions to unauthorized clients. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.3.1.334 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Support GetMonitoredItems method of the Server object. ------------------------ Bug Fixes ------------------------ Fixes checking DataChangeTrigger for MonitoredItems. The was a bug if the DataChangeTrigger was set to StatusValueTimestamp and Deadband filter was set to another value than None for a MonitoredItem. This bug has been fixed. Fixes nested WhereClauses. There was a bug if a client specified nested WhereClauses for EventMonitoredItems. In this case the evaluation of the WhereClauses returned BadFilterOperandInvalid although the WhereClause was valid. This bug has been fixed. Fixes double callback on timeout. In some timeout scenarios callbacks where called twice for asynchronous operations. This problem only occured for asynchronous operations that timed out. This bug has been fixed. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.3.0.330 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Breaking Change ------------------------ Updates license format. The format of the UnifiedAutomation license has changed. You need to replace the license file in your application with a new one. Otherwise an exception will be thrown. ------------------------ Features ------------------------ Adds option to create the trace in UTC time or local time. Adds additional documentation for DataTypes defined by the OPC foundation. Adds option to suppress certificate validation steps. ------------------------ Bug Fixes ------------------------ Fixes return code of certificate checks. After a clarification in the OPC UA specification the return code for failed certificate checks is always set to BadSecurityChecksFailed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Adds class FileTransfer. This class is a utility class to read and write whole files from a server. The server must support OPC UA FileType to use this feature on client side. Adds dialog that shows the usage of authentication tokens for Connect in Client Getting Started. Adds SetTriggering method to Subscription class. ------------------------ Bug Fixes ------------------------ Fixes TransferSubscription. The TransferSubscription method did not work at all. Fixes memory leak in Session. There was memory leak in Session. This leak occured when a client disconnected from a server. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Implements FileModel. The FileModel class provides implementation to support OPC UA FileType on server side. Compliance tested. The DemoServer application passes the Compliance Test Tool without errors. Adds documentation of OPC UA ConditionTypes and OPC UA VariablesTypes. Adds support for EventMonitoredItems in ServerInternalClient. Adds lesson for HistoryReadEvent in Server Getting Started. ------------------------ Bug Fixes ------------------------ ModelController classes are non-abstract. For abstract OPC UA types the ModelController classes have been abstract, too. When calling LinkModelToNode for an abstract OPC UA type that contains a child with an abstract type definition, an exception was thrown. This has been fixed by making all ModelController classes non-abstract. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.2.5.284 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes exception in EndConnect There was null exeption in EndConnect that occurred if an application calls sequences of connect/disconnect extremely fast. The socket was null at the time connecting again. This issue has been fixed. Fixes return value in GetTypeDescriptor There was a null pointer returned from ModelTypeDescriptionProvider.GetTypeDescriptor because return variable was not assigned properly. This getter function is called when loading/reading type system during startup e.g. provided by node set file. This issue has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Minor clarifcation for usage of AlternativeEndpointUrls An alternative Endpoint is only used if the initial connect fails and the RetryInitialConnect is set to yes. Once a connection could be created, the Endpoint that worked is used for reconnecting. No changes to logic or code. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.2.4.281 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes memory leak when starting multiple ApplicationInstances. There was a memory leak that occurred if an ApplicationInstance was started and stopped several times. This memory leak did not appear if an application was started only once. This issue has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes stack overflow on server start-up. There was a potential crash if a server was restarted and several clients tried to reconnect simultaneously. This bug has been resolved. Fixes possible crash during shutdown and release of Socket. This exception occurred in very rare cases when accessing the socket handle in TcpMessageSocket. This possible crash has been resolved by adding an additional null pointer check. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.2.3.276 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Add checks for System.Reflection.Assembly.GetEntryAssembly(). When using the .NET UA libraries within a CLR project, in some cases System.Reflection.Assembly.GetEntryAssembly() returns null, but it hasn't been checked for null at every place when used in the code. These additional checks fix rare crashes of the UA application when using the .NET UA libraries within a CLR project. Fixes logic error in DirectoryCertificateStore. The DirectoryCertificateStore has the option "noPrivateKeys" to disable saving private key. There was logic error when evaluating this option. As a consequence of this error a StatusException was thrown if a certificate was added to a store with the option to save the private key and the option "noPrivateKeys" for the DirectoryCertificateStore was set to "false". This logic error has been solved. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Use TimestampsToReturn.Both for HistoryReadEvent. This solves interoperability issues since some servers do not allow HistoryReadEvent calls with TimestampsToReturn.Neither. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Calling dispose recursively when the Server is stopped. This solves leaks when stopping and starting the server while the UA application is running. This does not have an effect on applications that do not stop and start an OPC UA server again while the UA ApplicationInstance is running. Revise SamplingInterval 0 for event monitoring even if clients request a SamplingInterval != 0. Compare structure content in MonitoredItem.Equals. This solves the problem that values with structured data types are sent by a subscription even if the content did not change. Reduce tracing with trace level ProgramFlow. Tracing with trace level ProgramFlow or Data created very big trace files. This tracing resulted in very long startup times of the server and very long connection times of clients to the server. Reducing the tracing reduces the spent time for server startup and the time for connecting. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.2.2.260 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fix minor problem with HTTPS transport. This fix solves a minor interoperability issue when using the HTTPS transport binding. This binding is not released (for details see comments in app.config). ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Implement client side Cancel service. This enables clients to call the Cancel Service to abort a long running operation in the server (assuming the server supports such a cancellation). ------------------------ Bug Fixes ------------------------ Fix hostname and IP address resolution on Vista/Win7 when network card is disabled or when network card is unplugged. Compared to WinXP, on Vista/Win7 and above the name resolution works differently. This leads to problems particularly for local connections (localhost) between client and server, because the loopback address was not resolved correctly. - The problem did not occur on Windows XP - The problem only occurred for connections to local servers (127.0.0.1 or localhost) ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fix crash on internal server restart. When restarting the ApplicationInstance the constructor was not called again, hence required parameters were not initialized correctly. This problem only occurs in the rare case that the ApplicationInstance is restarted without unloading the server module completely. Fix locking in DataSamplingManager. Only when using a certain NodeHandleType (InternalPolled or ExternalPolled) in BaseNodeManager the DataSamplingManager sporadically locked the wrong object. This could cause modification, creation or deletion of unlocked node. Fix usage of DefaultRequestContext in ServerInternalClient.CreateDataMonitoredItems. The internal client running within the server (e.g. when implementing internal data logging) threw an exception when calling the method CreateDataMonitoredItems twice, because the DefaultRequestContext was not set correctly. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.2.1.258 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Advance documentation of OPC UA types. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Add ProductUri to ClientSettings. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Advance default value of ProductUri. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.2.0.255 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Breaking Change ------------------------ ApplicationSettings and associated 'Settings' classes used to read information from configuration files now have default values specified for all fields. This means the 'Specified' flag is no longer part of the classes and will caused compile errors. Remove any 'Specified'references to fix. Removed support for Service UserName/Password (MS ServiceInstaller class should be used if this feature is required). Otherwise password is required in the configuration file which is not acceptable from a security point of view. ------------------------ Features ------------------------ Added support for Visual Studio 2012 (update 2) and .NET Framework 4.5. Added support for setup and configuration of HTTPS endpoints. Added support for SignOnly endpoints. Added support for binding endpoints to specific network cards. Trace messages now written to Visual Studio output window when debugging. Added DisableCommandLineProcessing to ApplicationInstance. Added DisableLdsCertificateExchange, DisableSetFilePermissions flags to InstallationSettings. Added CertificateGeneratorPath to CertificateFactory Added support for PEM format to CertificateFactory. Added Accept and RemoveAccept to CertificateValidator ------------------------ Bug Fixes ------------------------ Socket manager now correctly returns error messages if the initial connect fails. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Added support for HistoryRead for events. Added support for HistoryUpdate for data and events. Added helper functions to ItemEventFilter. Added event that allows application to modify URL before connect. ------------------------ Bug Fixes ------------------------ Fix Session.Connect(EndpointDescription endpoint, RequestSettings settings). If not all necessary information is set in endpoint, an exception will be thrown. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Breaking Change ------------------------ The IEventManager was missing the RequestContext in several method calls including ConditionRefresh. This changed the interface to the BaseNodeManager and the NotifierManager classes and will cause compiler errors. Add RequestContext as the first parameter in any overridden functions to fix. Use Server.DefaultRequestContext if existing code logic does not have a RequestContext to use when calling. ------------------------ Features ------------------------ Added default implementation for ReadProcessed and ReadAtTime into the SDK. Implementors only need to implement ReadRaw to get support for these services. It is still possible to implement ReadProcessed and ReadAtTime on the application level. Added examples for history functions - Added Lesson 7 to Server Getting Started for HistoryRead for data - Added examples for all history functions to demo server ------------------------ Bug Fixes ------------------------ Fixed BaseNodeManager.IEventManager.ModifyEventMonitoring. Internal reference counters are updated correctly now. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.1.2.227 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Changed search order for Opc.Ua.CertificateGenerator.exe 1. Working directory 2. Installation directory 3. bin-folder (Used for the examples of the SDK) Fixes for installing a service process. - ApplicationInstance.Install(bool silent) got public - New version of Opc.Ua.CertificateGenerator.exe XmlDecoder - Fix reading null arrays ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fix automatic deletion of subscriptions on Server errors ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ BaseNodeManager.INodeManagementManager - Add missing EventNotifier property SubscriptionManager.CreateSubscription - Fix memory leak if MaxSubscriptionCount is reached ******************************************************************************** ******************************************************************************** ** ** ** Version 2.1.1.223 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ NoAutostartService flag - Added flag to avoid automatic start of Windows service by SDK. Default is false. If your application handles Windows service functionality this flag must be set to true. ******************************************************************************** ******************************************************************************** ** ** ** Version 2.1.0.222 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Documentation and Examples ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- GettingStarted - Added certificate creation and certificate trust examples. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaBase ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ApplicationInstance - Added EmbeddedConfigurationAssemblyName which specifies the location of the embedded configuration file. - Added public ApplicationSettings property and SetApplicationSettings method. - Added MissingApplicationCertificate event. - Added UntrustedCertificate event. - Added ConfigurationChanged event. - Renamed ParseExtention/UpdateExtension to GetConfigurationExtension/SetConfigurationExtension. - Added ValidateCertificate and AddCertificateToTrustList methods. - Replaces DC=localhost in ApplicationCertificate SubjectNames with DC= ExtensionObject - Added GetArray method. SecuredApplication - Added Get/Set methods. UANodeSet - Added MethodDeclarationId to UAMethod class. DirectoryCertificateStore - Added support for CRLs. - Added support for stores without private keys (better performance). ------------------------ Bug Fixes ------------------------ AbsoluteName - Fixed parsing error in ToQualifiedNames BinaryDecoder - Added handler to ensure XML parsing errors do not prevent message deserialization. - Fixed problem with multi dimensional arrays. ModelMapper - Fixed conversion error for ExtensionObjects. CertificateValidator - Fixed numerous issues with certificate validation. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaClient ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Discovery - Added GetMostSecureEndpoint methods. Session - Added MessageContext property. - Added PublishPipelineDepth property. Subscription - Suitable defaults are now set in the constructor. ------------------------ Bug Fixes ------------------------ Session - Now closes session after failure on first activate. - Reports events for subscriptions when they are deleted. - Added support for blocking write requests. Subscription - Fixed race condition that caused missing initial data changes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaServer ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Initial release ******************************************************************************** ******************************************************************************** ** ** ** Version 2.0.0.163 ** ** ** ******************************************************************************** ******************************************************************************** Initial release