MINOR: stream-int: don't needlessly call si_cs_send() in si_cs_process()

There's a call there to si_cs_send() while we're supposed to come from
si_cs_io_cb() which has just done it. But in fact we can also come here
as a lower layer callback from ->wake() after a connection is established.
Since most of the time we'll end up here with either no data in the buffer
or a blocked output, let's simply check if we're already susbcribed to send
events before calling si_cs_send().
This commit is contained in:
Willy Tarreau 2018-10-25 14:02:47 +02:00
parent 0dfccb20f5
commit 908d26fd03

View File

@ -568,8 +568,9 @@ static int si_cs_process(struct conn_stream *cs)
int wait_room = si->flags & SI_FL_WAIT_ROOM;
/* If we have data to send, try it now */
if (!channel_is_empty(oc) && objt_cs(si->end))
si_cs_send(objt_cs(si->end));
if (!channel_is_empty(oc) && !(si->wait_event.wait_reason & SUB_CAN_SEND))
si_cs_send(cs);
/* First step, report to the stream-int what was detected at the
* connection layer : errors and connection establishment.
*/