Browse Source

refactor(plugin): Don't memset the initial config

The Nodestore has to be configured already for the server
initialization. Memsetting the config afterwards is therefore not
allowed. This was unproblematic when the Nodestore was still defined as
part of the server (instead of the config).
Julius Pfrommer 5 years ago
parent
commit
74f293e139
1 changed files with 63 additions and 57 deletions
  1. 63 57
      plugins/ua_config_default.c

+ 63 - 57
plugins/ua_config_default.c

@@ -42,6 +42,7 @@ UA_Server *
 UA_Server_new() {
     UA_ServerConfig config;
     memset(&config, 0, sizeof(UA_ServerConfig));
+    /* Set a default logger and NodeStore for the initialization */
     config.logger = UA_Log_Stdout_;
     UA_Nodestore_ZipTree(&config.nodestore);
     return UA_Server_newWithConfig(&config);
@@ -120,6 +121,7 @@ setDefaultConfig(UA_ServerConfig *conf) {
     conf->shutdownDelay = 0.0;
 
     /* Server Description */
+    UA_BuildInfo_clear(&conf->buildInfo);
     conf->buildInfo.productUri = UA_STRING_ALLOC(PRODUCT_URI);
     conf->buildInfo.manufacturerName = UA_STRING_ALLOC(MANUFACTURER_NAME);
     conf->buildInfo.productName = UA_STRING_ALLOC(PRODUCT_NAME);
@@ -133,6 +135,7 @@ setDefaultConfig(UA_ServerConfig *conf) {
     #endif
     conf->buildInfo.buildDate = UA_DateTime_now();
 
+    UA_ApplicationDescription_clear(&conf->applicationDescription);
     conf->applicationDescription.applicationUri = UA_STRING_ALLOC(APPLICATION_URI_SERVER);
     conf->applicationDescription.productUri = UA_STRING_ALLOC(PRODUCT_URI);
     conf->applicationDescription.applicationName =
@@ -144,7 +147,7 @@ setDefaultConfig(UA_ServerConfig *conf) {
     /* conf->applicationDescription.discoveryUrls = NULL; */
 
 #ifdef UA_ENABLE_DISCOVERY_MULTICAST
-    UA_MdnsDiscoveryConfiguration_init(&conf->discovery.mdns);
+    UA_MdnsDiscoveryConfiguration_clear(&conf->discovery.mdns);
     conf->discovery.mdnsInterfaceIP = UA_STRING_NULL;
 #endif
 
@@ -164,11 +167,11 @@ setDefaultConfig(UA_ServerConfig *conf) {
      * overwritten when the policy is specialized. */
     UA_CertificateVerification_AcceptAll(&conf->certificateVerification);
 
-    /* Global Node Lifecycle */
-    conf->nodeLifecycle.constructor = NULL;
-    conf->nodeLifecycle.destructor = NULL;
-    conf->nodeLifecycle.createOptionalChild = NULL;
-    conf->nodeLifecycle.generateChildNodeId = NULL;
+    /* * Global Node Lifecycle * */
+    /* conf->nodeLifecycle.constructor = NULL; */
+    /* conf->nodeLifecycle.destructor = NULL; */
+    /* conf->nodeLifecycle.createOptionalChild = NULL; */
+    /* conf->nodeLifecycle.generateChildNodeId = NULL; */
 
     /* Relax constraints for the InformationModel */
     conf->relaxEmptyValueConstraint = true; /* Allow empty values */
@@ -244,15 +247,14 @@ addDefaultNetworkLayers(UA_ServerConfig *conf, UA_UInt16 portNumber,
     return UA_ServerConfig_addNetworkLayerTCP(conf, portNumber, sendBufferSize, recvBufferSize);
 }
 
-
-
 #ifdef UA_ENABLE_WEBSOCKET_SERVER
 UA_EXPORT UA_StatusCode
 UA_ServerConfig_addNetworkLayerWS(UA_ServerConfig *conf, UA_UInt16 portNumber,
                                    UA_UInt32 sendBufferSize, UA_UInt32 recvBufferSize) {
     /* Add a network layer */
     UA_ServerNetworkLayer *tmp = (UA_ServerNetworkLayer *)
-        UA_realloc(conf->networkLayers, sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
+        UA_realloc(conf->networkLayers,
+                   sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
     if(!tmp)
         return UA_STATUSCODE_BADOUTOFMEMORY;
     conf->networkLayers = tmp;
@@ -278,7 +280,8 @@ UA_ServerConfig_addNetworkLayerTCP(UA_ServerConfig *conf, UA_UInt16 portNumber,
                                    UA_UInt32 sendBufferSize, UA_UInt32 recvBufferSize) {
     /* Add a network layer */
     UA_ServerNetworkLayer *tmp = (UA_ServerNetworkLayer *)
-        UA_realloc(conf->networkLayers, sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
+        UA_realloc(conf->networkLayers,
+                   sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
     if(!tmp)
         return UA_STATUSCODE_BADOUTOFMEMORY;
     conf->networkLayers = tmp;
@@ -301,11 +304,10 @@ UA_ServerConfig_addNetworkLayerTCP(UA_ServerConfig *conf, UA_UInt16 portNumber,
 UA_EXPORT UA_StatusCode
 UA_ServerConfig_addSecurityPolicyNone(UA_ServerConfig *config, 
                                       const UA_ByteString *certificate) {
-    UA_StatusCode retval;
-
     /* Allocate the SecurityPolicies */
     UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
-        UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
+        UA_realloc(config->securityPolicies,
+                   sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
     if(!tmp)
         return UA_STATUSCODE_BADOUTOFMEMORY;
     config->securityPolicies = tmp;
@@ -314,8 +316,9 @@ UA_ServerConfig_addSecurityPolicyNone(UA_ServerConfig *config,
     UA_ByteString localCertificate = UA_BYTESTRING_NULL;
     if(certificate)
         localCertificate = *certificate;
-    retval = UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize], NULL,
-                                    localCertificate, &config->logger);
+    UA_StatusCode retval =
+        UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize],
+                               NULL, localCertificate, &config->logger);
     if(retval != UA_STATUSCODE_GOOD)
         return retval;
     config->securityPoliciesSize++;
@@ -325,13 +328,11 @@ UA_ServerConfig_addSecurityPolicyNone(UA_ServerConfig *config,
 
 UA_EXPORT UA_StatusCode
 UA_ServerConfig_addEndpoint(UA_ServerConfig *config, const UA_String securityPolicyUri, 
-                            UA_MessageSecurityMode securityMode)
-{
-    UA_StatusCode retval;
-
+                            UA_MessageSecurityMode securityMode) {
     /* Allocate the endpoint */
-    UA_EndpointDescription * tmp = (UA_EndpointDescription *)
-        UA_realloc(config->endpoints, sizeof(UA_EndpointDescription) * (1 + config->endpointsSize));
+    UA_EndpointDescription *tmp = (UA_EndpointDescription *)
+        UA_realloc(config->endpoints,
+                   sizeof(UA_EndpointDescription) * (1 + config->endpointsSize));
     if(!tmp) {
         return UA_STATUSCODE_BADOUTOFMEMORY;
     }
@@ -349,8 +350,9 @@ UA_ServerConfig_addEndpoint(UA_ServerConfig *config, const UA_String securityPol
         return UA_STATUSCODE_BADINVALIDARGUMENT;
 
     /* Populate the endpoint */
-    retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
-                            policy, securityMode);
+    UA_StatusCode retval =
+        createEndpoint(config, &config->endpoints[config->endpointsSize],
+                       policy, securityMode);
     if(retval != UA_STATUSCODE_GOOD)
         return retval;
     config->endpointsSize++;
@@ -360,33 +362,36 @@ UA_ServerConfig_addEndpoint(UA_ServerConfig *config, const UA_String securityPol
 
 UA_EXPORT UA_StatusCode
 UA_ServerConfig_addAllEndpoints(UA_ServerConfig *config) {
-    UA_StatusCode retval;
-
     /* Allocate the endpoints */
     UA_EndpointDescription * tmp = (UA_EndpointDescription *)
-        UA_realloc(config->endpoints, sizeof(UA_EndpointDescription) * (2 * config->securityPoliciesSize + config->endpointsSize));
+        UA_realloc(config->endpoints,
+                   sizeof(UA_EndpointDescription) *
+                   (2 * config->securityPoliciesSize + config->endpointsSize));
     if(!tmp) {
         return UA_STATUSCODE_BADOUTOFMEMORY;
     }
     config->endpoints = tmp;
 
     /* Populate the endpoints */
-    for (size_t i = 0; i < config->securityPoliciesSize; ++i) {
-        if (UA_String_equal(&UA_SECURITY_POLICY_NONE_URI, &config->securityPolicies[i].policyUri)) {
-            retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
-                                    &config->securityPolicies[i], UA_MESSAGESECURITYMODE_NONE);
+    for(size_t i = 0; i < config->securityPoliciesSize; ++i) {
+        if(UA_String_equal(&UA_SECURITY_POLICY_NONE_URI, &config->securityPolicies[i].policyUri)) {
+            UA_StatusCode retval =
+                createEndpoint(config, &config->endpoints[config->endpointsSize],
+                               &config->securityPolicies[i], UA_MESSAGESECURITYMODE_NONE);
             if(retval != UA_STATUSCODE_GOOD)
                 return retval;
             config->endpointsSize++;
         } else {
-            retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
-                                    &config->securityPolicies[i], UA_MESSAGESECURITYMODE_SIGN);
+            UA_StatusCode retval =
+                createEndpoint(config, &config->endpoints[config->endpointsSize],
+                               &config->securityPolicies[i], UA_MESSAGESECURITYMODE_SIGN);
             if(retval != UA_STATUSCODE_GOOD)
                 return retval;
             config->endpointsSize++;
 
             retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
-                                    &config->securityPolicies[i], UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
+                                    &config->securityPolicies[i],
+                                    UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
             if(retval != UA_STATUSCODE_GOOD)
                 return retval;
             config->endpointsSize++;
@@ -433,7 +438,8 @@ UA_ServerConfig_setMinimalCustomBuffer(UA_ServerConfig *config, UA_UInt16 portNu
     }
 
     /* Allocate the endpoint */
-    retval = UA_ServerConfig_addEndpoint(config, UA_SECURITY_POLICY_NONE_URI, UA_MESSAGESECURITYMODE_NONE);
+    retval = UA_ServerConfig_addEndpoint(config, UA_SECURITY_POLICY_NONE_URI,
+                                         UA_MESSAGESECURITYMODE_NONE);
     if(retval != UA_STATUSCODE_GOOD) {
         UA_ServerConfig_clean(config);
         return retval;
@@ -448,11 +454,10 @@ UA_EXPORT UA_StatusCode
 UA_ServerConfig_addSecurityPolicyBasic128Rsa15(UA_ServerConfig *config, 
                                                const UA_ByteString *certificate,
                                                const UA_ByteString *privateKey) {
-    UA_StatusCode retval;
-
     /* Allocate the SecurityPolicies */
     UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
-        UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
+        UA_realloc(config->securityPolicies,
+                   sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
     if(!tmp)
         return UA_STATUSCODE_BADOUTOFMEMORY;
     config->securityPolicies = tmp;
@@ -464,9 +469,10 @@ UA_ServerConfig_addSecurityPolicyBasic128Rsa15(UA_ServerConfig *config,
         localCertificate = *certificate;
     if(privateKey)
        localPrivateKey = *privateKey;
-    retval = UA_SecurityPolicy_Basic128Rsa15(&config->securityPolicies[config->securityPoliciesSize],
-                                             &config->certificateVerification,
-                                             localCertificate, localPrivateKey, &config->logger);
+    UA_StatusCode retval =
+        UA_SecurityPolicy_Basic128Rsa15(&config->securityPolicies[config->securityPoliciesSize],
+                                        &config->certificateVerification,
+                                        localCertificate, localPrivateKey, &config->logger);
     if(retval != UA_STATUSCODE_GOOD)
         return retval;
     config->securityPoliciesSize++;
@@ -478,11 +484,10 @@ UA_EXPORT UA_StatusCode
 UA_ServerConfig_addSecurityPolicyBasic256(UA_ServerConfig *config, 
                                           const UA_ByteString *certificate,
                                           const UA_ByteString *privateKey) {
-    UA_StatusCode retval;
-
     /* Allocate the SecurityPolicies */
     UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
-        UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
+        UA_realloc(config->securityPolicies,
+                   sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
     if(!tmp)
         return UA_STATUSCODE_BADOUTOFMEMORY;
     config->securityPolicies = tmp;
@@ -494,9 +499,10 @@ UA_ServerConfig_addSecurityPolicyBasic256(UA_ServerConfig *config,
         localCertificate = *certificate;
     if(privateKey)
        localPrivateKey = *privateKey;
-    retval = UA_SecurityPolicy_Basic256(&config->securityPolicies[config->securityPoliciesSize],
-                                        &config->certificateVerification,
-                                        localCertificate, localPrivateKey, &config->logger);
+    UA_StatusCode retval =
+        UA_SecurityPolicy_Basic256(&config->securityPolicies[config->securityPoliciesSize],
+                                   &config->certificateVerification,
+                                   localCertificate, localPrivateKey, &config->logger);
     if(retval != UA_STATUSCODE_GOOD)
         return retval;
     config->securityPoliciesSize++;
@@ -508,11 +514,10 @@ UA_EXPORT UA_StatusCode
 UA_ServerConfig_addSecurityPolicyBasic256Sha256(UA_ServerConfig *config, 
                                                 const UA_ByteString *certificate,
                                                 const UA_ByteString *privateKey) {
-    UA_StatusCode retval;
-
     /* Allocate the SecurityPolicies */
     UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
-        UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
+        UA_realloc(config->securityPolicies,
+                   sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
     if(!tmp)
         return UA_STATUSCODE_BADOUTOFMEMORY;
     config->securityPolicies = tmp;
@@ -524,9 +529,10 @@ UA_ServerConfig_addSecurityPolicyBasic256Sha256(UA_ServerConfig *config,
         localCertificate = *certificate;
     if(privateKey)
        localPrivateKey = *privateKey;
-    retval = UA_SecurityPolicy_Basic256Sha256(&config->securityPolicies[config->securityPoliciesSize],
-                                              &config->certificateVerification,
-                                              localCertificate, localPrivateKey, &config->logger);
+    UA_StatusCode retval =
+        UA_SecurityPolicy_Basic256Sha256(&config->securityPolicies[config->securityPoliciesSize],
+                                         &config->certificateVerification,
+                                         localCertificate, localPrivateKey, &config->logger);
     if(retval != UA_STATUSCODE_GOOD)
         return retval;
     config->securityPoliciesSize++;
@@ -538,11 +544,10 @@ UA_EXPORT UA_StatusCode
 UA_ServerConfig_addAllSecurityPolicies(UA_ServerConfig *config,
                                        const UA_ByteString *certificate,
                                        const UA_ByteString *privateKey) {
-    UA_StatusCode retval;
-
     /* Allocate the SecurityPolicies */
     UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
-        UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (4 + config->securityPoliciesSize));
+        UA_realloc(config->securityPolicies,
+                   sizeof(UA_SecurityPolicy) * (4 + config->securityPoliciesSize));
     if(!tmp)
         return UA_STATUSCODE_BADOUTOFMEMORY;
     config->securityPolicies = tmp;
@@ -555,8 +560,9 @@ UA_ServerConfig_addAllSecurityPolicies(UA_ServerConfig *config,
     if(privateKey)
        localPrivateKey = *privateKey;
 
-    retval = UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize], NULL,
-                                    localCertificate, &config->logger);
+    UA_StatusCode retval =
+        UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize],
+                               NULL, localCertificate, &config->logger);
     if(retval != UA_STATUSCODE_GOOD)
         return retval;
     config->securityPoliciesSize++;