/* 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)
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 */
return 1;
/* Error unrolling */
- out_free_strm:
+ out_fail_accept:
LIST_DEL(&s->list);
pool_free2(pool2_stream, s);
out_return: