When we want to allocate an in buffer, it's in order to pass data to
the applet, that will consume it, so it must be seen as the same as
a send() from the higher level, i.e. MUX_TX. And for the outbuf, it's
a stream endpoint returning data, i.e. DB_SE_RX.
int is_inbuf = (bptr == &appctx->inbuf);
if (likely(!LIST_INLIST(&appctx->buffer_wait.list))) {
- if (unlikely((buf = b_alloc(bptr, DB_SE_RX)) == NULL)) {
- b_queue(DB_SE_RX, &appctx->buffer_wait, appctx, appctx_buf_available);
+ if (unlikely((buf = b_alloc(bptr, is_inbuf ? DB_MUX_TX : DB_SE_RX)) == NULL)) {
+ b_queue(is_inbuf ? DB_MUX_TX : DB_SE_RX, &appctx->buffer_wait, appctx, appctx_buf_available);
applet_fl_set(appctx, is_inbuf ? APPCTX_FL_INBLK_ALLOC : APPCTX_FL_OUTBLK_ALLOC);
}
}