Merge branch '4.next'
[exim.git] / src / src / transport.c
index 6caeeecc9775b383d265a0d11751537d58c3d074..a2da32159fe93f9982b2556e31d5aeabee0ee8c8 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2016 */
+/* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 /* General functions concerned with transportation, and generic options for all
@@ -90,7 +90,7 @@ int optionlist_transports_size = nelem(optionlist_transports);
 
 #ifdef MACRO_PREDEF
 
-# include "predef.h"
+# include "macro_predef.h"
 
 void
 options_transports(void)
@@ -245,7 +245,8 @@ for (i = 0; i < 100; i++)
        tls_out.active == fd ? tls_write(FALSE, block, len, more) :
 #endif
 #ifdef MSG_MORE
-       more ? send(fd, block, len, MSG_MORE) :
+       more && !(tctx->options & topt_not_socket)
+         ? send(fd, block, len, MSG_MORE) :
 #endif
        write(fd, block, len);
     save_errno = errno;
@@ -262,7 +263,8 @@ for (i = 0; i < 100; i++)
        tls_out.active == fd ? tls_write(FALSE, block, len, more) :
 #endif
 #ifdef MSG_MORE
-       more ? send(fd, block, len, MSG_MORE) :
+       more && !(tctx->options & topt_not_socket)
+         ? send(fd, block, len, MSG_MORE) :
 #endif
        write(fd, block, len);
 
@@ -1130,9 +1132,10 @@ if (!(tctx->options & topt_no_body))
   if (len != 0) return FALSE;
   }
 
-/* Finished with the check string */
+/* Finished with the check string, and spool-format consideration */
 
 nl_check_length = nl_escape_length = 0;
+spool_file_wireformat = FALSE;
 
 /* If requested, add a terminating "." line (SMTP output). */
 
@@ -1399,6 +1402,7 @@ filter was not NL, insert a NL to make the SMTP protocol work. */
 if (yield)
   {
   nl_check_length = nl_escape_length = 0;
+  spool_file_wireformat = FALSE;
   if (  tctx->options & topt_end_dot
      && ( last_filter_was_NL
         ? !write_chunk(tctx, US".\n", 2)