[X2go-Commits] x2goserver.git - build-main (branch) updated: 3.1.1.0

X2Go dev team git-admin at x2go.org
Wed Apr 4 11:43:20 CEST 2012


The branch, build-main has been updated
       via  3106896d148a55969c98be317595e8911191a163 (commit)
       via  863da3df9fece11be38ec5ce145850913e349873 (commit)
       via  266606a478e62c680d8124eb5750eb0b2a36960a (commit)
       via  d11ed3f11aa6c1b4264f8b4bcf7eedf7e9d3bada (commit)
       via  e0dec6f1eb0e84ff19b5c59899758d85e6bb7ccc (commit)
       via  0cc560c98c5fb10d7efebabe2284dc88e8e990f0 (commit)
       via  2747cda3acda1531fccbd52092e08837866d60ab (commit)
       via  83df64accdfbae7225d3894b49b6c0cde3124847 (commit)
       via  239588d6ced18485c821c81ce305d9c8d2a2eb2f (commit)
       via  d285cbef38ba3d3346c7aaf09b1d06ff9e592fbb (commit)
       via  f1c987d5219aabd1253b9f7d20ad2a98cddd313d (commit)
       via  104db977ff52500d132973cb9481373ba6e367bf (commit)
       via  bdf58be37831c772c5f888e267e807c87d13f3d3 (commit)
       via  e9fc713660e691425c8a6729d0280aa941253c76 (commit)
       via  8af661ea45669bb7af75ffeb7439ede85e2541eb (commit)
       via  07cea7ea8e3679238f3d92e16be882716a652196 (commit)
       via  bf935ac7259bec7d23e6ffd3605ceae7de793b1d (commit)
       via  e2dce016a660b225acf1b0376daa3de9c2b09899 (commit)
       via  c89c4c1b3f57a5f8fb1cf476839f48ecc54ab479 (commit)
       via  76d0c2fb0339c299f8f9dbaa617e82439cd8dbd6 (commit)
       via  28a8cbe306d40da954e8ec21cbba2b289872b575 (commit)
       via  bf04119f723a9d65cde57ac8af4c464195561075 (commit)
       via  06145b01f02ff4d027f9b6f9f2e666f4995e447f (commit)
       via  9e5134f95d8d62a4c09d814a4ce6e8a4d473656f (commit)
       via  d19ebdc221f88654fcf726fd445c0426cb3c7e6b (commit)
       via  691ff9b139b7ab1b30c5389e87c9d8294a7cb021 (commit)
       via  0ae4d0ec543241fb93706958fa0d037b9cb8fc0b (commit)
       via  733794a943e2e47c5a2e557ea5a48759c8a4c95c (commit)
       via  e3dab38f75692668c0a276eab3c09a94655ee320 (commit)
       via  15a647adc8f64e964fd01a18369c2b5783c53157 (commit)
       via  26ffae24c0b9a5040781ff84705258a15e017417 (commit)
       via  a9973bc2ca40e0d4e8ff1cacc799844eaf6ea695 (commit)
       via  840c71310f06661b9d487aefe8d088a2d237c8d1 (commit)
       via  ca589f22db4536a8bff1f9f3b714fcff8caeb9c1 (commit)
      from  739e7c35df6ace61ff5a16609ab641055938ecae (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 debian/changelog                                   |   38 ++++
 debian/control                                     |    2 +-
 debian/x2goserver-xsession.install                 |    2 +-
 debian/x2goserver-xsession.links                   |    3 +
 debian/x2goserver.postinst                         |    5 +
 debian/x2goserver.postrm                           |    6 +
 ...x2goserver-printing.postrm => x2goserver.prerm} |   21 +-
 x2goserver-compat/VERSION.x2goserver-compat        |    2 +-
 x2goserver-compat/man/man8/x2gosuspend-agent.8     |    2 +-
 x2goserver-compat/man/man8/x2gosuspend.8           |    2 +-
 x2goserver-compat/man/man8/x2goterminate.8         |    2 +-
 .../VERSION.x2goserver-extensions                  |    2 +-
 .../bin/x2goserver-run-extensions                  |    6 +-
 .../man/man8/x2goserver-run-extensions.8           |    2 +-
 .../VERSION.x2goserver-fmbindings                  |    2 +-
 x2goserver-fmbindings/man/man8/x2gofm.8            |    2 +-
 x2goserver-printing/VERSION.x2goserver-printing    |    2 +-
 x2goserver-printing/man/man8/x2goprint.8           |    2 +-
 x2goserver-pyhoca/VERSION.x2goserver-pyhoca        |    2 +-
 x2goserver-pyhoca/man/man8/x2gosetkeyboard.8       |    2 +-
 x2goserver-xsession/VERSION.x2goserver-xsession    |    2 +-
 x2goserver-xsession/etc/Xresources                 |    1 -
 x2goserver-xsession/etc/Xsession.d                 |    1 -
 x2goserver-xsession/etc/Xsession.options           |    1 -
 x2goserver/VERSION.x2goserver                      |    2 +-
 x2goserver/bin/{x2gofeature => x2gofeaturelist}    |   11 +-
 x2goserver/bin/x2gogetapps                         |  192 ++++++++++++++++++++
 x2goserver/bin/x2goresume-session                  |   19 ++-
 x2goserver/bin/x2goruncommand                      |   13 +-
 x2goserver/bin/x2gostartagent                      |    6 +-
 x2goserver/lib/x2godbwrapper.pm                    |   27 +++-
 x2goserver/lib/{x2gochangestatus => x2gogetstatus} |    8 +-
 x2goserver/lib/x2gosqlitewrapper.pl                |  174 ++++++++++++++++--
 x2goserver/man/man8/x2gobasepath.8                 |    2 +-
 x2goserver/man/man8/x2gocleansessions.8            |    2 +-
 x2goserver/man/man8/x2gocmdexitmessage.8           |    2 +-
 x2goserver/man/man8/x2godbadmin.8                  |    2 +-
 x2goserver/man/man8/x2gofeature.8                  |    3 +-
 x2goserver/man/man8/x2gofeaturelist.8              |   30 +++
 x2goserver/man/man8/x2gogetservers.8               |    2 +-
 x2goserver/man/man8/x2golistdesktops.8             |    2 +-
 x2goserver/man/man8/x2golistmounts.8               |    2 +-
 x2goserver/man/man8/x2golistsessions.8             |    2 +-
 x2goserver/man/man8/x2golistsessions_root.8        |    2 +-
 x2goserver/man/man8/x2gomountdirs.8                |    2 +-
 x2goserver/man/man8/x2goresume-session.8           |    2 +-
 x2goserver/man/man8/x2goruncommand.8               |    2 +-
 x2goserver/man/man8/x2gosessionlimit.8             |    2 +-
 x2goserver/man/man8/x2goshowblocks.8               |    2 +-
 x2goserver/man/man8/x2gostartagent.8               |    2 +-
 x2goserver/man/man8/x2gosuspend-session.8          |    2 +-
 x2goserver/man/man8/x2goterminate-session.8        |    2 +-
 x2goserver/man/man8/x2goumount-session.8           |    2 +-
 x2goserver/man/man8/x2goversion.8                  |    2 +-
 x2goserver/sbin/x2gocleansessions                  |   16 +-
 x2goserver/sbin/x2golistsessions_root              |    2 +-
 x2goserver/share/x2gofeature.d/x2goserver.features |    1 +
 57 files changed, 556 insertions(+), 98 deletions(-)
 create mode 100644 debian/x2goserver-xsession.links
 copy debian/{x2goserver-printing.postrm => x2goserver.prerm} (68%)
 delete mode 120000 x2goserver-xsession/etc/Xresources
 delete mode 120000 x2goserver-xsession/etc/Xsession.d
 delete mode 120000 x2goserver-xsession/etc/Xsession.options
 copy x2goserver/bin/{x2gofeature => x2gofeaturelist} (77%)
 create mode 100755 x2goserver/bin/x2gogetapps
 copy x2goserver/lib/{x2gochangestatus => x2gogetstatus} (94%)
 create mode 100644 x2goserver/man/man8/x2gofeaturelist.8

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 45606d8..75fa83a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,41 @@
+x2goserver (3.1.1.0-0~x2go1) unstable; urgency=low
+
+  [ Mike Gabriel ]
+  * New upstream version (3.1.1.0):
+    - Syslog warnings have to be named ,,warning'' not ,,warn''. 
+    - Add usage output to x2goserver-run-extensions.
+    - Fix syslog output of x2goserver-run-exentions.
+    - Fix x2goserver extension calls in x2goruncommand.
+    - Add feature name ,,X2GO_PUBLISHED_APPLICATIONS''.
+    - Add new command ,,x2gofeaturelist''. This command can be used
+      by X2Go client applications to retrieve a list of server-side
+      supported X2Go features.
+    - Update date and version number in man pages.
+    - Fix race condition between session.log of x2goagent and
+      x2gocleansessions. The old situation was: in cases that x2goagent
+      was not fast enough with appending the new session state to the
+      session.log file, the x2gocleansessions script marked the session
+      as suspended during the session resuming process.
+    - Wait one second for x2goagent to write to session.log before updating
+      the session state from 'S' to 'R' in the X2Go session database.
+    - Add X2Go server script x2gogetstatus.
+    - Add/enable debugging of x2gocleansessions.
+    - Silence error messages if the agent's session.log file is not accessible
+      (e.g. on NFSv4+Krb5-mounted homes).
+    - Improve concurrent database access with session db backend SQLite.
+  * Remove /etc/x2go/applications on package removal if it is a
+    symlink, keep it, if it is a directory. Remove /etc/x2go
+    (if empty after purge) on package purge.
+  * Bump Debian packaging standards version to 3.9.3.
+  * Use dh_link to symlink X11 directories into /etc/x2go.
+
+  [ Oleksandr Shneyder ]
+  * New upstream version (3.1.1.0):
+    - Support for "published applications".
+      Sponsored by Stefan Baur (http://www.baur-itcs.de).
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 04 Apr 2012 11:41:02 +0200
+
 x2goserver (3.1.0.1-0~x2go1) unstable; urgency=low
 
   * New upstream version (3.1.0.1):
diff --git a/debian/control b/debian/control
index a8578fe..cc3af44 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
 Build-Depends: 
  debhelper (>= 7.0.50~),
  man2html-base | man2html
-Standards-Version: 3.9.2
+Standards-Version: 3.9.3
 Homepage: http://code.x2go.org/releases/source/x2goserver
 Vcs-Git: git://code.x2go.org/x2goserver.git
 Vcs-Browser: http://code.x2go.org/gitweb?p=x2goserver.git;a=summary
diff --git a/debian/x2goserver-xsession.install b/debian/x2goserver-xsession.install
index 31531bb..d80b6d5 100644
--- a/debian/x2goserver-xsession.install
+++ b/debian/x2goserver-xsession.install
@@ -1,3 +1,3 @@
-x2goserver-xsession/etc/*                               /etc/x2go/
+x2goserver-xsession/etc/Xsession                        /etc/x2go/
 x2goserver-xsession/VERSION.x2goserver-xsession         /usr/share/x2go/versions/
 x2goserver-xsession/share/x2gofeature.d/*               /usr/share/x2go/x2gofeature.d/
diff --git a/debian/x2goserver-xsession.links b/debian/x2goserver-xsession.links
new file mode 100644
index 0000000..937529e
--- /dev/null
+++ b/debian/x2goserver-xsession.links
@@ -0,0 +1,3 @@
+etc/X11/Xresources etc/x2go/Xresources
+etc/X11/Xsession.d etc/x2go/Xsession.d
+etc/X11/Xsession.options etc/x2go/Xsession.options
diff --git a/debian/x2goserver.postinst b/debian/x2goserver.postinst
index f1582a8..2837629 100755
--- a/debian/x2goserver.postinst
+++ b/debian/x2goserver.postinst
@@ -98,6 +98,11 @@ case "$1" in
 		    dpkg-statoverride --add --update root x2gouser 2755 /usr/lib/x2go/x2gosqlitewrapper
 		fi
 
+		# create /etc/x2go/applications symlink if not already there (as link or as dir)
+		if ! test -e /etc/x2go/applications; then
+			ln -s /usr/share/applications /etc/x2go/applications 
+		fi
+
 		;;
 
 	abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/debian/x2goserver.postrm b/debian/x2goserver.postrm
index ec6b579..2d965cc 100755
--- a/debian/x2goserver.postrm
+++ b/debian/x2goserver.postrm
@@ -27,6 +27,12 @@ case "$1" in
 		getent passwd x2gouser >/dev/null && deluser x2gouser
 		getent group x2gouser >/dev/null && delgroup x2gouser
 		getent group x2gousers >/dev/null && delgroup x2gousers
+
+		rm -Rf /etc/x2go/applications
+		rm -Rf /etc/x2go/sql
+		rm -Rf /etc/x2go/x2go_logout.d
+		rmdir --ignore-fail-on-non-empty /etc/x2go
+
 		;;
 	remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 		;;
diff --git a/debian/x2goserver-printing.postrm b/debian/x2goserver.prerm
similarity index 68%
copy from debian/x2goserver-printing.postrm
copy to debian/x2goserver.prerm
index 16b0f1e..1ec6436 100755
--- a/debian/x2goserver-printing.postrm
+++ b/debian/x2goserver.prerm
@@ -1,5 +1,5 @@
 #! /bin/sh
-# postrm script for x2goserver-printing
+# prerm script for x2goserver
 #
 # see: dh_installdeb(1)
 # summary of how this script can be called:
@@ -17,16 +17,17 @@ set -e
 
 
 case "$1" in
-	purge)
-		getent passwd x2goprint >/dev/null && deluser x2goprint
-		getent group x2goprint >/dev/null && delgroup x2goprint
+	remove)
+		# The package is being removed in its own right.
+		if test -L /etc/x2go/applications; then
+			rm -f /etc/x2go/applications
+		fi
 		;;
-	remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-		;;
-	*)
-		echo "postrm called with unknown argument \`$1'" >&2
-		exit 0
+	deconfigure|upgrade|failed-upgrade)
+		:
 		;;
+	*) echo "$0: didn't understand being called with \`$1'" 1>&2
+		exit 1;;
 esac
 
 # dh_installdeb will replace this with shell code automatically
@@ -34,4 +35,4 @@ esac
 
 #DEBHELPER#
 
-exit 0
\ No newline at end of file
+exit 0
diff --git a/x2goserver-compat/VERSION.x2goserver-compat b/x2goserver-compat/VERSION.x2goserver-compat
index c59e32f..b8f4d84 100644
--- a/x2goserver-compat/VERSION.x2goserver-compat
+++ b/x2goserver-compat/VERSION.x2goserver-compat
@@ -1 +1 @@
-3.1.0.1
\ No newline at end of file
+3.1.1.0
\ No newline at end of file
diff --git a/x2goserver-compat/man/man8/x2gosuspend-agent.8 b/x2goserver-compat/man/man8/x2gosuspend-agent.8
index 0256909..bb91061 100644
--- a/x2goserver-compat/man/man8/x2gosuspend-agent.8
+++ b/x2goserver-compat/man/man8/x2gosuspend-agent.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gosuspend-agent 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (compat)"
+.TH x2gosuspend-agent 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool (compat)"
 .SH NAME
 x2gosuspend-agent \- X2Go Server Script (deprecated, shipped for compatibility with old clients)
 .SH SYNOPSIS
diff --git a/x2goserver-compat/man/man8/x2gosuspend.8 b/x2goserver-compat/man/man8/x2gosuspend.8
index e7aa661..a0c59ac 100644
--- a/x2goserver-compat/man/man8/x2gosuspend.8
+++ b/x2goserver-compat/man/man8/x2gosuspend.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gosuspend 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (compat)"
+.TH x2gosuspend 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool (compat)"
 .SH NAME
 x2gosuspend \- X2Go Server Script (deprecated, shipped for compatibility with old clients)
 .SH SYNOPSIS
diff --git a/x2goserver-compat/man/man8/x2goterminate.8 b/x2goserver-compat/man/man8/x2goterminate.8
index 5af4784..f91d6b8 100644
--- a/x2goserver-compat/man/man8/x2goterminate.8
+++ b/x2goserver-compat/man/man8/x2goterminate.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goterminate 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (compat)"
+.TH x2goterminate 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool (compat)"
 .SH NAME
 x2goterminate \- X2Go Server Script (deprecated, shipped for compatibility with old clients)
 .SH SYNOPSIS
diff --git a/x2goserver-extensions/VERSION.x2goserver-extensions b/x2goserver-extensions/VERSION.x2goserver-extensions
index c59e32f..b8f4d84 100644
--- a/x2goserver-extensions/VERSION.x2goserver-extensions
+++ b/x2goserver-extensions/VERSION.x2goserver-extensions
@@ -1 +1 @@
-3.1.0.1
\ No newline at end of file
+3.1.1.0
\ No newline at end of file
diff --git a/x2goserver-extensions/bin/x2goserver-run-extensions b/x2goserver-extensions/bin/x2goserver-run-extensions
index c7b671c..70636f6 100755
--- a/x2goserver-extensions/bin/x2goserver-run-extensions
+++ b/x2goserver-extensions/bin/x2goserver-run-extensions
@@ -23,6 +23,8 @@
 
 set -e
 
+test -z $2 && { echo "usage: $(basename $0) <X2GO_SESSION_ID> <MODALITY>"; exit -1; }
+
 X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go`
 
 $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
@@ -34,9 +36,9 @@ X2GO_MODALITY="$2"
 find /usr/lib/x2go/extensions/${X2GO_MODALITY}.d/ -maxdepth 1 -mindepth 1 | egrep "/[0-9]{3}_[[:alnum:]]+" | sort | while read x2go_extension; do
 	$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "executing $x2go_extension with option $X2GO_SESSION"
 	$x2go_extension "$X2GO_SESSION" &>/dev/null && {
-		$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$x2go_extension$(basename $0) for session $X2GO_SESSION has finished sucessfully"
+		$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$x2go_extension ($(basename $0)) for session $X2GO_SESSION has finished sucessfully"
 	} || {
-		$X2GO_LIB_PATH/x2gosyslog "$0" "warn" "$x2go_extension$(basename $0) for session $X2GO_SESSION returned a non-zero exit code, continuing..."
+		$X2GO_LIB_PATH/x2gosyslog "$0" "warning" "$x2go_extension ($(basename $0)) for session $X2GO_SESSION returned a non-zero exit code, continuing..."
 	}
 done
 
diff --git a/x2goserver-extensions/man/man8/x2goserver-run-extensions.8 b/x2goserver-extensions/man/man8/x2goserver-run-extensions.8
index d63cf6f..9e3d86d 100644
--- a/x2goserver-extensions/man/man8/x2goserver-run-extensions.8
+++ b/x2goserver-extensions/man/man8/x2goserver-run-extensions.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goserver-run-extensions 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goserver-run-extensions 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goserver-run-extensions \- Run X2Go Server Extensions
 .SH SYNOPSIS
diff --git a/x2goserver-fmbindings/VERSION.x2goserver-fmbindings b/x2goserver-fmbindings/VERSION.x2goserver-fmbindings
index a9e279d..78df7c8 100644
--- a/x2goserver-fmbindings/VERSION.x2goserver-fmbindings
+++ b/x2goserver-fmbindings/VERSION.x2goserver-fmbindings
@@ -1 +1 @@
-3.1.0.1
+3.1.1.0
diff --git a/x2goserver-fmbindings/man/man8/x2gofm.8 b/x2goserver-fmbindings/man/man8/x2gofm.8
index 4f49941..576d5e4 100644
--- a/x2goserver-fmbindings/man/man8/x2gofm.8
+++ b/x2goserver-fmbindings/man/man8/x2gofm.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gofm 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server"
+.TH x2gofm 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server"
 .SH NAME
 x2gofm \- X2Go wrapper for Browsing X2Go Shared Folders
 .SH SYNOPSIS
diff --git a/x2goserver-printing/VERSION.x2goserver-printing b/x2goserver-printing/VERSION.x2goserver-printing
index c59e32f..b8f4d84 100644
--- a/x2goserver-printing/VERSION.x2goserver-printing
+++ b/x2goserver-printing/VERSION.x2goserver-printing
@@ -1 +1 @@
-3.1.0.1
\ No newline at end of file
+3.1.1.0
\ No newline at end of file
diff --git a/x2goserver-printing/man/man8/x2goprint.8 b/x2goserver-printing/man/man8/x2goprint.8
index 1786dee..c22276a 100644
--- a/x2goserver-printing/man/man8/x2goprint.8
+++ b/x2goserver-printing/man/man8/x2goprint.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goprint 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goprint 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goprint \- Process X2Go Print Job
 .SH SYNOPSIS
diff --git a/x2goserver-pyhoca/VERSION.x2goserver-pyhoca b/x2goserver-pyhoca/VERSION.x2goserver-pyhoca
index c59e32f..b8f4d84 100644
--- a/x2goserver-pyhoca/VERSION.x2goserver-pyhoca
+++ b/x2goserver-pyhoca/VERSION.x2goserver-pyhoca
@@ -1 +1 @@
-3.1.0.1
\ No newline at end of file
+3.1.1.0
\ No newline at end of file
diff --git a/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8 b/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8
index a87d080..3e9baaf 100644
--- a/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8
+++ b/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gosetkeyboard 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (PyHoca)"
+.TH x2gosetkeyboard 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool (PyHoca)"
 .SH NAME
 x2gosetkeyboard \- Allow server-side Keyboard Setting Updates issued by X2Go Client
 .SH SYNOPSIS
diff --git a/x2goserver-xsession/VERSION.x2goserver-xsession b/x2goserver-xsession/VERSION.x2goserver-xsession
index c59e32f..b8f4d84 100644
--- a/x2goserver-xsession/VERSION.x2goserver-xsession
+++ b/x2goserver-xsession/VERSION.x2goserver-xsession
@@ -1 +1 @@
-3.1.0.1
\ No newline at end of file
+3.1.1.0
\ No newline at end of file
diff --git a/x2goserver-xsession/etc/Xresources b/x2goserver-xsession/etc/Xresources
deleted file mode 120000
index 484aa45..0000000
--- a/x2goserver-xsession/etc/Xresources
+++ /dev/null
@@ -1 +0,0 @@
-/etc/X11/Xresources
\ No newline at end of file
diff --git a/x2goserver-xsession/etc/Xsession.d b/x2goserver-xsession/etc/Xsession.d
deleted file mode 120000
index f64317e..0000000
--- a/x2goserver-xsession/etc/Xsession.d
+++ /dev/null
@@ -1 +0,0 @@
-/etc/X11/Xsession.d
\ No newline at end of file
diff --git a/x2goserver-xsession/etc/Xsession.options b/x2goserver-xsession/etc/Xsession.options
deleted file mode 120000
index 72929e1..0000000
--- a/x2goserver-xsession/etc/Xsession.options
+++ /dev/null
@@ -1 +0,0 @@
-/etc/X11/Xsession.options
\ No newline at end of file
diff --git a/x2goserver/VERSION.x2goserver b/x2goserver/VERSION.x2goserver
index c59e32f..b8f4d84 100644
--- a/x2goserver/VERSION.x2goserver
+++ b/x2goserver/VERSION.x2goserver
@@ -1 +1 @@
-3.1.0.1
\ No newline at end of file
+3.1.1.0
\ No newline at end of file
diff --git a/x2goserver/bin/x2gofeature b/x2goserver/bin/x2gofeaturelist
similarity index 77%
copy from x2goserver/bin/x2gofeature
copy to x2goserver/bin/x2gofeaturelist
index f379070..1258a77 100755
--- a/x2goserver/bin/x2gofeature
+++ b/x2goserver/bin/x2gofeaturelist
@@ -17,24 +17,17 @@
 # Free Software Foundation, Inc.,
 # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 #
-# Copyright (C) 2011-2012  Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
-# Copyright (C) 2011-2012  Heinz-Markus Graesing <heinz-m.graesing at obviously-nice.de>
-
-[ -z $1 ] && { echo usage: "$(basename $0) <X2GO_FEATURE_NAME>"; exit -2; }
+# Copyright (C) 2011-2012  Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
 
 X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go`
 X2GO_SHARE_PATH=`echo -n \$(x2gobasepath)/share/x2go`
 
 $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
 
-X2GO_FEATURE=$1
-
 # run x2gofeature scripts of X2Go extensions
 test -d "$X2GO_SHARE_PATH/x2gofeature.d" && {
     for subscript in $X2GO_SHARE_PATH/x2gofeature.d/*.features; do
-        $subscript $@ && exit 0
+        cat $subscript | egrep ".*\).*ok.*exit 0.*" | cut -d"\"" -f2 | cut -d"\"" -f1
     done
 }
 
-echo "not available"
-exit -1
diff --git a/x2goserver/bin/x2gogetapps b/x2goserver/bin/x2gogetapps
new file mode 100755
index 0000000..f95a1ee
--- /dev/null
+++ b/x2goserver/bin/x2gogetapps
@@ -0,0 +1,192 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2007-2012 X2Go Project - http://wiki.x2go.org
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Copyright (C) 2007-2012  Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
+# Copyright (C) 2007-2012  Heinz-Markus Graesing <heinz-m.graesing at obviously-nice.de>
+
+use strict;
+use Sys::Syslog qw( :standard :macros );
+use MIME::Base64 qw(encode_base64);
+
+use lib `echo -n \$(x2gobasepath)/lib/x2go`;
+use x2gologlevel;
+
+my @iconext=("png","svg","jpeg","jpg","xpm","bmp");
+
+my @icondirs=(
+"/usr/share/icons/hicolor/22x22/apps",
+"/usr/share/icons/hicolor/24x24/apps",
+"/usr/share/icons/hicolor/32x32/apps",
+"/usr/share/icons/hicolor/36x36/apps",
+"/usr/share/icons/hicolor/48x48/apps",
+"/usr/share/icons/hicolor/64x64/apps",
+"/usr/share/icons/hicolor/72x72/apps",
+"/usr/share/icons/hicolor/96x96/apps",
+"/usr/share/icons/hicolor/128x128/apps",
+"/usr/share/icons/hicolor/256x256/apps",
+"/usr/share/icons/hicolor/scalable/apps",
+"/usr/share/pixmaps",
+"/usr/share/icons/default.kde/22x22/apps",
+"/usr/share/icons/default.kde/24x24/apps",
+"/usr/share/icons/default.kde/32x32/apps",
+"/usr/share/icons/default.kde/36x36/apps",
+"/usr/share/icons/default.kde/48x48/apps",
+"/usr/share/icons/default.kde/64x64/apps",
+"/usr/share/icons/default.kde/72x72/apps",
+"/usr/share/icons/default.kde/96x96/apps",
+"/usr/share/icons/default.kde/128x128/apps",
+"/usr/share/icons/default.kde/256x256/apps",
+"/usr/share/icons/default.kde4/22x22/apps",
+"/usr/share/icons/default.kde4/24x24/apps",
+"/usr/share/icons/default.kde4/32x32/apps",
+"/usr/share/icons/default.kde4/36x36/apps",
+"/usr/share/icons/default.kde4/48x48/apps",
+"/usr/share/icons/default.kde4/64x64/apps",
+"/usr/share/icons/default.kde4/72x72/apps",
+"/usr/share/icons/default.kde4/96x96/apps",
+"/usr/share/icons/default.kde4/128x128/apps",
+"/usr/share/icons/default.kde4/256x256/apps"
+);
+
+sub findicon
+{
+	my $file=shift;
+	foreach(@iconext)
+	{
+		my $icon=findicon_ext("$file.$_");
+		if( $icon ne "" )
+		{
+			return "$icon";
+		}
+	}
+	return "";
+}
+
+sub findicon_ext
+{
+	my $file=shift;
+	foreach(@icondirs)
+	{
+		if( -e "$_/$file" )
+		{
+			return "$_/$file";
+		}
+	}
+	return "";
+}
+
+sub printicon
+{
+	my $file=shift;
+	if (open(I,"<$file"))
+	{
+		my $buf;
+		print "<icon>\n";
+		while (read(I, $buf, 60*57)) 
+		{
+			print encode_base64($buf);
+		}
+		print "</icon>\n";
+		close(I);
+	}
+	else
+	{
+		syslog ('info', "x2gogetapps:printicon - can't open file $file: $!");
+	}
+}
+
+sub proc_desktop_file
+{
+	my $file=shift;
+	if (open(F,"<$file"))
+	{
+		print("<desktop>\n");
+		while(!eof(F))
+		{
+			my $line=<F>;
+			if( $line=~m/^Categories/i || $line=~m/^Name/i || $line=~m/^Comment/i ||  $line=~m/^Exec/i)
+			{
+				print $line;
+			}
+			if( $line =~ m/^Icon/ )
+			{
+				my $icon=$line;
+				$icon =~ s/Icon=//;
+				chop($icon);
+				#$line is absolute path
+				if($icon =~ m/\//)
+				{
+					$icon=$icon;
+				}
+				#$line have format ext.
+				elsif ($line =~ m/\./)
+				{
+					$icon=findicon_ext($icon);
+				}
+				else
+				{
+					$icon=findicon($icon);
+				}
+				printicon($icon);
+			}
+		}
+		close (F);
+		print("</desktop>\n");
+	}
+	else
+	{
+		syslog ('info', "x2gogetapps:proc_desktop_file - can't open file $file: $!");
+	}
+}
+
+openlog($0,'cons,pid','user');
+setlogmask( LOG_UPTO(x2gologlevel()) );
+
+if ( @ARGV ) {
+	syslog('info', "x2gogetapps has been called with options: @ARGV");
+} else {
+	syslog('info', "x2gogetapps has been called without options");
+}
+
+my $file;
+my @dirs;
+ at dirs[0]="/etc/x2go/applications";
+my ($name, $pass, $uid, $gid, $quota, $comment, $gcos, $homedir, $shell, $expire) = getpwnam(getlogin || getpwuid($<));
+ at dirs[1]="$homedir/.x2go/applications";
+foreach(@dirs)
+{
+	my $dirname=$_;
+	if( opendir(DIR, $dirname))
+	{
+		while (defined($file = readdir(DIR))) 
+		{
+			if($file =~ m/.desktop/)
+			{
+				proc_desktop_file("$dirname/$file");
+			}
+		}
+		closedir(DIR);
+	}
+	else
+	{
+		syslog ('info', "x2gogetapps - can't opendir $dirname: $!");
+	}
+}
+# closing syslog 
+closelog;
diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session
index e03751a..50cb638 100755
--- a/x2goserver/bin/x2goresume-session
+++ b/x2goserver/bin/x2goresume-session
@@ -149,14 +149,28 @@ fi
 
 echo "$NEWOPTIONS" >"${SESSION_DIR}/options"
 
-$X2GO_LIB_PATH/x2goresume  "$X2GO_CLIENT" "$SESSION_NAME"  "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null
-
 # run x2goserver-extensions for pre-resume
 x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-resume || true
 
 kill -HUP $X2GO_AGENT_PID &>/dev/null && {
 	$X2GO_LIB_PATH/x2gosyslog "$0" "notice" "client $X2GO_CLIENT has successfully resumed session with ID $SESSION_NAME"
 
+	# FIXME: the below code may not be necessary as we fixed a race condition between x2gocleansessions and x2goagent
+
+	# we really have to make sure the session database gets this write operation
+	# this may just be an SQLite issue so...
+	# FIXME: probably migrate this piece of code to the SQLite db backend...
+	#while true; do
+	#	$X2GO_LIB_PATH/x2goresume  "$X2GO_CLIENT" "$SESSION_NAME"  "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null
+	#	if [ $($X2GO_LIB_PATH/x2gogetstatus "$SESSION_NAME") == "R" ]; then
+	#		break;
+	#	else
+	#		$X2GO_LIB_PATH/x2gosyslog "$0" "warning" "failed to write to X2Go db, will try again..."
+	#		sleep 1;
+	#	fi
+	#done
+	(sleep 1; $X2GO_LIB_PATH/x2goresume  "$X2GO_CLIENT" "$SESSION_NAME"  "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null;)
+
 	# resume x2godesktopsharing, if it has been in use before the session got suspended
 	x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2goresume-desktopsharing "$SESSION_NAME" || true
 
@@ -180,3 +194,4 @@ kill -HUP $X2GO_AGENT_PID &>/dev/null && {
 echo "gr_port=$GR_PORT"
 echo "sound_port=$SOUND_PORT"
 echo "fs_port=$FS_PORT"
+
diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand
index fd9f82d..2f70633 100755
--- a/x2goserver/bin/x2goruncommand
+++ b/x2goserver/bin/x2goruncommand
@@ -122,8 +122,15 @@ then
 	IMEXIT="true"
 fi
 
+if [ "$X2GO_SESS_TYPE" == "P" ]
+then
+	IMEXIT="false"
+	EXEC="/bin/true"
+	X2GO_SESS_TYPE="R"
+fi
+
 # run x2goserver-extensions for pre-runcommand
-x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-runcommand || true
+x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$X2GO_SESSION" pre-runcommand || true
 
 sucessful_run=false
 if [ "$EXEC" != "" ] && [ -x $EXEC ]; then
@@ -148,14 +155,14 @@ if [ "$EXEC" != "" ] && [ -x $EXEC ]; then
 	successful_run=true
 
 	# run x2goserver-extensions for post-runcommand
-	x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" post-runcommand || true
+	x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$X2GO_SESSION" post-runcommand || true
 
 else
 	$X2GO_LIB_PATH/x2gosyslog "$0" "err" "ERROR: command $EXEC failed to execute"
 	echo "X2GORUNCOMMAND ERR NOEXEC:$cmd" > "$MESSAGE_FILE"
 
 	# run x2goserver-extensions for fail-runcommand
-	x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" fail-runcommand || true
+	x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$X2GO_SESSION" fail-runcommand || true
 
 fi
 
diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent
index 679852e..739a0c2 100755
--- a/x2goserver/bin/x2gostartagent
+++ b/x2goserver/bin/x2gostartagent
@@ -105,9 +105,13 @@ export NX_CLIENT="$X2GO_LIB_PATH/x2gosuspend-agent"
 COLORDEPTH=`echo "$X2GO_TYPE"|awk '{split($0,a,"-depth_"); print a[2]}'`
 
 SESSION_TYPE="D"
+NOEXITPARAM=""
 
 if [ "$X2GO_STYPE" == "R" ]; then
 	SESSION_TYPE="R"
+elif  [ "$X2GO_STYPE" == "P" ]; then
+	SESSION_TYPE="R"
+	NOEXITPARAM="-norootlessexit"
 elif  [ "$X2GO_STYPE" == "S" ]; then
 	SESSION_TYPE="S"
 fi
@@ -244,7 +248,7 @@ SESSION_WINDOW_TITLE="X2GO-${SESSION_NAME}"
 if  [ "$X2GO_STYPE" == "S" ]; then
 	x2goagent $X2GODPIOPTION_ -$SESSION_TYPE -auth "$XAUTHORITY" -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}"  "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" &
 else
-	x2goagent $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE -auth "$XAUTHORITY" -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}"  "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" &
+	x2goagent $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE $NOEXITPARAM -auth "$XAUTHORITY" -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}"  "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" &
 fi
 
 
diff --git a/x2goserver/lib/x2godbwrapper.pm b/x2goserver/lib/x2godbwrapper.pm
index aec0294..2690544 100644
--- a/x2goserver/lib/x2godbwrapper.pm
+++ b/x2goserver/lib/x2godbwrapper.pm
@@ -85,7 +85,7 @@ if ($backend eq 'postgres')
 
 use base 'Exporter';
 
-our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus', 
+our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus', 'db_getstatus', 
              'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_rmport', 'db_createsession', 'db_insertmount', 
              'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot', 
              'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot');
@@ -410,6 +410,31 @@ sub db_changestatus
 	syslog('debug', "db_changestatus called, session ID: $sid, new status: $status");
 }
 
+sub db_getstatus
+{
+	my $sid=shift or die "argument \"session_id\" missed";
+	my $status='';
+	if ($backend eq 'postgres')
+	{
+		my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+		my $sth=$dbh->prepare("select status from sessions_view where session_id = '$sid'");
+		$sth->execute($sid) or die;
+		my @data;
+		if (@data = $sth->fetchrow_array) 
+		{
+			$status=@data[0];
+		}
+		$sth->finish();
+		$dbh->disconnect();
+	}
+	if ($backend eq 'sqlite')
+	{
+		$status=`$x2go_lib_path/x2gosqlitewrapper getstatus $sid`;
+	}
+	syslog('debug', "db_getstatus called, session ID: $sid, return value: $status");
+	return $status;
+}
+
 sub db_getdisplays
 {
 	my @displays;
diff --git a/x2goserver/lib/x2gochangestatus b/x2goserver/lib/x2gogetstatus
similarity index 94%
copy from x2goserver/lib/x2gochangestatus
copy to x2goserver/lib/x2gogetstatus
index ce33520..d2271a4 100755
--- a/x2goserver/lib/x2gochangestatus
+++ b/x2goserver/lib/x2gogetstatus
@@ -30,11 +30,11 @@ use x2gologlevel;
 openlog($0,'cons,pid','user');
 setlogmask( LOG_UPTO(x2gologlevel()) );
 
-
-my $status=shift or die;
+my $status;
 my $sid=shift or die;
 
-db_changestatus($status, $sid);
+$status = db_getstatus($sid);
+print "$status";
 
 # closing syslog 
-closelog;
\ No newline at end of file
+closelog;
diff --git a/x2goserver/lib/x2gosqlitewrapper.pl b/x2goserver/lib/x2gosqlitewrapper.pl
index 1e3b7e3..ba2c02d 100755
--- a/x2goserver/lib/x2gosqlitewrapper.pl
+++ b/x2goserver/lib/x2gosqlitewrapper.pl
@@ -24,6 +24,36 @@ use strict;
 use DBI;
 use POSIX;
 
+#### NOTE: this script is run setgid <group> and it cannot do system() calls.
+
+####
+#### One consequence of this is...
+#### This first part of code that handles syslogging is duplicated from
+#### x2gologlevel.pm. This is because we are not able to detect the
+#### installation path automatically via the x2gobasepath in this
+#### script.
+####
+
+use Config::Simple;
+use Sys::Syslog qw( :standard :macros );
+my $Config = new Config::Simple(syntax=>'ini');
+$Config->read('/etc/x2go/x2goserver.conf' );
+my $strloglevel = $Config->param("log.loglevel");
+my $loglevel = LOG_NOTICE;
+if    ( $strloglevel eq "emerg" )  { $loglevel = LOG_EMERG; }
+elsif ( $strloglevel eq "alert" )  { $loglevel = LOG_ALERT; }
+elsif ( $strloglevel eq "crit" )   { $loglevel = LOG_CRIT; }
+elsif ( $strloglevel eq "err" )    { $loglevel = LOG_ERR; }
+elsif ( $strloglevel eq "warning" )   { $loglevel = LOG_WARNING; }
+elsif ( $strloglevel eq "notice" ) { $loglevel = LOG_NOTICE; }
+elsif ( $strloglevel eq "info" )   { $loglevel = LOG_INFO; }
+elsif ( $strloglevel eq "debug" )  { $loglevel = LOG_DEBUG; }
+setlogmask( LOG_UPTO($loglevel) );
+
+####
+#### end of duplicated syslogging code
+####
+
 # retrieve home dir of x2gouser
 my $x2gouser='x2gouser';
 my ($uname, $pass, $uid, $pgid, $quota, $comment, $gcos, $homedir, $shell, $expire) = getpwnam($x2gouser);
@@ -33,16 +63,23 @@ my $dbfile="$homedir/x2go_sessions";
 my ($uname, $pass, $uid, $pgid, $quota, $comment, $gcos, $homedir, $shell, $expire) = getpwuid($<);
 my $realuser=$uname;
 
-my $dbh=DBI->connect("dbi:SQLite:dbname=$dbfile","","",{AutoCommit => 1}) or die $_;
+my $dbh=DBI->connect("dbi:SQLite:dbname=$dbfile","","",{sqlite_use_immediate_transaction => 1, AutoCommit => 1, }) or die $_;
+$dbh->sqlite_busy_timeout( 2000 );
 
 my $cmd=shift or die "command not specified";
+my $rc=0;
 
 if($cmd eq  "rmsessionsroot")
 {
 	checkroot();
 	my $sid=shift or die "argument \"session_id\" missed";
 	my $sth=$dbh->prepare("delete from sessions  where session_id=?");
-	$sth->execute($sid)or die;
+	$sth->execute($sid);
+	if ($sth->err())
+	{
+		syslog('error', "rmsessionsroot (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die;
+	}
 	$sth->finish();
 }
 
@@ -58,7 +95,11 @@ elsif($cmd eq  "listsessionsroot")
 	                       uname,
 	                       strftime('%s','now','localtime') - strftime('%s',init_time),fs_port from  sessions
 	                       where server=?  order by status desc");
-	$sth->execute($server) or die;
+	$sth->execute($server);
+	if ($sth->err()) {
+		syslog('error', "listsessionsroot (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	fetchrow_printall_array($sth);
 }
 
@@ -73,7 +114,12 @@ elsif($cmd eq  "listsessionsroot_all")
 	                       uname,
 	                       strftime('%s','now','localtime') - strftime('%s',init_time),fs_port from  sessions
 	                       order by status desc");
-	$sth->execute()or die;
+	$sth->execute();
+	if ($sth->err())
+	{
+		syslog('error', "listsessionsroot_all (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	fetchrow_printall_array($sth);
 }
 
@@ -83,7 +129,12 @@ elsif($cmd eq  "getmounts")
 	check_user($sid);
 	my @strings;
 	my $sth=$dbh->prepare("select client, path from mounts where session_id=?");
-	$sth->execute($sid)or die;
+	$sth->execute($sid);
+	if ($sth->err())
+	{
+		syslog('error', "getmounts (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die;
+	}
 	fetchrow_printall_array($sth);
 }
 
@@ -94,6 +145,11 @@ elsif($cmd eq  "deletemount")
 	check_user($sid);
 	my $sth=$dbh->prepare("delete from mounts where session_id=? and path=?");
 	$sth->execute($sid, $path);
+	if ($sth->err())
+	{
+		syslog('error', "deletemount (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	$sth->finish();
 }
 
@@ -105,9 +161,11 @@ elsif($cmd eq  "insertmount")
 	check_user($sid);
 	my $sth=$dbh->prepare("insert into mounts (session_id,path,client) values  (?, ?, ?)");
 	$sth->execute($sid, $path, $client);
-	if(!$sth->err())
+	if(! $sth->err())
 	{
 		print "ok";
+	} else {
+		syslog('debug', "insertmount (SQLite3 session db backend) failed with exitcode: $sth->err(), this issue will be interpreted as: SSHFS share already mounted");
 	}
 	$sth->finish();
 }
@@ -137,7 +195,12 @@ elsif($cmd eq  "createsession")
 	check_user($sid);
 	my $sth=$dbh->prepare("update sessions set status='R',last_time=datetime('now','localtime'),cookie=?,agent_pid=?,
 	                       client=?,gr_port=?,sound_port=?,fs_port=? where session_id=? and uname=?");
-	$sth->execute($cookie, $pid, $client, $gr_port, $snd_port, $fs_port, $sid, $realuser)or die;
+	$sth->execute($cookie, $pid, $client, $gr_port, $snd_port, $fs_port, $sid, $realuser);
+	if ($sth->err())
+	{
+		syslog('error', "createsession (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	$sth->finish();
 	print "ok";
 }
@@ -149,7 +212,12 @@ elsif($cmd eq  "insertport")
 	my $sshport=shift or die "argument \"port\" missed";
 	my $sth=$dbh->prepare("insert into used_ports (server,session_id,port) values  (?, ?, ?)");
 	check_user($sid);
-	$sth->execute($server, $sid, $sshport) or die;
+	$sth->execute($server, $sid, $sshport);
+	if ($sth->err())
+	{
+		syslog('error', "insertport (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	$sth->finish();
 }
 
@@ -160,7 +228,11 @@ elsif($cmd eq  "rmport")
 	my $sshport=shift or die "argument \"port\" missed";
 	my $sth=$dbh->prepare("delete from used_ports where server=? and session_id=? and port=?");
 	check_user($sid);
-	$sth->execute($server, $sid, $sshport) or die;
+	$sth->execute($server, $sid, $sshport);
+	if ($sth->err()) {
+		syslog('error', "rmport (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	$sth->finish();
 }
 
@@ -174,7 +246,12 @@ elsif($cmd eq  "resume")
 	check_user($sid);
 	my $sth=$dbh->prepare("update sessions set last_time=datetime('now','localtime'),status='R',
 	                       client=?,gr_port=?,sound_port=?,fs_port=? where session_id = ? and uname=?");
-	$sth->execute($client, $gr_port, $sound_port, $fs_port, $sid, $realuser) or die;
+	$sth->execute($client, $gr_port, $sound_port, $fs_port, $sid, $realuser);
+	if ($sth->err())
+	{
+		syslog('error', "resume (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	$sth->finish();
 }
 
@@ -185,16 +262,47 @@ elsif($cmd eq  "changestatus")
 	check_user($sid);
 	my $sth=$dbh->prepare("update sessions set last_time=datetime('now','localtime'),
 	                       status=? where session_id = ? and uname=?");
-	$sth->execute($status, $sid, $realuser)or die;
+	$sth->execute($status, $sid, $realuser);
+	if ($sth->err())
+	{
+		syslog('error', "changestatus (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	$sth->finish();
 }
 
+elsif($cmd eq  "getstatus")
+{
+	my $sid=shift or die "argument \"session_id\" missed";
+	check_user($sid);
+	my $sth=$dbh->prepare("select status from sessions where session_id = ?");
+	$sth->execute($sid);
+	if ($sth->err())
+	{
+		syslog('error', "changestatus (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
+	my @data;
+	my $status;
+	@data = $sth->fetchrow_array;
+	{
+		$status = @data[0];
+	}
+	$sth->finish();
+	print $status;
+}
+
 elsif($cmd eq  "getdisplays")
 {
 	#ignore $server
 	my @strings;
 	my $sth=$dbh->prepare("select display from sessions");
-	$sth->execute()or die;
+	$sth->execute();
+	if ($sth->err())
+	{
+		syslog('error', "getdisplays (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	my @data;
 	my $i=0;
 	while (@data = $sth->fetchrow_array)
@@ -212,7 +320,12 @@ elsif($cmd eq  "getports")
 	my $server=shift or die "argument \"server\" missed";
 	my @strings;
 	my $sth=$dbh->prepare("select port from used_ports");
-	$sth->execute()or die;
+	$sth->execute();
+	if ($sth->err())
+	{
+		syslog('error', "getports (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	my @data;
 	my $i=0;
 	while (@data = $sth->fetchrow_array)
@@ -227,7 +340,12 @@ elsif($cmd eq  "getservers")
 {
 	my @strings;
 	my $sth=$dbh->prepare("select server,count(*) from sessions where status != 'F' group by server");
-	$sth->execute()or die;
+	$sth->execute();
+	if ($sth->err())
+	{
+		syslog('error', "getservers (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	my @data;
 	my $i=0;
 	while (@data = $sth->fetchrow_array)
@@ -245,7 +363,12 @@ elsif($cmd eq  "getagent")
 	check_user($sid);
 	my $sth=$dbh->prepare("select agent_pid from sessions
 	                       where session_id=?");
-	$sth->execute($sid)or die;
+	$sth->execute($sid);
+	if ($sth->err())
+	{
+		syslog('error', "getagent (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	my @data;
 	my $i=0;
 	if(@data = $sth->fetchrow_array)
@@ -263,7 +386,12 @@ elsif($cmd eq  "getdisplay")
 	check_user($sid);
 	my $sth=$dbh->prepare("select display from sessions
 	                       where session_id =?");
-	$sth->execute($sid)or die;
+	$sth->execute($sid);
+	if ($sth->err())
+	{
+		syslog('error', "getdisplay (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	my @data;
 	my $i=0;
 	if(@data = $sth->fetchrow_array)
@@ -286,7 +414,12 @@ elsif($cmd eq  "listsessions")
 	                       strftime('%s','now','localtime') - strftime('%s',init_time),fs_port from  sessions
 	                       where status !='F' and server=? and uname=?
 	                       and  (  session_id not like '%XSHAD%')  order by status desc");
-	$sth->execute($server, $realuser)or die;
+	$sth->execute($server, $realuser);
+	if ($sth->err())
+	{
+		syslog('error', "listsessions (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	fetchrow_printall_array($sth);
 }
 
@@ -301,7 +434,12 @@ elsif($cmd eq  "listsessions_all")
 	                       strftime('%s','now','localtime') - strftime('%s',init_time),fs_port from  sessions 
 	                       where status !='F' and uname=? and  (  session_id not like '%XSHAD%')  order by status desc");
 	
-	$sth->execute($realuser)or die;
+	$sth->execute($realuser);
+	if ($sth->err())
+	{
+		syslog('error', "listsessions_all (SQLite3 session db backend) failed with exitcode: $sth->err()");
+		die();
+	}
 	fetchrow_printall_array($sth);
 }
 else
diff --git a/x2goserver/man/man8/x2gobasepath.8 b/x2goserver/man/man8/x2gobasepath.8
index 52c4346..3388820 100644
--- a/x2goserver/man/man8/x2gobasepath.8
+++ b/x2goserver/man/man8/x2gobasepath.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gobasepath 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gobasepath 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gobasepath \- Detect Base Path of X2Go Server Installation
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2gocleansessions.8 b/x2goserver/man/man8/x2gocleansessions.8
index a45e8a0..0fc587b 100644
--- a/x2goserver/man/man8/x2gocleansessions.8
+++ b/x2goserver/man/man8/x2gocleansessions.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gocleansessions 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gocleansessions 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gocleansessions \- X2Go Server Cleanup Daemon
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2gocmdexitmessage.8 b/x2goserver/man/man8/x2gocmdexitmessage.8
index 64d51ac..7752080 100644
--- a/x2goserver/man/man8/x2gocmdexitmessage.8
+++ b/x2goserver/man/man8/x2gocmdexitmessage.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gocmdexitmessage 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gocmdexitmessage 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gocmdexitmessage \- Exit Message of X2Go Command
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2godbadmin.8 b/x2goserver/man/man8/x2godbadmin.8
index c027021..314e68b 100644
--- a/x2goserver/man/man8/x2godbadmin.8
+++ b/x2goserver/man/man8/x2godbadmin.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2godbadmin 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Admin Tool"
+.TH x2godbadmin 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Admin Tool"
 .SH NAME
 x2godbadmin \- X2Go Server Database Administrator
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2gofeature.8 b/x2goserver/man/man8/x2gofeature.8
index 67937a4..facc29f 100644
--- a/x2goserver/man/man8/x2gofeature.8
+++ b/x2goserver/man/man8/x2gofeature.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gofeature 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gofeature 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gofeature \- Query X2Go Feature Availability on X2Go Server
 .SH SYNOPSIS
@@ -24,6 +24,7 @@ If feature <feature_name> is available on the X2Go server, then ,,ok'' is writte
 Otherwise the expression ,,not available'' is written to stdout.
 .SH SEE ALSO
 /usr/share/x2go/x2gofeature.d/*.features
+x2gofeaturelist(8)
 .SH AUTHOR
 This manual has been written by Mike Gabriel <mike.gabriel at das-netzwerkteam.de> for the X2Go project
 (http://www.x2go.org).
diff --git a/x2goserver/man/man8/x2gofeaturelist.8 b/x2goserver/man/man8/x2gofeaturelist.8
new file mode 100644
index 0000000..e3ec8e6
--- /dev/null
+++ b/x2goserver/man/man8/x2gofeaturelist.8
@@ -0,0 +1,30 @@
+'\" -*- coding: utf-8 -*-
+.if \n(.g .ds T< \\FC
+.if \n(.g .ds T> \\F[\n[.fam]]
+.de URL
+\\$2 \(la\\$1\(ra\\$3
+..
+.if \n(.g .mso www.tmac
+.TH x2gofeaturelist 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
+.SH NAME
+x2gofeaturelist \- Query X2Go Feature List for X2Go Server
+.SH SYNOPSIS
+'nh
+.fi
+.ad 1
+x2gofeaturelist
+
+.SH DESCRIPTION
+\fBx2gofeaturelist\fR allows client applications to query a server-side list of X2Go features.
+Such a list is very handy when new X2Go clients connect to older X2Go server. The list of features
+provides an overview to the client on what functionalities the server support and what not.
+.PP
+\fBx2gofeaturelist\fR can be run with user privileges.
+.SH RETURN VALUES
+List of X2Go feature names.
+.SH SEE ALSO
+/usr/share/x2go/x2gofeature.d/*.features
+x2gofeature(8)
+.SH AUTHOR
+This manual has been written by Mike Gabriel <mike.gabriel at das-netzwerkteam.de> for the X2Go project
+(http://www.x2go.org).
diff --git a/x2goserver/man/man8/x2gogetservers.8 b/x2goserver/man/man8/x2gogetservers.8
index ed7270f..a0b03df 100644
--- a/x2goserver/man/man8/x2gogetservers.8
+++ b/x2goserver/man/man8/x2gogetservers.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gogetservers 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gogetservers 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gogetservers \- Retrieve list of available X2Go servers
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2golistdesktops.8 b/x2goserver/man/man8/x2golistdesktops.8
index 4125c37..6dc25cf 100644
--- a/x2goserver/man/man8/x2golistdesktops.8
+++ b/x2goserver/man/man8/x2golistdesktops.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2golistdesktops 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2golistdesktops 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2golistdesktops \- List Available X Desktops
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2golistmounts.8 b/x2goserver/man/man8/x2golistmounts.8
index 176ffd9..d876851 100644
--- a/x2goserver/man/man8/x2golistmounts.8
+++ b/x2goserver/man/man8/x2golistmounts.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2golistmounts 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2golistmounts 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2golistmounts \- List Mounted Shares for an X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2golistsessions.8 b/x2goserver/man/man8/x2golistsessions.8
index 91a76e9..c872745 100644
--- a/x2goserver/man/man8/x2golistsessions.8
+++ b/x2goserver/man/man8/x2golistsessions.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2golistsessions 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2golistsessions 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2golistsessions \- List Available X2Go Sessions for User
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2golistsessions_root.8 b/x2goserver/man/man8/x2golistsessions_root.8
index f68073f..41e89e6 100644
--- a/x2goserver/man/man8/x2golistsessions_root.8
+++ b/x2goserver/man/man8/x2golistsessions_root.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2golistsessions_root 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Admin Tool"
+.TH x2golistsessions_root 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Admin Tool"
 .SH NAME
 x2golistsessions_root \- List X2Go Sessions for System
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2gomountdirs.8 b/x2goserver/man/man8/x2gomountdirs.8
index 69b2fe7..b58544a 100644
--- a/x2goserver/man/man8/x2gomountdirs.8
+++ b/x2goserver/man/man8/x2gomountdirs.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gomountdirs 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gomountdirs 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gomountdirs \- Share Client-Side Folder with X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2goresume-session.8 b/x2goserver/man/man8/x2goresume-session.8
index f8efed9..6a8c2a1 100644
--- a/x2goserver/man/man8/x2goresume-session.8
+++ b/x2goserver/man/man8/x2goresume-session.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goresume-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goresume-session 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goresume-session \- Resume X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2goruncommand.8 b/x2goserver/man/man8/x2goruncommand.8
index bf22a9e..0952072 100644
--- a/x2goserver/man/man8/x2goruncommand.8
+++ b/x2goserver/man/man8/x2goruncommand.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goruncommand 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goruncommand 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goruncommand \- Launch Command inside an X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2gosessionlimit.8 b/x2goserver/man/man8/x2gosessionlimit.8
index 4e2443d..5f35c98 100644
--- a/x2goserver/man/man8/x2gosessionlimit.8
+++ b/x2goserver/man/man8/x2gosessionlimit.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gosessionlimit 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gosessionlimit 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gosessionlimit \- Detect Session Limit for User or Group
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2goshowblocks.8 b/x2goserver/man/man8/x2goshowblocks.8
index 8eb8d4f..282ebde 100644
--- a/x2goserver/man/man8/x2goshowblocks.8
+++ b/x2goserver/man/man8/x2goshowblocks.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goshowblocks 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goshowblocks 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goshowblocks \- Show X2Go-Mounted Block Devices
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2gostartagent.8 b/x2goserver/man/man8/x2gostartagent.8
index 0fd81cd..7c86d2e 100644
--- a/x2goserver/man/man8/x2gostartagent.8
+++ b/x2goserver/man/man8/x2gostartagent.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gostartagent 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gostartagent 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gostartagent \- Start a New X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2gosuspend-session.8 b/x2goserver/man/man8/x2gosuspend-session.8
index 89fe595..4646a9c 100644
--- a/x2goserver/man/man8/x2gosuspend-session.8
+++ b/x2goserver/man/man8/x2gosuspend-session.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2gosuspend-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2gosuspend-session 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2gosuspend-session \- Suspend an X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2goterminate-session.8 b/x2goserver/man/man8/x2goterminate-session.8
index 054da4e..2c72b9c 100644
--- a/x2goserver/man/man8/x2goterminate-session.8
+++ b/x2goserver/man/man8/x2goterminate-session.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goterminate-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goterminate-session 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goterminate-session \- Terminate an X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2goumount-session.8 b/x2goserver/man/man8/x2goumount-session.8
index d48ce13..f256d5a 100644
--- a/x2goserver/man/man8/x2goumount-session.8
+++ b/x2goserver/man/man8/x2goumount-session.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goumount-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goumount-session 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goumount-session \- Unshare mounted Folders from X2Go Session
 .SH SYNOPSIS
diff --git a/x2goserver/man/man8/x2goversion.8 b/x2goserver/man/man8/x2goversion.8
index 56b78d7..a7675a7 100644
--- a/x2goserver/man/man8/x2goversion.8
+++ b/x2goserver/man/man8/x2goversion.8
@@ -5,7 +5,7 @@
 \\$2 \(la\\$1\(ra\\$3
 ..
 .if \n(.g .mso www.tmac
-.TH x2goversion 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool"
+.TH x2goversion 8 "Mar 2012" "Version 3.1.1.x" "X2Go Server Tool"
 .SH NAME
 x2goversion \- Retrieve Code Versions of X2Go Server Components
 .SH SYNOPSIS
diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index b3f65db..6e21482 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -56,12 +56,12 @@ sub check_stat
 	my $sess=shift;
 	my $user=shift;
 	my $log="~$user/.x2go/C-$sess/session.log";
-	my $text=`tail -1 $log`;
+	my $text=`tail -1 $log 2>/dev/null`;
 	if ($text =~ m/Session suspended/)
 	{
 		return 0;
 	}
-		return 1;
+	return 1;
 }
 
 sub catch_term
@@ -101,15 +101,15 @@ elsif ($pid == 0 )
 			my @sinfo=split('\\|',"@outp[$i]");
 			if (@sinfo[4]eq 'F')
 			{
-				#print "@sinfo[1], is blocked\n";
-				#print "(@sinfo[1])Unmounting all shares\n";	        
+				syslog('debug', "@sinfo[1] is blocked");
+				syslog('debug', "@sinfo[1]: unmounting all shares");
 				system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
 			}
 			elsif (! check_pid (@sinfo[0], at sinfo[1], at sinfo[12]))
 			{
 				system("su @sinfo[11] -c \"$x2go_lib_path/x2gochangestatus 'F' @sinfo[1] \" > /dev/null");
-				#print "@sinfo[1], pid @sinfo[0] not exist, changing status from @sinfo[4] to F\n";
-				#print "(@sinfo[1])Unmounting all shares\n";	 
+				syslog('debug', "@sinfo[1], pid @sinfo[0] does not exist, changing status from @sinfo[4] to F");
+				syslog('debug', "@sinfo[1]: unmounting all shares");
 				system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
 			}
 			else
@@ -119,8 +119,8 @@ elsif ($pid == 0 )
 					if (!check_stat(@sinfo[1], at sinfo[11]))
 					{
 						system("su @sinfo[11] -c  \"$x2go_lib_path/x2gochangestatus 'S' @sinfo[1] \" > /dev/null");
-						#print "@sinfo[1], is suspended, changing status from @sinfo[4] to S\n";
-						#print "(@sinfo[1])Unmounting all shares\n";	        
+						syslog("@sinfo[1] is suspended, changing status from @sinfo[4] to S");
+						syslog("@sinfo[1]: unmounting all shares");
 						system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
 					}
 				}
diff --git a/x2goserver/sbin/x2golistsessions_root b/x2goserver/sbin/x2golistsessions_root
index c1f0567..dddcae3 100755
--- a/x2goserver/sbin/x2golistsessions_root
+++ b/x2goserver/sbin/x2golistsessions_root
@@ -35,7 +35,7 @@ sub check_stat
 	my $sess=shift;
 	my $user=shift;
 	my $log="~$user/.x2go/C-$sess/session.log";
-	my $text=`tail -1 $log`;
+	my $text=`tail -1 $log 2>/dev/null`;
 	if ($text =~ m/Session suspended/)
 	{
 		return 0;
diff --git a/x2goserver/share/x2gofeature.d/x2goserver.features b/x2goserver/share/x2gofeature.d/x2goserver.features
index 359f25e..70313d2 100755
--- a/x2goserver/share/x2gofeature.d/x2goserver.features
+++ b/x2goserver/share/x2gofeature.d/x2goserver.features
@@ -33,6 +33,7 @@ case "$X2GO_FEATURE" in
     "X2GO_MOUNTDIRS") echo "ok"; exit 0;;
     "X2GO_UMOUNTSESSION_ALL") echo "ok"; exit 0;;
     "X2GO_UMOUNTSESSION_ONLYPATH") echo "ok"; exit 0;;
+    "X2GO_PUBLISHED_APPLICATIONS") echo "ok"; exit 0;;
     *) exit -1;;
 
 esac


hooks/post-receive
-- 
x2goserver.git (X2Go Server)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2goserver.git" (X2Go Server).




More information about the x2go-commits mailing list