commit - bbde5ceaee75d67802c9e2018c23adcc292d75e8
commit + 6f50562c56f193791207499caae0a5f6da3e9a6e
blob - 4ab66caa6dbfaeaf85a4fc4f8d3086a46b1c69b4
blob + 96d943ce505fbd9c14b4c290260c7d42ca4db6ac
--- smtp_proc.c
+++ smtp_proc.c
};
static int ready = 0;
-static int resolved = 1;
int
smtp_register_filter_connect(void (*cb)(char *, int, struct timespec *, char *,
struct event stdinev;
printf("register|ready\n");
+ fflush(stdout);
ready = 1;
event_init();
if (fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK) == -1)
err(1, "fcntl");
-
event_dispatch();
}
{
enum filter_decision fdes;
- if (!resolved)
- errx(1, "Handling unexpected second request");
- resolved = 0;
fdes = cb->cb(cb->type, version, tm, cb->direction, cb->phase, reqid,
token, params);
- if (!resolved) {
- switch (fdes) {
- case FILTER_PROCEED:
- smtp_filter_proceed(reqid, token);
- break;
- case FILTER_REJECT:
- smtp_filter_reject(reqid, token, 451,
- "Rejected by filter");
- break;
- case FILTER_DISCONNECT:
- smtp_filter_disconnect(reqid, token,
- "Rejected by filter");
- break;
- case FILTER_REWRITE:
- errx(1, "Not sure what is intended here yet");
- }
+ switch (fdes) {
+ case FILTER_PROCEED:
+ smtp_filter_proceed(reqid, token);
+ break;
+ case FILTER_REJECT:
+ smtp_filter_reject(reqid, token, 451,
+ "Rejected by filter");
+ break;
+ case FILTER_DISCONNECT:
+ smtp_filter_disconnect(reqid, token,
+ "Rejected by filter");
+ break;
+ case FILTER_REWRITE:
+ errx(1, "Not sure what is intended here yet");
}
}
void
smtp_filter_proceed(uint64_t reqid, uint64_t token)
{
- if (resolved)
- errx(1, "reqid: %016"PRIx64" token: %016"PRIx64" already "
- "resolved", reqid, token);
printf("filter-result|%016"PRIx64"|%016"PRIx64"|proceed\n", token,
reqid);
- resolved = 1;
+ fflush(stdout);
}
void
{
va_list ap;
- if (resolved)
- errx(1, "reqid: %016"PRIx64" token: %016"PRIx64" already "
- "resolved", reqid, token);
if (code < 200 || code > 599)
errx(1, "Invalid reject code");
vprintf(reason, ap);
va_end(ap);
putchar('\n');
- resolved = 1;
+ fflush(stdout);
}
void
{
va_list ap;
- if (resolved)
- errx(1, "reqid: %016"PRIx64" token: %016"PRIx64" already "
- "resolved", reqid, token);
printf("filter-result|%016"PRIx64"|%016"PRIx64"|disconnect|421 ",
token, reqid);
va_start(ap, reason);
vprintf(reason, ap);
va_end(ap);
putchar('\n');
- resolved = 1;
+ fflush(stdout);
}
static int