[X2Go-Commits] [x2goserver] 02/03: x2goserver/sbin/x2gocleansessions: don't overzealously try to remove old nxagent sockets.

git-admin at x2go.org git-admin at x2go.org
Mon Feb 27 14:15:56 CET 2017


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch release/4.0.1.x
in repository x2goserver.

commit 0e6a47df0245c9e0e70b2054b619f562f94e6197
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Mon Feb 27 12:33:12 2017 +0100

    x2goserver/sbin/x2gocleansessions: don't overzealously try to remove old nxagent sockets.
    
    If the nxagent process already vanished, simply forget the remembered
    session.
    
    Otherwise we might delete sockets that have been re-assigned to other
    sessions in the meantime.
---
 debian/changelog                  |    4 ++++
 x2goserver/sbin/x2gocleansessions |   16 +++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/debian/changelog b/debian/changelog
index a6e24ee..6a28f25 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,10 @@ x2goserver (4.0.1.21-0x2go1) UNRELEASED; urgency=medium
 
   [ Mihai Moldovan ]
   * New upstream version (4.0.1.21):
+    - x2goserver/sbin/x2gocleansessions: don't overzealously try to remove old
+      nxagent sockets. If the nxagent process already vanished, simply forget
+      the remembered session. Otherwise we might delete sockets that have been
+      re-assigned to other sessions in the meantime.
   * x2goserver.spec:
     - Add mandatory perl-generators Build-Requires as per
       https://fedoraproject.org/wiki/Changes/Build_Root_Without_Perl
diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index 650346f..b2c79f3 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -232,6 +232,20 @@ elsif ($pid == 0 )
 
 			if (@sinfo[4] eq 'F')
 			{
+				if (!check_pid (@sinfo[0], @sinfo[1], 100) {
+					# No clean up necessary, as the agent is dead.
+					# Removing sockets again would only lead to potentially
+					# overwriting the socket another session claimed in-between.
+					syslog ('debug', "@sinfo[1]: in failed state, but agent is gone, forgetting.");
+					@remembered_finished_sessions = grep (!/\Q at sinfo[1]\E/, @remembered_finished_sessions);
+					delete $remembered_sessions_status{@sinfo[1]};
+					delete $remembered_sessions_status_since_time{@sinfo[1]};
+					delete $remembered_sessions_status_since_iterations{@sinfo[1]};
+
+					next;
+				}
+
+				# Reaching this part means that nxagent is still executing.
 				syslog ('debug', "@sinfo[1]: is blocked.");
 				# Only add to finished list if it isn't in there already.
 				if (!(grep { ((defined ($_)) && ($_ =~ m/\Q at sinfo[1]\E/)) } @remembered_finished_sessions)) {
@@ -239,7 +253,7 @@ elsif ($pid == 0 )
 					push (@remembered_finished_sessions, join ('|', @sinfo));
 				}
 
-				# Kill the process if blocked for more than 20 seconds.
+				# Kill the process if blocked for more than 20 seconds and nxagent is still up.
 				if ((time () - $remembered_sessions_status_since_time{@sinfo[1]}) >= 20)
 				{
 					syslog ('debug', "@sinfo[1]: blocked for more than 20 seconds.");

--
Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git


More information about the x2go-commits mailing list