BUG/MEDIUM: proxy: do not dereference strm_li(stream)

Some streams do not have a listener (eg: Lua's cosockets) so
let's check for this. For now this problem cannot happen but
it's definitely unsafe.
This commit is contained in:
Willy Tarreau 2015-09-23 12:20:10 +02:00
parent c29d0cda4b
commit b746329dc3

View File

@ -1141,7 +1141,9 @@ int stream_set_backend(struct stream *s, struct proxy *be)
* be more reliable to store the list of analysers that have been run, * be more reliable to store the list of analysers that have been run,
* but what we do here is OK for now. * but what we do here is OK for now.
*/ */
s->req.analysers |= be->be_req_ana & ~strm_li(s)->analysers; s->req.analysers |= be->be_req_ana;
if (strm_li(s))
s->req.analysers &= ~strm_li(s)->analysers;
/* If the target backend requires HTTP processing, we have to allocate /* If the target backend requires HTTP processing, we have to allocate
* the HTTP transaction and hdr_idx if we did not have one. * the HTTP transaction and hdr_idx if we did not have one.