Blame SOURCES/vinagre-3.22.0-freerdp-versions.patch

9ef9d9
--- vinagre-3.22.0/plugins/rdp/vinagre-rdp-tab.c
9ef9d9
+++ vinagre-3.22.0/plugins/rdp/vinagre-rdp-tab.c
9ef9d9
@@ -72,6 +72,9 @@ struct _VinagreRdpTabPrivate
9ef9d9
   double           offset_x, offset_y;
9ef9d9
 
9ef9d9
   guint            authentication_attempts;
9ef9d9
+#ifndef HAVE_FREERDP_1_2
9ef9d9
+  gboolean         authentication_cancelled;
9ef9d9
+#endif
9ef9d9
 };
9ef9d9
 
9ef9d9
 G_DEFINE_TYPE (VinagreRdpTab, vinagre_rdp_tab, VINAGRE_TYPE_TAB)
9ef9d9
@@ -927,6 +930,9 @@ frdp_authenticate (freerdp  *instance,
9ef9d9
   else
9ef9d9
     {
9ef9d9
       vinagre_tab_remove_from_notebook (tab);
9ef9d9
+#ifndef HAVE_FREERDP_1_2
9ef9d9
+      priv->authentication_cancelled = TRUE;
9ef9d9
+#endif
9ef9d9
 
9ef9d9
       return FALSE;
9ef9d9
     }
9ef9d9
@@ -1071,6 +1077,12 @@ init_freerdp (VinagreRdpTab *rdp_tab)
9ef9d9
 
9ef9d9
   /* Security settings */
9ef9d9
 #if HAVE_FREERDP_1_1
9ef9d9
+#include <freerdp/version.h>
9ef9d9
+#if (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2 && FREERDP_VERSION_REVISION >= 1) || (FREERDP_VERSION_MAJOR == 2)
9ef9d9
+  settings->UseRdpSecurityLayer = FALSE;
9ef9d9
+#else
9ef9d9
+  settings->DisableEncryption = FALSE;
9ef9d9
+#endif
9ef9d9
   settings->RdpSecurity = TRUE;
9ef9d9
   settings->TlsSecurity = TRUE;
9ef9d9
   settings->NlaSecurity = TRUE;
9ef9d9
@@ -1084,12 +1096,6 @@ init_freerdp (VinagreRdpTab *rdp_tab)
9ef9d9
   settings->encryption_method = ENCRYPTION_METHOD_40BIT | ENCRYPTION_METHOD_128BIT | ENCRYPTION_METHOD_FIPS;
9ef9d9
   settings->encryption_level = ENCRYPTION_LEVEL_CLIENT_COMPATIBLE;
9ef9d9
 #endif
9ef9d9
-#include <freerdp/version.h>
9ef9d9
-#if (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2 && FREERDP_VERSION_REVISION >= 1) || (FREERDP_VERSION_MAJOR == 2)
9ef9d9
-  settings->UseRdpSecurityLayer = FALSE;
9ef9d9
-#else
9ef9d9
-  settings->DisableEncryption = FALSE;
9ef9d9
-#endif
9ef9d9
 
9ef9d9
   /* Set display size */
9ef9d9
 #if HAVE_FREERDP_1_1
9ef9d9
@@ -1119,7 +1125,9 @@ init_freerdp (VinagreRdpTab *rdp_tab)
9ef9d9
 #endif
9ef9d9
 
9ef9d9
   /* Allow font smoothing by default */
9ef9d9
+#ifdef HAVE_FREERDP_1_1
9ef9d9
   settings->AllowFontSmoothing = TRUE;
9ef9d9
+#endif
9ef9d9
 }
9ef9d9
 
9ef9d9
 static void
9ef9d9
@@ -1195,35 +1203,64 @@ open_freerdp (VinagreRdpTab *rdp_tab)
9ef9d9
   VinagreTab           *tab = VINAGRE_TAB (rdp_tab);
9ef9d9
   GtkWindow            *window = GTK_WINDOW (vinagre_tab_get_window (tab));
9ef9d9
   gboolean              success = TRUE;
9ef9d9
+#ifdef HAVE_FREERDP_1_2
9ef9d9
   gboolean              cancelled = FALSE;
9ef9d9
   guint                 authentication_errors = 0;
9ef9d9
+#else
9ef9d9
+  gboolean              connection_failed;
9ef9d9
+  guint                 authentication_attempts;
9ef9d9
+#endif
9ef9d9
 
9ef9d9
   priv->events = g_queue_new ();
9ef9d9
 
9ef9d9
   init_freerdp (rdp_tab);
9ef9d9
   init_display (rdp_tab);
9ef9d9
+#ifndef HAVE_FREERDP_1_2
9ef9d9
+  priv->authentication_cancelled = FALSE;
9ef9d9
+#endif
9ef9d9
 
9ef9d9
   do
9ef9d9
     {
9ef9d9
+#ifndef HAVE_FREERDP_1_2
9ef9d9
+      connection_failed = FALSE;
9ef9d9
+      authentication_attempts = priv->authentication_attempts;
9ef9d9
+#endif
9ef9d9
+
9ef9d9
       /* Run FreeRDP session */
9ef9d9
       success = freerdp_connect (priv->freerdp_session);
9ef9d9
       if (!success)
9ef9d9
         {
9ef9d9
+#ifdef HAVE_FREERDP_1_2
9ef9d9
           authentication_errors += freerdp_get_last_error (priv->freerdp_session->context) == 0x20009 ||
9ef9d9
                                    freerdp_get_last_error (priv->freerdp_session->context) == 0x2000c;
9ef9d9
 
9ef9d9
           cancelled = freerdp_get_last_error (priv->freerdp_session->context) == 0x2000b;
9ef9d9
+#else
9ef9d9
+          if (authentication_attempts == priv->authentication_attempts)
9ef9d9
+              connection_failed = TRUE;
9ef9d9
+#endif
9ef9d9
 
9ef9d9
           freerdp_free (priv->freerdp_session);
9ef9d9
           init_freerdp (rdp_tab);
9ef9d9
         }
9ef9d9
     }
9ef9d9
+#ifdef HAVE_FREERDP_1_2
9ef9d9
   while (!success && authentication_errors < 3);
9ef9d9
+#else
9ef9d9
+  while (!success &&
9ef9d9
+         priv->authentication_attempts < 3 &&
9ef9d9
+         !priv->authentication_cancelled &&
9ef9d9
+         !connection_failed);
9ef9d9
+#endif
9ef9d9
 
9ef9d9
   if (!success)
9ef9d9
     {
9ef9d9
       gtk_window_unfullscreen (window);
9ef9d9
+#ifdef HAVE_FREERDP_1_2
9ef9d9
       if (!cancelled)
9ef9d9
+#else
9ef9d9
+      if (!priv->authentication_cancelled)
9ef9d9
+#endif
9ef9d9
         vinagre_utils_show_error_dialog (_("Error connecting to host."),
9ef9d9
                                          NULL,
9ef9d9
                                          window);