diff --git a/tcp_buf.c b/tcp_buf.c index a975a55..8c15101 100644 --- a/tcp_buf.c +++ b/tcp_buf.c @@ -359,6 +359,9 @@ int tcp_buf_data_from_sock(const struct ctx *c, struct tcp_tap_conn *conn) return -errno; } + if (already_sent) /* No new data and EAGAIN: set EPOLLET */ + conn_flag(c, conn, STALLED); + return 0; } diff --git a/tcp_vu.c b/tcp_vu.c index 10e17d3..8256f53 100644 --- a/tcp_vu.c +++ b/tcp_vu.c @@ -399,6 +399,10 @@ int tcp_vu_data_from_sock(const struct ctx *c, struct tcp_tap_conn *conn) tcp_rst(c, conn); return len; } + + if (already_sent) /* No new data and EAGAIN: set EPOLLET */ + conn_flag(c, conn, STALLED); + return 0; }