join transport logic for DK and DKIM, making it possible to use both at the same...
[exim.git] / src / src / transports / smtp.c
index 3c09c91816aa6e9aa26d8f4f6989850068dd42d5..4e1f3c45b76e4de3e90d913db8f8c72a43f9859a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/smtp.c,v 1.38 2007/09/28 12:21:57 tom Exp $ */
+/* $Cambridge: exim/src/src/transports/smtp.c,v 1.39 2008/03/05 21:13:23 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -39,7 +39,7 @@ optionlist smtp_transport_options[] = {
       (void *)offsetof(smtp_transport_options_block, data_timeout) },
   { "delay_after_cutoff", opt_bool,
       (void *)offsetof(smtp_transport_options_block, delay_after_cutoff) },
-#ifdef EXPERIMENTAL_DOMAINKEYS
+  #if (defined EXPERIMENTAL_DOMAINKEYS) || (defined EXPERIMENTAL_DKIM)
   { "dk_canon", opt_stringptr,
       (void *)offsetof(smtp_transport_options_block, dk_canon) },
   { "dk_domain", opt_stringptr,
@@ -52,8 +52,6 @@ optionlist smtp_transport_options[] = {
       (void *)offsetof(smtp_transport_options_block, dk_selector) },
   { "dk_strict", opt_stringptr,
       (void *)offsetof(smtp_transport_options_block, dk_strict) },
-#endif
-#ifdef EXPERIMENTAL_DKIM
   { "dkim_canon", opt_stringptr,
       (void *)offsetof(smtp_transport_options_block, dkim_canon) },
   { "dkim_domain", opt_stringptr,
@@ -66,7 +64,7 @@ optionlist smtp_transport_options[] = {
       (void *)offsetof(smtp_transport_options_block, dkim_sign_headers) },
   { "dkim_strict", opt_stringptr,
       (void *)offsetof(smtp_transport_options_block, dkim_strict) },
-#endif
+  #endif
   { "dns_qualify_single",   opt_bool,
       (void *)offsetof(smtp_transport_options_block, dns_qualify_single) },
   { "dns_search_parents",   opt_bool,
@@ -209,15 +207,13 @@ smtp_transport_options_block smtp_transport_option_defaults = {
   NULL,                /* tls_verify_certificates */
   TRUE                 /* tls_tempfail_tryclear */
   #endif
-  #ifdef EXPERIMENTAL_DOMAINKEYS
+  #if (defined EXPERIMENTAL_DOMAINKEYS) || (defined EXPERIMENTAL_DKIM)
  ,NULL,                /* dk_canon */
   NULL,                /* dk_domain */
   NULL,                /* dk_headers */
   NULL,                /* dk_private_key */
   NULL,                /* dk_selector */
   NULL                 /* dk_strict */
-  #endif
-  #ifdef EXPERIMENTAL_DKIM
  ,NULL,                /* dkim_canon */
   NULL,                /* dkim_domain */
   NULL,                /* dkim_private_key */
@@ -1595,40 +1591,24 @@ if (!ok) ok = TRUE; else
   DEBUG(D_transport|D_v)
     debug_printf("  SMTP>> writing message and terminating \".\"\n");
   transport_count = 0;
-#ifdef EXPERIMENTAL_DOMAINKEYS
-  if ( (ob->dk_private_key != NULL) && (ob->dk_selector != NULL) )
-    ok = dk_transport_write_message(addrlist, inblock.sock,
-      topt_use_crlf | topt_end_dot | topt_escape_headers |
-        (tblock->body_only? topt_no_headers : 0) |
-        (tblock->headers_only? topt_no_body : 0) |
-        (tblock->return_path_add? topt_add_return_path : 0) |
-        (tblock->delivery_date_add? topt_add_delivery_date : 0) |
-        (tblock->envelope_to_add? topt_add_envelope_to : 0),
-      0,            /* No size limit */
-      tblock->add_headers, tblock->remove_headers,
-      US".", US"..",    /* Escaping strings */
-      tblock->rewrite_rules, tblock->rewrite_existflags,
-      ob->dk_private_key, ob->dk_domain, ob->dk_selector,
-      ob->dk_canon, ob->dk_headers, ob->dk_strict);
-  else
-#endif
-#ifdef EXPERIMENTAL_DKIM
-  if ( (ob->dkim_private_key != NULL) && (ob->dkim_domain != NULL) && (ob->dkim_selector != NULL) )
-    ok = dkim_transport_write_message(addrlist, inblock.sock,
-      topt_use_crlf | topt_end_dot | topt_escape_headers |
-        (tblock->body_only? topt_no_headers : 0) |
-        (tblock->headers_only? topt_no_body : 0) |
-        (tblock->return_path_add? topt_add_return_path : 0) |
-        (tblock->delivery_date_add? topt_add_delivery_date : 0) |
-        (tblock->envelope_to_add? topt_add_envelope_to : 0),
-      0,            /* No size limit */
-      tblock->add_headers, tblock->remove_headers,
-      US".", US"..",    /* Escaping strings */
-      tblock->rewrite_rules, tblock->rewrite_existflags,
-      ob->dkim_private_key, ob->dkim_domain, ob->dkim_selector,
-      ob->dkim_canon, ob->dkim_strict, ob->dkim_sign_headers);
-  else
-#endif
+#if (defined EXPERIMENTAL_DOMAINKEYS) || (defined EXPERIMENTAL_DKIM)
+  ok = dkim_transport_write_message(addrlist, inblock.sock,
+    topt_use_crlf | topt_end_dot | topt_escape_headers |
+      (tblock->body_only? topt_no_headers : 0) |
+      (tblock->headers_only? topt_no_body : 0) |
+      (tblock->return_path_add? topt_add_return_path : 0) |
+      (tblock->delivery_date_add? topt_add_delivery_date : 0) |
+      (tblock->envelope_to_add? topt_add_envelope_to : 0),
+    0,            /* No size limit */
+    tblock->add_headers, tblock->remove_headers,
+    US".", US"..",    /* Escaping strings */
+    tblock->rewrite_rules, tblock->rewrite_existflags,
+    ob->dkim_private_key, ob->dkim_domain, ob->dkim_selector,
+    ob->dkim_canon, ob->dkim_strict, ob->dkim_sign_headers,
+    ob->dk_private_key, ob->dk_domain, ob->dk_selector,
+    ob->dk_canon, ob->dk_headers, ob->dk_strict
+    );
+#else
   ok = transport_write_message(addrlist, inblock.sock,
     topt_use_crlf | topt_end_dot | topt_escape_headers |
       (tblock->body_only? topt_no_headers : 0) |
@@ -1640,6 +1620,7 @@ if (!ok) ok = TRUE; else
     tblock->add_headers, tblock->remove_headers,
     US".", US"..",    /* Escaping strings */
     tblock->rewrite_rules, tblock->rewrite_existflags);
+#endif
 
   /* transport_write_message() uses write() because it is called from other
   places to write to non-sockets. This means that under some OS (e.g. Solaris)