Add patch for gpgol to start kleo
authorAndre Heinecke <aheinecke@intevation.de>
Mon, 20 Nov 2017 11:54:58 +0000 (12:54 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Mon, 20 Nov 2017 11:54:58 +0000 (12:54 +0100)
--

Makefile.am
NEWS
patches/gpgol/0001-Launch-Kleo-GPA-in-the-background-on-start.patch [new file with mode: 0755]

index 2e18138..2f5d90f 100644 (file)
@@ -52,7 +52,8 @@ EXTRA_DIST = autogen.sh README.GIT ONEWS \
         patches/gpgex-1.0.4/0001-Prefer-kleowrapped-gpgwrapped-binaries.patch \
         patches/gpgex-1.0.4/0002-Fix-loop-logic-error-in-new-server-name-detection.patch \
         patches/extra-cmake-modules/0001-Use-BIN_INSTALL_DIR-data-for-DATAROOTDIR-on-Windows.patch \
-        patches/gpa-0.9.10/0001-w32-Make-location-of-locale-dir-more-flexible.patch
+        patches/gpa-0.9.10/0001-w32-Make-location-of-locale-dir-more-flexible.patch \
+        patches/gpgol/0001-Launch-Kleo-GPA-in-the-background-on-start.patch
 
 copy-news:
        cp NEWS doc/website/NEWS.last
diff --git a/NEWS b/NEWS
index 98e5e8b..357990f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,12 @@ Noteworthy changes in Version 3.0.1 (unreleased)
 (de) GpgOL: Ein Benutzerschnittstellen-Fehler in Outlook 2010 wurde
      behoben.
 
+(en) GpgOL: Kleopatra is again started in the background to speed
+     up crypto operations.
+
+(de) GpgOL: Kleopatra wird erneut, zur beschleuning der Krypto
+     Operationen, im Hintergrund gestartet.
+
 (en) Kleopatra: Various problems regarding S/MIME file operations
      have been fixed.
 
diff --git a/patches/gpgol/0001-Launch-Kleo-GPA-in-the-background-on-start.patch b/patches/gpgol/0001-Launch-Kleo-GPA-in-the-background-on-start.patch
new file mode 100755 (executable)
index 0000000..7d8a92d
--- /dev/null
@@ -0,0 +1,83 @@
+#! /bin/sh
+patch -p1 -f -l $* < $0
+exit $?
+
+From 13950a98522818b27b3048617acb0282b65b54b3 Mon Sep 17 00:00:00 2001
+From: Andre Heinecke <aheinecke@intevation.de>
+Date: Mon, 20 Nov 2017 11:54:08 +0100
+Subject: [PATCH] Launch Kleo/GPA in the background on start
+
+* src/engine-assuan.c (spawn_background): New.
+(op_assuan_init): Create background thread to launch kleo.
+
+--
+This does not slowdown the startup as it happens in a different
+thread but is intended to speed up the opening of the key
+resolution dialog when kleopatra is not running and help to
+avoid startup problems mentioned in T3401
+
+GnuPG-Bug-Id: T3401
+---
+ src/engine-assuan.c | 37 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+diff --git a/src/engine-assuan.c b/src/engine-assuan.c
+index 8907c18..95eee5f 100644
+--- a/src/engine-assuan.c
++++ b/src/engine-assuan.c
+@@ -559,16 +559,53 @@ op_assuan_deinit (void)
+   cleanup ();
+ }
+
++/* Code for a thread in the background */
++static DWORD WINAPI
++spawn_background (LPVOID arg)
++{
++  gpgme_error_t err;
++  assuan_context_t ctx;
++  pid_t pid;
++  ULONG cmdid;
++
++  (void) arg;
++
++  /* Run a test connection to see whether the UI server is available.  */
++  log_debug ("%s:%s: Initial uiserver connect", SRCNAME, __func__);
++  err = connect_uiserver (&ctx, &pid, &cmdid, NULL);
++  if (!err)
++    {
++      log_debug ("%s:%s: Sending noop", SRCNAME, __func__);
++      err = assuan_transact (ctx, "NOP", NULL, NULL, NULL, NULL, NULL, NULL);
++      assuan_release (ctx);
++    }
++  if (err)
++    log_debug ("%s:%s: Failed code: %i", SRCNAME, __func__, err);
++
++  return 0;
++}
+
+ /* Initialize this system. */
+ int
+ op_assuan_init (void)
+ {
+   static int init_done;
++  HANDLE thread;
+
+   if (init_done)
+     return 0;
+
++  /* Connect to UiServer in the background */
++
++  /* XXX This should not really be necessary but
++     it was often reported that the spawn and connect
++     did not work. Also it is much faster to access
++     Kleopatra when it's already running so spawning
++     it as lookahead probably makes sense. */
++  thread = CreateThread (NULL, 0, spawn_background,
++                         NULL, 0, NULL);
++  CloseHandle(thread);
++
+   /* Fire up the pipe worker thread. */
+   {
+     HANDLE th;
+--
+2.11.0