[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#988609: marked as done (unblock: vinagre/3.22.0-8.1)



Your message dated Mon, 17 May 2021 18:29:28 +0000
with message-id <E1lihzc-0007xV-BZ@respighi.debian.org>
and subject line unblock vinagre
has caused the Debian Bug report #988609,
regarding unblock: vinagre/3.22.0-8.1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
988609: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=988609
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: Simon McVittie <smcv@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 <sunweaver@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 <oholy@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 <akallabeth@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

--- End Message ---
--- Begin Message ---
Unblocked.

--- End Message ---

Reply to: