/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->analysers = 0; |
327 | 0 | chn->flags = 0; |
328 | 0 | chn->output = 0; |
329 | 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 |
330 | | |
331 | | /* Schedule up to <bytes> more bytes to be forwarded via the channel without |
332 | | * notifying the owner task. Any data pending in the buffer are scheduled to be |
333 | | * sent as well, in the limit of the number of bytes to forward. This must be |
334 | | * the only method to use to schedule bytes to be forwarded. If the requested |
335 | | * number is too large, it is automatically adjusted. The number of bytes taken |
336 | | * into account is returned. Directly touching ->to_forward will cause lockups |
337 | | * when buf->o goes down to zero if nobody is ready to push the remaining data. |
338 | | */ |
339 | | static inline unsigned long long channel_forward(struct channel *chn, unsigned long long bytes) |
340 | 0 | { |
341 | | /* hint: avoid comparisons on long long for the fast case, since if the |
342 | | * length does not fit in an unsigned it, it will never be forwarded at |
343 | | * once anyway. |
344 | | */ |
345 | 0 | if (bytes <= ~0U) { |
346 | 0 | unsigned int bytes32 = bytes; |
347 | |
|
348 | 0 | if (bytes32 <= ci_data(chn)) { |
349 | | /* OK this amount of bytes might be forwarded at once */ |
350 | 0 | c_adv(chn, bytes32); |
351 | 0 | return bytes; |
352 | 0 | } |
353 | 0 | } |
354 | 0 | return __channel_forward(chn, bytes); |
355 | 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 |
356 | | |
357 | | /* Forwards any input data and marks the channel for permanent forwarding */ |
358 | | static inline void channel_forward_forever(struct channel *chn) |
359 | 0 | { |
360 | 0 | c_adv(chn, ci_data(chn)); |
361 | 0 | chn->to_forward = CHN_INFINITE_FORWARD; |
362 | 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 |
363 | | |
364 | | /* <len> bytes of input data was added into the channel <chn>. This functions |
365 | | * must be called to update the channel state. It also handles the fast |
366 | | * forwarding. */ |
367 | | static inline void channel_add_input(struct channel *chn, unsigned int len) |
368 | 0 | { |
369 | 0 | if (chn->to_forward) { |
370 | 0 | unsigned long fwd = len; |
371 | 0 | if (chn->to_forward != CHN_INFINITE_FORWARD) { |
372 | 0 | if (fwd > chn->to_forward) |
373 | 0 | fwd = chn->to_forward; |
374 | 0 | chn->to_forward -= fwd; |
375 | 0 | } |
376 | 0 | c_adv(chn, fwd); |
377 | 0 | } |
378 | | /* notify that some data was read */ |
379 | 0 | chn->flags |= CF_READ_EVENT; |
380 | 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 |
381 | | |
382 | | static inline unsigned long long channel_htx_forward(struct channel *chn, struct htx *htx, unsigned long long bytes) |
383 | 0 | { |
384 | 0 | unsigned long long ret = 0; |
385 | 0 |
|
386 | 0 | if (htx->data) { |
387 | 0 | b_set_data(&chn->buf, htx->data); |
388 | 0 | ret = channel_forward(chn, bytes); |
389 | 0 | b_set_data(&chn->buf, b_size(&chn->buf)); |
390 | 0 | } |
391 | 0 | return ret; |
392 | 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 |
393 | | |
394 | | |
395 | | static inline void channel_htx_forward_forever(struct channel *chn, struct htx *htx) |
396 | 0 | { |
397 | 0 | c_adv(chn, htx->data - co_data(chn)); |
398 | 0 | chn->to_forward = CHN_INFINITE_FORWARD; |
399 | 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 |
400 | | /*********************************************************************/ |
401 | | /* These functions are used to compute various channel content sizes */ |
402 | | /*********************************************************************/ |
403 | | |
404 | | /* Returns non-zero if the channel is rewritable, which means that the buffer |
405 | | * it is attached to has at least <maxrewrite> bytes immediately available. |
406 | | * This is used to decide when a request or response may be parsed when some |
407 | | * data from a previous exchange might still be present. |
408 | | */ |
409 | | static inline int channel_is_rewritable(const struct channel *chn) |
410 | 0 | { |
411 | 0 | int rem = chn->buf.size; |
412 | 0 |
|
413 | 0 | rem -= b_data(&chn->buf); |
414 | 0 | rem -= global.tune.maxrewrite; |
415 | 0 | return rem >= 0; |
416 | 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 |
417 | | |
418 | | /* Tells whether data are likely to leave the buffer. This is used to know when |
419 | | * we can safely ignore the reserve since we know we cannot retry a connection. |
420 | | * It returns zero if data are blocked, non-zero otherwise. |
421 | | */ |
422 | | static inline int channel_may_send(const struct channel *chn) |
423 | 0 | { |
424 | 0 | return chn_cons(chn)->state == SC_ST_EST; |
425 | 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 |
426 | | |
427 | | /* HTX version of channel_may_recv(). Returns non-zero if the channel can still |
428 | | * receive data. */ |
429 | | static inline int channel_htx_may_recv(const struct channel *chn, const struct htx *htx) |
430 | 0 | { |
431 | 0 | uint32_t rem; |
432 | |
|
433 | 0 | if (!htx->size) |
434 | 0 | return 1; |
435 | | |
436 | 0 | rem = htx_free_data_space(htx); |
437 | 0 | if (!rem) |
438 | 0 | return 0; /* htx already full */ |
439 | | |
440 | 0 | if (rem > global.tune.maxrewrite) |
441 | 0 | return 1; /* reserve not yet reached */ |
442 | | |
443 | 0 | if (!channel_may_send(chn)) |
444 | 0 | return 0; /* don't touch reserve until we can send */ |
445 | | |
446 | | /* Now we know there's some room left in the reserve and we may |
447 | | * forward. As long as i-to_fwd < size-maxrw, we may still |
448 | | * receive. This is equivalent to i+maxrw-size < to_fwd, |
449 | | * which is logical since i+maxrw-size is what overlaps with |
450 | | * the reserve, and we want to ensure they're covered by scheduled |
451 | | * forwards. |
452 | | */ |
453 | 0 | rem += co_data(chn); |
454 | 0 | if (rem > global.tune.maxrewrite) |
455 | 0 | return 1; |
456 | | |
457 | 0 | return (global.tune.maxrewrite - rem < chn->to_forward); |
458 | 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 |
459 | | |
460 | | /* Returns non-zero if the channel can still receive data. This is used to |
461 | | * decide when to stop reading into a buffer when we want to ensure that we |
462 | | * leave the reserve untouched after all pending outgoing data are forwarded. |
463 | | * The reserved space is taken into account if ->to_forward indicates that an |
464 | | * end of transfer is close to happen. Note that both ->buf.o and ->to_forward |
465 | | * are considered as available since they're supposed to leave the buffer. The |
466 | | * test is optimized to avoid as many operations as possible for the fast case |
467 | | * and to be used as an "if" condition. Just like channel_recv_limit(), we |
468 | | * never allow to overwrite the reserve until the output stream connector is |
469 | | * connected, otherwise we could spin on a POST with http-send-name-header. |
470 | | */ |
471 | | static inline int channel_may_recv(const struct channel *chn) |
472 | 0 | { |
473 | 0 | int rem = chn->buf.size; |
474 | |
|
475 | 0 | if (IS_HTX_STRM(chn_strm(chn))) |
476 | 0 | return channel_htx_may_recv(chn, htxbuf(&chn->buf)); |
477 | | |
478 | 0 | if (b_is_null(&chn->buf)) |
479 | 0 | return 1; |
480 | | |
481 | 0 | rem -= b_data(&chn->buf); |
482 | 0 | if (!rem) |
483 | 0 | return 0; /* buffer already full */ |
484 | | |
485 | 0 | if (rem > global.tune.maxrewrite) |
486 | 0 | return 1; /* reserve not yet reached */ |
487 | | |
488 | 0 | if (!channel_may_send(chn)) |
489 | 0 | return 0; /* don't touch reserve until we can send */ |
490 | | |
491 | | /* Now we know there's some room left in the reserve and we may |
492 | | * forward. As long as i-to_fwd < size-maxrw, we may still |
493 | | * receive. This is equivalent to i+maxrw-size < to_fwd, |
494 | | * which is logical since i+maxrw-size is what overlaps with |
495 | | * the reserve, and we want to ensure they're covered by scheduled |
496 | | * forwards. |
497 | | */ |
498 | 0 | rem = ci_data(chn) + global.tune.maxrewrite - chn->buf.size; |
499 | 0 | return rem < 0 || (unsigned int)rem < chn->to_forward; |
500 | 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 |
501 | | |
502 | | /* Returns true if the channel's input is already closed */ |
503 | | static inline int channel_input_closed(struct channel *chn) |
504 | 0 | { |
505 | 0 | return ((chn_prod(chn)->flags & (SC_FL_ABRT_DONE|SC_FL_EOS)) != 0); |
506 | 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 |
507 | | |
508 | | /* Returns true if the channel's output is already closed */ |
509 | | static inline int channel_output_closed(struct channel *chn) |
510 | 0 | { |
511 | 0 | return ((chn_cons(chn)->flags & SC_FL_SHUT_DONE) != 0); |
512 | 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 |
513 | | |
514 | | /* Check channel timeouts, and set the corresponding flags. */ |
515 | | static inline void channel_check_timeout(struct channel *chn) |
516 | 0 | { |
517 | 0 | if (likely(!(chn->flags & CF_READ_EVENT)) && unlikely(tick_is_expired(chn->analyse_exp, now_ms))) |
518 | 0 | chn->flags |= CF_READ_EVENT; |
519 | 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 |
520 | | |
521 | | |
522 | | /* Erase any content from channel <buf> and adjusts flags accordingly. Note |
523 | | * that any spliced data is not affected since we may not have any access to |
524 | | * it. |
525 | | */ |
526 | | static inline void channel_erase(struct channel *chn) |
527 | 0 | { |
528 | 0 | chn->to_forward = 0; |
529 | 0 | chn->output = 0; |
530 | 0 | b_reset(&chn->buf); |
531 | 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 |
532 | | |
533 | | static inline void channel_htx_erase(struct channel *chn, struct htx *htx) |
534 | 0 | { |
535 | 0 | htx_reset(htx); |
536 | 0 | channel_erase(chn); |
537 | 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 |
538 | | |
539 | | |
540 | | /* marks the channel as "shutdown" ASAP in both directions */ |
541 | | static inline void channel_abort(struct channel *chn) |
542 | 0 | { |
543 | 0 | chn_prod(chn)->flags |= SC_FL_ABRT_WANTED; |
544 | 0 | chn_cons(chn)->flags |= SC_FL_SHUT_WANTED; |
545 | 0 | chn->flags |= CF_AUTO_CLOSE; |
546 | 0 | chn->flags &= ~CF_AUTO_CONNECT; |
547 | 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 |
548 | | |
549 | | /* allow the consumer to try to establish a new connection. */ |
550 | | static inline void channel_auto_connect(struct channel *chn) |
551 | 0 | { |
552 | 0 | chn->flags |= CF_AUTO_CONNECT; |
553 | 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 |
554 | | |
555 | | /* prevent the consumer from trying to establish a new connection, and also |
556 | | * disable auto shutdown forwarding. |
557 | | */ |
558 | | static inline void channel_dont_connect(struct channel *chn) |
559 | 0 | { |
560 | 0 | chn->flags &= ~(CF_AUTO_CONNECT|CF_AUTO_CLOSE); |
561 | 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 |
562 | | |
563 | | /* allow the producer to forward shutdown requests */ |
564 | | static inline void channel_auto_close(struct channel *chn) |
565 | 0 | { |
566 | 0 | chn->flags |= CF_AUTO_CLOSE; |
567 | 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 |
568 | | |
569 | | /* prevent the producer from forwarding shutdown requests */ |
570 | | static inline void channel_dont_close(struct channel *chn) |
571 | 0 | { |
572 | 0 | chn->flags &= ~CF_AUTO_CLOSE; |
573 | 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 |
574 | | |
575 | | /* allow the producer to read / poll the input */ |
576 | | static inline void channel_auto_read(struct channel *chn) |
577 | 0 | { |
578 | 0 | chn->flags &= ~CF_DONT_READ; |
579 | 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 |
580 | | |
581 | | /* prevent the producer from read / poll the input */ |
582 | | static inline void channel_dont_read(struct channel *chn) |
583 | 0 | { |
584 | 0 | chn->flags |= CF_DONT_READ; |
585 | 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 |
586 | | |
587 | | |
588 | | /*************************************************/ |
589 | | /* Buffer operations in the context of a channel */ |
590 | | /*************************************************/ |
591 | | |
592 | | |
593 | | /* Return the max number of bytes the buffer can contain so that once all the |
594 | | * pending bytes are forwarded, the buffer still has global.tune.maxrewrite |
595 | | * bytes free. The result sits between chn->size - maxrewrite and chn->size. |
596 | | * It is important to mention that if buf->i is already larger than size-maxrw |
597 | | * the condition above cannot be satisfied and the lowest size will be returned |
598 | | * anyway. The principles are the following : |
599 | | * 0) the empty buffer has a limit of zero |
600 | | * 1) a non-connected buffer cannot touch the reserve |
601 | | * 2) infinite forward can always fill the buffer since all data will leave |
602 | | * 3) all output bytes are considered in transit since they're leaving |
603 | | * 4) all input bytes covered by to_forward are considered in transit since |
604 | | * they'll be converted to output bytes. |
605 | | * 5) all input bytes not covered by to_forward as considered remaining |
606 | | * 6) all bytes scheduled to be forwarded minus what is already in the input |
607 | | * buffer will be in transit during future rounds. |
608 | | * 7) 4+5+6 imply that the amount of input bytes (i) is irrelevant to the max |
609 | | * usable length, only to_forward and output count. The difference is |
610 | | * visible when to_forward > i. |
611 | | * 8) the reserve may be covered up to the amount of bytes in transit since |
612 | | * these bytes will only take temporary space. |
613 | | * |
614 | | * A typical buffer looks like this : |
615 | | * |
616 | | * <-------------- max_len -----------> |
617 | | * <---- o ----><----- i -----> <--- 0..maxrewrite ---> |
618 | | * +------------+--------------+-------+----------------------+ |
619 | | * |////////////|\\\\\\\\\\\\\\|xxxxxxx| reserve | |
620 | | * +------------+--------+-----+-------+----------------------+ |
621 | | * <- fwd -> <-avail-> |
622 | | * |
623 | | * Or when to_forward > i : |
624 | | * |
625 | | * <-------------- max_len -----------> |
626 | | * <---- o ----><----- i -----> <--- 0..maxrewrite ---> |
627 | | * +------------+--------------+-------+----------------------+ |
628 | | * |////////////|\\\\\\\\\\\\\\|xxxxxxx| reserve | |
629 | | * +------------+--------+-----+-------+----------------------+ |
630 | | * <-avail-> |
631 | | * <------------------ fwd ----------------> |
632 | | * |
633 | | * - the amount of buffer bytes in transit is : min(i, fwd) + o |
634 | | * - some scheduled bytes may be in transit (up to fwd - i) |
635 | | * - the reserve is max(0, maxrewrite - transit) |
636 | | * - the maximum usable buffer length is size - reserve. |
637 | | * - the available space is max_len - i - o |
638 | | * |
639 | | * So the formula to compute the buffer's maximum length to protect the reserve |
640 | | * when reading new data is : |
641 | | * |
642 | | * max = size - maxrewrite + min(maxrewrite, transit) |
643 | | * = size - max(maxrewrite - transit, 0) |
644 | | * |
645 | | * But WARNING! The conditions might change during the transfer and it could |
646 | | * very well happen that a buffer would contain more bytes than max_len due to |
647 | | * i+o already walking over the reserve (eg: after a header rewrite), including |
648 | | * i or o alone hitting the limit. So it is critical to always consider that |
649 | | * bounds may have already been crossed and that available space may be negative |
650 | | * for example. Due to this it is perfectly possible for this function to return |
651 | | * a value that is lower than current i+o. |
652 | | */ |
653 | | static inline int channel_recv_limit(const struct channel *chn) |
654 | 0 | { |
655 | 0 | unsigned int transit; |
656 | 0 | int reserve; |
657 | | |
658 | | /* return zero if empty */ |
659 | 0 | reserve = chn->buf.size; |
660 | 0 | if (b_is_null(&chn->buf)) |
661 | 0 | goto end; |
662 | | |
663 | | /* return size - maxrewrite if we can't send */ |
664 | 0 | reserve = global.tune.maxrewrite; |
665 | 0 | if (unlikely(!channel_may_send(chn))) |
666 | 0 | goto end; |
667 | | |
668 | | /* We need to check what remains of the reserve after o and to_forward |
669 | | * have been transmitted, but they can overflow together and they can |
670 | | * cause an integer underflow in the comparison since both are unsigned |
671 | | * while maxrewrite is signed. |
672 | | * The code below has been verified for being a valid check for this : |
673 | | * - if (o + to_forward) overflow => return size [ large enough ] |
674 | | * - if o + to_forward >= maxrw => return size [ large enough ] |
675 | | * - otherwise return size - (maxrw - (o + to_forward)) |
676 | | */ |
677 | 0 | transit = co_data(chn) + chn->to_forward; |
678 | 0 | reserve -= transit; |
679 | 0 | if (transit < chn->to_forward || // addition overflow |
680 | 0 | transit >= (unsigned)global.tune.maxrewrite) // enough transit data |
681 | 0 | return chn->buf.size; |
682 | 0 | end: |
683 | 0 | return chn->buf.size - reserve; |
684 | 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 |
685 | | |
686 | | /* HTX version of channel_recv_limit(). Return the max number of bytes the HTX |
687 | | * buffer can contain so that once all the pending bytes are forwarded, the |
688 | | * buffer still has global.tune.maxrewrite bytes free. |
689 | | */ |
690 | | static inline int channel_htx_recv_limit(const struct channel *chn, const struct htx *htx) |
691 | 0 | { |
692 | 0 | unsigned int transit; |
693 | 0 | int reserve; |
694 | | |
695 | | /* return zero if not allocated */ |
696 | 0 | if (!htx->size) |
697 | 0 | return 0; |
698 | | |
699 | | /* return max_data_space - maxrewrite if we can't send */ |
700 | 0 | reserve = global.tune.maxrewrite; |
701 | 0 | if (unlikely(!channel_may_send(chn))) |
702 | 0 | goto end; |
703 | | |
704 | | /* We need to check what remains of the reserve after o and to_forward |
705 | | * have been transmitted, but they can overflow together and they can |
706 | | * cause an integer underflow in the comparison since both are unsigned |
707 | | * while maxrewrite is signed. |
708 | | * The code below has been verified for being a valid check for this : |
709 | | * - if (o + to_forward) overflow => return htx->size [ large enough ] |
710 | | * - if o + to_forward >= maxrw => return htx->size [ large enough ] |
711 | | * - otherwise return htx->size - (maxrw - (o + to_forward)) |
712 | | */ |
713 | 0 | transit = co_data(chn) + chn->to_forward; |
714 | 0 | reserve -= transit; |
715 | 0 | if (transit < chn->to_forward || // addition overflow |
716 | 0 | transit >= (unsigned)global.tune.maxrewrite) // enough transit data |
717 | 0 | return htx->size; |
718 | 0 | end: |
719 | 0 | return (htx->size - reserve); |
720 | 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 |
721 | | |
722 | | /* HTX version of channel_full(). Instead of checking if INPUT data exceeds |
723 | | * (size - reserve), this function checks if the free space for data in <htx> |
724 | | * and the data scheduled for output are lower to the reserve. In such case, the |
725 | | * channel is considered as full. |
726 | | */ |
727 | | static inline int channel_htx_full(const struct channel *c, const struct htx *htx, |
728 | | unsigned int reserve) |
729 | 0 | { |
730 | 0 | if (!htx->size) |
731 | 0 | return 0; |
732 | 0 | return (htx_free_data_space(htx) + co_data(c) <= reserve); |
733 | 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 |
734 | | |
735 | | /* Returns non-zero if the channel's INPUT buffer's is considered full, which |
736 | | * means that it holds at least as much INPUT data as (size - reserve). This |
737 | | * also means that data that are scheduled for output are considered as potential |
738 | | * free space, and that the reserved space is always considered as not usable. |
739 | | * This information alone cannot be used as a general purpose free space indicator. |
740 | | * However it accurately indicates that too many data were fed in the buffer |
741 | | * for an analyzer for instance. See the channel_may_recv() function for a more |
742 | | * generic function taking everything into account. |
743 | | */ |
744 | | static inline int channel_full(const struct channel *c, unsigned int reserve) |
745 | 0 | { |
746 | 0 | if (b_is_null(&c->buf)) |
747 | 0 | return 0; |
748 | | |
749 | 0 | if (IS_HTX_STRM(chn_strm(c))) |
750 | 0 | return channel_htx_full(c, htxbuf(&c->buf), reserve); |
751 | | |
752 | 0 | return (ci_data(c) + reserve >= c_size(c)); |
753 | 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 |
754 | | |
755 | | /* HTX version of channel_recv_max(). */ |
756 | | static inline int channel_htx_recv_max(const struct channel *chn, const struct htx *htx) |
757 | 0 | { |
758 | 0 | int ret; |
759 | |
|
760 | 0 | ret = channel_htx_recv_limit(chn, htx) - htx_used_space(htx); |
761 | 0 | if (ret < 0) |
762 | 0 | ret = 0; |
763 | 0 | return ret; |
764 | 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 |
765 | | |
766 | | /* Returns the amount of space available at the input of the buffer, taking the |
767 | | * reserved space into account if ->to_forward indicates that an end of transfer |
768 | | * is close to happen. The test is optimized to avoid as many operations as |
769 | | * possible for the fast case. |
770 | | */ |
771 | | static inline int channel_recv_max(const struct channel *chn) |
772 | 0 | { |
773 | 0 | int ret; |
774 | |
|
775 | 0 | if (IS_HTX_STRM(chn_strm(chn))) |
776 | 0 | return channel_htx_recv_max(chn, htxbuf(&chn->buf)); |
777 | | |
778 | 0 | ret = channel_recv_limit(chn) - b_data(&chn->buf); |
779 | 0 | if (ret < 0) |
780 | 0 | ret = 0; |
781 | 0 | return ret; |
782 | 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 |
783 | | |
784 | | /* Returns the maximum absolute amount of data that can be copied in a channel, |
785 | | * taking the reserved space into account but also the HTX overhead for HTX |
786 | | * streams. |
787 | | */ |
788 | | static inline size_t channel_data_limit(const struct channel *chn) |
789 | 0 | { |
790 | 0 | size_t max = (global.tune.bufsize - global.tune.maxrewrite); |
791 | |
|
792 | 0 | if (IS_HTX_STRM(chn_strm(chn))) |
793 | 0 | max -= HTX_BUF_OVERHEAD; |
794 | 0 | return max; |
795 | 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 |
796 | | |
797 | | /* Returns the amount of data in a channel, taking the HTX streams into |
798 | | * account. For raw channels, it is equivalent to c_data. For HTX channels, we |
799 | | * rely on the HTX api. |
800 | | */ |
801 | | static inline size_t channel_data(const struct channel *chn) |
802 | 0 | { |
803 | 0 | return (IS_HTX_STRM(chn_strm(chn)) ? htx_used_space(htxbuf(&chn->buf)) : c_data(chn)); |
804 | 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 |
805 | | |
806 | | /* Returns the amount of input data in a channel, taking he HTX streams into |
807 | | * account. This function relies on channel_data(). |
808 | | */ |
809 | | static inline size_t channel_input_data(const struct channel *chn) |
810 | 0 | { |
811 | 0 | return channel_data(chn) - co_data(chn); |
812 | 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 |
813 | | |
814 | | /* Returns 1 if the channel is empty, taking he HTX streams into account */ |
815 | | static inline size_t channel_empty(const struct channel *chn) |
816 | 0 | { |
817 | 0 | return (IS_HTX_STRM(chn) ? htx_is_empty(htxbuf(&chn->buf)) : c_empty(chn)); |
818 | 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 |
819 | | |
820 | | /* Check channel's last_read date against the idle timeer to verify the producer |
821 | | * is still streaming data or not |
822 | | */ |
823 | | static inline void channel_check_idletimer(struct channel *chn) |
824 | 0 | { |
825 | 0 | if ((chn->flags & (CF_STREAMER | CF_STREAMER_FAST)) && !co_data(chn) && |
826 | 0 | global.tune.idle_timer && |
827 | 0 | (unsigned short)(now_ms - chn->last_read) >= global.tune.idle_timer) { |
828 | | /* The buffer was empty and nothing was transferred for more |
829 | | * than one second. This was caused by a pause and not by |
830 | | * congestion. Reset any streaming mode to reduce latency. |
831 | | */ |
832 | 0 | chn->xfer_small = 0; |
833 | 0 | chn->xfer_large = 0; |
834 | 0 | chn->flags &= ~(CF_STREAMER | CF_STREAMER_FAST); |
835 | 0 | } |
836 | 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 |
837 | | |
838 | | /* Check amount of transferred data after a receive. If <xferred> is greater |
839 | | * than 0, the <last_read> date is updated and STREAMER flags for the channels |
840 | | * are verified. |
841 | | */ |
842 | | static inline void channel_check_xfer(struct channel *chn, size_t xferred) |
843 | 0 | { |
844 | 0 | if (!xferred) |
845 | 0 | return; |
846 | | |
847 | 0 | if ((chn->flags & (CF_STREAMER | CF_STREAMER_FAST)) && |
848 | 0 | (xferred <= c_size(chn) / 2)) { |
849 | 0 | chn->xfer_large = 0; |
850 | 0 | chn->xfer_small++; |
851 | 0 | if (chn->xfer_small >= 3) { |
852 | | /* we have read less than half of the buffer in |
853 | | * one pass, and this happened at least 3 times. |
854 | | * This is definitely not a streamer. |
855 | | */ |
856 | 0 | chn->flags &= ~(CF_STREAMER | CF_STREAMER_FAST); |
857 | 0 | } |
858 | 0 | else if (chn->xfer_small >= 2) { |
859 | | /* if the buffer has been at least half full twchne, |
860 | | * we receive faster than we send, so at least it |
861 | | * is not a "fast streamer". |
862 | | */ |
863 | 0 | chn->flags &= ~CF_STREAMER_FAST; |
864 | 0 | } |
865 | 0 | } |
866 | 0 | else if (!(chn->flags & CF_STREAMER_FAST) && (xferred >= channel_data_limit(chn))) { |
867 | | /* we read a full buffer at once */ |
868 | 0 | chn->xfer_small = 0; |
869 | 0 | chn->xfer_large++; |
870 | 0 | if (chn->xfer_large >= 3) { |
871 | | /* we call this buffer a fast streamer if it manages |
872 | | * to be filled in one call 3 consecutive times. |
873 | | */ |
874 | 0 | chn->flags |= (CF_STREAMER | CF_STREAMER_FAST); |
875 | 0 | } |
876 | 0 | } |
877 | 0 | else { |
878 | 0 | chn->xfer_small = 0; |
879 | 0 | chn->xfer_large = 0; |
880 | 0 | } |
881 | 0 | chn->last_read = now_ms; |
882 | 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 |
883 | | |
884 | | /* Returns the amount of bytes that can be written over the input data at once, |
885 | | * including reserved space which may be overwritten. This is used by Lua to |
886 | | * insert data in the input side just before the other data using buffer_replace(). |
887 | | * The goal is to transfer these new data in the output buffer. |
888 | | */ |
889 | | static inline int ci_space_for_replace(const struct channel *chn) |
890 | 0 | { |
891 | 0 | const struct buffer *buf = &chn->buf; |
892 | 0 | const char *end; |
893 | 0 |
|
894 | 0 | /* If the input side data overflows, we cannot insert data contiguously. */ |
895 | 0 | if (b_head(buf) + b_data(buf) >= b_wrap(buf)) |
896 | 0 | return 0; |
897 | 0 |
|
898 | 0 | /* Check the last byte used in the buffer, it may be a byte of the output |
899 | 0 | * side if the buffer wraps, or its the end of the buffer. |
900 | 0 | */ |
901 | 0 | end = b_head(buf); |
902 | 0 | if (end <= ci_head(chn)) |
903 | 0 | end = b_wrap(buf); |
904 | 0 |
|
905 | 0 | /* Compute the amount of bytes which can be written. */ |
906 | 0 | return end - ci_tail(chn); |
907 | 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 |
908 | | |
909 | | /* Allocates a buffer for channel <chn>. Returns 0 in case of failure, non-zero |
910 | | * otherwise. |
911 | | * |
912 | | * If no buffer are available, the requester, represented by <wait> pointer, |
913 | | * will be added in the list of objects waiting for an available buffer. |
914 | | */ |
915 | | static inline int channel_alloc_buffer(struct channel *chn, struct buffer_wait *wait) |
916 | 0 | { |
917 | 0 | int force_noqueue; |
918 | | |
919 | | /* If the producer has been notified of recent availability, we must |
920 | | * not check the queue again. |
921 | | */ |
922 | 0 | force_noqueue = !!(chn_prod(chn)->flags & SC_FL_HAVE_BUFF); |
923 | |
|
924 | 0 | if (b_alloc(&chn->buf, DB_CHANNEL | (force_noqueue ? DB_F_NOQUEUE : 0)) != NULL) |
925 | 0 | return 1; |
926 | | |
927 | 0 | b_requeue(DB_CHANNEL, wait); |
928 | 0 | return 0; |
929 | 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 |
930 | | |
931 | | /* Releases a possibly allocated buffer for channel <chn>. If it was not |
932 | | * allocated, this function does nothing. Else the buffer is released and we try |
933 | | * to wake up as many streams/applets as possible. */ |
934 | | static inline void channel_release_buffer(struct channel *chn, struct buffer_wait *wait) |
935 | 0 | { |
936 | 0 | if (c_size(chn) && c_empty(chn)) { |
937 | 0 | b_free(&chn->buf); |
938 | 0 | offer_buffers(wait->target, 1); |
939 | 0 | } |
940 | 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 |
941 | | |
942 | | /* Truncate any unread data in the channel's buffer, and disable forwarding. |
943 | | * Outgoing data are left intact. This is mainly to be used to send error |
944 | | * messages after existing data. |
945 | | */ |
946 | | static inline void channel_truncate(struct channel *chn) |
947 | 0 | { |
948 | 0 | if (!co_data(chn)) |
949 | 0 | return channel_erase(chn); |
950 | | |
951 | 0 | chn->to_forward = 0; |
952 | 0 | if (!ci_data(chn)) |
953 | 0 | return; |
954 | | |
955 | 0 | chn->buf.data = co_data(chn); |
956 | 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 |
957 | | |
958 | | static inline void channel_htx_truncate(struct channel *chn, struct htx *htx) |
959 | 0 | { |
960 | 0 | if (!co_data(chn)) |
961 | 0 | return channel_htx_erase(chn, htx); |
962 | | |
963 | 0 | chn->to_forward = 0; |
964 | 0 | if (htx->data == co_data(chn)) |
965 | 0 | return; |
966 | 0 | htx_truncate(htx, co_data(chn)); |
967 | 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 |
968 | | |
969 | | /* This function realigns a possibly wrapping channel buffer so that the input |
970 | | * part is contiguous and starts at the beginning of the buffer and the output |
971 | | * part ends at the end of the buffer. This provides the best conditions since |
972 | | * it allows the largest inputs to be processed at once and ensures that once |
973 | | * the output data leaves, the whole buffer is available at once. |
974 | | */ |
975 | | static inline void channel_slow_realign(struct channel *chn, char *swap) |
976 | 0 | { |
977 | 0 | return b_slow_realign(&chn->buf, swap, co_data(chn)); |
978 | 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 |
979 | | |
980 | | |
981 | | /* Forward all headers of an HTX message, starting from the SL to the EOH. This |
982 | | * function returns the position of the block after the EOH, if |
983 | | * found. Otherwise, it returns -1. |
984 | | */ |
985 | | static inline int32_t channel_htx_fwd_headers(struct channel *chn, struct htx *htx) |
986 | 0 | { |
987 | 0 | int32_t pos; |
988 | 0 | size_t data = 0; |
989 | |
|
990 | 0 | for (pos = htx_get_first(htx); pos != -1; pos = htx_get_next(htx, pos)) { |
991 | 0 | struct htx_blk *blk = htx_get_blk(htx, pos); |
992 | 0 | data += htx_get_blksz(blk); |
993 | 0 | if (htx_get_blk_type(blk) == HTX_BLK_EOH) { |
994 | 0 | pos = htx_get_next(htx, pos); |
995 | 0 | break; |
996 | 0 | } |
997 | 0 | } |
998 | 0 | c_adv(chn, data); |
999 | 0 | return pos; |
1000 | 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 |
1001 | | |
1002 | | /* |
1003 | | * Advance the channel buffer's read pointer by <len> bytes. This is useful |
1004 | | * when data have been read directly from the buffer. It is illegal to call |
1005 | | * this function with <len> causing a wrapping at the end of the buffer. It's |
1006 | | * the caller's responsibility to ensure that <len> is never larger than |
1007 | | * chn->o. |
1008 | | */ |
1009 | | static inline void co_skip(struct channel *chn, int len) |
1010 | 0 | { |
1011 | 0 | BUG_ON_HOT(len > chn->output); |
1012 | 0 | b_del(&chn->buf, len); |
1013 | 0 | chn->output -= len; |
1014 | 0 | c_realign_if_empty(chn); |
1015 | 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 |
1016 | | |
1017 | | /* HTX version of co_skip(). This function skips at most <len> bytes from the |
1018 | | * output of the channel <chn>. Depending on how data are stored in <htx> less |
1019 | | * than <len> bytes can be skipped.. |
1020 | | */ |
1021 | | static inline void co_htx_skip(struct channel *chn, struct htx *htx, int len) |
1022 | 0 | { |
1023 | 0 | struct htx_ret htxret; |
1024 | 0 |
|
1025 | 0 | htxret = htx_drain(htx, len); |
1026 | 0 | if (htxret.ret) { |
1027 | 0 | BUG_ON_HOT(htxret.ret > chn->output); |
1028 | 0 | chn->output -= htxret.ret; |
1029 | 0 | } |
1030 | 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 |
1031 | | |
1032 | | /* Tries to copy chunk <chunk> into the channel's buffer after length controls. |
1033 | | * The chn->o and to_forward pointers are updated. If the channel's input is |
1034 | | * closed, -2 is returned. If the block is too large for this buffer, -3 is |
1035 | | * returned. If there is not enough room left in the buffer, -1 is returned. |
1036 | | * Otherwise the number of bytes copied is returned (0 being a valid number). |
1037 | | * Channel flag READ_PARTIAL is updated if some data can be transferred. The |
1038 | | * chunk's length is updated with the number of bytes sent. |
1039 | | */ |
1040 | | static inline int ci_putchk(struct channel *chn, struct buffer *chunk) |
1041 | 0 | { |
1042 | 0 | int ret; |
1043 | |
|
1044 | 0 | ret = ci_putblk(chn, chunk->area, chunk->data); |
1045 | 0 | if (ret > 0) |
1046 | 0 | chunk->data -= ret; |
1047 | 0 | return ret; |
1048 | 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 |
1049 | | |
1050 | | /* Tries to copy string <str> at once into the channel's buffer after length |
1051 | | * controls. The chn->o and to_forward pointers are updated. If the channel's |
1052 | | * input is closed, -2 is returned. If the block is too large for this buffer, |
1053 | | * -3 is returned. If there is not enough room left in the buffer, -1 is |
1054 | | * returned. Otherwise the number of bytes copied is returned (0 being a valid |
1055 | | * number). Channel flag READ_PARTIAL is updated if some data can be |
1056 | | * transferred. |
1057 | | */ |
1058 | | static inline int ci_putstr(struct channel *chn, const char *str) |
1059 | 0 | { |
1060 | 0 | return ci_putblk(chn, str, strlen(str)); |
1061 | 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 |
1062 | | |
1063 | | /* |
1064 | | * Return one char from the channel's buffer. If the buffer is empty and the |
1065 | | * channel is closed, return -2. If the buffer is just empty, return -1. The |
1066 | | * buffer's pointer is not advanced, it's up to the caller to call co_skip(buf, |
1067 | | * 1) when it has consumed the char. Also note that this function respects the |
1068 | | * chn->o limit. |
1069 | | */ |
1070 | | static inline int co_getchr(struct channel *chn) |
1071 | 0 | { |
1072 | 0 | /* closed or empty + imminent close = -2; empty = -1 */ |
1073 | 0 | if (unlikely((chn_cons(chn)->flags & SC_FL_SHUT_DONE) || !co_data(chn))) { |
1074 | 0 | if (chn_cons(chn)->flags & (SC_FL_SHUT_DONE|SC_FL_SHUT_WANTED)) |
1075 | 0 | return -2; |
1076 | 0 | return -1; |
1077 | 0 | } |
1078 | 0 | return *co_head(chn); |
1079 | 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 |
1080 | | |
1081 | | #endif /* _HAPROXY_CHANNEL_H */ |
1082 | | |
1083 | | /* |
1084 | | * Local variables: |
1085 | | * c-indent-level: 8 |
1086 | | * c-basic-offset: 8 |
1087 | | * End: |
1088 | | */ |