This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit f2ca618e13ef9dbca9a0eba2147908f0301de13a Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Fri Oct 17 11:17:42 2014 +0200 x2golistsessions(_root): Only update session state in session DB if x2goagent's state file really exists. This addresses a problem that occurs when x2golistsessions gets called via an x2gobroker-agent. The x2golistsessions script may show session states (--all-servers) of sessions on other servers that have session states files on their remote /tmp dirs. These files are not accessible for that x2golistsessions script and should simply be ignored. Conflicts (resolved by Mike Gabriel): x2goserver/bin/x2golistsessions x2goserver/sbin/x2golistsessions_root --- X2Go/Server/Agent/NX.pm | 12 ++++++++++++ debian/changelog | 7 +++++++ x2goserver/bin/x2golistsessions | 4 ++-- x2goserver/sbin/x2golistsessions_root | 4 ++-- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/X2Go/Server/Agent/NX.pm b/X2Go/Server/Agent/NX.pm index 308eff0..eca431c 100644 --- a/X2Go/Server/Agent/NX.pm +++ b/X2Go/Server/Agent/NX.pm @@ -71,6 +71,18 @@ sub session_is_running return 0; } +sub has_agent_state_file +{ + my $sess=@_[0]; + my $user=@_[1]; + my $stateFile = "/tmp/.x2go-".$user."/C-".$sess."/state"; + if ( -e $stateFile ) + { + return 1; + } + return 0; +} + sub get_agent_state { my $sess=@_[1]; diff --git a/debian/changelog b/debian/changelog index 85a5ebc..b913469 100644 --- a/debian/changelog +++ b/debian/changelog @@ -157,6 +157,13 @@ x2goserver (4.0.1.19-0x2go1) UNRELEASED; urgency=medium - x2gocleansessions: Call x2gormforward also on terminated sessions. This will make sure that re-assigned ports are really available on new session startup. + - x2golistsessions(_root): Only update session state in session DB if + x2goagent's state file really exists. This addresses a problem that occurs + when x2golistsessions gets called via an x2gobroker-agent. The + x2golistsessions script may show session states (--all-servers) of + sessions on other servers that have session states files on their remote + /tmp dirs. These files are not accessible for that x2golistsessions script + and should simply be ignored. (Fixes: #638). * debian/control: + Add D (x2goserver): libfile-which-perl. * x2goserver.spec: diff --git a/x2goserver/bin/x2golistsessions b/x2goserver/bin/x2golistsessions index 91dedfa..fa21f7b 100755 --- a/x2goserver/bin/x2golistsessions +++ b/x2goserver/bin/x2golistsessions @@ -25,7 +25,7 @@ use Sys::Hostname; use Sys::Syslog qw( :standard :macros ); use X2Go::Server::DB qw(db_listsessions db_listsessions_all db_changestatus); -use X2Go::Server::Agent qw(session_is_suspended session_is_running); +use X2Go::Server::Agent qw(session_is_suspended session_is_running has_agent_state_file); use X2Go::Log qw(loglevel); use X2Go::Utils qw( system_capture_stdout_output is_true ); @@ -70,7 +70,7 @@ for (my $i=0;$i<@outp;$i++) { print "@outp[$i]\n"; } - else + else if (has_agent_state_file(@sinfo[1], @sinfo[11])) { if (@sinfo[4]eq 'R') { diff --git a/x2goserver/sbin/x2golistsessions_root b/x2goserver/sbin/x2golistsessions_root index 5cbff3d..87149be 100755 --- a/x2goserver/sbin/x2golistsessions_root +++ b/x2goserver/sbin/x2golistsessions_root @@ -25,7 +25,7 @@ use Sys::Syslog qw( :standard :macros ); use X2Go::Log qw(loglevel); use X2Go::Utils qw(system_capture_stdout_output); -use X2Go::Server::Agent qw(session_is_suspended); +use X2Go::Server::Agent qw(session_is_suspended has_agent_state_file); my $x2go_lib_path = system_capture_stdout_output("x2gopath", "libexec"); openlog($0,'cons,pid','user'); @@ -51,7 +51,7 @@ for (my $i=0;$i<@outp;$i++) { print "@outp[$i]\n"; } - else + else if (has_agent_state_file(@sinfo[1],@sinfo[11])) { if (@sinfo[4]eq 'R') { -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git