Commit graph

164 commits

Author SHA1 Message Date
Benoît Cortier
48e02441d2
chore: update Rust toolchain to 1.88.0 (#852)
MSRV is also bumped to 1.84.
2025-07-03 07:38:28 +03:00
Benoît Cortier
370a3f1104
chore(release): prepare ironrdp-server 0.6.1 (#815)
Patch bump including the ironrdp-tokio dependency.
2025-06-09 07:24:11 -04:00
devolutionsbot
c09f9719e0
chore(release): prepare for publishing (#813) 2025-06-06 09:18:24 +00:00
devolutionsbot
aa6777b56a
chore(release): prepare for publishing (#748) 2025-05-27 15:21:56 +00:00
Benoît CORTIER
9bc382348d style: run formatter for imports 2025-05-27 08:48:51 -04:00
Marc-André Lureau
dd787af5a0 feat(benches): add perfenc
Make some internal APIs publicly visible thanks to "visibility" when
compiling with the "__bench" feature.

("testsuite-core" also learned "__bench", because fast_path.rs is a
shared file)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-29 13:00:07 +02:00
Marc-André Lureau
fcb390140d refactor(server): introduce UpdateEncoderCodecs
This will simplify setting up the UpdateEncoder with further codecs.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-29 13:00:07 +02:00
Marc-André Lureau
fb3769c4a7 feat(server): find & send the damaged tiles
Keep a framebuffer and tile-diff against it, to save from
encoding/sending the same bitmap data regions.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-22 16:16:34 +02:00
Benoît Cortier
cc78b1e3dc
fix(server)!: remove time_warn! from the public API (#773)
This is intended to be an internal macro.
2025-04-22 07:33:12 -04:00
Marc-Andre Lureau
806f1d7694
fix(server): use desktop size for RFX channel size (#756) 2025-04-17 08:01:58 +02:00
Alex Yusiuk
fe676eeac5
refactor(web): follow-up to #722 (#747) 2025-04-14 14:05:19 +00:00
Marc-André Lureau
184cfd24ae test(server): run the fast_path tests from testsuite-core
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-10 10:21:54 +02:00
Marc-André Lureau
2c7556ba1e refactor(server): make UpdateEncoder::update() an iterator
A single display update can now result in multiple commands / update
code (FastPathUpdate).

The update dispatching and bitmap encoding is now done by the
UpdateEncoder itself.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-10 10:21:54 +02:00
Marc-André Lureau
fde18ad01a refactor(server): make UpdateFragmenter own its data
Trying to share a common buffer creates all sort of complicated lifetime
issues when trying to move the encoding to a 'static handler, or when
implementing iterators. It's not worth it.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-10 10:21:54 +02:00
Marc-André Lureau
f21a6bf7d0 test(server): add fragment test
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-10 10:21:54 +02:00
Marc-André Lureau
5ffeeea3ae refactor(server): move fast-path fragmenter to own unit
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-04-10 10:21:54 +02:00
Marc-André Lureau
aeb1193674 feat(server): keep last full-frame/desktop update
It should reflect client drawing state.

In following changes, we will fix it to draw bitmap updates on it, to
keep it up to date.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
9d86c28865 refactor(server): pass bitmapUpdate by ref
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
137d91ae7a feat(server): implement some Encoder Debug
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
c2164716c3 refactor(server): split UpdateEncoder
The bitmap encoder dispatching code was becoming convoluted and the same
struct was handling PduEncoding and various bitmap encoding handling.
Instead, split UpdateEncoder in different types and concerns.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
a76e84d459 feat(server): add BitmapUpdate::sub()
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
229070a435 refactor(server)!: rename left/top -> x/y
This is more idiomatic, and thus less confusing.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
1e87961d16 feat(server): add Framebuffer helper struct
This will hold the updated bitmap data for the whole framebuffer.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
3c43fdda76 refactor(server)!: use bytes, allowing shareable bitmap data
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
7f57817805 feat(server): add stride debug info
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
db6f4cdb7f refactor(server)!: drop support for pixelOrder
Dealing with multiple formats is sufficiently annoying, there isn't much
need for awkward image layout. This was done for efficiency reason for
bitmap encoding, but bitmap is really inefficient anyway and very few
servers will actually provide bottom to top images (except with GL/GPU
textures, but this is not in scope yet).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 18:11:03 +02:00
Marc-André Lureau
d47c1e6415 debug(server): trace ServerEvent dispatching
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-31 00:36:26 +02:00
Benoît CORTIER
19d6b1ea83 refactor: fix new clippy warnings 2025-03-13 11:03:10 +01:00
devolutionsbot
b19008c029
chore(release): prepare for publishing (#699) 2025-03-13 09:06:30 +00:00
devolutionsbot
f2c8482ba6
build: bump ironrdp-pdu (#698) 2025-03-12 20:59:54 +00:00
Marc-André Lureau
7cb1ac99d1 refactor(pdu)!: remove RfxChannelWidth and RfxChannelHeight structs
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-12 21:34:47 +01:00
devolutionsbot
92dd927ec2
chore(release): prepare for publishing (#696) 2025-03-12 16:40:47 +00:00
Benoît Cortier
c21fa44fd6
build: do not use workspace dependencies (#695)
As written in the workspace Cargo.toml:

> Note that for better cross-tooling interactions, do not use workspace
dependencies for anything that is not "workspace internal" (e.g.: mostly
dev-dependencies). E.g.: release-plz can’t detect that a dependency has
been
updated in a way warranting a version bump in the dependant if no commit
is
touching a file associated to the crate. It is technically okay to use
that
for "private" (i.e.: not used in the public API) dependencies too, but
we
still want to make follow-up releases to stay up to date with the
community,
even for private dependencies.

Expectation is that release-plz will be able to auto-detect when bumping
dependents is necessary.

Closes #689
2025-03-12 09:25:01 -04:00
Marc-André Lureau
81984f9377 refactor(pdu): move rfx to Encode/Decode traits
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-03-04 16:08:55 +01:00
devolutionsbot
e6d6e9d8a7
chore(release): prepare for publishing (#628) 2025-01-28 23:24:35 +00:00
Marc-Andre Lureau
a6c36511f6
feat(server): add volume support (#641)
Add server messages and API to support setting client volume.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-01-27 08:10:15 -05:00
Marc-André Lureau
0f9877ad39 fix(server): check client size
It's problematic when the client didn't resize, as we send bitmap
updates that don't fit. The client will likely drop the connection.
Let's have a warning for this case in the server.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-01-27 07:35:36 -05:00
Marc-André Lureau
e21c5568a4 refactor(server): factor out deactivate_reactivate()
This makes code slightly nicer and allow further code reuse.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-01-27 07:35:36 -05:00
Marc-André Lureau
a0fccf8d1a feat(server): advertize Bitmap::desktopResizeFlag
This makes freerdp keep the flag up and handle desktop
resize/deactivation-reactivation. It should be okay to advertize,
if the server doesn't resize anyway, I guess.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-01-27 07:35:36 -05:00
Marc-André Lureau
82c7c2f5b0 fix(server): do not restart static channels on reactivation
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-01-27 07:35:36 -05:00
Marc-André Lureau
c4587b537c fix(server): reattach existing channels
I couldn't find any explicit behaviour described in the specification,
but apparently, we must just keep the channel state as they were during
reactivation. This fixes various state issues during client resize.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-01-27 07:35:36 -05:00
Marc-André Lureau
63963182b5 fix(server): drop unexpected PDUs during deactivation-reactivation
The current behaviour of handling unmatched PDUs in fn read_by_hint()
isn't good enough. An unexpected PDUs may be received and fail to be
decoded during Acceptor::step().

Change the code to simply drop unexpected PDUs (as opposed to attempting
to replay the unmatched leftover, which isn't clearly needed)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2025-01-27 07:35:36 -05:00
Sébastien Duquette
dd249909a8
docs: use CDN URLs instead of the blob storage URLs for Devolutions logo (#631) 2025-01-09 10:06:10 -05:00
Marc-Andre Lureau
a0d32d7245
fix: fix commit 9198284263 (#626)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Changelog: ignore
2025-01-06 09:29:30 -05:00
devolutionsbot
9292988a88
chore(release): prepare for publishing (#624)
Co-authored-by: Benoît Cortier <3809077+CBenoit@users.noreply.github.com>
2024-12-17 18:18:10 +00:00
Marc-Andre Lureau
9198284263
feat(server): make TlsIdentityCtx accept PEM files (#623)
This is in general more convenient than DER files.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2024-12-17 10:50:39 -05:00
devolutionsbot
97ef9f0acb
chore(release): prepare for publishing (#611) 2024-12-14 14:32:28 +00:00
Benoît Cortier
0c10367ebc
chore: symlinks to license files in packages (#604)
Add symlinks to the license files in crates that we are publishing on
crates.io.
2024-12-11 08:13:26 -05:00
Benoît Cortier
755738ff9c
chore: prepare release (#598)
Crates to release:

- ironrdp-acceptor -> 0.2.0
- ironrdp-async -> 0.2.0
- ironrdp-blocking -> 0.2.0
- ironrdp-session -> 0.2.0
- ironrdp-server -> 0.3.0
- ironrdp -> 0.7.0
2024-12-06 09:51:14 +00:00
Benoît Cortier
fc23992dea
chore: prepare release (#585)
Crates to release:

- ironrdp-core -> 0.1.1
- ironrdp-pdu -> 0.1.1
- ironrdp-svc -> 0.1.1
- ironrdp-connector -> 0.2.0
- ironrdp-server -> 0.2.0
- ironrdp -> 0.6.0
2024-11-21 10:14:01 -05:00