Bump version to 46.0

This commit is contained in:
Jonas Ådahl 2024-03-25 23:09:20 +01:00
parent 308ffcae22
commit 884620465e
4 changed files with 170 additions and 187 deletions

1
.gitignore vendored
View File

@ -29,3 +29,4 @@
/gnome-remote-desktop-45.rc.tar.xz
/gnome-remote-desktop-45.0.tar.xz
/gnome-remote-desktop-45.1.tar.xz
/gnome-remote-desktop-46.0.tar.xz

View File

@ -1,4 +1,7 @@
%global systemd_unit gnome-remote-desktop.service
%global systemd_unit_handover gnome-remote-desktop-handover.service
%global systemd_unit_headless gnome-remote-desktop-headless.service
%global systemd_unit_system gnome-remote-desktop.service
%global systemd_unit_user gnome-remote-desktop.service
%global tarball_version %%(echo %{version} | tr '~' '.')
@ -9,8 +12,8 @@
%global pipewire_version 0.3.49
Name: gnome-remote-desktop
Version: 45.1
Release: 4%{?dist}
Version: 46.0
Release: 1%{?dist}
Summary: GNOME Remote Desktop screen share service
License: GPL-2.0-or-later
@ -26,12 +29,15 @@ BuildRequires: meson >= 0.47.0
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(epoxy)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(ffnvcodec)
%if %{with rdp}
BuildRequires: pkgconfig(fdk-aac)
BuildRequires: pkgconfig(freerdp2)
BuildRequires: pkgconfig(freerdp3)
BuildRequires: pkgconfig(fuse3)
BuildRequires: pkgconfig(winpr2)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(polkit-gobject-1)
BuildRequires: pkgconfig(winpr3)
%endif
BuildRequires: pkgconfig(gbm)
BuildRequires: pkgconfig(glib-2.0) >= 2.68
@ -71,10 +77,8 @@ GNOME desktop environment.
%meson \
%if %{with rdp}
-Drdp=true \
-Dfdk_aac=true \
%else
-Drdp=false \
-Dfdk_aac=false \
%endif
%if %{with vnc}
-Dvnc=true \
@ -93,15 +97,24 @@ GNOME desktop environment.
%post
%systemd_user_post %{systemd_unit}
%systemd_system_post %{systemd_unit_system}
%systemd_user_post %{systemd_unit_handover}
%systemd_user_post %{systemd_unit_headless}
%systemd_user_post %{systemd_unit_user}
%preun
%systemd_user_preun %{systemd_unit}
%systemd_system_preun %{systemd_unit_system}
%systemd_user_preun %{systemd_unit_handover}
%systemd_user_preun %{systemd_unit_headless}
%systemd_user_preun %{systemd_unit_user}
%postun
%systemd_user_postun_with_restart %{systemd_unit}
%systemd_system_postun_with_restart %{systemd_unit_system}
%systemd_user_postun_with_restart %{systemd_unit_handover}
%systemd_user_postun_with_restart %{systemd_unit_headless}
%systemd_user_postun_with_restart %{systemd_unit_user}
%files -f %{name}.lang
@ -109,9 +122,19 @@ GNOME desktop environment.
%doc README.md
%{_bindir}/grdctl
%{_libexecdir}/gnome-remote-desktop-daemon
%{_userunitdir}/%{systemd_unit}
%{_userunitdir}/%{systemd_unit_user}
%{_userunitdir}/%{systemd_unit_headless}
%{_userunitdir}/%{systemd_unit_handover}
%{_unitdir}/%{systemd_unit_system}
%{_datadir}/applications/org.gnome.RemoteDesktop.Handover.desktop
%{_datadir}/dbus-1/system-services/org.gnome.RemoteDesktop.service
%{_datadir}/dbus-1/system.d/org.gnome.RemoteDesktop.conf
%{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gnome.desktop.remote-desktop.enums.xml
%{_datadir}/polkit-1/actions/org.gnome.remotedesktop.configure-system-daemon.policy
%{_sysusersdir}/gnome-remote-desktop-sysusers.conf
%{_tmpfilesdir}/gnome-remote-desktop-tmpfiles.conf
%if %{with rdp}
%{_datadir}/gnome-remote-desktop/
%endif

View File

@ -1,4 +1,4 @@
From e2a39fbf7b1a90aee818790ad847c20f59351adc Mon Sep 17 00:00:00 2001
From 0e754e3a90f486c031da535656584673016107a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Thu, 14 Jun 2018 12:21:37 +0200
Subject: [PATCH 1/7] vnc: Add anonymous TLS encryption support
@ -13,23 +13,22 @@ VNC connection.
src/grd-enums.h | 6 +
src/grd-session-vnc.c | 120 ++++-
src/grd-session-vnc.h | 17 +
src/grd-settings-user.c | 28 ++
src/grd-settings.c | 6 +
src/grd-settings.h | 4 +
src/grd-vnc-server.c | 47 ++
src/grd-settings-user.c | 3 +
src/grd-settings.c | 18 +
src/grd-vnc-server.c | 49 ++
src/grd-vnc-tls.c | 444 ++++++++++++++++++
src/grd-vnc-tls.h | 28 ++
src/meson.build | 3 +
...nome.desktop.remote-desktop.gschema.xml.in | 10 +
12 files changed, 688 insertions(+), 26 deletions(-)
11 files changed, 673 insertions(+), 26 deletions(-)
create mode 100644 src/grd-vnc-tls.c
create mode 100644 src/grd-vnc-tls.h
diff --git a/meson.build b/meson.build
index af607a47..a827c356 100644
index 995863ce..40733a6e 100644
--- a/meson.build
+++ b/meson.build
@@ -63,6 +63,7 @@ endif
@@ -62,6 +62,7 @@ endif
if have_vnc
libvncclient_dep = dependency('libvncclient')
libvncserver_dep = dependency('libvncserver')
@ -38,12 +37,12 @@ index af607a47..a827c356 100644
prefix = get_option('prefix')
diff --git a/src/grd-enums.h b/src/grd-enums.h
index 44b181d6..de0d0f86 100644
index 028bdf9a..47a1d921 100644
--- a/src/grd-enums.h
+++ b/src/grd-enums.h
@@ -39,4 +39,10 @@ typedef enum
GRD_VNC_SCREEN_SHARE_MODE_EXTEND,
} GrdVncScreenShareMode;
@@ -33,6 +33,12 @@ typedef enum
GRD_VNC_AUTH_METHOD_PASSWORD
} GrdVncAuthMethod;
+typedef enum
+{
@ -51,12 +50,14 @@ index 44b181d6..de0d0f86 100644
+ GRD_VNC_ENCRYPTION_TLS_ANON = 1 << 1,
+} GrdVncEncryption;
+
#endif /* GRD_ENUMS_H */
typedef enum
{
GRD_VNC_SCREEN_SHARE_MODE_MIRROR_PRIMARY,
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
index de1c26d7..a82952ae 100644
index 0ca76e89..e13ac013 100644
--- a/src/grd-session-vnc.c
+++ b/src/grd-session-vnc.c
@@ -45,7 +45,9 @@ struct _GrdSessionVnc
@@ -46,7 +46,9 @@ struct _GrdSessionVnc
{
GrdSession parent;
@ -66,7 +67,7 @@ index de1c26d7..a82952ae 100644
GSource *source;
rfbScreenInfoPtr rfb_screen;
rfbClientPtr rfb_client;
@@ -588,6 +590,12 @@ check_rfb_password (rfbClientPtr rfb_client,
@@ -608,6 +610,12 @@ check_rfb_password (rfbClientPtr rfb_client,
}
}
@ -79,7 +80,7 @@ index de1c26d7..a82952ae 100644
int
grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
int width)
@@ -595,6 +603,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
@@ -615,6 +623,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
return width * BGRX_BYTES_PER_PIXEL;
}
@ -98,7 +99,7 @@ index de1c26d7..a82952ae 100644
static void
init_vnc_session (GrdSessionVnc *session_vnc)
{
@@ -669,44 +689,85 @@ init_vnc_session (GrdSessionVnc *session_vnc)
@@ -689,44 +709,85 @@ init_vnc_session (GrdSessionVnc *session_vnc)
rfbProcessEvents (rfb_screen, 0);
}
@ -209,7 +210,7 @@ index de1c26d7..a82952ae 100644
}
return G_SOURCE_CONTINUE;
@@ -719,7 +780,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc)
@@ -739,7 +800,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc)
socket = g_socket_connection_get_socket (session_vnc->connection);
session_vnc->source = g_socket_create_source (socket,
@ -221,7 +222,7 @@ index de1c26d7..a82952ae 100644
NULL);
g_source_set_callback (session_vnc->source,
(GSourceFunc) handle_socket_data,
@@ -750,11 +814,13 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
@@ -780,6 +844,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
"context", context,
NULL);
@ -229,13 +230,15 @@ index de1c26d7..a82952ae 100644
session_vnc->connection = g_object_ref (connection);
settings = grd_context_get_settings (context);
session_vnc->screen_share_mode = grd_settings_get_vnc_screen_share_mode (settings);
@@ -792,6 +857,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
G_CALLBACK (on_view_only_changed),
session_vnc);
+ grd_session_vnc_grab_socket (session_vnc, vnc_socket_grab_func);
grd_session_vnc_attach_source (session_vnc);
init_vnc_session (session_vnc);
@@ -769,6 +835,8 @@ grd_session_vnc_dispose (GObject *object)
@@ -806,6 +872,8 @@ grd_session_vnc_dispose (GObject *object)
g_assert (!session_vnc->rfb_screen);
@ -280,126 +283,79 @@ index be79cf4a..ffc8d27a 100644
+
#endif /* GRD_SESSION_VNC_H */
diff --git a/src/grd-settings-user.c b/src/grd-settings-user.c
index 42bf31dd..5f6a87dd 100644
index 20b81a94..34115078 100644
--- a/src/grd-settings-user.c
+++ b/src/grd-settings-user.c
@@ -66,6 +66,7 @@ struct _GrdSettingsUser
@@ -79,6 +79,9 @@ grd_settings_user_constructed (GObject *object)
g_settings_bind (settings->vnc_settings, "auth-method",
settings, "vnc-auth-method",
G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (settings->vnc_settings, "encryption",
+ settings, "vnc-encryption",
+ G_SETTINGS_BIND_DEFAULT);
switch (grd_settings_get_runtime_mode (GRD_SETTINGS (settings)))
{
diff --git a/src/grd-settings.c b/src/grd-settings.c
index fba1d714..f3475010 100644
--- a/src/grd-settings.c
+++ b/src/grd-settings.c
@@ -58,6 +58,7 @@ enum
PROP_RDP_SERVER_CERT_PATH,
PROP_RDP_SERVER_KEY_PATH,
PROP_VNC_AUTH_METHOD,
+ PROP_VNC_ENCRYPTION,
};
typedef struct _GrdSettingsPrivate
@@ -84,6 +85,7 @@ typedef struct _GrdSettingsPrivate
gboolean view_only;
GrdVncScreenShareMode screen_share_mode;
GrdVncAuthMethod auth_method;
+ GrdVncEncryption encryption;
} vnc;
};
} GrdSettingsPrivate;
@@ -138,6 +139,13 @@ update_vnc_auth_method (GrdSettingsUser *settings)
"auth-method");
}
+static void
+update_vnc_encryption (GrdSettingsUser *settings)
+{
+ settings->vnc.encryption = g_settings_get_flags (settings->vnc.settings,
+ "encryption");
+}
+
static gboolean
grd_settings_user_is_rdp_enabled (GrdSettings *settings)
{
@@ -192,6 +200,12 @@ grd_settings_user_get_vnc_auth_method (GrdSettings *settings)
return GRD_SETTINGS_USER (settings)->vnc.auth_method;
}
+static GrdVncEncryption
+grd_settings_user_get_encryption (GrdSettings *settings)
+{
+ return GRD_SETTINGS_USER (settings)->vnc.encryption;
+}
+
GrdSettingsUser *
grd_settings_user_new (GrdContext *context)
{
@@ -273,6 +287,11 @@ on_vnc_settings_changed (GSettings *vnc_settings,
update_vnc_auth_method (settings);
g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0);
@@ -425,6 +427,9 @@ grd_settings_get_property (GObject *object,
else
g_value_set_enum (value, priv->vnc.auth_method);
break;
+ case PROP_VNC_ENCRYPTION:
+ g_value_set_flags (value, priv->vnc.encryption);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
+ else if (strcmp (key, "encryption") == 0)
+ {
+ update_vnc_encryption (settings);
+ g_signal_emit (settings, signals[VNC_ENCRYPTION_CHANGED], 0);
+ }
@@ -562,6 +567,9 @@ grd_settings_set_property (GObject *object,
case PROP_VNC_AUTH_METHOD:
priv->vnc.auth_method = g_value_get_enum (value);
break;
+ case PROP_VNC_ENCRYPTION:
+ priv->vnc.encryption = g_value_get_flags (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -743,4 +751,14 @@ grd_settings_class_init (GrdSettingsClass *klass)
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class,
+ PROP_VNC_ENCRYPTION,
+ g_param_spec_flags ("vnc-encryption",
+ "vnc encryption",
+ "vnc encryption",
+ GRD_TYPE_VNC_ENCRYPTION,
+ GRD_VNC_ENCRYPTION_TLS_ANON,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
}
static void
@@ -294,6 +313,7 @@ grd_settings_user_init (GrdSettingsUser *settings)
update_vnc_view_only (settings);
update_vnc_screen_share_mode (settings);
update_vnc_auth_method (settings);
+ update_vnc_encryption (settings);
}
static void
@@ -313,6 +333,7 @@ grd_settings_user_class_init (GrdSettingsUserClass *klass)
settings_class->get_rdp_server_key = grd_settings_user_get_rdp_server_key;
settings_class->get_rdp_server_cert = grd_settings_user_get_rdp_server_cert;
settings_class->get_vnc_auth_method = grd_settings_user_get_vnc_auth_method;
+ settings_class->get_vnc_encryption = grd_settings_user_get_encryption;
signals[RDP_ENABLED_CHANGED] =
g_signal_new ("rdp-enabled-changed",
@@ -377,4 +398,11 @@ grd_settings_user_class_init (GrdSettingsUserClass *klass)
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
+ signals[VNC_ENCRYPTION_CHANGED] =
+ g_signal_new ("vnc-encryption-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 0);
}
diff --git a/src/grd-settings.c b/src/grd-settings.c
index 1cd4bea5..cd1dda1f 100644
--- a/src/grd-settings.c
+++ b/src/grd-settings.c
@@ -230,6 +230,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings)
return GRD_SETTINGS_GET_CLASS (settings)->get_vnc_auth_method (settings);
}
+GrdVncEncryption
+grd_settings_get_vnc_encryption (GrdSettings *settings)
+{
+ return GRD_SETTINGS_GET_CLASS (settings)->get_vnc_encryption (settings);
+}
+
static void
grd_settings_finalize (GObject *object)
{
diff --git a/src/grd-settings.h b/src/grd-settings.h
index 9e36ff9d..51f0f1c3 100644
--- a/src/grd-settings.h
+++ b/src/grd-settings.h
@@ -56,6 +56,8 @@ struct _GrdSettingsClass
char * (* get_rdp_server_key) (GrdSettings *settings);
GrdVncAuthMethod (* get_vnc_auth_method) (GrdSettings *settings);
+
+ GrdVncEncryption (* get_vnc_encryption) (GrdSettings *settings);
};
int grd_settings_get_rdp_port (GrdSettings *settings);
@@ -94,4 +96,6 @@ char *grd_settings_get_rdp_server_key (GrdSettings *settings);
GrdVncAuthMethod grd_settings_get_vnc_auth_method (GrdSettings *settings);
+GrdVncEncryption grd_settings_get_vnc_encryption (GrdSettings *settings);
+
#endif /* GRD_SETTINGS_H */
diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c
index 70efab12..9280dfb5 100644
index 877272d2..59a13db5 100644
--- a/src/grd-vnc-server.c
+++ b/src/grd-vnc-server.c
@@ -24,12 +24,14 @@
@@ -24,6 +24,7 @@
#include "grd-vnc-server.h"
@ -407,14 +363,15 @@ index 70efab12..9280dfb5 100644
#include <gio/gio.h>
#include <rfb/rfb.h>
#include "grd-context.h"
@@ -31,6 +32,7 @@
#include "grd-debug.h"
#include "grd-session-vnc.h"
#include "grd-utils.h"
+#include "grd-vnc-tls.h"
enum
{
@@ -129,6 +131,43 @@ on_incoming (GSocketService *service,
@@ -130,6 +132,45 @@ on_incoming (GSocketService *service,
return TRUE;
}
@ -426,7 +383,9 @@ index 70efab12..9280dfb5 100644
+ GrdVncEncryption encryption;
+
+ tls_security_handler = grd_vnc_tls_get_security_handler ();
+ encryption = grd_settings_get_vnc_encryption (settings);
+ g_object_get (G_OBJECT (settings),
+ "vnc-encryption", &encryption,
+ NULL);
+
+ if (encryption == (GRD_VNC_ENCRYPTION_NONE | GRD_VNC_ENCRYPTION_TLS_ANON))
+ {
@ -458,7 +417,7 @@ index 70efab12..9280dfb5 100644
gboolean
grd_vnc_server_start (GrdVncServer *vnc_server,
GError **error)
@@ -216,11 +255,19 @@ grd_vnc_server_dispose (GObject *object)
@@ -241,11 +282,19 @@ grd_vnc_server_dispose (GObject *object)
static void
grd_vnc_server_constructed (GObject *object)
{
@ -470,7 +429,7 @@ index 70efab12..9280dfb5 100644
else
rfbLogEnable (0);
+ g_signal_connect (settings, "vnc-encryption-changed",
+ g_signal_connect (settings, "notify::vnc-encryption",
+ G_CALLBACK (on_vnc_encryption_changed),
+ vnc_server);
+ sync_encryption_settings (vnc_server);
@ -963,10 +922,10 @@ index 00000000..135ef8c7
+
+#endif /* GRD_VNC_TLS_H */
diff --git a/src/meson.build b/src/meson.build
index ac07455b..654caccb 100644
index 914e2cc1..4e820c59 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -161,10 +161,13 @@ if have_vnc
@@ -188,10 +188,13 @@ if have_vnc
'grd-vnc-pipewire-stream.h',
'grd-vnc-server.c',
'grd-vnc-server.h',
@ -981,10 +940,10 @@ index ac07455b..654caccb 100644
endif
diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in
index 5b39a5de..c6dc2ab5 100644
index c3d583c1..8a736c82 100644
--- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in
+++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in
@@ -116,5 +116,15 @@
@@ -148,5 +148,15 @@
configuration updates.
</description>
</key>
@ -1001,10 +960,10 @@ index 5b39a5de..c6dc2ab5 100644
</schema>
</schemalist>
--
2.40.0
2.44.0
From e0192db09adddb551e4dbfeb17c281fb5815d7be Mon Sep 17 00:00:00 2001
From 6e5f6deab459acdd1e7785ab6975932f2815548f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Wed, 27 Nov 2019 11:02:09 +0100
Subject: [PATCH 2/7] session-vnc: Add paused/resumed signals
@ -1017,10 +976,10 @@ out-of-socket source.
1 file changed, 65 insertions(+), 7 deletions(-)
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
index a82952ae..1fd3b778 100644
index e13ac013..30820d7d 100644
--- a/src/grd-session-vnc.c
+++ b/src/grd-session-vnc.c
@@ -41,14 +41,27 @@
@@ -42,14 +42,27 @@
#define BGRX_SAMPLES_PER_PIXEL 3
#define BGRX_BYTES_PER_PIXEL 4
@ -1048,7 +1007,7 @@ index a82952ae..1fd3b778 100644
rfbScreenInfoPtr rfb_screen;
rfbClientPtr rfb_client;
@@ -79,7 +92,7 @@ struct _GrdSessionVnc
@@ -81,7 +94,7 @@ struct _GrdSessionVnc
G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION)
static void
@ -1057,7 +1016,7 @@ index a82952ae..1fd3b778 100644
static gboolean
close_session_idle (gpointer user_data);
@@ -246,7 +259,8 @@ handle_client_gone (rfbClientPtr rfb_client)
@@ -248,7 +261,8 @@ handle_client_gone (rfbClientPtr rfb_client)
g_debug ("VNC client gone");
@ -1067,16 +1026,16 @@ index a82952ae..1fd3b778 100644
maybe_queue_close_session_idle (session_vnc);
session_vnc->rfb_client = NULL;
}
@@ -315,7 +329,7 @@ handle_new_client (rfbClientPtr rfb_client)
session_vnc->prompt_cancellable,
prompt_response_callback,
session_vnc);
@@ -338,7 +352,7 @@ handle_new_client (rfbClientPtr rfb_client)
{
case GRD_VNC_AUTH_METHOD_PROMPT:
show_sharing_desktop_prompt (session_vnc, rfb_client->host);
- grd_session_vnc_detach_source (session_vnc);
+ grd_session_vnc_pause (session_vnc);
return RFB_CLIENT_ON_HOLD;
case GRD_VNC_AUTH_METHOD_PASSWORD:
session_vnc->rfb_screen->passwordCheck = check_rfb_password;
@@ -581,7 +595,7 @@ check_rfb_password (rfbClientPtr rfb_client,
@@ -601,7 +615,7 @@ check_rfb_password (rfbClientPtr rfb_client,
if (memcmp (challenge_encrypted, response_encrypted, len) == 0)
{
grd_session_start (GRD_SESSION (session_vnc));
@ -1085,7 +1044,7 @@ index a82952ae..1fd3b778 100644
return TRUE;
}
else
@@ -801,6 +815,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc)
@@ -821,6 +835,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc)
g_clear_pointer (&session_vnc->source, g_source_unref);
}
@ -1119,10 +1078,10 @@ index a82952ae..1fd3b778 100644
+ g_signal_emit (session_vnc, signals[RESUMED], 0);
+}
+
GrdSessionVnc *
grd_session_vnc_new (GrdVncServer *vnc_server,
GSocketConnection *connection)
@@ -822,6 +866,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
static void
on_view_only_changed (GrdSettings *settings,
GParamSpec *pspec,
@@ -859,6 +903,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
grd_session_vnc_grab_socket (session_vnc, vnc_socket_grab_func);
grd_session_vnc_attach_source (session_vnc);
@ -1130,7 +1089,7 @@ index a82952ae..1fd3b778 100644
init_vnc_session (session_vnc);
@@ -856,7 +901,7 @@ grd_session_vnc_stop (GrdSession *session)
@@ -893,7 +938,7 @@ grd_session_vnc_stop (GrdSession *session)
g_clear_object (&session_vnc->stream);
}
@ -1139,7 +1098,7 @@ index a82952ae..1fd3b778 100644
g_clear_object (&session_vnc->connection);
g_clear_object (&session_vnc->clipboard_vnc);
@@ -941,8 +986,8 @@ on_stream_ready (GrdStream *stream,
@@ -984,8 +1029,8 @@ on_stream_ready (GrdStream *stream,
G_CALLBACK (on_pipewire_stream_closed),
session_vnc);
@ -1150,7 +1109,7 @@ index a82952ae..1fd3b778 100644
}
static void
@@ -977,4 +1022,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass)
@@ -1020,4 +1065,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass)
session_class->remote_desktop_session_started =
grd_session_vnc_remote_desktop_session_started;
session_class->on_stream_created = grd_session_vnc_on_stream_created;
@ -1169,10 +1128,10 @@ index a82952ae..1fd3b778 100644
+ G_TYPE_NONE, 0);
}
--
2.40.0
2.44.0
From 9a36ce45052d05a0e0e4ab70beba704b321875a6 Mon Sep 17 00:00:00 2001
From 00f4fdfc676361f5f71e6f6b346c11cb7088b836 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Wed, 27 Nov 2019 11:03:46 +0100
Subject: [PATCH 3/7] session-vnc: Add grd_session_vnc_dispatch() helper
@ -1185,10 +1144,10 @@ available that is not visible to the socket source.
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
index 1fd3b778..8366e661 100644
index 30820d7d..3ee06f79 100644
--- a/src/grd-session-vnc.c
+++ b/src/grd-session-vnc.c
@@ -751,6 +751,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc,
@@ -771,6 +771,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc,
return TRUE;
}
@ -1210,7 +1169,7 @@ index 1fd3b778..8366e661 100644
static gboolean
handle_socket_data (GSocket *socket,
GIOCondition condition,
@@ -767,16 +782,7 @@ handle_socket_data (GSocket *socket,
@@ -787,16 +802,7 @@ handle_socket_data (GSocket *socket,
}
else if (condition & G_IO_IN)
{
@ -1242,10 +1201,10 @@ index ffc8d27a..a86d61d2 100644
#endif /* GRD_SESSION_VNC_H */
--
2.40.0
2.44.0
From 685f376a6b331d91e2bb34e8484682974db149a5 Mon Sep 17 00:00:00 2001
From 69efe6df5e9e8548c0241a612980af31f1dc5c5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Wed, 27 Nov 2019 11:05:13 +0100
Subject: [PATCH 4/7] vnc/tls: Add some logging
@ -1319,10 +1278,10 @@ index ec4758e0..ac6c35f6 100644
{
g_warning ("TLS handshake failed: %s", error->message);
--
2.40.0
2.44.0
From eebd752d3df83d6ae2df79782dbb8b4a80083608 Mon Sep 17 00:00:00 2001
From 2a11c4f47165b62409f4428b9de1bda59c6ebb2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Wed, 27 Nov 2019 11:07:40 +0100
Subject: [PATCH 5/7] vnc/tls: Dispatch also when data is pending outside of
@ -1489,10 +1448,10 @@ index ac6c35f6..312b6b92 100644
}
--
2.40.0
2.44.0
From 9f41a7aba0f24a3253a1483a290364e887345b42 Mon Sep 17 00:00:00 2001
From 1ed580b541ab5c3b815d8e29cf3aa71f1de0b649 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Wed, 27 Nov 2019 16:48:00 +0100
Subject: [PATCH 6/7] session-vnc: Set our own password handling function up
@ -1511,10 +1470,10 @@ password prompt.
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
index 8366e661..baf7520c 100644
index 3ee06f79..6e118d88 100644
--- a/src/grd-session-vnc.c
+++ b/src/grd-session-vnc.c
@@ -97,11 +97,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc);
@@ -99,11 +99,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc);
static gboolean
close_session_idle (gpointer user_data);
@ -1526,7 +1485,7 @@ index 8366e661..baf7520c 100644
static void
swap_uint8 (uint8_t *a,
uint8_t *b)
@@ -332,7 +327,6 @@ handle_new_client (rfbClientPtr rfb_client)
@@ -355,7 +350,6 @@ handle_new_client (rfbClientPtr rfb_client)
grd_session_vnc_pause (session_vnc);
return RFB_CLIENT_ON_HOLD;
case GRD_VNC_AUTH_METHOD_PASSWORD:
@ -1534,7 +1493,7 @@ index 8366e661..baf7520c 100644
/*
* authPasswdData needs to be non NULL in libvncserver to trigger
* password authentication.
@@ -699,6 +693,8 @@ init_vnc_session (GrdSessionVnc *session_vnc)
@@ -719,6 +713,8 @@ init_vnc_session (GrdSessionVnc *session_vnc)
session_vnc->monitor_config->connectors = connectors;
}
@ -1544,10 +1503,10 @@ index 8366e661..baf7520c 100644
rfbProcessEvents (rfb_screen, 0);
}
--
2.40.0
2.44.0
From ea9f0e491c6fd34cc6eda0104d017eba1a671023 Mon Sep 17 00:00:00 2001
From 9b7b729d9f945fcb2942c74d8ab7a9b62d6cf4bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Mon, 12 Oct 2020 17:34:30 +0200
Subject: [PATCH 7/7] vnc: Copy pixels using the right destination stride
@ -1579,5 +1538,5 @@ index 5db388b0..c4f4e8d4 100644
gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc);
--
2.40.0
2.44.0

View File

@ -1 +1 @@
SHA512 (gnome-remote-desktop-45.1.tar.xz) = 4572fefa03ee433783c822cf0405bd17b645f3aa08e8d88c04165859fd30643d612e5d7516a64ded8c1a0d2007026d6df877930b5ea127d7e1e939c1bb60f379
SHA512 (gnome-remote-desktop-46.0.tar.xz) = 780f9fd9fdb1f388e386048825ee5dfb9060d4005f0742075186779e8818d9bac4b3c3702b2a5bad347a1245fb82796b21fdad6df9d1206e9529f90cafe73f38