git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
constify
[exim.git]
/
src
/
src
/
dkim_transport.c
diff --git
a/src/src/dkim_transport.c
b/src/src/dkim_transport.c
index c35ba1eff1c2059e821202b4b214619d3a705dcb..c09c5059b871e5477204ababd9202a4b650f363b 100644
(file)
--- a/
src/src/dkim_transport.c
+++ b/
src/src/dkim_transport.c
@@
-21,8
+21,8
@@
if (dkim->dkim_strict)
uschar * dkim_strict_result = expand_string(dkim->dkim_strict);
if (dkim_strict_result)
uschar * dkim_strict_result = expand_string(dkim->dkim_strict);
if (dkim_strict_result)
- if (
(strcmpic(dkim->dkim_strict, US"1") == 0) ||
-
(strcmpic(dkim->dkim_strict, US"true") == 0)
)
+ if (
strcmpic(dkim_strict_result, US"1") == 0
+
|| strcmpic(dkim_strict_result, US"true") == 0
)
{
/* Set errno to something halfway meaningful */
*errp = EACCES;
{
/* Set errno to something halfway meaningful */
*errp = EACCES;
@@
-56,7
+56,7
@@
DEBUG(D_transport) debug_printf("send file fd=%d\n", out_fd);
to the socket. However only if we don't use TLS,
as then there's another layer of indirection
before the data finally hits the socket. */
to the socket. However only if we don't use TLS,
as then there's another layer of indirection
before the data finally hits the socket. */
-if (tls_out.active != out_fd)
+if (tls_out.active
.sock
!= out_fd)
{
ssize_t copied = 0;
{
ssize_t copied = 0;
@@
-83,9
+83,9
@@
else
while (sread)
{
while (sread)
{
-#if
def SUPPORT
_TLS
- wwritten = tls_out.active == out_fd
- ? tls_write(
FALSE
, p, sread, FALSE)
+#if
ndef DISABLE
_TLS
+ wwritten = tls_out.active
.sock
== out_fd
+ ? tls_write(
tls_out.active.tls_ctx
, p, sread, FALSE)
: write(out_fd, CS p, sread);
#else
wwritten = write(out_fd, CS p, sread);
: write(out_fd, CS p, sread);
#else
wwritten = write(out_fd, CS p, sread);
@@
-124,7
+124,7
@@
dkt_direct(transport_ctx * tctx, struct ob_dkim * dkim,
{
int save_fd = tctx->u.fd;
int save_options = tctx->options;
{
int save_fd = tctx->u.fd;
int save_options = tctx->options;
-BOOL save_wireformat = spool_file_wireformat;
+BOOL save_wireformat =
f.
spool_file_wireformat;
uschar * hdrs;
gstring * dkim_signature;
int hsize;
uschar * hdrs;
gstring * dkim_signature;
int hsize;
@@
-154,7
+154,10
@@
if (!rc) return FALSE;
arc_sign_init();
#endif
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 = f.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)))
if (!(dkim_signature = dkim_exim_sign(deliver_datafile, SPOOL_DATA_START_OFFSET,
hdrs, dkim, &errstr)))
if (!(rc = dkt_sign_fail(dkim, &errno)))
@@
-183,7
+186,7
@@
having already been done - but we have to say we want CRLF output format, and
temporarily set the marker for possible already-CRLF input. */
tctx->options &= ~topt_escape_headers;
temporarily set the marker for possible already-CRLF input. */
tctx->options &= ~topt_escape_headers;
-spool_file_wireformat = TRUE;
+
f.
spool_file_wireformat = TRUE;
transport_write_reset(0);
if ( ( dkim_signature
&& dkim_signature->ptr > 0
transport_write_reset(0);
if ( ( dkim_signature
&& dkim_signature->ptr > 0
@@
-193,7
+196,7
@@
if ( ( dkim_signature
)
return FALSE;
)
return FALSE;
-spool_file_wireformat = save_wireformat;
+
f.
spool_file_wireformat = save_wireformat;
tctx->options = save_options | topt_no_headers | topt_continuation;
if (!(transport_write_message(tctx, 0)))
tctx->options = save_options | topt_no_headers | topt_continuation;
if (!(transport_write_message(tctx, 0)))
@@
-272,7
+275,9
@@
if (!rc)
arc_sign_init();
#endif
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)))
dkim->dot_stuffed = !!(options & topt_end_dot);
if (!(dkim_signature = dkim_exim_sign(dkim_fd, 0, NULL, dkim, &errstr)))