Found this the hard way by playing with the new filter API.

When sending a plaintext message, which has an '|' in the text it would
cut of the data at that point. The diff below pushes the parameter split
to after handling the filter-dataline.

Fixes my usecase.

OK?

martijn@

Index: lka_filter.c
===================================================================
RCS file: /cvs/src/usr.sbin/smtpd/lka_filter.c,v
retrieving revision 1.34
diff -u -p -r1.34 lka_filter.c
--- lka_filter.c        15 Jan 2019 04:49:50 -0000      1.34
+++ lka_filter.c        8 Apr 2019 06:20:26 -0000
@@ -458,14 +458,14 @@ lka_filter_process_response(const char *
                return 0;
 
        response = ep+1;
-       if ((ep = strchr(response, '|'))) {
-               parameter = ep + 1;
-               *ep = 0;
-       }
-
        if (strcmp(kind, "filter-dataline") == 0) {
                filter_data_next(token, reqid, response);
                return 1;
+       }
+
+       if ((ep = strchr(response, '|'))) {
+               parameter = ep + 1;
+               *ep = 0;
        }
 
        if (strcmp(response, "proceed") != 0 &&

Reply via email to