From ede3ee2463d83970e4283f10c30af969fada9182 Mon Sep 17 00:00:00 2001 From: Eric Faurot Date: Fri, 29 Jan 2016 08:06:28 +0000 Subject: Remove the query queueing mechanism. It's useless since pipelining is not supported anyway. ok sunil@ gilles@ --- usr.sbin/smtpd/filter.c | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/usr.sbin/smtpd/filter.c b/usr.sbin/smtpd/filter.c index 4e97923f6bb..80fd6d8c765 100644 --- a/usr.sbin/smtpd/filter.c +++ b/usr.sbin/smtpd/filter.c @@ -1,4 +1,4 @@ -/* $OpenBSD: filter.c,v 1.12 2016/01/28 09:03:35 eric Exp $ */ +/* $OpenBSD: filter.c,v 1.13 2016/01/29 08:06:27 eric Exp $ */ /* * Copyright (c) 2011 Gilles Chehade @@ -43,7 +43,6 @@ enum { QUERY_READY, - QUERY_WAITING, QUERY_RUNNING, QUERY_DONE }; @@ -85,7 +84,6 @@ struct filter_query { uint64_t qid; int type; struct filter_session *session; - TAILQ_ENTRY(filter_query) entry; int state; int hasrun; @@ -437,7 +435,6 @@ filter_query(struct filter_session *s, int type) q->qid = generate_uid(); q->session = s; q->type = type; - TAILQ_INSERT_TAIL(&s->queries, q, entry); q->state = QUERY_READY; q->current = TAILQ_FIRST(s->filters); @@ -451,8 +448,6 @@ filter_query(struct filter_session *s, int type) static void filter_drain_query(struct filter_query *q) { - struct filter_query *prev; - log_trace(TRACE_FILTERS, "filter: filter_drain_query %s", filter_query_to_text(q)); @@ -475,19 +470,6 @@ filter_drain_query(struct filter_query *q) return; } - /* - * Do not move forward if the query ahead of us is - * waiting on this filter. - */ - prev = TAILQ_PREV(q, filter_query_lst, entry); - if (prev && prev->current == q->current) { - q->state = QUERY_WAITING; - log_trace(TRACE_FILTERS, - "filter: query blocked by previous query" - "%s", filter_query_to_text(prev)); - return; - } - q->current = TAILQ_NEXT(q->current, entry); q->hasrun = 0; } @@ -585,7 +567,6 @@ filter_end_query(struct filter_query *q) free(q->smtp.response); done: - TAILQ_REMOVE(&s->queries, q, entry); free(q); } @@ -594,7 +575,7 @@ filter_imsg(struct mproc *p, struct imsg *imsg) { struct filter_proc *proc = p->data; struct filter_session *s; - struct filter_query *q, *next; + struct filter_query *q; struct msg m; const char *line; uint64_t qid; @@ -666,15 +647,7 @@ filter_imsg(struct mproc *p, struct imsg *imsg) if (type == QUERY_EOM) q->u.datalen = datalen; - next = TAILQ_NEXT(q, entry); filter_drain_query(q); - - /* - * If there is another query after this one which is waiting, - * make it move forward. - */ - if (next && next->state == QUERY_WAITING) - filter_drain_query(next); break; case IMSG_FILTER_PIPE: -- cgit v1.2.3