Bump to 40.beta
This commit is contained in:
parent
0fcc3d4d82
commit
611daca9e5
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
/gnome-remote-desktop-0.1.*.tar.xz
|
||||
/gnome-remote-desktop-40.beta.tar.xz
|
||||
|
@ -1,22 +1,16 @@
|
||||
%global systemd_unit gnome-remote-desktop.service
|
||||
|
||||
Name: gnome-remote-desktop
|
||||
Version: 0.1.9
|
||||
Release: 3%{?dist}
|
||||
Version: 40.0~beta
|
||||
Release: 1%{?dist}
|
||||
Summary: GNOME Remote Desktop screen share service
|
||||
|
||||
License: GPLv2+
|
||||
URL: https://gitlab.gnome.org/jadahl/gnome-remote-desktop
|
||||
Source0: https://download.gnome.org/sources/gnome-remote-desktop/0.1/gnome-remote-desktop-0.1.9.tar.xz
|
||||
|
||||
# Avoid race condition on disconnect
|
||||
Patch0: 0001-vnc-Drop-frames-if-client-is-gone.patch
|
||||
Source0: https://download.gnome.org/sources/gnome-remote-desktop/40/gnome-remote-desktop-40.beta.tar.xz
|
||||
|
||||
# Adds encryption support (requires patched LibVNCServer)
|
||||
Patch1: gnutls-anontls.patch
|
||||
|
||||
# Copy using the right destination stride
|
||||
Patch2: 0001-vnc-Copy-pixels-using-the-right-destination-stride.patch
|
||||
Patch0: gnutls-anontls.patch
|
||||
|
||||
BuildRequires: git
|
||||
BuildRequires: gcc
|
||||
@ -28,6 +22,9 @@ BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32
|
||||
BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.0
|
||||
BuildRequires: pkgconfig(libvncserver) >= 0.9.11-7
|
||||
BuildRequires: pkgconfig(freerdp2)
|
||||
BuildRequires: pkgconfig(winpr2)
|
||||
BuildRequires: pkgconfig(fuse3)
|
||||
BuildRequires: pkgconfig(xkbcommon)
|
||||
BuildRequires: pkgconfig(libsecret-1)
|
||||
BuildRequires: pkgconfig(libnotify)
|
||||
BuildRequires: pkgconfig(gnutls)
|
||||
@ -43,7 +40,7 @@ GNOME desktop environment.
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -S git
|
||||
%autosetup -S git -n %{name}-40.beta
|
||||
|
||||
|
||||
%build
|
||||
@ -77,6 +74,9 @@ GNOME desktop environment.
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Mar 04 2021 Jonas Ådahl <jadahl@redhat.com> - 40.0~beta-1
|
||||
- Bump to 40.beta
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.9-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 546151b4e15fd45901f38172435cd9aa63893727 Mon Sep 17 00:00:00 2001
|
||||
From 8676ef6c32557234d08acb13d7524df5fa1f4bb2 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/6] vnc: Add anonymous TLS encryption support
|
||||
Subject: [PATCH 1/7] vnc: Add anonymous TLS encryption support
|
||||
|
||||
Add support for encrypting the VNC connection using anonymous TLS. In
|
||||
effect this means that the channel is encrypted using TLS but that no
|
||||
@ -11,31 +11,31 @@ VNC connection.
|
||||
---
|
||||
meson.build | 1 +
|
||||
src/grd-enums.h | 6 +
|
||||
src/grd-session-vnc.c | 98 +++-
|
||||
src/grd-session-vnc.h | 15 +
|
||||
src/grd-session-vnc.c | 120 ++++-
|
||||
src/grd-session-vnc.h | 17 +
|
||||
src/grd-settings.c | 28 ++
|
||||
src/grd-settings.h | 2 +
|
||||
src/grd-vnc-server.c | 45 ++
|
||||
src/grd-vnc-tls.c | 444 ++++++++++++++++++
|
||||
src/grd-vnc-tls.h | 28 ++
|
||||
src/meson.build | 5 +-
|
||||
src/meson.build | 3 +
|
||||
...nome.desktop.remote-desktop.gschema.xml.in | 10 +
|
||||
11 files changed, 666 insertions(+), 16 deletions(-)
|
||||
11 files changed, 678 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 af423a4..813c97f 100644
|
||||
index 5e9ad04..9bbd5fc 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -20,6 +20,7 @@ libvncclient_dep = dependency('libvncclient')
|
||||
libsecret_dep = dependency('libsecret-1')
|
||||
libnotify_dep = dependency('libnotify')
|
||||
winpr_dep = dependency('winpr2', version: freerdp_req)
|
||||
@@ -40,6 +40,7 @@ endif
|
||||
if have_vnc
|
||||
libvncserver_dep = dependency('libvncserver')
|
||||
libvncclient_dep = dependency('libvncclient')
|
||||
+ gnutls_dep = dependency('gnutls')
|
||||
endif
|
||||
|
||||
cdata = configuration_data()
|
||||
cdata.set_quoted('GETTEXT_PACKAGE', 'gnome-remote-desktop')
|
||||
diff --git a/src/grd-enums.h b/src/grd-enums.h
|
||||
index ffab821..4333863 100644
|
||||
--- a/src/grd-enums.h
|
||||
@ -52,10 +52,10 @@ index ffab821..4333863 100644
|
||||
+
|
||||
#endif /* GRD_ENUMS_H */
|
||||
diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c
|
||||
index a06d34d..d014315 100644
|
||||
index 0e520dc..0c189fd 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -44,7 +44,9 @@ struct _GrdSessionVnc
|
||||
@@ -45,7 +45,9 @@ struct _GrdSessionVnc
|
||||
{
|
||||
GrdSession parent;
|
||||
|
||||
@ -65,7 +65,7 @@ index a06d34d..d014315 100644
|
||||
GSource *source;
|
||||
rfbScreenInfoPtr rfb_screen;
|
||||
rfbClientPtr rfb_client;
|
||||
@@ -518,12 +520,30 @@ check_rfb_password (rfbClientPtr rfb_client,
|
||||
@@ -540,6 +542,12 @@ check_rfb_password (rfbClientPtr rfb_client,
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,9 +76,10 @@ index a06d34d..d014315 100644
|
||||
+}
|
||||
+
|
||||
int
|
||||
grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc)
|
||||
{
|
||||
return session_vnc->rfb_screen->paddedWidthInBytes;
|
||||
grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
int width)
|
||||
@@ -547,6 +555,18 @@ grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
return width * BGRX_BYTES_PER_PIXEL;
|
||||
}
|
||||
|
||||
+rfbClientPtr
|
||||
@ -96,7 +97,7 @@ index a06d34d..d014315 100644
|
||||
static void
|
||||
init_vnc_session (GrdSessionVnc *session_vnc)
|
||||
{
|
||||
@@ -564,33 +584,74 @@ init_vnc_session (GrdSessionVnc *session_vnc)
|
||||
@@ -590,44 +610,85 @@ init_vnc_session (GrdSessionVnc *session_vnc)
|
||||
rfbProcessEvents (rfb_screen, 0);
|
||||
}
|
||||
|
||||
@ -131,6 +132,17 @@ index a06d34d..d014315 100644
|
||||
+ session_vnc->pending_framebuffer_width,
|
||||
+ session_vnc->pending_framebuffer_height);
|
||||
+ session_vnc->pending_framebuffer_resize = FALSE;
|
||||
+
|
||||
+ /**
|
||||
+ * This is a workaround. libvncserver is unable to handle clipboard
|
||||
+ * changes early and either disconnects the client or crashes g-r-d
|
||||
+ * if it receives rfbSendServerCutText too early altough the
|
||||
+ * authentification process is already done.
|
||||
+ * Doing this after resizing the framebuffer, seems to work fine,
|
||||
+ * so enable the clipboard here and not when the remote desktop
|
||||
+ * session proxy is acquired.
|
||||
+ */
|
||||
+ grd_clipboard_vnc_maybe_enable_clipboard (session_vnc->clipboard_vnc);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@ -172,6 +184,17 @@ index a06d34d..d014315 100644
|
||||
- session_vnc->pending_framebuffer_width,
|
||||
- session_vnc->pending_framebuffer_height);
|
||||
- session_vnc->pending_framebuffer_resize = FALSE;
|
||||
-
|
||||
- /**
|
||||
- * This is a workaround. libvncserver is unable to handle clipboard
|
||||
- * changes early and either disconnects the client or crashes g-r-d
|
||||
- * if it receives rfbSendServerCutText too early altough the
|
||||
- * authentification process is already done.
|
||||
- * Doing this after resizing the framebuffer, seems to work fine,
|
||||
- * so enable the clipboard here and not when the remote desktop
|
||||
- * session proxy is acquired.
|
||||
- */
|
||||
- grd_clipboard_vnc_maybe_enable_clipboard (session_vnc->clipboard_vnc);
|
||||
- }
|
||||
+ grd_session_stop (session);
|
||||
}
|
||||
@ -185,7 +208,7 @@ index a06d34d..d014315 100644
|
||||
}
|
||||
|
||||
return G_SOURCE_CONTINUE;
|
||||
@@ -603,7 +664,10 @@ grd_session_vnc_attach_source (GrdSessionVnc *session_vnc)
|
||||
@@ -640,7 +701,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,
|
||||
@ -197,7 +220,7 @@ index a06d34d..d014315 100644
|
||||
NULL);
|
||||
g_source_set_callback (session_vnc->source,
|
||||
(GSourceFunc) handle_socket_data,
|
||||
@@ -629,8 +693,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
|
||||
@@ -666,8 +730,10 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
|
||||
"context", context,
|
||||
NULL);
|
||||
|
||||
@ -208,7 +231,7 @@ index a06d34d..d014315 100644
|
||||
grd_session_vnc_attach_source (session_vnc);
|
||||
|
||||
init_vnc_session (session_vnc);
|
||||
@@ -645,6 +711,8 @@ grd_session_vnc_dispose (GObject *object)
|
||||
@@ -682,6 +748,8 @@ grd_session_vnc_dispose (GObject *object)
|
||||
|
||||
g_assert (!session_vnc->rfb_screen);
|
||||
|
||||
@ -218,7 +241,7 @@ index a06d34d..d014315 100644
|
||||
|
||||
G_OBJECT_CLASS (grd_session_vnc_parent_class)->dispose (object);
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index 07678c8..bba3d56 100644
|
||||
index a532567..4e7b33d 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc,
|
||||
@ -231,14 +254,14 @@ index 07678c8..bba3d56 100644
|
||||
GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server,
|
||||
GSocketConnection *connection);
|
||||
|
||||
@@ -55,8 +58,20 @@ void grd_session_vnc_move_cursor (GrdSessionVnc *session_vnc,
|
||||
int x,
|
||||
int y);
|
||||
@@ -62,6 +65,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc,
|
||||
int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
int width);
|
||||
|
||||
+int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc);
|
||||
+
|
||||
int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc);
|
||||
|
||||
+int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc);
|
||||
+
|
||||
gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc);
|
||||
|
||||
+rfbClientPtr grd_session_vnc_get_rfb_client (GrdSessionVnc *session_vnc);
|
||||
@ -253,7 +276,7 @@ index 07678c8..bba3d56 100644
|
||||
+
|
||||
#endif /* GRD_SESSION_VNC_H */
|
||||
diff --git a/src/grd-settings.c b/src/grd-settings.c
|
||||
index 3af87be..f37f2da 100644
|
||||
index d2f31d2..12d8693 100644
|
||||
--- a/src/grd-settings.c
|
||||
+++ b/src/grd-settings.c
|
||||
@@ -60,6 +60,7 @@ struct _GrdSettings
|
||||
@ -264,7 +287,7 @@ index 3af87be..f37f2da 100644
|
||||
} vnc;
|
||||
};
|
||||
|
||||
@@ -232,6 +233,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings)
|
||||
@@ -242,6 +243,12 @@ grd_settings_get_vnc_auth_method (GrdSettings *settings)
|
||||
return settings->vnc.auth_method;
|
||||
}
|
||||
|
||||
@ -277,7 +300,7 @@ index 3af87be..f37f2da 100644
|
||||
static void
|
||||
update_rdp_tls_cert (GrdSettings *settings)
|
||||
{
|
||||
@@ -267,6 +274,13 @@ update_vnc_auth_method (GrdSettings *settings)
|
||||
@@ -277,6 +284,13 @@ update_vnc_auth_method (GrdSettings *settings)
|
||||
"auth-method");
|
||||
}
|
||||
|
||||
@ -291,7 +314,7 @@ index 3af87be..f37f2da 100644
|
||||
static void
|
||||
on_rdp_settings_changed (GSettings *rdp_settings,
|
||||
const char *key,
|
||||
@@ -304,6 +318,11 @@ on_vnc_settings_changed (GSettings *vnc_settings,
|
||||
@@ -314,6 +328,11 @@ on_vnc_settings_changed (GSettings *vnc_settings,
|
||||
update_vnc_auth_method (settings);
|
||||
g_signal_emit (settings, signals[VNC_AUTH_METHOD_CHANGED], 0);
|
||||
}
|
||||
@ -303,7 +326,7 @@ index 3af87be..f37f2da 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -335,6 +354,8 @@ grd_settings_init (GrdSettings *settings)
|
||||
@@ -345,6 +364,8 @@ grd_settings_init (GrdSettings *settings)
|
||||
|
||||
settings->rdp.port = GRD_RDP_SERVER_PORT;
|
||||
settings->vnc.port = GRD_VNC_SERVER_PORT;
|
||||
@ -312,7 +335,7 @@ index 3af87be..f37f2da 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -379,4 +400,11 @@ grd_settings_class_init (GrdSettingsClass *klass)
|
||||
@@ -389,4 +410,11 @@ grd_settings_class_init (GrdSettingsClass *klass)
|
||||
0,
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
@ -901,10 +924,10 @@ index 0000000..135ef8c
|
||||
+
|
||||
+#endif /* GRD_VNC_TLS_H */
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 1b6425d..17579b1 100644
|
||||
index 843746d..133cc60 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -33,6 +33,8 @@ daemon_sources = files([
|
||||
@@ -72,10 +72,13 @@ if have_vnc
|
||||
'grd-vnc-pipewire-stream.h',
|
||||
'grd-vnc-server.c',
|
||||
'grd-vnc-server.h',
|
||||
@ -912,17 +935,12 @@ index 1b6425d..17579b1 100644
|
||||
+ 'grd-vnc-tls.h',
|
||||
])
|
||||
|
||||
gen_daemon_sources = []
|
||||
@@ -66,7 +68,8 @@ executable('gnome-remote-desktop-daemon',
|
||||
deps += [
|
||||
libvncserver_dep,
|
||||
libsecret_dep,
|
||||
libnotify_dep,
|
||||
- winpr_dep],
|
||||
+ winpr_dep,
|
||||
+ gnutls_dep],
|
||||
include_directories: [configinc],
|
||||
install: true,
|
||||
install_dir: libexecdir)
|
||||
+ gnutls_dep,
|
||||
]
|
||||
endif
|
||||
|
||||
diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in
|
||||
index 4b6e593..0086d99 100644
|
||||
--- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in
|
||||
@ -944,13 +962,13 @@ index 4b6e593..0086d99 100644
|
||||
</schema>
|
||||
</schemalist>
|
||||
--
|
||||
2.26.2
|
||||
2.29.2
|
||||
|
||||
|
||||
From 2e46518f421fd8704770bb6742accfacba3570aa Mon Sep 17 00:00:00 2001
|
||||
From 552e9c9add722e953a8da22bd54ba0fef7a9d6af 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/6] session-vnc: Add paused/resumed signals
|
||||
Subject: [PATCH 2/7] session-vnc: Add paused/resumed signals
|
||||
|
||||
Paused is when the socket sourec is detached, and resumed when attached.
|
||||
Meant to be used by the TLS channel security to a attach/detach
|
||||
@ -960,10 +978,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 d014315..7edd407 100644
|
||||
index 0c189fd..596896d 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -40,14 +40,27 @@
|
||||
@@ -41,14 +41,27 @@
|
||||
#define BGRX_SAMPLES_PER_PIXEL 3
|
||||
#define BGRX_BYTES_PER_PIXEL 4
|
||||
|
||||
@ -991,7 +1009,7 @@ index d014315..7edd407 100644
|
||||
rfbScreenInfoPtr rfb_screen;
|
||||
rfbClientPtr rfb_client;
|
||||
|
||||
@@ -73,7 +86,7 @@ struct _GrdSessionVnc
|
||||
@@ -76,7 +89,7 @@ struct _GrdSessionVnc
|
||||
G_DEFINE_TYPE (GrdSessionVnc, grd_session_vnc, GRD_TYPE_SESSION);
|
||||
|
||||
static void
|
||||
@ -1000,7 +1018,7 @@ index d014315..7edd407 100644
|
||||
|
||||
static gboolean
|
||||
close_session_idle (gpointer user_data);
|
||||
@@ -224,7 +237,8 @@ handle_client_gone (rfbClientPtr rfb_client)
|
||||
@@ -235,7 +248,8 @@ handle_client_gone (rfbClientPtr rfb_client)
|
||||
|
||||
g_debug ("VNC client gone");
|
||||
|
||||
@ -1010,7 +1028,7 @@ index d014315..7edd407 100644
|
||||
maybe_queue_close_session_idle (session_vnc);
|
||||
session_vnc->rfb_client = NULL;
|
||||
}
|
||||
@@ -293,7 +307,7 @@ handle_new_client (rfbClientPtr rfb_client)
|
||||
@@ -304,7 +318,7 @@ handle_new_client (rfbClientPtr rfb_client)
|
||||
session_vnc->prompt_cancellable,
|
||||
prompt_response_callback,
|
||||
session_vnc);
|
||||
@ -1019,7 +1037,7 @@ index d014315..7edd407 100644
|
||||
return RFB_CLIENT_ON_HOLD;
|
||||
case GRD_VNC_AUTH_METHOD_PASSWORD:
|
||||
session_vnc->rfb_screen->passwordCheck = check_rfb_password;
|
||||
@@ -511,7 +525,7 @@ check_rfb_password (rfbClientPtr rfb_client,
|
||||
@@ -533,7 +547,7 @@ check_rfb_password (rfbClientPtr rfb_client,
|
||||
if (memcmp (challenge_encrypted, response_encrypted, len) == 0)
|
||||
{
|
||||
grd_session_start (GRD_SESSION (session_vnc));
|
||||
@ -1028,7 +1046,7 @@ index d014315..7edd407 100644
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
@@ -681,6 +695,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc)
|
||||
@@ -718,6 +732,36 @@ grd_session_vnc_detach_source (GrdSessionVnc *session_vnc)
|
||||
g_clear_pointer (&session_vnc->source, g_source_destroy);
|
||||
}
|
||||
|
||||
@ -1065,7 +1083,7 @@ index d014315..7edd407 100644
|
||||
GrdSessionVnc *
|
||||
grd_session_vnc_new (GrdVncServer *vnc_server,
|
||||
GSocketConnection *connection)
|
||||
@@ -698,6 +742,7 @@ grd_session_vnc_new (GrdVncServer *vnc_server,
|
||||
@@ -735,6 +779,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);
|
||||
@ -1073,7 +1091,7 @@ index d014315..7edd407 100644
|
||||
|
||||
init_vnc_session (session_vnc);
|
||||
|
||||
@@ -727,7 +772,7 @@ grd_session_vnc_stop (GrdSession *session)
|
||||
@@ -764,7 +809,7 @@ grd_session_vnc_stop (GrdSession *session)
|
||||
|
||||
g_clear_object (&session_vnc->pipewire_stream);
|
||||
|
||||
@ -1081,8 +1099,8 @@ index d014315..7edd407 100644
|
||||
+ grd_session_vnc_pause (session_vnc);
|
||||
|
||||
g_clear_object (&session_vnc->connection);
|
||||
g_clear_pointer (&session_vnc->rfb_screen->frameBuffer, g_free);
|
||||
@@ -783,8 +828,8 @@ grd_session_vnc_stream_ready (GrdSession *session,
|
||||
g_clear_object (&session_vnc->clipboard_vnc);
|
||||
@@ -817,8 +862,8 @@ grd_session_vnc_stream_ready (GrdSession *session,
|
||||
G_CALLBACK (on_pipewire_stream_closed),
|
||||
session_vnc);
|
||||
|
||||
@ -1093,7 +1111,7 @@ index d014315..7edd407 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -803,4 +848,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass)
|
||||
@@ -837,4 +882,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass)
|
||||
|
||||
session_class->stop = grd_session_vnc_stop;
|
||||
session_class->stream_ready = grd_session_vnc_stream_ready;
|
||||
@ -1112,13 +1130,13 @@ index d014315..7edd407 100644
|
||||
+ G_TYPE_NONE, 0);
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.29.2
|
||||
|
||||
|
||||
From b59c36ccf73939d32ccf5ab4eb47460a9fe415f3 Mon Sep 17 00:00:00 2001
|
||||
From 3b33524046d299111cc150cc8d6d100f1e516485 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/6] session-vnc: Add grd_session_vnc_dispatch() helper
|
||||
Subject: [PATCH 3/7] session-vnc: Add grd_session_vnc_dispatch() helper
|
||||
|
||||
To be used by the TLS channel security to dispatch when there is data
|
||||
available that is not visible to the socket source.
|
||||
@ -1128,10 +1146,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 7edd407..29c94a1 100644
|
||||
index 596896d..06b2cf7 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -635,6 +635,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc,
|
||||
@@ -672,6 +672,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1153,7 +1171,7 @@ index 7edd407..29c94a1 100644
|
||||
static gboolean
|
||||
handle_socket_data (GSocket *socket,
|
||||
GIOCondition condition,
|
||||
@@ -651,16 +666,7 @@ handle_socket_data (GSocket *socket,
|
||||
@@ -688,16 +703,7 @@ handle_socket_data (GSocket *socket,
|
||||
}
|
||||
else if (condition & G_IO_IN)
|
||||
{
|
||||
@ -1172,10 +1190,10 @@ index 7edd407..29c94a1 100644
|
||||
else
|
||||
{
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index bba3d56..58f635c 100644
|
||||
index 4e7b33d..cf275af 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -72,6 +72,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc,
|
||||
GrdVncSocketGrabFunc grab_func);
|
||||
|
||||
@ -1185,13 +1203,13 @@ index bba3d56..58f635c 100644
|
||||
|
||||
#endif /* GRD_SESSION_VNC_H */
|
||||
--
|
||||
2.26.2
|
||||
2.29.2
|
||||
|
||||
|
||||
From 966b2ddbd1c03c9e20dc66e5ea9a2dfb39ba4bfa Mon Sep 17 00:00:00 2001
|
||||
From 3945af78cea858033d954bb1b071269687bdea85 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/6] vnc/tls: Add some logging
|
||||
Subject: [PATCH 4/7] vnc/tls: Add some logging
|
||||
|
||||
Uses the log utility from libvncserver as it is related to the RFB
|
||||
protocol rather than the session itself.
|
||||
@ -1262,13 +1280,13 @@ index ec4758e..ac6c35f 100644
|
||||
{
|
||||
g_warning ("TLS handshake failed: %s", error->message);
|
||||
--
|
||||
2.26.2
|
||||
2.29.2
|
||||
|
||||
|
||||
From e01d27dc9911f4d7ecfd232c7e389f4dabfd87de Mon Sep 17 00:00:00 2001
|
||||
From f5330797678f4c4db4a3fa19cebd30dd4d6bbb8c 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/6] vnc/tls: Dispatch also when data is pending outside of
|
||||
Subject: [PATCH 5/7] vnc/tls: Dispatch also when data is pending outside of
|
||||
the socket
|
||||
|
||||
gnutls may have data available in its buffers, and we have our own peek
|
||||
@ -1282,10 +1300,10 @@ long as there is data to read in those buffers.
|
||||
2 files changed, 86 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index 58f635c..0d01ad3 100644
|
||||
index cf275af..efc0038 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -72,6 +72,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc,
|
||||
void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc,
|
||||
GrdVncSocketGrabFunc grab_func);
|
||||
|
||||
@ -1432,13 +1450,13 @@ index ac6c35f..312b6b9 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
2.29.2
|
||||
|
||||
|
||||
From 682f3b4a8e985f00a00e761a086a15cb5e2b9b04 Mon Sep 17 00:00:00 2001
|
||||
From fae9653965ddcc3d5684a056d9bdf46ef439d649 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/6] session-vnc: Set our own password handling function up
|
||||
Subject: [PATCH 6/7] session-vnc: Set our own password handling function up
|
||||
front
|
||||
|
||||
libvncserver decides whether to register a auth security handler
|
||||
@ -1454,10 +1472,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 29c94a1..ebe1540 100644
|
||||
index 06b2cf7..7a4c6b3 100644
|
||||
--- a/src/grd-session-vnc.c
|
||||
+++ b/src/grd-session-vnc.c
|
||||
@@ -91,11 +91,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc);
|
||||
@@ -94,11 +94,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc);
|
||||
static gboolean
|
||||
close_session_idle (gpointer user_data);
|
||||
|
||||
@ -1469,7 +1487,7 @@ index 29c94a1..ebe1540 100644
|
||||
static void
|
||||
swap_uint8 (uint8_t *a,
|
||||
uint8_t *b)
|
||||
@@ -310,7 +305,6 @@ handle_new_client (rfbClientPtr rfb_client)
|
||||
@@ -321,7 +316,6 @@ handle_new_client (rfbClientPtr rfb_client)
|
||||
grd_session_vnc_pause (session_vnc);
|
||||
return RFB_CLIENT_ON_HOLD;
|
||||
case GRD_VNC_AUTH_METHOD_PASSWORD:
|
||||
@ -1477,7 +1495,7 @@ index 29c94a1..ebe1540 100644
|
||||
/*
|
||||
* authPasswdData needs to be non NULL in libvncserver to trigger
|
||||
* password authentication.
|
||||
@@ -594,6 +588,8 @@ init_vnc_session (GrdSessionVnc *session_vnc)
|
||||
@@ -620,6 +614,8 @@ init_vnc_session (GrdSessionVnc *session_vnc)
|
||||
rfb_screen->frameBuffer = g_malloc0 (screen_width * screen_height * 4);
|
||||
memset (rfb_screen->frameBuffer, 0x1f, screen_width * screen_height * 4);
|
||||
|
||||
@ -1487,5 +1505,40 @@ index 29c94a1..ebe1540 100644
|
||||
rfbProcessEvents (rfb_screen, 0);
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
2.29.2
|
||||
|
||||
|
||||
From 1ae1286b2cc868045f93c02b7a990638ca94b26d 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
|
||||
|
||||
We're copying the pixels in a separate thread managed by PipeWire, and
|
||||
in this thread, accessing the VNC framebuffer dimension and stride is
|
||||
racy. Instead of fetching the dimension directly, pass the expected
|
||||
width and get the stride it will eventually have.
|
||||
|
||||
Already before this patch, when the copied pixel end up on the main
|
||||
thread and the dimension still doesn't match up, the frame will be
|
||||
dropped.
|
||||
---
|
||||
src/grd-session-vnc.h | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h
|
||||
index efc0038..f3a6314 100644
|
||||
--- a/src/grd-session-vnc.h
|
||||
+++ b/src/grd-session-vnc.h
|
||||
@@ -67,7 +67,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
|
||||
int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc);
|
||||
|
||||
-int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc);
|
||||
+int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc,
|
||||
+ int width);
|
||||
|
||||
gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc);
|
||||
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (gnome-remote-desktop-0.1.9.tar.xz) = 6ac2962c824634cd5322785b6d251e899ea38668010b18b1b50124497895d9c00752904abf01490e27b74e1661aeae39d83fbbd77b841329b1e0fd381c3ea440
|
||||
SHA512 (gnome-remote-desktop-40.beta.tar.xz) = 42ae56ec87229c77cd1b9e4e741e86131b4016fb99052c842531f56a612b8d828c8d8050d0a296c0a57ea06fc98425c15aeee04ff9e0eed2c975534140cc9a3e
|
||||
|
Loading…
Reference in New Issue
Block a user