ARC: better diagnostics for keyfile issues
[exim.git] / src / src / dkim_transport.c
index 28d567b035936483a111622f10dcc68bf01aa6d8..c35ba1eff1c2059e821202b4b214619d3a705dcb 100644 (file)
@@ -129,7 +129,6 @@ uschar * hdrs;
 gstring * dkim_signature;
 int hsize;
 const uschar * errstr;
-uschar * verrstr;
 BOOL rc;
 
 DEBUG(D_transport) debug_printf("dkim signing direct-mode\n");
@@ -151,8 +150,11 @@ if (!rc) return FALSE;
 
 /* Get signatures for headers plus spool data file */
 
-dkim->dot_stuffed = !!(save_options & topt_end_dot);
+#ifdef EXPERIMENTAL_ARC
+arc_sign_init();
+#endif
 
+dkim->dot_stuffed = !!(save_options & topt_end_dot);
 if (!(dkim_signature = dkim_exim_sign(deliver_datafile, SPOOL_DATA_START_OFFSET,
                                    hdrs, dkim, &errstr)))
   if (!(rc = dkt_sign_fail(dkim, &errno)))
@@ -163,12 +165,14 @@ if (!(dkim_signature = dkim_exim_sign(deliver_datafile, SPOOL_DATA_START_OFFSET,
 
 #ifdef EXPERIMENTAL_ARC
 if (dkim->arc_signspec)                        /* Prepend ARC headers */
-  if (!(dkim_signature =
-       arc_sign(dkim->arc_signspec, dkim_signature, &verrstr)))
+  {
+  uschar * e;
+  if (!(dkim_signature = arc_sign(dkim->arc_signspec, dkim_signature, &e)))
     {
-    *err = verrstr;
+    *err = e;
     return FALSE;
     }
+  }
 #endif
 
 /* Write the signature and headers into the deliver-out-buffer.  This should
@@ -264,6 +268,10 @@ if (!rc)
   goto CLEANUP;
   }
 
+#ifdef EXPERIMENTAL_ARC
+arc_sign_init();
+#endif
+
 /* Feed the file to the goats^W DKIM lib */
 
 dkim->dot_stuffed = !!(options & topt_end_dot);