*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2020 */
/* See the file NOTICE for conditions of use and distribution. */
{ "sieve_useraddress", opt_stringptr, LOFF(sieve_useraddress) },
{ "sieve_vacation_directory", opt_stringptr, LOFF(sieve_vacation_directory) },
{ "skip_syntax_errors", opt_bool, LOFF(skip_syntax_errors) },
-#ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS_ALT
{ "srs", opt_stringptr, LOFF(srs) },
{ "srs_alias", opt_stringptr, LOFF(srs_alias) },
{ "srs_condition", opt_stringptr, LOFF(srs_condition) },
NULL, /* qualify_domain */
NULL, /* owners */
NULL, /* owngroups */
-#ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS_ALT
NULL, /* srs */
NULL, /* srs_alias */
NULL, /* srs_condition */
int frc = 0;
int xrc = 0;
-addr_local = addr_local; /* Keep picky compilers happy */
-addr_remote = addr_remote;
-
/* Initialize the data to be propagated to the children */
addr_prop.address_data = deliver_address_data;
addr_prop.variables = NULL;
tree_dup((tree_node **)&addr_prop.variables, addr->prop.variables);
-#ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS_ALT
addr_prop.srs_sender = NULL;
#endif
#ifdef SUPPORT_I18N
ugid.gid_set = TRUE;
}
-#ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS_ALT
/* Perform SRS on recipient/return-path as required */
if(ob->srs != NULL)
addr->message = yield == FAIL ? US"forced rejection" : US"forced defer";
else
{
- int ovector[3];
- if (ob->forbid_smtp_code &&
- pcre_exec(regex_smtp_code, NULL, CS addr->message,
- Ustrlen(addr->message), 0, PCRE_EOPT,
- ovector, sizeof(ovector)/sizeof(int)) >= 0)
+ uschar * matched;
+ if ( ob->forbid_smtp_code
+ && regex_match(regex_smtp_code, addr->message, -1, &matched))
{
DEBUG(D_route) debug_printf("SMTP code at start of error message "
"is ignored because forbid_smtp_code is set\n");
- addr->message += ovector[1];
+ addr->message += Ustrlen(matched);
}
addr->user_message = addr->message;
setflag(addr, af_pass_message);