BUG/MINOR: http-ana: Properly detect client abort when forwarding the response
During the response payload forwarding, if the back SC is closed, we try to figure out if it is because of a client abort or a server abort. However, the condition was not accurrate, especially when abortonclose option is set. Because of this issue, a server abort may be reported (SD-- in logs) instead of a client abort (CD-- in logs). The right way to detect a client abort when we try to forward the response is to test if the back SC was shut down (SC_FL_SHUT_DOWN flag set) AND aborted (SC_FL_ABRT_DONE flag set). When these both flags are set, it means the back connection underwent the shutdown, which should be converted to a client abort at this stage. This patch should be backported as far as 2.8. It should fix last strange SD report in the issue #2749.
This commit is contained in:
parent
c291a5c73c
commit
c672b2a297
@ -2215,8 +2215,7 @@ int http_response_forward_body(struct stream *s, struct channel *res, int an_bit
|
||||
* server abort.
|
||||
*/
|
||||
if (msg->msg_state < HTTP_MSG_ENDING && (s->scb->flags & (SC_FL_EOS|SC_FL_ABRT_DONE))) {
|
||||
if ((s->scf->flags & SC_FL_ABRT_DONE) &&
|
||||
(s->scb->flags & SC_FL_SHUT_DONE))
|
||||
if ((s->scb->flags & (SC_FL_ABRT_DONE|SC_FL_SHUT_DONE)) == (SC_FL_ABRT_DONE|SC_FL_SHUT_DONE))
|
||||
goto return_cli_abort;
|
||||
/* If we have some pending data, we continue the processing */
|
||||
if (htx_is_empty(htx))
|
||||
|
Loading…
x
Reference in New Issue
Block a user