BUG/MEDIUM: stream: always release the stream-interface on abort

The cache exhibited a but in process_stream() where upon abort it is
possible to switch the stream-int's state to SI_ST_CLO without calling
si_release_endpoint(), resulting in a possibly missing ->release() for
the applet.

It should affect all other applets as well (eg: lua, spoe, peers) and
should carefully be backported to stable branches after some observation
period.
This commit is contained in:
Willy Tarreau 2017-11-24 15:01:10 +01:00
parent ca6a957c5d
commit 0542c8b39a

View File

@ -2180,6 +2180,7 @@ struct task *process_stream(struct task *t)
}
}
else {
si_release_endpoint(si_b);
si_b->state = SI_ST_CLO; /* shutw+ini = abort */
channel_shutw_now(req); /* fix buffer flags upon abort */
channel_shutr_now(res);