[BUG] do not re-arm read timeout after writing data
A second occurrence of read-timeout rearming was present in stream_sock.c.
To fix the problem, it was necessary to put the shutdown information in
the buffer (already planned).
diff --git a/include/proto/buffers.h b/include/proto/buffers.h
index 74efe8f..95d63a5 100644
--- a/include/proto/buffers.h
+++ b/include/proto/buffers.h
@@ -28,6 +28,8 @@
#include <common/config.h>
#include <common/memory.h>
+#include <common/time.h>
+
#include <types/buffers.h>
extern struct pool_head *pool2_buffer;
@@ -63,6 +65,20 @@
buf->l = 0;
}
+/* marks the buffer as "shutdown pending" for reads and cancels the timeout */
+static inline void buffer_shutr(struct buffer *buf)
+{
+ tv_eternity(&buf->rex);
+ buf->flags |= BF_SHUTR_PENDING;
+}
+
+/* marks the buffer as "shutdown pending" for writes and cancels the timeout */
+static inline void buffer_shutw(struct buffer *buf)
+{
+ tv_eternity(&buf->wex);
+ buf->flags |= BF_SHUTW_PENDING;
+}
+
/* returns the maximum number of bytes writable at once in this buffer */
static inline int buffer_max(const struct buffer *buf)
diff --git a/include/types/buffers.h b/include/types/buffers.h
index 09d1e34..a79641d 100644
--- a/include/types/buffers.h
+++ b/include/types/buffers.h
@@ -33,8 +33,11 @@
*/
#define BF_SHUTR_PENDING 1
#define BF_SHUTR_DONE 2
+#define BF_SHUTR_STATUS (BF_SHUTR_PENDING|BF_SHUTR_DONE)
+
#define BF_SHUTW_PENDING 4
#define BF_SHUTW_DONE 8
+#define BF_SHUTW_STATUS (BF_SHUTW_PENDING|BF_SHUTW_DONE)
#define BF_PARTIAL_READ 16
#define BF_COMPLETE_READ 32