Commit Graph

4646 Commits

Author SHA1 Message Date
Koichiro Iwao
e070902310
clipboard: tidy up bmp file header assembly
Sponsored by:   Krämer Pferdesport GmbH & Co KG
2024-06-18 11:13:40 +09:00
Koichiro Iwao
4968a34cd6
clipboard: fix a bug when pasting image to LibreOffice
While here, embed correct file size in BMP file header.

Fixes:          #3102
Sponsored by:   Krämer Pferdesport GmbH & Co KG
2024-06-17 21:08:30 +09:00
metalefty
7aa2b34ca0
Merge pull request #3088 from matt335672/v0_10_cherry_picks
Further cherry-picks for v0.10
2024-06-17 21:07:34 +09:00
matt335672
2319f56268 Replace 'dvorak' keyboard description with 'us(dvorak)'
In the words of @iskunk

It is no longer possible to refer to the Dvorak layout as just "dvorak"
(as when one would run "setxkbmap dvorak"); one must now use either
"us dvorak" or "us(dvorak)"

See https://bugs.debian.org/1063725

(cherry picked from commit a1b7c17906)
2024-06-12 14:09:31 +01:00
matt335672
a5ec4a3817 Add explicit object for the encoder finishing
On a resize, the encoder is deleted. At present this is done by asking
the encoder to exit, and then waiting a second.

- On slower systems, a second may not be enough, and so the encoder
  data structures are freed while they are still being used by the
  encoder.
- On quicker systems, resizes are delayed by hundreds of milliseconds
  longer than they need to be.

This commit adds a wait object which the encoder can use to signal it
has actually finished.

(cherry picked from commit 985b0de35e)
2024-06-10 18:54:26 +01:00
matt335672
a430eb93cb Prevent SEGV when resizing with GFX
The xrdp_enc_data contains a union for handling surface commands
and gfx commands. Memory processing is different for these two
options.

The default destructor for the encoder FIFO only knows about surface
commands. Consequently, if the encoder has queued GFX data when the
encoder is closed, the destructor processes the queued data as if
it contained surface commands rather than GFX commands. This typically
causes a SEGV as the drects field of the overlaid surface command
structure is not pointing at anything valid when it is freed.

(cherry picked from commit 809df89c08)
2024-06-10 18:54:18 +01:00
matt335672
0bef23f217 Fix session list processing
The get_sorted_session_displays() is broken in that it
doesn't produce a sorted list of displays.

The problem is the qsort comparison function which has 2 errors in 4 lines:-
1) The test is the wrong way round (i.e. arg1 < arg2 produces a +ve
   result instead of -ve)
2) Subtracting two unsigned ints in C will never return < 0

The broken function has been masked by other display checks which mean
that it is only visible in a few situations:-
1) Starting two sessions very closely to each other may allocate the
   same display to both sessions.
2) If /tmp is namespaced, the other display checks do not work, and
   more than two sessions cannot be started.

(cherry picked from commit 70f1b685ba)
2024-06-03 09:46:31 +01:00
matt335672
c32180ce5b Bump FreeBSD CI version to 13.3
(cherry picked from commit cbaaf221cd)
2024-06-01 10:35:17 +01:00
Schen
84901958a5 Fix a systemd dependency ("network-online.target")
- Fix a problem that the xrdp.service fail to auto-start when instructed to listen on a specific interface
- By changing the "network.target" systemd dependency to "network-online.target"
- The "network-online.target", in short, means at least one network interface has finished IP level setup.
- The previously used "network.target" is vague and does not provide such guarantee (ref: man systemd.special(7)).
- Which often cause "xrdp.service" fail to auto-start when the service is configured to listen on a specific interface (e.g. in xrdp.ini, "port=tcp://192.168.0.1:3389"). Because the interface may have not finish setting up its IP, when "xrdp.service" starts.

(cherry picked from commit 21e11de157)
2024-05-23 11:41:59 +01:00
matt335672
dcaa31ef16 chansrv FUSE fixes
1) [Regression] If the specified mountpoint is not immediately below an
   existing directory, the directory is not created.
2) The message to ask the user to unmount an existing mounted directory
   has been moved to the right place.

