Since commit
d7ad9f5 ("MAJOR: channel: add a new flag CF_WAKE_WRITE to
notify the task of writes"), we got another bug with 100-continue responses.
If the final response comes in the same packet as the 100, then the rest of
the buffer is not processed since there is no wake-up event.
In fact the change above uncoverred the real culprit which is more
likely session.c which should detect that an earlier analyser was set
and should loop back to it.
A cleaner fix would be better, but setting the flag works fine.
This issue was introduced in 1.5-dev22, no backport is needed.
txn->status = 0;
t->logs.t_data = -1; /* was not a response yet */
rep->analysers |= AN_RES_WAIT_HTTP | an_bit;
+ rep->flags |= CF_WAKE_WRITE;
return 1;
}
else if (unlikely(txn->status < 200))