*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2020 */
/* See the file NOTICE for conditions of use and distribution. */
/* Functions concerned with verifying things. The original code for callout
Arguments:
vaddr contains the address to verify; the next field in this block
must be NULL
- f if not NULL, write the result to this file
+ fp if not NULL, write the result to this file
options various option bits:
vopt_fake_sender => this sender verify is not for the real
sender (it was verify=sender=xxxx or an address from a
BOOL success_on_redirect = (options & vopt_success_on_redirect) != 0;
int i;
int yield = OK;
-int verify_type = expn? v_expn :
- f.address_test_mode? v_none :
- options & vopt_is_recipient? v_recipient : v_sender;
+int verify_type = expn ? v_expn :
+ f.address_test_mode ? v_none :
+ options & vopt_is_recipient ? v_recipient : v_sender;
address_item *addr_list;
address_item *addr_new = NULL;
address_item *addr_remote = NULL;
addr_list = addr->next;
fprintf(fp, "%s", CS addr->address);
-#ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS_ALT
if(addr->prop.srs_sender)
fprintf(fp, " [srs = %s]", addr->prop.srs_sender);
#endif
return ERROR;
}
-/* See if there is a semicolon in the pattern */
+/* See if there is a semicolon in the pattern, separating a searchtype
+prefix. If there is one then check for comma-sep options. */
if ((semicolon = Ustrchr(ss, ';')))
- endname = (opts = Ustrchr(ss, ',')) ? opts : semicolon;
-if (opts)
- {
- opts++;
- opts = string_copyn(opts, semicolon - opts);
- }
+ if ((opts = Ustrchr(ss, ',')) && opts < semicolon)
+ {
+ endname = opts++;
+ opts = string_copyn(opts, semicolon - opts);
+ }
+ else
+ {
+ endname = semicolon;
+ opts = NULL;
+ }
/* If we are doing an IP address only match, then all lookups must be IP
address lookups, even if there is no "net-". */