From b38f01092ab65f41fc0a525c46c874a228676f71 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 5 Jul 2016 10:40:11 +0200 Subject: NoMachine documentation files: Move to doc/_attic_/ folder. --- nxcomp/CHANGELOG | 3778 ------------------------------------------------------ 1 file changed, 3778 deletions(-) delete mode 100644 nxcomp/CHANGELOG (limited to 'nxcomp/CHANGELOG') diff --git a/nxcomp/CHANGELOG b/nxcomp/CHANGELOG deleted file mode 100644 index b0323d4a7..000000000 --- a/nxcomp/CHANGELOG +++ /dev/null @@ -1,3778 +0,0 @@ -ChangeLog: - -nxcomp-3.5.0-2 - -- Fixed TR11H02398. Solved a race condition when creating channels. - -nxcomp-3.5.0-1 - -- Opened the 3.5.0 branch based on nxcomp-3.4.0-7. - -- Updated copyright to year 2011. - -nxcomp-3.4.0-7 - -- Fixed TR03H02334. Modified the UNIX domain socket checks on MacOSX - to be compliant with the standard introduced in OSX 10.6.3. - -nxcomp-3.4.0-6 - -- Solved compilation problems on Solaris. - -nxcomp-3.4.0-5 - -- Solved compilation problems on GCC 4.4. - -nxcomp-3.4.0-4 - -- Added reference to fixed TR02H02325. - -nxcomp-3.4.0-3 - -- Updated copyright to year 2010. - -nxcomp-3.4.0-2 - -- Fixed TR03G02204. Changed the parsing of X authority entries in - order to handle the case where the hostname includes white spaces. - -- Fixed TR02H02325. Bug in PNG decompression on 16bpp displays. - -nxcomp-3.4.0-1 - -- Opened the 3.4.0 branch based on nxcomp-3.3.0-4. - -- Changed version number. - -- Updated copyright to year 2009. - -nxcomp-3.3.0-4 - -- Check if the variable storing the ping time exceeded the maximum - integer value. - -- Recover incorrect sequence number when the proxy is not connected - to an agent. - -nxcomp-3.3.0-3 - -- Removed a condition in ClientChannel that caused a loss in event - sequence numbers. - -nxcomp-3.3.0-2 - -- Updated VERSION. - -nxcomp-3.3.0-1 - -- Opened the 3.3.0 branch based on nxcomp-3.2.0-7. - -nxcomp-3.2.0-7 - -- Solved a compilation problem on GCC 4.3. - -nxcomp-3.2.0-6 - -- Changes considering that unsetenv() returns void on Mac OS X. - -nxcomp-3.2.0-5 - -- Fixed TR03F02024. Assume the launchd unix socket as X socket. - -- Changed the authorization cookie retrieval when using the launchd - socket on MacOSX, in order to wait for the X server start. - -nxcomp-3.2.0-4 - -- Fixed TR03F02026. Unset environment variable LD_LIBRARY_PATH before - calling the exec function running nxclient. - -nxcomp-3.2.0-3 - -- Fix addMsTimestamp() and subMsTimestamp(). Remove the check for - a valid input in diffTimestamp() and diffUsTimestamp(). - -nxcomp-3.2.0-2 - -- Fixed TR12E01973. Now the correct number of bits are used for the - number of points in a X_FillPoly request. - -nxcomp-3.2.0-1 - -- Opened the 3.2.0 branch based on nxcomp-3.1.0-6. - -nxcomp-3.1.0-6 - -- Always use a timeout of 50 ms to update the congestion counter. - -nxcomp-3.1.0-5 - -- Solve the possible deadlock caused by both proxies running out of - tokens at the same time. - -- In ServerProxy::handleCheckDrop() copy the list since the function - can delete the elements. - -nxcomp-3.1.0-4 - -- Classes ProxyReadBuffer and ServerReadBuffer returned an invalid - number of characters to read in the case of a readable() failure. - -- Connections to proxy versions newer than 3.0.0 were not accepted. - -- Reading options from file could fail if options contained spaces - or other characters interrupting the fscanf()'s matching of input. - -- The proxy link could not be flushed if a ping request was replied - after the end of the read loop. - -nxcomp-3.1.0-3 - -- Fixed a compilation warning on GCC 2.95. - -nxcomp-3.1.0-2 - -- Solved TR09E01852. Modified the encoding of the number of rects - in the XSetClipRectangles request. - -nxcomp-3.1.0-1 - -- Opened the 3.1.0 branch based on nxcomp-3.0.0-46. - -nxcomp-3.0.0-46 - -- Fixed TR09E01865 and TR08E01831. Assume the old behavior of compr- - essing the CUPS, SMB, HTTP and Font channels when connected to an - old proxy version. - -nxcomp-3.0.0-45 - -- Retry the fork() 30 times, but only on Cygwin (Sob!). - -nxcomp-3.0.0-44 - -- In the case of an error, try again to fork() after a second, for - a maximum of 5 times. This seems to constitute a valid workaround - to the intermittent fork() failures observed on Windows. - -- Fixed NXTransDestroy() to show the 'broken connection' dialog in - the case of a link failure on the client. - -- Handled the 'terminating' and 'terminated' messages as new proxy - stages. - -- Force all the directories and files created by the library to be - readable only by the user. - -- Don't complain if the shared memory segment can't be initialized - on Windows. - -nxcomp-3.0.0-43 - -- Prevent the reallocation of the read buffer in the proxy and the - agent transport if the buffer was borrowed by an upper layer. - -- Let the house-keeping process remove the cache directories that - are empty and have not be used since more than 30 days. - -- Added the missing destruction of the ZLIB stream used for image - decompression at proxy shutdown. - -nxcomp-3.0.0-42 - -- In handleFastWriteReply(), moved the initialization of the 'next' - pointer inside the '#ifndef __sun' block. This should fix the re- - maining encoding problems on SPARCs. - -nxcomp-3.0.0-41 - -- VMWare virtual machines can have the system timer deadly broken. - In the case of timeout, try to send a ping regardless we are the - client or the server proxy to force a write by the remote. - -- Removed the messages 'Info: Using image cache parameters...' and - 'Info: Using image streaming parameters...' from the session log - if the image cache is not enabled. - -nxcomp-3.0.0-40 - -- Removed the messages 'Info: Shutting down the NX transport' and - 'Info: End of NX transport requested by...' at the session tear - down. - -- Removed the remaining log output. - -nxcomp-3.0.0-39 - -- Don't reset the timer on proxy shutdown. - -nxcomp-3.0.0-38 - -- Don't reinstall the signal handler if the signal was enabled and - the NXTransSignal() action is NX_SIGNAL_FORWARD. - -nxcomp-3.0.0-37 - -- Return a congestion level 9 if the agent channel is in congestion - state. - -- Set the idle timeout (used to update the congestion state) based - on the link type. The timeout is 0 ms with link LAN and 50 ms in - the case of MODEM, with the other values in the between. - -nxcomp-3.0.0-36 - -- Changed the encoding of the RenderCompositeGlyphs requests. Use - a separate cache for X and Y. Send a single bit for offset X and - offset Y if they match the source coordinates. - -- Always use the memcpy() in the handleFastWrite*() on Sun, as the - alternative code doesn't work on SPARC if the buffer is not word - aligned. - -nxcomp-3.0.0-35 - -- Ensure a smooth transition between different congestion states. - If the current congestion counter is greater than the previous, - ramp up the value quickly by taking the current counter. If the - new congestion counter is less than the previous, ramp down the - reported value slowly by calculating the average of the last 8 - updates. Reset the congestion counter to 0 if no token reply is - pending and the proxy is idle until a timeout. - -nxcomp-3.0.0-34 - -- Calculate the current congestion as the average of the last 3 - frames sent. - -nxcomp-3.0.0-33 - -- When sending a X_RenderCompositeGlyph update, send a single bit - if the source X and Y match the values in cache. - -- Save the check on the bytes readable from the proxy descriptor - after the select. - -nxcomp-3.0.0-32 - -- Send the X_GetImage replies uncompressed to better leverage the - stream compression. - -- Before entering in congestion state, force a read to see whether - the remote proxy aborted the connection. - -nxcomp-3.0.0-31 - -- Try to avoid using memcpy() in the channels' handleFastWrite*(). - -- Changed the copyright notices at the beginning of the files that - were referring to NXPROXY to refer to NXCOMP. - -nxcomp-3.0.0-30 - -- Set the agent and proxy descriptors as ready, when appropriate, - also in the case of an interrupt. - -nxcomp-3.0.0-29 - -- On the X server side, read more events from the X server just be- - fore and just after having written some data. On the X client si- - de, apply the same to the proxy link. - -- X11 channels originate a congestion control code as soon as the- - re is some data left from the previous write. - -nxcomp-3.0.0-28 - -- Displaced automatically the "channel unresponsive" and "no data - received from remote" dialogs if the error condition is ceased. - -- Rewritten the channel drain procedure. - -- Tried a different approach to the channel congestion handling. - The X11 channels are not drained after a blocking write but only - if a further write is requested and the channel is still in con- - gestion state. Benchmarks show that this is still sub-optimal, - compared to sending the congestion code immediately also for X11 - channels. See the next version. - -nxcomp-3.0.0-27 - -- Ignored the agent option 'defer'. - -- Dropped support for the 1.4.0 versions. - -- More fixes to support the 1.5.0. - -nxcomp-3.0.0-26 - -- The channel read buffer can inherit the data to be encoded from - the caller, instead of taking it from the transport. This is le- - veraged by the agent channel to save the copy. - -- Ignored the agent option 'clients'. - -- Removed the deprecated code checking the CPU limits. - -- Removed the counters that were duplicated in the Statistics and - the Control classes. - -nxcomp-3.0.0-25 - -- Improved the effectiveness of the caching of the RenderComposite- - Glyphs by using a differential encoding for the length, delta x - and delta y of the first string. - -- Better handle the compatibility between different formats of the - cache files. - -nxcomp-3.0.0-24 - -- Fixed the compatibility problem with the 1.5.0 versions. - -- Removed the constants NXDisplayReadable, NXDisplayFlushable and - NXDisplayCongestion. Now nxcompext has three distinct functions. - -nxcomp-3.0.0-23 - -- Removed support for Rdp, Tight and Hextile packed images decod- - ing since they have been made obsolete by the new NX server. - -- Use the value 0 for the action is_hit and 1 for is_added. This - increases the frequency of zeroes in the encode buffer, giving - better compression. - -- Changed the copyright attribution from Medialogic to NoMachine. - -nxcomp-3.0.0-22 - -- Implemented an alternate encoding reducing the size of the int - caches to 16 elements and transmitting the values in blocks of - 4 bits. Although this encoding reduces the effectiveness of - the differential compression, it allows better compression of - the final stream, resulting in a 10% to 20% gain in all condi- - tions. The new encoding is experimental, as it would make the - 3.0.0 incompatible with all the previous NX versions. Use this - package as a reference for future implementations. - -nxcomp-3.0.0-21 - -- Encode the first two coordinates of a FillPoly message by using - a differential encoding, thus the origin of the polygon is not - included in the checksum. This is aimed to work in combination - with the agent converting all the FillPoly requests to the rela- - tive coordinate mode. - -- Add the coordinate mode to the checksum of the PolyPoint and Po- - lyLine messages so that it doesn't need to be encoded separately. - -- Disable the streaming for all messages. This saves the encoding - of a boolean for each message that could potentially be streamed. - -- Don't try to match the block size when encoding a value based on - an IntCache. This saves the additional bool in 90% of the cases. - -- Removed support for the former RDP and RFB session types. - -- Due to the above changes, this version is incompatible with the - previous 3.0.0 releases. - -nxcomp-3.0.0-20 - -- Added support for the 'lossy', 'lossless' and 'adaptive' pack me- - thod literals. These values activate the dynamic selection of the - pack method by the agent. - -- Made the 'adaptive' pack method the default for all link types. - -- The default stream compression level is now 6 for link type ISDN, - 4 for ADSL and 1 for WAN. The default data compression level is - always 1, except for LAN that is 0. - -nxcomp-3.0.0-19 - -- Print in the session log the X11 display that the proxy is imper- - sonating or where it is forwarding the connections. - -nxcomp-3.0.0-18 - -- Implemented decoding of the PACK_BITMAP_16M_COLORS pack method. - This is a very simple encoder removing the 4th byte in 32 bits- - per-plane images. This encoder is intended to better leverage - the stream compression on low bandwidth links. - -- Removed the code cleaning the padding bytes in RenderAddGlyphs - and RenderCompositeGlyphs as the operation is now performed in - Xrender. - -- Removed the "Info: Synchronizing local and remote caches." and - "Info: Using remote server '...'." lines from the session log. - -nxcomp-3.0.0-17 - -- Determine the CPU endianess at compile time only on Linux and - Cygwin. - -nxcomp-3.0.0-16 - -- Optimized the memory allocation of the ReadBuffer classes. The - buffers from the Transport classes are used, when possible, to - avoid the copy. - -nxcomp-3.0.0-15 - -- Reworked the code dealing with the channel congestion control - messages for increased efficiency. - -- Removed the pending_ flag from the proxy and channel class mem- - bers. If needed, the classes will query the transport buffers - to see whether there is data pending. - -- Removed the additional parameter from NXTransFlush(). - -- The proxy doesn't issue anymore a sync control message on a X - reply. Anyway it will respond to the request for compatibility - with older versions. - -- Removed the dynamic selection of the encoding method for the - X_QueryColors request and X_ListFonts, X_QueryColors, X_Query- - Font replies. Now all of them use the differential encoding to - better leverage the stream compression. - -- Fixed to build on SUNs where we don't have endian.h. - -nxcomp-3.0.0-14 - -- When handling partial proxy messages, don't try to determine how - many bytes still need to be read if the ZLIB stream compression - is enabled. - -- If a message can't be located, the ReadBuffer class checks if it - is possible to consume the data already in the transport buffer. - -- Optimize the MD5 routines by determining the CPU endianess at - compile time. - -- Force Drawable and GContext to be CARD32 in NXproto.h. - -nxcomp-3.0.0-13 - -- Changed the semantic of the NXDisplayFlushHandler callback. The - function is called when new data is sent to the remote proxy or, - with a 0 length, upon receiving a new token reply, so that the - agent can update its congestion state. - -- Added the NXTransCongestion() function. It returns a value bet- - ween 0 and 9 indicating the congestion level based on the tokens - remaining. A value of 9 means that the link is congested and no - further data can be sent. - -- Removed the congestion and synchronization callbacks. They are - superseded by the new NXTransCongestion() implementation. - -nxcomp-3.0.0-12 - -- Send the token replies at the end of the encode loop instead of - flushing the buffer immediately. - -- Fixed TR05E01687. Correctly detect CTRL-ALT-SHIFT-ESC keystrokes. - -- Renamed the option 'block' as 'tile'. - -- Ignored the option 'menu', targeting the X11 agent. - -nxcomp-3.0.0-11 - -- Removed the 'interactive' attribute from generic channels. We now - use the 'prioritized' attribute which yields the same result. - -- Simplified the channels' read loop by always reading only once. - -- The channels flush the link as soon as the token is exceeded even - if the flush policy is set to deferred. - -- Reserved more cache memory for the images when running a shadow - session. - -nxcomp-3.0.0-10 - -- Added the NXDisplayWriteHandler callback definition. - -- Removed the code that forced the proxy to retain in the cache the - images referenced at session startup. - -- Disabled the persistent image cache since this is not supported - by the current agent. This will save the overhead caused by the - image house-keeping process. - -nxcomp-3.0.0-9 - -- Fixed a cast problem in GetBytesReadable(). - -nxcomp-3.0.0-8 - -- Added the NXTransTime() utility. It return the time in milliseconds - elapsed since the last call to the same function. Useful for bench- - marking the Xlib layer. - -- Ignored the option 'block' targeting the X11 agent. - -nxcomp-3.0.0-7 - -- Ignored the options 'shadow', 'shadowmode' targeting the X11 agent. - -- Added the session type 'shadow'. - -nxcomp-3.0.0-6 - -- Fixed TR08D01484. Fixed a bug in the cleanup of the RenderAddGlyphs - messages. We clean up only the glyphs with depth 8, width greater - than 1 and pixmap byte pad 4. - -- Added file COPYING. - -nxcomp-3.0.0-5 - -- Updated the copyright notices to the current year. - -nxcomp-3.0.0-4 - -- Imported changes up to nxcomp-2.1.0-6. - -- Fixed TR12D01563. Changed the configure script to always build the - library with the -fPIC option. This is related to the way SELinux - works. - -- Fixed the dependency from local endianess for 16-bit color RDP un- - packing functions. This caused wrong colors to be displayed when the - proxy and the X server were running on two separate machines having - different endianess. - -- Fixed TR10D01523. The Channel::handleDrain() method now accounts - for the fact that agent connections can't be drained. - -- Changed the Tight and Hextile decoding functions to use the X ser- - ver's byte order. - -nxcomp-3.0.0-3 - -- Changed the main loop to handle the 3.0.0 version. - -nxcomp-3.0.0-2 - -- Updated the file VERSION. - -nxcomp-3.0.0-1 - -- Opened the 3.0.0 branch based on nxcomp-2.0.0-81. - -nxcomp-2.0.0-81 - -- Fixed the dependency from local endianess for JPEG and PNG decomp- - ression functions. This caused wrong colors to be displayed when - the proxy and the X server were running on two separate machines - having different endianess. - -- Fixed the number of entries in the handleColormap() function. - -nxcomp-2.0.0-80 - -- Fixed TR06D01404. Removed the warning issued when calling the - AgentTransport::drain() method. - -nxcomp-2.0.0-79 - -- Updated copyright to year 2006. - -nxcomp-2.0.0-78 - -- Fixed a bug in the cleanup of the RenderAddGlyphs messages. - -- Minor improvements to the encoding of the RenderCompositeGlyphs - and RenderComposite requests. - -- Added 'client' to the list of the ignored options. - -nxcomp-2.0.0-77 - -- Added cleanup of the padding bytes in the RenderCompositeGlyphs - and RenderAddGlyphs requests. - -nxcomp-2.0.0-76 - -- Before adding the frame's bytes to the tokens, the frame length - is normalized based on the stream compression ratio of the last - frame sent. This avoids entering the drain loop too early when - the data is highly compressible. - -- Moved the render messages' private data in a union to reduce the - footprint of the render store. - -nxcomp-2.0.0-75 - -- The action performed on the remote message store and the affected - position are encoded as a single value. This saves approximately - 1 bit per each message. - -- Created more Compat classes to handle the backward compatibility - with the 1.4.0 and 1.5.0 versions. - -nxcomp-2.0.0-74 - -- Added support for the RLE pack method and made it the default if - the selected link type is LAN. - -- Removed the legacy support for the 'render' option provided at X - server side. - -- When defining LAME in ClientChannel.h, the channel has the chance - of suppressing more opcodes by the handleTaintLameRequest() call. - This is for test purposes. - -nxcomp-2.0.0-73 - -- The X_NXSetUnpackColormap and X_NXSetUnpackAlpha now carry their - data in compressed form. The alpha data is compressed using the - ZLIB RLE encoding, while the colormap data is compressed using - the default ZLIB deflate. - -- Thanks to the above changes, ZLIB data compression of all messa- - ges which do not have a specific encoding is turned off, so that - we can make better use of the final stream compression. - -- Created new message structures to handle the compatibility with - the old proxy versions. When connected to an old proxy version - the agent should use the NXSetUnpackColormapCompat() and NXSet- - UnpackAlpha() interfaces. - -nxcomp-2.0.0-72 - -- Solved a compatibility problem with the 1.X.X versions due to the - new render encodings. - -nxcomp-2.0.0-71 - -- Improvements to X_RenderSetPictureClipRectangles. - -- Fixed handleUnpack() to pass the correct byte order parameter to - to the unpack alpha function. - -- Added the --parent parameter to the client even in pulldown mode. - -- Fixed a deallocation bug in StaticCompressor. - -nxcomp-2.0.0-70 - -- Added compression of X_RenderSetPictureFilter, X_RenderSetPicture- - Transform, X_RenderTrapezoids and X_RenderTriangles. - -nxcomp-2.0.0-69 - -- Changed the format of the persistent cache to accommodate the new - encoding of the render opcodes. Caches from the 1.4.0 and 1.5.0 - should be still loaded and saved correctly when connected to and - old version of the library. - -- Improved the encoding of the X_CreatePixmap, X_ChangeGC, X_Render- - CompositeGlyphs, X_RenderComposite, X_RenderCreateGlyphSet, X_Rend- - erFreePicture and X_RenderCreatePicture messages. Added new classes - to handle the backward compatibility. - -- Made the static compression and decompression code reside in the - same class. - -nxcomp-2.0.0-68 - -- Improved the encoding of the X_RenderCreateGlyphSet and X_Render- - FreeGlyphSet requests. - -nxcomp-2.0.0-67 - -- Modified the following session messages: - - From: "Session: Session starting at..." - To: "Session: Starting session at..." - - From: "Session: Session terminating at..." - To: "Session: Terminating session at..." - -- Improved the encoding of the requests creating or freeing an XID. - This affects X_CreateGC, X_CreateWindow, X_CreatePixmap, X_Render- - CreatePicture, X_FreeGC, X_DestroyWindow, X_FreePixmap, X_Render- - FreePicture. - -- Added 'streaming' and 'backingstore' to the list of options used - by agents. - -- Modified the info messages to print the ZLIB compression paramet- - ers to be more compact and only use two lines. - -nxcomp-2.0.0-66 - -- When part of an agent, the proxy will wait for the NXTransDestroy() - function to initiate the shutdown. - -nxcomp-2.0.0-65 - -- Starting from this version the NX client can control the behaviour - of the client proxy by monitoring the messages marked as "Session". - - At the early initialization the proxy will print: - - "Session: Session starting at '...'. - - The ellipsis here represent the current timestamp, as reported by - the POSIX function ctime(): - - Once the session is running, the proxy will print: - - "Session: Session started at '...'. - - At the time the session is being shut down, the proxy will print: - - "Session: Session terminating at '...'. - - Followed by: - - Session: Session terminated at '...'. - - The message "Info: Starting X protocol compression." is removed, - replaced by the message 'Session started at...' with the same - meaning. - - Once the message 'Session: Session terminated at..." is read from - the output, the client can optionally wait for the proxy process - to complete and terminate with an exit code 0. - -- The "Session" messages are not printed when the proxy is running - on the NX server side, as part of an agent. - -nxcomp-2.0.0-64 - -- Reduced the default token limit from 32 to 24. The synchronizat- - ion callback is triggered by the tokens going below half the li- - mit. - -nxcomp-2.0.0-63 - -- Added -I/usr/include/c++ to makedepend. - -nxcomp-2.0.0-62 - -- The house-keeping process is now started upon the initialization, - if the memory cache is enabled, and, on the X server side, when - the remote actually requested access to the image cache. - -nxcomp-2.0.0-61 - -- Added a NX_HANDLER_SYNCHRONIZATION callback to NXTransHandler(). - The handler is called when the agent can use the available band- - width to synchronize X objects that are corrupted or incomplete. - - The reason can be: - - NX_SYNCHRONIZATION_BEGIN: The synchronizationis is allowed. - - NX_SYNCHRONIZATION_END: The synchronizationis must stop. - - The reason can be determined by agents by using the NXBeginSynch- - ronization and NXEndSynchronization values defined in NXvars.h. - -- Bytes from 14 to 24 in the X_NXGetControlParameters reply report, - respectively, the frame timeout, the ping timeout, the preferred - image split mode and the split size threshold. - -nxcomp-2.0.0-60 - -- The following messages used by the NX client and server have been - changed. The NX client and server should be modified accordingly. - - From: "Info: Shutting down the link and exiting." - To: "Info: Shutting down the NX transport." - - From: "Info: End of session requested by remote proxy." - To: "Info: End of NX transport requested by remote" - - From: "Info: End of session requested by agent termination." - To: "Info: End of NX transport requested by agent." - - From: "Info: End of session requested by signal '...'." - To: "Info: End of NX transport requested by signal '...'." - - From: "Info: Shutting down the link and exiting." - To: "Info: Shutting down the NX transport." - - From: "Info: Waiting for cleanup timeout to complete." - To: "Info: Waiting the cleanup timeout to complete." - - From: "Info: Waiting for watchdog process to complete." - To: "Info: Waiting the watchdog process to complete." - -nxcomp-2.0.0-59 - -- Added more debug information regarding the timing of packets sent - and received. - -- Added the possibility to redirect the log output to a file that can - be later shared with nxssh running in "binder" mode. This is useful - when testing the forwarding of the SSHD connection by nxssh to the - agent. Activated by defining BINDER in Loop.cpp. - -nxcomp-2.0.0-58 - -- Fixed the unpack alpha procedure to only rely on the image's byte - order. - -- Solved the X_PutImage encoding problem introduced in the 2.0.0-56 - version and restored the compatibility with the 1.5.0 version. - -nxcomp-2.0.0-57 - -- Added a NXTransFile() function. It returns the name of the files - used by the proxy for the current session. - - The type parameter can be: - - NX_FILE_SESSION: Usually the file 'session' in the user's session - directory. - - NX_FILE_ERRORS: The file used for the diagnostic output. Usually - the file 'errors' in the session directory. - - NX_FILE_OPTIONS: The file containing the NX options, if any. - - NX_FILE_STATS: The file used for the statistics output. - - The returned string is allocated in static memory. The caller must - copy the string upon returning from the function, without freeing - the pointer. - -- Fixed the PANIC in the handling of the abort split messages. - -- The encode and decode routines may write one byte past the nominal - end of the encode buffer. This additional byte is now included in - the payload. This is actually a bug, but harmless. - -nxcomp-2.0.0-56 - -- Added the X_NXAbortSplit request. It can be used to interrupt the - streaming of all the messages currently in the split store for - the specified resource. Depending if the split store did or did - not contain split messages, the client will receive an immediate - end-split or no-split notification. - -- Removed the split modes NXSplitModeEager and NXSplitModeLazy. The - available modes are now NXSplitModeSync and NXSplitModeAsync. The - mode NXSplitModeAsync replaces the two old modes and is now the - default. Similarly to NXSplitModeEager, it makes the proxy split - only messages that exceed a size threshold, but the threshold is - generally smaller than in the previous versions. - - #define NXSplitModeDefault 0 - #define NXSplitModeAsync 1 - #define NXSplitModeSync 2 - -- Renamed X_NXSplit to X_NXSplitData, X_NXAbortSplit to X_NXSplitEv- - ent. - -- The proxy now enters a drain loop, when in congestion state, and - waits until the decongestion. Also the X channels are drained if - blocked. - -- The select is restarted immediately if only the proxy is selected - and the data read doesn't make a complete message. - -- The size of the shared memory segment used by the X server proxy - is now negotiated at startup and the selected value is printed in - the session log. - -- Added the option 'encrypted'. It tells the local proxy if it is - running as part of a program providing encryption of the point to - point communication. This is useful to determine if the proxy can - block waiting for data or needs to yield to the client to let it - handle the remote connection. - -nxcomp-2.0.0-55 - -- Fixed handleRestart() to correctly send the end-split event only - after the split sequence has been closed by the client. - -- Fixed a possible memory error in the Keeper class occurring if the - image caches were erased while in the middle of a loop. - -nxcomp-2.0.0-54 - -- Added a '--parent' option when running the client in dialog mode. - This is the process id that needs to be signaled in the case the - user chooses to do so. - -nxcomp-2.0.0-53 - -- Solved a bug in the abort split procedure. The procedure assumed - that the split had to be at the head of the list. This may not be - the case if the split was loaded from disk asynchronously, after - a different split with the same checksum was recomposed. - -- By defining STRICT in Loop.cpp, the number of available tokens is - set to 1. This can be used to trigger the congestion more often - than it would possible when testing the software with the default - settings. - -- Added more debug output to the procedures handling the streaming - of the images. - -- Reset the channel's split pending and congestion flags in the fin- - ish procedure. Not doing so caused some additional loops at chan- - nel shutdown. - -- Fixed a bug on Cygwin that prevented the log files to be succes- - sfully reopened when the size limit was exceeded. - -- Failures to write to the agent transport are reported sooner when - the channel is finished. This saves a few more loops at session - shutdown. - -nxcomp-2.0.0-52 - -- Started implementing a new handler to let the agent include arbit- - rary data in the transport statistics. The parameter, in this case, - is a pointer to a pointer to a null terminated string. The pointer - is set at the time the handler is registered. The pointed string - will have to be filled by the agent with its statistics data. For - now, only the interfaces and the stubs exist. - -- Disabled the timestamp cache as it still causes rounding problems - when calculating the current bitrate. - -nxcomp-2.0.0-51 - -- Removed SelectPackMethod(), not used anymore, from Pack.c. - -nxcomp-2.0.0-50 - -- Added the X_NXFinishSplit request. It forces the proxy to comple- - tely transfer all the split messages for the given resource, and - then notify the agent. - -- Fixed the statistics to not account the split bits to the control - token. - -nxcomp-2.0.0-49 - -- Fixed a bug that caused the split timeout to be reset even if a - different channel had splits to send. - -- Removed an error condition that arose when a split operation was - requested by a different channel than the first to connect. The - reason is that an auxiliary channel (like the one created by the - server to store the keyboard configuration) can be the first to - open a connection to the X server, then can come the agent, that - is actually using the NX opcodes. The proxy will now simply print - a debug message. - -- Removed a further error condition that was assumed by the proxy - if a pending flush was detected while no channel was selected for - output. This can actually happen if the channel was dropped and, - in the meanwhile, the user requested the proxy statistics. - -nxcomp-2.0.0-48 - -- Added a 'type' parameter to NXTransFlush(). The new NX_FLUSH_IDLE - type should be used by agents when they have finished handling all - their clients and are going to wait for more input. This is the - case, for example, of the X agent returning from WaitForSomething() - after having set a small timeout to find out if there are clients - ready, or the case of a RDP agent finding that there are no opcodes - to read from the RDP server. The 'idle' flush should be requested - also when the X11 agent is waiting for a split to complete. When - the flag is used, the proxy uses the available bandwidth to encode - more low-priority data, like the payload of images being streamed. - -nxcomp-2.0.0-47 - -- Added a new RGB image encoder. For now the encoder uses a static - Z stream to compress the image data in the destination buffer and - allows the agent to use the simplest encoding by still separating - the alpha channel from the image data. The new encoder can be the - the base for implementing color reduction by dithering or a color- - mapped translation of the image similar to PNG, but without the - PNG overhead and with the colormap being sent to the client using - the NXSetUnpackColormap() opcode. - -- Put the routines implementing static deflating and inflating of - a ZLIB buffer from the Compressor and Decompressor classes to Z.h - and Z.cpp, so that they can be reused by the new RGB encoder. - -nxcomp-2.0.0-46 - -- Fixed a segfault arising when trying to start a child without the - NX transport. - -nxcomp-2.0.0-45 - -- Undefined the MATCH directive. - -nxcomp-2.0.0-44 - -- Changed the encoding of the X_CreatePixmap, X_CreateGC, X_Render- - CreatePicture, X_CreateWindow, RenderCreateGlyphSet.cpp. The Xid - of the drawable is included in the checksum of the X_CreateGC and - X_CreatePixmap message. This leverages the way GC and Pixmaps are - allocated in the X agent to obtain better compression. - -- Removed the code handling the reset of the proxy connection. This - functionality was unused since when the persistence is handled by - the agent. - -- Added a specific section in the statistics output for the render - extension. - -nxcomp-2.0.0-43 - -- Fixed a bug that could have caused the sending of multiple 'end - split' messages for the same split sequence. - -- Added handling of the option 'strict'. - -nxcomp-2.0.0-42 - -- Added a missing channel switch directive when encoding abort split - messages at the server side. This could cause a decoding error on - the client. - -nxcomp-2.0.0-41 - -- Ensured that the link is flushed immediately on the X server side - when important keyboard or mouse activity is detected in input. - -- Implemented a timestamp cache to avoid calling gettimeofday() when - it is enough to use the last timestamp gotten from the system. The - cache can be disabled by undefining CACHE_TIMESTAMP in Timestamp.h. - -nxcomp-2.0.0-40 - -- Added the karma delay field to the X_NXGetControlParameters reply. - -- Solved a bug with the decoding of split messages likely to happen - only when using link type LAN. - -nxcomp-2.0.0-39 - -- Implemented separate flow control for the generic channels and the - image streaming data. - -- Improved the split procedure to load a message from the disk cache - if found after it was originally discarded because locked. - -nxcomp-2.0.0-38 - -- Renamed the 'shmem' option as 'shseg'. The 'shmem' option becomes - specific to the agent and will be used together with 'shpix' option - to indicate if, respectively, the shared memory extension and the - use of the shared pixmaps must be enabled in the agent server. The - new option will be instead used by the proxy to determine the size - of the memory segment shared between the proxy and the X server. - -- Added the 'shmem', 'shpix', 'keyboard' and 'clipboard' to the list - of ignored options. The 'keyboard' option should become a synonym - of 'kbtype'. The 'clipboard' option will tell the NX agent if the - clipboard support should be disabled for security reasons. - -nxcomp-2.0.0-37 - -- Ensured that, when running a raw session, the persistent cache is - loaded and saved only once in the session lifetime. - -- Added the 'product' keyword to the list of recognized options. The - option is ignored by the proxy, but can be used by the client or - server to facilitate the support. - -nxcomp-2.0.0-36 - -- Added the remote version number in the X_NXGetControlParameters - reply. - -- Solved a bug related to the removal of the split stores. - -- Removed the unused code dealing with the flush timeouts. - -nxcomp-2.0.0-35 - -- Added an alert to notify the user about the failure of the XDMCP - session. - -nxcomp-2.0.0-34 - -- The active channels and the agent resources are now stored in a - list container. - -- Added the X_NXFreeSplit request. The request is currently unused - because the split store is freed automatically when it becomes - empty, but can be useful in future if we want to implement other - otpimizations. - -nxcomp-2.0.0-33 - -- There is now a split store for each agent resource. This allows - the proxy to divide the bandwidth among the agent resources. - -- A simple round-robin load-balancing is implemented, dividing the - bandwidth equally among all the split stores. - -- If there is a previous request being streamed for the same res- - ource, cached messages are appended to the split store and then - committed in the original order. This makes possible to stream - the colormap and the alpha channel data even if the split invol- - ves multiple PutImage or PutPackedImage operations in a single - start-split/end-split sequence. - -- Implemented the commit store class. Made the commit store expand - the message in the final buffer, instead of leveraging the mes- - sage store. - -- Channels having a drop command pending are checked before trying - to load or save the cache. This prevents a potential problem with - the protocol violation error that could be reported by the client - side proxy. - -- The current bitrate is now calculated at the time the transport - actually writes the data to the network, not at the time the data - is appended to the transport by the upper layers. The reason is - that the data can be compressed by the stream compressor and so - we can calculate the real bitrate only after having flushed the - ZLIB stream. This fixes the wrong numbers that could be reported - by the statistics in the previous versions. - -nxcomp-2.0.0-32 - -- More progress in the implementation of the new image streaming. - This version has been tested to work when connecting to an 1.5.0 - server. Due to the significant changes in the way the streaming - works in the newer versions, split is never activated by a 2.0.0 - server connecting to a 1.5.0 client. - -- Fixed the NXTransClose() function to check if the fd matches the - NX agent connection. - -- Fixed the includes in Socket.h to compile on Solaris and MacOSX. - -nxcomp-2.0.0-31 - -- Changed the NX transport functions that didn't require a NX fd - parameter to include one. The value can be NX_FD_ANY to signify - any running NX transport. - -nxcomp-2.0.0-30 - -- More progress in the new implementation of image streaming. - -- This version is apparently compatible with the 1.5.0 client but - needs further testing. - -nxcomp-2.0.0-29 - -- Implemented the NXTransHandler() interface and made the proxy - use the callback, when it is installed, instead of the notifi- - cation events. - -- Modified the agent transport to report an EOF condition as soon - as the channel is dropped, instead of reporting the error only - after the proxy shutdown. This allows the agent to handle its - clients while the proxy is handling the grace timeout. - -- Added a test facility to verify if the client and server caches - match at shutdown. - -- More advances in the new implementation of streaming. - -nxcomp-2.0.0-28 - -- Made the session shutdown faster, normally below 1 second. The - grace time is now 500 ms once all channels have been dropped. - -nxcomp-2.0.0-27 - -- The house-keeping process will now run a number of iterations - (currently 100) and then will exit. The proxy will check the - exit code and, if it was requested by the child, will restart - it. This is intended to keep the memory consumption low, as I - noted that after a big number of iterations the performance of - the allocator start to degrade quickly. - -nxcomp-2.0.0-26 - -- Started implementing the NXTransHandler() interface to let the X - application hook a callback and be notified by the proxy when an - event occurs. At the moment only congestion events are supported. - The interface makes possible for the caller to provide a generic - parameter. This parameter is passed back to the handler function. - The parameter is expected to be the Xlib display pointer, given - that the proxy doesn't have access to the Xlib structures. - -- Moved all the internal variables shared between Xlib, nxcompext - and the X server in nxcomp. Declarations and function prototypes - moved to NXvars.h. - -- Removed the NXGetCleanupParameters() and NXGetImageParameters() - interfaces and the remaining references to the unused display - buffer and image cleanup functions. - -- In this version the images streaming functionality is disabled. - Because of that, expect compatibility problems when connecting - to a different nxcomp version. - -nxcomp-2.0.0-25 - -- Forced the end of the session earlier if a shutdown has been re- - quested by the local side but the remote proxy is not responding. - -nxcomp-2.0.0-24 - -- Changed the loop deleting the file items in Keeper to pick the - first element instead of looping through the iterator. - -- More problems with the libstdc++ allocators. During the tests, I - found that the Keeper class can leak industrial amounts of memory. - Valgrind says that the objects that are not freed are the File - items we allocate in collect(). As this looked suspicious, I log- - ged the constructors and destructors and can say that everything - is OK on our side. Unfortunately, by removing the spleeps used - to let the program work silently in background, one can find that - the memory occupation still grows by a MB every few seconds. This - is less a problem on Windows, where the memory occupation remains - almost constant. See the comment on __USE_MALLOC below. - -- Increased the maximum size of a message that the proxy is allo- - wed to cache to 4MB. This makes possible to cache many replies - (like the X_QueryFont replies) that often exceeded the previous - limit. - -nxcomp-2.0.0-23 - -- Fixed a compatibility problem with the 1.5.0 that arose when - encoding an image with caching and streaming temporarily disa- - bled. - -- Removed the __USE_MALLOC define in Types.h because this is what - the g++ developers want. I'll try to avoid flames and will not - comment on this. - -- Added a --with-use-malloc configure option. This option should - be used when building the release packages on GCC versions that - support it. - -- Started fixing the commit procedure to be able to deal with the - alpha channel. - -nxcomp-2.0.0-22 - -- Prevented channels from being dropped while in the middle of a - read loop. - -- Added a small utility ensuring that the SIGCHLD we receive in - the main loop can be always identified as pertaining to an our - child. - -- Increased the space available for the control messages at the - beginning of the encode buffer and ensured that there is always - enough space for adding a token message, in the case this is - required by the flush procedure. - -- Made all cache files readable only by the user. - -nxcomp-2.0.0-21 - -- Solved a bug in the streaming of images that caused the agent's - clients to never resume when connected to an old proxy version. - -nxcomp-2.0.0-20 - -- Disabled again streaming of the alpha channel data. By enabling - it, the agent randomly fails to repaint the exposed regions. The - reason is to be investigated. - -nxcomp-2.0.0-19 - -- Implemented the split mode NXSplitModeSync. When this mode is - selected, the proxy will not send data for the split at the head - of the list until the remote peer has confirmed that the message - is not available in the image cache. This is going to be useful - in combination with the lazy encoding. - -- Improved the error detection in the case of failure when saving - a recomposed split on disk. - -- Added X_NXSetUnpackAlpha to the set of requests that is possible - to stream. - -nxcomp-2.0.0-18 - -- Enabled the 2.0.0 features that were disabled for test purposes. - -- Changed the LICENSE file to state that the software is only made - available under the version 2 of the GPL. - -nxcomp-2.0.0-17 - -- Introduced a new channel of type 'slave'. Opening a slave channel - should let the proxy fork a new NX client instance (or whatever - is in the NX_SLAVE environment) and pass to it the channel's desc- - riptors. This client instance should authenticate the peer, for - example using the proxy cookie (see how this is implemented in - nxsensor) and then negotiate the service to be used on the channel. - This can be used to implement forwarding of arbitrary ports or ad- - ditional services, like a simple file transfer protocol. For now - the implementation is incomplete. Opening a slave channel will - result in the remote proxy just dropping the channel connection. - -- The proxy is forcibly flushed at the end of each loop. This is a - temporary fix until the agents are updated to flush the proxy link - on demand. - -- Added a new alert to be used in the case the RDP session is closed - and replaced with a new session using the same Windows account. - -- Added a forward declaration of class RenderMinorExtensionStore in - file RenderExtension.h to compile using gcc 4.0.X. - -- Added removal of all .orig file when running a 'make clean'. - -- The code uses again the 2.0.0 style shutdown (the one waiting for - the watchdog process to terminate). - -nxcomp-2.0.0-16 - -- Added the NXTransChannel() interface to allow agents to create - new channels connected to the port that will be forwarded by the - remote proxy. The function returns 1 on success, 0 if the NX - transport is not running, or -1 in the case of error. On success, - the descriptor provided by the caller can be used for all the - subsequent I/O, including selecting the descriptor to check if - I/O is possible. The type parameter not only tells to the proxy - the remote port where the channel has to be connected, but gives - a hint about the type of data that will be carried by the channel, - so that the proxy can optimize the compression and schedule the - traffic on the slow link. - - The type can be: - - NX_CHANNEL_X: The channel will carry X traffic and it - will be connected to the remote X display. - - NX_CHANNEL_CUPS: The channel will carry CUPS/IPP protocol. - - NX_CHANNEL_SMB: The channel will carry SMB/CIFS protocol. - - NX_CHANNEL_MEDIA: The channel will transport audio or other - multimedia data. - - NX_CHANNEL_HTTP: The channel will carry HTTP protocol. - - NX_CHANNEL_FONT: The channel will forward a X font server - connection. - - Only the proxy running at the NX server/X client side will be - able to create a X, CUPS, SMB, MEDIA and HTTP channel. A proxy - running at the NX client/X server side can create font server - connections. The channel creation will also fail if the remote - end was not set up to forward the connection. - - To create a new channel the agent will have to set up a socket- - pair and pass to the proxy one of the socket descriptors. - - Example: - - #include - #include - - int fds[2]; - - if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fds) < 0) - { - ... - } - else - { - // - // Use fds[0] locally and let the - // proxy use fds[1]. - // - - if (NXTransChannel(fds[1], NX_CHANNEL_X) <= 0) - { - ... - } - - // - // The agent can now use fds[0] in - // read(), write() and select() - // system calls. - // - - ... - } - - Note that all the I/O on the descriptor should be non-blocking, - to give a chance to the NX transport to run in the background - and handle the data that will be fed to the agent's side of the - socketpair. This will happen automatically, as long as the agent - uses the XSelect() version of the select() function (as it is - normal whenever performing Xlib I/O). In all the other cases, - like presumably in the agent's main loop, the agent will have - to loop through NXTransPrepare(), NXTransSelect() and NXTrans- - Execute() functions explicitly, adding to the sets the descript- - ors that are awaited by the agent. Please check the implementa- - tion of _XSelect() in nx-X11/lib/X11/XlibInt.c for an example. - -nxcomp-2.0.0-15 - -- Some changes aimed at finding a workaround to the unreliability - of the font server connections. The X server seems to be really - picky about the network latency, so we try to read immediately - from the channel just being created, instead of waiting for a - new loop. Additionally the proxy will keep reading from the font - server connections even after the maximum length of the frame - is exceeded, in the hope that it will be able to send a complete - message in a single frame. - -- updated the various internal consistency tests run when the TEST - or INFO flags are enabled. - -nxcomp-2.0.0-14 - -- It seems that the closure of the socket sometimes takes several - seconds, on Windows, after the connection is broken, with the - result that the alert can be shown long after the user has gone - after the failed session. We now skip the closure of the proxy - link on Windows if we are about to exit. - -- The code uses the 1.5.0 style shutdown (the one waiting for the - term signal in the main process) to be able to test the library - with the old server. To activate the new shutdown procedure be - sure the define SHUTDOWN_COMPATIBLE_1_5_0 is unset. - -nxcomp-2.0.0-13 - -- Ensured that static members in channels are reset at the time a - new proxy is created. - -- Adjusted the token parameters for link modes other than modem. - -nxcomp-2.0.0-12 - -- Handled compatibility with 1.X.X versions not sending the count - field in the token. - -- The proxy link is now flushed automatically if the agent has not - set the deferred flush mode. - -nxcomp-2.0.0-11 - -- Significant modifications to allow the proxy to keep data in the - encode buffer across multiple loops, until the data is flushed - because an explicit request by the agent or. Besides maximizing - the amount of data sent in a single frame, this makes it possi- - ble to move any packet coalescence strategy in the agent, while - still using an 'immediate' flush policy. - -- Modified the procedure handling the proxy congestion. Each token - now carries a counter which represents the multiple of TokenBytes - data bytes that need to be confirmed by the remote end. The ser- - ver side proxy will need to reply by including the value of the - counter. When sending a new token, the tokens are decremented by - the counter and the client side proxy enters in congestion when - the available tokens becomes zero or negative. - -nxcomp-2.0.0-10 - -- Implemented specific encoding of the X_NXSetCacheParameters - request. - -- Handled the compatibility with older versions not supporting the - new request. In this case the request is handled at the local si- - de, preventing the X requests to be cached or split, even without - the cooperation of the remote side. - -nxcomp-2.0.0-9 - -- Modified the shutdown procedure to not rely on the TERM signal - when the proxy needs to wait for the server to complete. We will - now print the following message in the session log: - - Info: Watchdog running with pid 'n'. - Info: Waiting for watchdog process to complete. - - The NX server will have to kill the process with the given pid - to mandate the proxy shutdown. This solves the TR11C01192. - -- Added the X_NXSetCacheParameters request. It tells to the proxy - how to handle caching of X requests, namely if requests should - be stored in the memory cache, split in smaller data chunks and, - in the case of images, saved on disk in the persistent image - cache. The request affects all the X messages until the proxy - is further configured. - -- Enabling and disabling loading and saving of persistent images - due to a X_NXSetCacheParameters is still to be implemented. - -- Implemented font channel compatibility with older versions. If - the font port is queried and the remote proxy doesn't support - the tunneling of font server connections, an empty string is - returned. - -- The option 'resize', used by agents, is now silently ignored. - This solves the TR10C01061. - -- Added the missing reference to TR08C000981. - -nxcomp-2.0.0-8 - -- Discarded the first idea of setting the font path implicitly in - the X server side proxy, by means of a multi-pass operation and - added the NXGetFontParameters() request and reply. If the proxy - has been configured accordingly, the request returns the X font - path that can be set by the agent to tunnel the font server con- - nections through the NX link. - -- Changed the parsing of the font server port to be able to handle - the defaults. - -nxcomp-2.0.0-7 - -- More work on tunneling of font server connections. - -- The synchronization requests are now replied at the same time - as a new request is received, by checking if the channel has - already gone past the awaited sequence number. This avoids the - delay caused by the previous versions in the case the expected - reply had been handled asynchronously, inside the write loop. - -nxcomp-2.0.0-6 - -- The display is again passed to the client using the -display - parameter. - -- The option 'type' is now ignored at X server side. Support at - the X server side had been left for compatibility with older - versions of the proxy. - -- Added direct support for more session types, namely 'unix-cde', - 'unix-xdm', 'unix-console', 'unix-default'. The 'unix-console' - and 'unix-default', similarly to 'unix-application', will now - trigger the 'raw' mode. - -nxcomp-2.0.0-5 - -- Renamed Png.h and Png.cpp to Pgn.h and Pgn.cpp to avoid name - clashes on Windows. - -- The distclean target now removes the autom4te.cache directory. - -nxcomp-2.0.0-4 - -- Added the 'kill=n' option to let the proxy add the process to - the list of daemons that must be terminated at session shutdown. - Multiple 'kill=n' options can be specified. The proxy will send - to each process a SIGTERM signal before exiting. - -- Removed the code that forcibly disabled the RENDER extension on - Solaris. Eventual compatibility problems will be now handled in - the NX agent. - -- The path to the client executable is now assumed to be in the - NX_CLIENT environment. If the variable is not set, the proxy - will guess the location based on the target platform. This is - part of the FR11C01215. - -nxcomp-2.0.0-3 - -- More code cleanup. Protocol step 5 and cache step 2 are assumed - by default. This allows us to remove the various channel caches - that are not used anymore. - -- Removed the outdated encodeBegin() and encodeEnd() methods. - -nxcomp-2.0.0-2 - -- Added compatibility with the 1.5.0 and 1.4.0 versions. Protocol - version older than the 1.4.0 will cause the proxy to drop the - connection. - -- Rewritten the version negotiatiation logic to better handle the - compatibility between the local and the remote version. - -- Removed the conditional code handling the compatibility with - the protocol encodings from 1 to 4. - -- Small adjustments to the session negotiation procedure to give - more hints in the case of errors. A dialog is now issued if the - remote proxy drops the connection due to a probable authentica- - tion failure or when the remote proxy version is not compatible - with our version. - -nxcomp-2.0.0-1 - -- Opened the 2.0.0 branch based on nxcomp-1.5.0-80. - -nxcomp-1.5.0-80 - -- Fixed a bug that prevented the Unix socket to be created in the - right directory. This affected the ability of the server to run - NX sessions without the agent encoding. - -nxcomp-1.5.0-79 - -- Solved a bug in the 15 to 16 bpp conversion for RDP sessions. - -- Corrected a typo in the PANIC message of Unpack16To24 function. - -- Optimized the 16 bpp RDP decompression routine. - -nxcomp-1.5.0-78 - -- Implemented the FR11C01215. The following environment variables - are checked to determine the location of the relevant NX direct- - ories: - - $NX_ROOT The root NX directory is the place where the session - directory and the cache files are created. This is - usually overridden by passing the 'root=' option. By - default, the root NX directory is assumed to be the - directory '.nx' in the user's home. - - $NX_SYSTEM The directory where NX programs and libraries reside. - If not set, the value is assumed to be '/usr/NX'. - Programs, libraries and data files are respectedly - searched in the 'bin', 'lib' and 'share' subdirecto- - ries. - - $NX_HOME The NX user's home directory. If $NX_ROOT is not set - or invalid, the user's NX directory is created here. - - $NX_TEMP The directory where the X11 Unix Domain Sockets and - all temporary files are to be created. - - $NX_CLIENT The full path to the nxclient executable. If the va- - riable is not set, the nxclient executable will be - run assuming that the program is in the system path. - This can be useful on platforms like Windows and the - Mac where nxclient is located in a different direct- - ory compared to the other programs, to make easier - for the user to execute the program from the shell. - - Other environment variables: - - $HOME The variable is checked in the case $NX_HOME is not - set, null or invalid. - - $TEMP The variable is checked whenever the $NX_TEMP direct- - ory is not set, null or invalid. - - $PATH The path where all executables are searched, except - nxclient. If $NX_CLIENT is not set, also the client - executable is searched in the system path. - - $XAUTHORITY - This is the file containing the X11 authorization - cookies. If not set, the file is assumed to be in - the user's home (either $NX_HOME or $HOME). - - $LD_LIBRARY_PATH - System-wide library search order. This should be set - by the program invoking the proxy. - -- Extended the usage message to document the relevant environment. - -- Made the WaitChild() function interruptible. This allows the user - to terminate the connection procedure immediately, by sending a - signal to the proxy process while an abort dialog is shown in the - foreground. This is part of the solution to the TR11C01216. - -- Implementation of the FR11C01215 is not yet complete. The client - program and the nxauth/xauth are still searched using the previ- - ous logic. In particular, the NX_CLIENT variable is ignored. - -nxcomp-1.5.0-77 - -- Corrected the typo in the alert dealing with VNC authentication - failures. This solves the TR11C01199. - -nxcomp-1.5.0-76 - -- Added the missing initialization in the client and server proxy - constructors. - -nxcomp-1.5.0-75 - -- Starting from this version the build procedure will automatically - create a DLL on Windows. - -- Disabled exceptions in the compiled code. - -- Disabled run-time type information to further reduce the size of - the executable. - -- Compiling with GCC 4.0.0 and -fno-exceptions produces a warning - in some files, due to control apparently reaching the end of a - non void function. This is bogus and has been confirmed to be a - GCC 4.0.0 bug solved in more recent versions. - -nxcomp-1.5.0-74 - -- Imported changes from nxcomp-1.6.0-4. - -- Solved a compilation error on Solaris and MacOSX platforms. - -- The 'font' option now accepts either a numeric value (for a TCP - port) or a 'unix/:port' or 'tcp/:port' specification. In the case - of Unix ports, we assume that a port specification "unix/:7100" - corresponds to the "/tmp/.font-unix/fs7100" socket and a port like - "unix/:-1" corresponds to "/tmp/.font-unix/fs-1". - -- An absolute file path is also accepted as a valid socket. This is - useful to test the forwarding of the font server connection, for - example by running a normal X client and pointing the socket to - the X server. - -- Protocol step 7 is now only assumed when connecting to a remote - proxy version 1.6.0 or later. - -nxcomp-1.5.0-73 - -- Use the include files from nx-X11 if the nx-X11/include directory - is found. The previous configure checked the presence of nx-X11/ - exports/include, that might not be built at the time this library - is compiled. - -nxcomp-1.5.0-72 - -- Fixed a problem on AMD64 due to the size of the area pointed by - the argument of NXTransReadable(). The ioctl() requires a pointer - to an int, at least on Linux. The original _X11TransBytesReadable() - function simply calls the ioctl() by passing the pointer that is - provided. Returning the value assuming a pointer to a long crashes - some applications, among them xterm. Now NXTransReadable() follows - the same schema of the ioctl() call and stores the result assuming - a pointer to an int. - -nxcomp-1.5.0-71 - -- Ensured that the NX trasport is destroyed on NXTransExit() even if - the parent has overridden our signal handlers. - -- Added attribute 'noreturn' to NXTransExit(). - -- Small change to the shutdown procedure to send the "Waiting for a - further signal" just after the watchdog is started. - -nxcomp-1.5.0-70 - -- Added the definition of protocol step 7. The new protocol step is - implicitly assumed when activating the font server channel, so that - NX clients and servers may decide what to do by verifying the patch - version of the peer software. This makes possible to activate the - feature without stepping up the 1.5.0 version of the software. - -nxcomp-1.5.0-69 - -- Added the -fPIC GCC flag when compiling on AMD64 architectures. - -- Small changes to configure.in to have specific CFLAGS. - -- Created a new configure using autoconf 2.59. - -- Added the 'mask=n' option to determine how channel ids are distri- - buted between client ans server. By default, channels whose ids are - multiple of 8 (starting from 0) are reserved for the client side. - All other channels can be allocated at the NX server side. - -- A check is missing on the protocol supported by the remote side, - so it is likely that mixing this version with older 1.5.0 will not - work. - -- The release has the debug logs enabled. - -nxcomp-1.5.0-68 - -- Added provision for opening new channels on both client and server - side. This required small changes to the way channel ids are mapped - and retrieved, so that both sides now support bidirectional mapping - of file descriptors to channels. - -- Made the code handling allocation of new generic channels to reside - in the base Proxy class. - -nxcomp-1.5.0-67 - -- Renamed the 'embedded keyboard' channels as 'aux' channel. - -- Renamed 'samba' channels as 'smb'. - -- The 'samba' and 'smb' options can now be used interchangeably. The - same applies to the 'keybd' and 'aux' options, used to set up the - auxiliary X channel. - -- Added a new font channel. The channel is used to forward X font - server connections from the X server on the NX client to the remote - NX server. The channel is not yet functional and requires change to - the channel allocation mechanism. - -- Added a common interface to create new listening sockets. This is - currently used for additional services, but not for the X display - sockets. - -- Simplified the interface used to accept new connections to channels - being forwarded. - -- Removed the -V option as nxproxy is not using dlopen() anymore. - -- Removed the inclusion of ClientChannel.h in Proxy.cpp that caused - test symbols to be reverted to undefined. - -nxcomp-1.5.0-66 - -- Made failures setting the IPTOS_LOWDELAY on the proxy socket to - cause a warning, instead of an error. - -- Made the clean target delete the Cygwin specific libraries. - -- Updated the configure and Message.h to deal with GCC 4. Solves the - TR08C000981. - -nxcomp-1.5.0-65 - -- Removed the warning issued on parsing the agent option 'rootless'. - Solves the TR08C00959. - -- MacOSX 10.4 defines socklen_t. Made the definition conditional so - that we can still support older versions. Solves the TR07C00926. - -- Updated the ChangeLog to include references to the solved TRs. - -nxcomp-1.5.0-64 - -- Imported the 1.6.0 changes in the maintenance 1.5.0. - -- Removed a wrong assertion that might cause the session to fail - when the software was compiled with TEST enabled in Proxy.cpp. - -- The nxclient dialog process is signaled with SIGKILL on Windows, - as the SIGTERM is ignored. This solves the TR07C00929. - -- Ensured the JPEG error flag is always set before jumping out of - the Jpeg decompression. - -- Skipped errors encontered setting the TCP_NODELAY flag on Mac. - Solves TR08C00940. - -- Few cosmetic changes. - -nxcomp-1.5.0-63 - -- Ensured that the parent is checked often in the keeper process, - so that, in the case of a premature death, the child is exited - earlier. - -nxcomp-1.5.0-62 - -- Some performance tuning of the LAN and WAN link modes. - -nxcomp-1.5.0-61 - -- Fixed the problems arisen with loading or saving the image files - on Windows by forcing the streams to be opened in binary mode. - These problems have been triggered by the recent Cygwin upgrade. - -- Removed the logs that had be left enabled for test purposes. - -nxcomp-1.5.0-60 - -- Made all errors encountered while unpacking an image just print - a warning in the session log. Such errors are not fatal but the - client monitors the state of the session at startup, so that by - marking image decompression errors as such may cause the session - to be aborted. - -- Marked as warnings also errors encountered by trying to load an - image from disk. - -nxcomp-1.5.0-59 - -- When detected, the CTRL+ALT+SHIFT+ESC sequence is removed from - the event stream. - -- Also modified the message in the session log to issue a warning, - instead of an error. - -nxcomp-1.5.0-58 - -- Added a setjmp() before yielding the control to the JPEG library. - This makes possible to recover from the JPEG decompression errors - that were previously fatal. - -- In the commit split request, the client id is now encoded by the - client channel beside the propagate flag. The client id is igno- - red by the decoding party. As in the old protocol versions, the - committing client is taken from the client id that was originally - sent together with the packed image. - -- Fixed the compilation problem when defining OPCODES in Misc.cpp. - -- Skipped the synchronous flush of the proxy link when connecting - to a previous NX version. - -- Ensured that the new alerts are only requested when connected to - a compatible proxy. - -- Ignored the option 'fullscreen', targeting the agents. - -nxcomp-1.5.0-57 - -- Added more alerts and changed the name of those dealing with the - resume of a session. - -- Added the MIXED define. When set, the proxy will let all logs go - to the standard error. This is useful to interleave the Xlib log - output with the proxy output in a single file. - -- Added a new alert to report an I/O error at agent reconnection. - This is one of those alert that can't be actually shown, but are - included to offer a consistent view to the agent implementation. - -nxcomp-1.5.0-56 - -- Added the split mode NXSplitModeSync. By selecting this mode, - the proxy will try to empty the split store immediately, until - all messages marked in such mode will be synchronized. The im- - plementation is left to future versions. - - #define NXSplitModeSync 3 - -- Added the messages specific to RDP and VNC sessions in NXalert.h. - Included are also a few alerts related to changes to the color - depth and desktop geometry that may be eventually mandated by the - remote server. - -- Corrected a typo in NXalert.h - -nxcomp-1.5.0-55 - -- Added the 'mode' field in the X_NXStartSplit request. It determi- - nes the strategy that the proxy will adopt to handle the image. - If set to 'eager', the proxy will only split the messages whose - size exceeds the split threshold (the threshold can be found in - the X_NXGetControlParameters reply). If mode is set to lazy, the - proxy will split any image that it is not able to find in its - cache. - - The opcode and the two available modes are defined in NXproto.h, - currently: - - #define NXSplitModeDefault 0 - #define NXSplitModeEager 1 - #define NXSplitModeLazy 2 - -- All requests related to image streaming now carry a 'resource' id. - The id is currently ignored by the proxy in the case of X_NXCom- - mitSplit requests. - -- Added a new NXSetSplitMode() request. It determines the strategy - that the proxy will adopt to stream the images. If set to 'eager' - the proxy will only split the messages whose size exceeds the - split threshold, otherwise it will split all the images, regard- - less their size. This is in preparation of the lazy encoding in - agent. - -- Slightly decreased the startup timeout compared to the value it - had in the 1.4.0. This timeout is used to retain the images used - during session startup in the persistent cache. - -nxcomp-1.5.0-54 - -- Modified the text of the begin-reconnection alert to mention the - speed of the connection detected by the agent. - -nxcomp-1.5.0-53 - -- Reworked the handling of the abort-split events issued by the re- - remote proxy so that we now finalize the procedure and restart the - client asynchronously, in the middle of the write loop. - -nxcomp-1.5.0-52 - -- Rewritten the internal interface to the notification events. There - are now five different split notification events: - - NXNoSplitNotify The operation didn't cause any actual split. - The client can be immediately restarted. - - NXStartSplitNotify A split is ongoing. The client should be - suspended until the end of the split. - - NXCommitSplitNotify A complete request has been recomposed. The - client can commit the given request to the - X server. - - NXEndSplitNotify The split operation was duly completed. The - client can be restarted. - - NXEmptySplitNotify No more split operation are pending. The - agent can use this information to implement - specific strategies, requiring for example - that all messages have been recomposed at - the remote end. This can include updating - the drawables that were not synchronized - because of the lazy encoding. - -- Removed the X_NXSync and X_NXKarma operations, not used anymore by - the NX agents. - -- Increasing or decreasing a timeout makes it respectively equal to - the base timeout or to the base timeout / 4. - -nxcomp-1.5.0-51 - -- Improved the mechanism by which synchronization replies are sent - to the X client proxy. - -- Using the leftPad field as passed by the nxagent 1.5.0-58 doesn't - seem to work with the MIT-SHM. The workaround is to disable the - MIT-SHM operation in the case of 1 bpp images. - -- Removed the limitation on the size of the shared memory segment - that had been introduced for test purposes. - -nxcomp-1.5.0-50 - -- Solved compilation problem when --with-info was not given. - -nxcomp-1.5.0-49 - -- Improved support for color matching from 15 and 16 bpp to 24 and - 32 bpp in RDP sessions. - -- Solved TR05C00910. This was about "shadows" that might appear in - RDP sessions when small elements like tooltips were drawn. - -nxcomp-1.5.0-48 - -- Added a 'commit' field in X_NXCommitSplit request. When zero, the - X server side proxy will unlock the message in the message store, - without actually committing the image to the X server. The new - field required changes to the encoding. This means that this ver- - sion is not compatible with older 1.5.0 nxcomp releases. - -- Added a new control message. This is used by NXTransFlush() to for- - ce a roundtrip between the proxies and speed-up the handling of - the synchronous replies. - -nxcomp-1.5.0-47 - -- Made the timeouts dynamic, based on the user input and the current - bitrate. - -- Set the available tokens to 8. This allows for 16 KB to be sent on - a modem before having to wait for a reply. - -- Added provision for removing a dialog on the remote end. This can - be used, for example, to get rid of a message that was displayed - by the agent at the beginning of a lengthy operation. - -- Fixed a fault that arose when trying to run the proxy on a display - whose name began with the 'nx' string. - -- Running a client or server session on a display host beginning with - 'nx' should be now possible. - -- Flush is now always immediate when there is already data queued in - the TCP socket. - -nxcomp-1.5.0-46 - -- Created the NXalert.h header from Alert.h to share the alert codes - with the agents. The new NXTransAlert() interface can be used to - start an alert on the remote side. - -- Created the NXTransParse*() and NXTransCleanup() wrappers. - -- Temporarily using the single-dash style when passing parameters to - nxclient until the double-dash style is fixed. - -nxcomp-1.5.0-45 - -- Motion events are now flushed at the time the X server channel is - sending the token reply. - -- Renamed NXDialog() to NXTransDialog() and added a window ID parame- - ter, to be used by the agent when starting the "pulldown" dialogs. - -- Also renamed the other NX utility functions. - -nxcomp-1.5.0-44 - -- Solved a bug that prevented auxiliary X connections from working - with the agent. - -- Added the missing check on the proxy pointer in HandleTimer() as - it may be actually called before the proxy is created. - -nxcomp-1.5.0-43 - -- Started tuning the performance. For now, the available tokens are - set to an improbable value of 10000. - -nxcomp-1.5.0-42 - -- Disabled the X server side remote expose events for test purposes. - This is intended uncover the display problems introduced by the - new handling of exposures in the X11 agent. - -- Fixed some timestamp related functions to avoid rounding problems. - -- Moved the timestamps of split, frame and flush from the Control - to the Proxy class. - -- Made the X server side proxy to skip updating the counters related - to token management. - -- Made also the X server side use deferred flushes. - -- Modified handleFrame() to manage both pings and data frames and - send the token before the actual write operation. - -- Cleaned the pseudo-files used to load the control parameters. - -- Cleaned up the FIXME's in the lower layers. More FIXME's remain in - the frontend classes. - -- Added a further counter to the statistics tracking the number of - network writes performed on the proxy link. - -nxcomp-1.5.0-41 - -- Now the watchdog process doesn't kill the parent. The termination - event is determined by monitoring the child. This is advisable to - avoid interfering with the signal handling in agent. - -- The house-keeping process is not started if differential compres- - sion (and thus caching of images) is disabled. - -- Wait for the watchdog to terminate before starting the house-keep- - ing process. - -- Fixed the problem of gray stripes in white areas when using 15bpp - RDP compression. This solves the TR06C00916. - -- Added a log in Message.cpp to tell when an image is removed from - the memory cache. - -- Removed most of the logs. Only left the logs directly related to - the deferred flushes. - -- Removed a warning due to a missing definition in NX.h. - -nxcomp-1.5.0-40 - -- Added the signal '12' to the set of blocked signal on Cygwin. This - is what is delivered to the application when it tries to create a - shared memory segment when the cygserver is not running. The call - later returns "Operation not implemented", only useful if you have - survived to the signal. - -- Modified the configure script to not link against cygipc. - -- Improved error handling in the negotiation phase. - -- Reset the last signal received when aborting a connection attempt. - Not doing that might cause a warning. - -nxcomp-1.5.0-39 - -- Both channels and proxy can now deal with incomplete messages by - waiting for the full data to become available. This is not going - to work when the transport is connected to an agent that is run- - ning in-process, so the timeout must be really small. - -- Made the main loop more compact by letting a single function read - from proxy and channels. The same change applies to writing to - descriptors that are reported to be ready. - -- Optimized the loop to report as ready the agent descriptors that - have become available after the proxy execution phase. - -- Now the proxy will try to asynchronously read from its descriptor - after having read from the channel. - -- Unified the routine setting the routines setting the read and write - descriptors and the timeouts. - -- Unified the routine handling the channel events. - -- Reintroduced the last ping timestamp to avoid sending more than a - single ping every PingTimeout milliseconds. - -- The cleanup procedure now waits for the watchdog and house-keeping - processes to terminate. - -- Reverted the change occurred in 1.5.0-35 about the byte-ordering - problem in decompression of PNG and JPEG images. - -- More coding about deferred flushes. - -- Relevant debug logs are enabled in the main loop, in the proxy and - in the channel classes, so use only for testing. - -nxcomp-1.5.0-38 - -- Started the implementation of deferred writes based on the new NX - transport. - -- Solved a problem with the statistics file affecting the Windows - platform. Basically it seems that Cygwin or the stdc++ library - don't deal correctly with files that are reopened just after - having unlinked them. - -- Implemented support for 15 bpp RDP bitmaps. - -- Added "rdpcolors" and "rdpcache" to the list of parameters that - are ignored in ParseEnviromentOptions(). - -- This version has lot of logs enabled and some forced cleanups in - the case of unexpected conditions. Avoid to use it for long-last- - ing test sessions. - -nxcomp-1.5.0-37 - -- Now splitting of images is fully disabled when running with link - LAN. Previously the split was not executed by the proxy, but the - agent was configured to send the start/end sequence. - -- Added the check protecting the proxy from token underflow. In the - previous code the check was left out to verify the conditions un- - der which this event might be encountered. - -- NXTransWrite() and NXTransWriteVector() allocate a context before - calling handleRead(), so they can correctly return in the case of - a cleanup. - -nxcomp-1.5.0-36 - -- Modified the channel write loop to interleave abort split events - between the writes to the X server socket. - -nxcomp-1.5.0-35 - -- Solved a byte-ordering problem in decompression of PNG and JPEG - images. - -- Changed the handleToken() interface to make explicit if a token - must be issued because of a ping. - -- Small fix to prevent a warning in Jpeg.cpp when TEST is enabled. - -nxcomp-1.5.0-34 - -- Solved a few problems introduced by the rewrite of the read loops - in channels. - -- Added definition of NXCollectInputFocusNotify. - -nxcomp-1.5.0-33 - -- Implemented a new control flow system based on tokens exchanged bet- - ween the proxies. When the clint side runs out of tokens it stops - sending data until a new token is returned. Tokens are sent whenever - the data written to the socket exceeds the amount of data set for a - scheduled write, so the proxy is free to send a number of smaller - frames before running out of tokens. - -- The reason the new system is introduced is because the old method - had two outstanding problems: - - - It worked very well when the proxies were directly connected, - but couldn't reliably detect a link congestion when tunneled - over SSH. - - - In the attempt of reducing the data queued to the TCP layer, it - didn't leverage all the available bandwidth. - -- Moved the final check on the state of the session at the end of - execution stage, instead of the beginning. The signals sent by the - user to request the statistics could be reset before the proxy had - entered the right procedure. - -- Added the session type 'unix-rootless', to be used for single apps - run with the agent in rootless mode. - -nxcomp-1.5.0-32 - -- Modified the main loop to skip the select when I/O is possible on - any of the agent descriptors or the proxy link. - -- Now the house-keeping process is allocated in the heap instead of - the stack. - -nxcomp-1.5.0-31 - -- The server channel now performs asynchronous reads from the display - by interleaving them with data decoded from the remote proxy. - -- Improved the handling of the memory-to-memory transport. - -nxcomp-1.5.0-30 - -- Redesigned the handling of the congestion events to work more re- - liably and to report the events to the remote peer earlier. - -- Increased the size of the shared memory segment when the MIT-SHM - extension is activated. - -- Solved a bug that prevented the ping timeout to work as expected. - -- Ensured that, when entering the main select(), neither the chan- - nels or the proxy have pending messages in the read buffers. - -- There is now only a single case where we can have pending messa- - ges, namely in the handling of the MIT-SHM events. - -- Solved a bug introduced by the 1.5.0-29 that made the proxy en- - ter the select with a null timeout. - -- Renamed LINK_TYPE_AUTO to LINK_TYPE_NONE in NXproto.h. - -nxcomp-1.5.0-29 - -- Now encoding data from the agent descriptors happens in the same - context as data is written to the buffer. - -- Optimized the handling of the congestion events to avoid running - further unneeded loops. - -- Added timer handling utilities. - -nxcomp-1.5.0-28 - -- Added code providing information about the reason of the failure - encountered connecting to the local X server. This greatly helps - when troubleshooting X authorization problems. - -- On connection failure a warning message is printed in the session - log. - -- Removed the warning that was previously printed when the MIT-SHM - extension failed to be initialized on Windows. Shared memory has - problems on Cygwin and it currently doesn't work in NXWin. - -- Reworked the message printed in the case of link failure. - -nxcomp-1.5.0-27 - -- Solved a bug in the connection procedure introduced by 1.5.0-25. - -nxcomp-1.5.0-26 - -- Transformed the errors printed on failure of the fork() creating - the children into warnings. This can happen quite often on Win- - dows, due to well known Cygwin problems. See also the ChangeLog - entry for nxcomp 1.4.0-28. This patch closes the TRSL052278 but - it's obviously not a long-term solution. - -- Set the sticky bit when creating the '/tmp/.X11-unix' directory. - -- Modified the Makefile.in to remove the *.out.* files generated by - Valgrind. - -- Updated the README files. - -nxcomp-1.5.0-25 - -- Changed the directory where the client for the Mac is searched if - it is not found in the system path. - -- Modified Auth.cpp to use nxauth also on the Mac. - -- Reworked the procedure showing the alert dialog when a timeout is - encountered in the initial connection. - -- Removed the experimental code from the official 1.5.0 branch. - -nxcomp-1.5.0-24 - -- Implemented more experimental classes. - -nxcomp-1.5.0-23 - -- Added the NX_SIGNAL_FORWARD action to NXTransSignal(). This can - be used to let the proxy call the original signal handler of the - agent after having blocked the signal. - -nxcomp-1.5.0-22 - -- Ensured that we always have a context, even before creating the - transport. - -- Suppressed the error message printed when passing the -h option. - -- Added the experimental code that is currently under development. - -nxcomp-1.5.0-21 - -- Enabled the fake X cookie authentication. This requires checking - the remote proxy version to verify that the server supports the - new authorization mechanism. - -- It's worth noting that the X client side proxy doesn't care which - cookie is sent over the connection. The problem is that clients - connecting to 1.4.0 servers don't have a method to force the ser- - ver to use the fake cookie. This means that we have to solve the - problem by letting the proxy check the remote version so that it - can omit to replace the cookie when connecting to older servers. - -nxcomp-1.5.0-20 - -- Added the NXTransCongestion() function. It returns true if proxy - is in congestion state. - -- Removed an incorrect warning that was printed when calling force() - for the memory-to-memory transport. The agent could actually re- - quire multiple loops to read all data queued for it. - -nxcomp-1.5.0-19 - -- Small optimization in NXTransReadable() to run a new NXTransConti- - nue() loop only after at least RetryTimeout milliseconds are pas- - sed since the last call and still no data is available. This cuts - the number of unneeded loops to 1/4th of the total, probably more, - on faster machines. - -- Added NXCollectGrabPointerNotify to NXproto.h. - -nxcomp-1.5.0-18 - -- Minor changes to NXTransContinue(). - -nxcomp-1.5.0-17 - -- Moved respawning of a new nxclient instance in the cleanup procedu- - re. This ensures that the respawn is executed whatever is the rea- - son of the session shutdown. - -- Added a method to force closure of a given channel in proxy. - -- Removed code handling the special case triggered on Windows by the - presence of a NX_SESSION variable in the environment. - -nxcomp-1.5.0-16 - -- Added the NXTransSignal() function to let agents tell to the proxy - how to handle the standard POSIX signals. Given the SIGINT signal, - for example, the caller can specify any of the following actions. - - NX_SIGNAL_ENABLE: A signal handler will have to be installed by - the library, so that it can be intercepted by - the proxy. - - NX_SIGNAL_DISABLE: The signal will be handled by the caller and, - eventually, forwarded to the proxy by calling - NXTransSignal() explicitly. - - NX_SIGNAL_RAISE: The signal must be handled now, as if it had - been delivered by the operating system. This - function can be called by the agent with the - purpose of propagating a signal to the proxy. - - As a rule of thumb, agents should let the proxy handle SIGUSR1 and - SIGUSR2, used for producing the NX protocol statistics, and SIGHUP, - used for disconnecting the NX transport. - -- The following signals are blocked by default upon creation of the - NX transport: - - SIGCHLD These signals should be always put under the control - SIGUSR1 of the proxy. If agents are intercepting them, agents - SIGUSR2 should later call NXTransSignal(..., NX_SIGNAL_RAISE) - SIGHUP to forward the signal to the proxy. - - SIGINT These signals should be intercepted by agents. Agents - SIGTERM should ensure that NXTransDestroy() is called before - exiting, to give the proxy a chance to shut down the - NX transport. - - SIGPIPE This signal is blocked by the proxy, but not used to - implement any functionality. It can be handled by the - NX agent without affecting the proxy. - - SIGALRM This is not blocked by the proxy, but could be used - in future. - - SIGVTALRM These signals are not used and should not be used in - SIGWINCH future versions of the library. - SIGIO - SIGTSTP - SIGTTIN - SIGTTOU - -- By calling NXTransSignal(..., NX_SIGNAL_DISABLE) nxcomp will res- - tore the signal handler that was saved at the time the proxy hand- - ler was installed. This means that you should call the function - just after the XOpenDisplay() or any other function used to init- - ialize the NX transport. - -nxcomp-1.5.0-15 - -- In NXTransContinue(), if the transport is gone, return immediately, - that is without having to wait until the NXTransSelect() timeout. - -- Ensure that NXTransCreate() has a jump context, just in the case - a subsequent operation would cause a cleanup. - -nxcomp-1.5.0-14 - -- Solved a problem with requests left in the agent's buffer when run- - ning the NX transport. The agent could have enqueued data to our - side and checked the available events but requests could not be - written to the proxy because proxy might not have had a chance to - enter a new select. We found that this behaviour was triggered by - _XEventsQueued, so now a new loop is forced when agent is calling - _X11TransDataReadable. The procedure can be optimized, by avoiding - an expensive loop when no critical I/O is pending. - -- Added a few additional logs to ClientChannel and ServerChannel. - -nxcomp-1.5.0-13 - -- Added the code handling the special cases of an user not specifying - a proxy cookie or the case of the X authorization file not contain- - ing a value matching the display. In the first case we'll forward - the same cookie that was feeded to the proxy, in the second case we - will forward to the X server a random generated cookie, similarly to - what SSH does in this same condition. - -- Rewritten the command line parser. Removed all the command line - options parsed on behalf of nxproxy except: - - -C Specify that nxproxy has to run on the "X client" - side, listening for connections and impersonating - an X server.\n\ - - -S Specify that nxproxy has to run in "X server" mode, - thus forwarding the connections to daemons running - on the client.\n\ - - -V n.n.n Request nxproxy to load the given nxcomp version. - This option is only present on Solaris and Linux. - - -v Print version information. - - host:port Put at the end, specifies the host and port of the - listening proxy. - - value=name Set the NX option to the provided value. - - Multiple NX options can be specified in the DISPLAY environment or - on the command line, by using the nx/nx,name=value notation. - -- The above information is printed on the console when incurring in - a parse error, together with a list of the available option=value - parameters. - -- Renamed the 'log' option to 'errors'. This makes sense as the de- - fault name for the log file is actually 'errors'. - -- Now the "Established X server connection" message is printed to - the session log only after the X connection has passed the X auth- - entication phase. This means that the NX client should become able - to show the details of the session log whenever the session fails - due to a cookie problem. - -- When selecting the additional services without specifying a port, - the client proxy will now automatically forward the connections to - the corresponding well-known ports of the CUPS, SMB and HTTP servi- - ces. Embedded X keyboard connections will be automatically forward- - ed to the same display port used to connect to the X server. The - user will still have to specify the port to be used for the media - connections as we don't have a suitable well-known port. - -- Starting from this version, connections to the keybd port will cre- - ate real X connection channels. This is required to let connections - leverage the fake authorization cookie. - -- By testing the forwarding of keybd connections I found that, when - letting X clients connect to the port, it is required to provide - the X cookie for the unix display. Adding only the TCP cookie will - not work. For example, by creating a cookie as in: - - xauth add localhost:2009 MIT-MAGIC-COOKIE-1 6f...f4 - - And running: - - xterm xterm -display localhost:2009 - - You will get the following error: - - Xlib: connection to "localhost:2009.0" refused by server - Xlib: No protocol specified - - Adding also the unix cookie will fix it: - - xauth add localhost/unix:2009 MIT-MAGIC-COOKIE-1 6f...f4 - - This seems to be a Xlib problem, with Xlib trying to get the cookie - for the UDS port even if the TCP port was requested by the user. - -- Fixed a bug that prevented the nxclient dialog to be displayed when - the session was abruptedly shut down. - -- Fixed the compilation error on Apple MacOSX due to the sa_restorer - field in sigaction. As long as this field is present on Linux we - will keep following the safer route and will set it explicitly to - NULL. - -- Included what needs to be included in Process.cpp to compile with - older gcc. - -nxcomp-1.5.0-12 - -- Implemented a replacement for the popen() and pclose() that do not - rely on a shell to run the command. They were required on Windows, - where we don't ship a suitable shell in the install. - -- Removed code forcing the PATH to include the bin directory on - Windows. - -nxcomp-1.5.0-11 - -- Forced Auth.cpp on Windows to have the directory containing the - nxauth executable in the PATH. This is just for testing, until - nxclient is fixed. - -- Fixed compilation errors on Cygwin and Sun. - -- Removed the NX_FORCE_* stubs. - -nxcomp-1.5.0-10 - -- Modified the memory management policies in ReadBuffer to fit all - the available bytes in a single buffer allocation. - -- The locateMessage() methods now give hints on the amount of data - that has to be read. - -- The read loop in channel now doesn't yield in the case of prio- - ritized messages. This is experimental. - -- Removed the check on isTimeToYield() between encodings of multi- - ple messages. This is aimed at reducing the risk of leaving pen- - ding messages in channels. - -- Modified the channels' read loop to always read all the available - data. - -- Disabled the log output that was selected when compiling with the - configure option --with-info. This leaves space for other log out- - put to be selected for more up-to-date scopes. - -- Implemented the NXTransReadVector() and the NXTransWriteVector() - functions to replace READV() and WRITEV(). - -- Implemented memory-to-memory communication between the agent and - the NX proxy by making use of the NXTransAgent() interface in the - nx-X11/lib/X11/Xtranssock.c file. - -- Added a check in NXTransSelect() for the EBADF and, on Solaris, - the EINVAL errors. It can happen in the X11 code that a descript- - or has become invalid before it is removed from the managed set - -- Rewritten the signal handling functions to restore the old actions - and masks when the NX transport is destroyed. - -- Added a NXTransAgent() function to let agents tell the proxy which - descriptor must be used for the controlling connection. Setting a - controlling connection has the effect of disabling further X client - connections and makes the proxy terminate when the channel is shut - down. - -- Solved a problem with setting the initial timeout in the select(). - -- Modified the Makefile.in to not include -Wno-deprecated when compi- - ling C programs. - -nxcomp-1.5.0-9 - -- Fixed a problem that prevented the 1.5.0-8 to work on the NX server - side. - -- This version has NX_FORCE_NULL_LISTEN_OPTION and NX_FORCE_NEW_SES- - SION_OPTION undefined, so it should work in a way that is compati- - ble with the old nxcomp. - -nxcomp-1.5.0-8 - -- The new code comes with a preliminary integration of nxcomp with - SSH. It is now possible to create the NX transport by just calling - the "switch" command as in the following example: - - NX> 299 Switching connection to: NX options: ... - -- Other possible forms for the NX switch command are: - - NX> 299 Switching connection to: NX mode: ... - - NX> 299 Switching connection to: NX mode: ... options: ... - - Or just: - - NX> 299 Switching connection to: NX - - The "mode" parameter is there to provide a way to run both enc- - rypted and unencrypted connections. Possible values are "encrypt- - ed", "unencrypted" or "default", the latter being an alias for - "encrypted". Unfortunately I was not able to test unencrypted - connections, so this may or may not work. - -- The top-level process can create the NX transport layer by calling - NXTransCreate(). The user has to set up a socket pair and pass the - higher descriptor to nxcomp. nxcomp will later monitor its end, by - reading and writing NX-encoded traffic. The user has to call the - NXTransExecute() function as often as it is possible, by letting - first NXTransPrepare() combine the sets of NX descriptors with the - descriptors that are used inside its process. A custom NXTransSel- - ect() is provided to optionally replace the original select(). This - function saves the original error code and the number of selected - descriptors upon exit, so the user can call it, restore the original - values as they were returned by the select() and run the rest of - the loop unmodified. - -- Future versions of the library should provide appropriate methods - for passing data to and from the proxy by means of a memcpy(), so - that it will be possible to remove the even minimal TCP overhead. - -- Note that integration is far from complete. More work is required - especially to manage the shutdown cleanly, in a way that gives to - SSH a chance to free its resources, and on adding facilities for - handling SSH and NX signals in a single function. - -- Rewritten the initialization procedure to make possible to run the - proxy in-process in an arbitrary connection manager, like SSH or a - HTTP utility. The same functionality can be used to embed nxcomp in - the NX agents, so that nxcomp has not to run in a separate process. - -- A new state-machine handles the advances through the connection - stages until the remote proxy (or the forwarder process ) is auth- - enticated, options have been negotiated and the session is started. - -- The option "session" is now used to pass the name of the session - file to the proxy. The parameter was previously used to pass the - literal name of the session, as set by the user, and was ignored - by the proxy. By default the session log is the standard error of - the process. It is anyway required to set the option when running - inside SSH, otherwise output will go to the same file as the SSH - output. In the NX client this would be the 'sshlog' file. - -- This version can be easily crafted to test the new integration by - setting the following define: - - NX_FORCE_NULL_LISTEN_OPTION - - This makes possible to test the nxcomp/nxssh integration by using - any production 1.4.0 client. To run this version you are required - to use nxproxy 1.5.0-4 and nxssh-1.5.0-6. - -- New functions handling enabling and disabling signals, based on - sigprocmask(). - -- Improved error reporting when failures are encountered while ne- - gotiating the session. - -nxcomp-1.5.0-7 - -- Caches are saved with a version identifier 1.4.0 so that they are - not discarded after upgrading the software to the 1.5.0. - -- Made values of T_* enumerations to be all lower case. - -- Updated copyright to year 2005. - -- Started working on an interface for running nxcomp in-process, as - a additional transport layer of nxssh or nxagent. - -nxcomp-1.5.0-6 - -- Modified the configure script and the makefiles to not include the - -Wstrict-prototypes and -Wmissing-prototypes compilation flags. The - -Wnested-externs and -Wmissing-declarations flags are not included - when using GCC 3. - -- Removed the initial newline from string "NXPROXY - Version" printed - at program startup. - -- Made X authentication compatible with 1.4.0 clients. This is a tem- - porary solution while code is updated to handle the new X authori- - zation scheme. - -nxcomp-1.5.0-5 - -- Added an Auth class to handle the X authentication. The NX server - should now use the same proxie cookie that is passed by the client - at session startup. The X server side proxy will forward the autho- - rization credentials by replacing the fake cookie with the real co- - okie, as it is read from the auth file using the xauth utility. The - implementation is based on the corresponding code found in the SSH - client and comes with the same limitations: only MIT-MAGIC-COOKIE-1 - cookies are checked and the authorization file is read only once, - at the time the instance is initialized. If the auth file changes - along the life of the session, the old cookie will still be used. - This works with X servers because of an undocumented "feature". - See also nx-X11. - -nxcomp-1.5.0-4 - -- Adjusted for alarm(0) returning an inconsistent value in ConnectTo- - Remote(). - -- Small changes to Types.h, Jpeg.cpp and Png.cpp to compile with gcc - 3.4.2. - -- Cosmetic changes to the ChangeLog file. - -nxcomp-1.5.0-3 - -- Removed test code from ServerChannel.cpp. - -- Small cosmetic change in Loop.cpp. - -- Tested for compatibility against 1.4.1-8. - -nxcomp-1.5.0-2 - -- Changed VERSION file according to TRCL052336. - -nxcomp-1.5.0-1 - -- Opened the 1.5.0 branch based on 1.4.1-9. - -nxcomp-1.4.1-9 - -- Implemented methods PACK_RDP_PLAIN_64K_COLORS and PACK_RDP_PLAIN_- - 16M_COLORS. It seems that 16 bpp plain bitmaps can be seldom recei- - ved. This doesn't seem to be the case of 24 bpp bitmaps. - -nxcomp-1.4.1-8 - -- The new code enables use of 16 bpp and 32 bpp RDP bitmaps. This re- - quired modifications to the following files: - - Misc.h - Misc.cpp - Loop.cpp - Control.cpp - ServerChannel.cpp - Unpack.h - Unpack.cpp - -- Lots of cosmetic changes compared to the original code in 1.4.1-7. - -- Merged the 1.4.0 and the 1.4.1 branches by importing changes up to - the 1.4.1-7. - -nxcomp-1.4.0-30 - -- Modified the function checking the Unix socket where X connections - will be forwarded. The function will not fail if the socket itself - doesn't exist yet. This solves the TRCL042203. - -- Moved the code checking for the CTRL+ALT+SHIFT+ESC sequence to a - separate function. The implementation will now look for a different - sequence on the MacOS/X platform. This should solve the TRCL042182. - -nxcomp-1.4.0-29 - -- Solved a bug that could cause proxy to stop reading data from the - X channels due to an incorrect calculation of the bytes queued on - the proxy link. The bug only affected Linux kernels of the 2.0/2.2 - series. - -- Fixed a problem in the proxy class that could let the select time- - out to become zero. - -nxcomp-1.4.0-28 - -- Prevented the main proxy process from quitting when the fork() of - any of the children fails. This can actually happen on Windows due - to conflicts in reallocating any of the Cygwin DLLs. - -- Reworked handling of the priority flag in channels when dealing - with the X_InternAtoms and X_AllocColor requests to reduce the time - of session startup. Priority is never set in case of X_InternAtom - requests and replies as we assume that most clients use the appro- - priate Xlib function to pipeline multiple requests in a single net- - work operation. - -- The timeout after which proxy will abort the peer connection is - still 120 seconds. An alert dialog will be shown earlier, after 30 - seconds instead of 60. - -nxcomp-1.4.0-27 - -- Removed the code setting priority on channels on ButtonPress and - Button release events. It seems preferrable to delay the flush and - pack more events in a single frame. This makes possible to get the - ButtonRelease together with the ButtonPress. - -- Fixed error detection in SetNoDelay() where a positive result - could produce a 'not supported' message in debug mode. - -nxcomp-1.4.0-26 - -- Reworked the check aimed at detecting the clock drifts. The previ- - ous code, introduced in 1.3.2-2, had the undesired side-effect of - resetting the proxy timeout. This could cause the proxy to never - detect that the other end had been killed. - -- The default behaviour of proxy is now to terminate the session at - the time an error is encountered. This includes network failures. - -- Added a new dialog to be shown to the user whenever the session - is terminated abnormally. - -nxcomp-1.4.0-25 - -- Fixed a bug in handling of suppression of errors generated by - committing the image splits. Other errors, unrelated to the commit - of split, could be suppressed. This might cause the hangup of the - session when the suppressed error was matching a reply. - -nxcomp-1.4.0-24 - -- When killing the proxy process -9 the watchdog could remain alive. - This caused the SSH link to keep the stderr open, with the effect - that former proxy message were not flushed to the session log. - Now the watchdog checks every second if the parent is dead, so - that file descriptors can be closed as soon as possible. - -- SetupDisplaySocket() tried to force the connections to the X - server on the UNIX port whenever the display was set to localhost. - This patch was intended to fix a bug in nxclient, using the TCP - port even when the display was set to a UNIX socket. This beha- - viour caused problems when running nxclient on a remote host by - means of a ssh -X. Proxy will now adhere to the display setting. - -nxcomp-1.4.0-23 - -- Added the possibility to respawn nxclient at the end of session. - This is an useful feature when powering thin-clients where NX - is the only application made available. - -- This configuration applies system-wide to the local client ins- - tallation. By default it is disabled. It can be enabled by the - by creating a 'noexit' file in the directory '/usr/NX/share', - or at compile time, by setting ENABLE_RESTART_ON_SHUTDOWN to 1. - -- Note that the solution is not perfect yet, as there are cases - where session could die without going through HandleShutdown(), - for example if a decoding error is raised in the communication - with the remote peer and the subsequent restore of the proxy - link fails to succeed. - -nxcomp-1.4.0-22 - -- Corrected typos in Timestamp.h and Loop.cpp. - -nxcomp-1.4.0-21 - -- Tuned the handling of RenderCompositeGlyphs. Now compression of - RENDER shows an average ratio of 8:1. This is a steady increase - compared to the 5:1 of the 1.3.2 version. The overall advantage - when running clients displaying a large amount of text is 30%. - -nxcomp-1.4.0-20 - -- Added a new message store for the CreatePixmap request. - -- Fixed handleCopy() to only send the data part past the offset. - This fix can save a significant amount of traffic, especially - when sending many small images whose size doesn't reach the - threshold set for compressing them. - -nxcomp-1.4.0-19 - -- Added tuning of all the RENDER requests. RenderCompositeGlyphs - will require further work. - -- Completed porting of the RENDER requests to the new templates. - -nxcomp-1.4.0-18 - -- Tuned the handling of RenderCreatePicture and RenderFreePicture. - -- Created a new template system for writing new message encoders. - -- Renamed getBits() in EncodeBuffer with diffBits(). The getBits() - method now returns the bits actually allocated in the buffer and - can be called multiple times. - -nxcomp-1.4.0-17 - -- Provided specific encoding of the remaining RENDER requests and - added compression of RenderCreateGlyphSet. - -nxcomp-1.4.0-16 - -- Code underwent through 7 different patch versions but seems to - be stable now. It still needs to provide specific encoding for - RenderCreatePicture RenderChangePicture and RenderFreePicture. - Code will likely include incompatible changes at any new version - until the new encoding will stabilize, so be sure that you use - the same nxcomp version at both sides. - -- Created the infrastructure for compressing extension messages - based on the minor opcode. A new class, MinorMessageStore, has - to be inherited by stores requiring specific compression, so - that all the encoding methods of the parent can be redirected - to it. The RENDER extension is now compressed using this new - class. - -- Managed to maintain the compatibility with caches created by the - 1.3.X version. Caches will be saved using the old format if the - remote version is not a 1.4.x. When restoring a cache created - by the 1.3.x with both proxies being the newest version, RENDER - mesages will be discarded without having to discard the whole - cache. - -- Added a member to the message class to store the identity size. - This field is now used instead of the default data offset to - manage the message data, that is the part of message after the - identity. - -- Removed the warnings printed in the session log when passing the - 'kbtype' and the 'geometry' options to the proxy. These options - are actually used by agents. - -nxcomp-1.4.0-15 - -- Started implementation of the new framework for handling enco- - ding of X extensions. - -- Renamed the overloaded methods handleEncode() and handleDecode() - to handleEncodeCached(), handleEncodeIdentity() and handleDecode- - Cached(), handleDecodeIdentity(). - -- Updated the copyright notice to year 2004. - -nxcomp-1.4.0-14 - -- Added the new channel for HTTP connections. This channel can be - used to let applications running on the NX server get access to - data and applications made available by a HTTP daemon running at - the client side. - - This channel is not used at the moment by nxclient. It can be - activated by passing http=1 to the NX server side proxy and the - value http=80 to the NX client side. - -nxcomp-1.4.0-13 - -- Quick patch to run on MacOS/X where inet_addr("127.0.0.1") - alone seems to fail to return a valid interface. - -nxcomp-1.4.0-12 - -- Few cosmetic changes to logging. - -- Removed the debug output. - -nxcomp-1.4.0-11 - -- Removed code used for simulating the new forwarding function- - ality without client and server support. - -nxcomp-1.4.0-10 - -- Implemented authentication of the forwarder to the listening - proxy. If a session cookie is required, the forwarder must - provide the cookie upon connection. - - An authentication phase at the time the forwarder connects - to the NX client side is strongly suggested because it is usu- - ally this side that sends the authorization cookie. Without - such a forwarder authentication, the local peer would reveal - the cookie to the first process connecting to the port. - -- If no cookie is specified in the switch command, the forward- - er is required to skip the authentication phase. This can be - useful when running the programs on the command line. - -- The implementation required appropriate changes to session - negotiation in nxssh. This version requires nxssh-1.4.0-8. - -nxcomp-1.4.0-9 - -- Fixed the startup procedure to correctly negotiate the cookie - when the X server side proxy is listening for a forwarder. - -- When listening for a local forwarder (that is when the listen - option is enabled at X server side), proxy will listen for the - forwarder on the localhost interface. - -- This version has ports and and other parameters hardcoded for - testing purposes and is not intended for normal use. - -nxcomp-1.4.0-8 - -- Slightly modified the text of FAILED_PROXY_CONNECTION alert. - -nxcomp-1.4.0-7 - -- Added provision for leaving a running dialog showing an OK box - if proxy is exiting abnormally. This seems to fail to yield the - expected results as, at the present moment, client checks if - parent has exited. - -- Added a Binder class invoked when calling proxy with -B option. - It would serve as a replacement of the modifications I'm doing - in nxssh. The class is just a framework and the implementation - is unfinished. - -nxcomp-1.4.0-6 - -- Added a line in the session log if the connection procedure is - aborted due to a signal. - -- Fixed ParseHostOption() to let it take in account the proxy - port offset when passing 'host:port' as the last parameter at - X server side. - -nxcomp-1.4.0-5 - -- Lowered the default port offsets used for CUPS and SMB services - to 2000 and 3000. Arbitrary ports can be used by passing the ser- - vice's port at proxy startup. By default, anyway, the port is at - the same offset of the proxied display. Considering that the NX - server uses to start the first session at display 1000, we must - lower some of the defaults to avoid interference with the normal - X sessions run on the server. - - Session at display ":1000" will have: - - . Forwarding of CUPS connections at 3000. - - . Forwarding of SMB connections at 4000. - - . The listening proxy (at NX server side) at 5000. This - port is not used when enabling SSH tunneling - - . The proxied X display (NX agent or proxy) at 7000. - - . Forwarding of multimedia channels at 8000. - - . Forwarding of embedded keyboard connections at 9000. - -- Turned off the log output. - -nxcomp-1.4.0-4 - -- Managed to get the X client side proxy connect to the remote - peer. This means that some parameters that were implicitly - assumed based on the proxied port simulating the X display - must be now specified in the NX display string. - -- The 'port' parameter now specifies the remote TCP port where - the local proxy will connect to the remote peer. In previous - versions this parameter also affected the proxied port. This - was mainly a side effect, as the remote peer was always con- - tacted at port 4000 plus the proxied display offset. - -- Added the 'listen' parameter to tell to the proxy that is go- - ing to accept the peer connection on which port it will be - contacted. By default, similarly to the previous version, the - proxy will listen at the proxied display offset. - -- A check has been added in order to disallow passing both the - 'accept' and the 'connect' parameter at the same time. A simi- - lar check affects the 'listen' parameter. - -- Renamed the previously unused 'sync' channel as 'cups'. - -nxcomp-1.4.0-3 - -- Preserved the ability of version 1.3.2 to load caches generated - by this version. - -nxcomp-1.4.0-2 - -- Small fixes to compile under Solaris 8. - -nxcomp-1.4.0-1 - -- Opened the 1.4.0 branch. - -nxcomp-1.3.2-4 - -- Fixed a problem with shmget(). Code in ServerChannel checked - the return value for being greater then 0, while 0 can actual- - ly be a valid segment. - -- When memory cache is disabled, nxcomp will explicitly set the - appropriate control variables dealing with loading and saving - of the persistent cache. This can be considered a cosmetic - change as nxcomp will disable NX delta compression if memory - cache is not available and this has an implicit effect on the - ability to load and save such a cache. - -nxcomp-1.3.2-3 - -- Removed inclusion of zlib.h in Png.cpp. Conflicting symbols - with zlib.h from nx-X11 could cause compilation to fail. - -nxcomp-1.3.2-2 - -- Added a function to take into account the clock drifts at the - time we check the ping from the remote proxy. This can be - caused by the user changing the system time or by small adjust- - ments introduced by the operating system making the clock go - backward. Such events could cause the proxy link to be shut - down and reconnected. - -- Reduced the length of lines printed in statistics when showing - the details of X protocol's opcodes. This is intended to help - nxclient to keep the whole statistics in the 'details' window, - so that users don't have to use the scrollbars. - -nxcomp-1.3.2-1 - -- Opened the 1.3.2 branch. - -nxcomp-1.3.1-5 - -- It seems that Solaris can return an EINVAL error selecting a - shutdown descriptor even before we actually close the socket. - We now ignore the condition on Solaris. This is definitely a - Solaris bug. - -nxcomp-1.3.1-4 - -- Increased the timeout after which proxy will abort the peer - connection to 120 seconds. An alert dialog will now be shown - after 60 seconds, instead of the 30 seconds being the default - in the previous version. Some users reported the timeout to - be too short in the case of temporary network failures. - -nxcomp-1.3.1-3 - -- Some optimizations in the cache house-keeping process. Now it - runs at lower system priority in respect to the parent. Any 2 - iterations through directories and images, it also sleeps for - a tiny amount of time. This further decreases the system load. - -- Removed the underline characters and added a colon in the - title of this ChangeLog to fully comply with format used in - the release notices. - -nxcomp-1.3.1-2 - -- Fixed a crash when running both client and server on the SPARC - Solaris. An optimization used to avoid byte-swapping when both - hosts have the same endianess doesn't work on SPARC if buffer - is not aligned to word boundary. A better version of the code - should check the CPU, not the OS, as this probably applies to - other processors. - -nxcomp-1.3.1-1 - -- Opened the 1.3.1 branch. - -nxcomp-1.3.0-50 - -- Disabled the processor limit in X client side proxy. In previous - versions the processor load limit was set to an idle time ratio - of 2. This was likely to cause an unwanted slowdown on very old - hardware or when running the server as guest OS inside a VMWare - virtual machine. - -nxcomp-1.3.0-49 - -- Last minute update on proxy shutdown bug on Cygwin. A stack - trace reveals that faillure happens in the static destructor of - the BlockCacheSet class. It seems that problem appeared just - after having upgraded to the latest version of Cygwin DLL. Now - the destructor is skipped at shutdown. - -nxcomp-1.3.0-48 - -- Further fix to overcome the shutdown problem on Windows. - -nxcomp-1.3.0-47 - -- Used T_files::value_type() in Keeper.cpp. The form without the - explicit constructor fails to compile with GCC 2.91 on RH 6.2. - -- Fixed '==' -> '=' in configure.in to build under RH 6.2 and - probably other platforms. - -nxcomp-1.3.0-46 - -- The cleanup procedure now skips deletion of the IO streams - under Windows. This is intended to overcome a strange segfault - occurring at random time, at the time proxy is being shutdown. - -nxcomp-1.3.0-45 - -- Newer versions of the stdlibc++ do not seem to be able to deal - with NULL strings or non printable characters. This caused the - standard error stream to get sometimes corrupted in the case - TEST and DEBUG logs were enabled in Loop.cpp. - -nxcomp-1.3.0-44 - -- Disabled TEST and DEBUG logs in ServerChannel. - -nxcomp-1.3.0-43 - -- Fixed a crash when unpacking an image in server proxy in the - case the unpack state for the given channel had not been - previously created. - -nxcomp-1.3.0-42 - -- Small modification to setSchedule() to not account previous - data accumulated in the encode buffer. The new code seems to - allow better use of the available bandwidth. - -nxcomp-1.3.0-41 - -- Further fix in Tight decompression. Content of the main write - buffer was not removed before flushing the unpacked data to - the X server link. - -nxcomp-1.3.0-40 - -- Removed the code marked as FIXME in Loop and ServerChannel. - Code was used in previous version to override any pack method - other than NO_PACK and to disable initialization of the shared - memory. - -nxcomp-1.3.0-39 - -- Solved the problem with unpacking of RDP text on big-endian - architectures. The width field in PutPackedImage was put as - 16 bits and extracted as 32 bits at decoding side. - -- Moved the code checking if any of the children has exited in a - specific function. This function is now called any time signals - are newly enabled. This works even on Solaris. - -- Enabled use of shared memory with Tight image decompression. - -- Added event NXCollectPropertyNotify to NXproto.h. - -nxcomp-1.3.0-38 - -- Message locks are now checked before splitting a message. - -nxcomp-1.3.0-37 - -- Added a further counter to yield encoding data if the amount - of output bytes to be written to channels exceeds a threshold. - -- Modified proxy to write data immediately if the encoding loop - was interrupted. - -nxcomp-1.3.0-36 - -- Further fix required by Tight decompression. By handling mul- - tiple writes in the Tight class we may flush the main write - buffer in the wrong order. If Tight decompression is enabled, - the buffer is now flushed before decoding the packed image. - -- A SIGCHLD is raised any time signals are newly enabled. This - allows the main loop to wait() the pid of children that had - exited while signals were disabled. - -nxcomp-1.3.0-35 - -- Fixed Tight decompression by handling multiple writes to the - channel's transport inside the decompression function. - -- Made Tight decompressor in ServerChannel a pointer instead of - an instance of the class. Class is allocated the first time it - is referenced. - -- Rewritten handleUnpack() in ServerChannel to use a switch() - on the pack method instead of multiple if(). - -nxcomp-1.3.0-34 - -- Disabled RENDER extension when running X agent sessions on - the Solaris client. Problems seem to be caused by incompati- - bilities in the implementation of RENDER on the Sun X server - shipped by default. We did not test NX with the XFree86 X - server, but it seems that, when using the Sun X server, even - plain X clients don't make full use of the extension. - -nxcomp-1.3.0-33 - -- Added 4 new fields to the X_NXGetControlParameters reply. - A dialog should be shown by agent if proxy was not able to - negotiate a persistent cache or if a cache was selected but - not loaded because incompatible or corrupted. - -- Fixed a bug on Solaris where socket() must be recreated if - the first connect() fails. Not a problem. The strange thing - is that if you reuse the socket(), the subsequent connect() - is successful and the program fails as soon as you try to - write to it. - -nxcomp-1.3.0-32 - -- Added request X_NXFreeUnpack to free the resources allocated - by the remote proxy to unpack images for the given agent's - client - -- Added an alert at X server side if proxies were not able to - negotiate a persistent cache or if a cache was selected but - not loaded at X server side (that means that probably cache - was not compatible or corrupted). The alert is not enabled - at the moment. Before enabling it, we need to find a way to - deal with full-screen mode. - -- Tuning of MIT-SHM parameters. - -nxcomp-1.3.0-31 - -- Modified the following requests to carry the id of the - agent's client: - - - X_NXSetUnpackGeometry - - X_NXSetUnpackColormap - - X_NXSetUnpackAlpha - - X_NXPutPackedImage - - Now each agent's client has its own record pointing to the - geometry, colormap and alpha channel that will be used to - unpack the image. Code is not finished yet so it is advisable - that agents' writers keep using client id 0. Note also that - the final solution will require some changes to the way split - notifications are sent to agent that I plan to implement in - the next versions. - -- The X_NXSetUnpackGeometry request has now a message store. - This should reduce the overhead to the minimum even in the - case of dumb agents not checking if the current geometry - matches the image to be unpacked. - -nxcomp-1.3.0-30 - -- Improved handling of short-circuited replies at X client - side. Request opcodes are now pushed in the sequence queue - to determine if a reply is expected. In this case tainting - of reply is skipped to preserve the sequence ordering of - any event or error that could have generated by the reply. - This seems to solve all the problems reported by people - running a NX session in virtual desktop mode nested in an - existing session being run in single application mode. - -- Modified the cleanup procedure to print the 'Waiting for' - message in the session log only at the time all X channels - have been actually shut down. This message can be used by - the NX server to find out the appropriate time to close - the session. - -- Added the selected session type to the 'Using pack method' - message printed at startup. - -- Added the option to close down the proxy link and perform - a clean shutdown of the session, re-read the whole session - configuration or restart the proxy link when a SIGHUP is - delivered to the proxy process. The default behaviour is - to close down the session. The new default (the old one was - to restart the link) is a required feature to let users run - full sessions using single application mode f.e. in a LTSP - environment. I noted that when the controlling terminal of - the X session is closed, a SIGHUP is delivered to the X - server side proxy (probably it is delivered to all the con- - nected clients, and, thus for NX, only to the proxy). This - signal can be used to terminate the whole session. - -nxcomp-1.3.0-29 - -- Changed defaults to disable image masks when running proxy - in single application mode. The new configuration requires - changes in NX server and in NX X11 library. Users should - experience much better image quality when using NX on slow - links. This comes at the cost of slightly worse compression - ratios. - -nxcomp-1.3.0-28 - -- Opcode of request was not rewritten by server channel when - using link LAN. This caused problems with taint of replies. - -nxcomp-1.3.0-27 - -- Modified the split store and the split procedures in client - channel to always return the client id in the notification - events. The new field is added to event at byte offset 28 - to preserve compatibility with previous agent releases. The - modification permits to agent to match the commit of alpha - channel with the original image, if requests are split by - proxy. - -- Temporarily set the timeout used to poll MIT-SHM completion - events coming from X server to 0. More testing is required. - -- Fixed an inconsistent message generated in statistics due to - a division by 0. - -nxcomp-1.3.0-26 - -- Modified pending timeout from 1 to 0 milliseconds. This means - that both channels and proxy are now immediately restarted to - let them consume all data left in their read buffer. - -- When querying the X server for MIT-SHM support, size of name - in X_QueryExtension request was sent as 32 bits instead of 16. - This caused request to fail on big endian architectures. - -- Modified the MIT-SHM initialization procedure to always send - all the 3 protocol requests also in the case of early failures. - -nxcomp-1.3.0-25 - -- Implemented handling of the new X_NXSetUnpackAlpha message. - Performances are very satisfactory. Using most of the current - GNOME and KDE applications, caching reaches 90% of the total - messages. - -- Modified the persistent cache management routines to handle - backward compatibility with proxy versions prior of 1.3.0. - -- It has been made possible to send both X_NXSetUnpackColormap - and X_NXSetUnpackAlpha messages with 0 entries to temporarily - disable use of the colormap or the alpha channel and free the - resources allocated by the server channel class. - -- Added function UnpackAlpha() to Unpack.cpp. - -nxcomp-1.3.0-24 - -- Using WriteBuffer::registerPointer() to track growing of the - write buffer in handleFastWrite() functions. This problem - existed even in 1.2.2 but never shown up because we didn't - have to use the pointer after data had been written to the - write buffer. Now, instead, we have to post-process the write - buffer to copy data to the shared segment. - -- Optimized memory allocations running with link LAN to save a - memcpy() any time new data is allocated in the scratch buffer. - -- When running with link LAN the scratch buffer is now used only - when: - - - A further allocation would case growing of the write buffer - (and, thus, a memcpy() of the previous content). - - - When data to added is bigger than the write threshold. - - In previous versions the scratch buffer was used any time the - total amount of data to be written (write buffer + scratch - buffer) exceeded the scheduled write threshold. This caused - small writes to be appended even when a single write could - be obtained without reallocating the buffer. - -- Preliminary support for transporting the alpha channel in a - separate message in case of 32 bits displays using the RENDER - extension. - -nxcomp-1.3.0-23 - -- Modified the mask used to open the shared memory segment on - OS/X to 0777. We have to better investigate why the previous - 0600 mask doesn't work even if the user running the proxy is - the same user running the X server. - -nxcomp-1.3.0-22 - -- Implemented MIT-SHM support on LAN connections. - -- More MIT-SHM bug fixes. - -nxcomp-1.3.0-21 - -- Better use of the shared segment through an improved - algorithm leveraging the offset field of the X_ShmPutImage - request. The new algorithm greatly reduces the amount of - polls the proxy needs to perform to find if the completion - event has arrived. - -- Implemented MIT-SHM support for X_PutImage requests. - -- Implemented option shmem=value. Use of this option is anyway - discouraged. Proxy will allocate the shared memory segment - based on the size of the in-memory cache set by the user. - Use of MIT-SHM is disabled when user did set a memory cache - smaller than 2MB (for example on the embedded client). - -- Rewritten post-processing of images in server channel loop. - -- Improved error handling to ensure we intercept all MIT-SHM - X errors before they reach the NX agent. - -- Solved a problem that was causing channels to not reflect - shared memory support flags set in control. - -nxcomp-1.3.0-20 - -- Solved a compatibility problem when mixing proxy versions - 1.2.2 and 1.3.0. - -nxcomp-1.3.0-18 - -- Rewritten interfaces to shared memory initialization in - client and server channel. - -- Server channel checks for the completion event until a - timeout before reusing the shared memory segment. - -- Flush flag was not cleared after the write buffer had been - flushed in handleWrite() of both client and server channels. - This could lead to multiple fragmented writes, affecting - the performances. - -- Added -lcygipc to linking on Windows platform. - -- Added a check on GCC version to see if -Wnested-externs - -Wmissing-declarations are valid options. - -nxcomp-1.3.0-17 - -- Implemented initial support for MIT-SHM extension in the - network path between the X server proxy and the real X - server. Presently it works only for X_NXPutPackedImages. - -- Modified configure.in to compile under FreeBSD. - -- Small changes to sources due to FreeBSD support. - -nxcomp-1.3.0-16 - -- Fixed caching of RENDER extension on MacOS/X and Solaris. - -- Under Solaris an explicit call to EnableSignal() is needed - at the end of the signal handler as raising a signal seems - to reset the previous settings. - -- Can't find a way to get bytes queued for write on Solaris as - both FIONWRITE and TIOCOUTQ don't seem to be available. This - means that NX server on Solaris is only able to detect con- - gestions on proxy link at the time a write fails with error - EAGAIN. - -- Starting from this version, render extension messages are not - automatically discarded from cache when running agent based X - sessions. This is in preparation of render support introduced - in this release. - -nxcomp-1.3.0-15 - -- Changed default to force writes if X channels exceed buffer - limits. This change was suggested by benchmarks performed on - Win32. - -- Wrapped IO on cache files in functions performing better error - checking. - -- General cleanup in handling of socket options for MacOS/X and - Solaris. - -nxcomp-1.3.0-14 - -- Corrupted persistent caches were not deleted in case loading - of any of the message stores failed. To run further sessions - on the same host, user had to delete the cache file manually. - -- Improved error handling in JPEG decompression. Now connection - is reset in case of failure. - -- Before performing JPEG or PNG decompression, image is better - checked to verify if loading from disk failed. - -- Improved error handling in case of failure loading persistent - cache from disk. On MacOS/X istream -> fail() doesn't seem to - work properly. This needs further investigation. - -- The default installation path of nxclient is searched under - MacOS/X at the time nxclient is invoked in dialog mode. - -nxcomp-1.3.0-13 - -- Fixed a (further) compilation problem under Solaris. Now static - libraries are first searched under /usr/sfw/lib (in case Sun - would decide to include them in future releases). - -nxcomp-1.3.0-12 - -- Fixed parsing of command line when passing option -V. - -- Correctly detected ENOPROTOOPT when setting TCP_NODELAY socket - option on MacOS/X and Solaris. - -nxcomp-1.3.0-11 - -- Given option in configure to specify what needs to be built - statically: - - --with-static-png enable static linking of PNG library - --with-static-jpeg enable static linking of JPEG library - --with-static-z enable static linking of Z library - -nxcomp-1.3.0-10 - -- Fixed a problem in saving of persistent cache on big-endian - machines. - -nxcomp-1.3.0-9 - -- Testing with different settings to check if it's possible to - increase the performances under Windows. - -- Solved a problem in parsing of options that prevented proxy - to connect to a remote session running at port offset 0. - -- Fixed two warnings compiling on Solaris. - -- Changed configure.in to first check for nx-X11 includes - and libraries. Added "/usr/openwin/bin/makedepend" to path - searched for the executable. - -nxcomp-1.3.0-8 - -- Small cleanup in configure.in and files modified by Gregorz - Kryza to add support for Solaris. - -- A new configure script has been generated using autoconf-2.57-3. - -nxcomp-1.3.0-7 - -- Added support for detection of Solaris in configure script. - Now Makefile.in uses ranlib instead of ar. - -- Small changes in source and header files to support Solaris. - -nxcomp-1.3.0-4 - -- Corrected a bug that could cause priority on proxy and channels - to be not taken in account at the time proxy tries to determine - if it's time to flush the proxy link. - -- Better implementation of abort split notification by X server - proxy to its remote peer. The new implementation doesn't - need to set a timeout and permits notifications to be received - earlier. - -- Improved support for 'tainting' XSync() messages coming from - X clients in single application mode. Now a X_GetInputFocus - is sent to the real X server any n such messages received by - proxy. - -- Included support for 15 bpp displays. It seems that handling - them as 16 bpp it's OK. -- cgit v1.2.3