diff --git a/src/frontend.c b/src/frontend.c index 4ef39d06c..a4941d3a5 100644 --- a/src/frontend.c +++ b/src/frontend.c @@ -48,8 +48,7 @@ /* Finish a stream accept() for a proxy (TCP or HTTP). It returns a negative * value in case of a critical failure which must cause the listener to be - * disabled, a positive value in case of success, or zero if it is a success - * but the stream must be closed ASAP (eg: monitoring). It only supports + * disabled, a positive or null value in case of success. It only supports * streams with a connection in si[0]. */ int frontend_accept(struct stream *s) diff --git a/src/stream.c b/src/stream.c index 256b28341..1bcd2eb90 100644 --- a/src/stream.c +++ b/src/stream.c @@ -213,16 +213,8 @@ int stream_accept_session(struct session *sess, struct task *t) else if (appctx) s->si[0].flags |= SI_FL_WAIT_DATA; - /* FIXME: we shouldn't restrict ourselves to connections but for now - * the only ->accept() only works with sessions. - */ - if (conn && p->accept && (ret = p->accept(s)) <= 0) { - /* Either we had an unrecoverable error (<0) or work is - * finished (=0, eg: monitoring), in both situations, - * we can release everything and close. - */ - goto out_free_strm; - } + if (conn && p->accept && p->accept(s) < 0) + goto out_fail_accept; if (conn) { /* if logs require transport layer information, note it on the connection */ @@ -241,7 +233,7 @@ int stream_accept_session(struct session *sess, struct task *t) return 1; /* Error unrolling */ - out_free_strm: + out_fail_accept: LIST_DEL(&s->list); pool_free2(pool2_stream, s); out_return: