Browse Source

Merge pull request #1628 from open62541/fix/ctt

Fix small CTT issues
Stefan Profanter 7 years ago
parent
commit
a1e865dc6d

+ 2 - 1
src/server/ua_server_internal.h

@@ -252,7 +252,8 @@ UA_Server_processServiceOperations(UA_Server *server, UA_Session *session,
                                    const size_t *requestOperations,
                                    const UA_DataType *requestOperationsType,
                                    size_t *responseOperations,
-                                   const UA_DataType *responseOperationsType);
+                                   const UA_DataType *responseOperationsType)
+    UA_FUNC_ATTR_WARN_UNUSED_RESULT;
 
 /***************************************/
 /* Check Information Model Consistency */

+ 1 - 2
src/server/ua_server_utils.c

@@ -384,8 +384,7 @@ UA_Server_editNode(UA_Server *server, UA_Session *session,
 UA_StatusCode
 UA_Server_processServiceOperations(UA_Server *server, UA_Session *session,
                                    UA_ServiceOperation operationCallback,
-                                   void *context,
-                                   const size_t *requestOperations,
+                                   void *context, const size_t *requestOperations,
                                    const UA_DataType *requestOperationsType,
                                    size_t *responseOperations,
                                    const UA_DataType *responseOperationsType) {

+ 9 - 4
src/server/ua_services_attribute.c

@@ -175,7 +175,8 @@ readValueAttribute(UA_Server *server, UA_Session *session,
 }
 
 static const UA_String binEncoding = {sizeof("Default Binary")-1, (UA_Byte*)"Default Binary"};
-/* static const UA_String xmlEncoding = {sizeof("Default Xml")-1, (UA_Byte*)"Default Xml"}; */
+static const UA_String xmlEncoding = {sizeof("Default XML")-1, (UA_Byte*)"Default XML"};
+static const UA_String jsonEncoding = {sizeof("Default JSON")-1, (UA_Byte*)"Default JSON"};
 
 #define CHECK_NODECLASS(CLASS)                                  \
     if(!(node->nodeClass & (CLASS))) {                          \
@@ -193,12 +194,16 @@ Read(const UA_Node *node, UA_Server *server, UA_Session *session,
     UA_LOG_DEBUG_SESSION(server->config.logger, session,
                          "Read the attribute %i", id->attributeId);
 
-    /* XML encoding is not supported */
+    /* Only Binary Encoding is supported */
     if(id->dataEncoding.name.length > 0 &&
        !UA_String_equal(&binEncoding, &id->dataEncoding.name)) {
-           v->hasStatus = true;
+        if(UA_String_equal(&xmlEncoding, &id->dataEncoding.name) ||
+           UA_String_equal(&jsonEncoding, &id->dataEncoding.name))
            v->status = UA_STATUSCODE_BADDATAENCODINGUNSUPPORTED;
-           return;
+        else
+           v->status = UA_STATUSCODE_BADDATAENCODINGINVALID;
+        v->hasStatus = true;
+        return;
     }
 
     /* Index range for an attribute other than value */

+ 8 - 7
src/server/ua_services_view.c

@@ -309,8 +309,7 @@ Operation_Browse(UA_Server *server, UA_Session *session, UA_UInt32 *maxrefs,
 
 void Service_Browse(UA_Server *server, UA_Session *session,
                     const UA_BrowseRequest *request, UA_BrowseResponse *response) {
-    UA_LOG_DEBUG_SESSION(server->config.logger, session,
-                         "Processing BrowseRequest");
+    UA_LOG_DEBUG_SESSION(server->config.logger, session, "Processing BrowseRequest");
 
     /* No views supported at the moment */
     if(!UA_NodeId_isNull(&request->view.viewId)) {
@@ -319,10 +318,11 @@ void Service_Browse(UA_Server *server, UA_Session *session,
     }
 
     UA_UInt32 requestedMaxReferencesPerNode = request->requestedMaxReferencesPerNode;
-    UA_Server_processServiceOperations(server, session, (UA_ServiceOperation)Operation_Browse,
-                                       &requestedMaxReferencesPerNode,
-                                       &request->nodesToBrowseSize, &UA_TYPES[UA_TYPES_BROWSEDESCRIPTION],
-                                       &response->resultsSize, &UA_TYPES[UA_TYPES_BROWSERESULT]);
+    response->responseHeader.serviceResult =
+        UA_Server_processServiceOperations(server, session, (UA_ServiceOperation)Operation_Browse,
+                                           &requestedMaxReferencesPerNode,
+                                           &request->nodesToBrowseSize, &UA_TYPES[UA_TYPES_BROWSEDESCRIPTION],
+                                           &response->resultsSize, &UA_TYPES[UA_TYPES_BROWSERESULT]);
 }
 
 UA_BrowseResult
@@ -708,7 +708,8 @@ Service_TranslateBrowsePathsToNodeIds(UA_Server *server, UA_Session *session,
     }
 
     response->responseHeader.serviceResult =
-        UA_Server_processServiceOperations(server, session, (UA_ServiceOperation)Operation_TranslateBrowsePathToNodeIds,
+        UA_Server_processServiceOperations(server, session,
+                                           (UA_ServiceOperation)Operation_TranslateBrowsePathToNodeIds,
                                            NULL, &request->browsePathsSize, &UA_TYPES[UA_TYPES_BROWSEPATH],
                                            &response->resultsSize, &UA_TYPES[UA_TYPES_BROWSEPATHRESULT]);
 }