[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:16:38 CET 2017
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2goserver.
commit d0268b4b6997fee1968d85d37e54ad4de67c5799
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.
Cherry-picked from release/4.0.1.x branch.
---
debian/changelog | 4 ++++
x2goserver/sbin/x2gocleansessions | 16 +++++++++++++++-
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/debian/changelog b/debian/changelog
index 4bc8674..c8670d5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -237,6 +237,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 b97513a..161b5bc 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -221,6 +221,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.
+ log_message ('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.
log_message ('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)) {
@@ -228,7 +242,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)
{
log_message ('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