X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/cd8cb71deb2d653228cc037cf91ecab980acdcd0..4687a69c269ee3f2a7f0625e0147a503fd9d3d0b:/src/src/transports/smtp.c diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index 596a328c3..ed5994241 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -533,7 +533,7 @@ switch(*errno_value) case ERRNO_SMTPFORMAT: /* Handle malformed SMTP response */ s = string_printing(buffer); - while (isspace(*s)) s++; + Uskip_whitespace(&s); *message = *s == 0 ? string_sprintf("Malformed SMTP reply (an empty line) " "in response to %s%s", pl, smtp_command) @@ -815,8 +815,7 @@ uschar * match; if (regex_match(regex_LIMITS, sx->buffer, -1, &match)) for (const uschar * s = sx->buffer + Ustrlen(match); *s; ) { - while (isspace(*s)) s++; - if (*s == '\n') break; + if (Uskip_whitespace(&s) == '\n') break; if (strncmpic(s, US"MAILMAX=", 8) == 0) { @@ -1088,6 +1087,7 @@ if (pending_BANNER) /*XXX EXPERIMENTAL_ESMTP_LIMITS ? */ # ifndef DISABLE_TLS_RESUME + GET_OPTION("host_name_extract"); s = ((smtp_transport_options_block *)sx->conn_args.ob)->host_name_extract; if (!s) s = HNE_DEFAULT; ehlo_response_lbserver(sx, s); @@ -1693,8 +1693,8 @@ if ( sx->esmtp { DEBUG(D_transport) debug_printf("skipping %s authenticator: %s\n", au->name, - (au->client)? "client_condition is false" : - "not configured as a client"); + au->client ? "client_condition is false" + : "not configured as a client"); continue; } @@ -1702,15 +1702,14 @@ if ( sx->esmtp while (*p) { - int len = Ustrlen(au->public_name); - int rc; + int len = Ustrlen(au->public_name), rc; - while (isspace(*p)) p++; + Uskip_whitespace(&p); if (strncmpic(au->public_name, p, len) != 0 || - (p[len] != 0 && !isspace(p[len]))) + (p[len] && !isspace(p[len]))) { - while (*p != 0 && !isspace(*p)) p++; + while (*p && !isspace(*p)) p++; continue; } @@ -1769,6 +1768,7 @@ uschar * local_authenticated_sender = authenticated_sender; authenticated_sender, ob->authenticated_sender, f.smtp_authenticated?"Y":"N"); #endif +GET_OPTION("authenticated_sender"); if (ob->authenticated_sender) { uschar * new = expand_string(ob->authenticated_sender); @@ -2374,6 +2374,7 @@ PIPE_CONNECT_RETRY: For early-pipe, we are ok if binding to a local interface; otherwise (if $sending_ip_address is seen in helo_data) we disabled early-pipe above. */ + GET_OPTION("helo_data"); if (sx->helo_data) if (!(sx->helo_data = expand_string(sx->helo_data))) if (sx->verify) @@ -2501,6 +2502,7 @@ goto SEND_QUIT; an LB. Call this anyway, so that a dummy host_name_extract option value can force resumption attempts. */ + GET_OPTION("host_name_extract"); if (!(s = ob->host_name_extract)) s = US"never-LB"; ehlo_response_lbserver(sx, s); # endif @@ -2629,6 +2631,7 @@ goto SEND_QUIT; } #endif #ifndef DISABLE_TLS_RESUME + GET_OPTION("host_name_extract"); if (!(s = ob->host_name_extract)) s = HNE_DEFAULT; ehlo_response_lbserver(sx, s); #endif @@ -2837,13 +2840,17 @@ if (tls_out.active.sock >= 0) { uschar * greeting_cmd; - if (!sx->helo_data && !(sx->helo_data = expand_string(ob->helo_data))) + if (!sx->helo_data) { - uschar *message = string_sprintf("failed to expand helo_data: %s", - expand_string_message); - set_errno_nohost(sx->addrlist, ERRNO_EXPANDFAIL, message, DEFER, FALSE, &sx->delivery_start); - yield = DEFER; - goto SEND_QUIT; + GET_OPTION("helo_data"); + if (!(sx->helo_data = expand_string(ob->helo_data))) + { + uschar *message = string_sprintf("failed to expand helo_data: %s", + expand_string_message); + set_errno_nohost(sx->addrlist, ERRNO_EXPANDFAIL, message, DEFER, FALSE, &sx->delivery_start); + yield = DEFER; + goto SEND_QUIT; + } } #ifndef DISABLE_PIPE_CONNECT @@ -3094,6 +3101,7 @@ if (sx->addrlist->prop.utf8_msg) /* If the transport sets a downconversion mode it overrides any set by ACL for the message. */ + GET_OPTION("utf8_downconvert"); if ((s = ob->utf8_downconvert)) { if (!(s = expand_string(s))) @@ -5565,8 +5573,9 @@ retry_non_continued: host_af = Ustrchr(host->address, ':') ? AF_INET6 : AF_INET; { - uschar * s = ob->interface; - if (s && *s) + uschar * s; + GET_OPTION("interface"); + if ((s = ob->interface) && *s) { if (!smtp_get_interface(s, host_af, addrlist, &interface, tid)) return FALSE;