summaryrefslogtreecommitdiffstats
path: root/freenx
diff options
context:
space:
mode:
author Eric Hameleers <alien@slackware.com>2009-07-30 11:29:42 +0000
committer Eric Hameleers <alien@slackware.com>2009-07-30 11:29:42 +0000
commit15067fe28c75525f7737ae2ebf30b54ef39852fb (patch)
treef6aa7da9cb87dc4e5bf24da6a5a9ef56c8b160b7 /freenx
parente6d1b76c8022ff1a5da9ef64532aa2fb0bc22158 (diff)
downloadasb-15067fe28c75525f7737ae2ebf30b54ef39852fb.tar.gz
asb-15067fe28c75525f7737ae2ebf30b54ef39852fb.tar.xz
Initial revision
Diffstat (limited to 'freenx')
-rw-r--r--freenx/build/freenx_fixresume.diff29
1 files changed, 29 insertions, 0 deletions
diff --git a/freenx/build/freenx_fixresume.diff b/freenx/build/freenx_fixresume.diff
new file mode 100644
index 00000000..278db1d1
--- /dev/null
+++ b/freenx/build/freenx_fixresume.diff
@@ -0,0 +1,29 @@
+http://mail.kde.org/pipermail/freenx-knx/2009-January/007756.html
+
+The key problem is that when the client nxssh is killed, nxserver hangs
+in the echo inside server_nxnode_echo(). It attempts to handle this
+situation by installing a SIGPIPE handler that sets
+SERVER_CHANNEL=0. Unfortunately, SIGPIPE is never received in this
+situation; instead the echo hangs forever. This is what causes it never
+to process any more commands from nxnode.
+
+It is not entirely clear why it happens in this way.
+
+Anyway, the workaround is to change echo to /bin/echo. /bin/echo returns
+immediately if the client is disconnected. Probably it should also check
+the status and set SERVER_CHANNEL=0 if /bin/echo failed. However I have
+not bothered to do this. It does not seem to matter a great deal.
+
+--- nxserver.orig 2009-01-25 16:07:46.590977440 +1300
++++ nxserver 2009-01-25 16:07:54.498952944 +1300
+@@ -967,8 +967,8 @@
+ server_nxnode_echo()
+ {
+ log 6 "server_nxnode_echo: $@"
+- [ "$SERVER_CHANNEL" = "1" ] && echo "$@"
+- [ "$SERVER_CHANNEL" = "2" ] && echo "$@" >&2
++ [ "$SERVER_CHANNEL" = "1" ] && /bin/echo "$@"
++ [ "$SERVER_CHANNEL" = "2" ] && /bin/echo "$@" >&2
+ }
+
+ server_nxnode_exit_func()