Patch taken from the debian unstable package original posted by Fabian Franz on the freenx mailinglist Index: nxproxy/Main.c --- nxproxy/Main.c.old 2007-07-18 17:39:13.000000000 +0200 +++ nxproxy/Main.c 2008-03-12 04:40:30.000000000 +0100 @@ -36,28 +36,48 @@ int result = -1; char *options = NULL; - + + char *nx_commfd_str = NULL; + options = getenv("NX_DISPLAY"); - - if (NXTransParseCommandLine(argc, argv) < 0) + + if ((nx_commfd_str = getenv("NX_COMMFD")) != NULL) { - NXTransCleanup(); - } + int nx_commfd = atoi(nx_commfd_str); - if (NXTransParseEnvironment(options, 0) < 0) - { - NXTransCleanup(); + if (result) + result = NXTransCreate(nx_commfd, NX_MODE_SERVER, options); + + // go into endless loop + + if (result) + { + while (NXTransRunning(NX_FD_ANY)) + result = NXTransContinue(NULL); + } } + else + { + if (NXTransParseCommandLine(argc, argv) < 0) + { + NXTransCleanup(); + } + + if (NXTransParseEnvironment(options, 0) < 0) + { + NXTransCleanup(); + } + + /* + * This should not return... + */ + + #ifdef TEST + fprintf(stderr, "Main: Yielding control to NX entry point.\n"); + #endif - /* - * This should not return... - */ - - #ifdef TEST - fprintf(stderr, "Main: Yielding control to NX entry point.\n"); - #endif - - result = NXTransProxy(NX_FD_ANY, NX_MODE_ANY, NX_DISPLAY_ANY); + result = NXTransProxy(NX_FD_ANY, NX_MODE_ANY, NX_DISPLAY_ANY); + } /* * ...So these should not be called.