Преглед изворни кода

Fixed cleanup() lock; function now longer hangs the server if entered with a sentry pointing to a still valid session; See #251.

ichrispa пре 10 година
родитељ
комит
3ebeef476a
1 измењених фајлова са 3 додато и 2 уклоњено
  1. 3 2
      src/server/ua_server.c

+ 3 - 2
src/server/ua_server.c

@@ -142,8 +142,8 @@ static void UA_Server_cleanup(UA_Server *server, void *nothing) {
     }
 
     session_list_entry *sentry = LIST_FIRST(&server->sessionManager.sessions);
-    while(sentry) {
-        if(sentry->session.validTill < now) {
+    while(sentry) {  
+      if(sentry->session.validTill < now) {
             session_list_entry *next = LIST_NEXT(sentry, pointers);
             LIST_REMOVE(sentry, pointers);
             UA_SecureChannel_detachSession(sentry->session.channel);
@@ -151,6 +151,7 @@ static void UA_Server_cleanup(UA_Server *server, void *nothing) {
             UA_free(sentry);
             sentry = next;
         }
+        now = UA_DateTime_now();
     }
 }