]> git.netwichtig.de Git - user/henk/code/exim.git/blobdiff - src/src/acl.c
Do not use the A lookup following an AAAA for setting the FQDN. Bug 1588
[user/henk/code/exim.git] / src / src / acl.c
index c1402a0ffe5c04c436071d77500d89d8678221ad..b42492d88c4b828b05b3b67e3d89e60690b7dc4b 100644 (file)
@@ -3399,15 +3399,38 @@ for (; cb != NULL; cb = cb->next)
        case CONTROL_UTF8_DOWNCONVERT:
        if (*p == '/')
          {
-         if (p[1] == '1') { message_utf8_downconvert = 1; p += 2; break; }
-         if (p[1] == '0') { message_utf8_downconvert = 0; p += 2; break; }
+         if (p[1] == '1')
+           {
+           message_utf8_downconvert = 1;
+           addr->prop.utf8_downcvt = TRUE;
+           addr->prop.utf8_downcvt_maybe = FALSE;
+           p += 2;
+           break;
+           }
+         if (p[1] == '0')
+           {
+           message_utf8_downconvert = 0;
+           addr->prop.utf8_downcvt = FALSE;
+           addr->prop.utf8_downcvt_maybe = FALSE;
+           p += 2;
+           break;
+           }
          if (p[1] == '-' && p[2] == '1')
-                          { message_utf8_downconvert = -1; p += 3; break; }
+           {
+           message_utf8_downconvert = -1;
+           addr->prop.utf8_downcvt = FALSE;
+           addr->prop.utf8_downcvt_maybe = TRUE;
+           p += 3;
+           break;
+           }
          *log_msgptr = US"bad option value for control=utf8_downconvert";
          }
        else
          {
-         message_utf8_downconvert = 1; break;
+         message_utf8_downconvert = 1;
+         addr->prop.utf8_downcvt = TRUE;
+         addr->prop.utf8_downcvt_maybe = FALSE;
+         break;
          }
        return ERROR;
     #endif
@@ -3559,7 +3582,8 @@ for (; cb != NULL; cb = cb->next)
     rc = verify_check_this_host(&arg, sender_host_cache, NULL,
       (sender_host_address == NULL)? US"" : sender_host_address,
       CUSS &host_data);
-    if (host_data != NULL) host_data = string_copy_malloc(host_data);
+    if (rc == DEFER) *log_msgptr = search_error_message;
+    if (host_data) host_data = string_copy_malloc(host_data);
     break;
 
     case ACLC_LOCAL_PARTS:
@@ -3574,8 +3598,7 @@ for (; cb != NULL; cb = cb->next)
       int sep = 0;
       const uschar *s = arg;
       uschar *ss;
-      while ((ss = string_nextinlist(&s, &sep, big_buffer, big_buffer_size))
-              != NULL)
+      while ((ss = string_nextinlist(&s, &sep, big_buffer, big_buffer_size)))
         {
         if (Ustrcmp(ss, "main") == 0) logbits |= LOG_MAIN;
         else if (Ustrcmp(ss, "panic") == 0) logbits |= LOG_PANIC;