From: Willy Tarreau Date: Thu, 25 Oct 2018 08:21:41 +0000 (+0200) Subject: MEDIUM: stream-int: replace channel_alloc_buffer() with si_alloc_ibuf() everywhere X-Git-Tag: v1.9-dev5~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=581abd3f9923387882be97652843cb309396e123;p=thirdparty%2Fhaproxy.git MEDIUM: stream-int: replace channel_alloc_buffer() with si_alloc_ibuf() everywhere Well that's only 3 places (applet.c, stream_interface.c, hlua.c). This ensures we always clear SI_FL_WAIT_ROOM before setting it on failure, so that it is granted that SI_FL_WAIT_ROOM always indicates a lack of room for doing an operation, including the inability to allocate a buffer for this. --- diff --git a/src/applet.c b/src/applet.c index d7fbb53eb6..6911ab4a9e 100644 --- a/src/applet.c +++ b/src/applet.c @@ -36,7 +36,7 @@ struct task *task_run_applet(struct task *t, void *context, unsigned short state * applet in all cases. So this is the applet responsibility to * check if this buffer was allocated or not. This let a chance * for applets to do some other processing if needed. */ - if (!channel_alloc_buffer(si_ic(si), &app->buffer_wait)) + if (!si_alloc_ibuf(si, &app->buffer_wait)) si_applet_cant_put(si); /* We always pretend the applet can't get and doesn't want to diff --git a/src/hlua.c b/src/hlua.c index 44fb04a798..6ad3c822d1 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -2030,7 +2030,7 @@ static int hlua_socket_write_yield(struct lua_State *L,int status, lua_KContext * the request buffer if its not required. */ if (s->req.buf.size == 0) { - if (!channel_alloc_buffer(&s->req, &appctx->buffer_wait)) + if (!si_alloc_ibuf(si, &appctx->buffer_wait)) goto hlua_socket_write_yield_return; } diff --git a/src/stream_interface.c b/src/stream_interface.c index e585b1fe4f..8574b4ca30 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -1150,10 +1150,8 @@ int si_cs_recv(struct conn_stream *cs) } /* now we'll need a input buffer for the stream */ - if (!channel_alloc_buffer(ic, &(si_strm(si)->buffer_wait))) { - si->flags |= SI_FL_WAIT_ROOM; + if (!si_alloc_ibuf(si, &(si_strm(si)->buffer_wait))) goto end_recv; - } /* Important note : if we're called with POLL_IN|POLL_HUP, it means the read polling * was enabled, which implies that the recv buffer was not full. So we have a guarantee