Skip to content

Commit

Permalink
Workaround some commercial servers messing up the subscription sequen…
Browse files Browse the repository at this point in the history
…ce number
  • Loading branch information
jpfr committed Apr 18, 2018
1 parent 63ba1c0 commit 3aa6b67
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions src/client/ua_client_subscriptions.c
Expand Up @@ -638,12 +638,16 @@ UA_Client_Subscriptions_processPublishResponse(UA_Client *client, UA_PublishRequ
sub->lastActivity = UA_DateTime_nowMonotonic();

/* Detect missing message - OPC Unified Architecture, Part 4 5.13.1.1 e) */
if((sub->sequenceNumber != msg->sequenceNumber) && (msg->sequenceNumber != 0) &&
(UA_Client_Subscriptions_nextSequenceNumber(sub->sequenceNumber) != msg->sequenceNumber)) {
UA_LOG_ERROR(client->config.logger, UA_LOGCATEGORY_CLIENT,
"Invalid subscritpion sequenceNumber");
UA_Client_close(client);
return;
if(UA_Client_Subscriptions_nextSequenceNumber(sub->sequenceNumber) != msg->sequenceNumber) {
UA_LOG_WARNING(client->config.logger, UA_LOGCATEGORY_CLIENT,
"Invalid subscription sequence number: expected %u but got %u",
UA_Client_Subscriptions_nextSequenceNumber(sub->sequenceNumber),
msg->sequenceNumber);
/* This is an error. But we do not abort the connection. Some server
* SDKs misbehave from time to time and send out-of-order sequence
* numbers. (Probably some multi-threading synchronization issue.) */
/* UA_Client_close(client);
return; */
}
sub->sequenceNumber = msg->sequenceNumber;

Expand Down

0 comments on commit 3aa6b67

Please sign in to comment.