/src/haproxy/include/haproxy/channel.h
Line | Count | Source |
1 | | /* |
2 | | * include/haproxy/channel.h |
3 | | * Channel management definitions, macros and inline functions. |
4 | | * |
5 | | * Copyright (C) 2000-2020 Willy Tarreau - w@1wt.eu |
6 | | * |
7 | | * This library is free software; you can redistribute it and/or |
8 | | * modify it under the terms of the GNU Lesser General Public |
9 | | * License as published by the Free Software Foundation, version 2.1 |
10 | | * exclusively. |
11 | | * |
12 | | * This library is distributed in the hope that it will be useful, |
13 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | | * Lesser General Public License for more details. |
16 | | * |
17 | | * You should have received a copy of the GNU Lesser General Public |
18 | | * License along with this library; if not, write to the Free Software |
19 | | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
20 | | */ |
21 | | |
22 | | #ifndef _HAPROXY_CHANNEL_H |
23 | | #define _HAPROXY_CHANNEL_H |
24 | | |
25 | | #include <haproxy/api.h> |
26 | | #include <haproxy/channel-t.h> |
27 | | #include <haproxy/dynbuf.h> |
28 | | #include <haproxy/global.h> |
29 | | #include <haproxy/htx.h> |
30 | | #include <haproxy/stream.h> |
31 | | #include <haproxy/task.h> |
32 | | #include <haproxy/ticks.h> |
33 | | #include <haproxy/tools-t.h> |
34 | | |
35 | | struct stconn; |
36 | | |
37 | | /* perform minimal initializations, report 0 in case of error, 1 if OK. */ |
38 | | int init_channel(); |
39 | | |
40 | | unsigned long long __channel_forward(struct channel *chn, unsigned long long bytes); |
41 | | |
42 | | /* SI-to-channel functions working with buffers */ |
43 | | int ci_putblk(struct channel *chn, const char *str, int len); |
44 | | int ci_putchr(struct channel *chn, char c); |
45 | | int ci_getline_nc(const struct channel *chn, char **blk1, size_t *len1, char **blk2, size_t *len2); |
46 | | int ci_getblk_nc(const struct channel *chn, char **blk1, size_t *len1, char **blk2, size_t *len2); |
47 | | int ci_insert(struct channel *c, int pos, const char *str, int len); |
48 | | int ci_insert_line2(struct channel *c, int pos, const char *str, int len); |
49 | | int co_inject(struct channel *chn, const char *msg, int len); |
50 | | int co_getchar(const struct channel *chn, char *c); |
51 | | int co_getline(const struct channel *chn, char *str, int len); |
52 | | int co_getdelim(const struct channel *chn, char *str, int len, const char *delim, char escape); |
53 | | int co_getword(const struct channel *chn, char *str, int len, char sep); |
54 | | int co_getblk(const struct channel *chn, char *blk, int len, int offset); |
55 | | int co_getline_nc(const struct channel *chn, const char **blk1, size_t *len1, const char **blk2, size_t *len2); |
56 | | int co_getblk_nc(const struct channel *chn, const char **blk1, size_t *len1, const char **blk2, size_t *len2); |
57 | | |
58 | | |
59 | | /* returns a pointer to the stream the channel belongs to */ |
60 | | static inline struct stream *chn_strm(const struct channel *chn) |
61 | 0 | { |
62 | 0 | if (chn->flags & CF_ISRESP) |
63 | 0 | return LIST_ELEM(chn, struct stream *, res); |
64 | 0 | else |
65 | 0 | return LIST_ELEM(chn, struct stream *, req); |
66 | 0 | } Unexecuted instantiation: cfgparse.c:chn_strm Unexecuted instantiation: cli.c:chn_strm Unexecuted instantiation: connection.c:chn_strm Unexecuted instantiation: debug.c:chn_strm Unexecuted instantiation: errors.c:chn_strm Unexecuted instantiation: filters.c:chn_strm Unexecuted instantiation: flt_http_comp.c:chn_strm Unexecuted instantiation: frontend.c:chn_strm Unexecuted instantiation: haproxy.c:chn_strm Unexecuted instantiation: http_ana.c:chn_strm Unexecuted instantiation: http_ext.c:chn_strm Unexecuted instantiation: log.c:chn_strm Unexecuted instantiation: mworker.c:chn_strm Unexecuted instantiation: peers.c:chn_strm Unexecuted instantiation: pool.c:chn_strm Unexecuted instantiation: proxy.c:chn_strm Unexecuted instantiation: resolvers.c:chn_strm Unexecuted instantiation: ring.c:chn_strm Unexecuted instantiation: sample.c:chn_strm Unexecuted instantiation: server.c:chn_strm Unexecuted instantiation: sink.c:chn_strm Unexecuted instantiation: stats-html.c:chn_strm Unexecuted instantiation: stats.c:chn_strm Unexecuted instantiation: stconn.c:chn_strm Unexecuted instantiation: stick_table.c:chn_strm Unexecuted instantiation: stream.c:chn_strm Unexecuted instantiation: tcp_rules.c:chn_strm Unexecuted instantiation: tools.c:chn_strm Unexecuted instantiation: trace.c:chn_strm Unexecuted instantiation: vars.c:chn_strm Unexecuted instantiation: activity.c:chn_strm Unexecuted instantiation: applet.c:chn_strm Unexecuted instantiation: backend.c:chn_strm Unexecuted instantiation: cache.c:chn_strm Unexecuted instantiation: channel.c:chn_strm Unexecuted instantiation: dns.c:chn_strm Unexecuted instantiation: dns_ring.c:chn_strm Unexecuted instantiation: fcgi-app.c:chn_strm Unexecuted instantiation: http_fetch.c:chn_strm Unexecuted instantiation: payload.c:chn_strm Unexecuted instantiation: stats-json.c:chn_strm Unexecuted instantiation: flt_spoe.c:chn_strm |
67 | | |
68 | | /* returns a pointer to the stream connector feeding the channel (producer) */ |
69 | | static inline struct stconn *chn_prod(const struct channel *chn) |
70 | 0 | { |
71 | 0 | if (chn->flags & CF_ISRESP) |
72 | 0 | return LIST_ELEM(chn, struct stream *, res)->scb; |
73 | 0 | else |
74 | 0 | return LIST_ELEM(chn, struct stream *, req)->scf; |
75 | 0 | } Unexecuted instantiation: cfgparse.c:chn_prod Unexecuted instantiation: cli.c:chn_prod Unexecuted instantiation: connection.c:chn_prod Unexecuted instantiation: debug.c:chn_prod Unexecuted instantiation: errors.c:chn_prod Unexecuted instantiation: filters.c:chn_prod Unexecuted instantiation: flt_http_comp.c:chn_prod Unexecuted instantiation: frontend.c:chn_prod Unexecuted instantiation: haproxy.c:chn_prod Unexecuted instantiation: http_ana.c:chn_prod Unexecuted instantiation: http_ext.c:chn_prod Unexecuted instantiation: log.c:chn_prod Unexecuted instantiation: mworker.c:chn_prod Unexecuted instantiation: peers.c:chn_prod Unexecuted instantiation: pool.c:chn_prod Unexecuted instantiation: proxy.c:chn_prod Unexecuted instantiation: resolvers.c:chn_prod Unexecuted instantiation: ring.c:chn_prod Unexecuted instantiation: sample.c:chn_prod Unexecuted instantiation: server.c:chn_prod Unexecuted instantiation: sink.c:chn_prod Unexecuted instantiation: stats-html.c:chn_prod Unexecuted instantiation: stats.c:chn_prod Unexecuted instantiation: stconn.c:chn_prod Unexecuted instantiation: stick_table.c:chn_prod Unexecuted instantiation: stream.c:chn_prod Unexecuted instantiation: tcp_rules.c:chn_prod Unexecuted instantiation: tools.c:chn_prod Unexecuted instantiation: trace.c:chn_prod Unexecuted instantiation: vars.c:chn_prod Unexecuted instantiation: activity.c:chn_prod Unexecuted instantiation: applet.c:chn_prod Unexecuted instantiation: backend.c:chn_prod Unexecuted instantiation: cache.c:chn_prod Unexecuted instantiation: channel.c:chn_prod Unexecuted instantiation: dns.c:chn_prod Unexecuted instantiation: dns_ring.c:chn_prod Unexecuted instantiation: fcgi-app.c:chn_prod Unexecuted instantiation: http_fetch.c:chn_prod Unexecuted instantiation: payload.c:chn_prod Unexecuted instantiation: stats-json.c:chn_prod Unexecuted instantiation: flt_spoe.c:chn_prod |
76 | | |
77 | | /* returns a pointer to the stream connector consuming the channel (producer) */ |
78 | | static inline struct stconn *chn_cons(const struct channel *chn) |
79 | 0 | { |
80 | 0 | if (chn->flags & CF_ISRESP) |
81 | 0 | return LIST_ELEM(chn, struct stream *, res)->scf; |
82 | 0 | else |
83 | 0 | return LIST_ELEM(chn, struct stream *, req)->scb; |
84 | 0 | } Unexecuted instantiation: cfgparse.c:chn_cons Unexecuted instantiation: cli.c:chn_cons Unexecuted instantiation: connection.c:chn_cons Unexecuted instantiation: debug.c:chn_cons Unexecuted instantiation: errors.c:chn_cons Unexecuted instantiation: filters.c:chn_cons Unexecuted instantiation: flt_http_comp.c:chn_cons Unexecuted instantiation: frontend.c:chn_cons Unexecuted instantiation: haproxy.c:chn_cons Unexecuted instantiation: http_ana.c:chn_cons Unexecuted instantiation: http_ext.c:chn_cons Unexecuted instantiation: log.c:chn_cons Unexecuted instantiation: mworker.c:chn_cons Unexecuted instantiation: peers.c:chn_cons Unexecuted instantiation: pool.c:chn_cons Unexecuted instantiation: proxy.c:chn_cons Unexecuted instantiation: resolvers.c:chn_cons Unexecuted instantiation: ring.c:chn_cons Unexecuted instantiation: sample.c:chn_cons Unexecuted instantiation: server.c:chn_cons Unexecuted instantiation: sink.c:chn_cons Unexecuted instantiation: stats-html.c:chn_cons Unexecuted instantiation: stats.c:chn_cons Unexecuted instantiation: stconn.c:chn_cons Unexecuted instantiation: stick_table.c:chn_cons Unexecuted instantiation: stream.c:chn_cons Unexecuted instantiation: tcp_rules.c:chn_cons Unexecuted instantiation: tools.c:chn_cons Unexecuted instantiation: trace.c:chn_cons Unexecuted instantiation: vars.c:chn_cons Unexecuted instantiation: activity.c:chn_cons Unexecuted instantiation: applet.c:chn_cons Unexecuted instantiation: backend.c:chn_cons Unexecuted instantiation: cache.c:chn_cons Unexecuted instantiation: channel.c:chn_cons Unexecuted instantiation: dns.c:chn_cons Unexecuted instantiation: dns_ring.c:chn_cons Unexecuted instantiation: fcgi-app.c:chn_cons Unexecuted instantiation: http_fetch.c:chn_cons Unexecuted instantiation: payload.c:chn_cons Unexecuted instantiation: stats-json.c:chn_cons Unexecuted instantiation: flt_spoe.c:chn_cons |
85 | | |
86 | | /* c_orig() : returns the pointer to the channel buffer's origin */ |
87 | | static inline char *c_orig(const struct channel *c) |
88 | 0 | { |
89 | 0 | return b_orig(&c->buf); |
90 | 0 | } Unexecuted instantiation: cfgparse.c:c_orig Unexecuted instantiation: cli.c:c_orig Unexecuted instantiation: connection.c:c_orig Unexecuted instantiation: debug.c:c_orig Unexecuted instantiation: errors.c:c_orig Unexecuted instantiation: filters.c:c_orig Unexecuted instantiation: flt_http_comp.c:c_orig Unexecuted instantiation: frontend.c:c_orig Unexecuted instantiation: haproxy.c:c_orig Unexecuted instantiation: http_ana.c:c_orig Unexecuted instantiation: http_ext.c:c_orig Unexecuted instantiation: log.c:c_orig Unexecuted instantiation: mworker.c:c_orig Unexecuted instantiation: peers.c:c_orig Unexecuted instantiation: pool.c:c_orig Unexecuted instantiation: proxy.c:c_orig Unexecuted instantiation: resolvers.c:c_orig Unexecuted instantiation: ring.c:c_orig Unexecuted instantiation: sample.c:c_orig Unexecuted instantiation: server.c:c_orig Unexecuted instantiation: sink.c:c_orig Unexecuted instantiation: stats-html.c:c_orig Unexecuted instantiation: stats.c:c_orig Unexecuted instantiation: stconn.c:c_orig Unexecuted instantiation: stick_table.c:c_orig Unexecuted instantiation: stream.c:c_orig Unexecuted instantiation: tcp_rules.c:c_orig Unexecuted instantiation: tools.c:c_orig Unexecuted instantiation: trace.c:c_orig Unexecuted instantiation: vars.c:c_orig Unexecuted instantiation: activity.c:c_orig Unexecuted instantiation: applet.c:c_orig Unexecuted instantiation: backend.c:c_orig Unexecuted instantiation: cache.c:c_orig Unexecuted instantiation: channel.c:c_orig Unexecuted instantiation: dns.c:c_orig Unexecuted instantiation: dns_ring.c:c_orig Unexecuted instantiation: fcgi-app.c:c_orig Unexecuted instantiation: http_fetch.c:c_orig Unexecuted instantiation: payload.c:c_orig Unexecuted instantiation: stats-json.c:c_orig Unexecuted instantiation: flt_spoe.c:c_orig |
91 | | |
92 | | /* c_size() : returns the size of the channel's buffer */ |
93 | | static inline size_t c_size(const struct channel *c) |
94 | 0 | { |
95 | 0 | return b_size(&c->buf); |
96 | 0 | } Unexecuted instantiation: cfgparse.c:c_size Unexecuted instantiation: cli.c:c_size Unexecuted instantiation: connection.c:c_size Unexecuted instantiation: debug.c:c_size Unexecuted instantiation: errors.c:c_size Unexecuted instantiation: filters.c:c_size Unexecuted instantiation: flt_http_comp.c:c_size Unexecuted instantiation: frontend.c:c_size Unexecuted instantiation: haproxy.c:c_size Unexecuted instantiation: http_ana.c:c_size Unexecuted instantiation: http_ext.c:c_size Unexecuted instantiation: log.c:c_size Unexecuted instantiation: mworker.c:c_size Unexecuted instantiation: peers.c:c_size Unexecuted instantiation: pool.c:c_size Unexecuted instantiation: proxy.c:c_size Unexecuted instantiation: resolvers.c:c_size Unexecuted instantiation: ring.c:c_size Unexecuted instantiation: sample.c:c_size Unexecuted instantiation: server.c:c_size Unexecuted instantiation: sink.c:c_size Unexecuted instantiation: stats-html.c:c_size Unexecuted instantiation: stats.c:c_size Unexecuted instantiation: stconn.c:c_size Unexecuted instantiation: stick_table.c:c_size Unexecuted instantiation: stream.c:c_size Unexecuted instantiation: tcp_rules.c:c_size Unexecuted instantiation: tools.c:c_size Unexecuted instantiation: trace.c:c_size Unexecuted instantiation: vars.c:c_size Unexecuted instantiation: activity.c:c_size Unexecuted instantiation: applet.c:c_size Unexecuted instantiation: backend.c:c_size Unexecuted instantiation: cache.c:c_size Unexecuted instantiation: channel.c:c_size Unexecuted instantiation: dns.c:c_size Unexecuted instantiation: dns_ring.c:c_size Unexecuted instantiation: fcgi-app.c:c_size Unexecuted instantiation: http_fetch.c:c_size Unexecuted instantiation: payload.c:c_size Unexecuted instantiation: stats-json.c:c_size Unexecuted instantiation: flt_spoe.c:c_size |
97 | | |
98 | | /* c_wrap() : returns the pointer to the channel buffer's wrapping point */ |
99 | | static inline char *c_wrap(const struct channel *c) |
100 | 0 | { |
101 | 0 | return b_wrap(&c->buf); |
102 | 0 | } Unexecuted instantiation: cfgparse.c:c_wrap Unexecuted instantiation: cli.c:c_wrap Unexecuted instantiation: connection.c:c_wrap Unexecuted instantiation: debug.c:c_wrap Unexecuted instantiation: errors.c:c_wrap Unexecuted instantiation: filters.c:c_wrap Unexecuted instantiation: flt_http_comp.c:c_wrap Unexecuted instantiation: frontend.c:c_wrap Unexecuted instantiation: haproxy.c:c_wrap Unexecuted instantiation: http_ana.c:c_wrap Unexecuted instantiation: http_ext.c:c_wrap Unexecuted instantiation: log.c:c_wrap Unexecuted instantiation: mworker.c:c_wrap Unexecuted instantiation: peers.c:c_wrap Unexecuted instantiation: pool.c:c_wrap Unexecuted instantiation: proxy.c:c_wrap Unexecuted instantiation: resolvers.c:c_wrap Unexecuted instantiation: ring.c:c_wrap Unexecuted instantiation: sample.c:c_wrap Unexecuted instantiation: server.c:c_wrap Unexecuted instantiation: sink.c:c_wrap Unexecuted instantiation: stats-html.c:c_wrap Unexecuted instantiation: stats.c:c_wrap Unexecuted instantiation: stconn.c:c_wrap Unexecuted instantiation: stick_table.c:c_wrap Unexecuted instantiation: stream.c:c_wrap Unexecuted instantiation: tcp_rules.c:c_wrap Unexecuted instantiation: tools.c:c_wrap Unexecuted instantiation: trace.c:c_wrap Unexecuted instantiation: vars.c:c_wrap Unexecuted instantiation: activity.c:c_wrap Unexecuted instantiation: applet.c:c_wrap Unexecuted instantiation: backend.c:c_wrap Unexecuted instantiation: cache.c:c_wrap Unexecuted instantiation: channel.c:c_wrap Unexecuted instantiation: dns.c:c_wrap Unexecuted instantiation: dns_ring.c:c_wrap Unexecuted instantiation: fcgi-app.c:c_wrap Unexecuted instantiation: http_fetch.c:c_wrap Unexecuted instantiation: payload.c:c_wrap Unexecuted instantiation: stats-json.c:c_wrap Unexecuted instantiation: flt_spoe.c:c_wrap |
103 | | |
104 | | /* c_data() : returns the amount of data in the channel's buffer */ |
105 | | static inline size_t c_data(const struct channel *c) |
106 | 0 | { |
107 | 0 | return b_data(&c->buf); |
108 | 0 | } Unexecuted instantiation: cfgparse.c:c_data Unexecuted instantiation: cli.c:c_data Unexecuted instantiation: connection.c:c_data Unexecuted instantiation: debug.c:c_data Unexecuted instantiation: errors.c:c_data Unexecuted instantiation: filters.c:c_data Unexecuted instantiation: flt_http_comp.c:c_data Unexecuted instantiation: frontend.c:c_data Unexecuted instantiation: haproxy.c:c_data Unexecuted instantiation: http_ana.c:c_data Unexecuted instantiation: http_ext.c:c_data Unexecuted instantiation: log.c:c_data Unexecuted instantiation: mworker.c:c_data Unexecuted instantiation: peers.c:c_data Unexecuted instantiation: pool.c:c_data Unexecuted instantiation: proxy.c:c_data Unexecuted instantiation: resolvers.c:c_data Unexecuted instantiation: ring.c:c_data Unexecuted instantiation: sample.c:c_data Unexecuted instantiation: server.c:c_data Unexecuted instantiation: sink.c:c_data Unexecuted instantiation: stats-html.c:c_data Unexecuted instantiation: stats.c:c_data Unexecuted instantiation: stconn.c:c_data Unexecuted instantiation: stick_table.c:c_data Unexecuted instantiation: stream.c:c_data Unexecuted instantiation: tcp_rules.c:c_data Unexecuted instantiation: tools.c:c_data Unexecuted instantiation: trace.c:c_data Unexecuted instantiation: vars.c:c_data Unexecuted instantiation: activity.c:c_data Unexecuted instantiation: applet.c:c_data Unexecuted instantiation: backend.c:c_data Unexecuted instantiation: cache.c:c_data Unexecuted instantiation: channel.c:c_data Unexecuted instantiation: dns.c:c_data Unexecuted instantiation: dns_ring.c:c_data Unexecuted instantiation: fcgi-app.c:c_data Unexecuted instantiation: http_fetch.c:c_data Unexecuted instantiation: payload.c:c_data Unexecuted instantiation: stats-json.c:c_data Unexecuted instantiation: flt_spoe.c:c_data |
109 | | |
110 | | /* c_room() : returns the room left in the channel's buffer */ |
111 | | static inline size_t c_room(const struct channel *c) |
112 | 0 | { |
113 | 0 | return b_size(&c->buf) - b_data(&c->buf); |
114 | 0 | } Unexecuted instantiation: cfgparse.c:c_room Unexecuted instantiation: cli.c:c_room Unexecuted instantiation: connection.c:c_room Unexecuted instantiation: debug.c:c_room Unexecuted instantiation: errors.c:c_room Unexecuted instantiation: filters.c:c_room Unexecuted instantiation: flt_http_comp.c:c_room Unexecuted instantiation: frontend.c:c_room Unexecuted instantiation: haproxy.c:c_room Unexecuted instantiation: http_ana.c:c_room Unexecuted instantiation: http_ext.c:c_room Unexecuted instantiation: log.c:c_room Unexecuted instantiation: mworker.c:c_room Unexecuted instantiation: peers.c:c_room Unexecuted instantiation: pool.c:c_room Unexecuted instantiation: proxy.c:c_room Unexecuted instantiation: resolvers.c:c_room Unexecuted instantiation: ring.c:c_room Unexecuted instantiation: sample.c:c_room Unexecuted instantiation: server.c:c_room Unexecuted instantiation: sink.c:c_room Unexecuted instantiation: stats-html.c:c_room Unexecuted instantiation: stats.c:c_room Unexecuted instantiation: stconn.c:c_room Unexecuted instantiation: stick_table.c:c_room Unexecuted instantiation: stream.c:c_room Unexecuted instantiation: tcp_rules.c:c_room Unexecuted instantiation: tools.c:c_room Unexecuted instantiation: trace.c:c_room Unexecuted instantiation: vars.c:c_room Unexecuted instantiation: activity.c:c_room Unexecuted instantiation: applet.c:c_room Unexecuted instantiation: backend.c:c_room Unexecuted instantiation: cache.c:c_room Unexecuted instantiation: channel.c:c_room Unexecuted instantiation: dns.c:c_room Unexecuted instantiation: dns_ring.c:c_room Unexecuted instantiation: fcgi-app.c:c_room Unexecuted instantiation: http_fetch.c:c_room Unexecuted instantiation: payload.c:c_room Unexecuted instantiation: stats-json.c:c_room Unexecuted instantiation: flt_spoe.c:c_room |
115 | | |
116 | | /* c_empty() : returns a boolean indicating if the channel's buffer is empty */ |
117 | | static inline size_t c_empty(const struct channel *c) |
118 | 0 | { |
119 | 0 | return !c_data(c); |
120 | 0 | } Unexecuted instantiation: cfgparse.c:c_empty Unexecuted instantiation: cli.c:c_empty Unexecuted instantiation: connection.c:c_empty Unexecuted instantiation: debug.c:c_empty Unexecuted instantiation: errors.c:c_empty Unexecuted instantiation: filters.c:c_empty Unexecuted instantiation: flt_http_comp.c:c_empty Unexecuted instantiation: frontend.c:c_empty Unexecuted instantiation: haproxy.c:c_empty Unexecuted instantiation: http_ana.c:c_empty Unexecuted instantiation: http_ext.c:c_empty Unexecuted instantiation: log.c:c_empty Unexecuted instantiation: mworker.c:c_empty Unexecuted instantiation: peers.c:c_empty Unexecuted instantiation: pool.c:c_empty Unexecuted instantiation: proxy.c:c_empty Unexecuted instantiation: resolvers.c:c_empty Unexecuted instantiation: ring.c:c_empty Unexecuted instantiation: sample.c:c_empty Unexecuted instantiation: server.c:c_empty Unexecuted instantiation: sink.c:c_empty Unexecuted instantiation: stats-html.c:c_empty Unexecuted instantiation: stats.c:c_empty Unexecuted instantiation: stconn.c:c_empty Unexecuted instantiation: stick_table.c:c_empty Unexecuted instantiation: stream.c:c_empty Unexecuted instantiation: tcp_rules.c:c_empty Unexecuted instantiation: tools.c:c_empty Unexecuted instantiation: trace.c:c_empty Unexecuted instantiation: vars.c:c_empty Unexecuted instantiation: activity.c:c_empty Unexecuted instantiation: applet.c:c_empty Unexecuted instantiation: backend.c:c_empty Unexecuted instantiation: cache.c:c_empty Unexecuted instantiation: channel.c:c_empty Unexecuted instantiation: dns.c:c_empty Unexecuted instantiation: dns_ring.c:c_empty Unexecuted instantiation: fcgi-app.c:c_empty Unexecuted instantiation: http_fetch.c:c_empty Unexecuted instantiation: payload.c:c_empty Unexecuted instantiation: stats-json.c:c_empty Unexecuted instantiation: flt_spoe.c:c_empty |
121 | | |
122 | | /* c_full() : returns a boolean indicating if the channel's buffer is full */ |
123 | | static inline size_t c_full(const struct channel *c) |
124 | 0 | { |
125 | 0 | return !c_room(c); |
126 | 0 | } Unexecuted instantiation: cfgparse.c:c_full Unexecuted instantiation: cli.c:c_full Unexecuted instantiation: connection.c:c_full Unexecuted instantiation: debug.c:c_full Unexecuted instantiation: errors.c:c_full Unexecuted instantiation: filters.c:c_full Unexecuted instantiation: flt_http_comp.c:c_full Unexecuted instantiation: frontend.c:c_full Unexecuted instantiation: haproxy.c:c_full Unexecuted instantiation: http_ana.c:c_full Unexecuted instantiation: http_ext.c:c_full Unexecuted instantiation: log.c:c_full Unexecuted instantiation: mworker.c:c_full Unexecuted instantiation: peers.c:c_full Unexecuted instantiation: pool.c:c_full Unexecuted instantiation: proxy.c:c_full Unexecuted instantiation: resolvers.c:c_full Unexecuted instantiation: ring.c:c_full Unexecuted instantiation: sample.c:c_full Unexecuted instantiation: server.c:c_full Unexecuted instantiation: sink.c:c_full Unexecuted instantiation: stats-html.c:c_full Unexecuted instantiation: stats.c:c_full Unexecuted instantiation: stconn.c:c_full Unexecuted instantiation: stick_table.c:c_full Unexecuted instantiation: stream.c:c_full Unexecuted instantiation: tcp_rules.c:c_full Unexecuted instantiation: tools.c:c_full Unexecuted instantiation: trace.c:c_full Unexecuted instantiation: vars.c:c_full Unexecuted instantiation: activity.c:c_full Unexecuted instantiation: applet.c:c_full Unexecuted instantiation: backend.c:c_full Unexecuted instantiation: cache.c:c_full Unexecuted instantiation: channel.c:c_full Unexecuted instantiation: dns.c:c_full Unexecuted instantiation: dns_ring.c:c_full Unexecuted instantiation: fcgi-app.c:c_full Unexecuted instantiation: http_fetch.c:c_full Unexecuted instantiation: payload.c:c_full Unexecuted instantiation: stats-json.c:c_full Unexecuted instantiation: flt_spoe.c:c_full |
127 | | |
128 | | /* co_data() : returns the amount of output data in the channel's buffer */ |
129 | | static inline size_t co_data(const struct channel *c) |
130 | 0 | { |
131 | 0 | CHECK_IF_HOT(c->output > c_data(c)); |
132 | 0 | return c->output; |
133 | 0 | } Unexecuted instantiation: cfgparse.c:co_data Unexecuted instantiation: cli.c:co_data Unexecuted instantiation: connection.c:co_data Unexecuted instantiation: debug.c:co_data Unexecuted instantiation: errors.c:co_data Unexecuted instantiation: filters.c:co_data Unexecuted instantiation: flt_http_comp.c:co_data Unexecuted instantiation: frontend.c:co_data Unexecuted instantiation: haproxy.c:co_data Unexecuted instantiation: http_ana.c:co_data Unexecuted instantiation: http_ext.c:co_data Unexecuted instantiation: log.c:co_data Unexecuted instantiation: mworker.c:co_data Unexecuted instantiation: peers.c:co_data Unexecuted instantiation: pool.c:co_data Unexecuted instantiation: proxy.c:co_data Unexecuted instantiation: resolvers.c:co_data Unexecuted instantiation: ring.c:co_data Unexecuted instantiation: sample.c:co_data Unexecuted instantiation: server.c:co_data Unexecuted instantiation: sink.c:co_data Unexecuted instantiation: stats-html.c:co_data Unexecuted instantiation: stats.c:co_data Unexecuted instantiation: stconn.c:co_data Unexecuted instantiation: stick_table.c:co_data Unexecuted instantiation: stream.c:co_data Unexecuted instantiation: tcp_rules.c:co_data Unexecuted instantiation: tools.c:co_data Unexecuted instantiation: trace.c:co_data Unexecuted instantiation: vars.c:co_data Unexecuted instantiation: activity.c:co_data Unexecuted instantiation: applet.c:co_data Unexecuted instantiation: backend.c:co_data Unexecuted instantiation: cache.c:co_data Unexecuted instantiation: channel.c:co_data Unexecuted instantiation: dns.c:co_data Unexecuted instantiation: dns_ring.c:co_data Unexecuted instantiation: fcgi-app.c:co_data Unexecuted instantiation: http_fetch.c:co_data Unexecuted instantiation: payload.c:co_data Unexecuted instantiation: stats-json.c:co_data Unexecuted instantiation: flt_spoe.c:co_data |
134 | | |
135 | | /* ci_data() : returns the amount of input data in the channel's buffer */ |
136 | | static inline size_t ci_data(const struct channel *c) |
137 | 0 | { |
138 | 0 | return c_data(c) - co_data(c); |
139 | 0 | } Unexecuted instantiation: cfgparse.c:ci_data Unexecuted instantiation: cli.c:ci_data Unexecuted instantiation: connection.c:ci_data Unexecuted instantiation: debug.c:ci_data Unexecuted instantiation: errors.c:ci_data Unexecuted instantiation: filters.c:ci_data Unexecuted instantiation: flt_http_comp.c:ci_data Unexecuted instantiation: frontend.c:ci_data Unexecuted instantiation: haproxy.c:ci_data Unexecuted instantiation: http_ana.c:ci_data Unexecuted instantiation: http_ext.c:ci_data Unexecuted instantiation: log.c:ci_data Unexecuted instantiation: mworker.c:ci_data Unexecuted instantiation: peers.c:ci_data Unexecuted instantiation: pool.c:ci_data Unexecuted instantiation: proxy.c:ci_data Unexecuted instantiation: resolvers.c:ci_data Unexecuted instantiation: ring.c:ci_data Unexecuted instantiation: sample.c:ci_data Unexecuted instantiation: server.c:ci_data Unexecuted instantiation: sink.c:ci_data Unexecuted instantiation: stats-html.c:ci_data Unexecuted instantiation: stats.c:ci_data Unexecuted instantiation: stconn.c:ci_data Unexecuted instantiation: stick_table.c:ci_data Unexecuted instantiation: stream.c:ci_data Unexecuted instantiation: tcp_rules.c:ci_data Unexecuted instantiation: tools.c:ci_data Unexecuted instantiation: trace.c:ci_data Unexecuted instantiation: vars.c:ci_data Unexecuted instantiation: activity.c:ci_data Unexecuted instantiation: applet.c:ci_data Unexecuted instantiation: backend.c:ci_data Unexecuted instantiation: cache.c:ci_data Unexecuted instantiation: channel.c:ci_data Unexecuted instantiation: dns.c:ci_data Unexecuted instantiation: dns_ring.c:ci_data Unexecuted instantiation: fcgi-app.c:ci_data Unexecuted instantiation: http_fetch.c:ci_data Unexecuted instantiation: payload.c:ci_data Unexecuted instantiation: stats-json.c:ci_data Unexecuted instantiation: flt_spoe.c:ci_data |
140 | | |
141 | | /* ci_next() : for an absolute pointer <p> or a relative offset <o> pointing to |
142 | | * a valid location within channel <c>'s buffer, returns either the absolute |
143 | | * pointer or the relative offset pointing to the next byte, which usually is |
144 | | * at (p + 1) unless p reaches the wrapping point and wrapping is needed. |
145 | | */ |
146 | | static inline size_t ci_next_ofs(const struct channel *c, size_t o) |
147 | 0 | { |
148 | 0 | return b_next_ofs(&c->buf, o); |
149 | 0 | } Unexecuted instantiation: cfgparse.c:ci_next_ofs Unexecuted instantiation: cli.c:ci_next_ofs Unexecuted instantiation: connection.c:ci_next_ofs Unexecuted instantiation: debug.c:ci_next_ofs Unexecuted instantiation: errors.c:ci_next_ofs Unexecuted instantiation: filters.c:ci_next_ofs Unexecuted instantiation: flt_http_comp.c:ci_next_ofs Unexecuted instantiation: frontend.c:ci_next_ofs Unexecuted instantiation: haproxy.c:ci_next_ofs Unexecuted instantiation: http_ana.c:ci_next_ofs Unexecuted instantiation: http_ext.c:ci_next_ofs Unexecuted instantiation: log.c:ci_next_ofs Unexecuted instantiation: mworker.c:ci_next_ofs Unexecuted instantiation: peers.c:ci_next_ofs Unexecuted instantiation: pool.c:ci_next_ofs Unexecuted instantiation: proxy.c:ci_next_ofs Unexecuted instantiation: resolvers.c:ci_next_ofs Unexecuted instantiation: ring.c:ci_next_ofs Unexecuted instantiation: sample.c:ci_next_ofs Unexecuted instantiation: server.c:ci_next_ofs Unexecuted instantiation: sink.c:ci_next_ofs Unexecuted instantiation: stats-html.c:ci_next_ofs Unexecuted instantiation: stats.c:ci_next_ofs Unexecuted instantiation: stconn.c:ci_next_ofs Unexecuted instantiation: stick_table.c:ci_next_ofs Unexecuted instantiation: stream.c:ci_next_ofs Unexecuted instantiation: tcp_rules.c:ci_next_ofs Unexecuted instantiation: tools.c:ci_next_ofs Unexecuted instantiation: trace.c:ci_next_ofs Unexecuted instantiation: vars.c:ci_next_ofs Unexecuted instantiation: activity.c:ci_next_ofs Unexecuted instantiation: applet.c:ci_next_ofs Unexecuted instantiation: backend.c:ci_next_ofs Unexecuted instantiation: cache.c:ci_next_ofs Unexecuted instantiation: channel.c:ci_next_ofs Unexecuted instantiation: dns.c:ci_next_ofs Unexecuted instantiation: dns_ring.c:ci_next_ofs Unexecuted instantiation: fcgi-app.c:ci_next_ofs Unexecuted instantiation: http_fetch.c:ci_next_ofs Unexecuted instantiation: payload.c:ci_next_ofs Unexecuted instantiation: stats-json.c:ci_next_ofs Unexecuted instantiation: flt_spoe.c:ci_next_ofs |
150 | | static inline char *ci_next(const struct channel *c, const char *p) |
151 | 0 | { |
152 | 0 | return b_next(&c->buf, p); |
153 | 0 | } Unexecuted instantiation: cfgparse.c:ci_next Unexecuted instantiation: cli.c:ci_next Unexecuted instantiation: connection.c:ci_next Unexecuted instantiation: debug.c:ci_next Unexecuted instantiation: errors.c:ci_next Unexecuted instantiation: filters.c:ci_next Unexecuted instantiation: flt_http_comp.c:ci_next Unexecuted instantiation: frontend.c:ci_next Unexecuted instantiation: haproxy.c:ci_next Unexecuted instantiation: http_ana.c:ci_next Unexecuted instantiation: http_ext.c:ci_next Unexecuted instantiation: log.c:ci_next Unexecuted instantiation: mworker.c:ci_next Unexecuted instantiation: peers.c:ci_next Unexecuted instantiation: pool.c:ci_next Unexecuted instantiation: proxy.c:ci_next Unexecuted instantiation: resolvers.c:ci_next Unexecuted instantiation: ring.c:ci_next Unexecuted instantiation: sample.c:ci_next Unexecuted instantiation: server.c:ci_next Unexecuted instantiation: sink.c:ci_next Unexecuted instantiation: stats-html.c:ci_next Unexecuted instantiation: stats.c:ci_next Unexecuted instantiation: stconn.c:ci_next Unexecuted instantiation: stick_table.c:ci_next Unexecuted instantiation: stream.c:ci_next Unexecuted instantiation: tcp_rules.c:ci_next Unexecuted instantiation: tools.c:ci_next Unexecuted instantiation: trace.c:ci_next Unexecuted instantiation: vars.c:ci_next Unexecuted instantiation: activity.c:ci_next Unexecuted instantiation: applet.c:ci_next Unexecuted instantiation: backend.c:ci_next Unexecuted instantiation: cache.c:ci_next Unexecuted instantiation: channel.c:ci_next Unexecuted instantiation: dns.c:ci_next Unexecuted instantiation: dns_ring.c:ci_next Unexecuted instantiation: fcgi-app.c:ci_next Unexecuted instantiation: http_fetch.c:ci_next Unexecuted instantiation: payload.c:ci_next Unexecuted instantiation: stats-json.c:ci_next Unexecuted instantiation: flt_spoe.c:ci_next |
154 | | |
155 | | |
156 | | /* c_ptr() : returns a pointer to an offset relative to the beginning of the |
157 | | * input data in the buffer. If instead the offset is negative, a pointer to |
158 | | * existing output data is returned. The function only takes care of wrapping, |
159 | | * it's up to the caller to ensure the offset is always within byte count |
160 | | * bounds. |
161 | | */ |
162 | | static inline char *c_ptr(const struct channel *c, ssize_t ofs) |
163 | 0 | { |
164 | 0 | return b_peek(&c->buf, co_data(c) + ofs); |
165 | 0 | } Unexecuted instantiation: cfgparse.c:c_ptr Unexecuted instantiation: cli.c:c_ptr Unexecuted instantiation: connection.c:c_ptr Unexecuted instantiation: debug.c:c_ptr Unexecuted instantiation: errors.c:c_ptr Unexecuted instantiation: filters.c:c_ptr Unexecuted instantiation: flt_http_comp.c:c_ptr Unexecuted instantiation: frontend.c:c_ptr Unexecuted instantiation: haproxy.c:c_ptr Unexecuted instantiation: http_ana.c:c_ptr Unexecuted instantiation: http_ext.c:c_ptr Unexecuted instantiation: log.c:c_ptr Unexecuted instantiation: mworker.c:c_ptr Unexecuted instantiation: peers.c:c_ptr Unexecuted instantiation: pool.c:c_ptr Unexecuted instantiation: proxy.c:c_ptr Unexecuted instantiation: resolvers.c:c_ptr Unexecuted instantiation: ring.c:c_ptr Unexecuted instantiation: sample.c:c_ptr Unexecuted instantiation: server.c:c_ptr Unexecuted instantiation: sink.c:c_ptr Unexecuted instantiation: stats-html.c:c_ptr Unexecuted instantiation: stats.c:c_ptr Unexecuted instantiation: stconn.c:c_ptr Unexecuted instantiation: stick_table.c:c_ptr Unexecuted instantiation: stream.c:c_ptr Unexecuted instantiation: tcp_rules.c:c_ptr Unexecuted instantiation: tools.c:c_ptr Unexecuted instantiation: trace.c:c_ptr Unexecuted instantiation: vars.c:c_ptr Unexecuted instantiation: activity.c:c_ptr Unexecuted instantiation: applet.c:c_ptr Unexecuted instantiation: backend.c:c_ptr Unexecuted instantiation: cache.c:c_ptr Unexecuted instantiation: channel.c:c_ptr Unexecuted instantiation: dns.c:c_ptr Unexecuted instantiation: dns_ring.c:c_ptr Unexecuted instantiation: fcgi-app.c:c_ptr Unexecuted instantiation: http_fetch.c:c_ptr Unexecuted instantiation: payload.c:c_ptr Unexecuted instantiation: stats-json.c:c_ptr Unexecuted instantiation: flt_spoe.c:c_ptr |
166 | | |
167 | | /* c_adv() : advances the channel's buffer by <adv> bytes, which means that the |
168 | | * buffer's pointer advances, and that as many bytes from in are transferred |
169 | | * from in to out. The caller is responsible for ensuring that adv is always |
170 | | * smaller than or equal to b->i. |
171 | | */ |
172 | | static inline void c_adv(struct channel *c, size_t adv) |
173 | 0 | { |
174 | 0 | c->output += adv; |
175 | 0 | BUG_ON_HOT(c->output > c_data(c)); |
176 | 0 | } Unexecuted instantiation: cfgparse.c:c_adv Unexecuted instantiation: cli.c:c_adv Unexecuted instantiation: connection.c:c_adv Unexecuted instantiation: debug.c:c_adv Unexecuted instantiation: errors.c:c_adv Unexecuted instantiation: filters.c:c_adv Unexecuted instantiation: flt_http_comp.c:c_adv Unexecuted instantiation: frontend.c:c_adv Unexecuted instantiation: haproxy.c:c_adv Unexecuted instantiation: http_ana.c:c_adv Unexecuted instantiation: http_ext.c:c_adv Unexecuted instantiation: log.c:c_adv Unexecuted instantiation: mworker.c:c_adv Unexecuted instantiation: peers.c:c_adv Unexecuted instantiation: pool.c:c_adv Unexecuted instantiation: proxy.c:c_adv Unexecuted instantiation: resolvers.c:c_adv Unexecuted instantiation: ring.c:c_adv Unexecuted instantiation: sample.c:c_adv Unexecuted instantiation: server.c:c_adv Unexecuted instantiation: sink.c:c_adv Unexecuted instantiation: stats-html.c:c_adv Unexecuted instantiation: stats.c:c_adv Unexecuted instantiation: stconn.c:c_adv Unexecuted instantiation: stick_table.c:c_adv Unexecuted instantiation: stream.c:c_adv Unexecuted instantiation: tcp_rules.c:c_adv Unexecuted instantiation: tools.c:c_adv Unexecuted instantiation: trace.c:c_adv Unexecuted instantiation: vars.c:c_adv Unexecuted instantiation: activity.c:c_adv Unexecuted instantiation: applet.c:c_adv Unexecuted instantiation: backend.c:c_adv Unexecuted instantiation: cache.c:c_adv Unexecuted instantiation: channel.c:c_adv Unexecuted instantiation: dns.c:c_adv Unexecuted instantiation: dns_ring.c:c_adv Unexecuted instantiation: fcgi-app.c:c_adv Unexecuted instantiation: http_fetch.c:c_adv Unexecuted instantiation: payload.c:c_adv Unexecuted instantiation: stats-json.c:c_adv Unexecuted instantiation: flt_spoe.c:c_adv |
177 | | |
178 | | /* c_rew() : rewinds the channel's buffer by <adv> bytes, which means that the |
179 | | * buffer's pointer goes backwards, and that as many bytes from out are moved |
180 | | * to in. The caller is responsible for ensuring that adv is always smaller |
181 | | * than or equal to b->o. |
182 | | */ |
183 | | static inline void c_rew(struct channel *c, size_t adv) |
184 | 0 | { |
185 | 0 | BUG_ON_HOT(c->output < adv); |
186 | 0 | c->output -= adv; |
187 | 0 | } Unexecuted instantiation: cfgparse.c:c_rew Unexecuted instantiation: cli.c:c_rew Unexecuted instantiation: connection.c:c_rew Unexecuted instantiation: debug.c:c_rew Unexecuted instantiation: errors.c:c_rew Unexecuted instantiation: filters.c:c_rew Unexecuted instantiation: flt_http_comp.c:c_rew Unexecuted instantiation: frontend.c:c_rew Unexecuted instantiation: haproxy.c:c_rew Unexecuted instantiation: http_ana.c:c_rew Unexecuted instantiation: http_ext.c:c_rew Unexecuted instantiation: log.c:c_rew Unexecuted instantiation: mworker.c:c_rew Unexecuted instantiation: peers.c:c_rew Unexecuted instantiation: pool.c:c_rew Unexecuted instantiation: proxy.c:c_rew Unexecuted instantiation: resolvers.c:c_rew Unexecuted instantiation: ring.c:c_rew Unexecuted instantiation: sample.c:c_rew Unexecuted instantiation: server.c:c_rew Unexecuted instantiation: sink.c:c_rew Unexecuted instantiation: stats-html.c:c_rew Unexecuted instantiation: stats.c:c_rew Unexecuted instantiation: stconn.c:c_rew Unexecuted instantiation: stick_table.c:c_rew Unexecuted instantiation: stream.c:c_rew Unexecuted instantiation: tcp_rules.c:c_rew Unexecuted instantiation: tools.c:c_rew Unexecuted instantiation: trace.c:c_rew Unexecuted instantiation: vars.c:c_rew Unexecuted instantiation: activity.c:c_rew Unexecuted instantiation: applet.c:c_rew Unexecuted instantiation: backend.c:c_rew Unexecuted instantiation: cache.c:c_rew Unexecuted instantiation: channel.c:c_rew Unexecuted instantiation: dns.c:c_rew Unexecuted instantiation: dns_ring.c:c_rew Unexecuted instantiation: fcgi-app.c:c_rew Unexecuted instantiation: http_fetch.c:c_rew Unexecuted instantiation: payload.c:c_rew Unexecuted instantiation: stats-json.c:c_rew Unexecuted instantiation: flt_spoe.c:c_rew |
188 | | |
189 | | /* c_realign_if_empty() : realign the channel's buffer if it's empty */ |
190 | | static inline void c_realign_if_empty(struct channel *chn) |
191 | 0 | { |
192 | 0 | b_realign_if_empty(&chn->buf); |
193 | 0 | } Unexecuted instantiation: cfgparse.c:c_realign_if_empty Unexecuted instantiation: cli.c:c_realign_if_empty Unexecuted instantiation: connection.c:c_realign_if_empty Unexecuted instantiation: debug.c:c_realign_if_empty Unexecuted instantiation: errors.c:c_realign_if_empty Unexecuted instantiation: filters.c:c_realign_if_empty Unexecuted instantiation: flt_http_comp.c:c_realign_if_empty Unexecuted instantiation: frontend.c:c_realign_if_empty Unexecuted instantiation: haproxy.c:c_realign_if_empty Unexecuted instantiation: http_ana.c:c_realign_if_empty Unexecuted instantiation: http_ext.c:c_realign_if_empty Unexecuted instantiation: log.c:c_realign_if_empty Unexecuted instantiation: mworker.c:c_realign_if_empty Unexecuted instantiation: peers.c:c_realign_if_empty Unexecuted instantiation: pool.c:c_realign_if_empty Unexecuted instantiation: proxy.c:c_realign_if_empty Unexecuted instantiation: resolvers.c:c_realign_if_empty Unexecuted instantiation: ring.c:c_realign_if_empty Unexecuted instantiation: sample.c:c_realign_if_empty Unexecuted instantiation: server.c:c_realign_if_empty Unexecuted instantiation: sink.c:c_realign_if_empty Unexecuted instantiation: stats-html.c:c_realign_if_empty Unexecuted instantiation: stats.c:c_realign_if_empty Unexecuted instantiation: stconn.c:c_realign_if_empty Unexecuted instantiation: stick_table.c:c_realign_if_empty Unexecuted instantiation: stream.c:c_realign_if_empty Unexecuted instantiation: tcp_rules.c:c_realign_if_empty Unexecuted instantiation: tools.c:c_realign_if_empty Unexecuted instantiation: trace.c:c_realign_if_empty Unexecuted instantiation: vars.c:c_realign_if_empty Unexecuted instantiation: activity.c:c_realign_if_empty Unexecuted instantiation: applet.c:c_realign_if_empty Unexecuted instantiation: backend.c:c_realign_if_empty Unexecuted instantiation: cache.c:c_realign_if_empty Unexecuted instantiation: channel.c:c_realign_if_empty Unexecuted instantiation: dns.c:c_realign_if_empty Unexecuted instantiation: dns_ring.c:c_realign_if_empty Unexecuted instantiation: fcgi-app.c:c_realign_if_empty Unexecuted instantiation: http_fetch.c:c_realign_if_empty Unexecuted instantiation: payload.c:c_realign_if_empty Unexecuted instantiation: stats-json.c:c_realign_if_empty Unexecuted instantiation: flt_spoe.c:c_realign_if_empty |
194 | | |
195 | | /* Sets the amount of output for the channel */ |
196 | | static inline void co_set_data(struct channel *c, size_t output) |
197 | 0 | { |
198 | 0 | BUG_ON_HOT(output > c_data(c)); |
199 | 0 | c->output = output; |
200 | 0 | } Unexecuted instantiation: cfgparse.c:co_set_data Unexecuted instantiation: cli.c:co_set_data Unexecuted instantiation: connection.c:co_set_data Unexecuted instantiation: debug.c:co_set_data Unexecuted instantiation: errors.c:co_set_data Unexecuted instantiation: filters.c:co_set_data Unexecuted instantiation: flt_http_comp.c:co_set_data Unexecuted instantiation: frontend.c:co_set_data Unexecuted instantiation: haproxy.c:co_set_data Unexecuted instantiation: http_ana.c:co_set_data Unexecuted instantiation: http_ext.c:co_set_data Unexecuted instantiation: log.c:co_set_data Unexecuted instantiation: mworker.c:co_set_data Unexecuted instantiation: peers.c:co_set_data Unexecuted instantiation: pool.c:co_set_data Unexecuted instantiation: proxy.c:co_set_data Unexecuted instantiation: resolvers.c:co_set_data Unexecuted instantiation: ring.c:co_set_data Unexecuted instantiation: sample.c:co_set_data Unexecuted instantiation: server.c:co_set_data Unexecuted instantiation: sink.c:co_set_data Unexecuted instantiation: stats-html.c:co_set_data Unexecuted instantiation: stats.c:co_set_data Unexecuted instantiation: stconn.c:co_set_data Unexecuted instantiation: stick_table.c:co_set_data Unexecuted instantiation: stream.c:co_set_data Unexecuted instantiation: tcp_rules.c:co_set_data Unexecuted instantiation: tools.c:co_set_data Unexecuted instantiation: trace.c:co_set_data Unexecuted instantiation: vars.c:co_set_data Unexecuted instantiation: activity.c:co_set_data Unexecuted instantiation: applet.c:co_set_data Unexecuted instantiation: backend.c:co_set_data Unexecuted instantiation: cache.c:co_set_data Unexecuted instantiation: channel.c:co_set_data Unexecuted instantiation: dns.c:co_set_data Unexecuted instantiation: dns_ring.c:co_set_data Unexecuted instantiation: fcgi-app.c:co_set_data Unexecuted instantiation: http_fetch.c:co_set_data Unexecuted instantiation: payload.c:co_set_data Unexecuted instantiation: stats-json.c:co_set_data Unexecuted instantiation: flt_spoe.c:co_set_data |
201 | | |
202 | | |
203 | | /* co_head() : returns a pointer to the beginning of output data in the buffer. |
204 | | * The "__" variants don't support wrapping, "ofs" are relative to |
205 | | * the buffer's origin. |
206 | | */ |
207 | | static inline size_t __co_head_ofs(const struct channel *c) |
208 | 0 | { |
209 | 0 | return __b_peek_ofs(&c->buf, 0); |
210 | 0 | } Unexecuted instantiation: cfgparse.c:__co_head_ofs Unexecuted instantiation: cli.c:__co_head_ofs Unexecuted instantiation: connection.c:__co_head_ofs Unexecuted instantiation: debug.c:__co_head_ofs Unexecuted instantiation: errors.c:__co_head_ofs Unexecuted instantiation: filters.c:__co_head_ofs Unexecuted instantiation: flt_http_comp.c:__co_head_ofs Unexecuted instantiation: frontend.c:__co_head_ofs Unexecuted instantiation: haproxy.c:__co_head_ofs Unexecuted instantiation: http_ana.c:__co_head_ofs Unexecuted instantiation: http_ext.c:__co_head_ofs Unexecuted instantiation: log.c:__co_head_ofs Unexecuted instantiation: mworker.c:__co_head_ofs Unexecuted instantiation: peers.c:__co_head_ofs Unexecuted instantiation: pool.c:__co_head_ofs Unexecuted instantiation: proxy.c:__co_head_ofs Unexecuted instantiation: resolvers.c:__co_head_ofs Unexecuted instantiation: ring.c:__co_head_ofs Unexecuted instantiation: sample.c:__co_head_ofs Unexecuted instantiation: server.c:__co_head_ofs Unexecuted instantiation: sink.c:__co_head_ofs Unexecuted instantiation: stats-html.c:__co_head_ofs Unexecuted instantiation: stats.c:__co_head_ofs Unexecuted instantiation: stconn.c:__co_head_ofs Unexecuted instantiation: stick_table.c:__co_head_ofs Unexecuted instantiation: stream.c:__co_head_ofs Unexecuted instantiation: tcp_rules.c:__co_head_ofs Unexecuted instantiation: tools.c:__co_head_ofs Unexecuted instantiation: trace.c:__co_head_ofs Unexecuted instantiation: vars.c:__co_head_ofs Unexecuted instantiation: activity.c:__co_head_ofs Unexecuted instantiation: applet.c:__co_head_ofs Unexecuted instantiation: backend.c:__co_head_ofs Unexecuted instantiation: cache.c:__co_head_ofs Unexecuted instantiation: channel.c:__co_head_ofs Unexecuted instantiation: dns.c:__co_head_ofs Unexecuted instantiation: dns_ring.c:__co_head_ofs Unexecuted instantiation: fcgi-app.c:__co_head_ofs Unexecuted instantiation: http_fetch.c:__co_head_ofs Unexecuted instantiation: payload.c:__co_head_ofs Unexecuted instantiation: stats-json.c:__co_head_ofs Unexecuted instantiation: flt_spoe.c:__co_head_ofs |
211 | | static inline char *__co_head(const struct channel *c) |
212 | 0 | { |
213 | 0 | return __b_peek(&c->buf, 0); |
214 | 0 | } Unexecuted instantiation: cfgparse.c:__co_head Unexecuted instantiation: cli.c:__co_head Unexecuted instantiation: connection.c:__co_head Unexecuted instantiation: debug.c:__co_head Unexecuted instantiation: errors.c:__co_head Unexecuted instantiation: filters.c:__co_head Unexecuted instantiation: flt_http_comp.c:__co_head Unexecuted instantiation: frontend.c:__co_head Unexecuted instantiation: haproxy.c:__co_head Unexecuted instantiation: http_ana.c:__co_head Unexecuted instantiation: http_ext.c:__co_head Unexecuted instantiation: log.c:__co_head Unexecuted instantiation: mworker.c:__co_head Unexecuted instantiation: peers.c:__co_head Unexecuted instantiation: pool.c:__co_head Unexecuted instantiation: proxy.c:__co_head Unexecuted instantiation: resolvers.c:__co_head Unexecuted instantiation: ring.c:__co_head Unexecuted instantiation: sample.c:__co_head Unexecuted instantiation: server.c:__co_head Unexecuted instantiation: sink.c:__co_head Unexecuted instantiation: stats-html.c:__co_head Unexecuted instantiation: stats.c:__co_head Unexecuted instantiation: stconn.c:__co_head Unexecuted instantiation: stick_table.c:__co_head Unexecuted instantiation: stream.c:__co_head Unexecuted instantiation: tcp_rules.c:__co_head Unexecuted instantiation: tools.c:__co_head Unexecuted instantiation: trace.c:__co_head Unexecuted instantiation: vars.c:__co_head Unexecuted instantiation: activity.c:__co_head Unexecuted instantiation: applet.c:__co_head Unexecuted instantiation: backend.c:__co_head Unexecuted instantiation: cache.c:__co_head Unexecuted instantiation: channel.c:__co_head Unexecuted instantiation: dns.c:__co_head Unexecuted instantiation: dns_ring.c:__co_head Unexecuted instantiation: fcgi-app.c:__co_head Unexecuted instantiation: http_fetch.c:__co_head Unexecuted instantiation: payload.c:__co_head Unexecuted instantiation: stats-json.c:__co_head Unexecuted instantiation: flt_spoe.c:__co_head |
215 | | static inline size_t co_head_ofs(const struct channel *c) |
216 | 0 | { |
217 | 0 | return b_peek_ofs(&c->buf, 0); |
218 | 0 | } Unexecuted instantiation: cfgparse.c:co_head_ofs Unexecuted instantiation: cli.c:co_head_ofs Unexecuted instantiation: connection.c:co_head_ofs Unexecuted instantiation: debug.c:co_head_ofs Unexecuted instantiation: errors.c:co_head_ofs Unexecuted instantiation: filters.c:co_head_ofs Unexecuted instantiation: flt_http_comp.c:co_head_ofs Unexecuted instantiation: frontend.c:co_head_ofs Unexecuted instantiation: haproxy.c:co_head_ofs Unexecuted instantiation: http_ana.c:co_head_ofs Unexecuted instantiation: http_ext.c:co_head_ofs Unexecuted instantiation: log.c:co_head_ofs Unexecuted instantiation: mworker.c:co_head_ofs Unexecuted instantiation: peers.c:co_head_ofs Unexecuted instantiation: pool.c:co_head_ofs Unexecuted instantiation: proxy.c:co_head_ofs Unexecuted instantiation: resolvers.c:co_head_ofs Unexecuted instantiation: ring.c:co_head_ofs Unexecuted instantiation: sample.c:co_head_ofs Unexecuted instantiation: server.c:co_head_ofs Unexecuted instantiation: sink.c:co_head_ofs Unexecuted instantiation: stats-html.c:co_head_ofs Unexecuted instantiation: stats.c:co_head_ofs Unexecuted instantiation: stconn.c:co_head_ofs Unexecuted instantiation: stick_table.c:co_head_ofs Unexecuted instantiation: stream.c:co_head_ofs Unexecuted instantiation: tcp_rules.c:co_head_ofs Unexecuted instantiation: tools.c:co_head_ofs Unexecuted instantiation: trace.c:co_head_ofs Unexecuted instantiation: vars.c:co_head_ofs Unexecuted instantiation: activity.c:co_head_ofs Unexecuted instantiation: applet.c:co_head_ofs Unexecuted instantiation: backend.c:co_head_ofs Unexecuted instantiation: cache.c:co_head_ofs Unexecuted instantiation: channel.c:co_head_ofs Unexecuted instantiation: dns.c:co_head_ofs Unexecuted instantiation: dns_ring.c:co_head_ofs Unexecuted instantiation: fcgi-app.c:co_head_ofs Unexecuted instantiation: http_fetch.c:co_head_ofs Unexecuted instantiation: payload.c:co_head_ofs Unexecuted instantiation: stats-json.c:co_head_ofs Unexecuted instantiation: flt_spoe.c:co_head_ofs |
219 | | static inline char *co_head(const struct channel *c) |
220 | 0 | { |
221 | 0 | return b_peek(&c->buf, 0); |
222 | 0 | } Unexecuted instantiation: cfgparse.c:co_head Unexecuted instantiation: cli.c:co_head Unexecuted instantiation: connection.c:co_head Unexecuted instantiation: debug.c:co_head Unexecuted instantiation: errors.c:co_head Unexecuted instantiation: filters.c:co_head Unexecuted instantiation: flt_http_comp.c:co_head Unexecuted instantiation: frontend.c:co_head Unexecuted instantiation: haproxy.c:co_head Unexecuted instantiation: http_ana.c:co_head Unexecuted instantiation: http_ext.c:co_head Unexecuted instantiation: log.c:co_head Unexecuted instantiation: mworker.c:co_head Unexecuted instantiation: peers.c:co_head Unexecuted instantiation: pool.c:co_head Unexecuted instantiation: proxy.c:co_head Unexecuted instantiation: resolvers.c:co_head Unexecuted instantiation: ring.c:co_head Unexecuted instantiation: sample.c:co_head Unexecuted instantiation: server.c:co_head Unexecuted instantiation: sink.c:co_head Unexecuted instantiation: stats-html.c:co_head Unexecuted instantiation: stats.c:co_head Unexecuted instantiation: stconn.c:co_head Unexecuted instantiation: stick_table.c:co_head Unexecuted instantiation: stream.c:co_head Unexecuted instantiation: tcp_rules.c:co_head Unexecuted instantiation: tools.c:co_head Unexecuted instantiation: trace.c:co_head Unexecuted instantiation: vars.c:co_head Unexecuted instantiation: activity.c:co_head Unexecuted instantiation: applet.c:co_head Unexecuted instantiation: backend.c:co_head Unexecuted instantiation: cache.c:co_head Unexecuted instantiation: channel.c:co_head Unexecuted instantiation: dns.c:co_head Unexecuted instantiation: dns_ring.c:co_head Unexecuted instantiation: fcgi-app.c:co_head Unexecuted instantiation: http_fetch.c:co_head Unexecuted instantiation: payload.c:co_head Unexecuted instantiation: stats-json.c:co_head Unexecuted instantiation: flt_spoe.c:co_head |
223 | | |
224 | | |
225 | | /* co_tail() : returns a pointer to the end of output data in the buffer. |
226 | | * The "__" variants don't support wrapping, "ofs" are relative to |
227 | | * the buffer's origin. |
228 | | */ |
229 | | static inline size_t __co_tail_ofs(const struct channel *c) |
230 | 0 | { |
231 | 0 | return __b_peek_ofs(&c->buf, co_data(c)); |
232 | 0 | } Unexecuted instantiation: cfgparse.c:__co_tail_ofs Unexecuted instantiation: cli.c:__co_tail_ofs Unexecuted instantiation: connection.c:__co_tail_ofs Unexecuted instantiation: debug.c:__co_tail_ofs Unexecuted instantiation: errors.c:__co_tail_ofs Unexecuted instantiation: filters.c:__co_tail_ofs Unexecuted instantiation: flt_http_comp.c:__co_tail_ofs Unexecuted instantiation: frontend.c:__co_tail_ofs Unexecuted instantiation: haproxy.c:__co_tail_ofs Unexecuted instantiation: http_ana.c:__co_tail_ofs Unexecuted instantiation: http_ext.c:__co_tail_ofs Unexecuted instantiation: log.c:__co_tail_ofs Unexecuted instantiation: mworker.c:__co_tail_ofs Unexecuted instantiation: peers.c:__co_tail_ofs Unexecuted instantiation: pool.c:__co_tail_ofs Unexecuted instantiation: proxy.c:__co_tail_ofs Unexecuted instantiation: resolvers.c:__co_tail_ofs Unexecuted instantiation: ring.c:__co_tail_ofs Unexecuted instantiation: sample.c:__co_tail_ofs Unexecuted instantiation: server.c:__co_tail_ofs Unexecuted instantiation: sink.c:__co_tail_ofs Unexecuted instantiation: stats-html.c:__co_tail_ofs Unexecuted instantiation: stats.c:__co_tail_ofs Unexecuted instantiation: stconn.c:__co_tail_ofs Unexecuted instantiation: stick_table.c:__co_tail_ofs Unexecuted instantiation: stream.c:__co_tail_ofs Unexecuted instantiation: tcp_rules.c:__co_tail_ofs Unexecuted instantiation: tools.c:__co_tail_ofs Unexecuted instantiation: trace.c:__co_tail_ofs Unexecuted instantiation: vars.c:__co_tail_ofs Unexecuted instantiation: activity.c:__co_tail_ofs Unexecuted instantiation: applet.c:__co_tail_ofs Unexecuted instantiation: backend.c:__co_tail_ofs Unexecuted instantiation: cache.c:__co_tail_ofs Unexecuted instantiation: channel.c:__co_tail_ofs Unexecuted instantiation: dns.c:__co_tail_ofs Unexecuted instantiation: dns_ring.c:__co_tail_ofs Unexecuted instantiation: fcgi-app.c:__co_tail_ofs Unexecuted instantiation: http_fetch.c:__co_tail_ofs Unexecuted instantiation: payload.c:__co_tail_ofs Unexecuted instantiation: stats-json.c:__co_tail_ofs Unexecuted instantiation: flt_spoe.c:__co_tail_ofs |
233 | | static inline char *__co_tail(const struct channel *c) |
234 | 0 | { |
235 | 0 | return __b_peek(&c->buf, co_data(c)); |
236 | 0 | } Unexecuted instantiation: cfgparse.c:__co_tail Unexecuted instantiation: cli.c:__co_tail Unexecuted instantiation: connection.c:__co_tail Unexecuted instantiation: debug.c:__co_tail Unexecuted instantiation: errors.c:__co_tail Unexecuted instantiation: filters.c:__co_tail Unexecuted instantiation: flt_http_comp.c:__co_tail Unexecuted instantiation: frontend.c:__co_tail Unexecuted instantiation: haproxy.c:__co_tail Unexecuted instantiation: http_ana.c:__co_tail Unexecuted instantiation: http_ext.c:__co_tail Unexecuted instantiation: log.c:__co_tail Unexecuted instantiation: mworker.c:__co_tail Unexecuted instantiation: peers.c:__co_tail Unexecuted instantiation: pool.c:__co_tail Unexecuted instantiation: proxy.c:__co_tail Unexecuted instantiation: resolvers.c:__co_tail Unexecuted instantiation: ring.c:__co_tail Unexecuted instantiation: sample.c:__co_tail Unexecuted instantiation: server.c:__co_tail Unexecuted instantiation: sink.c:__co_tail Unexecuted instantiation: stats-html.c:__co_tail Unexecuted instantiation: stats.c:__co_tail Unexecuted instantiation: stconn.c:__co_tail Unexecuted instantiation: stick_table.c:__co_tail Unexecuted instantiation: stream.c:__co_tail Unexecuted instantiation: tcp_rules.c:__co_tail Unexecuted instantiation: tools.c:__co_tail Unexecuted instantiation: trace.c:__co_tail Unexecuted instantiation: vars.c:__co_tail Unexecuted instantiation: activity.c:__co_tail Unexecuted instantiation: applet.c:__co_tail Unexecuted instantiation: backend.c:__co_tail Unexecuted instantiation: cache.c:__co_tail Unexecuted instantiation: channel.c:__co_tail Unexecuted instantiation: dns.c:__co_tail Unexecuted instantiation: dns_ring.c:__co_tail Unexecuted instantiation: fcgi-app.c:__co_tail Unexecuted instantiation: http_fetch.c:__co_tail Unexecuted instantiation: payload.c:__co_tail Unexecuted instantiation: stats-json.c:__co_tail Unexecuted instantiation: flt_spoe.c:__co_tail |
237 | | static inline size_t co_tail_ofs(const struct channel *c) |
238 | 0 | { |
239 | 0 | return b_peek_ofs(&c->buf, co_data(c)); |
240 | 0 | } Unexecuted instantiation: cfgparse.c:co_tail_ofs Unexecuted instantiation: cli.c:co_tail_ofs Unexecuted instantiation: connection.c:co_tail_ofs Unexecuted instantiation: debug.c:co_tail_ofs Unexecuted instantiation: errors.c:co_tail_ofs Unexecuted instantiation: filters.c:co_tail_ofs Unexecuted instantiation: flt_http_comp.c:co_tail_ofs Unexecuted instantiation: frontend.c:co_tail_ofs Unexecuted instantiation: haproxy.c:co_tail_ofs Unexecuted instantiation: http_ana.c:co_tail_ofs Unexecuted instantiation: http_ext.c:co_tail_ofs Unexecuted instantiation: log.c:co_tail_ofs Unexecuted instantiation: mworker.c:co_tail_ofs Unexecuted instantiation: peers.c:co_tail_ofs Unexecuted instantiation: pool.c:co_tail_ofs Unexecuted instantiation: proxy.c:co_tail_ofs Unexecuted instantiation: resolvers.c:co_tail_ofs Unexecuted instantiation: ring.c:co_tail_ofs Unexecuted instantiation: sample.c:co_tail_ofs Unexecuted instantiation: server.c:co_tail_ofs Unexecuted instantiation: sink.c:co_tail_ofs Unexecuted instantiation: stats-html.c:co_tail_ofs Unexecuted instantiation: stats.c:co_tail_ofs Unexecuted instantiation: stconn.c:co_tail_ofs Unexecuted instantiation: stick_table.c:co_tail_ofs Unexecuted instantiation: stream.c:co_tail_ofs Unexecuted instantiation: tcp_rules.c:co_tail_ofs Unexecuted instantiation: tools.c:co_tail_ofs Unexecuted instantiation: trace.c:co_tail_ofs Unexecuted instantiation: vars.c:co_tail_ofs Unexecuted instantiation: activity.c:co_tail_ofs Unexecuted instantiation: applet.c:co_tail_ofs Unexecuted instantiation: backend.c:co_tail_ofs Unexecuted instantiation: cache.c:co_tail_ofs Unexecuted instantiation: channel.c:co_tail_ofs Unexecuted instantiation: dns.c:co_tail_ofs Unexecuted instantiation: dns_ring.c:co_tail_ofs Unexecuted instantiation: fcgi-app.c:co_tail_ofs Unexecuted instantiation: http_fetch.c:co_tail_ofs Unexecuted instantiation: payload.c:co_tail_ofs Unexecuted instantiation: stats-json.c:co_tail_ofs Unexecuted instantiation: flt_spoe.c:co_tail_ofs |
241 | | static inline char *co_tail(const struct channel *c) |
242 | 0 | { |
243 | 0 | return b_peek(&c->buf, co_data(c)); |
244 | 0 | } Unexecuted instantiation: cfgparse.c:co_tail Unexecuted instantiation: cli.c:co_tail Unexecuted instantiation: connection.c:co_tail Unexecuted instantiation: debug.c:co_tail Unexecuted instantiation: errors.c:co_tail Unexecuted instantiation: filters.c:co_tail Unexecuted instantiation: flt_http_comp.c:co_tail Unexecuted instantiation: frontend.c:co_tail Unexecuted instantiation: haproxy.c:co_tail Unexecuted instantiation: http_ana.c:co_tail Unexecuted instantiation: http_ext.c:co_tail Unexecuted instantiation: log.c:co_tail Unexecuted instantiation: mworker.c:co_tail Unexecuted instantiation: peers.c:co_tail Unexecuted instantiation: pool.c:co_tail Unexecuted instantiation: proxy.c:co_tail Unexecuted instantiation: resolvers.c:co_tail Unexecuted instantiation: ring.c:co_tail Unexecuted instantiation: sample.c:co_tail Unexecuted instantiation: server.c:co_tail Unexecuted instantiation: sink.c:co_tail Unexecuted instantiation: stats-html.c:co_tail Unexecuted instantiation: stats.c:co_tail Unexecuted instantiation: stconn.c:co_tail Unexecuted instantiation: stick_table.c:co_tail Unexecuted instantiation: stream.c:co_tail Unexecuted instantiation: tcp_rules.c:co_tail Unexecuted instantiation: tools.c:co_tail Unexecuted instantiation: trace.c:co_tail Unexecuted instantiation: vars.c:co_tail Unexecuted instantiation: activity.c:co_tail Unexecuted instantiation: applet.c:co_tail Unexecuted instantiation: backend.c:co_tail Unexecuted instantiation: cache.c:co_tail Unexecuted instantiation: channel.c:co_tail Unexecuted instantiation: dns.c:co_tail Unexecuted instantiation: dns_ring.c:co_tail Unexecuted instantiation: fcgi-app.c:co_tail Unexecuted instantiation: http_fetch.c:co_tail Unexecuted instantiation: payload.c:co_tail Unexecuted instantiation: stats-json.c:co_tail Unexecuted instantiation: flt_spoe.c:co_tail |
245 | | |
246 | | |
247 | | /* ci_head() : returns a pointer to the beginning of input data in the buffer. |
248 | | * The "__" variants don't support wrapping, "ofs" are relative to |
249 | | * the buffer's origin. |
250 | | */ |
251 | | static inline size_t __ci_head_ofs(const struct channel *c) |
252 | 0 | { |
253 | 0 | return __b_peek_ofs(&c->buf, co_data(c)); |
254 | 0 | } Unexecuted instantiation: cfgparse.c:__ci_head_ofs Unexecuted instantiation: cli.c:__ci_head_ofs Unexecuted instantiation: connection.c:__ci_head_ofs Unexecuted instantiation: debug.c:__ci_head_ofs Unexecuted instantiation: errors.c:__ci_head_ofs Unexecuted instantiation: filters.c:__ci_head_ofs Unexecuted instantiation: flt_http_comp.c:__ci_head_ofs Unexecuted instantiation: frontend.c:__ci_head_ofs Unexecuted instantiation: haproxy.c:__ci_head_ofs Unexecuted instantiation: http_ana.c:__ci_head_ofs Unexecuted instantiation: http_ext.c:__ci_head_ofs Unexecuted instantiation: log.c:__ci_head_ofs Unexecuted instantiation: mworker.c:__ci_head_ofs Unexecuted instantiation: peers.c:__ci_head_ofs Unexecuted instantiation: pool.c:__ci_head_ofs Unexecuted instantiation: proxy.c:__ci_head_ofs Unexecuted instantiation: resolvers.c:__ci_head_ofs Unexecuted instantiation: ring.c:__ci_head_ofs Unexecuted instantiation: sample.c:__ci_head_ofs Unexecuted instantiation: server.c:__ci_head_ofs Unexecuted instantiation: sink.c:__ci_head_ofs Unexecuted instantiation: stats-html.c:__ci_head_ofs Unexecuted instantiation: stats.c:__ci_head_ofs Unexecuted instantiation: stconn.c:__ci_head_ofs Unexecuted instantiation: stick_table.c:__ci_head_ofs Unexecuted instantiation: stream.c:__ci_head_ofs Unexecuted instantiation: tcp_rules.c:__ci_head_ofs Unexecuted instantiation: tools.c:__ci_head_ofs Unexecuted instantiation: trace.c:__ci_head_ofs Unexecuted instantiation: vars.c:__ci_head_ofs Unexecuted instantiation: activity.c:__ci_head_ofs Unexecuted instantiation: applet.c:__ci_head_ofs Unexecuted instantiation: backend.c:__ci_head_ofs Unexecuted instantiation: cache.c:__ci_head_ofs Unexecuted instantiation: channel.c:__ci_head_ofs Unexecuted instantiation: dns.c:__ci_head_ofs Unexecuted instantiation: dns_ring.c:__ci_head_ofs Unexecuted instantiation: fcgi-app.c:__ci_head_ofs Unexecuted instantiation: http_fetch.c:__ci_head_ofs Unexecuted instantiation: payload.c:__ci_head_ofs Unexecuted instantiation: stats-json.c:__ci_head_ofs Unexecuted instantiation: flt_spoe.c:__ci_head_ofs |
255 | | static inline char *__ci_head(const struct channel *c) |
256 | 0 | { |
257 | 0 | return __b_peek(&c->buf, co_data(c)); |
258 | 0 | } Unexecuted instantiation: cfgparse.c:__ci_head Unexecuted instantiation: cli.c:__ci_head Unexecuted instantiation: connection.c:__ci_head Unexecuted instantiation: debug.c:__ci_head Unexecuted instantiation: errors.c:__ci_head Unexecuted instantiation: filters.c:__ci_head Unexecuted instantiation: flt_http_comp.c:__ci_head Unexecuted instantiation: frontend.c:__ci_head Unexecuted instantiation: haproxy.c:__ci_head Unexecuted instantiation: http_ana.c:__ci_head Unexecuted instantiation: http_ext.c:__ci_head Unexecuted instantiation: log.c:__ci_head Unexecuted instantiation: mworker.c:__ci_head Unexecuted instantiation: peers.c:__ci_head Unexecuted instantiation: pool.c:__ci_head Unexecuted instantiation: proxy.c:__ci_head Unexecuted instantiation: resolvers.c:__ci_head Unexecuted instantiation: ring.c:__ci_head Unexecuted instantiation: sample.c:__ci_head Unexecuted instantiation: server.c:__ci_head Unexecuted instantiation: sink.c:__ci_head Unexecuted instantiation: stats-html.c:__ci_head Unexecuted instantiation: stats.c:__ci_head Unexecuted instantiation: stconn.c:__ci_head Unexecuted instantiation: stick_table.c:__ci_head Unexecuted instantiation: stream.c:__ci_head Unexecuted instantiation: tcp_rules.c:__ci_head Unexecuted instantiation: tools.c:__ci_head Unexecuted instantiation: trace.c:__ci_head Unexecuted instantiation: vars.c:__ci_head Unexecuted instantiation: activity.c:__ci_head Unexecuted instantiation: applet.c:__ci_head Unexecuted instantiation: backend.c:__ci_head Unexecuted instantiation: cache.c:__ci_head Unexecuted instantiation: channel.c:__ci_head Unexecuted instantiation: dns.c:__ci_head Unexecuted instantiation: dns_ring.c:__ci_head Unexecuted instantiation: fcgi-app.c:__ci_head Unexecuted instantiation: http_fetch.c:__ci_head Unexecuted instantiation: payload.c:__ci_head Unexecuted instantiation: stats-json.c:__ci_head Unexecuted instantiation: flt_spoe.c:__ci_head |
259 | | static inline size_t ci_head_ofs(const struct channel *c) |
260 | 0 | { |
261 | 0 | return b_peek_ofs(&c->buf, co_data(c)); |
262 | 0 | } Unexecuted instantiation: cfgparse.c:ci_head_ofs Unexecuted instantiation: cli.c:ci_head_ofs Unexecuted instantiation: connection.c:ci_head_ofs Unexecuted instantiation: debug.c:ci_head_ofs Unexecuted instantiation: errors.c:ci_head_ofs Unexecuted instantiation: filters.c:ci_head_ofs Unexecuted instantiation: flt_http_comp.c:ci_head_ofs Unexecuted instantiation: frontend.c:ci_head_ofs Unexecuted instantiation: haproxy.c:ci_head_ofs Unexecuted instantiation: http_ana.c:ci_head_ofs Unexecuted instantiation: http_ext.c:ci_head_ofs Unexecuted instantiation: log.c:ci_head_ofs Unexecuted instantiation: mworker.c:ci_head_ofs Unexecuted instantiation: peers.c:ci_head_ofs Unexecuted instantiation: pool.c:ci_head_ofs Unexecuted instantiation: proxy.c:ci_head_ofs Unexecuted instantiation: resolvers.c:ci_head_ofs Unexecuted instantiation: ring.c:ci_head_ofs Unexecuted instantiation: sample.c:ci_head_ofs Unexecuted instantiation: server.c:ci_head_ofs Unexecuted instantiation: sink.c:ci_head_ofs Unexecuted instantiation: stats-html.c:ci_head_ofs Unexecuted instantiation: stats.c:ci_head_ofs Unexecuted instantiation: stconn.c:ci_head_ofs Unexecuted instantiation: stick_table.c:ci_head_ofs Unexecuted instantiation: stream.c:ci_head_ofs Unexecuted instantiation: tcp_rules.c:ci_head_ofs Unexecuted instantiation: tools.c:ci_head_ofs Unexecuted instantiation: trace.c:ci_head_ofs Unexecuted instantiation: vars.c:ci_head_ofs Unexecuted instantiation: activity.c:ci_head_ofs Unexecuted instantiation: applet.c:ci_head_ofs Unexecuted instantiation: backend.c:ci_head_ofs Unexecuted instantiation: cache.c:ci_head_ofs Unexecuted instantiation: channel.c:ci_head_ofs Unexecuted instantiation: dns.c:ci_head_ofs Unexecuted instantiation: dns_ring.c:ci_head_ofs Unexecuted instantiation: fcgi-app.c:ci_head_ofs Unexecuted instantiation: http_fetch.c:ci_head_ofs Unexecuted instantiation: payload.c:ci_head_ofs Unexecuted instantiation: stats-json.c:ci_head_ofs Unexecuted instantiation: flt_spoe.c:ci_head_ofs |
263 | | static inline char *ci_head(const struct channel *c) |
264 | 0 | { |
265 | 0 | return b_peek(&c->buf, co_data(c)); |
266 | 0 | } Unexecuted instantiation: cfgparse.c:ci_head Unexecuted instantiation: cli.c:ci_head Unexecuted instantiation: connection.c:ci_head Unexecuted instantiation: debug.c:ci_head Unexecuted instantiation: errors.c:ci_head Unexecuted instantiation: filters.c:ci_head Unexecuted instantiation: flt_http_comp.c:ci_head Unexecuted instantiation: frontend.c:ci_head Unexecuted instantiation: haproxy.c:ci_head Unexecuted instantiation: http_ana.c:ci_head Unexecuted instantiation: http_ext.c:ci_head Unexecuted instantiation: log.c:ci_head Unexecuted instantiation: mworker.c:ci_head Unexecuted instantiation: peers.c:ci_head Unexecuted instantiation: pool.c:ci_head Unexecuted instantiation: proxy.c:ci_head Unexecuted instantiation: resolvers.c:ci_head Unexecuted instantiation: ring.c:ci_head Unexecuted instantiation: sample.c:ci_head Unexecuted instantiation: server.c:ci_head Unexecuted instantiation: sink.c:ci_head Unexecuted instantiation: stats-html.c:ci_head Unexecuted instantiation: stats.c:ci_head Unexecuted instantiation: stconn.c:ci_head Unexecuted instantiation: stick_table.c:ci_head Unexecuted instantiation: stream.c:ci_head Unexecuted instantiation: tcp_rules.c:ci_head Unexecuted instantiation: tools.c:ci_head Unexecuted instantiation: trace.c:ci_head Unexecuted instantiation: vars.c:ci_head Unexecuted instantiation: activity.c:ci_head Unexecuted instantiation: applet.c:ci_head Unexecuted instantiation: backend.c:ci_head Unexecuted instantiation: cache.c:ci_head Unexecuted instantiation: channel.c:ci_head Unexecuted instantiation: dns.c:ci_head Unexecuted instantiation: dns_ring.c:ci_head Unexecuted instantiation: fcgi-app.c:ci_head Unexecuted instantiation: http_fetch.c:ci_head Unexecuted instantiation: payload.c:ci_head Unexecuted instantiation: stats-json.c:ci_head Unexecuted instantiation: flt_spoe.c:ci_head |
267 | | |
268 | | |
269 | | /* ci_tail() : returns a pointer to the end of input data in the buffer. |
270 | | * The "__" variants don't support wrapping, "ofs" are relative to |
271 | | * the buffer's origin. |
272 | | */ |
273 | | static inline size_t __ci_tail_ofs(const struct channel *c) |
274 | 0 | { |
275 | 0 | return __b_peek_ofs(&c->buf, c_data(c)); |
276 | 0 | } Unexecuted instantiation: cfgparse.c:__ci_tail_ofs Unexecuted instantiation: cli.c:__ci_tail_ofs Unexecuted instantiation: connection.c:__ci_tail_ofs Unexecuted instantiation: debug.c:__ci_tail_ofs Unexecuted instantiation: errors.c:__ci_tail_ofs Unexecuted instantiation: filters.c:__ci_tail_ofs Unexecuted instantiation: flt_http_comp.c:__ci_tail_ofs Unexecuted instantiation: frontend.c:__ci_tail_ofs Unexecuted instantiation: haproxy.c:__ci_tail_ofs Unexecuted instantiation: http_ana.c:__ci_tail_ofs Unexecuted instantiation: http_ext.c:__ci_tail_ofs Unexecuted instantiation: log.c:__ci_tail_ofs Unexecuted instantiation: mworker.c:__ci_tail_ofs Unexecuted instantiation: peers.c:__ci_tail_ofs Unexecuted instantiation: pool.c:__ci_tail_ofs Unexecuted instantiation: proxy.c:__ci_tail_ofs Unexecuted instantiation: resolvers.c:__ci_tail_ofs Unexecuted instantiation: ring.c:__ci_tail_ofs Unexecuted instantiation: sample.c:__ci_tail_ofs Unexecuted instantiation: server.c:__ci_tail_ofs Unexecuted instantiation: sink.c:__ci_tail_ofs Unexecuted instantiation: stats-html.c:__ci_tail_ofs Unexecuted instantiation: stats.c:__ci_tail_ofs Unexecuted instantiation: stconn.c:__ci_tail_ofs Unexecuted instantiation: stick_table.c:__ci_tail_ofs Unexecuted instantiation: stream.c:__ci_tail_ofs Unexecuted instantiation: tcp_rules.c:__ci_tail_ofs Unexecuted instantiation: tools.c:__ci_tail_ofs Unexecuted instantiation: trace.c:__ci_tail_ofs Unexecuted instantiation: vars.c:__ci_tail_ofs Unexecuted instantiation: activity.c:__ci_tail_ofs Unexecuted instantiation: applet.c:__ci_tail_ofs Unexecuted instantiation: backend.c:__ci_tail_ofs Unexecuted instantiation: cache.c:__ci_tail_ofs Unexecuted instantiation: channel.c:__ci_tail_ofs Unexecuted instantiation: dns.c:__ci_tail_ofs Unexecuted instantiation: dns_ring.c:__ci_tail_ofs Unexecuted instantiation: fcgi-app.c:__ci_tail_ofs Unexecuted instantiation: http_fetch.c:__ci_tail_ofs Unexecuted instantiation: payload.c:__ci_tail_ofs Unexecuted instantiation: stats-json.c:__ci_tail_ofs Unexecuted instantiation: flt_spoe.c:__ci_tail_ofs |
277 | | static inline char *__ci_tail(const struct channel *c) |
278 | 0 | { |
279 | 0 | return __b_peek(&c->buf, c_data(c)); |
280 | 0 | } Unexecuted instantiation: cfgparse.c:__ci_tail Unexecuted instantiation: cli.c:__ci_tail Unexecuted instantiation: connection.c:__ci_tail Unexecuted instantiation: debug.c:__ci_tail Unexecuted instantiation: errors.c:__ci_tail Unexecuted instantiation: filters.c:__ci_tail Unexecuted instantiation: flt_http_comp.c:__ci_tail Unexecuted instantiation: frontend.c:__ci_tail Unexecuted instantiation: haproxy.c:__ci_tail Unexecuted instantiation: http_ana.c:__ci_tail Unexecuted instantiation: http_ext.c:__ci_tail Unexecuted instantiation: log.c:__ci_tail Unexecuted instantiation: mworker.c:__ci_tail Unexecuted instantiation: peers.c:__ci_tail Unexecuted instantiation: pool.c:__ci_tail Unexecuted instantiation: proxy.c:__ci_tail Unexecuted instantiation: resolvers.c:__ci_tail Unexecuted instantiation: ring.c:__ci_tail Unexecuted instantiation: sample.c:__ci_tail Unexecuted instantiation: server.c:__ci_tail Unexecuted instantiation: sink.c:__ci_tail Unexecuted instantiation: stats-html.c:__ci_tail Unexecuted instantiation: stats.c:__ci_tail Unexecuted instantiation: stconn.c:__ci_tail Unexecuted instantiation: stick_table.c:__ci_tail Unexecuted instantiation: stream.c:__ci_tail Unexecuted instantiation: tcp_rules.c:__ci_tail Unexecuted instantiation: tools.c:__ci_tail Unexecuted instantiation: trace.c:__ci_tail Unexecuted instantiation: vars.c:__ci_tail Unexecuted instantiation: activity.c:__ci_tail Unexecuted instantiation: applet.c:__ci_tail Unexecuted instantiation: backend.c:__ci_tail Unexecuted instantiation: cache.c:__ci_tail Unexecuted instantiation: channel.c:__ci_tail Unexecuted instantiation: dns.c:__ci_tail Unexecuted instantiation: dns_ring.c:__ci_tail Unexecuted instantiation: fcgi-app.c:__ci_tail Unexecuted instantiation: http_fetch.c:__ci_tail Unexecuted instantiation: payload.c:__ci_tail Unexecuted instantiation: stats-json.c:__ci_tail Unexecuted instantiation: flt_spoe.c:__ci_tail |
281 | | static inline size_t ci_tail_ofs(const struct channel *c) |
282 | 0 | { |
283 | 0 | return b_peek_ofs(&c->buf, c_data(c)); |
284 | 0 | } Unexecuted instantiation: cfgparse.c:ci_tail_ofs Unexecuted instantiation: cli.c:ci_tail_ofs Unexecuted instantiation: connection.c:ci_tail_ofs Unexecuted instantiation: debug.c:ci_tail_ofs Unexecuted instantiation: errors.c:ci_tail_ofs Unexecuted instantiation: filters.c:ci_tail_ofs Unexecuted instantiation: flt_http_comp.c:ci_tail_ofs Unexecuted instantiation: frontend.c:ci_tail_ofs Unexecuted instantiation: haproxy.c:ci_tail_ofs Unexecuted instantiation: http_ana.c:ci_tail_ofs Unexecuted instantiation: http_ext.c:ci_tail_ofs Unexecuted instantiation: log.c:ci_tail_ofs Unexecuted instantiation: mworker.c:ci_tail_ofs Unexecuted instantiation: peers.c:ci_tail_ofs Unexecuted instantiation: pool.c:ci_tail_ofs Unexecuted instantiation: proxy.c:ci_tail_ofs Unexecuted instantiation: resolvers.c:ci_tail_ofs Unexecuted instantiation: ring.c:ci_tail_ofs Unexecuted instantiation: sample.c:ci_tail_ofs Unexecuted instantiation: server.c:ci_tail_ofs Unexecuted instantiation: sink.c:ci_tail_ofs Unexecuted instantiation: stats-html.c:ci_tail_ofs Unexecuted instantiation: stats.c:ci_tail_ofs Unexecuted instantiation: stconn.c:ci_tail_ofs Unexecuted instantiation: stick_table.c:ci_tail_ofs Unexecuted instantiation: stream.c:ci_tail_ofs Unexecuted instantiation: tcp_rules.c:ci_tail_ofs Unexecuted instantiation: tools.c:ci_tail_ofs Unexecuted instantiation: trace.c:ci_tail_ofs Unexecuted instantiation: vars.c:ci_tail_ofs Unexecuted instantiation: activity.c:ci_tail_ofs Unexecuted instantiation: applet.c:ci_tail_ofs Unexecuted instantiation: backend.c:ci_tail_ofs Unexecuted instantiation: cache.c:ci_tail_ofs Unexecuted instantiation: channel.c:ci_tail_ofs Unexecuted instantiation: dns.c:ci_tail_ofs Unexecuted instantiation: dns_ring.c:ci_tail_ofs Unexecuted instantiation: fcgi-app.c:ci_tail_ofs Unexecuted instantiation: http_fetch.c:ci_tail_ofs Unexecuted instantiation: payload.c:ci_tail_ofs Unexecuted instantiation: stats-json.c:ci_tail_ofs Unexecuted instantiation: flt_spoe.c:ci_tail_ofs |
285 | | static inline char *ci_tail(const struct channel *c) |
286 | 0 | { |
287 | 0 | return b_peek(&c->buf, c_data(c)); |
288 | 0 | } Unexecuted instantiation: cfgparse.c:ci_tail Unexecuted instantiation: cli.c:ci_tail Unexecuted instantiation: connection.c:ci_tail Unexecuted instantiation: debug.c:ci_tail Unexecuted instantiation: errors.c:ci_tail Unexecuted instantiation: filters.c:ci_tail Unexecuted instantiation: flt_http_comp.c:ci_tail Unexecuted instantiation: frontend.c:ci_tail Unexecuted instantiation: haproxy.c:ci_tail Unexecuted instantiation: http_ana.c:ci_tail Unexecuted instantiation: http_ext.c:ci_tail Unexecuted instantiation: log.c:ci_tail Unexecuted instantiation: mworker.c:ci_tail Unexecuted instantiation: peers.c:ci_tail Unexecuted instantiation: pool.c:ci_tail Unexecuted instantiation: proxy.c:ci_tail Unexecuted instantiation: resolvers.c:ci_tail Unexecuted instantiation: ring.c:ci_tail Unexecuted instantiation: sample.c:ci_tail Unexecuted instantiation: server.c:ci_tail Unexecuted instantiation: sink.c:ci_tail Unexecuted instantiation: stats-html.c:ci_tail Unexecuted instantiation: stats.c:ci_tail Unexecuted instantiation: stconn.c:ci_tail Unexecuted instantiation: stick_table.c:ci_tail Unexecuted instantiation: stream.c:ci_tail Unexecuted instantiation: tcp_rules.c:ci_tail Unexecuted instantiation: tools.c:ci_tail Unexecuted instantiation: trace.c:ci_tail Unexecuted instantiation: vars.c:ci_tail Unexecuted instantiation: activity.c:ci_tail Unexecuted instantiation: applet.c:ci_tail Unexecuted instantiation: backend.c:ci_tail Unexecuted instantiation: cache.c:ci_tail Unexecuted instantiation: channel.c:ci_tail Unexecuted instantiation: dns.c:ci_tail Unexecuted instantiation: dns_ring.c:ci_tail Unexecuted instantiation: fcgi-app.c:ci_tail Unexecuted instantiation: http_fetch.c:ci_tail Unexecuted instantiation: payload.c:ci_tail Unexecuted instantiation: stats-json.c:ci_tail Unexecuted instantiation: flt_spoe.c:ci_tail |
289 | | |
290 | | |
291 | | /* ci_stop() : returns the pointer to the byte following the end of input data |
292 | | * in the channel buffer. It may be out of the buffer. It's used to |
293 | | * compute lengths or stop pointers. |
294 | | */ |
295 | | static inline size_t __ci_stop_ofs(const struct channel *c) |
296 | 0 | { |
297 | 0 | return __b_stop_ofs(&c->buf); |
298 | 0 | } Unexecuted instantiation: cfgparse.c:__ci_stop_ofs Unexecuted instantiation: cli.c:__ci_stop_ofs Unexecuted instantiation: connection.c:__ci_stop_ofs Unexecuted instantiation: debug.c:__ci_stop_ofs Unexecuted instantiation: errors.c:__ci_stop_ofs Unexecuted instantiation: filters.c:__ci_stop_ofs Unexecuted instantiation: flt_http_comp.c:__ci_stop_ofs Unexecuted instantiation: frontend.c:__ci_stop_ofs Unexecuted instantiation: haproxy.c:__ci_stop_ofs Unexecuted instantiation: http_ana.c:__ci_stop_ofs Unexecuted instantiation: http_ext.c:__ci_stop_ofs Unexecuted instantiation: log.c:__ci_stop_ofs Unexecuted instantiation: mworker.c:__ci_stop_ofs Unexecuted instantiation: peers.c:__ci_stop_ofs Unexecuted instantiation: pool.c:__ci_stop_ofs Unexecuted instantiation: proxy.c:__ci_stop_ofs Unexecuted instantiation: resolvers.c:__ci_stop_ofs Unexecuted instantiation: ring.c:__ci_stop_ofs Unexecuted instantiation: sample.c:__ci_stop_ofs Unexecuted instantiation: server.c:__ci_stop_ofs Unexecuted instantiation: sink.c:__ci_stop_ofs Unexecuted instantiation: stats-html.c:__ci_stop_ofs Unexecuted instantiation: stats.c:__ci_stop_ofs Unexecuted instantiation: stconn.c:__ci_stop_ofs Unexecuted instantiation: stick_table.c:__ci_stop_ofs Unexecuted instantiation: stream.c:__ci_stop_ofs Unexecuted instantiation: tcp_rules.c:__ci_stop_ofs Unexecuted instantiation: tools.c:__ci_stop_ofs Unexecuted instantiation: trace.c:__ci_stop_ofs Unexecuted instantiation: vars.c:__ci_stop_ofs Unexecuted instantiation: activity.c:__ci_stop_ofs Unexecuted instantiation: applet.c:__ci_stop_ofs Unexecuted instantiation: backend.c:__ci_stop_ofs Unexecuted instantiation: cache.c:__ci_stop_ofs Unexecuted instantiation: channel.c:__ci_stop_ofs Unexecuted instantiation: dns.c:__ci_stop_ofs Unexecuted instantiation: dns_ring.c:__ci_stop_ofs Unexecuted instantiation: fcgi-app.c:__ci_stop_ofs Unexecuted instantiation: http_fetch.c:__ci_stop_ofs Unexecuted instantiation: payload.c:__ci_stop_ofs Unexecuted instantiation: stats-json.c:__ci_stop_ofs Unexecuted instantiation: flt_spoe.c:__ci_stop_ofs |
299 | | static inline const char *__ci_stop(const struct channel *c) |
300 | 0 | { |
301 | 0 | return __b_stop(&c->buf); |
302 | 0 | } Unexecuted instantiation: cfgparse.c:__ci_stop Unexecuted instantiation: cli.c:__ci_stop Unexecuted instantiation: connection.c:__ci_stop Unexecuted instantiation: debug.c:__ci_stop Unexecuted instantiation: errors.c:__ci_stop Unexecuted instantiation: filters.c:__ci_stop Unexecuted instantiation: flt_http_comp.c:__ci_stop Unexecuted instantiation: frontend.c:__ci_stop Unexecuted instantiation: haproxy.c:__ci_stop Unexecuted instantiation: http_ana.c:__ci_stop Unexecuted instantiation: http_ext.c:__ci_stop Unexecuted instantiation: log.c:__ci_stop Unexecuted instantiation: mworker.c:__ci_stop Unexecuted instantiation: peers.c:__ci_stop Unexecuted instantiation: pool.c:__ci_stop Unexecuted instantiation: proxy.c:__ci_stop Unexecuted instantiation: resolvers.c:__ci_stop Unexecuted instantiation: ring.c:__ci_stop Unexecuted instantiation: sample.c:__ci_stop Unexecuted instantiation: server.c:__ci_stop Unexecuted instantiation: sink.c:__ci_stop Unexecuted instantiation: stats-html.c:__ci_stop Unexecuted instantiation: stats.c:__ci_stop Unexecuted instantiation: stconn.c:__ci_stop Unexecuted instantiation: stick_table.c:__ci_stop Unexecuted instantiation: stream.c:__ci_stop Unexecuted instantiation: tcp_rules.c:__ci_stop Unexecuted instantiation: tools.c:__ci_stop Unexecuted instantiation: trace.c:__ci_stop Unexecuted instantiation: vars.c:__ci_stop Unexecuted instantiation: activity.c:__ci_stop Unexecuted instantiation: applet.c:__ci_stop Unexecuted instantiation: backend.c:__ci_stop Unexecuted instantiation: cache.c:__ci_stop Unexecuted instantiation: channel.c:__ci_stop Unexecuted instantiation: dns.c:__ci_stop Unexecuted instantiation: dns_ring.c:__ci_stop Unexecuted instantiation: fcgi-app.c:__ci_stop Unexecuted instantiation: http_fetch.c:__ci_stop Unexecuted instantiation: payload.c:__ci_stop Unexecuted instantiation: stats-json.c:__ci_stop Unexecuted instantiation: flt_spoe.c:__ci_stop |
303 | | static inline size_t ci_stop_ofs(const struct channel *c) |
304 | 0 | { |
305 | 0 | return b_stop_ofs(&c->buf); |
306 | 0 | } Unexecuted instantiation: cfgparse.c:ci_stop_ofs Unexecuted instantiation: cli.c:ci_stop_ofs Unexecuted instantiation: connection.c:ci_stop_ofs Unexecuted instantiation: debug.c:ci_stop_ofs Unexecuted instantiation: errors.c:ci_stop_ofs Unexecuted instantiation: filters.c:ci_stop_ofs Unexecuted instantiation: flt_http_comp.c:ci_stop_ofs Unexecuted instantiation: frontend.c:ci_stop_ofs Unexecuted instantiation: haproxy.c:ci_stop_ofs Unexecuted instantiation: http_ana.c:ci_stop_ofs Unexecuted instantiation: http_ext.c:ci_stop_ofs Unexecuted instantiation: log.c:ci_stop_ofs Unexecuted instantiation: mworker.c:ci_stop_ofs Unexecuted instantiation: peers.c:ci_stop_ofs Unexecuted instantiation: pool.c:ci_stop_ofs Unexecuted instantiation: proxy.c:ci_stop_ofs Unexecuted instantiation: resolvers.c:ci_stop_ofs Unexecuted instantiation: ring.c:ci_stop_ofs Unexecuted instantiation: sample.c:ci_stop_ofs Unexecuted instantiation: server.c:ci_stop_ofs Unexecuted instantiation: sink.c:ci_stop_ofs Unexecuted instantiation: stats-html.c:ci_stop_ofs Unexecuted instantiation: stats.c:ci_stop_ofs Unexecuted instantiation: stconn.c:ci_stop_ofs Unexecuted instantiation: stick_table.c:ci_stop_ofs Unexecuted instantiation: stream.c:ci_stop_ofs Unexecuted instantiation: tcp_rules.c:ci_stop_ofs Unexecuted instantiation: tools.c:ci_stop_ofs Unexecuted instantiation: trace.c:ci_stop_ofs Unexecuted instantiation: vars.c:ci_stop_ofs Unexecuted instantiation: activity.c:ci_stop_ofs Unexecuted instantiation: applet.c:ci_stop_ofs Unexecuted instantiation: backend.c:ci_stop_ofs Unexecuted instantiation: cache.c:ci_stop_ofs Unexecuted instantiation: channel.c:ci_stop_ofs Unexecuted instantiation: dns.c:ci_stop_ofs Unexecuted instantiation: dns_ring.c:ci_stop_ofs Unexecuted instantiation: fcgi-app.c:ci_stop_ofs Unexecuted instantiation: http_fetch.c:ci_stop_ofs Unexecuted instantiation: payload.c:ci_stop_ofs Unexecuted instantiation: stats-json.c:ci_stop_ofs Unexecuted instantiation: flt_spoe.c:ci_stop_ofs |
307 | | static inline const char *ci_stop(const struct channel *c) |
308 | 0 | { |
309 | 0 | return b_stop(&c->buf); |
310 | 0 | } Unexecuted instantiation: cfgparse.c:ci_stop Unexecuted instantiation: cli.c:ci_stop Unexecuted instantiation: connection.c:ci_stop Unexecuted instantiation: debug.c:ci_stop Unexecuted instantiation: errors.c:ci_stop Unexecuted instantiation: filters.c:ci_stop Unexecuted instantiation: flt_http_comp.c:ci_stop Unexecuted instantiation: frontend.c:ci_stop Unexecuted instantiation: haproxy.c:ci_stop Unexecuted instantiation: http_ana.c:ci_stop Unexecuted instantiation: http_ext.c:ci_stop Unexecuted instantiation: log.c:ci_stop Unexecuted instantiation: mworker.c:ci_stop Unexecuted instantiation: peers.c:ci_stop Unexecuted instantiation: pool.c:ci_stop Unexecuted instantiation: proxy.c:ci_stop Unexecuted instantiation: resolvers.c:ci_stop Unexecuted instantiation: ring.c:ci_stop Unexecuted instantiation: sample.c:ci_stop Unexecuted instantiation: server.c:ci_stop Unexecuted instantiation: sink.c:ci_stop Unexecuted instantiation: stats-html.c:ci_stop Unexecuted instantiation: stats.c:ci_stop Unexecuted instantiation: stconn.c:ci_stop Unexecuted instantiation: stick_table.c:ci_stop Unexecuted instantiation: stream.c:ci_stop Unexecuted instantiation: tcp_rules.c:ci_stop Unexecuted instantiation: tools.c:ci_stop Unexecuted instantiation: trace.c:ci_stop Unexecuted instantiation: vars.c:ci_stop Unexecuted instantiation: activity.c:ci_stop Unexecuted instantiation: applet.c:ci_stop Unexecuted instantiation: backend.c:ci_stop Unexecuted instantiation: cache.c:ci_stop Unexecuted instantiation: channel.c:ci_stop Unexecuted instantiation: dns.c:ci_stop Unexecuted instantiation: dns_ring.c:ci_stop Unexecuted instantiation: fcgi-app.c:ci_stop Unexecuted instantiation: http_fetch.c:ci_stop Unexecuted instantiation: payload.c:ci_stop Unexecuted instantiation: stats-json.c:ci_stop Unexecuted instantiation: flt_spoe.c:ci_stop |
311 | | |
312 | | |
313 | | /* Returns the amount of input data that can contiguously be read at once */ |
314 | | static inline size_t ci_contig_data(const struct channel *c) |
315 | 0 | { |
316 | 0 | return b_contig_data(&c->buf, co_data(c)); |
317 | 0 | } Unexecuted instantiation: cfgparse.c:ci_contig_data Unexecuted instantiation: cli.c:ci_contig_data Unexecuted instantiation: connection.c:ci_contig_data Unexecuted instantiation: debug.c:ci_contig_data Unexecuted instantiation: errors.c:ci_contig_data Unexecuted instantiation: filters.c:ci_contig_data Unexecuted instantiation: flt_http_comp.c:ci_contig_data Unexecuted instantiation: frontend.c:ci_contig_data Unexecuted instantiation: haproxy.c:ci_contig_data Unexecuted instantiation: http_ana.c:ci_contig_data Unexecuted instantiation: http_ext.c:ci_contig_data Unexecuted instantiation: log.c:ci_contig_data Unexecuted instantiation: mworker.c:ci_contig_data Unexecuted instantiation: peers.c:ci_contig_data Unexecuted instantiation: pool.c:ci_contig_data Unexecuted instantiation: proxy.c:ci_contig_data Unexecuted instantiation: resolvers.c:ci_contig_data Unexecuted instantiation: ring.c:ci_contig_data Unexecuted instantiation: sample.c:ci_contig_data Unexecuted instantiation: server.c:ci_contig_data Unexecuted instantiation: sink.c:ci_contig_data Unexecuted instantiation: stats-html.c:ci_contig_data Unexecuted instantiation: stats.c:ci_contig_data Unexecuted instantiation: stconn.c:ci_contig_data Unexecuted instantiation: stick_table.c:ci_contig_data Unexecuted instantiation: stream.c:ci_contig_data Unexecuted instantiation: tcp_rules.c:ci_contig_data Unexecuted instantiation: tools.c:ci_contig_data Unexecuted instantiation: trace.c:ci_contig_data Unexecuted instantiation: vars.c:ci_contig_data Unexecuted instantiation: activity.c:ci_contig_data Unexecuted instantiation: applet.c:ci_contig_data Unexecuted instantiation: backend.c:ci_contig_data Unexecuted instantiation: cache.c:ci_contig_data Unexecuted instantiation: channel.c:ci_contig_data Unexecuted instantiation: dns.c:ci_contig_data Unexecuted instantiation: dns_ring.c:ci_contig_data Unexecuted instantiation: fcgi-app.c:ci_contig_data Unexecuted instantiation: http_fetch.c:ci_contig_data Unexecuted instantiation: payload.c:ci_contig_data Unexecuted instantiation: stats-json.c:ci_contig_data Unexecuted instantiation: flt_spoe.c:ci_contig_data |
318 | | |
319 | | /* Initialize all fields in the channel. */ |
320 | | static inline void channel_init(struct channel *chn) |
321 | 0 | { |
322 | 0 | chn->buf = BUF_NULL; |
323 | 0 | chn->to_forward = 0; |
324 | 0 | chn->last_read = now_ms; |
325 | 0 | chn->xfer_small = chn->xfer_large = 0; |
326 | 0 | chn->total = 0; |
327 | 0 | chn->analysers = 0; |
328 | 0 | chn->flags = 0; |
329 | 0 | chn->output = 0; |
330 | 0 | } Unexecuted instantiation: cfgparse.c:channel_init Unexecuted instantiation: cli.c:channel_init Unexecuted instantiation: connection.c:channel_init Unexecuted instantiation: debug.c:channel_init Unexecuted instantiation: errors.c:channel_init Unexecuted instantiation: filters.c:channel_init Unexecuted instantiation: flt_http_comp.c:channel_init Unexecuted instantiation: frontend.c:channel_init Unexecuted instantiation: haproxy.c:channel_init Unexecuted instantiation: http_ana.c:channel_init Unexecuted instantiation: http_ext.c:channel_init Unexecuted instantiation: log.c:channel_init Unexecuted instantiation: mworker.c:channel_init Unexecuted instantiation: peers.c:channel_init Unexecuted instantiation: pool.c:channel_init Unexecuted instantiation: proxy.c:channel_init Unexecuted instantiation: resolvers.c:channel_init Unexecuted instantiation: ring.c:channel_init Unexecuted instantiation: sample.c:channel_init Unexecuted instantiation: server.c:channel_init Unexecuted instantiation: sink.c:channel_init Unexecuted instantiation: stats-html.c:channel_init Unexecuted instantiation: stats.c:channel_init Unexecuted instantiation: stconn.c:channel_init Unexecuted instantiation: stick_table.c:channel_init Unexecuted instantiation: stream.c:channel_init Unexecuted instantiation: tcp_rules.c:channel_init Unexecuted instantiation: tools.c:channel_init Unexecuted instantiation: trace.c:channel_init Unexecuted instantiation: vars.c:channel_init Unexecuted instantiation: activity.c:channel_init Unexecuted instantiation: applet.c:channel_init Unexecuted instantiation: backend.c:channel_init Unexecuted instantiation: cache.c:channel_init Unexecuted instantiation: channel.c:channel_init Unexecuted instantiation: dns.c:channel_init Unexecuted instantiation: dns_ring.c:channel_init Unexecuted instantiation: fcgi-app.c:channel_init Unexecuted instantiation: http_fetch.c:channel_init Unexecuted instantiation: payload.c:channel_init Unexecuted instantiation: stats-json.c:channel_init Unexecuted instantiation: flt_spoe.c:channel_init |
331 | | |
332 | | /* Schedule up to <bytes> more bytes to be forwarded via the channel without |
333 | | * notifying the owner task. Any data pending in the buffer are scheduled to be |
334 | | * sent as well, in the limit of the number of bytes to forward. This must be |
335 | | * the only method to use to schedule bytes to be forwarded. If the requested |
336 | | * number is too large, it is automatically adjusted. The number of bytes taken |
337 | | * into account is returned. Directly touching ->to_forward will cause lockups |
338 | | * when buf->o goes down to zero if nobody is ready to push the remaining data. |
339 | | */ |
340 | | static inline unsigned long long channel_forward(struct channel *chn, unsigned long long bytes) |
341 | 0 | { |
342 | | /* hint: avoid comparisons on long long for the fast case, since if the |
343 | | * length does not fit in an unsigned it, it will never be forwarded at |
344 | | * once anyway. |
345 | | */ |
346 | 0 | if (bytes <= ~0U) { |
347 | 0 | unsigned int bytes32 = bytes; |
348 | |
|
349 | 0 | if (bytes32 <= ci_data(chn)) { |
350 | | /* OK this amount of bytes might be forwarded at once */ |
351 | 0 | c_adv(chn, bytes32); |
352 | 0 | return bytes; |
353 | 0 | } |
354 | 0 | } |
355 | 0 | return __channel_forward(chn, bytes); |
356 | 0 | } Unexecuted instantiation: cfgparse.c:channel_forward Unexecuted instantiation: cli.c:channel_forward Unexecuted instantiation: connection.c:channel_forward Unexecuted instantiation: debug.c:channel_forward Unexecuted instantiation: errors.c:channel_forward Unexecuted instantiation: filters.c:channel_forward Unexecuted instantiation: flt_http_comp.c:channel_forward Unexecuted instantiation: frontend.c:channel_forward Unexecuted instantiation: haproxy.c:channel_forward Unexecuted instantiation: http_ana.c:channel_forward Unexecuted instantiation: http_ext.c:channel_forward Unexecuted instantiation: log.c:channel_forward Unexecuted instantiation: mworker.c:channel_forward Unexecuted instantiation: peers.c:channel_forward Unexecuted instantiation: pool.c:channel_forward Unexecuted instantiation: proxy.c:channel_forward Unexecuted instantiation: resolvers.c:channel_forward Unexecuted instantiation: ring.c:channel_forward Unexecuted instantiation: sample.c:channel_forward Unexecuted instantiation: server.c:channel_forward Unexecuted instantiation: sink.c:channel_forward Unexecuted instantiation: stats-html.c:channel_forward Unexecuted instantiation: stats.c:channel_forward Unexecuted instantiation: stconn.c:channel_forward Unexecuted instantiation: stick_table.c:channel_forward Unexecuted instantiation: stream.c:channel_forward Unexecuted instantiation: tcp_rules.c:channel_forward Unexecuted instantiation: tools.c:channel_forward Unexecuted instantiation: trace.c:channel_forward Unexecuted instantiation: vars.c:channel_forward Unexecuted instantiation: activity.c:channel_forward Unexecuted instantiation: applet.c:channel_forward Unexecuted instantiation: backend.c:channel_forward Unexecuted instantiation: cache.c:channel_forward Unexecuted instantiation: channel.c:channel_forward Unexecuted instantiation: dns.c:channel_forward Unexecuted instantiation: dns_ring.c:channel_forward Unexecuted instantiation: fcgi-app.c:channel_forward Unexecuted instantiation: http_fetch.c:channel_forward Unexecuted instantiation: payload.c:channel_forward Unexecuted instantiation: stats-json.c:channel_forward Unexecuted instantiation: flt_spoe.c:channel_forward |
357 | | |
358 | | /* Forwards any input data and marks the channel for permanent forwarding */ |
359 | | static inline void channel_forward_forever(struct channel *chn) |
360 | 0 | { |
361 | 0 | c_adv(chn, ci_data(chn)); |
362 | 0 | chn->to_forward = CHN_INFINITE_FORWARD; |
363 | 0 | } Unexecuted instantiation: cfgparse.c:channel_forward_forever Unexecuted instantiation: cli.c:channel_forward_forever Unexecuted instantiation: connection.c:channel_forward_forever Unexecuted instantiation: debug.c:channel_forward_forever Unexecuted instantiation: errors.c:channel_forward_forever Unexecuted instantiation: filters.c:channel_forward_forever Unexecuted instantiation: flt_http_comp.c:channel_forward_forever Unexecuted instantiation: frontend.c:channel_forward_forever Unexecuted instantiation: haproxy.c:channel_forward_forever Unexecuted instantiation: http_ana.c:channel_forward_forever Unexecuted instantiation: http_ext.c:channel_forward_forever Unexecuted instantiation: log.c:channel_forward_forever Unexecuted instantiation: mworker.c:channel_forward_forever Unexecuted instantiation: peers.c:channel_forward_forever Unexecuted instantiation: pool.c:channel_forward_forever Unexecuted instantiation: proxy.c:channel_forward_forever Unexecuted instantiation: resolvers.c:channel_forward_forever Unexecuted instantiation: ring.c:channel_forward_forever Unexecuted instantiation: sample.c:channel_forward_forever Unexecuted instantiation: server.c:channel_forward_forever Unexecuted instantiation: sink.c:channel_forward_forever Unexecuted instantiation: stats-html.c:channel_forward_forever Unexecuted instantiation: stats.c:channel_forward_forever Unexecuted instantiation: stconn.c:channel_forward_forever Unexecuted instantiation: stick_table.c:channel_forward_forever Unexecuted instantiation: stream.c:channel_forward_forever Unexecuted instantiation: tcp_rules.c:channel_forward_forever Unexecuted instantiation: tools.c:channel_forward_forever Unexecuted instantiation: trace.c:channel_forward_forever Unexecuted instantiation: vars.c:channel_forward_forever Unexecuted instantiation: activity.c:channel_forward_forever Unexecuted instantiation: applet.c:channel_forward_forever Unexecuted instantiation: backend.c:channel_forward_forever Unexecuted instantiation: cache.c:channel_forward_forever Unexecuted instantiation: channel.c:channel_forward_forever Unexecuted instantiation: dns.c:channel_forward_forever Unexecuted instantiation: dns_ring.c:channel_forward_forever Unexecuted instantiation: fcgi-app.c:channel_forward_forever Unexecuted instantiation: http_fetch.c:channel_forward_forever Unexecuted instantiation: payload.c:channel_forward_forever Unexecuted instantiation: stats-json.c:channel_forward_forever Unexecuted instantiation: flt_spoe.c:channel_forward_forever |
364 | | |
365 | | /* <len> bytes of input data was added into the channel <chn>. This functions |
366 | | * must be called to update the channel state. It also handles the fast |
367 | | * forwarding. */ |
368 | | static inline void channel_add_input(struct channel *chn, unsigned int len) |
369 | 0 | { |
370 | 0 | if (chn->to_forward) { |
371 | 0 | unsigned long fwd = len; |
372 | 0 | if (chn->to_forward != CHN_INFINITE_FORWARD) { |
373 | 0 | if (fwd > chn->to_forward) |
374 | 0 | fwd = chn->to_forward; |
375 | 0 | chn->to_forward -= fwd; |
376 | 0 | } |
377 | 0 | c_adv(chn, fwd); |
378 | 0 | } |
379 | | /* notify that some data was read */ |
380 | 0 | chn->total += len; |
381 | 0 | chn->flags |= CF_READ_EVENT; |
382 | 0 | } Unexecuted instantiation: cfgparse.c:channel_add_input Unexecuted instantiation: cli.c:channel_add_input Unexecuted instantiation: connection.c:channel_add_input Unexecuted instantiation: debug.c:channel_add_input Unexecuted instantiation: errors.c:channel_add_input Unexecuted instantiation: filters.c:channel_add_input Unexecuted instantiation: flt_http_comp.c:channel_add_input Unexecuted instantiation: frontend.c:channel_add_input Unexecuted instantiation: haproxy.c:channel_add_input Unexecuted instantiation: http_ana.c:channel_add_input Unexecuted instantiation: http_ext.c:channel_add_input Unexecuted instantiation: log.c:channel_add_input Unexecuted instantiation: mworker.c:channel_add_input Unexecuted instantiation: peers.c:channel_add_input Unexecuted instantiation: pool.c:channel_add_input Unexecuted instantiation: proxy.c:channel_add_input Unexecuted instantiation: resolvers.c:channel_add_input Unexecuted instantiation: ring.c:channel_add_input Unexecuted instantiation: sample.c:channel_add_input Unexecuted instantiation: server.c:channel_add_input Unexecuted instantiation: sink.c:channel_add_input Unexecuted instantiation: stats-html.c:channel_add_input Unexecuted instantiation: stats.c:channel_add_input Unexecuted instantiation: stconn.c:channel_add_input Unexecuted instantiation: stick_table.c:channel_add_input Unexecuted instantiation: stream.c:channel_add_input Unexecuted instantiation: tcp_rules.c:channel_add_input Unexecuted instantiation: tools.c:channel_add_input Unexecuted instantiation: trace.c:channel_add_input Unexecuted instantiation: vars.c:channel_add_input Unexecuted instantiation: activity.c:channel_add_input Unexecuted instantiation: applet.c:channel_add_input Unexecuted instantiation: backend.c:channel_add_input Unexecuted instantiation: cache.c:channel_add_input Unexecuted instantiation: channel.c:channel_add_input Unexecuted instantiation: dns.c:channel_add_input Unexecuted instantiation: dns_ring.c:channel_add_input Unexecuted instantiation: fcgi-app.c:channel_add_input Unexecuted instantiation: http_fetch.c:channel_add_input Unexecuted instantiation: payload.c:channel_add_input Unexecuted instantiation: stats-json.c:channel_add_input Unexecuted instantiation: flt_spoe.c:channel_add_input |
383 | | |
384 | | static inline unsigned long long channel_htx_forward(struct channel *chn, struct htx *htx, unsigned long long bytes) |
385 | 0 | { |
386 | 0 | unsigned long long ret = 0; |
387 | 0 |
|
388 | 0 | if (htx->data) { |
389 | 0 | b_set_data(&chn->buf, htx->data); |
390 | 0 | ret = channel_forward(chn, bytes); |
391 | 0 | b_set_data(&chn->buf, b_size(&chn->buf)); |
392 | 0 | } |
393 | 0 | return ret; |
394 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_forward Unexecuted instantiation: cli.c:channel_htx_forward Unexecuted instantiation: connection.c:channel_htx_forward Unexecuted instantiation: debug.c:channel_htx_forward Unexecuted instantiation: errors.c:channel_htx_forward Unexecuted instantiation: filters.c:channel_htx_forward Unexecuted instantiation: flt_http_comp.c:channel_htx_forward Unexecuted instantiation: frontend.c:channel_htx_forward Unexecuted instantiation: haproxy.c:channel_htx_forward Unexecuted instantiation: http_ana.c:channel_htx_forward Unexecuted instantiation: http_ext.c:channel_htx_forward Unexecuted instantiation: log.c:channel_htx_forward Unexecuted instantiation: mworker.c:channel_htx_forward Unexecuted instantiation: peers.c:channel_htx_forward Unexecuted instantiation: pool.c:channel_htx_forward Unexecuted instantiation: proxy.c:channel_htx_forward Unexecuted instantiation: resolvers.c:channel_htx_forward Unexecuted instantiation: ring.c:channel_htx_forward Unexecuted instantiation: sample.c:channel_htx_forward Unexecuted instantiation: server.c:channel_htx_forward Unexecuted instantiation: sink.c:channel_htx_forward Unexecuted instantiation: stats-html.c:channel_htx_forward Unexecuted instantiation: stats.c:channel_htx_forward Unexecuted instantiation: stconn.c:channel_htx_forward Unexecuted instantiation: stick_table.c:channel_htx_forward Unexecuted instantiation: stream.c:channel_htx_forward Unexecuted instantiation: tcp_rules.c:channel_htx_forward Unexecuted instantiation: tools.c:channel_htx_forward Unexecuted instantiation: trace.c:channel_htx_forward Unexecuted instantiation: vars.c:channel_htx_forward Unexecuted instantiation: activity.c:channel_htx_forward Unexecuted instantiation: applet.c:channel_htx_forward Unexecuted instantiation: backend.c:channel_htx_forward Unexecuted instantiation: cache.c:channel_htx_forward Unexecuted instantiation: channel.c:channel_htx_forward Unexecuted instantiation: dns.c:channel_htx_forward Unexecuted instantiation: dns_ring.c:channel_htx_forward Unexecuted instantiation: fcgi-app.c:channel_htx_forward Unexecuted instantiation: http_fetch.c:channel_htx_forward Unexecuted instantiation: payload.c:channel_htx_forward Unexecuted instantiation: stats-json.c:channel_htx_forward Unexecuted instantiation: flt_spoe.c:channel_htx_forward |
395 | | |
396 | | |
397 | | static inline void channel_htx_forward_forever(struct channel *chn, struct htx *htx) |
398 | 0 | { |
399 | 0 | c_adv(chn, htx->data - co_data(chn)); |
400 | 0 | chn->to_forward = CHN_INFINITE_FORWARD; |
401 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_forward_forever Unexecuted instantiation: cli.c:channel_htx_forward_forever Unexecuted instantiation: connection.c:channel_htx_forward_forever Unexecuted instantiation: debug.c:channel_htx_forward_forever Unexecuted instantiation: errors.c:channel_htx_forward_forever Unexecuted instantiation: filters.c:channel_htx_forward_forever Unexecuted instantiation: flt_http_comp.c:channel_htx_forward_forever Unexecuted instantiation: frontend.c:channel_htx_forward_forever Unexecuted instantiation: haproxy.c:channel_htx_forward_forever Unexecuted instantiation: http_ana.c:channel_htx_forward_forever Unexecuted instantiation: http_ext.c:channel_htx_forward_forever Unexecuted instantiation: log.c:channel_htx_forward_forever Unexecuted instantiation: mworker.c:channel_htx_forward_forever Unexecuted instantiation: peers.c:channel_htx_forward_forever Unexecuted instantiation: pool.c:channel_htx_forward_forever Unexecuted instantiation: proxy.c:channel_htx_forward_forever Unexecuted instantiation: resolvers.c:channel_htx_forward_forever Unexecuted instantiation: ring.c:channel_htx_forward_forever Unexecuted instantiation: sample.c:channel_htx_forward_forever Unexecuted instantiation: server.c:channel_htx_forward_forever Unexecuted instantiation: sink.c:channel_htx_forward_forever Unexecuted instantiation: stats-html.c:channel_htx_forward_forever Unexecuted instantiation: stats.c:channel_htx_forward_forever Unexecuted instantiation: stconn.c:channel_htx_forward_forever Unexecuted instantiation: stick_table.c:channel_htx_forward_forever Unexecuted instantiation: stream.c:channel_htx_forward_forever Unexecuted instantiation: tcp_rules.c:channel_htx_forward_forever Unexecuted instantiation: tools.c:channel_htx_forward_forever Unexecuted instantiation: trace.c:channel_htx_forward_forever Unexecuted instantiation: vars.c:channel_htx_forward_forever Unexecuted instantiation: activity.c:channel_htx_forward_forever Unexecuted instantiation: applet.c:channel_htx_forward_forever Unexecuted instantiation: backend.c:channel_htx_forward_forever Unexecuted instantiation: cache.c:channel_htx_forward_forever Unexecuted instantiation: channel.c:channel_htx_forward_forever Unexecuted instantiation: dns.c:channel_htx_forward_forever Unexecuted instantiation: dns_ring.c:channel_htx_forward_forever Unexecuted instantiation: fcgi-app.c:channel_htx_forward_forever Unexecuted instantiation: http_fetch.c:channel_htx_forward_forever Unexecuted instantiation: payload.c:channel_htx_forward_forever Unexecuted instantiation: stats-json.c:channel_htx_forward_forever Unexecuted instantiation: flt_spoe.c:channel_htx_forward_forever |
402 | | /*********************************************************************/ |
403 | | /* These functions are used to compute various channel content sizes */ |
404 | | /*********************************************************************/ |
405 | | |
406 | | /* Returns non-zero if the channel is rewritable, which means that the buffer |
407 | | * it is attached to has at least <maxrewrite> bytes immediately available. |
408 | | * This is used to decide when a request or response may be parsed when some |
409 | | * data from a previous exchange might still be present. |
410 | | */ |
411 | | static inline int channel_is_rewritable(const struct channel *chn) |
412 | 0 | { |
413 | 0 | int rem = chn->buf.size; |
414 | 0 |
|
415 | 0 | rem -= b_data(&chn->buf); |
416 | 0 | rem -= global.tune.maxrewrite; |
417 | 0 | return rem >= 0; |
418 | 0 | } Unexecuted instantiation: cfgparse.c:channel_is_rewritable Unexecuted instantiation: cli.c:channel_is_rewritable Unexecuted instantiation: connection.c:channel_is_rewritable Unexecuted instantiation: debug.c:channel_is_rewritable Unexecuted instantiation: errors.c:channel_is_rewritable Unexecuted instantiation: filters.c:channel_is_rewritable Unexecuted instantiation: flt_http_comp.c:channel_is_rewritable Unexecuted instantiation: frontend.c:channel_is_rewritable Unexecuted instantiation: haproxy.c:channel_is_rewritable Unexecuted instantiation: http_ana.c:channel_is_rewritable Unexecuted instantiation: http_ext.c:channel_is_rewritable Unexecuted instantiation: log.c:channel_is_rewritable Unexecuted instantiation: mworker.c:channel_is_rewritable Unexecuted instantiation: peers.c:channel_is_rewritable Unexecuted instantiation: pool.c:channel_is_rewritable Unexecuted instantiation: proxy.c:channel_is_rewritable Unexecuted instantiation: resolvers.c:channel_is_rewritable Unexecuted instantiation: ring.c:channel_is_rewritable Unexecuted instantiation: sample.c:channel_is_rewritable Unexecuted instantiation: server.c:channel_is_rewritable Unexecuted instantiation: sink.c:channel_is_rewritable Unexecuted instantiation: stats-html.c:channel_is_rewritable Unexecuted instantiation: stats.c:channel_is_rewritable Unexecuted instantiation: stconn.c:channel_is_rewritable Unexecuted instantiation: stick_table.c:channel_is_rewritable Unexecuted instantiation: stream.c:channel_is_rewritable Unexecuted instantiation: tcp_rules.c:channel_is_rewritable Unexecuted instantiation: tools.c:channel_is_rewritable Unexecuted instantiation: trace.c:channel_is_rewritable Unexecuted instantiation: vars.c:channel_is_rewritable Unexecuted instantiation: activity.c:channel_is_rewritable Unexecuted instantiation: applet.c:channel_is_rewritable Unexecuted instantiation: backend.c:channel_is_rewritable Unexecuted instantiation: cache.c:channel_is_rewritable Unexecuted instantiation: channel.c:channel_is_rewritable Unexecuted instantiation: dns.c:channel_is_rewritable Unexecuted instantiation: dns_ring.c:channel_is_rewritable Unexecuted instantiation: fcgi-app.c:channel_is_rewritable Unexecuted instantiation: http_fetch.c:channel_is_rewritable Unexecuted instantiation: payload.c:channel_is_rewritable Unexecuted instantiation: stats-json.c:channel_is_rewritable Unexecuted instantiation: flt_spoe.c:channel_is_rewritable |
419 | | |
420 | | /* Tells whether data are likely to leave the buffer. This is used to know when |
421 | | * we can safely ignore the reserve since we know we cannot retry a connection. |
422 | | * It returns zero if data are blocked, non-zero otherwise. |
423 | | */ |
424 | | static inline int channel_may_send(const struct channel *chn) |
425 | 0 | { |
426 | 0 | return chn_cons(chn)->state == SC_ST_EST; |
427 | 0 | } Unexecuted instantiation: cfgparse.c:channel_may_send Unexecuted instantiation: cli.c:channel_may_send Unexecuted instantiation: connection.c:channel_may_send Unexecuted instantiation: debug.c:channel_may_send Unexecuted instantiation: errors.c:channel_may_send Unexecuted instantiation: filters.c:channel_may_send Unexecuted instantiation: flt_http_comp.c:channel_may_send Unexecuted instantiation: frontend.c:channel_may_send Unexecuted instantiation: haproxy.c:channel_may_send Unexecuted instantiation: http_ana.c:channel_may_send Unexecuted instantiation: http_ext.c:channel_may_send Unexecuted instantiation: log.c:channel_may_send Unexecuted instantiation: mworker.c:channel_may_send Unexecuted instantiation: peers.c:channel_may_send Unexecuted instantiation: pool.c:channel_may_send Unexecuted instantiation: proxy.c:channel_may_send Unexecuted instantiation: resolvers.c:channel_may_send Unexecuted instantiation: ring.c:channel_may_send Unexecuted instantiation: sample.c:channel_may_send Unexecuted instantiation: server.c:channel_may_send Unexecuted instantiation: sink.c:channel_may_send Unexecuted instantiation: stats-html.c:channel_may_send Unexecuted instantiation: stats.c:channel_may_send Unexecuted instantiation: stconn.c:channel_may_send Unexecuted instantiation: stick_table.c:channel_may_send Unexecuted instantiation: stream.c:channel_may_send Unexecuted instantiation: tcp_rules.c:channel_may_send Unexecuted instantiation: tools.c:channel_may_send Unexecuted instantiation: trace.c:channel_may_send Unexecuted instantiation: vars.c:channel_may_send Unexecuted instantiation: activity.c:channel_may_send Unexecuted instantiation: applet.c:channel_may_send Unexecuted instantiation: backend.c:channel_may_send Unexecuted instantiation: cache.c:channel_may_send Unexecuted instantiation: channel.c:channel_may_send Unexecuted instantiation: dns.c:channel_may_send Unexecuted instantiation: dns_ring.c:channel_may_send Unexecuted instantiation: fcgi-app.c:channel_may_send Unexecuted instantiation: http_fetch.c:channel_may_send Unexecuted instantiation: payload.c:channel_may_send Unexecuted instantiation: stats-json.c:channel_may_send Unexecuted instantiation: flt_spoe.c:channel_may_send |
428 | | |
429 | | /* HTX version of channel_may_recv(). Returns non-zero if the channel can still |
430 | | * receive data. */ |
431 | | static inline int channel_htx_may_recv(const struct channel *chn, const struct htx *htx) |
432 | 0 | { |
433 | 0 | uint32_t rem; |
434 | |
|
435 | 0 | if (!htx->size) |
436 | 0 | return 1; |
437 | | |
438 | 0 | rem = htx_free_data_space(htx); |
439 | 0 | if (!rem) |
440 | 0 | return 0; /* htx already full */ |
441 | | |
442 | 0 | if (rem > global.tune.maxrewrite) |
443 | 0 | return 1; /* reserve not yet reached */ |
444 | | |
445 | 0 | if (!channel_may_send(chn)) |
446 | 0 | return 0; /* don't touch reserve until we can send */ |
447 | | |
448 | | /* Now we know there's some room left in the reserve and we may |
449 | | * forward. As long as i-to_fwd < size-maxrw, we may still |
450 | | * receive. This is equivalent to i+maxrw-size < to_fwd, |
451 | | * which is logical since i+maxrw-size is what overlaps with |
452 | | * the reserve, and we want to ensure they're covered by scheduled |
453 | | * forwards. |
454 | | */ |
455 | 0 | rem += co_data(chn); |
456 | 0 | if (rem > global.tune.maxrewrite) |
457 | 0 | return 1; |
458 | | |
459 | 0 | return (global.tune.maxrewrite - rem < chn->to_forward); |
460 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_may_recv Unexecuted instantiation: cli.c:channel_htx_may_recv Unexecuted instantiation: connection.c:channel_htx_may_recv Unexecuted instantiation: debug.c:channel_htx_may_recv Unexecuted instantiation: errors.c:channel_htx_may_recv Unexecuted instantiation: filters.c:channel_htx_may_recv Unexecuted instantiation: flt_http_comp.c:channel_htx_may_recv Unexecuted instantiation: frontend.c:channel_htx_may_recv Unexecuted instantiation: haproxy.c:channel_htx_may_recv Unexecuted instantiation: http_ana.c:channel_htx_may_recv Unexecuted instantiation: http_ext.c:channel_htx_may_recv Unexecuted instantiation: log.c:channel_htx_may_recv Unexecuted instantiation: mworker.c:channel_htx_may_recv Unexecuted instantiation: peers.c:channel_htx_may_recv Unexecuted instantiation: pool.c:channel_htx_may_recv Unexecuted instantiation: proxy.c:channel_htx_may_recv Unexecuted instantiation: resolvers.c:channel_htx_may_recv Unexecuted instantiation: ring.c:channel_htx_may_recv Unexecuted instantiation: sample.c:channel_htx_may_recv Unexecuted instantiation: server.c:channel_htx_may_recv Unexecuted instantiation: sink.c:channel_htx_may_recv Unexecuted instantiation: stats-html.c:channel_htx_may_recv Unexecuted instantiation: stats.c:channel_htx_may_recv Unexecuted instantiation: stconn.c:channel_htx_may_recv Unexecuted instantiation: stick_table.c:channel_htx_may_recv Unexecuted instantiation: stream.c:channel_htx_may_recv Unexecuted instantiation: tcp_rules.c:channel_htx_may_recv Unexecuted instantiation: tools.c:channel_htx_may_recv Unexecuted instantiation: trace.c:channel_htx_may_recv Unexecuted instantiation: vars.c:channel_htx_may_recv Unexecuted instantiation: activity.c:channel_htx_may_recv Unexecuted instantiation: applet.c:channel_htx_may_recv Unexecuted instantiation: backend.c:channel_htx_may_recv Unexecuted instantiation: cache.c:channel_htx_may_recv Unexecuted instantiation: channel.c:channel_htx_may_recv Unexecuted instantiation: dns.c:channel_htx_may_recv Unexecuted instantiation: dns_ring.c:channel_htx_may_recv Unexecuted instantiation: fcgi-app.c:channel_htx_may_recv Unexecuted instantiation: http_fetch.c:channel_htx_may_recv Unexecuted instantiation: payload.c:channel_htx_may_recv Unexecuted instantiation: stats-json.c:channel_htx_may_recv Unexecuted instantiation: flt_spoe.c:channel_htx_may_recv |
461 | | |
462 | | /* Returns non-zero if the channel can still receive data. This is used to |
463 | | * decide when to stop reading into a buffer when we want to ensure that we |
464 | | * leave the reserve untouched after all pending outgoing data are forwarded. |
465 | | * The reserved space is taken into account if ->to_forward indicates that an |
466 | | * end of transfer is close to happen. Note that both ->buf.o and ->to_forward |
467 | | * are considered as available since they're supposed to leave the buffer. The |
468 | | * test is optimized to avoid as many operations as possible for the fast case |
469 | | * and to be used as an "if" condition. Just like channel_recv_limit(), we |
470 | | * never allow to overwrite the reserve until the output stream connector is |
471 | | * connected, otherwise we could spin on a POST with http-send-name-header. |
472 | | */ |
473 | | static inline int channel_may_recv(const struct channel *chn) |
474 | 0 | { |
475 | 0 | int rem = chn->buf.size; |
476 | |
|
477 | 0 | if (IS_HTX_STRM(chn_strm(chn))) |
478 | 0 | return channel_htx_may_recv(chn, htxbuf(&chn->buf)); |
479 | | |
480 | 0 | if (b_is_null(&chn->buf)) |
481 | 0 | return 1; |
482 | | |
483 | 0 | rem -= b_data(&chn->buf); |
484 | 0 | if (!rem) |
485 | 0 | return 0; /* buffer already full */ |
486 | | |
487 | 0 | if (rem > global.tune.maxrewrite) |
488 | 0 | return 1; /* reserve not yet reached */ |
489 | | |
490 | 0 | if (!channel_may_send(chn)) |
491 | 0 | return 0; /* don't touch reserve until we can send */ |
492 | | |
493 | | /* Now we know there's some room left in the reserve and we may |
494 | | * forward. As long as i-to_fwd < size-maxrw, we may still |
495 | | * receive. This is equivalent to i+maxrw-size < to_fwd, |
496 | | * which is logical since i+maxrw-size is what overlaps with |
497 | | * the reserve, and we want to ensure they're covered by scheduled |
498 | | * forwards. |
499 | | */ |
500 | 0 | rem = ci_data(chn) + global.tune.maxrewrite - chn->buf.size; |
501 | 0 | return rem < 0 || (unsigned int)rem < chn->to_forward; |
502 | 0 | } Unexecuted instantiation: cfgparse.c:channel_may_recv Unexecuted instantiation: cli.c:channel_may_recv Unexecuted instantiation: connection.c:channel_may_recv Unexecuted instantiation: debug.c:channel_may_recv Unexecuted instantiation: errors.c:channel_may_recv Unexecuted instantiation: filters.c:channel_may_recv Unexecuted instantiation: flt_http_comp.c:channel_may_recv Unexecuted instantiation: frontend.c:channel_may_recv Unexecuted instantiation: haproxy.c:channel_may_recv Unexecuted instantiation: http_ana.c:channel_may_recv Unexecuted instantiation: http_ext.c:channel_may_recv Unexecuted instantiation: log.c:channel_may_recv Unexecuted instantiation: mworker.c:channel_may_recv Unexecuted instantiation: peers.c:channel_may_recv Unexecuted instantiation: pool.c:channel_may_recv Unexecuted instantiation: proxy.c:channel_may_recv Unexecuted instantiation: resolvers.c:channel_may_recv Unexecuted instantiation: ring.c:channel_may_recv Unexecuted instantiation: sample.c:channel_may_recv Unexecuted instantiation: server.c:channel_may_recv Unexecuted instantiation: sink.c:channel_may_recv Unexecuted instantiation: stats-html.c:channel_may_recv Unexecuted instantiation: stats.c:channel_may_recv Unexecuted instantiation: stconn.c:channel_may_recv Unexecuted instantiation: stick_table.c:channel_may_recv Unexecuted instantiation: stream.c:channel_may_recv Unexecuted instantiation: tcp_rules.c:channel_may_recv Unexecuted instantiation: tools.c:channel_may_recv Unexecuted instantiation: trace.c:channel_may_recv Unexecuted instantiation: vars.c:channel_may_recv Unexecuted instantiation: activity.c:channel_may_recv Unexecuted instantiation: applet.c:channel_may_recv Unexecuted instantiation: backend.c:channel_may_recv Unexecuted instantiation: cache.c:channel_may_recv Unexecuted instantiation: channel.c:channel_may_recv Unexecuted instantiation: dns.c:channel_may_recv Unexecuted instantiation: dns_ring.c:channel_may_recv Unexecuted instantiation: fcgi-app.c:channel_may_recv Unexecuted instantiation: http_fetch.c:channel_may_recv Unexecuted instantiation: payload.c:channel_may_recv Unexecuted instantiation: stats-json.c:channel_may_recv Unexecuted instantiation: flt_spoe.c:channel_may_recv |
503 | | |
504 | | /* Returns true if the channel's input is already closed */ |
505 | | static inline int channel_input_closed(struct channel *chn) |
506 | 0 | { |
507 | 0 | return ((chn_prod(chn)->flags & (SC_FL_ABRT_DONE|SC_FL_EOS)) != 0); |
508 | 0 | } Unexecuted instantiation: cfgparse.c:channel_input_closed Unexecuted instantiation: cli.c:channel_input_closed Unexecuted instantiation: connection.c:channel_input_closed Unexecuted instantiation: debug.c:channel_input_closed Unexecuted instantiation: errors.c:channel_input_closed Unexecuted instantiation: filters.c:channel_input_closed Unexecuted instantiation: flt_http_comp.c:channel_input_closed Unexecuted instantiation: frontend.c:channel_input_closed Unexecuted instantiation: haproxy.c:channel_input_closed Unexecuted instantiation: http_ana.c:channel_input_closed Unexecuted instantiation: http_ext.c:channel_input_closed Unexecuted instantiation: log.c:channel_input_closed Unexecuted instantiation: mworker.c:channel_input_closed Unexecuted instantiation: peers.c:channel_input_closed Unexecuted instantiation: pool.c:channel_input_closed Unexecuted instantiation: proxy.c:channel_input_closed Unexecuted instantiation: resolvers.c:channel_input_closed Unexecuted instantiation: ring.c:channel_input_closed Unexecuted instantiation: sample.c:channel_input_closed Unexecuted instantiation: server.c:channel_input_closed Unexecuted instantiation: sink.c:channel_input_closed Unexecuted instantiation: stats-html.c:channel_input_closed Unexecuted instantiation: stats.c:channel_input_closed Unexecuted instantiation: stconn.c:channel_input_closed Unexecuted instantiation: stick_table.c:channel_input_closed Unexecuted instantiation: stream.c:channel_input_closed Unexecuted instantiation: tcp_rules.c:channel_input_closed Unexecuted instantiation: tools.c:channel_input_closed Unexecuted instantiation: trace.c:channel_input_closed Unexecuted instantiation: vars.c:channel_input_closed Unexecuted instantiation: activity.c:channel_input_closed Unexecuted instantiation: applet.c:channel_input_closed Unexecuted instantiation: backend.c:channel_input_closed Unexecuted instantiation: cache.c:channel_input_closed Unexecuted instantiation: channel.c:channel_input_closed Unexecuted instantiation: dns.c:channel_input_closed Unexecuted instantiation: dns_ring.c:channel_input_closed Unexecuted instantiation: fcgi-app.c:channel_input_closed Unexecuted instantiation: http_fetch.c:channel_input_closed Unexecuted instantiation: payload.c:channel_input_closed Unexecuted instantiation: stats-json.c:channel_input_closed Unexecuted instantiation: flt_spoe.c:channel_input_closed |
509 | | |
510 | | /* Returns true if the channel's output is already closed */ |
511 | | static inline int channel_output_closed(struct channel *chn) |
512 | 0 | { |
513 | 0 | return ((chn_cons(chn)->flags & SC_FL_SHUT_DONE) != 0); |
514 | 0 | } Unexecuted instantiation: cfgparse.c:channel_output_closed Unexecuted instantiation: cli.c:channel_output_closed Unexecuted instantiation: connection.c:channel_output_closed Unexecuted instantiation: debug.c:channel_output_closed Unexecuted instantiation: errors.c:channel_output_closed Unexecuted instantiation: filters.c:channel_output_closed Unexecuted instantiation: flt_http_comp.c:channel_output_closed Unexecuted instantiation: frontend.c:channel_output_closed Unexecuted instantiation: haproxy.c:channel_output_closed Unexecuted instantiation: http_ana.c:channel_output_closed Unexecuted instantiation: http_ext.c:channel_output_closed Unexecuted instantiation: log.c:channel_output_closed Unexecuted instantiation: mworker.c:channel_output_closed Unexecuted instantiation: peers.c:channel_output_closed Unexecuted instantiation: pool.c:channel_output_closed Unexecuted instantiation: proxy.c:channel_output_closed Unexecuted instantiation: resolvers.c:channel_output_closed Unexecuted instantiation: ring.c:channel_output_closed Unexecuted instantiation: sample.c:channel_output_closed Unexecuted instantiation: server.c:channel_output_closed Unexecuted instantiation: sink.c:channel_output_closed Unexecuted instantiation: stats-html.c:channel_output_closed Unexecuted instantiation: stats.c:channel_output_closed Unexecuted instantiation: stconn.c:channel_output_closed Unexecuted instantiation: stick_table.c:channel_output_closed Unexecuted instantiation: stream.c:channel_output_closed Unexecuted instantiation: tcp_rules.c:channel_output_closed Unexecuted instantiation: tools.c:channel_output_closed Unexecuted instantiation: trace.c:channel_output_closed Unexecuted instantiation: vars.c:channel_output_closed Unexecuted instantiation: activity.c:channel_output_closed Unexecuted instantiation: applet.c:channel_output_closed Unexecuted instantiation: backend.c:channel_output_closed Unexecuted instantiation: cache.c:channel_output_closed Unexecuted instantiation: channel.c:channel_output_closed Unexecuted instantiation: dns.c:channel_output_closed Unexecuted instantiation: dns_ring.c:channel_output_closed Unexecuted instantiation: fcgi-app.c:channel_output_closed Unexecuted instantiation: http_fetch.c:channel_output_closed Unexecuted instantiation: payload.c:channel_output_closed Unexecuted instantiation: stats-json.c:channel_output_closed Unexecuted instantiation: flt_spoe.c:channel_output_closed |
515 | | |
516 | | /* Check channel timeouts, and set the corresponding flags. */ |
517 | | static inline void channel_check_timeout(struct channel *chn) |
518 | 0 | { |
519 | 0 | if (likely(!(chn->flags & CF_READ_EVENT)) && unlikely(tick_is_expired(chn->analyse_exp, now_ms))) |
520 | 0 | chn->flags |= CF_READ_EVENT; |
521 | 0 | } Unexecuted instantiation: cfgparse.c:channel_check_timeout Unexecuted instantiation: cli.c:channel_check_timeout Unexecuted instantiation: connection.c:channel_check_timeout Unexecuted instantiation: debug.c:channel_check_timeout Unexecuted instantiation: errors.c:channel_check_timeout Unexecuted instantiation: filters.c:channel_check_timeout Unexecuted instantiation: flt_http_comp.c:channel_check_timeout Unexecuted instantiation: frontend.c:channel_check_timeout Unexecuted instantiation: haproxy.c:channel_check_timeout Unexecuted instantiation: http_ana.c:channel_check_timeout Unexecuted instantiation: http_ext.c:channel_check_timeout Unexecuted instantiation: log.c:channel_check_timeout Unexecuted instantiation: mworker.c:channel_check_timeout Unexecuted instantiation: peers.c:channel_check_timeout Unexecuted instantiation: pool.c:channel_check_timeout Unexecuted instantiation: proxy.c:channel_check_timeout Unexecuted instantiation: resolvers.c:channel_check_timeout Unexecuted instantiation: ring.c:channel_check_timeout Unexecuted instantiation: sample.c:channel_check_timeout Unexecuted instantiation: server.c:channel_check_timeout Unexecuted instantiation: sink.c:channel_check_timeout Unexecuted instantiation: stats-html.c:channel_check_timeout Unexecuted instantiation: stats.c:channel_check_timeout Unexecuted instantiation: stconn.c:channel_check_timeout Unexecuted instantiation: stick_table.c:channel_check_timeout Unexecuted instantiation: stream.c:channel_check_timeout Unexecuted instantiation: tcp_rules.c:channel_check_timeout Unexecuted instantiation: tools.c:channel_check_timeout Unexecuted instantiation: trace.c:channel_check_timeout Unexecuted instantiation: vars.c:channel_check_timeout Unexecuted instantiation: activity.c:channel_check_timeout Unexecuted instantiation: applet.c:channel_check_timeout Unexecuted instantiation: backend.c:channel_check_timeout Unexecuted instantiation: cache.c:channel_check_timeout Unexecuted instantiation: channel.c:channel_check_timeout Unexecuted instantiation: dns.c:channel_check_timeout Unexecuted instantiation: dns_ring.c:channel_check_timeout Unexecuted instantiation: fcgi-app.c:channel_check_timeout Unexecuted instantiation: http_fetch.c:channel_check_timeout Unexecuted instantiation: payload.c:channel_check_timeout Unexecuted instantiation: stats-json.c:channel_check_timeout Unexecuted instantiation: flt_spoe.c:channel_check_timeout |
522 | | |
523 | | |
524 | | /* Erase any content from channel <buf> and adjusts flags accordingly. Note |
525 | | * that any spliced data is not affected since we may not have any access to |
526 | | * it. |
527 | | */ |
528 | | static inline void channel_erase(struct channel *chn) |
529 | 0 | { |
530 | 0 | chn->to_forward = 0; |
531 | 0 | chn->output = 0; |
532 | 0 | b_reset(&chn->buf); |
533 | 0 | } Unexecuted instantiation: cfgparse.c:channel_erase Unexecuted instantiation: cli.c:channel_erase Unexecuted instantiation: connection.c:channel_erase Unexecuted instantiation: debug.c:channel_erase Unexecuted instantiation: errors.c:channel_erase Unexecuted instantiation: filters.c:channel_erase Unexecuted instantiation: flt_http_comp.c:channel_erase Unexecuted instantiation: frontend.c:channel_erase Unexecuted instantiation: haproxy.c:channel_erase Unexecuted instantiation: http_ana.c:channel_erase Unexecuted instantiation: http_ext.c:channel_erase Unexecuted instantiation: log.c:channel_erase Unexecuted instantiation: mworker.c:channel_erase Unexecuted instantiation: peers.c:channel_erase Unexecuted instantiation: pool.c:channel_erase Unexecuted instantiation: proxy.c:channel_erase Unexecuted instantiation: resolvers.c:channel_erase Unexecuted instantiation: ring.c:channel_erase Unexecuted instantiation: sample.c:channel_erase Unexecuted instantiation: server.c:channel_erase Unexecuted instantiation: sink.c:channel_erase Unexecuted instantiation: stats-html.c:channel_erase Unexecuted instantiation: stats.c:channel_erase Unexecuted instantiation: stconn.c:channel_erase Unexecuted instantiation: stick_table.c:channel_erase Unexecuted instantiation: stream.c:channel_erase Unexecuted instantiation: tcp_rules.c:channel_erase Unexecuted instantiation: tools.c:channel_erase Unexecuted instantiation: trace.c:channel_erase Unexecuted instantiation: vars.c:channel_erase Unexecuted instantiation: activity.c:channel_erase Unexecuted instantiation: applet.c:channel_erase Unexecuted instantiation: backend.c:channel_erase Unexecuted instantiation: cache.c:channel_erase Unexecuted instantiation: channel.c:channel_erase Unexecuted instantiation: dns.c:channel_erase Unexecuted instantiation: dns_ring.c:channel_erase Unexecuted instantiation: fcgi-app.c:channel_erase Unexecuted instantiation: http_fetch.c:channel_erase Unexecuted instantiation: payload.c:channel_erase Unexecuted instantiation: stats-json.c:channel_erase Unexecuted instantiation: flt_spoe.c:channel_erase |
534 | | |
535 | | static inline void channel_htx_erase(struct channel *chn, struct htx *htx) |
536 | 0 | { |
537 | 0 | htx_reset(htx); |
538 | 0 | channel_erase(chn); |
539 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_erase Unexecuted instantiation: cli.c:channel_htx_erase Unexecuted instantiation: connection.c:channel_htx_erase Unexecuted instantiation: debug.c:channel_htx_erase Unexecuted instantiation: errors.c:channel_htx_erase Unexecuted instantiation: filters.c:channel_htx_erase Unexecuted instantiation: flt_http_comp.c:channel_htx_erase Unexecuted instantiation: frontend.c:channel_htx_erase Unexecuted instantiation: haproxy.c:channel_htx_erase Unexecuted instantiation: http_ana.c:channel_htx_erase Unexecuted instantiation: http_ext.c:channel_htx_erase Unexecuted instantiation: log.c:channel_htx_erase Unexecuted instantiation: mworker.c:channel_htx_erase Unexecuted instantiation: peers.c:channel_htx_erase Unexecuted instantiation: pool.c:channel_htx_erase Unexecuted instantiation: proxy.c:channel_htx_erase Unexecuted instantiation: resolvers.c:channel_htx_erase Unexecuted instantiation: ring.c:channel_htx_erase Unexecuted instantiation: sample.c:channel_htx_erase Unexecuted instantiation: server.c:channel_htx_erase Unexecuted instantiation: sink.c:channel_htx_erase Unexecuted instantiation: stats-html.c:channel_htx_erase Unexecuted instantiation: stats.c:channel_htx_erase Unexecuted instantiation: stconn.c:channel_htx_erase Unexecuted instantiation: stick_table.c:channel_htx_erase Unexecuted instantiation: stream.c:channel_htx_erase Unexecuted instantiation: tcp_rules.c:channel_htx_erase Unexecuted instantiation: tools.c:channel_htx_erase Unexecuted instantiation: trace.c:channel_htx_erase Unexecuted instantiation: vars.c:channel_htx_erase Unexecuted instantiation: activity.c:channel_htx_erase Unexecuted instantiation: applet.c:channel_htx_erase Unexecuted instantiation: backend.c:channel_htx_erase Unexecuted instantiation: cache.c:channel_htx_erase Unexecuted instantiation: channel.c:channel_htx_erase Unexecuted instantiation: dns.c:channel_htx_erase Unexecuted instantiation: dns_ring.c:channel_htx_erase Unexecuted instantiation: fcgi-app.c:channel_htx_erase Unexecuted instantiation: http_fetch.c:channel_htx_erase Unexecuted instantiation: payload.c:channel_htx_erase Unexecuted instantiation: stats-json.c:channel_htx_erase Unexecuted instantiation: flt_spoe.c:channel_htx_erase |
540 | | |
541 | | |
542 | | /* marks the channel as "shutdown" ASAP in both directions */ |
543 | | static inline void channel_abort(struct channel *chn) |
544 | 0 | { |
545 | 0 | chn_prod(chn)->flags |= SC_FL_ABRT_WANTED; |
546 | 0 | chn_cons(chn)->flags |= SC_FL_SHUT_WANTED; |
547 | 0 | chn->flags |= CF_AUTO_CLOSE; |
548 | 0 | chn->flags &= ~CF_AUTO_CONNECT; |
549 | 0 | } Unexecuted instantiation: cfgparse.c:channel_abort Unexecuted instantiation: cli.c:channel_abort Unexecuted instantiation: connection.c:channel_abort Unexecuted instantiation: debug.c:channel_abort Unexecuted instantiation: errors.c:channel_abort Unexecuted instantiation: filters.c:channel_abort Unexecuted instantiation: flt_http_comp.c:channel_abort Unexecuted instantiation: frontend.c:channel_abort Unexecuted instantiation: haproxy.c:channel_abort Unexecuted instantiation: http_ana.c:channel_abort Unexecuted instantiation: http_ext.c:channel_abort Unexecuted instantiation: log.c:channel_abort Unexecuted instantiation: mworker.c:channel_abort Unexecuted instantiation: peers.c:channel_abort Unexecuted instantiation: pool.c:channel_abort Unexecuted instantiation: proxy.c:channel_abort Unexecuted instantiation: resolvers.c:channel_abort Unexecuted instantiation: ring.c:channel_abort Unexecuted instantiation: sample.c:channel_abort Unexecuted instantiation: server.c:channel_abort Unexecuted instantiation: sink.c:channel_abort Unexecuted instantiation: stats-html.c:channel_abort Unexecuted instantiation: stats.c:channel_abort Unexecuted instantiation: stconn.c:channel_abort Unexecuted instantiation: stick_table.c:channel_abort Unexecuted instantiation: stream.c:channel_abort Unexecuted instantiation: tcp_rules.c:channel_abort Unexecuted instantiation: tools.c:channel_abort Unexecuted instantiation: trace.c:channel_abort Unexecuted instantiation: vars.c:channel_abort Unexecuted instantiation: activity.c:channel_abort Unexecuted instantiation: applet.c:channel_abort Unexecuted instantiation: backend.c:channel_abort Unexecuted instantiation: cache.c:channel_abort Unexecuted instantiation: channel.c:channel_abort Unexecuted instantiation: dns.c:channel_abort Unexecuted instantiation: dns_ring.c:channel_abort Unexecuted instantiation: fcgi-app.c:channel_abort Unexecuted instantiation: http_fetch.c:channel_abort Unexecuted instantiation: payload.c:channel_abort Unexecuted instantiation: stats-json.c:channel_abort Unexecuted instantiation: flt_spoe.c:channel_abort |
550 | | |
551 | | /* allow the consumer to try to establish a new connection. */ |
552 | | static inline void channel_auto_connect(struct channel *chn) |
553 | 0 | { |
554 | 0 | chn->flags |= CF_AUTO_CONNECT; |
555 | 0 | } Unexecuted instantiation: cfgparse.c:channel_auto_connect Unexecuted instantiation: cli.c:channel_auto_connect Unexecuted instantiation: connection.c:channel_auto_connect Unexecuted instantiation: debug.c:channel_auto_connect Unexecuted instantiation: errors.c:channel_auto_connect Unexecuted instantiation: filters.c:channel_auto_connect Unexecuted instantiation: flt_http_comp.c:channel_auto_connect Unexecuted instantiation: frontend.c:channel_auto_connect Unexecuted instantiation: haproxy.c:channel_auto_connect Unexecuted instantiation: http_ana.c:channel_auto_connect Unexecuted instantiation: http_ext.c:channel_auto_connect Unexecuted instantiation: log.c:channel_auto_connect Unexecuted instantiation: mworker.c:channel_auto_connect Unexecuted instantiation: peers.c:channel_auto_connect Unexecuted instantiation: pool.c:channel_auto_connect Unexecuted instantiation: proxy.c:channel_auto_connect Unexecuted instantiation: resolvers.c:channel_auto_connect Unexecuted instantiation: ring.c:channel_auto_connect Unexecuted instantiation: sample.c:channel_auto_connect Unexecuted instantiation: server.c:channel_auto_connect Unexecuted instantiation: sink.c:channel_auto_connect Unexecuted instantiation: stats-html.c:channel_auto_connect Unexecuted instantiation: stats.c:channel_auto_connect Unexecuted instantiation: stconn.c:channel_auto_connect Unexecuted instantiation: stick_table.c:channel_auto_connect Unexecuted instantiation: stream.c:channel_auto_connect Unexecuted instantiation: tcp_rules.c:channel_auto_connect Unexecuted instantiation: tools.c:channel_auto_connect Unexecuted instantiation: trace.c:channel_auto_connect Unexecuted instantiation: vars.c:channel_auto_connect Unexecuted instantiation: activity.c:channel_auto_connect Unexecuted instantiation: applet.c:channel_auto_connect Unexecuted instantiation: backend.c:channel_auto_connect Unexecuted instantiation: cache.c:channel_auto_connect Unexecuted instantiation: channel.c:channel_auto_connect Unexecuted instantiation: dns.c:channel_auto_connect Unexecuted instantiation: dns_ring.c:channel_auto_connect Unexecuted instantiation: fcgi-app.c:channel_auto_connect Unexecuted instantiation: http_fetch.c:channel_auto_connect Unexecuted instantiation: payload.c:channel_auto_connect Unexecuted instantiation: stats-json.c:channel_auto_connect Unexecuted instantiation: flt_spoe.c:channel_auto_connect |
556 | | |
557 | | /* prevent the consumer from trying to establish a new connection, and also |
558 | | * disable auto shutdown forwarding. |
559 | | */ |
560 | | static inline void channel_dont_connect(struct channel *chn) |
561 | 0 | { |
562 | 0 | chn->flags &= ~(CF_AUTO_CONNECT|CF_AUTO_CLOSE); |
563 | 0 | } Unexecuted instantiation: cfgparse.c:channel_dont_connect Unexecuted instantiation: cli.c:channel_dont_connect Unexecuted instantiation: connection.c:channel_dont_connect Unexecuted instantiation: debug.c:channel_dont_connect Unexecuted instantiation: errors.c:channel_dont_connect Unexecuted instantiation: filters.c:channel_dont_connect Unexecuted instantiation: flt_http_comp.c:channel_dont_connect Unexecuted instantiation: frontend.c:channel_dont_connect Unexecuted instantiation: haproxy.c:channel_dont_connect Unexecuted instantiation: http_ana.c:channel_dont_connect Unexecuted instantiation: http_ext.c:channel_dont_connect Unexecuted instantiation: log.c:channel_dont_connect Unexecuted instantiation: mworker.c:channel_dont_connect Unexecuted instantiation: peers.c:channel_dont_connect Unexecuted instantiation: pool.c:channel_dont_connect Unexecuted instantiation: proxy.c:channel_dont_connect Unexecuted instantiation: resolvers.c:channel_dont_connect Unexecuted instantiation: ring.c:channel_dont_connect Unexecuted instantiation: sample.c:channel_dont_connect Unexecuted instantiation: server.c:channel_dont_connect Unexecuted instantiation: sink.c:channel_dont_connect Unexecuted instantiation: stats-html.c:channel_dont_connect Unexecuted instantiation: stats.c:channel_dont_connect Unexecuted instantiation: stconn.c:channel_dont_connect Unexecuted instantiation: stick_table.c:channel_dont_connect Unexecuted instantiation: stream.c:channel_dont_connect Unexecuted instantiation: tcp_rules.c:channel_dont_connect Unexecuted instantiation: tools.c:channel_dont_connect Unexecuted instantiation: trace.c:channel_dont_connect Unexecuted instantiation: vars.c:channel_dont_connect Unexecuted instantiation: activity.c:channel_dont_connect Unexecuted instantiation: applet.c:channel_dont_connect Unexecuted instantiation: backend.c:channel_dont_connect Unexecuted instantiation: cache.c:channel_dont_connect Unexecuted instantiation: channel.c:channel_dont_connect Unexecuted instantiation: dns.c:channel_dont_connect Unexecuted instantiation: dns_ring.c:channel_dont_connect Unexecuted instantiation: fcgi-app.c:channel_dont_connect Unexecuted instantiation: http_fetch.c:channel_dont_connect Unexecuted instantiation: payload.c:channel_dont_connect Unexecuted instantiation: stats-json.c:channel_dont_connect Unexecuted instantiation: flt_spoe.c:channel_dont_connect |
564 | | |
565 | | /* allow the producer to forward shutdown requests */ |
566 | | static inline void channel_auto_close(struct channel *chn) |
567 | 0 | { |
568 | 0 | chn->flags |= CF_AUTO_CLOSE; |
569 | 0 | } Unexecuted instantiation: cfgparse.c:channel_auto_close Unexecuted instantiation: cli.c:channel_auto_close Unexecuted instantiation: connection.c:channel_auto_close Unexecuted instantiation: debug.c:channel_auto_close Unexecuted instantiation: errors.c:channel_auto_close Unexecuted instantiation: filters.c:channel_auto_close Unexecuted instantiation: flt_http_comp.c:channel_auto_close Unexecuted instantiation: frontend.c:channel_auto_close Unexecuted instantiation: haproxy.c:channel_auto_close Unexecuted instantiation: http_ana.c:channel_auto_close Unexecuted instantiation: http_ext.c:channel_auto_close Unexecuted instantiation: log.c:channel_auto_close Unexecuted instantiation: mworker.c:channel_auto_close Unexecuted instantiation: peers.c:channel_auto_close Unexecuted instantiation: pool.c:channel_auto_close Unexecuted instantiation: proxy.c:channel_auto_close Unexecuted instantiation: resolvers.c:channel_auto_close Unexecuted instantiation: ring.c:channel_auto_close Unexecuted instantiation: sample.c:channel_auto_close Unexecuted instantiation: server.c:channel_auto_close Unexecuted instantiation: sink.c:channel_auto_close Unexecuted instantiation: stats-html.c:channel_auto_close Unexecuted instantiation: stats.c:channel_auto_close Unexecuted instantiation: stconn.c:channel_auto_close Unexecuted instantiation: stick_table.c:channel_auto_close Unexecuted instantiation: stream.c:channel_auto_close Unexecuted instantiation: tcp_rules.c:channel_auto_close Unexecuted instantiation: tools.c:channel_auto_close Unexecuted instantiation: trace.c:channel_auto_close Unexecuted instantiation: vars.c:channel_auto_close Unexecuted instantiation: activity.c:channel_auto_close Unexecuted instantiation: applet.c:channel_auto_close Unexecuted instantiation: backend.c:channel_auto_close Unexecuted instantiation: cache.c:channel_auto_close Unexecuted instantiation: channel.c:channel_auto_close Unexecuted instantiation: dns.c:channel_auto_close Unexecuted instantiation: dns_ring.c:channel_auto_close Unexecuted instantiation: fcgi-app.c:channel_auto_close Unexecuted instantiation: http_fetch.c:channel_auto_close Unexecuted instantiation: payload.c:channel_auto_close Unexecuted instantiation: stats-json.c:channel_auto_close Unexecuted instantiation: flt_spoe.c:channel_auto_close |
570 | | |
571 | | /* prevent the producer from forwarding shutdown requests */ |
572 | | static inline void channel_dont_close(struct channel *chn) |
573 | 0 | { |
574 | 0 | chn->flags &= ~CF_AUTO_CLOSE; |
575 | 0 | } Unexecuted instantiation: cfgparse.c:channel_dont_close Unexecuted instantiation: cli.c:channel_dont_close Unexecuted instantiation: connection.c:channel_dont_close Unexecuted instantiation: debug.c:channel_dont_close Unexecuted instantiation: errors.c:channel_dont_close Unexecuted instantiation: filters.c:channel_dont_close Unexecuted instantiation: flt_http_comp.c:channel_dont_close Unexecuted instantiation: frontend.c:channel_dont_close Unexecuted instantiation: haproxy.c:channel_dont_close Unexecuted instantiation: http_ana.c:channel_dont_close Unexecuted instantiation: http_ext.c:channel_dont_close Unexecuted instantiation: log.c:channel_dont_close Unexecuted instantiation: mworker.c:channel_dont_close Unexecuted instantiation: peers.c:channel_dont_close Unexecuted instantiation: pool.c:channel_dont_close Unexecuted instantiation: proxy.c:channel_dont_close Unexecuted instantiation: resolvers.c:channel_dont_close Unexecuted instantiation: ring.c:channel_dont_close Unexecuted instantiation: sample.c:channel_dont_close Unexecuted instantiation: server.c:channel_dont_close Unexecuted instantiation: sink.c:channel_dont_close Unexecuted instantiation: stats-html.c:channel_dont_close Unexecuted instantiation: stats.c:channel_dont_close Unexecuted instantiation: stconn.c:channel_dont_close Unexecuted instantiation: stick_table.c:channel_dont_close Unexecuted instantiation: stream.c:channel_dont_close Unexecuted instantiation: tcp_rules.c:channel_dont_close Unexecuted instantiation: tools.c:channel_dont_close Unexecuted instantiation: trace.c:channel_dont_close Unexecuted instantiation: vars.c:channel_dont_close Unexecuted instantiation: activity.c:channel_dont_close Unexecuted instantiation: applet.c:channel_dont_close Unexecuted instantiation: backend.c:channel_dont_close Unexecuted instantiation: cache.c:channel_dont_close Unexecuted instantiation: channel.c:channel_dont_close Unexecuted instantiation: dns.c:channel_dont_close Unexecuted instantiation: dns_ring.c:channel_dont_close Unexecuted instantiation: fcgi-app.c:channel_dont_close Unexecuted instantiation: http_fetch.c:channel_dont_close Unexecuted instantiation: payload.c:channel_dont_close Unexecuted instantiation: stats-json.c:channel_dont_close Unexecuted instantiation: flt_spoe.c:channel_dont_close |
576 | | |
577 | | /* allow the producer to read / poll the input */ |
578 | | static inline void channel_auto_read(struct channel *chn) |
579 | 0 | { |
580 | 0 | chn->flags &= ~CF_DONT_READ; |
581 | 0 | } Unexecuted instantiation: cfgparse.c:channel_auto_read Unexecuted instantiation: cli.c:channel_auto_read Unexecuted instantiation: connection.c:channel_auto_read Unexecuted instantiation: debug.c:channel_auto_read Unexecuted instantiation: errors.c:channel_auto_read Unexecuted instantiation: filters.c:channel_auto_read Unexecuted instantiation: flt_http_comp.c:channel_auto_read Unexecuted instantiation: frontend.c:channel_auto_read Unexecuted instantiation: haproxy.c:channel_auto_read Unexecuted instantiation: http_ana.c:channel_auto_read Unexecuted instantiation: http_ext.c:channel_auto_read Unexecuted instantiation: log.c:channel_auto_read Unexecuted instantiation: mworker.c:channel_auto_read Unexecuted instantiation: peers.c:channel_auto_read Unexecuted instantiation: pool.c:channel_auto_read Unexecuted instantiation: proxy.c:channel_auto_read Unexecuted instantiation: resolvers.c:channel_auto_read Unexecuted instantiation: ring.c:channel_auto_read Unexecuted instantiation: sample.c:channel_auto_read Unexecuted instantiation: server.c:channel_auto_read Unexecuted instantiation: sink.c:channel_auto_read Unexecuted instantiation: stats-html.c:channel_auto_read Unexecuted instantiation: stats.c:channel_auto_read Unexecuted instantiation: stconn.c:channel_auto_read Unexecuted instantiation: stick_table.c:channel_auto_read Unexecuted instantiation: stream.c:channel_auto_read Unexecuted instantiation: tcp_rules.c:channel_auto_read Unexecuted instantiation: tools.c:channel_auto_read Unexecuted instantiation: trace.c:channel_auto_read Unexecuted instantiation: vars.c:channel_auto_read Unexecuted instantiation: activity.c:channel_auto_read Unexecuted instantiation: applet.c:channel_auto_read Unexecuted instantiation: backend.c:channel_auto_read Unexecuted instantiation: cache.c:channel_auto_read Unexecuted instantiation: channel.c:channel_auto_read Unexecuted instantiation: dns.c:channel_auto_read Unexecuted instantiation: dns_ring.c:channel_auto_read Unexecuted instantiation: fcgi-app.c:channel_auto_read Unexecuted instantiation: http_fetch.c:channel_auto_read Unexecuted instantiation: payload.c:channel_auto_read Unexecuted instantiation: stats-json.c:channel_auto_read Unexecuted instantiation: flt_spoe.c:channel_auto_read |
582 | | |
583 | | /* prevent the producer from read / poll the input */ |
584 | | static inline void channel_dont_read(struct channel *chn) |
585 | 0 | { |
586 | 0 | chn->flags |= CF_DONT_READ; |
587 | 0 | } Unexecuted instantiation: cfgparse.c:channel_dont_read Unexecuted instantiation: cli.c:channel_dont_read Unexecuted instantiation: connection.c:channel_dont_read Unexecuted instantiation: debug.c:channel_dont_read Unexecuted instantiation: errors.c:channel_dont_read Unexecuted instantiation: filters.c:channel_dont_read Unexecuted instantiation: flt_http_comp.c:channel_dont_read Unexecuted instantiation: frontend.c:channel_dont_read Unexecuted instantiation: haproxy.c:channel_dont_read Unexecuted instantiation: http_ana.c:channel_dont_read Unexecuted instantiation: http_ext.c:channel_dont_read Unexecuted instantiation: log.c:channel_dont_read Unexecuted instantiation: mworker.c:channel_dont_read Unexecuted instantiation: peers.c:channel_dont_read Unexecuted instantiation: pool.c:channel_dont_read Unexecuted instantiation: proxy.c:channel_dont_read Unexecuted instantiation: resolvers.c:channel_dont_read Unexecuted instantiation: ring.c:channel_dont_read Unexecuted instantiation: sample.c:channel_dont_read Unexecuted instantiation: server.c:channel_dont_read Unexecuted instantiation: sink.c:channel_dont_read Unexecuted instantiation: stats-html.c:channel_dont_read Unexecuted instantiation: stats.c:channel_dont_read Unexecuted instantiation: stconn.c:channel_dont_read Unexecuted instantiation: stick_table.c:channel_dont_read Unexecuted instantiation: stream.c:channel_dont_read Unexecuted instantiation: tcp_rules.c:channel_dont_read Unexecuted instantiation: tools.c:channel_dont_read Unexecuted instantiation: trace.c:channel_dont_read Unexecuted instantiation: vars.c:channel_dont_read Unexecuted instantiation: activity.c:channel_dont_read Unexecuted instantiation: applet.c:channel_dont_read Unexecuted instantiation: backend.c:channel_dont_read Unexecuted instantiation: cache.c:channel_dont_read Unexecuted instantiation: channel.c:channel_dont_read Unexecuted instantiation: dns.c:channel_dont_read Unexecuted instantiation: dns_ring.c:channel_dont_read Unexecuted instantiation: fcgi-app.c:channel_dont_read Unexecuted instantiation: http_fetch.c:channel_dont_read Unexecuted instantiation: payload.c:channel_dont_read Unexecuted instantiation: stats-json.c:channel_dont_read Unexecuted instantiation: flt_spoe.c:channel_dont_read |
588 | | |
589 | | |
590 | | /*************************************************/ |
591 | | /* Buffer operations in the context of a channel */ |
592 | | /*************************************************/ |
593 | | |
594 | | |
595 | | /* Return the max number of bytes the buffer can contain so that once all the |
596 | | * pending bytes are forwarded, the buffer still has global.tune.maxrewrite |
597 | | * bytes free. The result sits between chn->size - maxrewrite and chn->size. |
598 | | * It is important to mention that if buf->i is already larger than size-maxrw |
599 | | * the condition above cannot be satisfied and the lowest size will be returned |
600 | | * anyway. The principles are the following : |
601 | | * 0) the empty buffer has a limit of zero |
602 | | * 1) a non-connected buffer cannot touch the reserve |
603 | | * 2) infinite forward can always fill the buffer since all data will leave |
604 | | * 3) all output bytes are considered in transit since they're leaving |
605 | | * 4) all input bytes covered by to_forward are considered in transit since |
606 | | * they'll be converted to output bytes. |
607 | | * 5) all input bytes not covered by to_forward as considered remaining |
608 | | * 6) all bytes scheduled to be forwarded minus what is already in the input |
609 | | * buffer will be in transit during future rounds. |
610 | | * 7) 4+5+6 imply that the amount of input bytes (i) is irrelevant to the max |
611 | | * usable length, only to_forward and output count. The difference is |
612 | | * visible when to_forward > i. |
613 | | * 8) the reserve may be covered up to the amount of bytes in transit since |
614 | | * these bytes will only take temporary space. |
615 | | * |
616 | | * A typical buffer looks like this : |
617 | | * |
618 | | * <-------------- max_len -----------> |
619 | | * <---- o ----><----- i -----> <--- 0..maxrewrite ---> |
620 | | * +------------+--------------+-------+----------------------+ |
621 | | * |////////////|\\\\\\\\\\\\\\|xxxxxxx| reserve | |
622 | | * +------------+--------+-----+-------+----------------------+ |
623 | | * <- fwd -> <-avail-> |
624 | | * |
625 | | * Or when to_forward > i : |
626 | | * |
627 | | * <-------------- max_len -----------> |
628 | | * <---- o ----><----- i -----> <--- 0..maxrewrite ---> |
629 | | * +------------+--------------+-------+----------------------+ |
630 | | * |////////////|\\\\\\\\\\\\\\|xxxxxxx| reserve | |
631 | | * +------------+--------+-----+-------+----------------------+ |
632 | | * <-avail-> |
633 | | * <------------------ fwd ----------------> |
634 | | * |
635 | | * - the amount of buffer bytes in transit is : min(i, fwd) + o |
636 | | * - some scheduled bytes may be in transit (up to fwd - i) |
637 | | * - the reserve is max(0, maxrewrite - transit) |
638 | | * - the maximum usable buffer length is size - reserve. |
639 | | * - the available space is max_len - i - o |
640 | | * |
641 | | * So the formula to compute the buffer's maximum length to protect the reserve |
642 | | * when reading new data is : |
643 | | * |
644 | | * max = size - maxrewrite + min(maxrewrite, transit) |
645 | | * = size - max(maxrewrite - transit, 0) |
646 | | * |
647 | | * But WARNING! The conditions might change during the transfer and it could |
648 | | * very well happen that a buffer would contain more bytes than max_len due to |
649 | | * i+o already walking over the reserve (eg: after a header rewrite), including |
650 | | * i or o alone hitting the limit. So it is critical to always consider that |
651 | | * bounds may have already been crossed and that available space may be negative |
652 | | * for example. Due to this it is perfectly possible for this function to return |
653 | | * a value that is lower than current i+o. |
654 | | */ |
655 | | static inline int channel_recv_limit(const struct channel *chn) |
656 | 0 | { |
657 | 0 | unsigned int transit; |
658 | 0 | int reserve; |
659 | | |
660 | | /* return zero if empty */ |
661 | 0 | reserve = chn->buf.size; |
662 | 0 | if (b_is_null(&chn->buf)) |
663 | 0 | goto end; |
664 | | |
665 | | /* return size - maxrewrite if we can't send */ |
666 | 0 | reserve = global.tune.maxrewrite; |
667 | 0 | if (unlikely(!channel_may_send(chn))) |
668 | 0 | goto end; |
669 | | |
670 | | /* We need to check what remains of the reserve after o and to_forward |
671 | | * have been transmitted, but they can overflow together and they can |
672 | | * cause an integer underflow in the comparison since both are unsigned |
673 | | * while maxrewrite is signed. |
674 | | * The code below has been verified for being a valid check for this : |
675 | | * - if (o + to_forward) overflow => return size [ large enough ] |
676 | | * - if o + to_forward >= maxrw => return size [ large enough ] |
677 | | * - otherwise return size - (maxrw - (o + to_forward)) |
678 | | */ |
679 | 0 | transit = co_data(chn) + chn->to_forward; |
680 | 0 | reserve -= transit; |
681 | 0 | if (transit < chn->to_forward || // addition overflow |
682 | 0 | transit >= (unsigned)global.tune.maxrewrite) // enough transit data |
683 | 0 | return chn->buf.size; |
684 | 0 | end: |
685 | 0 | return chn->buf.size - reserve; |
686 | 0 | } Unexecuted instantiation: cfgparse.c:channel_recv_limit Unexecuted instantiation: cli.c:channel_recv_limit Unexecuted instantiation: connection.c:channel_recv_limit Unexecuted instantiation: debug.c:channel_recv_limit Unexecuted instantiation: errors.c:channel_recv_limit Unexecuted instantiation: filters.c:channel_recv_limit Unexecuted instantiation: flt_http_comp.c:channel_recv_limit Unexecuted instantiation: frontend.c:channel_recv_limit Unexecuted instantiation: haproxy.c:channel_recv_limit Unexecuted instantiation: http_ana.c:channel_recv_limit Unexecuted instantiation: http_ext.c:channel_recv_limit Unexecuted instantiation: log.c:channel_recv_limit Unexecuted instantiation: mworker.c:channel_recv_limit Unexecuted instantiation: peers.c:channel_recv_limit Unexecuted instantiation: pool.c:channel_recv_limit Unexecuted instantiation: proxy.c:channel_recv_limit Unexecuted instantiation: resolvers.c:channel_recv_limit Unexecuted instantiation: ring.c:channel_recv_limit Unexecuted instantiation: sample.c:channel_recv_limit Unexecuted instantiation: server.c:channel_recv_limit Unexecuted instantiation: sink.c:channel_recv_limit Unexecuted instantiation: stats-html.c:channel_recv_limit Unexecuted instantiation: stats.c:channel_recv_limit Unexecuted instantiation: stconn.c:channel_recv_limit Unexecuted instantiation: stick_table.c:channel_recv_limit Unexecuted instantiation: stream.c:channel_recv_limit Unexecuted instantiation: tcp_rules.c:channel_recv_limit Unexecuted instantiation: tools.c:channel_recv_limit Unexecuted instantiation: trace.c:channel_recv_limit Unexecuted instantiation: vars.c:channel_recv_limit Unexecuted instantiation: activity.c:channel_recv_limit Unexecuted instantiation: applet.c:channel_recv_limit Unexecuted instantiation: backend.c:channel_recv_limit Unexecuted instantiation: cache.c:channel_recv_limit Unexecuted instantiation: channel.c:channel_recv_limit Unexecuted instantiation: dns.c:channel_recv_limit Unexecuted instantiation: dns_ring.c:channel_recv_limit Unexecuted instantiation: fcgi-app.c:channel_recv_limit Unexecuted instantiation: http_fetch.c:channel_recv_limit Unexecuted instantiation: payload.c:channel_recv_limit Unexecuted instantiation: stats-json.c:channel_recv_limit Unexecuted instantiation: flt_spoe.c:channel_recv_limit |
687 | | |
688 | | /* HTX version of channel_recv_limit(). Return the max number of bytes the HTX |
689 | | * buffer can contain so that once all the pending bytes are forwarded, the |
690 | | * buffer still has global.tune.maxrewrite bytes free. |
691 | | */ |
692 | | static inline int channel_htx_recv_limit(const struct channel *chn, const struct htx *htx) |
693 | 0 | { |
694 | 0 | unsigned int transit; |
695 | 0 | int reserve; |
696 | | |
697 | | /* return zero if not allocated */ |
698 | 0 | if (!htx->size) |
699 | 0 | return 0; |
700 | | |
701 | | /* return max_data_space - maxrewrite if we can't send */ |
702 | 0 | reserve = global.tune.maxrewrite; |
703 | 0 | if (unlikely(!channel_may_send(chn))) |
704 | 0 | goto end; |
705 | | |
706 | | /* We need to check what remains of the reserve after o and to_forward |
707 | | * have been transmitted, but they can overflow together and they can |
708 | | * cause an integer underflow in the comparison since both are unsigned |
709 | | * while maxrewrite is signed. |
710 | | * The code below has been verified for being a valid check for this : |
711 | | * - if (o + to_forward) overflow => return htx->size [ large enough ] |
712 | | * - if o + to_forward >= maxrw => return htx->size [ large enough ] |
713 | | * - otherwise return htx->size - (maxrw - (o + to_forward)) |
714 | | */ |
715 | 0 | transit = co_data(chn) + chn->to_forward; |
716 | 0 | reserve -= transit; |
717 | 0 | if (transit < chn->to_forward || // addition overflow |
718 | 0 | transit >= (unsigned)global.tune.maxrewrite) // enough transit data |
719 | 0 | return htx->size; |
720 | 0 | end: |
721 | 0 | return (htx->size - reserve); |
722 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_recv_limit Unexecuted instantiation: cli.c:channel_htx_recv_limit Unexecuted instantiation: connection.c:channel_htx_recv_limit Unexecuted instantiation: debug.c:channel_htx_recv_limit Unexecuted instantiation: errors.c:channel_htx_recv_limit Unexecuted instantiation: filters.c:channel_htx_recv_limit Unexecuted instantiation: flt_http_comp.c:channel_htx_recv_limit Unexecuted instantiation: frontend.c:channel_htx_recv_limit Unexecuted instantiation: haproxy.c:channel_htx_recv_limit Unexecuted instantiation: http_ana.c:channel_htx_recv_limit Unexecuted instantiation: http_ext.c:channel_htx_recv_limit Unexecuted instantiation: log.c:channel_htx_recv_limit Unexecuted instantiation: mworker.c:channel_htx_recv_limit Unexecuted instantiation: peers.c:channel_htx_recv_limit Unexecuted instantiation: pool.c:channel_htx_recv_limit Unexecuted instantiation: proxy.c:channel_htx_recv_limit Unexecuted instantiation: resolvers.c:channel_htx_recv_limit Unexecuted instantiation: ring.c:channel_htx_recv_limit Unexecuted instantiation: sample.c:channel_htx_recv_limit Unexecuted instantiation: server.c:channel_htx_recv_limit Unexecuted instantiation: sink.c:channel_htx_recv_limit Unexecuted instantiation: stats-html.c:channel_htx_recv_limit Unexecuted instantiation: stats.c:channel_htx_recv_limit Unexecuted instantiation: stconn.c:channel_htx_recv_limit Unexecuted instantiation: stick_table.c:channel_htx_recv_limit Unexecuted instantiation: stream.c:channel_htx_recv_limit Unexecuted instantiation: tcp_rules.c:channel_htx_recv_limit Unexecuted instantiation: tools.c:channel_htx_recv_limit Unexecuted instantiation: trace.c:channel_htx_recv_limit Unexecuted instantiation: vars.c:channel_htx_recv_limit Unexecuted instantiation: activity.c:channel_htx_recv_limit Unexecuted instantiation: applet.c:channel_htx_recv_limit Unexecuted instantiation: backend.c:channel_htx_recv_limit Unexecuted instantiation: cache.c:channel_htx_recv_limit Unexecuted instantiation: channel.c:channel_htx_recv_limit Unexecuted instantiation: dns.c:channel_htx_recv_limit Unexecuted instantiation: dns_ring.c:channel_htx_recv_limit Unexecuted instantiation: fcgi-app.c:channel_htx_recv_limit Unexecuted instantiation: http_fetch.c:channel_htx_recv_limit Unexecuted instantiation: payload.c:channel_htx_recv_limit Unexecuted instantiation: stats-json.c:channel_htx_recv_limit Unexecuted instantiation: flt_spoe.c:channel_htx_recv_limit |
723 | | |
724 | | /* HTX version of channel_full(). Instead of checking if INPUT data exceeds |
725 | | * (size - reserve), this function checks if the free space for data in <htx> |
726 | | * and the data scheduled for output are lower to the reserve. In such case, the |
727 | | * channel is considered as full. |
728 | | */ |
729 | | static inline int channel_htx_full(const struct channel *c, const struct htx *htx, |
730 | | unsigned int reserve) |
731 | 0 | { |
732 | 0 | if (!htx->size) |
733 | 0 | return 0; |
734 | 0 | return (htx_free_data_space(htx) + co_data(c) <= reserve); |
735 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_full Unexecuted instantiation: cli.c:channel_htx_full Unexecuted instantiation: connection.c:channel_htx_full Unexecuted instantiation: debug.c:channel_htx_full Unexecuted instantiation: errors.c:channel_htx_full Unexecuted instantiation: filters.c:channel_htx_full Unexecuted instantiation: flt_http_comp.c:channel_htx_full Unexecuted instantiation: frontend.c:channel_htx_full Unexecuted instantiation: haproxy.c:channel_htx_full Unexecuted instantiation: http_ana.c:channel_htx_full Unexecuted instantiation: http_ext.c:channel_htx_full Unexecuted instantiation: log.c:channel_htx_full Unexecuted instantiation: mworker.c:channel_htx_full Unexecuted instantiation: peers.c:channel_htx_full Unexecuted instantiation: pool.c:channel_htx_full Unexecuted instantiation: proxy.c:channel_htx_full Unexecuted instantiation: resolvers.c:channel_htx_full Unexecuted instantiation: ring.c:channel_htx_full Unexecuted instantiation: sample.c:channel_htx_full Unexecuted instantiation: server.c:channel_htx_full Unexecuted instantiation: sink.c:channel_htx_full Unexecuted instantiation: stats-html.c:channel_htx_full Unexecuted instantiation: stats.c:channel_htx_full Unexecuted instantiation: stconn.c:channel_htx_full Unexecuted instantiation: stick_table.c:channel_htx_full Unexecuted instantiation: stream.c:channel_htx_full Unexecuted instantiation: tcp_rules.c:channel_htx_full Unexecuted instantiation: tools.c:channel_htx_full Unexecuted instantiation: trace.c:channel_htx_full Unexecuted instantiation: vars.c:channel_htx_full Unexecuted instantiation: activity.c:channel_htx_full Unexecuted instantiation: applet.c:channel_htx_full Unexecuted instantiation: backend.c:channel_htx_full Unexecuted instantiation: cache.c:channel_htx_full Unexecuted instantiation: channel.c:channel_htx_full Unexecuted instantiation: dns.c:channel_htx_full Unexecuted instantiation: dns_ring.c:channel_htx_full Unexecuted instantiation: fcgi-app.c:channel_htx_full Unexecuted instantiation: http_fetch.c:channel_htx_full Unexecuted instantiation: payload.c:channel_htx_full Unexecuted instantiation: stats-json.c:channel_htx_full Unexecuted instantiation: flt_spoe.c:channel_htx_full |
736 | | |
737 | | /* Returns non-zero if the channel's INPUT buffer's is considered full, which |
738 | | * means that it holds at least as much INPUT data as (size - reserve). This |
739 | | * also means that data that are scheduled for output are considered as potential |
740 | | * free space, and that the reserved space is always considered as not usable. |
741 | | * This information alone cannot be used as a general purpose free space indicator. |
742 | | * However it accurately indicates that too many data were fed in the buffer |
743 | | * for an analyzer for instance. See the channel_may_recv() function for a more |
744 | | * generic function taking everything into account. |
745 | | */ |
746 | | static inline int channel_full(const struct channel *c, unsigned int reserve) |
747 | 0 | { |
748 | 0 | if (b_is_null(&c->buf)) |
749 | 0 | return 0; |
750 | | |
751 | 0 | if (IS_HTX_STRM(chn_strm(c))) |
752 | 0 | return channel_htx_full(c, htxbuf(&c->buf), reserve); |
753 | | |
754 | 0 | return (ci_data(c) + reserve >= c_size(c)); |
755 | 0 | } Unexecuted instantiation: cfgparse.c:channel_full Unexecuted instantiation: cli.c:channel_full Unexecuted instantiation: connection.c:channel_full Unexecuted instantiation: debug.c:channel_full Unexecuted instantiation: errors.c:channel_full Unexecuted instantiation: filters.c:channel_full Unexecuted instantiation: flt_http_comp.c:channel_full Unexecuted instantiation: frontend.c:channel_full Unexecuted instantiation: haproxy.c:channel_full Unexecuted instantiation: http_ana.c:channel_full Unexecuted instantiation: http_ext.c:channel_full Unexecuted instantiation: log.c:channel_full Unexecuted instantiation: mworker.c:channel_full Unexecuted instantiation: peers.c:channel_full Unexecuted instantiation: pool.c:channel_full Unexecuted instantiation: proxy.c:channel_full Unexecuted instantiation: resolvers.c:channel_full Unexecuted instantiation: ring.c:channel_full Unexecuted instantiation: sample.c:channel_full Unexecuted instantiation: server.c:channel_full Unexecuted instantiation: sink.c:channel_full Unexecuted instantiation: stats-html.c:channel_full Unexecuted instantiation: stats.c:channel_full Unexecuted instantiation: stconn.c:channel_full Unexecuted instantiation: stick_table.c:channel_full Unexecuted instantiation: stream.c:channel_full Unexecuted instantiation: tcp_rules.c:channel_full Unexecuted instantiation: tools.c:channel_full Unexecuted instantiation: trace.c:channel_full Unexecuted instantiation: vars.c:channel_full Unexecuted instantiation: activity.c:channel_full Unexecuted instantiation: applet.c:channel_full Unexecuted instantiation: backend.c:channel_full Unexecuted instantiation: cache.c:channel_full Unexecuted instantiation: channel.c:channel_full Unexecuted instantiation: dns.c:channel_full Unexecuted instantiation: dns_ring.c:channel_full Unexecuted instantiation: fcgi-app.c:channel_full Unexecuted instantiation: http_fetch.c:channel_full Unexecuted instantiation: payload.c:channel_full Unexecuted instantiation: stats-json.c:channel_full Unexecuted instantiation: flt_spoe.c:channel_full |
756 | | |
757 | | /* HTX version of channel_recv_max(). */ |
758 | | static inline int channel_htx_recv_max(const struct channel *chn, const struct htx *htx) |
759 | 0 | { |
760 | 0 | int ret; |
761 | |
|
762 | 0 | ret = channel_htx_recv_limit(chn, htx) - htx_used_space(htx); |
763 | 0 | if (ret < 0) |
764 | 0 | ret = 0; |
765 | 0 | return ret; |
766 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_recv_max Unexecuted instantiation: cli.c:channel_htx_recv_max Unexecuted instantiation: connection.c:channel_htx_recv_max Unexecuted instantiation: debug.c:channel_htx_recv_max Unexecuted instantiation: errors.c:channel_htx_recv_max Unexecuted instantiation: filters.c:channel_htx_recv_max Unexecuted instantiation: flt_http_comp.c:channel_htx_recv_max Unexecuted instantiation: frontend.c:channel_htx_recv_max Unexecuted instantiation: haproxy.c:channel_htx_recv_max Unexecuted instantiation: http_ana.c:channel_htx_recv_max Unexecuted instantiation: http_ext.c:channel_htx_recv_max Unexecuted instantiation: log.c:channel_htx_recv_max Unexecuted instantiation: mworker.c:channel_htx_recv_max Unexecuted instantiation: peers.c:channel_htx_recv_max Unexecuted instantiation: pool.c:channel_htx_recv_max Unexecuted instantiation: proxy.c:channel_htx_recv_max Unexecuted instantiation: resolvers.c:channel_htx_recv_max Unexecuted instantiation: ring.c:channel_htx_recv_max Unexecuted instantiation: sample.c:channel_htx_recv_max Unexecuted instantiation: server.c:channel_htx_recv_max Unexecuted instantiation: sink.c:channel_htx_recv_max Unexecuted instantiation: stats-html.c:channel_htx_recv_max Unexecuted instantiation: stats.c:channel_htx_recv_max Unexecuted instantiation: stconn.c:channel_htx_recv_max Unexecuted instantiation: stick_table.c:channel_htx_recv_max Unexecuted instantiation: stream.c:channel_htx_recv_max Unexecuted instantiation: tcp_rules.c:channel_htx_recv_max Unexecuted instantiation: tools.c:channel_htx_recv_max Unexecuted instantiation: trace.c:channel_htx_recv_max Unexecuted instantiation: vars.c:channel_htx_recv_max Unexecuted instantiation: activity.c:channel_htx_recv_max Unexecuted instantiation: applet.c:channel_htx_recv_max Unexecuted instantiation: backend.c:channel_htx_recv_max Unexecuted instantiation: cache.c:channel_htx_recv_max Unexecuted instantiation: channel.c:channel_htx_recv_max Unexecuted instantiation: dns.c:channel_htx_recv_max Unexecuted instantiation: dns_ring.c:channel_htx_recv_max Unexecuted instantiation: fcgi-app.c:channel_htx_recv_max Unexecuted instantiation: http_fetch.c:channel_htx_recv_max Unexecuted instantiation: payload.c:channel_htx_recv_max Unexecuted instantiation: stats-json.c:channel_htx_recv_max Unexecuted instantiation: flt_spoe.c:channel_htx_recv_max |
767 | | |
768 | | /* Returns the amount of space available at the input of the buffer, taking the |
769 | | * reserved space into account if ->to_forward indicates that an end of transfer |
770 | | * is close to happen. The test is optimized to avoid as many operations as |
771 | | * possible for the fast case. |
772 | | */ |
773 | | static inline int channel_recv_max(const struct channel *chn) |
774 | 0 | { |
775 | 0 | int ret; |
776 | |
|
777 | 0 | if (IS_HTX_STRM(chn_strm(chn))) |
778 | 0 | return channel_htx_recv_max(chn, htxbuf(&chn->buf)); |
779 | | |
780 | 0 | ret = channel_recv_limit(chn) - b_data(&chn->buf); |
781 | 0 | if (ret < 0) |
782 | 0 | ret = 0; |
783 | 0 | return ret; |
784 | 0 | } Unexecuted instantiation: cfgparse.c:channel_recv_max Unexecuted instantiation: cli.c:channel_recv_max Unexecuted instantiation: connection.c:channel_recv_max Unexecuted instantiation: debug.c:channel_recv_max Unexecuted instantiation: errors.c:channel_recv_max Unexecuted instantiation: filters.c:channel_recv_max Unexecuted instantiation: flt_http_comp.c:channel_recv_max Unexecuted instantiation: frontend.c:channel_recv_max Unexecuted instantiation: haproxy.c:channel_recv_max Unexecuted instantiation: http_ana.c:channel_recv_max Unexecuted instantiation: http_ext.c:channel_recv_max Unexecuted instantiation: log.c:channel_recv_max Unexecuted instantiation: mworker.c:channel_recv_max Unexecuted instantiation: peers.c:channel_recv_max Unexecuted instantiation: pool.c:channel_recv_max Unexecuted instantiation: proxy.c:channel_recv_max Unexecuted instantiation: resolvers.c:channel_recv_max Unexecuted instantiation: ring.c:channel_recv_max Unexecuted instantiation: sample.c:channel_recv_max Unexecuted instantiation: server.c:channel_recv_max Unexecuted instantiation: sink.c:channel_recv_max Unexecuted instantiation: stats-html.c:channel_recv_max Unexecuted instantiation: stats.c:channel_recv_max Unexecuted instantiation: stconn.c:channel_recv_max Unexecuted instantiation: stick_table.c:channel_recv_max Unexecuted instantiation: stream.c:channel_recv_max Unexecuted instantiation: tcp_rules.c:channel_recv_max Unexecuted instantiation: tools.c:channel_recv_max Unexecuted instantiation: trace.c:channel_recv_max Unexecuted instantiation: vars.c:channel_recv_max Unexecuted instantiation: activity.c:channel_recv_max Unexecuted instantiation: applet.c:channel_recv_max Unexecuted instantiation: backend.c:channel_recv_max Unexecuted instantiation: cache.c:channel_recv_max Unexecuted instantiation: channel.c:channel_recv_max Unexecuted instantiation: dns.c:channel_recv_max Unexecuted instantiation: dns_ring.c:channel_recv_max Unexecuted instantiation: fcgi-app.c:channel_recv_max Unexecuted instantiation: http_fetch.c:channel_recv_max Unexecuted instantiation: payload.c:channel_recv_max Unexecuted instantiation: stats-json.c:channel_recv_max Unexecuted instantiation: flt_spoe.c:channel_recv_max |
785 | | |
786 | | /* Returns the maximum absolute amount of data that can be copied in a channel, |
787 | | * taking the reserved space into account but also the HTX overhead for HTX |
788 | | * streams. |
789 | | */ |
790 | | static inline size_t channel_data_limit(const struct channel *chn) |
791 | 0 | { |
792 | 0 | size_t max = (global.tune.bufsize - global.tune.maxrewrite); |
793 | |
|
794 | 0 | if (IS_HTX_STRM(chn_strm(chn))) |
795 | 0 | max -= HTX_BUF_OVERHEAD; |
796 | 0 | return max; |
797 | 0 | } Unexecuted instantiation: cfgparse.c:channel_data_limit Unexecuted instantiation: cli.c:channel_data_limit Unexecuted instantiation: connection.c:channel_data_limit Unexecuted instantiation: debug.c:channel_data_limit Unexecuted instantiation: errors.c:channel_data_limit Unexecuted instantiation: filters.c:channel_data_limit Unexecuted instantiation: flt_http_comp.c:channel_data_limit Unexecuted instantiation: frontend.c:channel_data_limit Unexecuted instantiation: haproxy.c:channel_data_limit Unexecuted instantiation: http_ana.c:channel_data_limit Unexecuted instantiation: http_ext.c:channel_data_limit Unexecuted instantiation: log.c:channel_data_limit Unexecuted instantiation: mworker.c:channel_data_limit Unexecuted instantiation: peers.c:channel_data_limit Unexecuted instantiation: pool.c:channel_data_limit Unexecuted instantiation: proxy.c:channel_data_limit Unexecuted instantiation: resolvers.c:channel_data_limit Unexecuted instantiation: ring.c:channel_data_limit Unexecuted instantiation: sample.c:channel_data_limit Unexecuted instantiation: server.c:channel_data_limit Unexecuted instantiation: sink.c:channel_data_limit Unexecuted instantiation: stats-html.c:channel_data_limit Unexecuted instantiation: stats.c:channel_data_limit Unexecuted instantiation: stconn.c:channel_data_limit Unexecuted instantiation: stick_table.c:channel_data_limit Unexecuted instantiation: stream.c:channel_data_limit Unexecuted instantiation: tcp_rules.c:channel_data_limit Unexecuted instantiation: tools.c:channel_data_limit Unexecuted instantiation: trace.c:channel_data_limit Unexecuted instantiation: vars.c:channel_data_limit Unexecuted instantiation: activity.c:channel_data_limit Unexecuted instantiation: applet.c:channel_data_limit Unexecuted instantiation: backend.c:channel_data_limit Unexecuted instantiation: cache.c:channel_data_limit Unexecuted instantiation: channel.c:channel_data_limit Unexecuted instantiation: dns.c:channel_data_limit Unexecuted instantiation: dns_ring.c:channel_data_limit Unexecuted instantiation: fcgi-app.c:channel_data_limit Unexecuted instantiation: http_fetch.c:channel_data_limit Unexecuted instantiation: payload.c:channel_data_limit Unexecuted instantiation: stats-json.c:channel_data_limit Unexecuted instantiation: flt_spoe.c:channel_data_limit |
798 | | |
799 | | /* Returns the amount of data in a channel, taking the HTX streams into |
800 | | * account. For raw channels, it is equivalent to c_data. For HTX channels, we |
801 | | * rely on the HTX api. |
802 | | */ |
803 | | static inline size_t channel_data(const struct channel *chn) |
804 | 0 | { |
805 | 0 | return (IS_HTX_STRM(chn_strm(chn)) ? htx_used_space(htxbuf(&chn->buf)) : c_data(chn)); |
806 | 0 | } Unexecuted instantiation: cfgparse.c:channel_data Unexecuted instantiation: cli.c:channel_data Unexecuted instantiation: connection.c:channel_data Unexecuted instantiation: debug.c:channel_data Unexecuted instantiation: errors.c:channel_data Unexecuted instantiation: filters.c:channel_data Unexecuted instantiation: flt_http_comp.c:channel_data Unexecuted instantiation: frontend.c:channel_data Unexecuted instantiation: haproxy.c:channel_data Unexecuted instantiation: http_ana.c:channel_data Unexecuted instantiation: http_ext.c:channel_data Unexecuted instantiation: log.c:channel_data Unexecuted instantiation: mworker.c:channel_data Unexecuted instantiation: peers.c:channel_data Unexecuted instantiation: pool.c:channel_data Unexecuted instantiation: proxy.c:channel_data Unexecuted instantiation: resolvers.c:channel_data Unexecuted instantiation: ring.c:channel_data Unexecuted instantiation: sample.c:channel_data Unexecuted instantiation: server.c:channel_data Unexecuted instantiation: sink.c:channel_data Unexecuted instantiation: stats-html.c:channel_data Unexecuted instantiation: stats.c:channel_data Unexecuted instantiation: stconn.c:channel_data Unexecuted instantiation: stick_table.c:channel_data Unexecuted instantiation: stream.c:channel_data Unexecuted instantiation: tcp_rules.c:channel_data Unexecuted instantiation: tools.c:channel_data Unexecuted instantiation: trace.c:channel_data Unexecuted instantiation: vars.c:channel_data Unexecuted instantiation: activity.c:channel_data Unexecuted instantiation: applet.c:channel_data Unexecuted instantiation: backend.c:channel_data Unexecuted instantiation: cache.c:channel_data Unexecuted instantiation: channel.c:channel_data Unexecuted instantiation: dns.c:channel_data Unexecuted instantiation: dns_ring.c:channel_data Unexecuted instantiation: fcgi-app.c:channel_data Unexecuted instantiation: http_fetch.c:channel_data Unexecuted instantiation: payload.c:channel_data Unexecuted instantiation: stats-json.c:channel_data Unexecuted instantiation: flt_spoe.c:channel_data |
807 | | |
808 | | /* Returns the amount of input data in a channel, taking he HTX streams into |
809 | | * account. This function relies on channel_data(). |
810 | | */ |
811 | | static inline size_t channel_input_data(const struct channel *chn) |
812 | 0 | { |
813 | 0 | return channel_data(chn) - co_data(chn); |
814 | 0 | } Unexecuted instantiation: cfgparse.c:channel_input_data Unexecuted instantiation: cli.c:channel_input_data Unexecuted instantiation: connection.c:channel_input_data Unexecuted instantiation: debug.c:channel_input_data Unexecuted instantiation: errors.c:channel_input_data Unexecuted instantiation: filters.c:channel_input_data Unexecuted instantiation: flt_http_comp.c:channel_input_data Unexecuted instantiation: frontend.c:channel_input_data Unexecuted instantiation: haproxy.c:channel_input_data Unexecuted instantiation: http_ana.c:channel_input_data Unexecuted instantiation: http_ext.c:channel_input_data Unexecuted instantiation: log.c:channel_input_data Unexecuted instantiation: mworker.c:channel_input_data Unexecuted instantiation: peers.c:channel_input_data Unexecuted instantiation: pool.c:channel_input_data Unexecuted instantiation: proxy.c:channel_input_data Unexecuted instantiation: resolvers.c:channel_input_data Unexecuted instantiation: ring.c:channel_input_data Unexecuted instantiation: sample.c:channel_input_data Unexecuted instantiation: server.c:channel_input_data Unexecuted instantiation: sink.c:channel_input_data Unexecuted instantiation: stats-html.c:channel_input_data Unexecuted instantiation: stats.c:channel_input_data Unexecuted instantiation: stconn.c:channel_input_data Unexecuted instantiation: stick_table.c:channel_input_data Unexecuted instantiation: stream.c:channel_input_data Unexecuted instantiation: tcp_rules.c:channel_input_data Unexecuted instantiation: tools.c:channel_input_data Unexecuted instantiation: trace.c:channel_input_data Unexecuted instantiation: vars.c:channel_input_data Unexecuted instantiation: activity.c:channel_input_data Unexecuted instantiation: applet.c:channel_input_data Unexecuted instantiation: backend.c:channel_input_data Unexecuted instantiation: cache.c:channel_input_data Unexecuted instantiation: channel.c:channel_input_data Unexecuted instantiation: dns.c:channel_input_data Unexecuted instantiation: dns_ring.c:channel_input_data Unexecuted instantiation: fcgi-app.c:channel_input_data Unexecuted instantiation: http_fetch.c:channel_input_data Unexecuted instantiation: payload.c:channel_input_data Unexecuted instantiation: stats-json.c:channel_input_data Unexecuted instantiation: flt_spoe.c:channel_input_data |
815 | | |
816 | | /* Returns 1 if the channel is empty, taking he HTX streams into account */ |
817 | | static inline size_t channel_empty(const struct channel *chn) |
818 | 0 | { |
819 | 0 | return (IS_HTX_STRM(chn) ? htx_is_empty(htxbuf(&chn->buf)) : c_empty(chn)); |
820 | 0 | } Unexecuted instantiation: cfgparse.c:channel_empty Unexecuted instantiation: cli.c:channel_empty Unexecuted instantiation: connection.c:channel_empty Unexecuted instantiation: debug.c:channel_empty Unexecuted instantiation: errors.c:channel_empty Unexecuted instantiation: filters.c:channel_empty Unexecuted instantiation: flt_http_comp.c:channel_empty Unexecuted instantiation: frontend.c:channel_empty Unexecuted instantiation: haproxy.c:channel_empty Unexecuted instantiation: http_ana.c:channel_empty Unexecuted instantiation: http_ext.c:channel_empty Unexecuted instantiation: log.c:channel_empty Unexecuted instantiation: mworker.c:channel_empty Unexecuted instantiation: peers.c:channel_empty Unexecuted instantiation: pool.c:channel_empty Unexecuted instantiation: proxy.c:channel_empty Unexecuted instantiation: resolvers.c:channel_empty Unexecuted instantiation: ring.c:channel_empty Unexecuted instantiation: sample.c:channel_empty Unexecuted instantiation: server.c:channel_empty Unexecuted instantiation: sink.c:channel_empty Unexecuted instantiation: stats-html.c:channel_empty Unexecuted instantiation: stats.c:channel_empty Unexecuted instantiation: stconn.c:channel_empty Unexecuted instantiation: stick_table.c:channel_empty Unexecuted instantiation: stream.c:channel_empty Unexecuted instantiation: tcp_rules.c:channel_empty Unexecuted instantiation: tools.c:channel_empty Unexecuted instantiation: trace.c:channel_empty Unexecuted instantiation: vars.c:channel_empty Unexecuted instantiation: activity.c:channel_empty Unexecuted instantiation: applet.c:channel_empty Unexecuted instantiation: backend.c:channel_empty Unexecuted instantiation: cache.c:channel_empty Unexecuted instantiation: channel.c:channel_empty Unexecuted instantiation: dns.c:channel_empty Unexecuted instantiation: dns_ring.c:channel_empty Unexecuted instantiation: fcgi-app.c:channel_empty Unexecuted instantiation: http_fetch.c:channel_empty Unexecuted instantiation: payload.c:channel_empty Unexecuted instantiation: stats-json.c:channel_empty Unexecuted instantiation: flt_spoe.c:channel_empty |
821 | | |
822 | | /* Check channel's last_read date against the idle timeer to verify the producer |
823 | | * is still streaming data or not |
824 | | */ |
825 | | static inline void channel_check_idletimer(struct channel *chn) |
826 | 0 | { |
827 | 0 | if ((chn->flags & (CF_STREAMER | CF_STREAMER_FAST)) && !co_data(chn) && |
828 | 0 | global.tune.idle_timer && |
829 | 0 | (unsigned short)(now_ms - chn->last_read) >= global.tune.idle_timer) { |
830 | | /* The buffer was empty and nothing was transferred for more |
831 | | * than one second. This was caused by a pause and not by |
832 | | * congestion. Reset any streaming mode to reduce latency. |
833 | | */ |
834 | 0 | chn->xfer_small = 0; |
835 | 0 | chn->xfer_large = 0; |
836 | 0 | chn->flags &= ~(CF_STREAMER | CF_STREAMER_FAST); |
837 | 0 | } |
838 | 0 | } Unexecuted instantiation: cfgparse.c:channel_check_idletimer Unexecuted instantiation: cli.c:channel_check_idletimer Unexecuted instantiation: connection.c:channel_check_idletimer Unexecuted instantiation: debug.c:channel_check_idletimer Unexecuted instantiation: errors.c:channel_check_idletimer Unexecuted instantiation: filters.c:channel_check_idletimer Unexecuted instantiation: flt_http_comp.c:channel_check_idletimer Unexecuted instantiation: frontend.c:channel_check_idletimer Unexecuted instantiation: haproxy.c:channel_check_idletimer Unexecuted instantiation: http_ana.c:channel_check_idletimer Unexecuted instantiation: http_ext.c:channel_check_idletimer Unexecuted instantiation: log.c:channel_check_idletimer Unexecuted instantiation: mworker.c:channel_check_idletimer Unexecuted instantiation: peers.c:channel_check_idletimer Unexecuted instantiation: pool.c:channel_check_idletimer Unexecuted instantiation: proxy.c:channel_check_idletimer Unexecuted instantiation: resolvers.c:channel_check_idletimer Unexecuted instantiation: ring.c:channel_check_idletimer Unexecuted instantiation: sample.c:channel_check_idletimer Unexecuted instantiation: server.c:channel_check_idletimer Unexecuted instantiation: sink.c:channel_check_idletimer Unexecuted instantiation: stats-html.c:channel_check_idletimer Unexecuted instantiation: stats.c:channel_check_idletimer Unexecuted instantiation: stconn.c:channel_check_idletimer Unexecuted instantiation: stick_table.c:channel_check_idletimer Unexecuted instantiation: stream.c:channel_check_idletimer Unexecuted instantiation: tcp_rules.c:channel_check_idletimer Unexecuted instantiation: tools.c:channel_check_idletimer Unexecuted instantiation: trace.c:channel_check_idletimer Unexecuted instantiation: vars.c:channel_check_idletimer Unexecuted instantiation: activity.c:channel_check_idletimer Unexecuted instantiation: applet.c:channel_check_idletimer Unexecuted instantiation: backend.c:channel_check_idletimer Unexecuted instantiation: cache.c:channel_check_idletimer Unexecuted instantiation: channel.c:channel_check_idletimer Unexecuted instantiation: dns.c:channel_check_idletimer Unexecuted instantiation: dns_ring.c:channel_check_idletimer Unexecuted instantiation: fcgi-app.c:channel_check_idletimer Unexecuted instantiation: http_fetch.c:channel_check_idletimer Unexecuted instantiation: payload.c:channel_check_idletimer Unexecuted instantiation: stats-json.c:channel_check_idletimer Unexecuted instantiation: flt_spoe.c:channel_check_idletimer |
839 | | |
840 | | /* Check amount of transferred data after a receive. If <xferred> is greater |
841 | | * than 0, the <last_read> date is updated and STREAMER flags for the channels |
842 | | * are verified. |
843 | | */ |
844 | | static inline void channel_check_xfer(struct channel *chn, size_t xferred) |
845 | 0 | { |
846 | 0 | if (!xferred) |
847 | 0 | return; |
848 | | |
849 | 0 | if ((chn->flags & (CF_STREAMER | CF_STREAMER_FAST)) && |
850 | 0 | (xferred <= c_size(chn) / 2)) { |
851 | 0 | chn->xfer_large = 0; |
852 | 0 | chn->xfer_small++; |
853 | 0 | if (chn->xfer_small >= 3) { |
854 | | /* we have read less than half of the buffer in |
855 | | * one pass, and this happened at least 3 times. |
856 | | * This is definitely not a streamer. |
857 | | */ |
858 | 0 | chn->flags &= ~(CF_STREAMER | CF_STREAMER_FAST); |
859 | 0 | } |
860 | 0 | else if (chn->xfer_small >= 2) { |
861 | | /* if the buffer has been at least half full twchne, |
862 | | * we receive faster than we send, so at least it |
863 | | * is not a "fast streamer". |
864 | | */ |
865 | 0 | chn->flags &= ~CF_STREAMER_FAST; |
866 | 0 | } |
867 | 0 | } |
868 | 0 | else if (!(chn->flags & CF_STREAMER_FAST) && (xferred >= channel_data_limit(chn))) { |
869 | | /* we read a full buffer at once */ |
870 | 0 | chn->xfer_small = 0; |
871 | 0 | chn->xfer_large++; |
872 | 0 | if (chn->xfer_large >= 3) { |
873 | | /* we call this buffer a fast streamer if it manages |
874 | | * to be filled in one call 3 consecutive times. |
875 | | */ |
876 | 0 | chn->flags |= (CF_STREAMER | CF_STREAMER_FAST); |
877 | 0 | } |
878 | 0 | } |
879 | 0 | else { |
880 | 0 | chn->xfer_small = 0; |
881 | 0 | chn->xfer_large = 0; |
882 | 0 | } |
883 | 0 | chn->last_read = now_ms; |
884 | 0 | } Unexecuted instantiation: cfgparse.c:channel_check_xfer Unexecuted instantiation: cli.c:channel_check_xfer Unexecuted instantiation: connection.c:channel_check_xfer Unexecuted instantiation: debug.c:channel_check_xfer Unexecuted instantiation: errors.c:channel_check_xfer Unexecuted instantiation: filters.c:channel_check_xfer Unexecuted instantiation: flt_http_comp.c:channel_check_xfer Unexecuted instantiation: frontend.c:channel_check_xfer Unexecuted instantiation: haproxy.c:channel_check_xfer Unexecuted instantiation: http_ana.c:channel_check_xfer Unexecuted instantiation: http_ext.c:channel_check_xfer Unexecuted instantiation: log.c:channel_check_xfer Unexecuted instantiation: mworker.c:channel_check_xfer Unexecuted instantiation: peers.c:channel_check_xfer Unexecuted instantiation: pool.c:channel_check_xfer Unexecuted instantiation: proxy.c:channel_check_xfer Unexecuted instantiation: resolvers.c:channel_check_xfer Unexecuted instantiation: ring.c:channel_check_xfer Unexecuted instantiation: sample.c:channel_check_xfer Unexecuted instantiation: server.c:channel_check_xfer Unexecuted instantiation: sink.c:channel_check_xfer Unexecuted instantiation: stats-html.c:channel_check_xfer Unexecuted instantiation: stats.c:channel_check_xfer Unexecuted instantiation: stconn.c:channel_check_xfer Unexecuted instantiation: stick_table.c:channel_check_xfer Unexecuted instantiation: stream.c:channel_check_xfer Unexecuted instantiation: tcp_rules.c:channel_check_xfer Unexecuted instantiation: tools.c:channel_check_xfer Unexecuted instantiation: trace.c:channel_check_xfer Unexecuted instantiation: vars.c:channel_check_xfer Unexecuted instantiation: activity.c:channel_check_xfer Unexecuted instantiation: applet.c:channel_check_xfer Unexecuted instantiation: backend.c:channel_check_xfer Unexecuted instantiation: cache.c:channel_check_xfer Unexecuted instantiation: channel.c:channel_check_xfer Unexecuted instantiation: dns.c:channel_check_xfer Unexecuted instantiation: dns_ring.c:channel_check_xfer Unexecuted instantiation: fcgi-app.c:channel_check_xfer Unexecuted instantiation: http_fetch.c:channel_check_xfer Unexecuted instantiation: payload.c:channel_check_xfer Unexecuted instantiation: stats-json.c:channel_check_xfer Unexecuted instantiation: flt_spoe.c:channel_check_xfer |
885 | | |
886 | | /* Returns the amount of bytes that can be written over the input data at once, |
887 | | * including reserved space which may be overwritten. This is used by Lua to |
888 | | * insert data in the input side just before the other data using buffer_replace(). |
889 | | * The goal is to transfer these new data in the output buffer. |
890 | | */ |
891 | | static inline int ci_space_for_replace(const struct channel *chn) |
892 | 0 | { |
893 | 0 | const struct buffer *buf = &chn->buf; |
894 | 0 | const char *end; |
895 | 0 |
|
896 | 0 | /* If the input side data overflows, we cannot insert data contiguously. */ |
897 | 0 | if (b_head(buf) + b_data(buf) >= b_wrap(buf)) |
898 | 0 | return 0; |
899 | 0 |
|
900 | 0 | /* Check the last byte used in the buffer, it may be a byte of the output |
901 | 0 | * side if the buffer wraps, or its the end of the buffer. |
902 | 0 | */ |
903 | 0 | end = b_head(buf); |
904 | 0 | if (end <= ci_head(chn)) |
905 | 0 | end = b_wrap(buf); |
906 | 0 |
|
907 | 0 | /* Compute the amount of bytes which can be written. */ |
908 | 0 | return end - ci_tail(chn); |
909 | 0 | } Unexecuted instantiation: cfgparse.c:ci_space_for_replace Unexecuted instantiation: cli.c:ci_space_for_replace Unexecuted instantiation: connection.c:ci_space_for_replace Unexecuted instantiation: debug.c:ci_space_for_replace Unexecuted instantiation: errors.c:ci_space_for_replace Unexecuted instantiation: filters.c:ci_space_for_replace Unexecuted instantiation: flt_http_comp.c:ci_space_for_replace Unexecuted instantiation: frontend.c:ci_space_for_replace Unexecuted instantiation: haproxy.c:ci_space_for_replace Unexecuted instantiation: http_ana.c:ci_space_for_replace Unexecuted instantiation: http_ext.c:ci_space_for_replace Unexecuted instantiation: log.c:ci_space_for_replace Unexecuted instantiation: mworker.c:ci_space_for_replace Unexecuted instantiation: peers.c:ci_space_for_replace Unexecuted instantiation: pool.c:ci_space_for_replace Unexecuted instantiation: proxy.c:ci_space_for_replace Unexecuted instantiation: resolvers.c:ci_space_for_replace Unexecuted instantiation: ring.c:ci_space_for_replace Unexecuted instantiation: sample.c:ci_space_for_replace Unexecuted instantiation: server.c:ci_space_for_replace Unexecuted instantiation: sink.c:ci_space_for_replace Unexecuted instantiation: stats-html.c:ci_space_for_replace Unexecuted instantiation: stats.c:ci_space_for_replace Unexecuted instantiation: stconn.c:ci_space_for_replace Unexecuted instantiation: stick_table.c:ci_space_for_replace Unexecuted instantiation: stream.c:ci_space_for_replace Unexecuted instantiation: tcp_rules.c:ci_space_for_replace Unexecuted instantiation: tools.c:ci_space_for_replace Unexecuted instantiation: trace.c:ci_space_for_replace Unexecuted instantiation: vars.c:ci_space_for_replace Unexecuted instantiation: activity.c:ci_space_for_replace Unexecuted instantiation: applet.c:ci_space_for_replace Unexecuted instantiation: backend.c:ci_space_for_replace Unexecuted instantiation: cache.c:ci_space_for_replace Unexecuted instantiation: channel.c:ci_space_for_replace Unexecuted instantiation: dns.c:ci_space_for_replace Unexecuted instantiation: dns_ring.c:ci_space_for_replace Unexecuted instantiation: fcgi-app.c:ci_space_for_replace Unexecuted instantiation: http_fetch.c:ci_space_for_replace Unexecuted instantiation: payload.c:ci_space_for_replace Unexecuted instantiation: stats-json.c:ci_space_for_replace Unexecuted instantiation: flt_spoe.c:ci_space_for_replace |
910 | | |
911 | | /* Allocates a buffer for channel <chn>. Returns 0 in case of failure, non-zero |
912 | | * otherwise. |
913 | | * |
914 | | * If no buffer are available, the requester, represented by <wait> pointer, |
915 | | * will be added in the list of objects waiting for an available buffer. |
916 | | */ |
917 | | static inline int channel_alloc_buffer(struct channel *chn, struct buffer_wait *wait) |
918 | 0 | { |
919 | 0 | int force_noqueue; |
920 | | |
921 | | /* If the producer has been notified of recent availability, we must |
922 | | * not check the queue again. |
923 | | */ |
924 | 0 | force_noqueue = !!(chn_prod(chn)->flags & SC_FL_HAVE_BUFF); |
925 | |
|
926 | 0 | if (b_alloc(&chn->buf, DB_CHANNEL | (force_noqueue ? DB_F_NOQUEUE : 0)) != NULL) |
927 | 0 | return 1; |
928 | | |
929 | 0 | b_requeue(DB_CHANNEL, wait); |
930 | 0 | return 0; |
931 | 0 | } Unexecuted instantiation: cfgparse.c:channel_alloc_buffer Unexecuted instantiation: cli.c:channel_alloc_buffer Unexecuted instantiation: connection.c:channel_alloc_buffer Unexecuted instantiation: debug.c:channel_alloc_buffer Unexecuted instantiation: errors.c:channel_alloc_buffer Unexecuted instantiation: filters.c:channel_alloc_buffer Unexecuted instantiation: flt_http_comp.c:channel_alloc_buffer Unexecuted instantiation: frontend.c:channel_alloc_buffer Unexecuted instantiation: haproxy.c:channel_alloc_buffer Unexecuted instantiation: http_ana.c:channel_alloc_buffer Unexecuted instantiation: http_ext.c:channel_alloc_buffer Unexecuted instantiation: log.c:channel_alloc_buffer Unexecuted instantiation: mworker.c:channel_alloc_buffer Unexecuted instantiation: peers.c:channel_alloc_buffer Unexecuted instantiation: pool.c:channel_alloc_buffer Unexecuted instantiation: proxy.c:channel_alloc_buffer Unexecuted instantiation: resolvers.c:channel_alloc_buffer Unexecuted instantiation: ring.c:channel_alloc_buffer Unexecuted instantiation: sample.c:channel_alloc_buffer Unexecuted instantiation: server.c:channel_alloc_buffer Unexecuted instantiation: sink.c:channel_alloc_buffer Unexecuted instantiation: stats-html.c:channel_alloc_buffer Unexecuted instantiation: stats.c:channel_alloc_buffer Unexecuted instantiation: stconn.c:channel_alloc_buffer Unexecuted instantiation: stick_table.c:channel_alloc_buffer Unexecuted instantiation: stream.c:channel_alloc_buffer Unexecuted instantiation: tcp_rules.c:channel_alloc_buffer Unexecuted instantiation: tools.c:channel_alloc_buffer Unexecuted instantiation: trace.c:channel_alloc_buffer Unexecuted instantiation: vars.c:channel_alloc_buffer Unexecuted instantiation: activity.c:channel_alloc_buffer Unexecuted instantiation: applet.c:channel_alloc_buffer Unexecuted instantiation: backend.c:channel_alloc_buffer Unexecuted instantiation: cache.c:channel_alloc_buffer Unexecuted instantiation: channel.c:channel_alloc_buffer Unexecuted instantiation: dns.c:channel_alloc_buffer Unexecuted instantiation: dns_ring.c:channel_alloc_buffer Unexecuted instantiation: fcgi-app.c:channel_alloc_buffer Unexecuted instantiation: http_fetch.c:channel_alloc_buffer Unexecuted instantiation: payload.c:channel_alloc_buffer Unexecuted instantiation: stats-json.c:channel_alloc_buffer Unexecuted instantiation: flt_spoe.c:channel_alloc_buffer |
932 | | |
933 | | /* Releases a possibly allocated buffer for channel <chn>. If it was not |
934 | | * allocated, this function does nothing. Else the buffer is released and we try |
935 | | * to wake up as many streams/applets as possible. */ |
936 | | static inline void channel_release_buffer(struct channel *chn, struct buffer_wait *wait) |
937 | 0 | { |
938 | 0 | if (c_size(chn) && c_empty(chn)) { |
939 | 0 | b_free(&chn->buf); |
940 | 0 | offer_buffers(wait->target, 1); |
941 | 0 | } |
942 | 0 | } Unexecuted instantiation: cfgparse.c:channel_release_buffer Unexecuted instantiation: cli.c:channel_release_buffer Unexecuted instantiation: connection.c:channel_release_buffer Unexecuted instantiation: debug.c:channel_release_buffer Unexecuted instantiation: errors.c:channel_release_buffer Unexecuted instantiation: filters.c:channel_release_buffer Unexecuted instantiation: flt_http_comp.c:channel_release_buffer Unexecuted instantiation: frontend.c:channel_release_buffer Unexecuted instantiation: haproxy.c:channel_release_buffer Unexecuted instantiation: http_ana.c:channel_release_buffer Unexecuted instantiation: http_ext.c:channel_release_buffer Unexecuted instantiation: log.c:channel_release_buffer Unexecuted instantiation: mworker.c:channel_release_buffer Unexecuted instantiation: peers.c:channel_release_buffer Unexecuted instantiation: pool.c:channel_release_buffer Unexecuted instantiation: proxy.c:channel_release_buffer Unexecuted instantiation: resolvers.c:channel_release_buffer Unexecuted instantiation: ring.c:channel_release_buffer Unexecuted instantiation: sample.c:channel_release_buffer Unexecuted instantiation: server.c:channel_release_buffer Unexecuted instantiation: sink.c:channel_release_buffer Unexecuted instantiation: stats-html.c:channel_release_buffer Unexecuted instantiation: stats.c:channel_release_buffer Unexecuted instantiation: stconn.c:channel_release_buffer Unexecuted instantiation: stick_table.c:channel_release_buffer Unexecuted instantiation: stream.c:channel_release_buffer Unexecuted instantiation: tcp_rules.c:channel_release_buffer Unexecuted instantiation: tools.c:channel_release_buffer Unexecuted instantiation: trace.c:channel_release_buffer Unexecuted instantiation: vars.c:channel_release_buffer Unexecuted instantiation: activity.c:channel_release_buffer Unexecuted instantiation: applet.c:channel_release_buffer Unexecuted instantiation: backend.c:channel_release_buffer Unexecuted instantiation: cache.c:channel_release_buffer Unexecuted instantiation: channel.c:channel_release_buffer Unexecuted instantiation: dns.c:channel_release_buffer Unexecuted instantiation: dns_ring.c:channel_release_buffer Unexecuted instantiation: fcgi-app.c:channel_release_buffer Unexecuted instantiation: http_fetch.c:channel_release_buffer Unexecuted instantiation: payload.c:channel_release_buffer Unexecuted instantiation: stats-json.c:channel_release_buffer Unexecuted instantiation: flt_spoe.c:channel_release_buffer |
943 | | |
944 | | /* Truncate any unread data in the channel's buffer, and disable forwarding. |
945 | | * Outgoing data are left intact. This is mainly to be used to send error |
946 | | * messages after existing data. |
947 | | */ |
948 | | static inline void channel_truncate(struct channel *chn) |
949 | 0 | { |
950 | 0 | if (!co_data(chn)) |
951 | 0 | return channel_erase(chn); |
952 | | |
953 | 0 | chn->to_forward = 0; |
954 | 0 | if (!ci_data(chn)) |
955 | 0 | return; |
956 | | |
957 | 0 | chn->buf.data = co_data(chn); |
958 | 0 | } Unexecuted instantiation: cfgparse.c:channel_truncate Unexecuted instantiation: cli.c:channel_truncate Unexecuted instantiation: connection.c:channel_truncate Unexecuted instantiation: debug.c:channel_truncate Unexecuted instantiation: errors.c:channel_truncate Unexecuted instantiation: filters.c:channel_truncate Unexecuted instantiation: flt_http_comp.c:channel_truncate Unexecuted instantiation: frontend.c:channel_truncate Unexecuted instantiation: haproxy.c:channel_truncate Unexecuted instantiation: http_ana.c:channel_truncate Unexecuted instantiation: http_ext.c:channel_truncate Unexecuted instantiation: log.c:channel_truncate Unexecuted instantiation: mworker.c:channel_truncate Unexecuted instantiation: peers.c:channel_truncate Unexecuted instantiation: pool.c:channel_truncate Unexecuted instantiation: proxy.c:channel_truncate Unexecuted instantiation: resolvers.c:channel_truncate Unexecuted instantiation: ring.c:channel_truncate Unexecuted instantiation: sample.c:channel_truncate Unexecuted instantiation: server.c:channel_truncate Unexecuted instantiation: sink.c:channel_truncate Unexecuted instantiation: stats-html.c:channel_truncate Unexecuted instantiation: stats.c:channel_truncate Unexecuted instantiation: stconn.c:channel_truncate Unexecuted instantiation: stick_table.c:channel_truncate Unexecuted instantiation: stream.c:channel_truncate Unexecuted instantiation: tcp_rules.c:channel_truncate Unexecuted instantiation: tools.c:channel_truncate Unexecuted instantiation: trace.c:channel_truncate Unexecuted instantiation: vars.c:channel_truncate Unexecuted instantiation: activity.c:channel_truncate Unexecuted instantiation: applet.c:channel_truncate Unexecuted instantiation: backend.c:channel_truncate Unexecuted instantiation: cache.c:channel_truncate Unexecuted instantiation: channel.c:channel_truncate Unexecuted instantiation: dns.c:channel_truncate Unexecuted instantiation: dns_ring.c:channel_truncate Unexecuted instantiation: fcgi-app.c:channel_truncate Unexecuted instantiation: http_fetch.c:channel_truncate Unexecuted instantiation: payload.c:channel_truncate Unexecuted instantiation: stats-json.c:channel_truncate Unexecuted instantiation: flt_spoe.c:channel_truncate |
959 | | |
960 | | static inline void channel_htx_truncate(struct channel *chn, struct htx *htx) |
961 | 0 | { |
962 | 0 | if (!co_data(chn)) |
963 | 0 | return channel_htx_erase(chn, htx); |
964 | | |
965 | 0 | chn->to_forward = 0; |
966 | 0 | if (htx->data == co_data(chn)) |
967 | 0 | return; |
968 | 0 | htx_truncate(htx, co_data(chn)); |
969 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_truncate Unexecuted instantiation: cli.c:channel_htx_truncate Unexecuted instantiation: connection.c:channel_htx_truncate Unexecuted instantiation: debug.c:channel_htx_truncate Unexecuted instantiation: errors.c:channel_htx_truncate Unexecuted instantiation: filters.c:channel_htx_truncate Unexecuted instantiation: flt_http_comp.c:channel_htx_truncate Unexecuted instantiation: frontend.c:channel_htx_truncate Unexecuted instantiation: haproxy.c:channel_htx_truncate Unexecuted instantiation: http_ana.c:channel_htx_truncate Unexecuted instantiation: http_ext.c:channel_htx_truncate Unexecuted instantiation: log.c:channel_htx_truncate Unexecuted instantiation: mworker.c:channel_htx_truncate Unexecuted instantiation: peers.c:channel_htx_truncate Unexecuted instantiation: pool.c:channel_htx_truncate Unexecuted instantiation: proxy.c:channel_htx_truncate Unexecuted instantiation: resolvers.c:channel_htx_truncate Unexecuted instantiation: ring.c:channel_htx_truncate Unexecuted instantiation: sample.c:channel_htx_truncate Unexecuted instantiation: server.c:channel_htx_truncate Unexecuted instantiation: sink.c:channel_htx_truncate Unexecuted instantiation: stats-html.c:channel_htx_truncate Unexecuted instantiation: stats.c:channel_htx_truncate Unexecuted instantiation: stconn.c:channel_htx_truncate Unexecuted instantiation: stick_table.c:channel_htx_truncate Unexecuted instantiation: stream.c:channel_htx_truncate Unexecuted instantiation: tcp_rules.c:channel_htx_truncate Unexecuted instantiation: tools.c:channel_htx_truncate Unexecuted instantiation: trace.c:channel_htx_truncate Unexecuted instantiation: vars.c:channel_htx_truncate Unexecuted instantiation: activity.c:channel_htx_truncate Unexecuted instantiation: applet.c:channel_htx_truncate Unexecuted instantiation: backend.c:channel_htx_truncate Unexecuted instantiation: cache.c:channel_htx_truncate Unexecuted instantiation: channel.c:channel_htx_truncate Unexecuted instantiation: dns.c:channel_htx_truncate Unexecuted instantiation: dns_ring.c:channel_htx_truncate Unexecuted instantiation: fcgi-app.c:channel_htx_truncate Unexecuted instantiation: http_fetch.c:channel_htx_truncate Unexecuted instantiation: payload.c:channel_htx_truncate Unexecuted instantiation: stats-json.c:channel_htx_truncate Unexecuted instantiation: flt_spoe.c:channel_htx_truncate |
970 | | |
971 | | /* This function realigns a possibly wrapping channel buffer so that the input |
972 | | * part is contiguous and starts at the beginning of the buffer and the output |
973 | | * part ends at the end of the buffer. This provides the best conditions since |
974 | | * it allows the largest inputs to be processed at once and ensures that once |
975 | | * the output data leaves, the whole buffer is available at once. |
976 | | */ |
977 | | static inline void channel_slow_realign(struct channel *chn, char *swap) |
978 | 0 | { |
979 | 0 | return b_slow_realign(&chn->buf, swap, co_data(chn)); |
980 | 0 | } Unexecuted instantiation: cfgparse.c:channel_slow_realign Unexecuted instantiation: cli.c:channel_slow_realign Unexecuted instantiation: connection.c:channel_slow_realign Unexecuted instantiation: debug.c:channel_slow_realign Unexecuted instantiation: errors.c:channel_slow_realign Unexecuted instantiation: filters.c:channel_slow_realign Unexecuted instantiation: flt_http_comp.c:channel_slow_realign Unexecuted instantiation: frontend.c:channel_slow_realign Unexecuted instantiation: haproxy.c:channel_slow_realign Unexecuted instantiation: http_ana.c:channel_slow_realign Unexecuted instantiation: http_ext.c:channel_slow_realign Unexecuted instantiation: log.c:channel_slow_realign Unexecuted instantiation: mworker.c:channel_slow_realign Unexecuted instantiation: peers.c:channel_slow_realign Unexecuted instantiation: pool.c:channel_slow_realign Unexecuted instantiation: proxy.c:channel_slow_realign Unexecuted instantiation: resolvers.c:channel_slow_realign Unexecuted instantiation: ring.c:channel_slow_realign Unexecuted instantiation: sample.c:channel_slow_realign Unexecuted instantiation: server.c:channel_slow_realign Unexecuted instantiation: sink.c:channel_slow_realign Unexecuted instantiation: stats-html.c:channel_slow_realign Unexecuted instantiation: stats.c:channel_slow_realign Unexecuted instantiation: stconn.c:channel_slow_realign Unexecuted instantiation: stick_table.c:channel_slow_realign Unexecuted instantiation: stream.c:channel_slow_realign Unexecuted instantiation: tcp_rules.c:channel_slow_realign Unexecuted instantiation: tools.c:channel_slow_realign Unexecuted instantiation: trace.c:channel_slow_realign Unexecuted instantiation: vars.c:channel_slow_realign Unexecuted instantiation: activity.c:channel_slow_realign Unexecuted instantiation: applet.c:channel_slow_realign Unexecuted instantiation: backend.c:channel_slow_realign Unexecuted instantiation: cache.c:channel_slow_realign Unexecuted instantiation: channel.c:channel_slow_realign Unexecuted instantiation: dns.c:channel_slow_realign Unexecuted instantiation: dns_ring.c:channel_slow_realign Unexecuted instantiation: fcgi-app.c:channel_slow_realign Unexecuted instantiation: http_fetch.c:channel_slow_realign Unexecuted instantiation: payload.c:channel_slow_realign Unexecuted instantiation: stats-json.c:channel_slow_realign Unexecuted instantiation: flt_spoe.c:channel_slow_realign |
981 | | |
982 | | |
983 | | /* Forward all headers of an HTX message, starting from the SL to the EOH. This |
984 | | * function returns the position of the block after the EOH, if |
985 | | * found. Otherwise, it returns -1. |
986 | | */ |
987 | | static inline int32_t channel_htx_fwd_headers(struct channel *chn, struct htx *htx) |
988 | 0 | { |
989 | 0 | int32_t pos; |
990 | 0 | size_t data = 0; |
991 | |
|
992 | 0 | for (pos = htx_get_first(htx); pos != -1; pos = htx_get_next(htx, pos)) { |
993 | 0 | struct htx_blk *blk = htx_get_blk(htx, pos); |
994 | 0 | data += htx_get_blksz(blk); |
995 | 0 | if (htx_get_blk_type(blk) == HTX_BLK_EOH) { |
996 | 0 | pos = htx_get_next(htx, pos); |
997 | 0 | break; |
998 | 0 | } |
999 | 0 | } |
1000 | 0 | c_adv(chn, data); |
1001 | 0 | return pos; |
1002 | 0 | } Unexecuted instantiation: cfgparse.c:channel_htx_fwd_headers Unexecuted instantiation: cli.c:channel_htx_fwd_headers Unexecuted instantiation: connection.c:channel_htx_fwd_headers Unexecuted instantiation: debug.c:channel_htx_fwd_headers Unexecuted instantiation: errors.c:channel_htx_fwd_headers Unexecuted instantiation: filters.c:channel_htx_fwd_headers Unexecuted instantiation: flt_http_comp.c:channel_htx_fwd_headers Unexecuted instantiation: frontend.c:channel_htx_fwd_headers Unexecuted instantiation: haproxy.c:channel_htx_fwd_headers Unexecuted instantiation: http_ana.c:channel_htx_fwd_headers Unexecuted instantiation: http_ext.c:channel_htx_fwd_headers Unexecuted instantiation: log.c:channel_htx_fwd_headers Unexecuted instantiation: mworker.c:channel_htx_fwd_headers Unexecuted instantiation: peers.c:channel_htx_fwd_headers Unexecuted instantiation: pool.c:channel_htx_fwd_headers Unexecuted instantiation: proxy.c:channel_htx_fwd_headers Unexecuted instantiation: resolvers.c:channel_htx_fwd_headers Unexecuted instantiation: ring.c:channel_htx_fwd_headers Unexecuted instantiation: sample.c:channel_htx_fwd_headers Unexecuted instantiation: server.c:channel_htx_fwd_headers Unexecuted instantiation: sink.c:channel_htx_fwd_headers Unexecuted instantiation: stats-html.c:channel_htx_fwd_headers Unexecuted instantiation: stats.c:channel_htx_fwd_headers Unexecuted instantiation: stconn.c:channel_htx_fwd_headers Unexecuted instantiation: stick_table.c:channel_htx_fwd_headers Unexecuted instantiation: stream.c:channel_htx_fwd_headers Unexecuted instantiation: tcp_rules.c:channel_htx_fwd_headers Unexecuted instantiation: tools.c:channel_htx_fwd_headers Unexecuted instantiation: trace.c:channel_htx_fwd_headers Unexecuted instantiation: vars.c:channel_htx_fwd_headers Unexecuted instantiation: activity.c:channel_htx_fwd_headers Unexecuted instantiation: applet.c:channel_htx_fwd_headers Unexecuted instantiation: backend.c:channel_htx_fwd_headers Unexecuted instantiation: cache.c:channel_htx_fwd_headers Unexecuted instantiation: channel.c:channel_htx_fwd_headers Unexecuted instantiation: dns.c:channel_htx_fwd_headers Unexecuted instantiation: dns_ring.c:channel_htx_fwd_headers Unexecuted instantiation: fcgi-app.c:channel_htx_fwd_headers Unexecuted instantiation: http_fetch.c:channel_htx_fwd_headers Unexecuted instantiation: payload.c:channel_htx_fwd_headers Unexecuted instantiation: stats-json.c:channel_htx_fwd_headers Unexecuted instantiation: flt_spoe.c:channel_htx_fwd_headers |
1003 | | |
1004 | | /* |
1005 | | * Advance the channel buffer's read pointer by <len> bytes. This is useful |
1006 | | * when data have been read directly from the buffer. It is illegal to call |
1007 | | * this function with <len> causing a wrapping at the end of the buffer. It's |
1008 | | * the caller's responsibility to ensure that <len> is never larger than |
1009 | | * chn->o. |
1010 | | */ |
1011 | | static inline void co_skip(struct channel *chn, int len) |
1012 | 0 | { |
1013 | 0 | BUG_ON_HOT(len > chn->output); |
1014 | 0 | b_del(&chn->buf, len); |
1015 | 0 | chn->output -= len; |
1016 | 0 | c_realign_if_empty(chn); |
1017 | 0 | } Unexecuted instantiation: cfgparse.c:co_skip Unexecuted instantiation: cli.c:co_skip Unexecuted instantiation: connection.c:co_skip Unexecuted instantiation: debug.c:co_skip Unexecuted instantiation: errors.c:co_skip Unexecuted instantiation: filters.c:co_skip Unexecuted instantiation: flt_http_comp.c:co_skip Unexecuted instantiation: frontend.c:co_skip Unexecuted instantiation: haproxy.c:co_skip Unexecuted instantiation: http_ana.c:co_skip Unexecuted instantiation: http_ext.c:co_skip Unexecuted instantiation: log.c:co_skip Unexecuted instantiation: mworker.c:co_skip Unexecuted instantiation: peers.c:co_skip Unexecuted instantiation: pool.c:co_skip Unexecuted instantiation: proxy.c:co_skip Unexecuted instantiation: resolvers.c:co_skip Unexecuted instantiation: ring.c:co_skip Unexecuted instantiation: sample.c:co_skip Unexecuted instantiation: server.c:co_skip Unexecuted instantiation: sink.c:co_skip Unexecuted instantiation: stats-html.c:co_skip Unexecuted instantiation: stats.c:co_skip Unexecuted instantiation: stconn.c:co_skip Unexecuted instantiation: stick_table.c:co_skip Unexecuted instantiation: stream.c:co_skip Unexecuted instantiation: tcp_rules.c:co_skip Unexecuted instantiation: tools.c:co_skip Unexecuted instantiation: trace.c:co_skip Unexecuted instantiation: vars.c:co_skip Unexecuted instantiation: activity.c:co_skip Unexecuted instantiation: applet.c:co_skip Unexecuted instantiation: backend.c:co_skip Unexecuted instantiation: cache.c:co_skip Unexecuted instantiation: channel.c:co_skip Unexecuted instantiation: dns.c:co_skip Unexecuted instantiation: dns_ring.c:co_skip Unexecuted instantiation: fcgi-app.c:co_skip Unexecuted instantiation: http_fetch.c:co_skip Unexecuted instantiation: payload.c:co_skip Unexecuted instantiation: stats-json.c:co_skip Unexecuted instantiation: flt_spoe.c:co_skip |
1018 | | |
1019 | | /* HTX version of co_skip(). This function skips at most <len> bytes from the |
1020 | | * output of the channel <chn>. Depending on how data are stored in <htx> less |
1021 | | * than <len> bytes can be skipped.. |
1022 | | */ |
1023 | | static inline void co_htx_skip(struct channel *chn, struct htx *htx, int len) |
1024 | 0 | { |
1025 | 0 | struct htx_ret htxret; |
1026 | 0 |
|
1027 | 0 | htxret = htx_drain(htx, len); |
1028 | 0 | if (htxret.ret) { |
1029 | 0 | BUG_ON_HOT(htxret.ret > chn->output); |
1030 | 0 | chn->output -= htxret.ret; |
1031 | 0 | } |
1032 | 0 | } Unexecuted instantiation: cfgparse.c:co_htx_skip Unexecuted instantiation: cli.c:co_htx_skip Unexecuted instantiation: connection.c:co_htx_skip Unexecuted instantiation: debug.c:co_htx_skip Unexecuted instantiation: errors.c:co_htx_skip Unexecuted instantiation: filters.c:co_htx_skip Unexecuted instantiation: flt_http_comp.c:co_htx_skip Unexecuted instantiation: frontend.c:co_htx_skip Unexecuted instantiation: haproxy.c:co_htx_skip Unexecuted instantiation: http_ana.c:co_htx_skip Unexecuted instantiation: http_ext.c:co_htx_skip Unexecuted instantiation: log.c:co_htx_skip Unexecuted instantiation: mworker.c:co_htx_skip Unexecuted instantiation: peers.c:co_htx_skip Unexecuted instantiation: pool.c:co_htx_skip Unexecuted instantiation: proxy.c:co_htx_skip Unexecuted instantiation: resolvers.c:co_htx_skip Unexecuted instantiation: ring.c:co_htx_skip Unexecuted instantiation: sample.c:co_htx_skip Unexecuted instantiation: server.c:co_htx_skip Unexecuted instantiation: sink.c:co_htx_skip Unexecuted instantiation: stats-html.c:co_htx_skip Unexecuted instantiation: stats.c:co_htx_skip Unexecuted instantiation: stconn.c:co_htx_skip Unexecuted instantiation: stick_table.c:co_htx_skip Unexecuted instantiation: stream.c:co_htx_skip Unexecuted instantiation: tcp_rules.c:co_htx_skip Unexecuted instantiation: tools.c:co_htx_skip Unexecuted instantiation: trace.c:co_htx_skip Unexecuted instantiation: vars.c:co_htx_skip Unexecuted instantiation: activity.c:co_htx_skip Unexecuted instantiation: applet.c:co_htx_skip Unexecuted instantiation: backend.c:co_htx_skip Unexecuted instantiation: cache.c:co_htx_skip Unexecuted instantiation: channel.c:co_htx_skip Unexecuted instantiation: dns.c:co_htx_skip Unexecuted instantiation: dns_ring.c:co_htx_skip Unexecuted instantiation: fcgi-app.c:co_htx_skip Unexecuted instantiation: http_fetch.c:co_htx_skip Unexecuted instantiation: payload.c:co_htx_skip Unexecuted instantiation: stats-json.c:co_htx_skip Unexecuted instantiation: flt_spoe.c:co_htx_skip |
1033 | | |
1034 | | /* Tries to copy chunk <chunk> into the channel's buffer after length controls. |
1035 | | * The chn->o and to_forward pointers are updated. If the channel's input is |
1036 | | * closed, -2 is returned. If the block is too large for this buffer, -3 is |
1037 | | * returned. If there is not enough room left in the buffer, -1 is returned. |
1038 | | * Otherwise the number of bytes copied is returned (0 being a valid number). |
1039 | | * Channel flag READ_PARTIAL is updated if some data can be transferred. The |
1040 | | * chunk's length is updated with the number of bytes sent. |
1041 | | */ |
1042 | | static inline int ci_putchk(struct channel *chn, struct buffer *chunk) |
1043 | 0 | { |
1044 | 0 | int ret; |
1045 | |
|
1046 | 0 | ret = ci_putblk(chn, chunk->area, chunk->data); |
1047 | 0 | if (ret > 0) |
1048 | 0 | chunk->data -= ret; |
1049 | 0 | return ret; |
1050 | 0 | } Unexecuted instantiation: cfgparse.c:ci_putchk Unexecuted instantiation: cli.c:ci_putchk Unexecuted instantiation: connection.c:ci_putchk Unexecuted instantiation: debug.c:ci_putchk Unexecuted instantiation: errors.c:ci_putchk Unexecuted instantiation: filters.c:ci_putchk Unexecuted instantiation: flt_http_comp.c:ci_putchk Unexecuted instantiation: frontend.c:ci_putchk Unexecuted instantiation: haproxy.c:ci_putchk Unexecuted instantiation: http_ana.c:ci_putchk Unexecuted instantiation: http_ext.c:ci_putchk Unexecuted instantiation: log.c:ci_putchk Unexecuted instantiation: mworker.c:ci_putchk Unexecuted instantiation: peers.c:ci_putchk Unexecuted instantiation: pool.c:ci_putchk Unexecuted instantiation: proxy.c:ci_putchk Unexecuted instantiation: resolvers.c:ci_putchk Unexecuted instantiation: ring.c:ci_putchk Unexecuted instantiation: sample.c:ci_putchk Unexecuted instantiation: server.c:ci_putchk Unexecuted instantiation: sink.c:ci_putchk Unexecuted instantiation: stats-html.c:ci_putchk Unexecuted instantiation: stats.c:ci_putchk Unexecuted instantiation: stconn.c:ci_putchk Unexecuted instantiation: stick_table.c:ci_putchk Unexecuted instantiation: stream.c:ci_putchk Unexecuted instantiation: tcp_rules.c:ci_putchk Unexecuted instantiation: tools.c:ci_putchk Unexecuted instantiation: trace.c:ci_putchk Unexecuted instantiation: vars.c:ci_putchk Unexecuted instantiation: activity.c:ci_putchk Unexecuted instantiation: applet.c:ci_putchk Unexecuted instantiation: backend.c:ci_putchk Unexecuted instantiation: cache.c:ci_putchk Unexecuted instantiation: channel.c:ci_putchk Unexecuted instantiation: dns.c:ci_putchk Unexecuted instantiation: dns_ring.c:ci_putchk Unexecuted instantiation: fcgi-app.c:ci_putchk Unexecuted instantiation: http_fetch.c:ci_putchk Unexecuted instantiation: payload.c:ci_putchk Unexecuted instantiation: stats-json.c:ci_putchk Unexecuted instantiation: flt_spoe.c:ci_putchk |
1051 | | |
1052 | | /* Tries to copy string <str> at once into the channel's buffer after length |
1053 | | * controls. The chn->o and to_forward pointers are updated. If the channel's |
1054 | | * input is closed, -2 is returned. If the block is too large for this buffer, |
1055 | | * -3 is returned. If there is not enough room left in the buffer, -1 is |
1056 | | * returned. Otherwise the number of bytes copied is returned (0 being a valid |
1057 | | * number). Channel flag READ_PARTIAL is updated if some data can be |
1058 | | * transferred. |
1059 | | */ |
1060 | | static inline int ci_putstr(struct channel *chn, const char *str) |
1061 | 0 | { |
1062 | 0 | return ci_putblk(chn, str, strlen(str)); |
1063 | 0 | } Unexecuted instantiation: cfgparse.c:ci_putstr Unexecuted instantiation: cli.c:ci_putstr Unexecuted instantiation: connection.c:ci_putstr Unexecuted instantiation: debug.c:ci_putstr Unexecuted instantiation: errors.c:ci_putstr Unexecuted instantiation: filters.c:ci_putstr Unexecuted instantiation: flt_http_comp.c:ci_putstr Unexecuted instantiation: frontend.c:ci_putstr Unexecuted instantiation: haproxy.c:ci_putstr Unexecuted instantiation: http_ana.c:ci_putstr Unexecuted instantiation: http_ext.c:ci_putstr Unexecuted instantiation: log.c:ci_putstr Unexecuted instantiation: mworker.c:ci_putstr Unexecuted instantiation: peers.c:ci_putstr Unexecuted instantiation: pool.c:ci_putstr Unexecuted instantiation: proxy.c:ci_putstr Unexecuted instantiation: resolvers.c:ci_putstr Unexecuted instantiation: ring.c:ci_putstr Unexecuted instantiation: sample.c:ci_putstr Unexecuted instantiation: server.c:ci_putstr Unexecuted instantiation: sink.c:ci_putstr Unexecuted instantiation: stats-html.c:ci_putstr Unexecuted instantiation: stats.c:ci_putstr Unexecuted instantiation: stconn.c:ci_putstr Unexecuted instantiation: stick_table.c:ci_putstr Unexecuted instantiation: stream.c:ci_putstr Unexecuted instantiation: tcp_rules.c:ci_putstr Unexecuted instantiation: tools.c:ci_putstr Unexecuted instantiation: trace.c:ci_putstr Unexecuted instantiation: vars.c:ci_putstr Unexecuted instantiation: activity.c:ci_putstr Unexecuted instantiation: applet.c:ci_putstr Unexecuted instantiation: backend.c:ci_putstr Unexecuted instantiation: cache.c:ci_putstr Unexecuted instantiation: channel.c:ci_putstr Unexecuted instantiation: dns.c:ci_putstr Unexecuted instantiation: dns_ring.c:ci_putstr Unexecuted instantiation: fcgi-app.c:ci_putstr Unexecuted instantiation: http_fetch.c:ci_putstr Unexecuted instantiation: payload.c:ci_putstr Unexecuted instantiation: stats-json.c:ci_putstr Unexecuted instantiation: flt_spoe.c:ci_putstr |
1064 | | |
1065 | | /* |
1066 | | * Return one char from the channel's buffer. If the buffer is empty and the |
1067 | | * channel is closed, return -2. If the buffer is just empty, return -1. The |
1068 | | * buffer's pointer is not advanced, it's up to the caller to call co_skip(buf, |
1069 | | * 1) when it has consumed the char. Also note that this function respects the |
1070 | | * chn->o limit. |
1071 | | */ |
1072 | | static inline int co_getchr(struct channel *chn) |
1073 | 0 | { |
1074 | 0 | /* closed or empty + imminent close = -2; empty = -1 */ |
1075 | 0 | if (unlikely((chn_cons(chn)->flags & SC_FL_SHUT_DONE) || !co_data(chn))) { |
1076 | 0 | if (chn_cons(chn)->flags & (SC_FL_SHUT_DONE|SC_FL_SHUT_WANTED)) |
1077 | 0 | return -2; |
1078 | 0 | return -1; |
1079 | 0 | } |
1080 | 0 | return *co_head(chn); |
1081 | 0 | } Unexecuted instantiation: cfgparse.c:co_getchr Unexecuted instantiation: cli.c:co_getchr Unexecuted instantiation: connection.c:co_getchr Unexecuted instantiation: debug.c:co_getchr Unexecuted instantiation: errors.c:co_getchr Unexecuted instantiation: filters.c:co_getchr Unexecuted instantiation: flt_http_comp.c:co_getchr Unexecuted instantiation: frontend.c:co_getchr Unexecuted instantiation: haproxy.c:co_getchr Unexecuted instantiation: http_ana.c:co_getchr Unexecuted instantiation: http_ext.c:co_getchr Unexecuted instantiation: log.c:co_getchr Unexecuted instantiation: mworker.c:co_getchr Unexecuted instantiation: peers.c:co_getchr Unexecuted instantiation: pool.c:co_getchr Unexecuted instantiation: proxy.c:co_getchr Unexecuted instantiation: resolvers.c:co_getchr Unexecuted instantiation: ring.c:co_getchr Unexecuted instantiation: sample.c:co_getchr Unexecuted instantiation: server.c:co_getchr Unexecuted instantiation: sink.c:co_getchr Unexecuted instantiation: stats-html.c:co_getchr Unexecuted instantiation: stats.c:co_getchr Unexecuted instantiation: stconn.c:co_getchr Unexecuted instantiation: stick_table.c:co_getchr Unexecuted instantiation: stream.c:co_getchr Unexecuted instantiation: tcp_rules.c:co_getchr Unexecuted instantiation: tools.c:co_getchr Unexecuted instantiation: trace.c:co_getchr Unexecuted instantiation: vars.c:co_getchr Unexecuted instantiation: activity.c:co_getchr Unexecuted instantiation: applet.c:co_getchr Unexecuted instantiation: backend.c:co_getchr Unexecuted instantiation: cache.c:co_getchr Unexecuted instantiation: channel.c:co_getchr Unexecuted instantiation: dns.c:co_getchr Unexecuted instantiation: dns_ring.c:co_getchr Unexecuted instantiation: fcgi-app.c:co_getchr Unexecuted instantiation: http_fetch.c:co_getchr Unexecuted instantiation: payload.c:co_getchr Unexecuted instantiation: stats-json.c:co_getchr Unexecuted instantiation: flt_spoe.c:co_getchr |
1082 | | |
1083 | | #endif /* _HAPROXY_CHANNEL_H */ |
1084 | | |
1085 | | /* |
1086 | | * Local variables: |
1087 | | * c-indent-level: 8 |
1088 | | * c-basic-offset: 8 |
1089 | | * End: |
1090 | | */ |