BUG/MINOR: mux: do not call conn_xprt_stop_recv() on buffer shortage

In H1/H2/FCGI, the *_get_buf() functions try to disable receipt of data
when there's no buffer available. But they do so at the lowest possible
level, which is unrelated to the upper transport layers which may still
be trying to feed data based on subscription. The correct approach here
would theorically be to only disable subscription, though when we get
there, the subscription will already have been dropped, so we can safely
just remove that call.

It's unlikely that this could have had any practical impact, as the upper
xprt layer would call this callback which would fail an not resubscribe.
Having the lowest layer disabled would just be temporary since when
re-enabling reading, a subscribe at the end of data would re-enable it.

Backport should not harm but seems useless at this point.
This commit is contained in:
Willy Tarreau 2020-02-21 09:44:39 +01:00
parent 9d9d645409
commit d57e34978d
3 changed files with 0 additions and 3 deletions

View File

@ -608,7 +608,6 @@ static inline struct buffer *fcgi_get_buf(struct fcgi_conn *fconn, struct buffer
HA_SPIN_LOCK(BUF_WQ_LOCK, &buffer_wq_lock);
LIST_ADDQ(&buffer_wq, &fconn->buf_wait.list);
HA_SPIN_UNLOCK(BUF_WQ_LOCK, &buffer_wq_lock);
__conn_xprt_stop_recv(fconn->conn);
}
return buf;
}

View File

@ -422,7 +422,6 @@ static inline struct buffer *h1_get_buf(struct h1c *h1c, struct buffer *bptr)
HA_SPIN_LOCK(BUF_WQ_LOCK, &buffer_wq_lock);
LIST_ADDQ(&buffer_wq, &h1c->buf_wait.list);
HA_SPIN_UNLOCK(BUF_WQ_LOCK, &buffer_wq_lock);
__conn_xprt_stop_recv(h1c->conn);
}
return buf;
}

View File

@ -686,7 +686,6 @@ static inline struct buffer *h2_get_buf(struct h2c *h2c, struct buffer *bptr)
HA_SPIN_LOCK(BUF_WQ_LOCK, &buffer_wq_lock);
LIST_ADDQ(&buffer_wq, &h2c->buf_wait.list);
HA_SPIN_UNLOCK(BUF_WQ_LOCK, &buffer_wq_lock);
__conn_xprt_stop_recv(h2c->conn);
}
return buf;
}