(cherry picked from commit e0a1339b34)
2024-05-22 09:55:01 +01:00
metalefty
763c1c5855
Merge pull request #3069 from metalefty/v0.10-release
Release v0.10.0
2024-05-10 23:11:16 +09:00
Koichiro Iwao
0872f9378f Bump version to 0.10.0 2024-05-10 22:40:01 +09:00
Koichiro Iwao
53e13abef1 Update NEWS 2024-05-10 22:40:01 +09:00
metalefty
8c614cdf9c
Merge pull request #3068 from metalefty/v0.10-update-news
Turn off cache explicitly when fetching NEWS from wiki
2024-05-10 17:58:22 +09:00
Koichiro Iwao
dad7766afc Turn off cache explicitly when fetching NEWS from wiki 2024-05-10 17:36:32 +09:00
metalefty
cc35ac63c9
Merge pull request #3034 from metalefty/v0.10-release
Release v0.10.0-beta.3
2024-04-19 23:43:44 +09:00
Koichiro Iwao
7ea81186c6 Add script to update NEWS from wiki 2024-04-19 11:57:51 +09:00
Koichiro Iwao
3329f60318 Bump version to v0.10.0-beta.3 2024-04-19 11:57:51 +09:00
Koichiro Iwao
492f8b5cf7 Update NEWS
It is still a beta release at the moment so release date is not
determined.
2024-04-19 11:57:47 +09:00
matt335672
0a7e556d7d
Merge pull request #3032 from matt335672/v0_10_update_rfxcodec
[V0.10] Merge updates from librfxcodec
2024-04-18 16:35:34 +01:00
matt335672
cb50f18da9 Merge updates from librfxcodec
1) add SSE2 simd for dwt_shift_rem and diff_count

   make dwt_shift_rem easier to read
   move common rlgr defines to common file
   move common dwt defines to common file

2) Fix 'make distcheck'

3) Fix compiler warnings on tests
2024-04-18 15:47:40 +01:00
matt335672
b45630e879
Merge pull request #3017 from matt335672/cherry_picks_to_v0_10
Cherry picks to v0 10
2024-04-15 20:37:47 +01:00
Jay Sorg
dfa52c1183 format change
(cherry picked from commit 898e1ca135)
2024-04-15 19:26:48 +01:00
Jay Sorg
7030a74ab9 gfx send multiple wire to surface messages when compressed data is larger than max_compressed_bytes
(cherry picked from commit 95bfb349a8)
2024-04-15 19:26:35 +01:00
matt335672
f688e680c9 Simplify allowed system calls for xrdp
- The command 'systemd-analyze syscall-filter' shows that the group
  @system-service added to the xrdp-service SystemCallFilter
  actually includes all of the other listed groups and individual
  services.  Consequently this line can be simplified to just specify
  @system-service.

- (reversion) The SystemCallErrorNumber setting in xrdp.service has been
  removed so that unauthorized system calls cause an immediate process exit.

(cherry picked from commit e0e9177f5e)
2024-04-12 11:16:37 +01:00
matt335672
252243ab6c Fix permissions on user socket directory
The user socket directory needs to be SGID so that they inherit
the group ownnership. Then xrdp can write to them.

(cherry picked from commit 200e4d84f4)
2024-03-27 09:50:27 +00:00
Jay Sorg
9dbe504878 remove per frame log entry when client frame acks is off
(cherry picked from commit 651fcf85b7)
2024-03-27 09:49:57 +00:00
matt335672
02dc01d31e Remove hard-coded version from scripts/run_astyle.sh
This script now works the same way as cppcheck. The version to
be used is specified once in the github CI action

(cherry picked from commit b9fd19e6b5)
2024-03-27 09:49:24 +00:00
matt335672
2ee512ba52 Remove unnecessary '-lrt' from common lib link
The '-lrt' added to the Makefile for the common library appears
to be unnecessary.

- On modern Linuxes, this library has been merged with libc, and the
  supplied library is empty.
- On older ones (e.g. Devuan 4), the library contains routines we
  do not use in xrdp (although we use 'shm_open()' in xorgxrdp).
- On FreeBSD 14 the library contains only mq_*  and timer_* routines
  which, again, are not required.

(cherry picked from commit e821eddb62)
2024-03-27 09:48:53 +00:00
matt335672
40b0eaf455 Improve performance on long fat networks (LFNs)
On Linux, the TCP send buffer size is increased to 32768 if it is less
that this (which it normally is). This however has the effect of disabling
dynamic buffer sizing, leading to a maximum available bandwidth of

max_bandwidth = 262144 (bits) / round_trip_time (secs)

This is not noticeable on a LAN with an RTT of around 0.5ms, but
very noticeable on a WAN with an RTT of 0.25s.

Comments in the config file and manpage in this area are improved, as
is the logging if the parameters are actually set.

