diff --git a/include/common/buf.h b/include/common/buf.h index c38d65d85..a7bbb1f0c 100644 --- a/include/common/buf.h +++ b/include/common/buf.h @@ -447,6 +447,53 @@ static inline void b_slow_realign(struct buffer *b, char *swap, size_t output) b->head = b_size(b) - output; } +/* b_putchar() : tries to append char at the end of buffer . Supports + * wrapping. Data are truncated if buffer is full. + */ +static inline void b_putchr(struct buffer *b, char c) +{ + if (b_full(b)) + return; + *b_tail(b) = c; + b->len++; +} + +/* b_putblk() : tries to append block at the end of buffer . Supports + * wrapping. Data are truncated if buffer is too short. It returns the number + * of bytes copied. + */ +static inline size_t b_putblk(struct buffer *b, const char *blk, size_t len) +{ + size_t half; + + if (len > b_room(b)) + len = b_room(b); + if (!len) + return 0; + + half = b_contig_space(b); + if (half > len) + half = len; + + memcpy(b_tail(b), blk, half); + b->len += half; + if (len > half) { + memcpy(b_tail(b), blk + half, len - half); + b->len += len - half; + } + return len; +} + +/* b_putstr() : tries to copy string into output data at buffer . + * Supports wrapping. Data are truncated if buffer is too short. It returns the + * number of bytes copied. + */ +static inline size_t b_putstr(struct buffer *b, const char *str) +{ + return b_putblk(b, str, strlen(str)); +} + + #endif /* _COMMON_BUF_H */ /* diff --git a/include/common/buffer.h b/include/common/buffer.h index d7bfb967e..d76bc012b 100644 --- a/include/common/buffer.h +++ b/include/common/buffer.h @@ -116,116 +116,6 @@ static inline int buffer_replace(struct buffer *b, char *pos, char *end, const c return buffer_replace2(b, pos, end, str, strlen(str)); } -/* Tries to append char at the end of buffer . Supports wrapping. Data - * are truncated if buffer is full. - */ -static inline void bo_putchr(struct buffer *b, char c) -{ - if (b_data(b) == b->size) - return; - *b_tail(b) = c; - b->len++; -} - -/* Tries to append block at the end of buffer . Supports wrapping. - * Data are truncated if buffer is too short. It returns the number of bytes - * copied. - */ -static inline unsigned int bo_putblk(struct buffer *b, const char *blk, unsigned int len) -{ - unsigned int half; - - if (len > b_room(b)) - len = b_room(b); - if (!len) - return 0; - - half = b_contig_space(b); - if (half > len) - half = len; - - memcpy(b_tail(b), blk, half); - b->len += half; - if (len > half) { - memcpy(b_tail(b), blk + half, len - half); - b->len += len - half; - } - return len; -} - -/* Tries to copy string into output data at buffer . Supports wrapping. - * Data are truncated if buffer is too short. It returns the number of bytes - * copied. - */ -static inline int bo_putstr(struct buffer *b, const char *str) -{ - return bo_putblk(b, str, strlen(str)); -} - -/* Tries to copy chunk into output data at buffer . Supports wrapping. - * Data are truncated if buffer is too short. It returns the number of bytes - * copied. - */ -static inline int bo_putchk(struct buffer *b, const struct chunk *chk) -{ - return bo_putblk(b, chk->str, chk->len); -} - -/* Tries to write char into input data at buffer . Supports wrapping. - * Data are truncated if buffer is full. - */ -static inline void bi_putchr(struct buffer *b, char c) -{ - if (b_data(b) == b->size) - return; - *b_tail(b) = c; - b->len++; -} - -/* Tries to append block at the end of buffer . Supports wrapping. - * Data are truncated if buffer is too short. It returns the number of bytes - * copied. - */ -static inline unsigned int bi_putblk(struct buffer *b, const char *blk, unsigned int len) -{ - int half; - - if (len > b_room(b)) - len = b_room(b); - if (!len) - return 0; - - half = b_contig_space(b); - if (half > len) - half = len; - - memcpy(b_tail(b), blk, half); - b->len += half; - if (len > half) { - memcpy(b_tail(b), blk + half, len - half); - b->len += len - half; - } - return len; -} - -/* Tries to copy string into input data at buffer . Supports wrapping. - * Data are truncated if buffer is too short. It returns the number of bytes - * copied. - */ -static inline int bi_putstr(struct buffer *b, const char *str) -{ - return bi_putblk(b, str, strlen(str)); -} - -/* Tries to copy chunk into input data at buffer . Supports wrapping. - * Data are truncated if buffer is too short. It returns the number of bytes - * copied. - */ -static inline int bi_putchk(struct buffer *b, const struct chunk *chk) -{ - return bi_putblk(b, chk->str, chk->len); -} - /* Allocates a buffer and replaces *buf with this buffer. If no memory is * available, &buf_wanted is used instead. No control is made to check if *buf * already pointed to another buffer. The allocated buffer is returned, or diff --git a/src/checks.c b/src/checks.c index e9b531839..d2c4035ab 100644 --- a/src/checks.c +++ b/src/checks.c @@ -1518,7 +1518,7 @@ static int connect_conn_chk(struct task *t) * its own strings. */ if (check->type && check->type != PR_O2_TCPCHK_CHK && !(check->state & CHK_ST_AGENT)) { - bo_putblk(check->bo, s->proxy->check_req, s->proxy->check_len); + b_putblk(check->bo, s->proxy->check_req, s->proxy->check_len); /* we want to check if this host replies to HTTP or SSLv3 requests * so we'll send the request, and won't wake the checker up now. @@ -1530,17 +1530,17 @@ static int connect_conn_chk(struct task *t) } else if ((check->type) == PR_O2_HTTP_CHK) { if (s->proxy->options2 & PR_O2_CHK_SNDST) - bo_putblk(check->bo, trash.str, httpchk_build_status_header(s, trash.str, trash.size)); + b_putblk(check->bo, trash.str, httpchk_build_status_header(s, trash.str, trash.size)); /* prevent HTTP keep-alive when "http-check expect" is used */ if (s->proxy->options2 & PR_O2_EXP_TYPE) - bo_putstr(check->bo, "Connection: close\r\n"); - bo_putstr(check->bo, "\r\n"); + b_putstr(check->bo, "Connection: close\r\n"); + b_putstr(check->bo, "\r\n"); *b_tail(check->bo) = '\0'; /* to make gdb output easier to read */ } } if ((check->type & PR_O2_LB_AGENT_CHK) && check->send_string_len) { - bo_putblk(check->bo, check->send_string, check->send_string_len); + b_putblk(check->bo, check->send_string, check->send_string_len); } /* for tcp-checks, the initial connection setup is handled separately as @@ -2868,7 +2868,7 @@ static int tcpcheck_main(struct check *check) if (check->current_step->string_len >= b_room(check->bo)) continue; - bo_putblk(check->bo, check->current_step->string, check->current_step->string_len); + b_putblk(check->bo, check->current_step->string, check->current_step->string_len); *b_tail(check->bo) = '\0'; /* to make gdb output easier to read */ /* go to next rule and try to send */ diff --git a/src/mux_h2.c b/src/mux_h2.c index 46d69bb29..d748eaa18 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -2838,7 +2838,7 @@ static int h2_frt_transfer_data(struct h2s *h2s, struct buffer *buf, int count, do { *--beg = hextab[chksz & 0xF]; } while (chksz >>= 4); - bi_putblk(buf, beg, str + sizeof(str) - beg); + b_putblk(buf, beg, str + sizeof(str) - beg); } /* Block1 is the length of the first block before the buffer wraps, @@ -2850,14 +2850,14 @@ static int h2_frt_transfer_data(struct h2s *h2s, struct buffer *buf, int count, block2 = flen - block1; if (block1) - bi_putblk(buf, b_head(h2c->dbuf), block1); + b_putblk(buf, b_head(h2c->dbuf), block1); if (block2) - bi_putblk(buf, b_peek(h2c->dbuf, block1), block2); + b_putblk(buf, b_peek(h2c->dbuf, block1), block2); if (h2s->flags & H2_SF_DATA_CHNK) { /* emit the CRLF */ - bi_putblk(buf, "\r\n", 2); + b_putblk(buf, "\r\n", 2); } /* now mark the input data as consumed (will be deleted from the buffer @@ -2883,7 +2883,7 @@ static int h2_frt_transfer_data(struct h2s *h2s, struct buffer *buf, int count, if (count < 5) goto more; chklen += 5; - bi_putblk(buf, "0\r\n\r\n", 5); + b_putblk(buf, "0\r\n\r\n", 5); } h2c->rcvd_c += h2c->dpl;