mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-20 21:31:28 +02:00
[MEDIUM] session: don't resync FSMs on non-interesting changes
While processing the session, we used to resync the FSMs when buffer flags changed. But since BF_KERN_SPLICING and BF_READ_DONTWAIT were introduced, sometimes we could resync after they were set, which is not what we want. This was because there were some old checks left which did not mask changes with BF_MASK_STATIC before checking.
This commit is contained in:
parent
1b194fe03e
commit
06bea94266
@ -805,7 +805,7 @@ struct task *uxst_process_session(struct task *t)
|
|||||||
}
|
}
|
||||||
s->req->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
s->req->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
if (s->req->flags != flags)
|
if ((s->req->flags ^ flags) & BF_MASK_STATIC)
|
||||||
resync = 1;
|
resync = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -891,7 +891,7 @@ struct task *uxst_process_session(struct task *t)
|
|||||||
}
|
}
|
||||||
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
if (s->rep->flags != flags)
|
if ((s->rep->flags ^ flags) & BF_MASK_STATIC)
|
||||||
resync = 1;
|
resync = 1;
|
||||||
}
|
}
|
||||||
else if ((s->rep->flags & BF_MASK_ANALYSER) ||
|
else if ((s->rep->flags & BF_MASK_ANALYSER) ||
|
||||||
@ -904,7 +904,7 @@ struct task *uxst_process_session(struct task *t)
|
|||||||
}
|
}
|
||||||
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
if (s->rep->flags != flags)
|
if ((s->rep->flags ^ flags) & BF_MASK_STATIC)
|
||||||
resync = 1;
|
resync = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -778,7 +778,7 @@ resync_stream_interface:
|
|||||||
|
|
||||||
s->req->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
s->req->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
if (s->req->flags != flags)
|
if ((s->req->flags ^ flags) & BF_MASK_STATIC)
|
||||||
resync = 1;
|
resync = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -925,7 +925,7 @@ resync_stream_interface:
|
|||||||
}
|
}
|
||||||
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
if (s->rep->flags != flags)
|
if ((s->rep->flags ^ flags) & BF_MASK_STATIC)
|
||||||
resync = 1;
|
resync = 1;
|
||||||
}
|
}
|
||||||
else if ((s->rep->flags & BF_MASK_ANALYSER) ||
|
else if ((s->rep->flags & BF_MASK_ANALYSER) ||
|
||||||
@ -956,7 +956,7 @@ resync_stream_interface:
|
|||||||
|
|
||||||
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
s->rep->flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
flags &= BF_CLEAR_READ & BF_CLEAR_WRITE & BF_CLEAR_TIMEOUT;
|
||||||
if (s->rep->flags != flags)
|
if ((s->rep->flags ^ flags) & BF_MASK_STATIC)
|
||||||
resync = 1;
|
resync = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user