Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock X-Debbugs-Cc: Simon McVittie <s...@debian.org>
Please unblock package vinagre [ Reason ] Resolves hanging black screen when connecting to an RDP server. [ Impact ] Users of vinagre from buster will not be able to use the application anymore. The vinagre package should then be removed from bullseye. [ Tests ] Manually tested against a Windows 2016 Server OS. [ Risks ] Leaf package, no risk. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing [ Other info ] None unblock vinagre/3.22.0-8.1
diff -Nru vinagre-3.22.0/debian/changelog vinagre-3.22.0/debian/changelog --- vinagre-3.22.0/debian/changelog 2021-01-01 01:09:52.000000000 +0100 +++ vinagre-3.22.0/debian/changelog 2021-05-16 23:11:19.000000000 +0200 @@ -1,3 +1,14 @@ +vinagre (3.22.0-8.1) unstable; urgency=medium + + * Non-maintainer upload. + * debian/patches: + + Add 0003-fix-hangs-with-recent-FreeRDP-version.patch and + 0004-fix-FreeRDP-API-usage.patch. This resolves vinagre hanging endlessly + with a black screen when connecting to a remote RDP server (Closes: + #983533). + + -- Mike Gabriel <sunwea...@debian.org> Sun, 16 May 2021 23:11:19 +0200 + vinagre (3.22.0-8) unstable; urgency=medium * Team upload. diff -Nru vinagre-3.22.0/debian/patches/0003-fix-hangs-with-recent-FreeRDP-version.patch vinagre-3.22.0/debian/patches/0003-fix-hangs-with-recent-FreeRDP-version.patch --- vinagre-3.22.0/debian/patches/0003-fix-hangs-with-recent-FreeRDP-version.patch 1970-01-01 01:00:00.000000000 +0100 +++ vinagre-3.22.0/debian/patches/0003-fix-hangs-with-recent-FreeRDP-version.patch 2021-02-26 10:32:02.000000000 +0100 @@ -0,0 +1,78 @@ +From 404a56a11469ef24a1df632847465030d81db091 Mon Sep 17 00:00:00 2001 +From: Ondrej Holy <oh...@redhat.com> +Date: Fri, 15 May 2020 15:43:37 +0200 +Subject: [PATCH] plugins/rdp: Fix hangs with recent FreeRDP versions + +Connection to all my testing servers fails with "SERVER BUG: The support +for this feature was not announced! Use /relax-order-checks to ignore" +currently. This happens always with current FreeRDP versions after +https://github.com/FreeRDP/FreeRDP/pull/4926 has been merged. This can be +fixed by the usage of /relax-order-checks option, however, this option +should be used only if necessary needed and it should not be needed in +most of the cases. This currenlty happens always as it interfere with our +custom OrderSupports settings. Let's use the default OrderSupports +settings to fix this issue, which is possible thanks to +https://github.com/FreeRDP/FreeRDP/pull/5057. + +See: https://gitlab.gnome.org/GNOME/gtk-frdp/-/issues/27 +--- + configure.ac | 2 +- + plugins/rdp/vinagre-rdp-tab.c | 27 --------------------------- + 2 files changed, 1 insertion(+), 28 deletions(-) + +--- a/configure.ac ++++ b/configure.ac +@@ -58,7 +58,7 @@ + AM_CONDITIONAL([VINAGRE_ENABLE_SSH], [test "x$have_ssh" = "xyes"]) + + # Whether to enable support for RDP. +-RDP_DEPS="freerdp2 x11" ++RDP_DEPS="freerdp2 >= 2.0.0 x11" + AC_ARG_ENABLE([rdp], + [AS_HELP_STRING([--disable-rdp], + [Disable Remote Desktop Protocol (RDP) support])]) +--- a/plugins/rdp/vinagre-rdp-tab.c ++++ b/plugins/rdp/vinagre-rdp-tab.c +@@ -524,32 +524,7 @@ frdp_pre_connect (freerdp *instance) + { + rdpSettings *settings = instance->settings; + +-#if HAVE_FREERDP_1_1 +- settings->OrderSupport[NEG_DSTBLT_INDEX] = TRUE; +- settings->OrderSupport[NEG_PATBLT_INDEX] = TRUE; +- settings->OrderSupport[NEG_SCRBLT_INDEX] = TRUE; +- settings->OrderSupport[NEG_OPAQUE_RECT_INDEX] = TRUE; +- settings->OrderSupport[NEG_DRAWNINEGRID_INDEX] = FALSE; +- settings->OrderSupport[NEG_MULTIDSTBLT_INDEX] = FALSE; +- settings->OrderSupport[NEG_MULTIPATBLT_INDEX] = FALSE; +- settings->OrderSupport[NEG_MULTISCRBLT_INDEX] = FALSE; +- settings->OrderSupport[NEG_MULTIOPAQUERECT_INDEX] = TRUE; +- settings->OrderSupport[NEG_MULTI_DRAWNINEGRID_INDEX] = FALSE; +- settings->OrderSupport[NEG_LINETO_INDEX] = TRUE; +- settings->OrderSupport[NEG_POLYLINE_INDEX] = TRUE; +- settings->OrderSupport[NEG_MEMBLT_INDEX] = TRUE; +- settings->OrderSupport[NEG_MEM3BLT_INDEX] = FALSE; +- settings->OrderSupport[NEG_MEMBLT_V2_INDEX] = TRUE; +- settings->OrderSupport[NEG_MEM3BLT_V2_INDEX] = FALSE; +- settings->OrderSupport[NEG_SAVEBITMAP_INDEX] = FALSE; +- settings->OrderSupport[NEG_GLYPH_INDEX_INDEX] = TRUE; +- settings->OrderSupport[NEG_FAST_INDEX_INDEX] = TRUE; +- settings->OrderSupport[NEG_FAST_GLYPH_INDEX] = FALSE; +- settings->OrderSupport[NEG_POLYGON_SC_INDEX] = FALSE; +- settings->OrderSupport[NEG_POLYGON_CB_INDEX] = FALSE; +- settings->OrderSupport[NEG_ELLIPSE_SC_INDEX] = FALSE; +- settings->OrderSupport[NEG_ELLIPSE_CB_INDEX] = FALSE; +-#else ++#if !HAVE_FREERDP_1_1 + settings->order_support[NEG_DSTBLT_INDEX] = true; + settings->order_support[NEG_PATBLT_INDEX] = true; + settings->order_support[NEG_SCRBLT_INDEX] = true; +@@ -1122,6 +1097,8 @@ open_freerdp (VinagreRdpTab *rdp_tab) + settings->encryption = true; + settings->encryption_method = ENCRYPTION_METHOD_40BIT | ENCRYPTION_METHOD_128BIT | ENCRYPTION_METHOD_FIPS; + settings->encryption_level = ENCRYPTION_LEVEL_CLIENT_COMPATIBLE; ++ settings->AllowUnanouncedOrdersFromServer = true; ++ settings->BitmapCacheEnabled = true; + #endif + #include <freerdp/version.h> + #if (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2 && FREERDP_VERSION_REVISION >= 1) || (FREERDP_VERSION_MAJOR == 2) diff -Nru vinagre-3.22.0/debian/patches/0004-fix-FreeRDP-API-usage.patch vinagre-3.22.0/debian/patches/0004-fix-FreeRDP-API-usage.patch --- vinagre-3.22.0/debian/patches/0004-fix-FreeRDP-API-usage.patch 1970-01-01 01:00:00.000000000 +0100 +++ vinagre-3.22.0/debian/patches/0004-fix-FreeRDP-API-usage.patch 2021-02-26 10:35:40.000000000 +0100 @@ -0,0 +1,64 @@ +From 18150f00a889e7f02d15f04e868e7b019ccdf0f2 Mon Sep 17 00:00:00 2001 +From: akallabeth <akallab...@posteo.net> +Date: Fri, 26 Feb 2021 08:11:35 +0100 +Subject: [PATCH] Fixed freerdp API use + +* Use PostDisconnect callback to free up resources allocated + during Pre/PostConnect phase +* Only call freerdp_disconnect if there was an actual connection +--- + plugins/rdp/vinagre-rdp-tab.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +--- a/plugins/rdp/vinagre-rdp-tab.c ++++ b/plugins/rdp/vinagre-rdp-tab.c +@@ -70,6 +70,8 @@ + gboolean scaling; + double scale; + double offset_x, offset_y; ++ ++ gboolean is_connected; + }; + + G_DEFINE_TYPE (VinagreRdpTab, vinagre_rdp_tab, VINAGRE_TYPE_TAB) +@@ -178,8 +180,9 @@ + + if (priv->freerdp_session) + { +- gdi_free (priv->freerdp_session); +- freerdp_disconnect (priv->freerdp_session); ++ if (priv->is_connected) ++ freerdp_disconnect (priv->freerdp_session); ++ + freerdp_context_free (priv->freerdp_session); + g_clear_pointer (&priv->freerdp_session, freerdp_free); + } +@@ -584,6 +587,12 @@ + return TRUE; + } + ++static void ++frdp_post_disconnect (freerdp *instance) ++{ ++ gdi_free(instance); ++} ++ + static gboolean + update (gpointer user_data) + { +@@ -1065,6 +1074,7 @@ + priv->freerdp_session = freerdp_new (); + priv->freerdp_session->PreConnect = frdp_pre_connect; + priv->freerdp_session->PostConnect = frdp_post_connect; ++ priv->freerdp_session->PostDisconnect = frdp_post_disconnect; + priv->freerdp_session->Authenticate = frdp_authenticate; + priv->freerdp_session->VerifyCertificate = frdp_certificate_verify; + #if HAVE_FREERDP_1_1 +@@ -1199,6 +1209,7 @@ + /* Run FreeRDP session */ + success = freerdp_connect (priv->freerdp_session); + ++ priv->is_connected = success; + if (!success) + { + gtk_window_unfullscreen (window); diff -Nru vinagre-3.22.0/debian/patches/series vinagre-3.22.0/debian/patches/series --- vinagre-3.22.0/debian/patches/series 2021-01-01 01:06:19.000000000 +0100 +++ vinagre-3.22.0/debian/patches/series 2021-02-26 10:34:20.000000000 +0100 @@ -3,3 +3,5 @@ freerdp2017.patch 131d151cb02245f84918f9ba5b3ef055758bcf61.patch gcc-10.patch +0003-fix-hangs-with-recent-FreeRDP-version.patch +0004-fix-FreeRDP-API-usage.patch