Ver código fonte

Fixed client blindly reading method return code even though the service might not return one.

ichrispa 9 anos atrás
pai
commit
a9a9f7b6c9
1 arquivos alterados com 5 adições e 2 exclusões
  1. 5 2
      src/client/ua_client.c

+ 5 - 2
src/client/ua_client.c

@@ -980,14 +980,17 @@ UA_StatusCode UA_Client_CallServerMethod(UA_Client *client, UA_NodeId objectNode
     rq->inputArgumentsSize = -1;
     UA_CallRequest_deleteMembers(&request);
     UA_StatusCode retval = response.responseHeader.serviceResult;
-    retval |= response.results[0].statusCode;
-
+    
     if(retval == UA_STATUSCODE_GOOD) {
+        retval |= response.results[0].statusCode;
         *output = response.results[0].outputArguments;
         *outputSize = response.results[0].outputArgumentsSize;
         response.results[0].outputArguments = UA_NULL;
         response.results[0].outputArgumentsSize = -1;
     }
+    else {
+      retval |= response.responseHeader.serviceResult;
+    }
     UA_CallResponse_deleteMembers(&response);
     return retval;
 }