Commit Graph

91 Commits

Author SHA1 Message Date
Christopher Pitstick
6f461aa54c Refactoring resizing into state machine.
- Fixes MSTSC resizing (with RFX as well).
- Queue system so that resizes are processed when XRDP and the X server
are ready, not immediately.
- Deletes and recreates the encoder (RFX fix)
- Introduces a dynamic_monitor_description struct that is used for the
queue system.
- Fix some lines previously introduced by the original resizing code to
be 80 chars long, as is the standard for XRDP.
2022-07-10 23:42:30 -04:00
matt335672
79bec8110c Unify connection fields for the connected client
The connected client is currently described in two places in
the xrdp_client_info structure:-

1) In the connection_description field. This was introduced as
   field client_ip by commit d797b2cf49
   for xrdp v0.6.0

2) In the client_addr and client_port fields introduced by commit
   25369460a1 for xrdp v0.8.0

This commit unifies these two sets of fields into a single
set of fields describing the connection IP and port (for
AF_INET/AF_INET6 connections only) and a connection description
for all connection types.

The code in os_calls to provide client logging has been simplified
somewhat which should make it easier to add new connection types (e.g.
AF_VSOCK).

The old connection_description field used to be passed to sesman to
inform sesman of the IP address of the client, and also to provide
a string for 'C' field session policy matching. 'C' field session policy
matching does not actually need this string (see #2239), and so now only
the IP field is passed to sesman.
2022-05-18 12:35:07 +01:00
matt335672
902c951648 Fix regression introduced with UDS 2022-04-20 09:40:36 +01:00
matt335672
275eaf7683 Rework transport connect logic
There are a number of ways the existing transport connect logic in
trans_connect could be improved for POSIX compatibility, and also
slightly tidied up:-
1) The same socket is re-used for multiple connect attempts following
   failure which isn't behaviour defined by POSIX.1-2017 (although it
   works on Linux).
2) An asynchronous connect is started, and then after a short
   delay connect() is called again on the same socket. POSIX.1-2017
   is clear that in this situation EALREADY is returned before the
   connection is established, but is silent on the behaviour expected
   when the connection is established. Returning success is an option,
   but so is returning EISCONN. The current code assumes the connect()
   call will succeed.
3) The code contains two virtually identical, quite complex loops for
   TCP and UNIX sockets, differing only in the calls to create a socket
   and connect it.
4) trans_connect() contains looping and retry logic, but this isn't
   seen as sufficient by the chansrv connect code in xrdp/xrdp_mm.c and
   the Xorg connect code in xup/xup.c. Both of these implement their own
   looping and retry logic on top of the logic in trans_connect(),
   resulting in slightly unpredictable behaviour with regard to
   timeouts.
5) A socket number can technically be zero, but in a couple of places
   this isn't allowed for.

This PR attempts to correct the implementation of trans_connect(),
and also to simplify the areas it is called from.

As part of the PR, the signature of the server_is_term member of the
xrdp module interface is changed to match the signature expected by the
is_term member of a struct trans. This allows for trans_connect()
in xrdp modules to directly access g_is_term() within the main xrdp
executable. At the moment this functionality is only used by the xup
module.
2022-03-31 20:48:07 +01:00
matt335672
dc5ec83df9 Log error on failure to attach to shared memory 2021-11-30 10:55:03 +00:00
Alexandre Quesnel
52707ac686 Fixing formatting with astyle 2021-05-08 16:58:11 +00:00
Christopher Pitstick
deb66ce766 Resolution switching without reconnecting.
- Based on https://github.com/jsorg71/xrdp/tree/dynamic_monitor
- Tested with xorgxrdp
- Tested with vnc
- Only works with single monitor.
- Update documentation to clarify the difference between MSTSC and
Microsoft Remote Desktop.
- Does not include compatibility with /gfx at this time, which is still
in testing.
- Updates to include ms-rdpedisp.h header for the 2.2.2 specification of
the protocol.
- Adds new dynamic_monitor_layout struct that shares the number of
monitors with xrdp_client_info.h
- Does not allow for BPP changes because the RDP protocol doesn't
support it.
- Option to disable feature as NeutrinoRDP doesn't support it (It was
based on FreeRDP 1.0.1 which didn't yet have this feature.)
- Add CLIENT_MONITOR_DATA_MAXIMUM_MONITORS constant and reference
spec definition.