(cherry picked from commit b23d6f89d5)
2024-03-27 09:48:16 +00:00
metalefty
fc34c2b4c8
Merge pull request #3007 from metalefty/v0.10-release
Bump version to v0.10.0-beta.2
2024-03-20 23:13:14 +09:00
Koichiro Iwao
a48ea06e9b Bump version to v0.10.0-beta.2 2024-03-20 23:12:25 +09:00
metalefty
04da549942
Merge pull request #3003 from matt335672/v0_10_detect_missing_drdynvc
[V0.10] detect missing drdynvc
2024-03-17 22:50:31 +09:00
matt335672
68f6113430 Load channel config in xrdp_wm_create()
This commit moves the '[Channels]' parsing code for xrdp.ini
from xrdp_wm_init() to an earlier location in xrdp_wm_create().

libxrdp can now check that drdynvc is not disabled before starting it,
and xrdp_wm can disable GFX if virtual channels are not available.
2024-03-15 10:31:58 +00:00
matt335672
84fd2a510b Start the drdynvc channel within xrdp_wm
The responsibility for starting the drdynvc channel is moved out of
libxrdp into the application. This will make it easier to allow the
application to check the channel is enabled before starting it.
2024-03-15 10:31:46 +00:00
metalefty
01d3dedfdf
Merge pull request #2987 from matt335672/fix_freebsd_core
Don't generate a corefile when generating SIGSEGV
2024-03-14 09:12:00 +09:00
matt335672
8e08066bc8 Don't generate a corefile when generating SIGSEGV
One of the tests uses a child process which generates SIGSEGV.
On FreeBSD this generates a corefile by default which breaks
the 'make distcheck' process.
2024-03-09 17:01:40 +00:00
metalefty
ac67abe9b6
Merge pull request #2985 from metalefty/v0.10-release
Release v0.10.0-beta.1
2024-03-10 00:00:14 +09:00
Koichiro Iwao
02c265c5a5 Bump version to v0.10.0-beta.1 2024-03-09 23:53:51 +09:00
Koichiro Iwao
fb2a863d12 Update NEWS
It is still draft because stil a beta release.
2024-03-09 23:53:25 +09:00
metalefty
19b4905018
Merge pull request #2983 from metalefty/v0.10-release-tarball
[v0.10] Add script to make release tarball
2024-03-08 23:26:49 +09:00
metalefty
c5e6c4e117
Merge pull request #2977 from metalefty/v0.10-cherry-pick
[v0.10] cherry picks
2024-03-08 23:22:16 +09:00
Koichiro Iwao
9985737e9b Add script to make release tarball 2024-03-08 22:23:13 +09:00
rowlap
790834a947 Remove duplicate DEBUG output
allow_multimon and new_cursors are printed twice

(cherry picked from commit bf81557cdc)
2024-03-06 17:20:47 +09:00
metalefty
7700fcb1dc
Merge pull request #2957 from metalefty/v0.10-cherry-pick
[v0.10] cherry picks
2024-03-04 09:05:39 +09:00
matt335672
d6cf81a4da Increase GFX output buffer size
Size the GFX output buffer pessimistically based on the largest monitor
in the configuration.

(cherry picked from commit 90e4aca26a)
2024-03-03 10:04:28 +09:00
Koichiro Iwao
ab2430ac76 Suppress some logs when no errors
This outputs per-frame logs when using VNC backend and on login screen.

(cherry picked from commit 0b4150ff48)
2024-03-01 00:06:14 +09:00
rowlap
72d30061b0 Remove tcutils channel from xrdp.ini
According to #1943 tcutils was removed, so update the channel section to match.

(cherry picked from commit 2a0c2a612f)
2024-02-27 22:32:41 +09:00
Derek Schrock
a7115cced2 Fall back to IPv4 if IPv6 capable but don't have an IPv6 address set
When xrdp is built with IPv6 support it will only fall back to IPv4 if
IPv6 is not supported (EAFNOSUPPORT).  However, if the system is IPv6
capable but doesn't have an IPv6 address set (at least inside a FreeBSD
jail) EPROTONOSUPPORT is returned from socket().

(cherry picked from commit 5afbca4954)
2024-02-26 20:57:01 +09:00
matt335672
83f9d4ec17 GFX: Fix disconnect on resize of busy windows
When a resize is underway on a busy X server, it is possible for a
queued EGFX cmd (order #62) to be processed after the decoder has been
deleted. This causes a client disconnect with no useful error message.

(cherry picked from commit 3430b8898c)
2024-02-24 00:52:00 +09:00