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@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@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@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