MINOR: connections: Get rid of txbuf.

Remove txbuf from conn_stream. It is not used yet, and its only user will
probably be the mux_h2, so it will be better suited in the struct h2s.
This commit is contained in:
Olivier Houchard 2018-08-16 15:41:52 +02:00 committed by Willy Tarreau
parent 638b799b09
commit ed0f207ef5
5 changed files with 3 additions and 42 deletions

View File

@ -44,9 +44,6 @@ int init_connection();
*/ */
void conn_fd_handler(int fd); void conn_fd_handler(int fd);
/* conn_stream functions */
size_t __cs_send(struct conn_stream *cs, struct buffer *buf, size_t count, int flags);
/* receive a PROXY protocol header over a connection */ /* receive a PROXY protocol header over a connection */
int conn_recv_proxy(struct connection *conn, int flag); int conn_recv_proxy(struct connection *conn, int flag);
int make_proxy_line(char *buf, int buf_len, struct server *srv, struct connection *remote); int make_proxy_line(char *buf, int buf_len, struct server *srv, struct connection *remote);
@ -303,17 +300,6 @@ static inline void cs_update_mux_polling(struct conn_stream *cs)
conn->mux->update_poll(cs); conn->mux->update_poll(cs);
} }
/* conn_stream send function. Uses mux->snd_buf() if defined, otherwise
* falls back to __cs_send().
*/
static inline size_t cs_send(struct conn_stream *cs, struct buffer *buf, size_t count, int flags)
{
if (cs->conn->mux->snd_buf)
return cs->conn->mux->snd_buf(cs, buf, count, flags);
else
return __cs_send(cs, buf, count, flags);
}
/***** Event manipulation primitives for use by DATA I/O callbacks *****/ /***** Event manipulation primitives for use by DATA I/O callbacks *****/
/* The __conn_* versions do not propagate to lower layers and are only meant /* The __conn_* versions do not propagate to lower layers and are only meant
* to be used by handlers called by the connection handler. The other ones * to be used by handlers called by the connection handler. The other ones
@ -615,7 +601,6 @@ static inline void cs_init(struct conn_stream *cs, struct connection *conn)
LIST_INIT(&cs->wait_list.list); LIST_INIT(&cs->wait_list.list);
LIST_INIT(&cs->send_wait_list); LIST_INIT(&cs->send_wait_list);
cs->conn = conn; cs->conn = conn;
cs->txbuf = BUF_NULL;
} }
/* Initializes all required fields for a new connection. Note that it does the /* Initializes all required fields for a new connection. Note that it does the
@ -676,17 +661,6 @@ static inline struct connection *conn_new()
return conn; return conn;
} }
/* Releases the conn_stream's tx buf if it exists. The buffer is automatically
* replaced with a pointer to the empty buffer.
*/
static inline void cs_drop_txbuf(struct conn_stream *cs)
{
if (b_size(&cs->txbuf)) {
b_free(&cs->txbuf);
offer_buffers(NULL, tasks_run_queue);
}
}
/* Releases a conn_stream previously allocated by cs_new(), as well as any /* Releases a conn_stream previously allocated by cs_new(), as well as any
* buffer it would still hold. * buffer it would still hold.
*/ */
@ -695,7 +669,6 @@ static inline void cs_free(struct conn_stream *cs)
if (cs->wait_list.task) if (cs->wait_list.task)
tasklet_free(cs->wait_list.task); tasklet_free(cs->wait_list.task);
cs_drop_txbuf(cs);
pool_free(pool_head_connstream, cs); pool_free(pool_head_connstream, cs);
} }

View File

@ -372,7 +372,6 @@ struct conn_stream {
struct connection *conn; /* xprt-level connection */ struct connection *conn; /* xprt-level connection */
struct wait_list wait_list; /* We're in a wait list for send */ struct wait_list wait_list; /* We're in a wait list for send */
struct list send_wait_list; /* list of tasks to wake when we're ready to send */ struct list send_wait_list; /* list of tasks to wake when we're ready to send */
struct buffer txbuf; /* transmission buffer, always valid (buf_empty or real buffer) */
void *data; /* pointer to upper layer's entity (eg: stream interface) */ void *data; /* pointer to upper layer's entity (eg: stream interface) */
const struct data_cb *data_cb; /* data layer callbacks. Must be set before xprt->init() */ const struct data_cb *data_cb; /* data layer callbacks. Must be set before xprt->init() */
void *ctx; /* mux-specific context */ void *ctx; /* mux-specific context */

View File

@ -771,7 +771,7 @@ static void __event_srv_chk_w(struct conn_stream *cs)
goto out; goto out;
if (b_data(&check->bo)) { if (b_data(&check->bo)) {
cs_send(cs, &check->bo, b_data(&check->bo), 0); cs->conn->mux->snd_buf(cs, &check->bo, b_data(&check->bo), 0);
b_realign_if_empty(&check->bo); b_realign_if_empty(&check->bo);
if (conn->flags & CO_FL_ERROR || cs->flags & CS_FL_ERROR) { if (conn->flags & CO_FL_ERROR || cs->flags & CS_FL_ERROR) {
chk_report_conn_err(check, errno, 0); chk_report_conn_err(check, errno, 0);
@ -2699,7 +2699,7 @@ static int tcpcheck_main(struct check *check)
int ret; int ret;
__cs_want_send(cs); __cs_want_send(cs);
ret = cs_send(cs, &check->bo, b_data(&check->bo), 0); ret = cs->conn->mux->snd_buf(cs, &check->bo, b_data(&check->bo), 0);
b_realign_if_empty(&check->bo); b_realign_if_empty(&check->bo);
if (ret <= 0) { if (ret <= 0) {

View File

@ -383,17 +383,6 @@ int conn_sock_drain(struct connection *conn)
return 1; return 1;
} }
/*
* default cs send() : this one is used when mux->snd_buf == NULL. It puts up to
* <count> bytes from <buf> into cs->txbuf. The number of bytes transferred is
* returned. Here we don't care if cs->txbuf is allocated or not. If not, it
* will be swapped with <buf>.
*/
size_t __cs_send(struct conn_stream *cs, struct buffer *buf, size_t count, int flags)
{
return b_xfer(&cs->txbuf, buf, count);
}
/* /*
* Get data length from tlv * Get data length from tlv
*/ */

View File

@ -721,7 +721,7 @@ static struct task * si_cs_send(struct task *t, void *ctx, unsigned short state)
if (oc->flags & CF_STREAMER) if (oc->flags & CF_STREAMER)
send_flag |= CO_SFL_STREAMER; send_flag |= CO_SFL_STREAMER;
ret = cs_send(cs, &oc->buf, co_data(oc), send_flag); ret = cs->conn->mux->snd_buf(cs, &oc->buf, co_data(oc), send_flag);
if (ret > 0) { if (ret > 0) {
did_send = 1; did_send = 1;
oc->flags |= CF_WRITE_PARTIAL | CF_WROTE_DATA | CF_WRITE_EVENT; oc->flags |= CF_WRITE_PARTIAL | CF_WROTE_DATA | CF_WRITE_EVENT;