forked from ArcticaProject/nx-libs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
3778 lines (2578 loc) · 128 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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 accomodate 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.