mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-23 23:01:24 +02:00
Implement a basic state machine to represent stream lifecycle. By default a stream is idle. It is marked as open when sending or receiving the first data on a stream. Bidirectional streams has two states to represent the closing on both receive and send channels. This distinction does not exists for unidirectional streams which passed automatically from open to close state. This patch is mostly internal and has a limited visible impact. Some behaviors are slightly updated : * closed streams are garbage collected at the start of io handler * send operation is interrupted if a stream is close locally Outside of this, there is no functional change. However, some additional BUG_ON guards are implemented to ensure that we do not conduct invalid operation on a stream. This should strengthen the code safety. Also, stream states are displayed on trace which should help debugging.