X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/dde9989b7d8e04baa017b2537cc2614f75b4362f..49e56fb37f587bf0e69d2fbe76fa0793f898c26f:/src/src/dkim_transport.c diff --git a/src/src/dkim_transport.c b/src/src/dkim_transport.c index 114586803..0e9c3818c 100644 --- a/src/src/dkim_transport.c +++ b/src/src/dkim_transport.c @@ -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"); @@ -155,7 +154,10 @@ if (!rc) return FALSE; arc_sign_init(); #endif -dkim->dot_stuffed = !!(save_options & topt_end_dot); +/* The dotstuffed status of the datafile depends on whether it was stored +in wireformat. */ + +dkim->dot_stuffed = spool_file_wireformat; if (!(dkim_signature = dkim_exim_sign(deliver_datafile, SPOOL_DATA_START_OFFSET, hdrs, dkim, &errstr))) if (!(rc = dkt_sign_fail(dkim, &errno))) @@ -166,12 +168,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 @@ -271,7 +275,9 @@ if (!rc) arc_sign_init(); #endif -/* Feed the file to the goats^W DKIM lib */ +/* Feed the file to the goats^W DKIM lib. At this point the dotstuffed +status of the file depends on the output of transport_write_message() just +above, which should be the result of the end_dot flag in tctx->options. */ dkim->dot_stuffed = !!(options & topt_end_dot); if (!(dkim_signature = dkim_exim_sign(dkim_fd, 0, NULL, dkim, &errstr)))