3779 lines
128 KiB
Plaintext
3779 lines
128 KiB
Plaintext
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 <sys/types.h>
|
|
#include <sys/socket.h>
|
|
|
|
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.
|