|
@@ -434,12 +434,15 @@ processRequest(UA_SecureChannel *channel, UA_Server *server, UA_UInt32 requestId
|
|
|
/* Test if the session is valid */
|
|
|
UA_Session anonymousSession;
|
|
|
if(!session) {
|
|
|
- if(sessionRequired || !UA_NodeId_equal(&requestHeader->authenticationToken, &UA_NODEID_NULL)) {
|
|
|
- UA_LOG_INFO_CHANNEL(server->config.logger, channel, "Service request %i without a valid session",
|
|
|
- requestTypeId.identifier.numeric - UA_ENCODINGOFFSET_BINARY);
|
|
|
- sendError(channel, msg, requestPos, responseType, requestId, UA_STATUSCODE_BADSESSIONIDINVALID);
|
|
|
- UA_deleteMembers(request, requestType);
|
|
|
- return;
|
|
|
+ //allow calling getendpoint service with invalid authenticationToken
|
|
|
+ if(requestType != &UA_TYPES[UA_TYPES_GETENDPOINTSREQUEST]){
|
|
|
+ if(sessionRequired || !UA_NodeId_equal(&requestHeader->authenticationToken, &UA_NODEID_NULL)) {
|
|
|
+ UA_LOG_INFO_CHANNEL(server->config.logger, channel, "Service request %i without a valid session",
|
|
|
+ requestTypeId.identifier.numeric - UA_ENCODINGOFFSET_BINARY);
|
|
|
+ sendError(channel, msg, requestPos, responseType, requestId, UA_STATUSCODE_BADSESSIONIDINVALID);
|
|
|
+ UA_deleteMembers(request, requestType);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* Set an anonymous, inactive session for services that need no session */
|