Cleanup (prevent repeated use of -p/-oMr to avoid mem leak)
[exim.git] / src / src / smtp_in.c
index 5ff1b7f32d7e9cf50e3fad89431e90d69534ef7f..0ffa2193946fb87dbc931647d44f6a3ec2194e82 100644 (file)
@@ -4230,26 +4230,34 @@ while (done <= 0)
        auth_instance *au;
        BOOL first = TRUE;
        for (au = auths; au; au = au->next)
-         if (au->server && (au->advertise_condition == NULL ||
-             expand_check_condition(au->advertise_condition, au->name,
-             US"authenticator")))
+         {
+         au->advertised = FALSE;
+         if (au->server)
            {
-           int saveptr;
-           if (first)
+           DEBUG(D_auth+D_expand) debug_printf_indent(
+             "Evaluating advertise_condition for %s athenticator\n",
+             au->public_name);
+           if (  !au->advertise_condition
+              || expand_check_condition(au->advertise_condition, au->name,
+                     US"authenticator")
+              )
              {
-             s = string_catn(s, &size, &ptr, smtp_code, 3);
-             s = string_catn(s, &size, &ptr, US"-AUTH", 5);
-             first = FALSE;
-             auth_advertised = TRUE;
+             int saveptr;
+             if (first)
+               {
+               s = string_catn(s, &size, &ptr, smtp_code, 3);
+               s = string_catn(s, &size, &ptr, US"-AUTH", 5);
+               first = FALSE;
+               auth_advertised = TRUE;
+               }
+             saveptr = ptr;
+             s = string_catn(s, &size, &ptr, US" ", 1);
+             s = string_cat (s, &size, &ptr, au->public_name);
+             while (++saveptr < ptr) s[saveptr] = toupper(s[saveptr]);
+             au->advertised = TRUE;
              }
-           saveptr = ptr;
-           s = string_catn(s, &size, &ptr, US" ", 1);
-           s = string_cat (s, &size, &ptr, au->public_name);
-           while (++saveptr < ptr) s[saveptr] = toupper(s[saveptr]);
-           au->advertised = TRUE;
            }
-         else
-           au->advertised = FALSE;
+         }
 
        if (!first) s = string_catn(s, &size, &ptr, US"\r\n", 2);
        }