Depends on https://github.com/neutrinolabs/xorgxrdp/pull/183
2021-04-22 01:34:03 -04:00
Alexandre Quesnel
4ec4292898 Migrating logging to LOG() and LOG_DEVEL() in xup/* 2021-02-11 04:42:50 +00:00
matt335672
0a1a8f40e5 Moved a lot of string funcs to string_calls module 2020-12-22 11:57:24 +00:00
Matt Burt
1f8bb57fd6 Improve source_info commenting and fix neutrino slow link 2020-10-20 09:55:17 +01:00
Bolke de Bruin
e89f124afe Ensure copying of the whole username/password 2020-08-21 14:29:01 +02:00
Jay Sorg
e52a4fd0ae xup: fix for when shmem_id changes 2019-11-07 23:28:07 -08:00
Jay Sorg
313abde4ea xup: check term event for more responsive shutdown 2019-07-10 20:52:57 -07:00
Jay Sorg
21f90e3ca2 work on suppress 2019-04-25 14:54:25 -07:00
Pavel Roskin
6ed4c969f4 Eliminate APP_CC and DEFAULT_CC 2017-03-14 00:21:48 -07:00
Pavel Roskin
b2d3dcf169 Include config_ac.h from all source files 2017-03-04 00:52:34 -08:00
Jay Sorg
e0ac84aaa4 change some casts to long long 2017-02-22 20:39:56 -08:00
Jay Sorg
7825246d7a fix warning new since stdint.h change 2017-02-22 20:39:56 -08:00
Pavel Roskin
b8ed23daab Constify the value argument to mod_set_param 2017-01-11 11:59:11 -08:00
Pavel Roskin
ace7d2c822 Declare unified module interface and use it in modules
This fixes loading modules compiled with a C++ compiler. Remote thandle
type, it's unused. Use tintptr for module data. Don't cast pointers to
long, they won't fit on Win64.
2016-07-08 05:09:09 +00:00
Pavel Roskin
2cb3af8ac3 Cast the result of g_shmat() to the destination type 2016-07-08 04:29:53 +00:00
Pavel Roskin
5829323ad8 Use g_new or g_new0 when C++ compiler would complain about implicit cast 2016-07-08 04:29:49 +00:00
Pavel Roskin
aeeb3d2c2e Fix warnings detected by -Wwrite-strings 2016-07-08 04:29:42 +00:00
Pavel Roskin
e7e4d61265 Return correct error code from process_server_paint_rect_shmem_ex() 2016-05-06 18:17:56 -07:00
Pavel Roskin
0629b25d5f Fix warnings about unused variables and functions 2016-04-21 22:27:27 -07:00
Pavel Roskin
e65bd6b7d7 Fix more format warnings 2016-04-21 21:21:17 -07:00
Pavel Roskin
22e808a186 Add missing spaces in the strings that are split for line wrapping 2016-02-12 23:52:45 -08:00
Pavel Roskin
f8cb1588ef Replace "charactor" with "character" everywhere 2016-01-30 17:33:04 -08:00
Jay Sorg
d59d672f55 xup: no logic change, add logging 2015-11-02 17:54:16 -08:00
Jay Sorg
a330789e5b xup: fix for when Xorg/X11rdp to xup message payload is zero 2015-07-18 22:48:07 -07:00
Jay Sorg
6c23b85593 add timeout to trans_get_wait_objs_rw 2015-07-13 01:10:48 -07:00
Jay Sorg
fc1e4c645c update the copyright year 2015-07-12 01:06:04 -07:00
Jay Sorg
72f84fd2ec set the source for xup module 2015-07-11 01:18:02 -07:00
Jay Sorg
65de5e971b xup: move to trans for io 2015-07-10 20:38:27 -07:00
Jay Sorg
9cd634007f fix for case where shmget can return an shmid of zero 2015-02-09 19:26:04 -08:00
Laxmikant Rashinkar
d7f0b174da coverity: uninitialized scalar variable 2014-07-28 18:13:07 -07:00
Laxmikant Rashinkar
e4654b57ca coverity: Resource leak (2nd round) 2014-07-27 15:29:12 -07:00
Laxmikant Rashinkar
27055d5762 coverity: improper use of negative value 2014-07-26 13:33:23 -07:00
Jay Sorg
1291d2dbbe work on codec mode 2014-07-19 13:25:23 -07:00
Jay Sorg
98fbca98db xup: check for g_shmat failure and change error case 2014-07-03 00:02:06 -07:00
Jay Sorg
73bdb57ee2 more fixes for 32 bit color 2014-06-10 17:49:15 -07:00
Jay Sorg
5717845837 xup: don't need to clear on connect 2014-05-19 23:42:36 -07:00
Jay Sorg
575fc9fb6f work on codec mode jpeg 2014-03-22 16:51:30 -07:00
Laxmikant Rashinkar
e7445a2544 o default login limit is now 50 users (instead of 10)
o we now wait for 30 seconds for session connection (instead of 1)
o if AUTO_LOGON flag is set but username is null, we force login dialog to show up
2014-02-28 19:28:31 -08:00
Jay Sorg
8cd57e0710 added server_paint_rects 2014-02-18 12:10:05 -08:00
Jay Sorg
1dd191ab1b xup: added process_server_paint_rect_shmem_ex 2014-02-09 18:05:47 -08:00
Jay Sorg
dbd16f3e9b xup: no logic change, seperate one big function out 2014-02-03 19:48:57 -08:00
Jay Sorg
022c1e31f9 xup: call shmdt on disconnect 2014-01-28 10:40:19 -08:00
Jay Sorg
25369460a1 log client ip with pid, etc 2013-10-02 16:27:12 -07:00
Jay Sorg
97473e4f66 xup: pid logging, use log_message 2013-10-02 11:56:09 -07:00