David B?rgin: > Wietse, > > On 14/01/2020 18:58, Wietse Venema wrote: > > smfi_setsymlist() is called by test_negotiate(): > > > > static sfsistat test_negotiate(SMFICTX *ctx, > > unsigned long f0, .. > > unsigned long *pf3) > > { > > if (set_macro_list) { > > if (verbose) > > printf("set symbol list %s to \"%s\"\n", > > macro_states[set_macro_state], set_macro_list); > > smfi_setsymlist(ctx, set_macro_state, set_macro_list); > > ... > > } > > the call to smfi_setsymlist is guarded by the flag set_macro_list. This > flag is enabled with the -M command-line option. However, that option is > never used, as far as I can see. Therefore, the code path is not taken.
To 'use' the -M command-line option: $ make test-milter $ ./test-milter -m state -M macros ... Where state is one of connect, helo, mail. etc. Where macros is a list of macros. Example: "{rcpt_mailer} {rcpt_host}". Here is the code that sets set_macro_list: case 'm': #if SMFI_VERSION > 5 if (set_macro_state_arg) { fprintf(stderr, "too many -m options\n"); exit(1); } set_macro_state_arg = optarg; #else fprintf(stderr, "no libmilter support to specify macro list\n"); exit(1); #endif break; case 'M': #if SMFI_VERSION > 5 if (set_macro_list) { fprintf(stderr, "too many -M options\n"); exit(1); } set_macro_list = optarg; #else fprintf(stderr, "no libmilter support to specify macro list\n"); #endif break; Wietse