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