/src/haproxy/include/haproxy/sc_strm.h
Line | Count | Source |
1 | | /* |
2 | | * include/haproxy/sc_strm.h |
3 | | * This file contains stream-specific stream-connector functions prototypes |
4 | | * |
5 | | * Copyright 2022 Christopher Faulet <cfaulet@haproxy.com> |
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_SC_STRM_H |
23 | | #define _HAPROXY_SC_STRM_H |
24 | | |
25 | | #include <haproxy/api.h> |
26 | | #include <haproxy/buf-t.h> |
27 | | #include <haproxy/channel-t.h> |
28 | | #include <haproxy/stream-t.h> |
29 | | #include <haproxy/task-t.h> |
30 | | #include <haproxy/connection.h> |
31 | | #include <haproxy/channel.h> |
32 | | #include <haproxy/session.h> |
33 | | #include <haproxy/stconn.h> |
34 | | #include <haproxy/stream.h> |
35 | | |
36 | | void sc_update_rx(struct stconn *sc); |
37 | | void sc_update_tx(struct stconn *sc); |
38 | | |
39 | | void sc_abort(struct stconn *sc); |
40 | | void sc_shutdown(struct stconn *sc); |
41 | | void sc_chk_rcv(struct stconn *sc); |
42 | | |
43 | | struct task *sc_conn_io_cb(struct task *t, void *ctx, unsigned int state); |
44 | | int sc_conn_sync_recv(struct stconn *sc); |
45 | | int sc_conn_sync_send(struct stconn *sc); |
46 | | |
47 | | int sc_applet_sync_recv(struct stconn *sc); |
48 | | void sc_applet_sync_send(struct stconn *sc); |
49 | | |
50 | | int sc_applet_sync_recv(struct stconn *sc); |
51 | | void sc_applet_sync_send(struct stconn *sc); |
52 | | |
53 | | |
54 | | /* returns the channel which receives data from this stream connector (input channel) */ |
55 | | static inline struct channel *sc_ic(const struct stconn *sc) |
56 | 0 | { |
57 | 0 | struct stream *strm = __sc_strm(sc); |
58 | |
|
59 | 0 | return ((sc->flags & SC_FL_ISBACK) ? &(strm->res) : &(strm->req)); |
60 | 0 | } Unexecuted instantiation: cli.c:sc_ic Unexecuted instantiation: connection.c:sc_ic Unexecuted instantiation: debug.c:sc_ic Unexecuted instantiation: errors.c:sc_ic Unexecuted instantiation: frontend.c:sc_ic Unexecuted instantiation: haproxy.c:sc_ic Unexecuted instantiation: http_ana.c:sc_ic Unexecuted instantiation: http_ext.c:sc_ic Unexecuted instantiation: log.c:sc_ic Unexecuted instantiation: mworker.c:sc_ic Unexecuted instantiation: peers.c:sc_ic Unexecuted instantiation: pool.c:sc_ic Unexecuted instantiation: proxy.c:sc_ic Unexecuted instantiation: resolvers.c:sc_ic Unexecuted instantiation: ring.c:sc_ic Unexecuted instantiation: sample.c:sc_ic Unexecuted instantiation: server.c:sc_ic Unexecuted instantiation: sink.c:sc_ic Unexecuted instantiation: stats-html.c:sc_ic Unexecuted instantiation: stats.c:sc_ic Unexecuted instantiation: stconn.c:sc_ic Unexecuted instantiation: stick_table.c:sc_ic Unexecuted instantiation: stream.c:sc_ic Unexecuted instantiation: tcp_rules.c:sc_ic Unexecuted instantiation: tools.c:sc_ic Unexecuted instantiation: trace.c:sc_ic Unexecuted instantiation: vars.c:sc_ic Unexecuted instantiation: activity.c:sc_ic Unexecuted instantiation: applet.c:sc_ic Unexecuted instantiation: backend.c:sc_ic Unexecuted instantiation: dns.c:sc_ic Unexecuted instantiation: dns_ring.c:sc_ic Unexecuted instantiation: haterm.c:sc_ic Unexecuted instantiation: http_fetch.c:sc_ic Unexecuted instantiation: stats-json.c:sc_ic Unexecuted instantiation: cache.c:sc_ic Unexecuted instantiation: flt_spoe.c:sc_ic |
61 | | |
62 | | /* returns the channel which feeds data to this stream connector (output channel) */ |
63 | | static inline struct channel *sc_oc(const struct stconn *sc) |
64 | 0 | { |
65 | 0 | struct stream *strm = __sc_strm(sc); |
66 | |
|
67 | 0 | return ((sc->flags & SC_FL_ISBACK) ? &(strm->req) : &(strm->res)); |
68 | 0 | } Unexecuted instantiation: cli.c:sc_oc Unexecuted instantiation: connection.c:sc_oc Unexecuted instantiation: debug.c:sc_oc Unexecuted instantiation: errors.c:sc_oc Unexecuted instantiation: frontend.c:sc_oc Unexecuted instantiation: haproxy.c:sc_oc Unexecuted instantiation: http_ana.c:sc_oc Unexecuted instantiation: http_ext.c:sc_oc Unexecuted instantiation: log.c:sc_oc Unexecuted instantiation: mworker.c:sc_oc Unexecuted instantiation: peers.c:sc_oc Unexecuted instantiation: pool.c:sc_oc Unexecuted instantiation: proxy.c:sc_oc Unexecuted instantiation: resolvers.c:sc_oc Unexecuted instantiation: ring.c:sc_oc Unexecuted instantiation: sample.c:sc_oc Unexecuted instantiation: server.c:sc_oc Unexecuted instantiation: sink.c:sc_oc Unexecuted instantiation: stats-html.c:sc_oc Unexecuted instantiation: stats.c:sc_oc Unexecuted instantiation: stconn.c:sc_oc Unexecuted instantiation: stick_table.c:sc_oc Unexecuted instantiation: stream.c:sc_oc Unexecuted instantiation: tcp_rules.c:sc_oc Unexecuted instantiation: tools.c:sc_oc Unexecuted instantiation: trace.c:sc_oc Unexecuted instantiation: vars.c:sc_oc Unexecuted instantiation: activity.c:sc_oc Unexecuted instantiation: applet.c:sc_oc Unexecuted instantiation: backend.c:sc_oc Unexecuted instantiation: dns.c:sc_oc Unexecuted instantiation: dns_ring.c:sc_oc Unexecuted instantiation: haterm.c:sc_oc Unexecuted instantiation: http_fetch.c:sc_oc Unexecuted instantiation: stats-json.c:sc_oc Unexecuted instantiation: cache.c:sc_oc Unexecuted instantiation: flt_spoe.c:sc_oc |
69 | | |
70 | | /* returns the buffer which receives data from this stream connector (input channel's buffer) */ |
71 | | static inline struct buffer *sc_ib(const struct stconn *sc) |
72 | 0 | { |
73 | 0 | return &sc_ic(sc)->buf; |
74 | 0 | } Unexecuted instantiation: cli.c:sc_ib Unexecuted instantiation: connection.c:sc_ib Unexecuted instantiation: debug.c:sc_ib Unexecuted instantiation: errors.c:sc_ib Unexecuted instantiation: frontend.c:sc_ib Unexecuted instantiation: haproxy.c:sc_ib Unexecuted instantiation: http_ana.c:sc_ib Unexecuted instantiation: http_ext.c:sc_ib Unexecuted instantiation: log.c:sc_ib Unexecuted instantiation: mworker.c:sc_ib Unexecuted instantiation: peers.c:sc_ib Unexecuted instantiation: pool.c:sc_ib Unexecuted instantiation: proxy.c:sc_ib Unexecuted instantiation: resolvers.c:sc_ib Unexecuted instantiation: ring.c:sc_ib Unexecuted instantiation: sample.c:sc_ib Unexecuted instantiation: server.c:sc_ib Unexecuted instantiation: sink.c:sc_ib Unexecuted instantiation: stats-html.c:sc_ib Unexecuted instantiation: stats.c:sc_ib Unexecuted instantiation: stconn.c:sc_ib Unexecuted instantiation: stick_table.c:sc_ib Unexecuted instantiation: stream.c:sc_ib Unexecuted instantiation: tcp_rules.c:sc_ib Unexecuted instantiation: tools.c:sc_ib Unexecuted instantiation: trace.c:sc_ib Unexecuted instantiation: vars.c:sc_ib Unexecuted instantiation: activity.c:sc_ib Unexecuted instantiation: applet.c:sc_ib Unexecuted instantiation: backend.c:sc_ib Unexecuted instantiation: dns.c:sc_ib Unexecuted instantiation: dns_ring.c:sc_ib Unexecuted instantiation: haterm.c:sc_ib Unexecuted instantiation: http_fetch.c:sc_ib Unexecuted instantiation: stats-json.c:sc_ib Unexecuted instantiation: cache.c:sc_ib Unexecuted instantiation: flt_spoe.c:sc_ib |
75 | | |
76 | | /* returns the buffer which feeds data to this stream connector (output channel's buffer) */ |
77 | | static inline struct buffer *sc_ob(const struct stconn *sc) |
78 | 0 | { |
79 | 0 | return &sc_oc(sc)->buf; |
80 | 0 | } Unexecuted instantiation: cli.c:sc_ob Unexecuted instantiation: connection.c:sc_ob Unexecuted instantiation: debug.c:sc_ob Unexecuted instantiation: errors.c:sc_ob Unexecuted instantiation: frontend.c:sc_ob Unexecuted instantiation: haproxy.c:sc_ob Unexecuted instantiation: http_ana.c:sc_ob Unexecuted instantiation: http_ext.c:sc_ob Unexecuted instantiation: log.c:sc_ob Unexecuted instantiation: mworker.c:sc_ob Unexecuted instantiation: peers.c:sc_ob Unexecuted instantiation: pool.c:sc_ob Unexecuted instantiation: proxy.c:sc_ob Unexecuted instantiation: resolvers.c:sc_ob Unexecuted instantiation: ring.c:sc_ob Unexecuted instantiation: sample.c:sc_ob Unexecuted instantiation: server.c:sc_ob Unexecuted instantiation: sink.c:sc_ob Unexecuted instantiation: stats-html.c:sc_ob Unexecuted instantiation: stats.c:sc_ob Unexecuted instantiation: stconn.c:sc_ob Unexecuted instantiation: stick_table.c:sc_ob Unexecuted instantiation: stream.c:sc_ob Unexecuted instantiation: tcp_rules.c:sc_ob Unexecuted instantiation: tools.c:sc_ob Unexecuted instantiation: trace.c:sc_ob Unexecuted instantiation: vars.c:sc_ob Unexecuted instantiation: activity.c:sc_ob Unexecuted instantiation: applet.c:sc_ob Unexecuted instantiation: backend.c:sc_ob Unexecuted instantiation: dns.c:sc_ob Unexecuted instantiation: dns_ring.c:sc_ob Unexecuted instantiation: haterm.c:sc_ob Unexecuted instantiation: http_fetch.c:sc_ob Unexecuted instantiation: stats-json.c:sc_ob Unexecuted instantiation: cache.c:sc_ob Unexecuted instantiation: flt_spoe.c:sc_ob |
81 | | |
82 | | |
83 | | /* The application layer tells the stream connector that it just got the input |
84 | | * buffer it was waiting for. A read activity is reported. The SC_FL_HAVE_BUFF |
85 | | * flag is set and held until sc_used_buff() is called to indicate it was |
86 | | * used. |
87 | | */ |
88 | | static inline void sc_have_buff(struct stconn *sc) |
89 | 0 | { |
90 | 0 | if (sc->flags & SC_FL_NEED_BUFF) { |
91 | 0 | sc->flags &= ~SC_FL_NEED_BUFF; |
92 | 0 | sc->flags |= SC_FL_HAVE_BUFF; |
93 | 0 | sc_ep_report_read_activity(sc); |
94 | 0 | } |
95 | 0 | } Unexecuted instantiation: cli.c:sc_have_buff Unexecuted instantiation: connection.c:sc_have_buff Unexecuted instantiation: debug.c:sc_have_buff Unexecuted instantiation: errors.c:sc_have_buff Unexecuted instantiation: frontend.c:sc_have_buff Unexecuted instantiation: haproxy.c:sc_have_buff Unexecuted instantiation: http_ana.c:sc_have_buff Unexecuted instantiation: http_ext.c:sc_have_buff Unexecuted instantiation: log.c:sc_have_buff Unexecuted instantiation: mworker.c:sc_have_buff Unexecuted instantiation: peers.c:sc_have_buff Unexecuted instantiation: pool.c:sc_have_buff Unexecuted instantiation: proxy.c:sc_have_buff Unexecuted instantiation: resolvers.c:sc_have_buff Unexecuted instantiation: ring.c:sc_have_buff Unexecuted instantiation: sample.c:sc_have_buff Unexecuted instantiation: server.c:sc_have_buff Unexecuted instantiation: sink.c:sc_have_buff Unexecuted instantiation: stats-html.c:sc_have_buff Unexecuted instantiation: stats.c:sc_have_buff Unexecuted instantiation: stconn.c:sc_have_buff Unexecuted instantiation: stick_table.c:sc_have_buff Unexecuted instantiation: stream.c:sc_have_buff Unexecuted instantiation: tcp_rules.c:sc_have_buff Unexecuted instantiation: tools.c:sc_have_buff Unexecuted instantiation: trace.c:sc_have_buff Unexecuted instantiation: vars.c:sc_have_buff Unexecuted instantiation: activity.c:sc_have_buff Unexecuted instantiation: applet.c:sc_have_buff Unexecuted instantiation: backend.c:sc_have_buff Unexecuted instantiation: dns.c:sc_have_buff Unexecuted instantiation: dns_ring.c:sc_have_buff Unexecuted instantiation: haterm.c:sc_have_buff Unexecuted instantiation: http_fetch.c:sc_have_buff Unexecuted instantiation: stats-json.c:sc_have_buff Unexecuted instantiation: cache.c:sc_have_buff Unexecuted instantiation: flt_spoe.c:sc_have_buff |
96 | | |
97 | | /* The stream connector failed to get an input buffer and is waiting for it. |
98 | | * It indicates a willingness to deliver data to the buffer that will have to |
99 | | * be retried. As such, callers will often automatically clear SE_FL_HAVE_NO_DATA |
100 | | * to be called again as soon as SC_FL_NEED_BUFF is cleared. |
101 | | */ |
102 | | static inline void sc_need_buff(struct stconn *sc) |
103 | 0 | { |
104 | 0 | sc->flags |= SC_FL_NEED_BUFF; |
105 | 0 | } Unexecuted instantiation: cli.c:sc_need_buff Unexecuted instantiation: connection.c:sc_need_buff Unexecuted instantiation: debug.c:sc_need_buff Unexecuted instantiation: errors.c:sc_need_buff Unexecuted instantiation: frontend.c:sc_need_buff Unexecuted instantiation: haproxy.c:sc_need_buff Unexecuted instantiation: http_ana.c:sc_need_buff Unexecuted instantiation: http_ext.c:sc_need_buff Unexecuted instantiation: log.c:sc_need_buff Unexecuted instantiation: mworker.c:sc_need_buff Unexecuted instantiation: peers.c:sc_need_buff Unexecuted instantiation: pool.c:sc_need_buff Unexecuted instantiation: proxy.c:sc_need_buff Unexecuted instantiation: resolvers.c:sc_need_buff Unexecuted instantiation: ring.c:sc_need_buff Unexecuted instantiation: sample.c:sc_need_buff Unexecuted instantiation: server.c:sc_need_buff Unexecuted instantiation: sink.c:sc_need_buff Unexecuted instantiation: stats-html.c:sc_need_buff Unexecuted instantiation: stats.c:sc_need_buff Unexecuted instantiation: stconn.c:sc_need_buff Unexecuted instantiation: stick_table.c:sc_need_buff Unexecuted instantiation: stream.c:sc_need_buff Unexecuted instantiation: tcp_rules.c:sc_need_buff Unexecuted instantiation: tools.c:sc_need_buff Unexecuted instantiation: trace.c:sc_need_buff Unexecuted instantiation: vars.c:sc_need_buff Unexecuted instantiation: activity.c:sc_need_buff Unexecuted instantiation: applet.c:sc_need_buff Unexecuted instantiation: backend.c:sc_need_buff Unexecuted instantiation: dns.c:sc_need_buff Unexecuted instantiation: dns_ring.c:sc_need_buff Unexecuted instantiation: haterm.c:sc_need_buff Unexecuted instantiation: http_fetch.c:sc_need_buff Unexecuted instantiation: stats-json.c:sc_need_buff Unexecuted instantiation: cache.c:sc_need_buff Unexecuted instantiation: flt_spoe.c:sc_need_buff |
106 | | |
107 | | /* The stream connector indicates that it has successfully allocated the buffer |
108 | | * it was previously waiting for so it drops the SC_FL_HAVE_BUFF bit. |
109 | | */ |
110 | | static inline void sc_used_buff(struct stconn *sc) |
111 | 0 | { |
112 | 0 | sc->flags &= ~SC_FL_HAVE_BUFF; |
113 | 0 | } Unexecuted instantiation: cli.c:sc_used_buff Unexecuted instantiation: connection.c:sc_used_buff Unexecuted instantiation: debug.c:sc_used_buff Unexecuted instantiation: errors.c:sc_used_buff Unexecuted instantiation: frontend.c:sc_used_buff Unexecuted instantiation: haproxy.c:sc_used_buff Unexecuted instantiation: http_ana.c:sc_used_buff Unexecuted instantiation: http_ext.c:sc_used_buff Unexecuted instantiation: log.c:sc_used_buff Unexecuted instantiation: mworker.c:sc_used_buff Unexecuted instantiation: peers.c:sc_used_buff Unexecuted instantiation: pool.c:sc_used_buff Unexecuted instantiation: proxy.c:sc_used_buff Unexecuted instantiation: resolvers.c:sc_used_buff Unexecuted instantiation: ring.c:sc_used_buff Unexecuted instantiation: sample.c:sc_used_buff Unexecuted instantiation: server.c:sc_used_buff Unexecuted instantiation: sink.c:sc_used_buff Unexecuted instantiation: stats-html.c:sc_used_buff Unexecuted instantiation: stats.c:sc_used_buff Unexecuted instantiation: stconn.c:sc_used_buff Unexecuted instantiation: stick_table.c:sc_used_buff Unexecuted instantiation: stream.c:sc_used_buff Unexecuted instantiation: tcp_rules.c:sc_used_buff Unexecuted instantiation: tools.c:sc_used_buff Unexecuted instantiation: trace.c:sc_used_buff Unexecuted instantiation: vars.c:sc_used_buff Unexecuted instantiation: activity.c:sc_used_buff Unexecuted instantiation: applet.c:sc_used_buff Unexecuted instantiation: backend.c:sc_used_buff Unexecuted instantiation: dns.c:sc_used_buff Unexecuted instantiation: dns_ring.c:sc_used_buff Unexecuted instantiation: haterm.c:sc_used_buff Unexecuted instantiation: http_fetch.c:sc_used_buff Unexecuted instantiation: stats-json.c:sc_used_buff Unexecuted instantiation: cache.c:sc_used_buff Unexecuted instantiation: flt_spoe.c:sc_used_buff |
114 | | |
115 | | /* Tell a stream connector some room was made in the input buffer and any |
116 | | * failed attempt to inject data into it may be tried again. This is usually |
117 | | * called after a successful transfer of buffer contents to the other side. |
118 | | * A read activity is reported. |
119 | | */ |
120 | | static inline void sc_have_room(struct stconn *sc) |
121 | 0 | { |
122 | 0 | if (sc->flags & SC_FL_NEED_ROOM) { |
123 | 0 | sc->flags &= ~SC_FL_NEED_ROOM; |
124 | 0 | sc->room_needed = 0; |
125 | 0 | sc_ep_report_read_activity(sc); |
126 | 0 | } |
127 | 0 | } Unexecuted instantiation: cli.c:sc_have_room Unexecuted instantiation: connection.c:sc_have_room Unexecuted instantiation: debug.c:sc_have_room Unexecuted instantiation: errors.c:sc_have_room Unexecuted instantiation: frontend.c:sc_have_room Unexecuted instantiation: haproxy.c:sc_have_room Unexecuted instantiation: http_ana.c:sc_have_room Unexecuted instantiation: http_ext.c:sc_have_room Unexecuted instantiation: log.c:sc_have_room Unexecuted instantiation: mworker.c:sc_have_room Unexecuted instantiation: peers.c:sc_have_room Unexecuted instantiation: pool.c:sc_have_room Unexecuted instantiation: proxy.c:sc_have_room Unexecuted instantiation: resolvers.c:sc_have_room Unexecuted instantiation: ring.c:sc_have_room Unexecuted instantiation: sample.c:sc_have_room Unexecuted instantiation: server.c:sc_have_room Unexecuted instantiation: sink.c:sc_have_room Unexecuted instantiation: stats-html.c:sc_have_room Unexecuted instantiation: stats.c:sc_have_room Unexecuted instantiation: stconn.c:sc_have_room Unexecuted instantiation: stick_table.c:sc_have_room Unexecuted instantiation: stream.c:sc_have_room Unexecuted instantiation: tcp_rules.c:sc_have_room Unexecuted instantiation: tools.c:sc_have_room Unexecuted instantiation: trace.c:sc_have_room Unexecuted instantiation: vars.c:sc_have_room Unexecuted instantiation: activity.c:sc_have_room Unexecuted instantiation: applet.c:sc_have_room Unexecuted instantiation: backend.c:sc_have_room Unexecuted instantiation: dns.c:sc_have_room Unexecuted instantiation: dns_ring.c:sc_have_room Unexecuted instantiation: haterm.c:sc_have_room Unexecuted instantiation: http_fetch.c:sc_have_room Unexecuted instantiation: stats-json.c:sc_have_room Unexecuted instantiation: cache.c:sc_have_room Unexecuted instantiation: flt_spoe.c:sc_have_room |
128 | | |
129 | | /* The stream connector announces it failed to put data into the input buffer |
130 | | * by lack of room. Since it indicates a willingness to deliver data to the |
131 | | * buffer that will have to be retried. Usually the caller will also clear |
132 | | * SE_FL_HAVE_NO_DATA to be called again as soon as SC_FL_NEED_ROOM is cleared. |
133 | | * |
134 | | * The caller is responsible to specified the amount of free space required to |
135 | | * progress. It must take care to not exceed the buffer size. |
136 | | */ |
137 | | static inline void sc_need_room(struct stconn *sc, ssize_t room_needed) |
138 | 0 | { |
139 | 0 | sc->flags |= SC_FL_NEED_ROOM; |
140 | 0 | BUG_ON_HOT(room_needed > (ssize_t)c_size(sc_ic(sc))); |
141 | 0 | sc->room_needed = room_needed; |
142 | 0 | } Unexecuted instantiation: cli.c:sc_need_room Unexecuted instantiation: connection.c:sc_need_room Unexecuted instantiation: debug.c:sc_need_room Unexecuted instantiation: errors.c:sc_need_room Unexecuted instantiation: frontend.c:sc_need_room Unexecuted instantiation: haproxy.c:sc_need_room Unexecuted instantiation: http_ana.c:sc_need_room Unexecuted instantiation: http_ext.c:sc_need_room Unexecuted instantiation: log.c:sc_need_room Unexecuted instantiation: mworker.c:sc_need_room Unexecuted instantiation: peers.c:sc_need_room Unexecuted instantiation: pool.c:sc_need_room Unexecuted instantiation: proxy.c:sc_need_room Unexecuted instantiation: resolvers.c:sc_need_room Unexecuted instantiation: ring.c:sc_need_room Unexecuted instantiation: sample.c:sc_need_room Unexecuted instantiation: server.c:sc_need_room Unexecuted instantiation: sink.c:sc_need_room Unexecuted instantiation: stats-html.c:sc_need_room Unexecuted instantiation: stats.c:sc_need_room Unexecuted instantiation: stconn.c:sc_need_room Unexecuted instantiation: stick_table.c:sc_need_room Unexecuted instantiation: stream.c:sc_need_room Unexecuted instantiation: tcp_rules.c:sc_need_room Unexecuted instantiation: tools.c:sc_need_room Unexecuted instantiation: trace.c:sc_need_room Unexecuted instantiation: vars.c:sc_need_room Unexecuted instantiation: activity.c:sc_need_room Unexecuted instantiation: applet.c:sc_need_room Unexecuted instantiation: backend.c:sc_need_room Unexecuted instantiation: dns.c:sc_need_room Unexecuted instantiation: dns_ring.c:sc_need_room Unexecuted instantiation: haterm.c:sc_need_room Unexecuted instantiation: http_fetch.c:sc_need_room Unexecuted instantiation: stats-json.c:sc_need_room Unexecuted instantiation: cache.c:sc_need_room Unexecuted instantiation: flt_spoe.c:sc_need_room |
143 | | |
144 | | |
145 | | /* returns the stream's task associated to this stream connector */ |
146 | | static inline struct task *sc_strm_task(const struct stconn *sc) |
147 | 0 | { |
148 | 0 | struct stream *strm = __sc_strm(sc); |
149 | |
|
150 | 0 | return strm->task; |
151 | 0 | } Unexecuted instantiation: cli.c:sc_strm_task Unexecuted instantiation: connection.c:sc_strm_task Unexecuted instantiation: debug.c:sc_strm_task Unexecuted instantiation: errors.c:sc_strm_task Unexecuted instantiation: frontend.c:sc_strm_task Unexecuted instantiation: haproxy.c:sc_strm_task Unexecuted instantiation: http_ana.c:sc_strm_task Unexecuted instantiation: http_ext.c:sc_strm_task Unexecuted instantiation: log.c:sc_strm_task Unexecuted instantiation: mworker.c:sc_strm_task Unexecuted instantiation: peers.c:sc_strm_task Unexecuted instantiation: pool.c:sc_strm_task Unexecuted instantiation: proxy.c:sc_strm_task Unexecuted instantiation: resolvers.c:sc_strm_task Unexecuted instantiation: ring.c:sc_strm_task Unexecuted instantiation: sample.c:sc_strm_task Unexecuted instantiation: server.c:sc_strm_task Unexecuted instantiation: sink.c:sc_strm_task Unexecuted instantiation: stats-html.c:sc_strm_task Unexecuted instantiation: stats.c:sc_strm_task Unexecuted instantiation: stconn.c:sc_strm_task Unexecuted instantiation: stick_table.c:sc_strm_task Unexecuted instantiation: stream.c:sc_strm_task Unexecuted instantiation: tcp_rules.c:sc_strm_task Unexecuted instantiation: tools.c:sc_strm_task Unexecuted instantiation: trace.c:sc_strm_task Unexecuted instantiation: vars.c:sc_strm_task Unexecuted instantiation: activity.c:sc_strm_task Unexecuted instantiation: applet.c:sc_strm_task Unexecuted instantiation: backend.c:sc_strm_task Unexecuted instantiation: dns.c:sc_strm_task Unexecuted instantiation: dns_ring.c:sc_strm_task Unexecuted instantiation: haterm.c:sc_strm_task Unexecuted instantiation: http_fetch.c:sc_strm_task Unexecuted instantiation: stats-json.c:sc_strm_task Unexecuted instantiation: cache.c:sc_strm_task Unexecuted instantiation: flt_spoe.c:sc_strm_task |
152 | | |
153 | | /* returns the stream connector on the other side. Used during forwarding. */ |
154 | | static inline struct stconn *sc_opposite(const struct stconn *sc) |
155 | 0 | { |
156 | 0 | struct stream *strm = __sc_strm(sc); |
157 | |
|
158 | 0 | return ((sc->flags & SC_FL_ISBACK) ? strm->scf : strm->scb); |
159 | 0 | } Unexecuted instantiation: cli.c:sc_opposite Unexecuted instantiation: connection.c:sc_opposite Unexecuted instantiation: debug.c:sc_opposite Unexecuted instantiation: errors.c:sc_opposite Unexecuted instantiation: frontend.c:sc_opposite Unexecuted instantiation: haproxy.c:sc_opposite Unexecuted instantiation: http_ana.c:sc_opposite Unexecuted instantiation: http_ext.c:sc_opposite Unexecuted instantiation: log.c:sc_opposite Unexecuted instantiation: mworker.c:sc_opposite Unexecuted instantiation: peers.c:sc_opposite Unexecuted instantiation: pool.c:sc_opposite Unexecuted instantiation: proxy.c:sc_opposite Unexecuted instantiation: resolvers.c:sc_opposite Unexecuted instantiation: ring.c:sc_opposite Unexecuted instantiation: sample.c:sc_opposite Unexecuted instantiation: server.c:sc_opposite Unexecuted instantiation: sink.c:sc_opposite Unexecuted instantiation: stats-html.c:sc_opposite Unexecuted instantiation: stats.c:sc_opposite Unexecuted instantiation: stconn.c:sc_opposite Unexecuted instantiation: stick_table.c:sc_opposite Unexecuted instantiation: stream.c:sc_opposite Unexecuted instantiation: tcp_rules.c:sc_opposite Unexecuted instantiation: tools.c:sc_opposite Unexecuted instantiation: trace.c:sc_opposite Unexecuted instantiation: vars.c:sc_opposite Unexecuted instantiation: activity.c:sc_opposite Unexecuted instantiation: applet.c:sc_opposite Unexecuted instantiation: backend.c:sc_opposite Unexecuted instantiation: dns.c:sc_opposite Unexecuted instantiation: dns_ring.c:sc_opposite Unexecuted instantiation: haterm.c:sc_opposite Unexecuted instantiation: http_fetch.c:sc_opposite Unexecuted instantiation: stats-json.c:sc_opposite Unexecuted instantiation: cache.c:sc_opposite Unexecuted instantiation: flt_spoe.c:sc_opposite |
160 | | |
161 | | |
162 | | /* sets the current and previous state of a stream connector to <state>. This is |
163 | | * mainly used to create one in the established state on incoming connections. |
164 | | */ |
165 | | static inline void sc_set_state(struct stconn *sc, int state) |
166 | 0 | { |
167 | 0 | sc->state = __sc_strm(sc)->prev_conn_state = state; |
168 | 0 | } Unexecuted instantiation: cli.c:sc_set_state Unexecuted instantiation: connection.c:sc_set_state Unexecuted instantiation: debug.c:sc_set_state Unexecuted instantiation: errors.c:sc_set_state Unexecuted instantiation: frontend.c:sc_set_state Unexecuted instantiation: haproxy.c:sc_set_state Unexecuted instantiation: http_ana.c:sc_set_state Unexecuted instantiation: http_ext.c:sc_set_state Unexecuted instantiation: log.c:sc_set_state Unexecuted instantiation: mworker.c:sc_set_state Unexecuted instantiation: peers.c:sc_set_state Unexecuted instantiation: pool.c:sc_set_state Unexecuted instantiation: proxy.c:sc_set_state Unexecuted instantiation: resolvers.c:sc_set_state Unexecuted instantiation: ring.c:sc_set_state Unexecuted instantiation: sample.c:sc_set_state Unexecuted instantiation: server.c:sc_set_state Unexecuted instantiation: sink.c:sc_set_state Unexecuted instantiation: stats-html.c:sc_set_state Unexecuted instantiation: stats.c:sc_set_state Unexecuted instantiation: stconn.c:sc_set_state Unexecuted instantiation: stick_table.c:sc_set_state Unexecuted instantiation: stream.c:sc_set_state Unexecuted instantiation: tcp_rules.c:sc_set_state Unexecuted instantiation: tools.c:sc_set_state Unexecuted instantiation: trace.c:sc_set_state Unexecuted instantiation: vars.c:sc_set_state Unexecuted instantiation: activity.c:sc_set_state Unexecuted instantiation: applet.c:sc_set_state Unexecuted instantiation: backend.c:sc_set_state Unexecuted instantiation: dns.c:sc_set_state Unexecuted instantiation: dns_ring.c:sc_set_state Unexecuted instantiation: haterm.c:sc_set_state Unexecuted instantiation: http_fetch.c:sc_set_state Unexecuted instantiation: stats-json.c:sc_set_state Unexecuted instantiation: cache.c:sc_set_state Unexecuted instantiation: flt_spoe.c:sc_set_state |
169 | | |
170 | | /* returns a bit for a stream connector state, to match against SC_SB_* */ |
171 | | static inline enum sc_state_bit sc_state_bit(enum sc_state state) |
172 | 0 | { |
173 | 0 | BUG_ON(state > SC_ST_CLO); |
174 | 0 | return 1U << state; |
175 | 0 | } Unexecuted instantiation: cli.c:sc_state_bit Unexecuted instantiation: connection.c:sc_state_bit Unexecuted instantiation: debug.c:sc_state_bit Unexecuted instantiation: errors.c:sc_state_bit Unexecuted instantiation: frontend.c:sc_state_bit Unexecuted instantiation: haproxy.c:sc_state_bit Unexecuted instantiation: http_ana.c:sc_state_bit Unexecuted instantiation: http_ext.c:sc_state_bit Unexecuted instantiation: log.c:sc_state_bit Unexecuted instantiation: mworker.c:sc_state_bit Unexecuted instantiation: peers.c:sc_state_bit Unexecuted instantiation: pool.c:sc_state_bit Unexecuted instantiation: proxy.c:sc_state_bit Unexecuted instantiation: resolvers.c:sc_state_bit Unexecuted instantiation: ring.c:sc_state_bit Unexecuted instantiation: sample.c:sc_state_bit Unexecuted instantiation: server.c:sc_state_bit Unexecuted instantiation: sink.c:sc_state_bit Unexecuted instantiation: stats-html.c:sc_state_bit Unexecuted instantiation: stats.c:sc_state_bit Unexecuted instantiation: stconn.c:sc_state_bit Unexecuted instantiation: stick_table.c:sc_state_bit Unexecuted instantiation: stream.c:sc_state_bit Unexecuted instantiation: tcp_rules.c:sc_state_bit Unexecuted instantiation: tools.c:sc_state_bit Unexecuted instantiation: trace.c:sc_state_bit Unexecuted instantiation: vars.c:sc_state_bit Unexecuted instantiation: activity.c:sc_state_bit Unexecuted instantiation: applet.c:sc_state_bit Unexecuted instantiation: backend.c:sc_state_bit Unexecuted instantiation: dns.c:sc_state_bit Unexecuted instantiation: dns_ring.c:sc_state_bit Unexecuted instantiation: haterm.c:sc_state_bit Unexecuted instantiation: http_fetch.c:sc_state_bit Unexecuted instantiation: stats-json.c:sc_state_bit Unexecuted instantiation: cache.c:sc_state_bit Unexecuted instantiation: flt_spoe.c:sc_state_bit |
176 | | |
177 | | /* returns true if <state> matches one of the SC_SB_* bits in <mask> */ |
178 | | static inline int sc_state_in(enum sc_state state, enum sc_state_bit mask) |
179 | 0 | { |
180 | 0 | BUG_ON(mask & ~SC_SB_ALL); |
181 | 0 | return !!(sc_state_bit(state) & mask); |
182 | 0 | } Unexecuted instantiation: cli.c:sc_state_in Unexecuted instantiation: connection.c:sc_state_in Unexecuted instantiation: debug.c:sc_state_in Unexecuted instantiation: errors.c:sc_state_in Unexecuted instantiation: frontend.c:sc_state_in Unexecuted instantiation: haproxy.c:sc_state_in Unexecuted instantiation: http_ana.c:sc_state_in Unexecuted instantiation: http_ext.c:sc_state_in Unexecuted instantiation: log.c:sc_state_in Unexecuted instantiation: mworker.c:sc_state_in Unexecuted instantiation: peers.c:sc_state_in Unexecuted instantiation: pool.c:sc_state_in Unexecuted instantiation: proxy.c:sc_state_in Unexecuted instantiation: resolvers.c:sc_state_in Unexecuted instantiation: ring.c:sc_state_in Unexecuted instantiation: sample.c:sc_state_in Unexecuted instantiation: server.c:sc_state_in Unexecuted instantiation: sink.c:sc_state_in Unexecuted instantiation: stats-html.c:sc_state_in Unexecuted instantiation: stats.c:sc_state_in Unexecuted instantiation: stconn.c:sc_state_in Unexecuted instantiation: stick_table.c:sc_state_in Unexecuted instantiation: stream.c:sc_state_in Unexecuted instantiation: tcp_rules.c:sc_state_in Unexecuted instantiation: tools.c:sc_state_in Unexecuted instantiation: trace.c:sc_state_in Unexecuted instantiation: vars.c:sc_state_in Unexecuted instantiation: activity.c:sc_state_in Unexecuted instantiation: applet.c:sc_state_in Unexecuted instantiation: backend.c:sc_state_in Unexecuted instantiation: dns.c:sc_state_in Unexecuted instantiation: dns_ring.c:sc_state_in Unexecuted instantiation: haterm.c:sc_state_in Unexecuted instantiation: http_fetch.c:sc_state_in Unexecuted instantiation: stats-json.c:sc_state_in Unexecuted instantiation: cache.c:sc_state_in Unexecuted instantiation: flt_spoe.c:sc_state_in |
183 | | |
184 | | /* Returns true if a connection is attached to the stream connector <sc> and if this |
185 | | * connection is ready. |
186 | | */ |
187 | | static inline int sc_conn_ready(const struct stconn *sc) |
188 | 0 | { |
189 | 0 | const struct connection *conn = sc_conn(sc); |
190 | |
|
191 | 0 | return conn && conn_ctrl_ready(conn) && conn_xprt_ready(conn); |
192 | 0 | } Unexecuted instantiation: cli.c:sc_conn_ready Unexecuted instantiation: connection.c:sc_conn_ready Unexecuted instantiation: debug.c:sc_conn_ready Unexecuted instantiation: errors.c:sc_conn_ready Unexecuted instantiation: frontend.c:sc_conn_ready Unexecuted instantiation: haproxy.c:sc_conn_ready Unexecuted instantiation: http_ana.c:sc_conn_ready Unexecuted instantiation: http_ext.c:sc_conn_ready Unexecuted instantiation: log.c:sc_conn_ready Unexecuted instantiation: mworker.c:sc_conn_ready Unexecuted instantiation: peers.c:sc_conn_ready Unexecuted instantiation: pool.c:sc_conn_ready Unexecuted instantiation: proxy.c:sc_conn_ready Unexecuted instantiation: resolvers.c:sc_conn_ready Unexecuted instantiation: ring.c:sc_conn_ready Unexecuted instantiation: sample.c:sc_conn_ready Unexecuted instantiation: server.c:sc_conn_ready Unexecuted instantiation: sink.c:sc_conn_ready Unexecuted instantiation: stats-html.c:sc_conn_ready Unexecuted instantiation: stats.c:sc_conn_ready Unexecuted instantiation: stconn.c:sc_conn_ready Unexecuted instantiation: stick_table.c:sc_conn_ready Unexecuted instantiation: stream.c:sc_conn_ready Unexecuted instantiation: tcp_rules.c:sc_conn_ready Unexecuted instantiation: tools.c:sc_conn_ready Unexecuted instantiation: trace.c:sc_conn_ready Unexecuted instantiation: vars.c:sc_conn_ready Unexecuted instantiation: activity.c:sc_conn_ready Unexecuted instantiation: applet.c:sc_conn_ready Unexecuted instantiation: backend.c:sc_conn_ready Unexecuted instantiation: dns.c:sc_conn_ready Unexecuted instantiation: dns_ring.c:sc_conn_ready Unexecuted instantiation: haterm.c:sc_conn_ready Unexecuted instantiation: http_fetch.c:sc_conn_ready Unexecuted instantiation: stats-json.c:sc_conn_ready Unexecuted instantiation: cache.c:sc_conn_ready Unexecuted instantiation: flt_spoe.c:sc_conn_ready |
193 | | |
194 | | |
195 | | /* The stream connector is only responsible for the connection during the early |
196 | | * states, before plugging a mux. Thus it should only care about CO_FL_ERROR |
197 | | * before SC_ST_EST, and after that it must absolutely ignore it since the mux |
198 | | * may hold pending data. This function returns true if such an error was |
199 | | * reported. Both the SC and the CONN must be valid. |
200 | | */ |
201 | | static inline int sc_is_conn_error(const struct stconn *sc) |
202 | 0 | { |
203 | 0 | const struct connection *conn; |
204 | |
|
205 | 0 | if (sc->state >= SC_ST_EST) |
206 | 0 | return 0; |
207 | | |
208 | 0 | conn = __sc_conn(sc); |
209 | 0 | BUG_ON(!conn); |
210 | 0 | return !!(conn->flags & CO_FL_ERROR); |
211 | 0 | } Unexecuted instantiation: cli.c:sc_is_conn_error Unexecuted instantiation: connection.c:sc_is_conn_error Unexecuted instantiation: debug.c:sc_is_conn_error Unexecuted instantiation: errors.c:sc_is_conn_error Unexecuted instantiation: frontend.c:sc_is_conn_error Unexecuted instantiation: haproxy.c:sc_is_conn_error Unexecuted instantiation: http_ana.c:sc_is_conn_error Unexecuted instantiation: http_ext.c:sc_is_conn_error Unexecuted instantiation: log.c:sc_is_conn_error Unexecuted instantiation: mworker.c:sc_is_conn_error Unexecuted instantiation: peers.c:sc_is_conn_error Unexecuted instantiation: pool.c:sc_is_conn_error Unexecuted instantiation: proxy.c:sc_is_conn_error Unexecuted instantiation: resolvers.c:sc_is_conn_error Unexecuted instantiation: ring.c:sc_is_conn_error Unexecuted instantiation: sample.c:sc_is_conn_error Unexecuted instantiation: server.c:sc_is_conn_error Unexecuted instantiation: sink.c:sc_is_conn_error Unexecuted instantiation: stats-html.c:sc_is_conn_error Unexecuted instantiation: stats.c:sc_is_conn_error Unexecuted instantiation: stconn.c:sc_is_conn_error Unexecuted instantiation: stick_table.c:sc_is_conn_error Unexecuted instantiation: stream.c:sc_is_conn_error Unexecuted instantiation: tcp_rules.c:sc_is_conn_error Unexecuted instantiation: tools.c:sc_is_conn_error Unexecuted instantiation: trace.c:sc_is_conn_error Unexecuted instantiation: vars.c:sc_is_conn_error Unexecuted instantiation: activity.c:sc_is_conn_error Unexecuted instantiation: applet.c:sc_is_conn_error Unexecuted instantiation: backend.c:sc_is_conn_error Unexecuted instantiation: dns.c:sc_is_conn_error Unexecuted instantiation: dns_ring.c:sc_is_conn_error Unexecuted instantiation: haterm.c:sc_is_conn_error Unexecuted instantiation: http_fetch.c:sc_is_conn_error Unexecuted instantiation: stats-json.c:sc_is_conn_error Unexecuted instantiation: cache.c:sc_is_conn_error Unexecuted instantiation: flt_spoe.c:sc_is_conn_error |
212 | | |
213 | | /* Try to allocate a buffer for the stream connector's input channel. It relies on |
214 | | * channel_alloc_buffer() for this so it abides by its rules. It returns 0 on |
215 | | * failure, non-zero otherwise. If no buffer is available, the requester, |
216 | | * represented by the <wait> pointer, will be added in the list of objects |
217 | | * waiting for an available buffer, and SC_FL_NEED_BUFF will be set on the |
218 | | * stream connector and SE_FL_HAVE_NO_DATA cleared. The requester will be responsible |
219 | | * for calling this function to try again once woken up. |
220 | | */ |
221 | | static inline int sc_alloc_ibuf(struct stconn *sc, struct buffer_wait *wait) |
222 | 0 | { |
223 | 0 | int ret; |
224 | |
|
225 | 0 | ret = channel_alloc_buffer(sc_ic(sc), wait); |
226 | 0 | if (ret) |
227 | 0 | sc_used_buff(sc); |
228 | 0 | else |
229 | 0 | sc_need_buff(sc); |
230 | |
|
231 | 0 | return ret; |
232 | 0 | } Unexecuted instantiation: cli.c:sc_alloc_ibuf Unexecuted instantiation: connection.c:sc_alloc_ibuf Unexecuted instantiation: debug.c:sc_alloc_ibuf Unexecuted instantiation: errors.c:sc_alloc_ibuf Unexecuted instantiation: frontend.c:sc_alloc_ibuf Unexecuted instantiation: haproxy.c:sc_alloc_ibuf Unexecuted instantiation: http_ana.c:sc_alloc_ibuf Unexecuted instantiation: http_ext.c:sc_alloc_ibuf Unexecuted instantiation: log.c:sc_alloc_ibuf Unexecuted instantiation: mworker.c:sc_alloc_ibuf Unexecuted instantiation: peers.c:sc_alloc_ibuf Unexecuted instantiation: pool.c:sc_alloc_ibuf Unexecuted instantiation: proxy.c:sc_alloc_ibuf Unexecuted instantiation: resolvers.c:sc_alloc_ibuf Unexecuted instantiation: ring.c:sc_alloc_ibuf Unexecuted instantiation: sample.c:sc_alloc_ibuf Unexecuted instantiation: server.c:sc_alloc_ibuf Unexecuted instantiation: sink.c:sc_alloc_ibuf Unexecuted instantiation: stats-html.c:sc_alloc_ibuf Unexecuted instantiation: stats.c:sc_alloc_ibuf Unexecuted instantiation: stconn.c:sc_alloc_ibuf Unexecuted instantiation: stick_table.c:sc_alloc_ibuf Unexecuted instantiation: stream.c:sc_alloc_ibuf Unexecuted instantiation: tcp_rules.c:sc_alloc_ibuf Unexecuted instantiation: tools.c:sc_alloc_ibuf Unexecuted instantiation: trace.c:sc_alloc_ibuf Unexecuted instantiation: vars.c:sc_alloc_ibuf Unexecuted instantiation: activity.c:sc_alloc_ibuf Unexecuted instantiation: applet.c:sc_alloc_ibuf Unexecuted instantiation: backend.c:sc_alloc_ibuf Unexecuted instantiation: dns.c:sc_alloc_ibuf Unexecuted instantiation: dns_ring.c:sc_alloc_ibuf Unexecuted instantiation: haterm.c:sc_alloc_ibuf Unexecuted instantiation: http_fetch.c:sc_alloc_ibuf Unexecuted instantiation: stats-json.c:sc_alloc_ibuf Unexecuted instantiation: cache.c:sc_alloc_ibuf Unexecuted instantiation: flt_spoe.c:sc_alloc_ibuf |
233 | | |
234 | | |
235 | | /* Returns the source address of the stream connector and, if not set, fallbacks on |
236 | | * the session for frontend SC and the server connection for the backend SC. It |
237 | | * returns a const address on success or NULL on failure. |
238 | | */ |
239 | | static inline const struct sockaddr_storage *sc_src(const struct stconn *sc) |
240 | 0 | { |
241 | 0 | if (sc->src) |
242 | 0 | return sc->src; |
243 | 0 | if (!(sc->flags & SC_FL_ISBACK)) |
244 | 0 | return sess_src(strm_sess(__sc_strm(sc))); |
245 | 0 | else { |
246 | 0 | struct connection *conn = sc_conn(sc); |
247 | |
|
248 | 0 | if (conn) |
249 | 0 | return conn_src(conn); |
250 | 0 | } |
251 | 0 | return NULL; |
252 | 0 | } Unexecuted instantiation: cli.c:sc_src Unexecuted instantiation: connection.c:sc_src Unexecuted instantiation: debug.c:sc_src Unexecuted instantiation: errors.c:sc_src Unexecuted instantiation: frontend.c:sc_src Unexecuted instantiation: haproxy.c:sc_src Unexecuted instantiation: http_ana.c:sc_src Unexecuted instantiation: http_ext.c:sc_src Unexecuted instantiation: log.c:sc_src Unexecuted instantiation: mworker.c:sc_src Unexecuted instantiation: peers.c:sc_src Unexecuted instantiation: pool.c:sc_src Unexecuted instantiation: proxy.c:sc_src Unexecuted instantiation: resolvers.c:sc_src Unexecuted instantiation: ring.c:sc_src Unexecuted instantiation: sample.c:sc_src Unexecuted instantiation: server.c:sc_src Unexecuted instantiation: sink.c:sc_src Unexecuted instantiation: stats-html.c:sc_src Unexecuted instantiation: stats.c:sc_src Unexecuted instantiation: stconn.c:sc_src Unexecuted instantiation: stick_table.c:sc_src Unexecuted instantiation: stream.c:sc_src Unexecuted instantiation: tcp_rules.c:sc_src Unexecuted instantiation: tools.c:sc_src Unexecuted instantiation: trace.c:sc_src Unexecuted instantiation: vars.c:sc_src Unexecuted instantiation: activity.c:sc_src Unexecuted instantiation: applet.c:sc_src Unexecuted instantiation: backend.c:sc_src Unexecuted instantiation: dns.c:sc_src Unexecuted instantiation: dns_ring.c:sc_src Unexecuted instantiation: haterm.c:sc_src Unexecuted instantiation: http_fetch.c:sc_src Unexecuted instantiation: stats-json.c:sc_src Unexecuted instantiation: cache.c:sc_src Unexecuted instantiation: flt_spoe.c:sc_src |
253 | | |
254 | | |
255 | | /* Returns the destination address of the stream connector and, if not set, fallbacks |
256 | | * on the session for frontend SC and the server connection for the backend |
257 | | * SC. It returns a const address on success or NULL on failure. |
258 | | */ |
259 | | static inline const struct sockaddr_storage *sc_dst(const struct stconn *sc) |
260 | 0 | { |
261 | 0 | if (sc->dst) |
262 | 0 | return sc->dst; |
263 | 0 | if (!(sc->flags & SC_FL_ISBACK)) |
264 | 0 | return sess_dst(strm_sess(__sc_strm(sc))); |
265 | 0 | else { |
266 | 0 | struct connection *conn = sc_conn(sc); |
267 | |
|
268 | 0 | if (conn) |
269 | 0 | return conn_dst(conn); |
270 | 0 | } |
271 | 0 | return NULL; |
272 | 0 | } Unexecuted instantiation: cli.c:sc_dst Unexecuted instantiation: connection.c:sc_dst Unexecuted instantiation: debug.c:sc_dst Unexecuted instantiation: errors.c:sc_dst Unexecuted instantiation: frontend.c:sc_dst Unexecuted instantiation: haproxy.c:sc_dst Unexecuted instantiation: http_ana.c:sc_dst Unexecuted instantiation: http_ext.c:sc_dst Unexecuted instantiation: log.c:sc_dst Unexecuted instantiation: mworker.c:sc_dst Unexecuted instantiation: peers.c:sc_dst Unexecuted instantiation: pool.c:sc_dst Unexecuted instantiation: proxy.c:sc_dst Unexecuted instantiation: resolvers.c:sc_dst Unexecuted instantiation: ring.c:sc_dst Unexecuted instantiation: sample.c:sc_dst Unexecuted instantiation: server.c:sc_dst Unexecuted instantiation: sink.c:sc_dst Unexecuted instantiation: stats-html.c:sc_dst Unexecuted instantiation: stats.c:sc_dst Unexecuted instantiation: stconn.c:sc_dst Unexecuted instantiation: stick_table.c:sc_dst Unexecuted instantiation: stream.c:sc_dst Unexecuted instantiation: tcp_rules.c:sc_dst Unexecuted instantiation: tools.c:sc_dst Unexecuted instantiation: trace.c:sc_dst Unexecuted instantiation: vars.c:sc_dst Unexecuted instantiation: activity.c:sc_dst Unexecuted instantiation: applet.c:sc_dst Unexecuted instantiation: backend.c:sc_dst Unexecuted instantiation: dns.c:sc_dst Unexecuted instantiation: dns_ring.c:sc_dst Unexecuted instantiation: haterm.c:sc_dst Unexecuted instantiation: http_fetch.c:sc_dst Unexecuted instantiation: stats-json.c:sc_dst Unexecuted instantiation: cache.c:sc_dst Unexecuted instantiation: flt_spoe.c:sc_dst |
273 | | |
274 | | /* Retrieves the source address of the stream connector. Returns non-zero on success |
275 | | * or zero on failure. The operation is only performed once and the address is |
276 | | * stored in the stream connector for future use. On the first call, the stream connector |
277 | | * source address is copied from the session one for frontend SC and the server |
278 | | * connection for the backend SC. |
279 | | */ |
280 | | static inline int sc_get_src(struct stconn *sc) |
281 | 0 | { |
282 | 0 | const struct sockaddr_storage *src = NULL; |
283 | 0 |
|
284 | 0 | if (sc->src) |
285 | 0 | return 1; |
286 | 0 |
|
287 | 0 | if (!(sc->flags & SC_FL_ISBACK)) |
288 | 0 | src = sess_src(strm_sess(__sc_strm(sc))); |
289 | 0 | else { |
290 | 0 | struct connection *conn = sc_conn(sc); |
291 | 0 |
|
292 | 0 | if (conn) |
293 | 0 | src = conn_src(conn); |
294 | 0 | } |
295 | 0 | if (!src) |
296 | 0 | return 0; |
297 | 0 |
|
298 | 0 | if (!sockaddr_alloc(&sc->src, src, sizeof(*src))) |
299 | 0 | return 0; |
300 | 0 |
|
301 | 0 | return 1; |
302 | 0 | } Unexecuted instantiation: cli.c:sc_get_src Unexecuted instantiation: connection.c:sc_get_src Unexecuted instantiation: debug.c:sc_get_src Unexecuted instantiation: errors.c:sc_get_src Unexecuted instantiation: frontend.c:sc_get_src Unexecuted instantiation: haproxy.c:sc_get_src Unexecuted instantiation: http_ana.c:sc_get_src Unexecuted instantiation: http_ext.c:sc_get_src Unexecuted instantiation: log.c:sc_get_src Unexecuted instantiation: mworker.c:sc_get_src Unexecuted instantiation: peers.c:sc_get_src Unexecuted instantiation: pool.c:sc_get_src Unexecuted instantiation: proxy.c:sc_get_src Unexecuted instantiation: resolvers.c:sc_get_src Unexecuted instantiation: ring.c:sc_get_src Unexecuted instantiation: sample.c:sc_get_src Unexecuted instantiation: server.c:sc_get_src Unexecuted instantiation: sink.c:sc_get_src Unexecuted instantiation: stats-html.c:sc_get_src Unexecuted instantiation: stats.c:sc_get_src Unexecuted instantiation: stconn.c:sc_get_src Unexecuted instantiation: stick_table.c:sc_get_src Unexecuted instantiation: stream.c:sc_get_src Unexecuted instantiation: tcp_rules.c:sc_get_src Unexecuted instantiation: tools.c:sc_get_src Unexecuted instantiation: trace.c:sc_get_src Unexecuted instantiation: vars.c:sc_get_src Unexecuted instantiation: activity.c:sc_get_src Unexecuted instantiation: applet.c:sc_get_src Unexecuted instantiation: backend.c:sc_get_src Unexecuted instantiation: dns.c:sc_get_src Unexecuted instantiation: dns_ring.c:sc_get_src Unexecuted instantiation: haterm.c:sc_get_src Unexecuted instantiation: http_fetch.c:sc_get_src Unexecuted instantiation: stats-json.c:sc_get_src Unexecuted instantiation: cache.c:sc_get_src Unexecuted instantiation: flt_spoe.c:sc_get_src |
303 | | |
304 | | /* Retrieves the destination address of the stream connector. Returns non-zero on |
305 | | * success or zero on failure. The operation is only performed once and the |
306 | | * address is stored in the stream connector for future use. On the first call, the |
307 | | * stream connector destination address is copied from the session one for frontend |
308 | | * SC and the server connection for the backend SC. |
309 | | */ |
310 | | static inline int sc_get_dst(struct stconn *sc) |
311 | 0 | { |
312 | 0 | const struct sockaddr_storage *dst = NULL; |
313 | 0 |
|
314 | 0 | if (sc->dst) |
315 | 0 | return 1; |
316 | 0 |
|
317 | 0 | if (!(sc->flags & SC_FL_ISBACK)) |
318 | 0 | dst = sess_dst(strm_sess(__sc_strm(sc))); |
319 | 0 | else { |
320 | 0 | struct connection *conn = sc_conn(sc); |
321 | 0 |
|
322 | 0 | if (conn) |
323 | 0 | dst = conn_dst(conn); |
324 | 0 | } |
325 | 0 | if (!dst) |
326 | 0 | return 0; |
327 | 0 |
|
328 | 0 | if (!sockaddr_alloc(&sc->dst, dst, sizeof(*dst))) |
329 | 0 | return 0; |
330 | 0 |
|
331 | 0 | return 1; |
332 | 0 | } Unexecuted instantiation: cli.c:sc_get_dst Unexecuted instantiation: connection.c:sc_get_dst Unexecuted instantiation: debug.c:sc_get_dst Unexecuted instantiation: errors.c:sc_get_dst Unexecuted instantiation: frontend.c:sc_get_dst Unexecuted instantiation: haproxy.c:sc_get_dst Unexecuted instantiation: http_ana.c:sc_get_dst Unexecuted instantiation: http_ext.c:sc_get_dst Unexecuted instantiation: log.c:sc_get_dst Unexecuted instantiation: mworker.c:sc_get_dst Unexecuted instantiation: peers.c:sc_get_dst Unexecuted instantiation: pool.c:sc_get_dst Unexecuted instantiation: proxy.c:sc_get_dst Unexecuted instantiation: resolvers.c:sc_get_dst Unexecuted instantiation: ring.c:sc_get_dst Unexecuted instantiation: sample.c:sc_get_dst Unexecuted instantiation: server.c:sc_get_dst Unexecuted instantiation: sink.c:sc_get_dst Unexecuted instantiation: stats-html.c:sc_get_dst Unexecuted instantiation: stats.c:sc_get_dst Unexecuted instantiation: stconn.c:sc_get_dst Unexecuted instantiation: stick_table.c:sc_get_dst Unexecuted instantiation: stream.c:sc_get_dst Unexecuted instantiation: tcp_rules.c:sc_get_dst Unexecuted instantiation: tools.c:sc_get_dst Unexecuted instantiation: trace.c:sc_get_dst Unexecuted instantiation: vars.c:sc_get_dst Unexecuted instantiation: activity.c:sc_get_dst Unexecuted instantiation: applet.c:sc_get_dst Unexecuted instantiation: backend.c:sc_get_dst Unexecuted instantiation: dns.c:sc_get_dst Unexecuted instantiation: dns_ring.c:sc_get_dst Unexecuted instantiation: haterm.c:sc_get_dst Unexecuted instantiation: http_fetch.c:sc_get_dst Unexecuted instantiation: stats-json.c:sc_get_dst Unexecuted instantiation: cache.c:sc_get_dst Unexecuted instantiation: flt_spoe.c:sc_get_dst |
333 | | |
334 | | |
335 | | /* Marks on the stream connector that next shutdown must kill the whole connection */ |
336 | | static inline void sc_must_kill_conn(struct stconn *sc) |
337 | 0 | { |
338 | 0 | sc_ep_set(sc, SE_FL_KILL_CONN); |
339 | 0 | } Unexecuted instantiation: cli.c:sc_must_kill_conn Unexecuted instantiation: connection.c:sc_must_kill_conn Unexecuted instantiation: debug.c:sc_must_kill_conn Unexecuted instantiation: errors.c:sc_must_kill_conn Unexecuted instantiation: frontend.c:sc_must_kill_conn Unexecuted instantiation: haproxy.c:sc_must_kill_conn Unexecuted instantiation: http_ana.c:sc_must_kill_conn Unexecuted instantiation: http_ext.c:sc_must_kill_conn Unexecuted instantiation: log.c:sc_must_kill_conn Unexecuted instantiation: mworker.c:sc_must_kill_conn Unexecuted instantiation: peers.c:sc_must_kill_conn Unexecuted instantiation: pool.c:sc_must_kill_conn Unexecuted instantiation: proxy.c:sc_must_kill_conn Unexecuted instantiation: resolvers.c:sc_must_kill_conn Unexecuted instantiation: ring.c:sc_must_kill_conn Unexecuted instantiation: sample.c:sc_must_kill_conn Unexecuted instantiation: server.c:sc_must_kill_conn Unexecuted instantiation: sink.c:sc_must_kill_conn Unexecuted instantiation: stats-html.c:sc_must_kill_conn Unexecuted instantiation: stats.c:sc_must_kill_conn Unexecuted instantiation: stconn.c:sc_must_kill_conn Unexecuted instantiation: stick_table.c:sc_must_kill_conn Unexecuted instantiation: stream.c:sc_must_kill_conn Unexecuted instantiation: tcp_rules.c:sc_must_kill_conn Unexecuted instantiation: tools.c:sc_must_kill_conn Unexecuted instantiation: trace.c:sc_must_kill_conn Unexecuted instantiation: vars.c:sc_must_kill_conn Unexecuted instantiation: activity.c:sc_must_kill_conn Unexecuted instantiation: applet.c:sc_must_kill_conn Unexecuted instantiation: backend.c:sc_must_kill_conn Unexecuted instantiation: dns.c:sc_must_kill_conn Unexecuted instantiation: dns_ring.c:sc_must_kill_conn Unexecuted instantiation: haterm.c:sc_must_kill_conn Unexecuted instantiation: http_fetch.c:sc_must_kill_conn Unexecuted instantiation: stats-json.c:sc_must_kill_conn Unexecuted instantiation: cache.c:sc_must_kill_conn Unexecuted instantiation: flt_spoe.c:sc_must_kill_conn |
340 | | |
341 | | |
342 | | /* Returns non-zero if the stream connector is allowed to receive from the |
343 | | * endpoint, which means that no flag indicating a blocked channel, lack of |
344 | | * buffer or room is set, and that the endpoint is not waiting for the |
345 | | * application to complete a connection setup on the other side, and that |
346 | | * the stream's channel is not shut for reads. This is only used by stream |
347 | | * applications. |
348 | | */ |
349 | | __attribute__((warn_unused_result)) |
350 | | static inline int sc_is_recv_allowed(const struct stconn *sc) |
351 | 0 | { |
352 | 0 | if (sc->flags & (SC_FL_ABRT_DONE|SC_FL_EOS)) |
353 | 0 | return 0; |
354 | | |
355 | 0 | if (sc_ep_test(sc, SE_FL_APPLET_NEED_CONN)) |
356 | 0 | return 0; |
357 | | |
358 | 0 | if (sc_ep_test(sc, SE_FL_HAVE_NO_DATA)) |
359 | 0 | return 0; |
360 | | |
361 | 0 | if (sc_ep_test(sc, SE_FL_MAY_FASTFWD_PROD) && (sc_opposite(sc)->sedesc->iobuf.flags & IOBUF_FL_FF_BLOCKED)) |
362 | 0 | return 0; |
363 | | |
364 | 0 | return !(sc->flags & (SC_FL_WONT_READ|SC_FL_NEED_BUFF|SC_FL_NEED_ROOM)); |
365 | 0 | } Unexecuted instantiation: cli.c:sc_is_recv_allowed Unexecuted instantiation: connection.c:sc_is_recv_allowed Unexecuted instantiation: debug.c:sc_is_recv_allowed Unexecuted instantiation: errors.c:sc_is_recv_allowed Unexecuted instantiation: frontend.c:sc_is_recv_allowed Unexecuted instantiation: haproxy.c:sc_is_recv_allowed Unexecuted instantiation: http_ana.c:sc_is_recv_allowed Unexecuted instantiation: http_ext.c:sc_is_recv_allowed Unexecuted instantiation: log.c:sc_is_recv_allowed Unexecuted instantiation: mworker.c:sc_is_recv_allowed Unexecuted instantiation: peers.c:sc_is_recv_allowed Unexecuted instantiation: pool.c:sc_is_recv_allowed Unexecuted instantiation: proxy.c:sc_is_recv_allowed Unexecuted instantiation: resolvers.c:sc_is_recv_allowed Unexecuted instantiation: ring.c:sc_is_recv_allowed Unexecuted instantiation: sample.c:sc_is_recv_allowed Unexecuted instantiation: server.c:sc_is_recv_allowed Unexecuted instantiation: sink.c:sc_is_recv_allowed Unexecuted instantiation: stats-html.c:sc_is_recv_allowed Unexecuted instantiation: stats.c:sc_is_recv_allowed Unexecuted instantiation: stconn.c:sc_is_recv_allowed Unexecuted instantiation: stick_table.c:sc_is_recv_allowed Unexecuted instantiation: stream.c:sc_is_recv_allowed Unexecuted instantiation: tcp_rules.c:sc_is_recv_allowed Unexecuted instantiation: tools.c:sc_is_recv_allowed Unexecuted instantiation: trace.c:sc_is_recv_allowed Unexecuted instantiation: vars.c:sc_is_recv_allowed Unexecuted instantiation: activity.c:sc_is_recv_allowed Unexecuted instantiation: applet.c:sc_is_recv_allowed Unexecuted instantiation: backend.c:sc_is_recv_allowed Unexecuted instantiation: dns.c:sc_is_recv_allowed Unexecuted instantiation: dns_ring.c:sc_is_recv_allowed Unexecuted instantiation: haterm.c:sc_is_recv_allowed Unexecuted instantiation: http_fetch.c:sc_is_recv_allowed Unexecuted instantiation: stats-json.c:sc_is_recv_allowed Unexecuted instantiation: cache.c:sc_is_recv_allowed Unexecuted instantiation: flt_spoe.c:sc_is_recv_allowed |
366 | | |
367 | | |
368 | | /* Perform a synchronous receive using the right version, depending the endpoing |
369 | | * is a connection or an applet. |
370 | | */ |
371 | | static inline int sc_sync_recv(struct stconn *sc) |
372 | 0 | { |
373 | 0 | if (sc_ep_test(sc, SE_FL_T_MUX)) |
374 | 0 | return sc_conn_sync_recv(sc); |
375 | 0 | else if (sc_ep_test(sc, SE_FL_T_APPLET)) |
376 | 0 | return sc_applet_sync_recv(sc); |
377 | 0 | return 0; |
378 | 0 | } Unexecuted instantiation: cli.c:sc_sync_recv Unexecuted instantiation: connection.c:sc_sync_recv Unexecuted instantiation: debug.c:sc_sync_recv Unexecuted instantiation: errors.c:sc_sync_recv Unexecuted instantiation: frontend.c:sc_sync_recv Unexecuted instantiation: haproxy.c:sc_sync_recv Unexecuted instantiation: http_ana.c:sc_sync_recv Unexecuted instantiation: http_ext.c:sc_sync_recv Unexecuted instantiation: log.c:sc_sync_recv Unexecuted instantiation: mworker.c:sc_sync_recv Unexecuted instantiation: peers.c:sc_sync_recv Unexecuted instantiation: pool.c:sc_sync_recv Unexecuted instantiation: proxy.c:sc_sync_recv Unexecuted instantiation: resolvers.c:sc_sync_recv Unexecuted instantiation: ring.c:sc_sync_recv Unexecuted instantiation: sample.c:sc_sync_recv Unexecuted instantiation: server.c:sc_sync_recv Unexecuted instantiation: sink.c:sc_sync_recv Unexecuted instantiation: stats-html.c:sc_sync_recv Unexecuted instantiation: stats.c:sc_sync_recv Unexecuted instantiation: stconn.c:sc_sync_recv Unexecuted instantiation: stick_table.c:sc_sync_recv Unexecuted instantiation: stream.c:sc_sync_recv Unexecuted instantiation: tcp_rules.c:sc_sync_recv Unexecuted instantiation: tools.c:sc_sync_recv Unexecuted instantiation: trace.c:sc_sync_recv Unexecuted instantiation: vars.c:sc_sync_recv Unexecuted instantiation: activity.c:sc_sync_recv Unexecuted instantiation: applet.c:sc_sync_recv Unexecuted instantiation: backend.c:sc_sync_recv Unexecuted instantiation: dns.c:sc_sync_recv Unexecuted instantiation: dns_ring.c:sc_sync_recv Unexecuted instantiation: haterm.c:sc_sync_recv Unexecuted instantiation: http_fetch.c:sc_sync_recv Unexecuted instantiation: stats-json.c:sc_sync_recv Unexecuted instantiation: cache.c:sc_sync_recv Unexecuted instantiation: flt_spoe.c:sc_sync_recv |
379 | | |
380 | | /* Perform a synchronous send using the right version, depending the endpoing is |
381 | | * a connection or an applet. |
382 | | */ |
383 | | static inline int sc_sync_send(struct stconn *sc, unsigned cnt) |
384 | 0 | { |
385 | 0 | if (!sc_ep_test(sc, SE_FL_T_MUX)) |
386 | 0 | return 0; |
387 | 0 | if (cnt >= 2 && co_data(sc_oc(sc))) { |
388 | 0 | task_wakeup(__sc_strm(sc)->task, TASK_WOKEN_MSG); |
389 | 0 | return 0; |
390 | 0 | } |
391 | 0 | return sc_conn_sync_send(sc); |
392 | 0 | } Unexecuted instantiation: cli.c:sc_sync_send Unexecuted instantiation: connection.c:sc_sync_send Unexecuted instantiation: debug.c:sc_sync_send Unexecuted instantiation: errors.c:sc_sync_send Unexecuted instantiation: frontend.c:sc_sync_send Unexecuted instantiation: haproxy.c:sc_sync_send Unexecuted instantiation: http_ana.c:sc_sync_send Unexecuted instantiation: http_ext.c:sc_sync_send Unexecuted instantiation: log.c:sc_sync_send Unexecuted instantiation: mworker.c:sc_sync_send Unexecuted instantiation: peers.c:sc_sync_send Unexecuted instantiation: pool.c:sc_sync_send Unexecuted instantiation: proxy.c:sc_sync_send Unexecuted instantiation: resolvers.c:sc_sync_send Unexecuted instantiation: ring.c:sc_sync_send Unexecuted instantiation: sample.c:sc_sync_send Unexecuted instantiation: server.c:sc_sync_send Unexecuted instantiation: sink.c:sc_sync_send Unexecuted instantiation: stats-html.c:sc_sync_send Unexecuted instantiation: stats.c:sc_sync_send Unexecuted instantiation: stconn.c:sc_sync_send Unexecuted instantiation: stick_table.c:sc_sync_send Unexecuted instantiation: stream.c:sc_sync_send Unexecuted instantiation: tcp_rules.c:sc_sync_send Unexecuted instantiation: tools.c:sc_sync_send Unexecuted instantiation: trace.c:sc_sync_send Unexecuted instantiation: vars.c:sc_sync_send Unexecuted instantiation: activity.c:sc_sync_send Unexecuted instantiation: applet.c:sc_sync_send Unexecuted instantiation: backend.c:sc_sync_send Unexecuted instantiation: dns.c:sc_sync_send Unexecuted instantiation: dns_ring.c:sc_sync_send Unexecuted instantiation: haterm.c:sc_sync_send Unexecuted instantiation: http_fetch.c:sc_sync_send Unexecuted instantiation: stats-json.c:sc_sync_send Unexecuted instantiation: cache.c:sc_sync_send Unexecuted instantiation: flt_spoe.c:sc_sync_send |
393 | | |
394 | | /* Combines both sc_update_rx() and sc_update_tx() at once */ |
395 | | static inline void sc_update(struct stconn *sc) |
396 | 0 | { |
397 | 0 | sc_update_rx(sc); |
398 | 0 | sc_update_tx(sc); |
399 | 0 | } Unexecuted instantiation: cli.c:sc_update Unexecuted instantiation: connection.c:sc_update Unexecuted instantiation: debug.c:sc_update Unexecuted instantiation: errors.c:sc_update Unexecuted instantiation: frontend.c:sc_update Unexecuted instantiation: haproxy.c:sc_update Unexecuted instantiation: http_ana.c:sc_update Unexecuted instantiation: http_ext.c:sc_update Unexecuted instantiation: log.c:sc_update Unexecuted instantiation: mworker.c:sc_update Unexecuted instantiation: peers.c:sc_update Unexecuted instantiation: pool.c:sc_update Unexecuted instantiation: proxy.c:sc_update Unexecuted instantiation: resolvers.c:sc_update Unexecuted instantiation: ring.c:sc_update Unexecuted instantiation: sample.c:sc_update Unexecuted instantiation: server.c:sc_update Unexecuted instantiation: sink.c:sc_update Unexecuted instantiation: stats-html.c:sc_update Unexecuted instantiation: stats.c:sc_update Unexecuted instantiation: stconn.c:sc_update Unexecuted instantiation: stick_table.c:sc_update Unexecuted instantiation: stream.c:sc_update Unexecuted instantiation: tcp_rules.c:sc_update Unexecuted instantiation: tools.c:sc_update Unexecuted instantiation: trace.c:sc_update Unexecuted instantiation: vars.c:sc_update Unexecuted instantiation: activity.c:sc_update Unexecuted instantiation: applet.c:sc_update Unexecuted instantiation: backend.c:sc_update Unexecuted instantiation: dns.c:sc_update Unexecuted instantiation: dns_ring.c:sc_update Unexecuted instantiation: haterm.c:sc_update Unexecuted instantiation: http_fetch.c:sc_update Unexecuted instantiation: stats-json.c:sc_update Unexecuted instantiation: cache.c:sc_update Unexecuted instantiation: flt_spoe.c:sc_update |
400 | | |
401 | | /* for debugging, reports the stream connector state name */ |
402 | | static inline const char *sc_state_str(int state) |
403 | 0 | { |
404 | 0 | switch (state) { |
405 | 0 | case SC_ST_INI: return "INI"; |
406 | 0 | case SC_ST_REQ: return "REQ"; |
407 | 0 | case SC_ST_QUE: return "QUE"; |
408 | 0 | case SC_ST_TAR: return "TAR"; |
409 | 0 | case SC_ST_ASS: return "ASS"; |
410 | 0 | case SC_ST_CON: return "CON"; |
411 | 0 | case SC_ST_CER: return "CER"; |
412 | 0 | case SC_ST_RDY: return "RDY"; |
413 | 0 | case SC_ST_EST: return "EST"; |
414 | 0 | case SC_ST_DIS: return "DIS"; |
415 | 0 | case SC_ST_CLO: return "CLO"; |
416 | 0 | default: return "???"; |
417 | 0 | } |
418 | 0 | } Unexecuted instantiation: cli.c:sc_state_str Unexecuted instantiation: connection.c:sc_state_str Unexecuted instantiation: debug.c:sc_state_str Unexecuted instantiation: errors.c:sc_state_str Unexecuted instantiation: frontend.c:sc_state_str Unexecuted instantiation: haproxy.c:sc_state_str Unexecuted instantiation: http_ana.c:sc_state_str Unexecuted instantiation: http_ext.c:sc_state_str Unexecuted instantiation: log.c:sc_state_str Unexecuted instantiation: mworker.c:sc_state_str Unexecuted instantiation: peers.c:sc_state_str Unexecuted instantiation: pool.c:sc_state_str Unexecuted instantiation: proxy.c:sc_state_str Unexecuted instantiation: resolvers.c:sc_state_str Unexecuted instantiation: ring.c:sc_state_str Unexecuted instantiation: sample.c:sc_state_str Unexecuted instantiation: server.c:sc_state_str Unexecuted instantiation: sink.c:sc_state_str Unexecuted instantiation: stats-html.c:sc_state_str Unexecuted instantiation: stats.c:sc_state_str Unexecuted instantiation: stconn.c:sc_state_str Unexecuted instantiation: stick_table.c:sc_state_str Unexecuted instantiation: stream.c:sc_state_str Unexecuted instantiation: tcp_rules.c:sc_state_str Unexecuted instantiation: tools.c:sc_state_str Unexecuted instantiation: trace.c:sc_state_str Unexecuted instantiation: vars.c:sc_state_str Unexecuted instantiation: activity.c:sc_state_str Unexecuted instantiation: applet.c:sc_state_str Unexecuted instantiation: backend.c:sc_state_str Unexecuted instantiation: dns.c:sc_state_str Unexecuted instantiation: dns_ring.c:sc_state_str Unexecuted instantiation: haterm.c:sc_state_str Unexecuted instantiation: http_fetch.c:sc_state_str Unexecuted instantiation: stats-json.c:sc_state_str Unexecuted instantiation: cache.c:sc_state_str Unexecuted instantiation: flt_spoe.c:sc_state_str |
419 | | |
420 | | /* indicates if the connector may send data to the endpoint, that is, the |
421 | | * endpoint is both willing to receive data and ready to do so. This is only |
422 | | * used with applets so there's always a stream attached to this connector. |
423 | | */ |
424 | | __attribute__((warn_unused_result)) |
425 | | static inline int sc_is_send_allowed(const struct stconn *sc) |
426 | 0 | { |
427 | 0 | if (sc->flags & SC_FL_SHUT_DONE) |
428 | 0 | return 0; |
429 | | |
430 | 0 | if (!sc_appctx(sc) || !(__sc_appctx(sc)->applet->flags & APPLET_FL_NEW_API)) |
431 | 0 | return !sc_ep_test(sc, SE_FL_WAIT_DATA | SE_FL_WONT_CONSUME); |
432 | | |
433 | 0 | if (sc_ep_test(sc, SE_FL_WONT_CONSUME)) |
434 | 0 | return 0; |
435 | | |
436 | 0 | if (sc_ep_test(sc, SE_FL_WAIT_DATA)) { |
437 | 0 | if (__sc_appctx(sc)->flags & (APPCTX_FL_INBLK_FULL|APPCTX_FL_INBLK_ALLOC)) |
438 | 0 | return 0; |
439 | 0 | if (!co_data(sc_oc(sc))) |
440 | 0 | return 0; |
441 | 0 | } |
442 | 0 | return 1; |
443 | 0 | } Unexecuted instantiation: cli.c:sc_is_send_allowed Unexecuted instantiation: connection.c:sc_is_send_allowed Unexecuted instantiation: debug.c:sc_is_send_allowed Unexecuted instantiation: errors.c:sc_is_send_allowed Unexecuted instantiation: frontend.c:sc_is_send_allowed Unexecuted instantiation: haproxy.c:sc_is_send_allowed Unexecuted instantiation: http_ana.c:sc_is_send_allowed Unexecuted instantiation: http_ext.c:sc_is_send_allowed Unexecuted instantiation: log.c:sc_is_send_allowed Unexecuted instantiation: mworker.c:sc_is_send_allowed Unexecuted instantiation: peers.c:sc_is_send_allowed Unexecuted instantiation: pool.c:sc_is_send_allowed Unexecuted instantiation: proxy.c:sc_is_send_allowed Unexecuted instantiation: resolvers.c:sc_is_send_allowed Unexecuted instantiation: ring.c:sc_is_send_allowed Unexecuted instantiation: sample.c:sc_is_send_allowed Unexecuted instantiation: server.c:sc_is_send_allowed Unexecuted instantiation: sink.c:sc_is_send_allowed Unexecuted instantiation: stats-html.c:sc_is_send_allowed Unexecuted instantiation: stats.c:sc_is_send_allowed Unexecuted instantiation: stconn.c:sc_is_send_allowed Unexecuted instantiation: stick_table.c:sc_is_send_allowed Unexecuted instantiation: stream.c:sc_is_send_allowed Unexecuted instantiation: tcp_rules.c:sc_is_send_allowed Unexecuted instantiation: tools.c:sc_is_send_allowed Unexecuted instantiation: trace.c:sc_is_send_allowed Unexecuted instantiation: vars.c:sc_is_send_allowed Unexecuted instantiation: activity.c:sc_is_send_allowed Unexecuted instantiation: applet.c:sc_is_send_allowed Unexecuted instantiation: backend.c:sc_is_send_allowed Unexecuted instantiation: dns.c:sc_is_send_allowed Unexecuted instantiation: dns_ring.c:sc_is_send_allowed Unexecuted instantiation: haterm.c:sc_is_send_allowed Unexecuted instantiation: http_fetch.c:sc_is_send_allowed Unexecuted instantiation: stats-json.c:sc_is_send_allowed Unexecuted instantiation: cache.c:sc_is_send_allowed Unexecuted instantiation: flt_spoe.c:sc_is_send_allowed |
444 | | |
445 | | static inline int sc_rcv_may_expire(const struct stconn *sc) |
446 | 0 | { |
447 | 0 | if ((sc->flags & (SC_FL_ABRT_DONE|SC_FL_EOS)) || (sc_ic(sc)->flags & CF_READ_TIMEOUT)) |
448 | 0 | return 0; |
449 | 0 | if (sc->flags & (SC_FL_EOI|SC_FL_WONT_READ|SC_FL_NEED_BUFF|SC_FL_NEED_ROOM)) |
450 | 0 | return 0; |
451 | 0 | if (sc_ep_test(sc, SE_FL_APPLET_NEED_CONN) || sc_ep_test(sc_opposite(sc), SE_FL_EXP_NO_DATA)) |
452 | 0 | return 0; |
453 | 0 | return 1; |
454 | 0 | } Unexecuted instantiation: cli.c:sc_rcv_may_expire Unexecuted instantiation: connection.c:sc_rcv_may_expire Unexecuted instantiation: debug.c:sc_rcv_may_expire Unexecuted instantiation: errors.c:sc_rcv_may_expire Unexecuted instantiation: frontend.c:sc_rcv_may_expire Unexecuted instantiation: haproxy.c:sc_rcv_may_expire Unexecuted instantiation: http_ana.c:sc_rcv_may_expire Unexecuted instantiation: http_ext.c:sc_rcv_may_expire Unexecuted instantiation: log.c:sc_rcv_may_expire Unexecuted instantiation: mworker.c:sc_rcv_may_expire Unexecuted instantiation: peers.c:sc_rcv_may_expire Unexecuted instantiation: pool.c:sc_rcv_may_expire Unexecuted instantiation: proxy.c:sc_rcv_may_expire Unexecuted instantiation: resolvers.c:sc_rcv_may_expire Unexecuted instantiation: ring.c:sc_rcv_may_expire Unexecuted instantiation: sample.c:sc_rcv_may_expire Unexecuted instantiation: server.c:sc_rcv_may_expire Unexecuted instantiation: sink.c:sc_rcv_may_expire Unexecuted instantiation: stats-html.c:sc_rcv_may_expire Unexecuted instantiation: stats.c:sc_rcv_may_expire Unexecuted instantiation: stconn.c:sc_rcv_may_expire Unexecuted instantiation: stick_table.c:sc_rcv_may_expire Unexecuted instantiation: stream.c:sc_rcv_may_expire Unexecuted instantiation: tcp_rules.c:sc_rcv_may_expire Unexecuted instantiation: tools.c:sc_rcv_may_expire Unexecuted instantiation: trace.c:sc_rcv_may_expire Unexecuted instantiation: vars.c:sc_rcv_may_expire Unexecuted instantiation: activity.c:sc_rcv_may_expire Unexecuted instantiation: applet.c:sc_rcv_may_expire Unexecuted instantiation: backend.c:sc_rcv_may_expire Unexecuted instantiation: dns.c:sc_rcv_may_expire Unexecuted instantiation: dns_ring.c:sc_rcv_may_expire Unexecuted instantiation: haterm.c:sc_rcv_may_expire Unexecuted instantiation: http_fetch.c:sc_rcv_may_expire Unexecuted instantiation: stats-json.c:sc_rcv_may_expire Unexecuted instantiation: cache.c:sc_rcv_may_expire Unexecuted instantiation: flt_spoe.c:sc_rcv_may_expire |
455 | | |
456 | | static inline int sc_snd_may_expire(const struct stconn *sc) |
457 | 0 | { |
458 | 0 | if ((sc->flags & SC_FL_SHUT_DONE) || (sc_oc(sc)->flags & CF_WRITE_TIMEOUT)) |
459 | 0 | return 0; |
460 | 0 | if (sc_ep_test(sc, SE_FL_WONT_CONSUME)) |
461 | 0 | return 0; |
462 | 0 | return 1; |
463 | 0 | } Unexecuted instantiation: cli.c:sc_snd_may_expire Unexecuted instantiation: connection.c:sc_snd_may_expire Unexecuted instantiation: debug.c:sc_snd_may_expire Unexecuted instantiation: errors.c:sc_snd_may_expire Unexecuted instantiation: frontend.c:sc_snd_may_expire Unexecuted instantiation: haproxy.c:sc_snd_may_expire Unexecuted instantiation: http_ana.c:sc_snd_may_expire Unexecuted instantiation: http_ext.c:sc_snd_may_expire Unexecuted instantiation: log.c:sc_snd_may_expire Unexecuted instantiation: mworker.c:sc_snd_may_expire Unexecuted instantiation: peers.c:sc_snd_may_expire Unexecuted instantiation: pool.c:sc_snd_may_expire Unexecuted instantiation: proxy.c:sc_snd_may_expire Unexecuted instantiation: resolvers.c:sc_snd_may_expire Unexecuted instantiation: ring.c:sc_snd_may_expire Unexecuted instantiation: sample.c:sc_snd_may_expire Unexecuted instantiation: server.c:sc_snd_may_expire Unexecuted instantiation: sink.c:sc_snd_may_expire Unexecuted instantiation: stats-html.c:sc_snd_may_expire Unexecuted instantiation: stats.c:sc_snd_may_expire Unexecuted instantiation: stconn.c:sc_snd_may_expire Unexecuted instantiation: stick_table.c:sc_snd_may_expire Unexecuted instantiation: stream.c:sc_snd_may_expire Unexecuted instantiation: tcp_rules.c:sc_snd_may_expire Unexecuted instantiation: tools.c:sc_snd_may_expire Unexecuted instantiation: trace.c:sc_snd_may_expire Unexecuted instantiation: vars.c:sc_snd_may_expire Unexecuted instantiation: activity.c:sc_snd_may_expire Unexecuted instantiation: applet.c:sc_snd_may_expire Unexecuted instantiation: backend.c:sc_snd_may_expire Unexecuted instantiation: dns.c:sc_snd_may_expire Unexecuted instantiation: dns_ring.c:sc_snd_may_expire Unexecuted instantiation: haterm.c:sc_snd_may_expire Unexecuted instantiation: http_fetch.c:sc_snd_may_expire Unexecuted instantiation: stats-json.c:sc_snd_may_expire Unexecuted instantiation: cache.c:sc_snd_may_expire Unexecuted instantiation: flt_spoe.c:sc_snd_may_expire |
464 | | |
465 | | static forceinline int sc_ep_rcv_ex(const struct stconn *sc) |
466 | 0 | { |
467 | 0 | return ((tick_isset(sc->sedesc->lra) && sc_rcv_may_expire(sc)) |
468 | 0 | ? tick_add_ifset(sc->sedesc->lra, sc->ioto) |
469 | 0 | : TICK_ETERNITY); |
470 | 0 | } Unexecuted instantiation: cli.c:sc_ep_rcv_ex Unexecuted instantiation: connection.c:sc_ep_rcv_ex Unexecuted instantiation: debug.c:sc_ep_rcv_ex Unexecuted instantiation: errors.c:sc_ep_rcv_ex Unexecuted instantiation: frontend.c:sc_ep_rcv_ex Unexecuted instantiation: haproxy.c:sc_ep_rcv_ex Unexecuted instantiation: http_ana.c:sc_ep_rcv_ex Unexecuted instantiation: http_ext.c:sc_ep_rcv_ex Unexecuted instantiation: log.c:sc_ep_rcv_ex Unexecuted instantiation: mworker.c:sc_ep_rcv_ex Unexecuted instantiation: peers.c:sc_ep_rcv_ex Unexecuted instantiation: pool.c:sc_ep_rcv_ex Unexecuted instantiation: proxy.c:sc_ep_rcv_ex Unexecuted instantiation: resolvers.c:sc_ep_rcv_ex Unexecuted instantiation: ring.c:sc_ep_rcv_ex Unexecuted instantiation: sample.c:sc_ep_rcv_ex Unexecuted instantiation: server.c:sc_ep_rcv_ex Unexecuted instantiation: sink.c:sc_ep_rcv_ex Unexecuted instantiation: stats-html.c:sc_ep_rcv_ex Unexecuted instantiation: stats.c:sc_ep_rcv_ex Unexecuted instantiation: stconn.c:sc_ep_rcv_ex Unexecuted instantiation: stick_table.c:sc_ep_rcv_ex Unexecuted instantiation: stream.c:sc_ep_rcv_ex Unexecuted instantiation: tcp_rules.c:sc_ep_rcv_ex Unexecuted instantiation: tools.c:sc_ep_rcv_ex Unexecuted instantiation: trace.c:sc_ep_rcv_ex Unexecuted instantiation: vars.c:sc_ep_rcv_ex Unexecuted instantiation: activity.c:sc_ep_rcv_ex Unexecuted instantiation: applet.c:sc_ep_rcv_ex Unexecuted instantiation: backend.c:sc_ep_rcv_ex Unexecuted instantiation: dns.c:sc_ep_rcv_ex Unexecuted instantiation: dns_ring.c:sc_ep_rcv_ex Unexecuted instantiation: haterm.c:sc_ep_rcv_ex Unexecuted instantiation: http_fetch.c:sc_ep_rcv_ex Unexecuted instantiation: stats-json.c:sc_ep_rcv_ex Unexecuted instantiation: cache.c:sc_ep_rcv_ex Unexecuted instantiation: flt_spoe.c:sc_ep_rcv_ex |
471 | | |
472 | | static forceinline int sc_ep_snd_ex(const struct stconn *sc) |
473 | 0 | { |
474 | 0 | return ((tick_isset(sc->sedesc->fsb) && sc_snd_may_expire(sc)) |
475 | 0 | ? tick_add_ifset(sc->sedesc->fsb, sc->ioto) |
476 | 0 | : TICK_ETERNITY); |
477 | 0 | } Unexecuted instantiation: cli.c:sc_ep_snd_ex Unexecuted instantiation: connection.c:sc_ep_snd_ex Unexecuted instantiation: debug.c:sc_ep_snd_ex Unexecuted instantiation: errors.c:sc_ep_snd_ex Unexecuted instantiation: frontend.c:sc_ep_snd_ex Unexecuted instantiation: haproxy.c:sc_ep_snd_ex Unexecuted instantiation: http_ana.c:sc_ep_snd_ex Unexecuted instantiation: http_ext.c:sc_ep_snd_ex Unexecuted instantiation: log.c:sc_ep_snd_ex Unexecuted instantiation: mworker.c:sc_ep_snd_ex Unexecuted instantiation: peers.c:sc_ep_snd_ex Unexecuted instantiation: pool.c:sc_ep_snd_ex Unexecuted instantiation: proxy.c:sc_ep_snd_ex Unexecuted instantiation: resolvers.c:sc_ep_snd_ex Unexecuted instantiation: ring.c:sc_ep_snd_ex Unexecuted instantiation: sample.c:sc_ep_snd_ex Unexecuted instantiation: server.c:sc_ep_snd_ex Unexecuted instantiation: sink.c:sc_ep_snd_ex Unexecuted instantiation: stats-html.c:sc_ep_snd_ex Unexecuted instantiation: stats.c:sc_ep_snd_ex Unexecuted instantiation: stconn.c:sc_ep_snd_ex Unexecuted instantiation: stick_table.c:sc_ep_snd_ex Unexecuted instantiation: stream.c:sc_ep_snd_ex Unexecuted instantiation: tcp_rules.c:sc_ep_snd_ex Unexecuted instantiation: tools.c:sc_ep_snd_ex Unexecuted instantiation: trace.c:sc_ep_snd_ex Unexecuted instantiation: vars.c:sc_ep_snd_ex Unexecuted instantiation: activity.c:sc_ep_snd_ex Unexecuted instantiation: applet.c:sc_ep_snd_ex Unexecuted instantiation: backend.c:sc_ep_snd_ex Unexecuted instantiation: dns.c:sc_ep_snd_ex Unexecuted instantiation: dns_ring.c:sc_ep_snd_ex Unexecuted instantiation: haterm.c:sc_ep_snd_ex Unexecuted instantiation: http_fetch.c:sc_ep_snd_ex Unexecuted instantiation: stats-json.c:sc_ep_snd_ex Unexecuted instantiation: cache.c:sc_ep_snd_ex Unexecuted instantiation: flt_spoe.c:sc_ep_snd_ex |
478 | | |
479 | | static inline void sc_check_timeouts(const struct stconn *sc) |
480 | 0 | { |
481 | 0 | if (unlikely(tick_is_expired(sc_ep_rcv_ex(sc), now_ms))) |
482 | 0 | sc_ic(sc)->flags |= CF_READ_TIMEOUT; |
483 | 0 | if (unlikely(tick_is_expired(sc_ep_snd_ex(sc), now_ms))) |
484 | 0 | sc_oc(sc)->flags |= CF_WRITE_TIMEOUT; |
485 | 0 | } Unexecuted instantiation: cli.c:sc_check_timeouts Unexecuted instantiation: connection.c:sc_check_timeouts Unexecuted instantiation: debug.c:sc_check_timeouts Unexecuted instantiation: errors.c:sc_check_timeouts Unexecuted instantiation: frontend.c:sc_check_timeouts Unexecuted instantiation: haproxy.c:sc_check_timeouts Unexecuted instantiation: http_ana.c:sc_check_timeouts Unexecuted instantiation: http_ext.c:sc_check_timeouts Unexecuted instantiation: log.c:sc_check_timeouts Unexecuted instantiation: mworker.c:sc_check_timeouts Unexecuted instantiation: peers.c:sc_check_timeouts Unexecuted instantiation: pool.c:sc_check_timeouts Unexecuted instantiation: proxy.c:sc_check_timeouts Unexecuted instantiation: resolvers.c:sc_check_timeouts Unexecuted instantiation: ring.c:sc_check_timeouts Unexecuted instantiation: sample.c:sc_check_timeouts Unexecuted instantiation: server.c:sc_check_timeouts Unexecuted instantiation: sink.c:sc_check_timeouts Unexecuted instantiation: stats-html.c:sc_check_timeouts Unexecuted instantiation: stats.c:sc_check_timeouts Unexecuted instantiation: stconn.c:sc_check_timeouts Unexecuted instantiation: stick_table.c:sc_check_timeouts Unexecuted instantiation: stream.c:sc_check_timeouts Unexecuted instantiation: tcp_rules.c:sc_check_timeouts Unexecuted instantiation: tools.c:sc_check_timeouts Unexecuted instantiation: trace.c:sc_check_timeouts Unexecuted instantiation: vars.c:sc_check_timeouts Unexecuted instantiation: activity.c:sc_check_timeouts Unexecuted instantiation: applet.c:sc_check_timeouts Unexecuted instantiation: backend.c:sc_check_timeouts Unexecuted instantiation: dns.c:sc_check_timeouts Unexecuted instantiation: dns_ring.c:sc_check_timeouts Unexecuted instantiation: haterm.c:sc_check_timeouts Unexecuted instantiation: http_fetch.c:sc_check_timeouts Unexecuted instantiation: stats-json.c:sc_check_timeouts Unexecuted instantiation: cache.c:sc_check_timeouts Unexecuted instantiation: flt_spoe.c:sc_check_timeouts |
486 | | |
487 | | static inline void sc_set_hcto(struct stconn *sc) |
488 | 0 | { |
489 | 0 | struct stream *strm = __sc_strm(sc); |
490 | |
|
491 | 0 | if (IS_HTX_STRM(strm)) |
492 | 0 | return; |
493 | | |
494 | 0 | if (sc->flags & SC_FL_ISBACK) { |
495 | 0 | if ((strm->flags & SF_BE_ASSIGNED) && tick_isset(strm->be->timeout.serverfin)) |
496 | 0 | sc->ioto = strm->be->timeout.serverfin; |
497 | 0 | } |
498 | 0 | else { |
499 | 0 | if (tick_isset(strm_fe(strm)->timeout.clientfin)) |
500 | 0 | sc->ioto = strm_fe(strm)->timeout.clientfin; |
501 | 0 | } |
502 | |
|
503 | 0 | } Unexecuted instantiation: cli.c:sc_set_hcto Unexecuted instantiation: connection.c:sc_set_hcto Unexecuted instantiation: debug.c:sc_set_hcto Unexecuted instantiation: errors.c:sc_set_hcto Unexecuted instantiation: frontend.c:sc_set_hcto Unexecuted instantiation: haproxy.c:sc_set_hcto Unexecuted instantiation: http_ana.c:sc_set_hcto Unexecuted instantiation: http_ext.c:sc_set_hcto Unexecuted instantiation: log.c:sc_set_hcto Unexecuted instantiation: mworker.c:sc_set_hcto Unexecuted instantiation: peers.c:sc_set_hcto Unexecuted instantiation: pool.c:sc_set_hcto Unexecuted instantiation: proxy.c:sc_set_hcto Unexecuted instantiation: resolvers.c:sc_set_hcto Unexecuted instantiation: ring.c:sc_set_hcto Unexecuted instantiation: sample.c:sc_set_hcto Unexecuted instantiation: server.c:sc_set_hcto Unexecuted instantiation: sink.c:sc_set_hcto Unexecuted instantiation: stats-html.c:sc_set_hcto Unexecuted instantiation: stats.c:sc_set_hcto Unexecuted instantiation: stconn.c:sc_set_hcto Unexecuted instantiation: stick_table.c:sc_set_hcto Unexecuted instantiation: stream.c:sc_set_hcto Unexecuted instantiation: tcp_rules.c:sc_set_hcto Unexecuted instantiation: tools.c:sc_set_hcto Unexecuted instantiation: trace.c:sc_set_hcto Unexecuted instantiation: vars.c:sc_set_hcto Unexecuted instantiation: activity.c:sc_set_hcto Unexecuted instantiation: applet.c:sc_set_hcto Unexecuted instantiation: backend.c:sc_set_hcto Unexecuted instantiation: dns.c:sc_set_hcto Unexecuted instantiation: dns_ring.c:sc_set_hcto Unexecuted instantiation: haterm.c:sc_set_hcto Unexecuted instantiation: http_fetch.c:sc_set_hcto Unexecuted instantiation: stats-json.c:sc_set_hcto Unexecuted instantiation: cache.c:sc_set_hcto Unexecuted instantiation: flt_spoe.c:sc_set_hcto |
504 | | |
505 | | /* Schedule an abort for the SC */ |
506 | | static inline void sc_schedule_abort(struct stconn *sc) |
507 | 0 | { |
508 | 0 | sc->flags |= SC_FL_ABRT_WANTED; |
509 | 0 | } Unexecuted instantiation: cli.c:sc_schedule_abort Unexecuted instantiation: connection.c:sc_schedule_abort Unexecuted instantiation: debug.c:sc_schedule_abort Unexecuted instantiation: errors.c:sc_schedule_abort Unexecuted instantiation: frontend.c:sc_schedule_abort Unexecuted instantiation: haproxy.c:sc_schedule_abort Unexecuted instantiation: http_ana.c:sc_schedule_abort Unexecuted instantiation: http_ext.c:sc_schedule_abort Unexecuted instantiation: log.c:sc_schedule_abort Unexecuted instantiation: mworker.c:sc_schedule_abort Unexecuted instantiation: peers.c:sc_schedule_abort Unexecuted instantiation: pool.c:sc_schedule_abort Unexecuted instantiation: proxy.c:sc_schedule_abort Unexecuted instantiation: resolvers.c:sc_schedule_abort Unexecuted instantiation: ring.c:sc_schedule_abort Unexecuted instantiation: sample.c:sc_schedule_abort Unexecuted instantiation: server.c:sc_schedule_abort Unexecuted instantiation: sink.c:sc_schedule_abort Unexecuted instantiation: stats-html.c:sc_schedule_abort Unexecuted instantiation: stats.c:sc_schedule_abort Unexecuted instantiation: stconn.c:sc_schedule_abort Unexecuted instantiation: stick_table.c:sc_schedule_abort Unexecuted instantiation: stream.c:sc_schedule_abort Unexecuted instantiation: tcp_rules.c:sc_schedule_abort Unexecuted instantiation: tools.c:sc_schedule_abort Unexecuted instantiation: trace.c:sc_schedule_abort Unexecuted instantiation: vars.c:sc_schedule_abort Unexecuted instantiation: activity.c:sc_schedule_abort Unexecuted instantiation: applet.c:sc_schedule_abort Unexecuted instantiation: backend.c:sc_schedule_abort Unexecuted instantiation: dns.c:sc_schedule_abort Unexecuted instantiation: dns_ring.c:sc_schedule_abort Unexecuted instantiation: haterm.c:sc_schedule_abort Unexecuted instantiation: http_fetch.c:sc_schedule_abort Unexecuted instantiation: stats-json.c:sc_schedule_abort Unexecuted instantiation: cache.c:sc_schedule_abort Unexecuted instantiation: flt_spoe.c:sc_schedule_abort |
510 | | |
511 | | /* Schedule a shutdown for the SC */ |
512 | | static inline void sc_schedule_shutdown(struct stconn *sc) |
513 | 0 | { |
514 | 0 | sc->flags |= SC_FL_SHUT_WANTED; |
515 | 0 | } Unexecuted instantiation: cli.c:sc_schedule_shutdown Unexecuted instantiation: connection.c:sc_schedule_shutdown Unexecuted instantiation: debug.c:sc_schedule_shutdown Unexecuted instantiation: errors.c:sc_schedule_shutdown Unexecuted instantiation: frontend.c:sc_schedule_shutdown Unexecuted instantiation: haproxy.c:sc_schedule_shutdown Unexecuted instantiation: http_ana.c:sc_schedule_shutdown Unexecuted instantiation: http_ext.c:sc_schedule_shutdown Unexecuted instantiation: log.c:sc_schedule_shutdown Unexecuted instantiation: mworker.c:sc_schedule_shutdown Unexecuted instantiation: peers.c:sc_schedule_shutdown Unexecuted instantiation: pool.c:sc_schedule_shutdown Unexecuted instantiation: proxy.c:sc_schedule_shutdown Unexecuted instantiation: resolvers.c:sc_schedule_shutdown Unexecuted instantiation: ring.c:sc_schedule_shutdown Unexecuted instantiation: sample.c:sc_schedule_shutdown Unexecuted instantiation: server.c:sc_schedule_shutdown Unexecuted instantiation: sink.c:sc_schedule_shutdown Unexecuted instantiation: stats-html.c:sc_schedule_shutdown Unexecuted instantiation: stats.c:sc_schedule_shutdown Unexecuted instantiation: stconn.c:sc_schedule_shutdown Unexecuted instantiation: stick_table.c:sc_schedule_shutdown Unexecuted instantiation: stream.c:sc_schedule_shutdown Unexecuted instantiation: tcp_rules.c:sc_schedule_shutdown Unexecuted instantiation: tools.c:sc_schedule_shutdown Unexecuted instantiation: trace.c:sc_schedule_shutdown Unexecuted instantiation: vars.c:sc_schedule_shutdown Unexecuted instantiation: activity.c:sc_schedule_shutdown Unexecuted instantiation: applet.c:sc_schedule_shutdown Unexecuted instantiation: backend.c:sc_schedule_shutdown Unexecuted instantiation: dns.c:sc_schedule_shutdown Unexecuted instantiation: dns_ring.c:sc_schedule_shutdown Unexecuted instantiation: haterm.c:sc_schedule_shutdown Unexecuted instantiation: http_fetch.c:sc_schedule_shutdown Unexecuted instantiation: stats-json.c:sc_schedule_shutdown Unexecuted instantiation: cache.c:sc_schedule_shutdown Unexecuted instantiation: flt_spoe.c:sc_schedule_shutdown |
516 | | |
517 | | #endif /* _HAPROXY_SC_STRM_H */ |