CLEANUP: stream-int: add si_ib/si_ob to dereference the buffers

This makes the code cleaner and is more intuitive to use.
This commit is contained in:
Willy Tarreau 2014-11-28 12:18:45 +01:00
parent 819d332dfd
commit 4e4292b9af
5 changed files with 30 additions and 18 deletions

View File

@ -64,6 +64,18 @@ static inline struct channel *si_oc(struct stream_interface *si)
return &LIST_ELEM(si, struct session *, si[0])->res;
}
/* returns the buffer which receives data from this stream interface (input channel's buffer) */
static inline struct buffer *si_ib(struct stream_interface *si)
{
return si_ic(si)->buf;
}
/* returns the buffer which feeds data to this stream interface (output channel's buffer) */
static inline struct buffer *si_ob(struct stream_interface *si)
{
return si_oc(si)->buf;
}
/* returns the session associated to a stream interface */
static inline struct session *si_sess(struct stream_interface *si)
{

View File

@ -2263,7 +2263,7 @@ static void cli_io_handler(struct stream_interface *si)
/* ensure we have some output room left in the event we
* would want to return some info right after parsing.
*/
if (buffer_almost_full(si_ic(si)->buf)) {
if (buffer_almost_full(si_ib(si))) {
si_ic(si)->flags |= CF_WAKE_WRITE;
break;
}
@ -3625,7 +3625,7 @@ static void stats_dump_html_px_hdr(struct stream_interface *si, struct proxy *px
scope_txt[0] = 0;
if (appctx->ctx.stats.scope_len) {
strcpy(scope_txt, STAT_SCOPE_PATTERN);
memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si_oc(si)->buf) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si_ob(si)) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
scope_txt[strlen(STAT_SCOPE_PATTERN) + appctx->ctx.stats.scope_len] = 0;
}
@ -3778,7 +3778,7 @@ static int stats_dump_proxy_to_buffer(struct stream_interface *si, struct proxy
* name does not match, skip it.
*/
if (appctx->ctx.stats.scope_len &&
strnistr(px->id, strlen(px->id), bo_ptr(si_oc(si)->buf) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len) == NULL)
strnistr(px->id, strlen(px->id), bo_ptr(si_ob(si)) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len) == NULL)
return 1;
if ((appctx->ctx.stats.flags & STAT_BOUND) &&
@ -4134,7 +4134,7 @@ static void stats_dump_html_info(struct stream_interface *si, struct uri_auth *u
);
/* scope_txt = search query, appctx->ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
memcpy(scope_txt, bo_ptr(si_oc(si)->buf) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
memcpy(scope_txt, bo_ptr(si_ob(si)) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
scope_txt[appctx->ctx.stats.scope_len] = '\0';
chunk_appendf(&trash,
@ -4149,7 +4149,7 @@ static void stats_dump_html_info(struct stream_interface *si, struct uri_auth *u
scope_txt[0] = 0;
if (appctx->ctx.stats.scope_len) {
strcpy(scope_txt, STAT_SCOPE_PATTERN);
memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si_oc(si)->buf) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si_ob(si)) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
scope_txt[strlen(STAT_SCOPE_PATTERN) + appctx->ctx.stats.scope_len] = 0;
}
@ -4756,7 +4756,7 @@ static int stats_send_http_redirect(struct stream_interface *si)
scope_txt[0] = 0;
if (appctx->ctx.stats.scope_len) {
strcpy(scope_txt, STAT_SCOPE_PATTERN);
memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si_oc(si)->buf) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si_ob(si)) + appctx->ctx.stats.scope_str, appctx->ctx.stats.scope_len);
scope_txt[strlen(STAT_SCOPE_PATTERN) + appctx->ctx.stats.scope_len] = 0;
}
@ -4820,7 +4820,7 @@ static void http_stats_io_handler(struct stream_interface *si)
}
if (appctx->st0 == STAT_HTTP_DUMP) {
unsigned int prev_len = si_ic(si)->buf->i;
unsigned int prev_len = si_ib(si)->i;
unsigned int data_len;
unsigned int last_len;
unsigned int last_fwd = 0;
@ -4840,11 +4840,11 @@ static void http_stats_io_handler(struct stream_interface *si)
}
}
data_len = si_ic(si)->buf->i;
data_len = si_ib(si)->i;
if (stats_dump_stat_to_buffer(si, s->be->uri_auth))
appctx->st0 = STAT_HTTP_DONE;
last_len = si_ic(si)->buf->i;
last_len = si_ib(si)->i;
/* Now we must either adjust or remove the chunk size. This is
* not easy because the chunk size might wrap at the end of the
@ -4854,15 +4854,15 @@ static void http_stats_io_handler(struct stream_interface *si)
* applet.
*/
if (appctx->ctx.stats.flags & STAT_CHUNKED) {
si_ic(si)->total -= (last_len - prev_len);
si_ic(si)->buf->i -= (last_len - prev_len);
si_ic(si)->total -= (last_len - prev_len);
si_ib(si)->i -= (last_len - prev_len);
if (last_len != data_len) {
chunk_printf(&trash, "\r\n%06x\r\n", (last_len - data_len));
bi_putchk(si_ic(si), &trash);
si_ic(si)->total += (last_len - data_len);
si_ic(si)->buf->i += (last_len - data_len);
si_ic(si)->total += (last_len - data_len);
si_ib(si)->i += (last_len - data_len);
}
/* now re-enable forwarding */
channel_forward(si_ic(si), last_fwd);
@ -4888,7 +4888,7 @@ static void http_stats_io_handler(struct stream_interface *si)
goto fail;
}
/* eat the whole request */
bo_skip(si_oc(si), si_oc(si)->buf->o);
bo_skip(si_oc(si), si_ob(si)->o);
res->flags |= CF_READ_NULL;
si_shutr(si);
}

View File

@ -1445,7 +1445,7 @@ static int hlua_socket_write_yield(struct lua_State *L,int status, lua_KContext
}
/* Check for avalaible space. */
len = buffer_total_space(si_ic(&socket->s->si[0])->buf);
len = buffer_total_space(si_ib(&socket->s->si[0]));
if (len <= 0)
goto hlua_socket_write_yield_return;

View File

@ -647,7 +647,7 @@ switchstate:
to_store = 0;
to_read = ntohl(netinteger);
if (to_read + totl > si_oc(si)->buf->size) {
if (to_read + totl > si_ob(si)->size) {
/* impossible to read a key this large, abort */
reql = -1;
goto incomplete;

View File

@ -181,7 +181,7 @@ static void stream_int_update_embedded(struct stream_interface *si)
if (((si_ic(si)->flags & CF_READ_PARTIAL) && !channel_is_empty(si_ic(si))) &&
(si_ic(si)->pipe /* always try to send spliced data */ ||
(si_ic(si)->buf->i == 0 && (si_ic(si)->cons->flags & SI_FL_WAIT_DATA)))) {
(si_ib(si)->i == 0 && (si_ic(si)->cons->flags & SI_FL_WAIT_DATA)))) {
si_chk_snd(si_ic(si)->cons);
/* check if the consumer has freed some space */
if (channel_may_recv(si_ic(si)) && !si_ic(si)->pipe)
@ -599,7 +599,7 @@ static int si_conn_wake_cb(struct connection *conn)
*/
if (((si_ic(si)->flags & CF_READ_PARTIAL) && !channel_is_empty(si_ic(si))) &&
(si_ic(si)->pipe /* always try to send spliced data */ ||
(si_ic(si)->buf->i == 0 && (si_ic(si)->cons->flags & SI_FL_WAIT_DATA)))) {
(si_ib(si)->i == 0 && (si_ic(si)->cons->flags & SI_FL_WAIT_DATA)))) {
int last_len = si_ic(si)->pipe ? si_ic(si)->pipe->data : 0;
si_chk_snd(si_ic(si)->cons);