Browse Source

Don't close the connection if we miss a publish response.

This can happen e.g. during debugging or when the client didn't send
enough publish requests
Julius Pfrommer 7 years ago
parent
commit
8bab4e577e
1 changed files with 10 additions and 17 deletions
  1. 10 17
      src/client/ua_client_subscriptions.c

+ 10 - 17
src/client/ua_client_subscriptions.c

@@ -704,25 +704,18 @@ UA_Client_Subscriptions_backgroundPublishInactivityCheck(UA_Client *client) {
     if(client->state < UA_CLIENTSTATE_SESSION)
         return;
 
-    /* The session must have at least one subscription */
-    if(!LIST_FIRST(&client->subscriptions))
+    /* Is the lack of responses the client's fault? */
+    if(client->currentlyOutStandingPublishRequests == 0)
         return;
 
-    /* Check subscriptions inactivity */
-    if (client->config.outStandingPublishRequests) {
-        UA_Client_Subscription *sub;
-        LIST_FOREACH(sub, &client->subscriptions, listEntry) {
-            UA_DateTime maxSilence = (UA_DateTime)
-                ((sub->publishingInterval * sub->maxKeepAliveCount) +
-                 client->config.timeout) * UA_DATETIME_MSEC;
-            if(maxSilence + sub->lastActivity < UA_DateTime_nowMonotonic()) {
-                UA_LOG_ERROR(client->config.logger, UA_LOGCATEGORY_CLIENT,
-                             "Inactivity for Subscription %d. Closing the connection.",
-                             sub->subscriptionId);
-                UA_Client_close(client);
-                return;
-            }
-        }
+    UA_Client_Subscription *sub;
+    LIST_FOREACH(sub, &client->subscriptions, listEntry) {
+        UA_DateTime maxSilence = (UA_DateTime)
+            ((sub->publishingInterval * sub->maxKeepAliveCount) +
+             client->config.timeout) * UA_DATETIME_MSEC;
+        if(maxSilence + sub->lastActivity < UA_DateTime_nowMonotonic())
+            UA_LOG_ERROR(client->config.logger, UA_LOGCATEGORY_CLIENT,
+                         "Inactivity for Subscription %d.", sub->subscriptionId);
     }
 }