Coverage Report

Created: 2026-08-31 07:20

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/h2o/deps/quicly/include/quicly/maxsender.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2017 Fastly, Kazuho Oku
3
 *
4
 * Permission is hereby granted, free of charge, to any person obtaining a copy
5
 * of this software and associated documentation files (the "Software"), to
6
 * deal in the Software without restriction, including without limitation the
7
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8
 * sell copies of the Software, and to permit persons to whom the Software is
9
 * furnished to do so, subject to the following conditions:
10
 *
11
 * The above copyright notice and this permission notice shall be included in
12
 * all copies or substantial portions of the Software.
13
 *
14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
 * IN THE SOFTWARE.
21
 */
22
#ifndef quicly_maxsender_h
23
#define quicly_maxsender_h
24
25
#ifdef __cplusplus
26
extern "C" {
27
#endif
28
29
#include <assert.h>
30
#include <stddef.h>
31
#include <stdint.h>
32
#include "quicly/constants.h"
33
34
typedef struct st_quicly_maxsender_t {
35
    /**
36
     * maximum value being announced (never decreases)
37
     */
38
    int64_t max_committed;
39
    /**
40
     * maximum value being acked by remote peer
41
     */
42
    int64_t max_acked;
43
    /**
44
     * number of maximums inflight
45
     */
46
    size_t num_inflight;
47
    /**
48
     *
49
     */
50
    unsigned force_send : 1;
51
} quicly_maxsender_t;
52
53
typedef struct st_quicly_maxsender_sent_t {
54
    uint64_t inflight : 1;
55
    uint64_t value : 63;
56
} quicly_maxsender_sent_t;
57
58
static void quicly_maxsender_init(quicly_maxsender_t *m, int64_t initial_value);
59
static void quicly_maxsender_dispose(quicly_maxsender_t *m);
60
static void quicly_maxsender_request_transmit(quicly_maxsender_t *m);
61
static int quicly_maxsender_should_send_max(quicly_maxsender_t *m, int64_t buffered_from, uint32_t window_size,
62
                                            uint32_t update_ratio);
63
static int quicly_maxsender_should_send_blocked(quicly_maxsender_t *m, int64_t local_max);
64
static void quicly_maxsender_record(quicly_maxsender_t *m, int64_t value, quicly_maxsender_sent_t *sent);
65
static void quicly_maxsender_acked(quicly_maxsender_t *m, quicly_maxsender_sent_t *sent);
66
static void quicly_maxsender_lost(quicly_maxsender_t *m, quicly_maxsender_sent_t *sent);
67
68
/* inline definitions */
69
70
inline void quicly_maxsender_init(quicly_maxsender_t *m, int64_t initial_value)
71
0
{
72
0
    m->max_committed = initial_value;
73
0
    m->max_acked = initial_value;
74
0
    m->num_inflight = 0;
75
0
    m->force_send = 0;
76
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_init(st_quicly_maxsender_t*, long)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_init(st_quicly_maxsender_t*, long)
Unexecuted instantiation: socket.c:quicly_maxsender_init
Unexecuted instantiation: config.c:quicly_maxsender_init
Unexecuted instantiation: configurator.c:quicly_maxsender_init
Unexecuted instantiation: context.c:quicly_maxsender_init
Unexecuted instantiation: headers.c:quicly_maxsender_init
Unexecuted instantiation: request.c:quicly_maxsender_init
Unexecuted instantiation: util.c:quicly_maxsender_init
Unexecuted instantiation: access_log.c:quicly_maxsender_init
Unexecuted instantiation: file.c:quicly_maxsender_init
Unexecuted instantiation: mimemap.c:quicly_maxsender_init
Unexecuted instantiation: proxy.c:quicly_maxsender_init
Unexecuted instantiation: http1.c:quicly_maxsender_init
Unexecuted instantiation: connection.c:quicly_maxsender_init
Unexecuted instantiation: scheduler.c:quicly_maxsender_init
Unexecuted instantiation: stream.c:quicly_maxsender_init
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_init
Unexecuted instantiation: common.c:quicly_maxsender_init
Unexecuted instantiation: server.c:quicly_maxsender_init
Unexecuted instantiation: cc-reno.c:quicly_maxsender_init
Unexecuted instantiation: defaults.c:quicly_maxsender_init
Unexecuted instantiation: quicly.c:quicly_maxsender_init
Unexecuted instantiation: sentmap.c:quicly_maxsender_init
Unexecuted instantiation: streambuf.c:quicly_maxsender_init
Unexecuted instantiation: http3client.c:quicly_maxsender_init
Unexecuted instantiation: httpclient.c:quicly_maxsender_init
Unexecuted instantiation: absprio.c:quicly_maxsender_init
Unexecuted instantiation: logconf.c:quicly_maxsender_init
Unexecuted instantiation: compress.c:quicly_maxsender_init
Unexecuted instantiation: gzip.c:quicly_maxsender_init
Unexecuted instantiation: headers_util.c:quicly_maxsender_init
Unexecuted instantiation: frame.c:quicly_maxsender_init
Unexecuted instantiation: qpack.c:quicly_maxsender_init
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_init
Unexecuted instantiation: cc-pico.c:quicly_maxsender_init
Unexecuted instantiation: loss.c:quicly_maxsender_init
Unexecuted instantiation: http1client.c:quicly_maxsender_init
Unexecuted instantiation: http2client.c:quicly_maxsender_init
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_init
Unexecuted instantiation: driver_url.cc:quicly_maxsender_init(st_quicly_maxsender_t*, long)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_init(st_quicly_maxsender_t*, long)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_init
Unexecuted instantiation: errordoc.c:quicly_maxsender_init
Unexecuted instantiation: expires.c:quicly_maxsender_init
Unexecuted instantiation: fastcgi.c:quicly_maxsender_init
Unexecuted instantiation: h2olog.c:quicly_maxsender_init
Unexecuted instantiation: connect.c:quicly_maxsender_init
Unexecuted instantiation: redirect.c:quicly_maxsender_init
Unexecuted instantiation: reproxy.c:quicly_maxsender_init
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_init
Unexecuted instantiation: self_trace.c:quicly_maxsender_init
Unexecuted instantiation: server_timing.c:quicly_maxsender_init
Unexecuted instantiation: status.c:quicly_maxsender_init
Unexecuted instantiation: events.c:quicly_maxsender_init
Unexecuted instantiation: memory.c:quicly_maxsender_init
Unexecuted instantiation: requests.c:quicly_maxsender_init
Unexecuted instantiation: ssl.c:quicly_maxsender_init
Unexecuted instantiation: durations.c:quicly_maxsender_init
77
78
inline void quicly_maxsender_dispose(quicly_maxsender_t *m)
79
0
{
80
0
    (void)m;
81
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_dispose(st_quicly_maxsender_t*)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_dispose(st_quicly_maxsender_t*)
Unexecuted instantiation: socket.c:quicly_maxsender_dispose
Unexecuted instantiation: config.c:quicly_maxsender_dispose
Unexecuted instantiation: configurator.c:quicly_maxsender_dispose
Unexecuted instantiation: context.c:quicly_maxsender_dispose
Unexecuted instantiation: headers.c:quicly_maxsender_dispose
Unexecuted instantiation: request.c:quicly_maxsender_dispose
Unexecuted instantiation: util.c:quicly_maxsender_dispose
Unexecuted instantiation: access_log.c:quicly_maxsender_dispose
Unexecuted instantiation: file.c:quicly_maxsender_dispose
Unexecuted instantiation: mimemap.c:quicly_maxsender_dispose
Unexecuted instantiation: proxy.c:quicly_maxsender_dispose
Unexecuted instantiation: http1.c:quicly_maxsender_dispose
Unexecuted instantiation: connection.c:quicly_maxsender_dispose
Unexecuted instantiation: scheduler.c:quicly_maxsender_dispose
Unexecuted instantiation: stream.c:quicly_maxsender_dispose
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_dispose
Unexecuted instantiation: common.c:quicly_maxsender_dispose
Unexecuted instantiation: server.c:quicly_maxsender_dispose
Unexecuted instantiation: cc-reno.c:quicly_maxsender_dispose
Unexecuted instantiation: defaults.c:quicly_maxsender_dispose
Unexecuted instantiation: quicly.c:quicly_maxsender_dispose
Unexecuted instantiation: sentmap.c:quicly_maxsender_dispose
Unexecuted instantiation: streambuf.c:quicly_maxsender_dispose
Unexecuted instantiation: http3client.c:quicly_maxsender_dispose
Unexecuted instantiation: httpclient.c:quicly_maxsender_dispose
Unexecuted instantiation: absprio.c:quicly_maxsender_dispose
Unexecuted instantiation: logconf.c:quicly_maxsender_dispose
Unexecuted instantiation: compress.c:quicly_maxsender_dispose
Unexecuted instantiation: gzip.c:quicly_maxsender_dispose
Unexecuted instantiation: headers_util.c:quicly_maxsender_dispose
Unexecuted instantiation: frame.c:quicly_maxsender_dispose
Unexecuted instantiation: qpack.c:quicly_maxsender_dispose
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_dispose
Unexecuted instantiation: cc-pico.c:quicly_maxsender_dispose
Unexecuted instantiation: loss.c:quicly_maxsender_dispose
Unexecuted instantiation: http1client.c:quicly_maxsender_dispose
Unexecuted instantiation: http2client.c:quicly_maxsender_dispose
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_dispose
Unexecuted instantiation: driver_url.cc:quicly_maxsender_dispose(st_quicly_maxsender_t*)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_dispose(st_quicly_maxsender_t*)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_dispose
Unexecuted instantiation: errordoc.c:quicly_maxsender_dispose
Unexecuted instantiation: expires.c:quicly_maxsender_dispose
Unexecuted instantiation: fastcgi.c:quicly_maxsender_dispose
Unexecuted instantiation: h2olog.c:quicly_maxsender_dispose
Unexecuted instantiation: connect.c:quicly_maxsender_dispose
Unexecuted instantiation: redirect.c:quicly_maxsender_dispose
Unexecuted instantiation: reproxy.c:quicly_maxsender_dispose
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_dispose
Unexecuted instantiation: self_trace.c:quicly_maxsender_dispose
Unexecuted instantiation: server_timing.c:quicly_maxsender_dispose
Unexecuted instantiation: status.c:quicly_maxsender_dispose
Unexecuted instantiation: events.c:quicly_maxsender_dispose
Unexecuted instantiation: memory.c:quicly_maxsender_dispose
Unexecuted instantiation: requests.c:quicly_maxsender_dispose
Unexecuted instantiation: ssl.c:quicly_maxsender_dispose
Unexecuted instantiation: durations.c:quicly_maxsender_dispose
82
83
inline void quicly_maxsender_request_transmit(quicly_maxsender_t *m)
84
0
{
85
0
    m->force_send = 1;
86
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_request_transmit(st_quicly_maxsender_t*)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_request_transmit(st_quicly_maxsender_t*)
Unexecuted instantiation: socket.c:quicly_maxsender_request_transmit
Unexecuted instantiation: config.c:quicly_maxsender_request_transmit
Unexecuted instantiation: configurator.c:quicly_maxsender_request_transmit
Unexecuted instantiation: context.c:quicly_maxsender_request_transmit
Unexecuted instantiation: headers.c:quicly_maxsender_request_transmit
Unexecuted instantiation: request.c:quicly_maxsender_request_transmit
Unexecuted instantiation: util.c:quicly_maxsender_request_transmit
Unexecuted instantiation: access_log.c:quicly_maxsender_request_transmit
Unexecuted instantiation: file.c:quicly_maxsender_request_transmit
Unexecuted instantiation: mimemap.c:quicly_maxsender_request_transmit
Unexecuted instantiation: proxy.c:quicly_maxsender_request_transmit
Unexecuted instantiation: http1.c:quicly_maxsender_request_transmit
Unexecuted instantiation: connection.c:quicly_maxsender_request_transmit
Unexecuted instantiation: scheduler.c:quicly_maxsender_request_transmit
Unexecuted instantiation: stream.c:quicly_maxsender_request_transmit
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_request_transmit
Unexecuted instantiation: common.c:quicly_maxsender_request_transmit
Unexecuted instantiation: server.c:quicly_maxsender_request_transmit
Unexecuted instantiation: cc-reno.c:quicly_maxsender_request_transmit
Unexecuted instantiation: defaults.c:quicly_maxsender_request_transmit
Unexecuted instantiation: quicly.c:quicly_maxsender_request_transmit
Unexecuted instantiation: sentmap.c:quicly_maxsender_request_transmit
Unexecuted instantiation: streambuf.c:quicly_maxsender_request_transmit
Unexecuted instantiation: http3client.c:quicly_maxsender_request_transmit
Unexecuted instantiation: httpclient.c:quicly_maxsender_request_transmit
Unexecuted instantiation: absprio.c:quicly_maxsender_request_transmit
Unexecuted instantiation: logconf.c:quicly_maxsender_request_transmit
Unexecuted instantiation: compress.c:quicly_maxsender_request_transmit
Unexecuted instantiation: gzip.c:quicly_maxsender_request_transmit
Unexecuted instantiation: headers_util.c:quicly_maxsender_request_transmit
Unexecuted instantiation: frame.c:quicly_maxsender_request_transmit
Unexecuted instantiation: qpack.c:quicly_maxsender_request_transmit
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_request_transmit
Unexecuted instantiation: cc-pico.c:quicly_maxsender_request_transmit
Unexecuted instantiation: loss.c:quicly_maxsender_request_transmit
Unexecuted instantiation: http1client.c:quicly_maxsender_request_transmit
Unexecuted instantiation: http2client.c:quicly_maxsender_request_transmit
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_request_transmit
Unexecuted instantiation: driver_url.cc:quicly_maxsender_request_transmit(st_quicly_maxsender_t*)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_request_transmit(st_quicly_maxsender_t*)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_request_transmit
Unexecuted instantiation: errordoc.c:quicly_maxsender_request_transmit
Unexecuted instantiation: expires.c:quicly_maxsender_request_transmit
Unexecuted instantiation: fastcgi.c:quicly_maxsender_request_transmit
Unexecuted instantiation: h2olog.c:quicly_maxsender_request_transmit
Unexecuted instantiation: connect.c:quicly_maxsender_request_transmit
Unexecuted instantiation: redirect.c:quicly_maxsender_request_transmit
Unexecuted instantiation: reproxy.c:quicly_maxsender_request_transmit
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_request_transmit
Unexecuted instantiation: self_trace.c:quicly_maxsender_request_transmit
Unexecuted instantiation: server_timing.c:quicly_maxsender_request_transmit
Unexecuted instantiation: status.c:quicly_maxsender_request_transmit
Unexecuted instantiation: events.c:quicly_maxsender_request_transmit
Unexecuted instantiation: memory.c:quicly_maxsender_request_transmit
Unexecuted instantiation: requests.c:quicly_maxsender_request_transmit
Unexecuted instantiation: ssl.c:quicly_maxsender_request_transmit
Unexecuted instantiation: durations.c:quicly_maxsender_request_transmit
87
88
inline int quicly_maxsender_should_send_max(quicly_maxsender_t *m, int64_t buffered_from, uint32_t window_size,
89
                                            uint32_t update_ratio)
90
0
{
91
0
    if (m->force_send)
92
0
        return 1;
93
94
    /* ratio is permil (1/1024) */
95
0
    int64_t threshold = buffered_from + ((int64_t)window_size * update_ratio) / 1024;
96
0
    return (m->num_inflight != 0 ? m->max_committed : m->max_acked) <= threshold;
97
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_should_send_max(st_quicly_maxsender_t*, long, unsigned int, unsigned int)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_should_send_max(st_quicly_maxsender_t*, long, unsigned int, unsigned int)
Unexecuted instantiation: socket.c:quicly_maxsender_should_send_max
Unexecuted instantiation: config.c:quicly_maxsender_should_send_max
Unexecuted instantiation: configurator.c:quicly_maxsender_should_send_max
Unexecuted instantiation: context.c:quicly_maxsender_should_send_max
Unexecuted instantiation: headers.c:quicly_maxsender_should_send_max
Unexecuted instantiation: request.c:quicly_maxsender_should_send_max
Unexecuted instantiation: util.c:quicly_maxsender_should_send_max
Unexecuted instantiation: access_log.c:quicly_maxsender_should_send_max
Unexecuted instantiation: file.c:quicly_maxsender_should_send_max
Unexecuted instantiation: mimemap.c:quicly_maxsender_should_send_max
Unexecuted instantiation: proxy.c:quicly_maxsender_should_send_max
Unexecuted instantiation: http1.c:quicly_maxsender_should_send_max
Unexecuted instantiation: connection.c:quicly_maxsender_should_send_max
Unexecuted instantiation: scheduler.c:quicly_maxsender_should_send_max
Unexecuted instantiation: stream.c:quicly_maxsender_should_send_max
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_should_send_max
Unexecuted instantiation: common.c:quicly_maxsender_should_send_max
Unexecuted instantiation: server.c:quicly_maxsender_should_send_max
Unexecuted instantiation: cc-reno.c:quicly_maxsender_should_send_max
Unexecuted instantiation: defaults.c:quicly_maxsender_should_send_max
Unexecuted instantiation: quicly.c:quicly_maxsender_should_send_max
Unexecuted instantiation: sentmap.c:quicly_maxsender_should_send_max
Unexecuted instantiation: streambuf.c:quicly_maxsender_should_send_max
Unexecuted instantiation: http3client.c:quicly_maxsender_should_send_max
Unexecuted instantiation: httpclient.c:quicly_maxsender_should_send_max
Unexecuted instantiation: absprio.c:quicly_maxsender_should_send_max
Unexecuted instantiation: logconf.c:quicly_maxsender_should_send_max
Unexecuted instantiation: compress.c:quicly_maxsender_should_send_max
Unexecuted instantiation: gzip.c:quicly_maxsender_should_send_max
Unexecuted instantiation: headers_util.c:quicly_maxsender_should_send_max
Unexecuted instantiation: frame.c:quicly_maxsender_should_send_max
Unexecuted instantiation: qpack.c:quicly_maxsender_should_send_max
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_should_send_max
Unexecuted instantiation: cc-pico.c:quicly_maxsender_should_send_max
Unexecuted instantiation: loss.c:quicly_maxsender_should_send_max
Unexecuted instantiation: http1client.c:quicly_maxsender_should_send_max
Unexecuted instantiation: http2client.c:quicly_maxsender_should_send_max
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_should_send_max
Unexecuted instantiation: driver_url.cc:quicly_maxsender_should_send_max(st_quicly_maxsender_t*, long, unsigned int, unsigned int)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_should_send_max(st_quicly_maxsender_t*, long, unsigned int, unsigned int)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_should_send_max
Unexecuted instantiation: errordoc.c:quicly_maxsender_should_send_max
Unexecuted instantiation: expires.c:quicly_maxsender_should_send_max
Unexecuted instantiation: fastcgi.c:quicly_maxsender_should_send_max
Unexecuted instantiation: h2olog.c:quicly_maxsender_should_send_max
Unexecuted instantiation: connect.c:quicly_maxsender_should_send_max
Unexecuted instantiation: redirect.c:quicly_maxsender_should_send_max
Unexecuted instantiation: reproxy.c:quicly_maxsender_should_send_max
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_should_send_max
Unexecuted instantiation: self_trace.c:quicly_maxsender_should_send_max
Unexecuted instantiation: server_timing.c:quicly_maxsender_should_send_max
Unexecuted instantiation: status.c:quicly_maxsender_should_send_max
Unexecuted instantiation: events.c:quicly_maxsender_should_send_max
Unexecuted instantiation: memory.c:quicly_maxsender_should_send_max
Unexecuted instantiation: requests.c:quicly_maxsender_should_send_max
Unexecuted instantiation: ssl.c:quicly_maxsender_should_send_max
Unexecuted instantiation: durations.c:quicly_maxsender_should_send_max
98
99
inline int quicly_maxsender_should_send_blocked(quicly_maxsender_t *m, int64_t local_max)
100
0
{
101
0
    return m->max_committed < local_max;
102
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_should_send_blocked(st_quicly_maxsender_t*, long)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_should_send_blocked(st_quicly_maxsender_t*, long)
Unexecuted instantiation: socket.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: config.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: configurator.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: context.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: headers.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: request.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: util.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: access_log.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: file.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: mimemap.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: proxy.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: http1.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: connection.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: scheduler.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: stream.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: common.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: server.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: cc-reno.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: defaults.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: quicly.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: sentmap.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: streambuf.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: http3client.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: httpclient.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: absprio.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: logconf.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: compress.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: gzip.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: headers_util.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: frame.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: qpack.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: cc-pico.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: loss.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: http1client.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: http2client.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: driver_url.cc:quicly_maxsender_should_send_blocked(st_quicly_maxsender_t*, long)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_should_send_blocked(st_quicly_maxsender_t*, long)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: errordoc.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: expires.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: fastcgi.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: h2olog.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: connect.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: redirect.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: reproxy.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: self_trace.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: server_timing.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: status.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: events.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: memory.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: requests.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: ssl.c:quicly_maxsender_should_send_blocked
Unexecuted instantiation: durations.c:quicly_maxsender_should_send_blocked
103
104
inline void quicly_maxsender_record(quicly_maxsender_t *m, int64_t value, quicly_maxsender_sent_t *sent)
105
0
{
106
0
    assert(value >= m->max_committed);
107
0
    m->max_committed = value;
108
0
    ++m->num_inflight;
109
0
    m->force_send = 0;
110
0
    sent->inflight = 1;
111
0
    sent->value = value;
112
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_record(st_quicly_maxsender_t*, long, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_record(st_quicly_maxsender_t*, long, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: socket.c:quicly_maxsender_record
Unexecuted instantiation: config.c:quicly_maxsender_record
Unexecuted instantiation: configurator.c:quicly_maxsender_record
Unexecuted instantiation: context.c:quicly_maxsender_record
Unexecuted instantiation: headers.c:quicly_maxsender_record
Unexecuted instantiation: request.c:quicly_maxsender_record
Unexecuted instantiation: util.c:quicly_maxsender_record
Unexecuted instantiation: access_log.c:quicly_maxsender_record
Unexecuted instantiation: file.c:quicly_maxsender_record
Unexecuted instantiation: mimemap.c:quicly_maxsender_record
Unexecuted instantiation: proxy.c:quicly_maxsender_record
Unexecuted instantiation: http1.c:quicly_maxsender_record
Unexecuted instantiation: connection.c:quicly_maxsender_record
Unexecuted instantiation: scheduler.c:quicly_maxsender_record
Unexecuted instantiation: stream.c:quicly_maxsender_record
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_record
Unexecuted instantiation: common.c:quicly_maxsender_record
Unexecuted instantiation: server.c:quicly_maxsender_record
Unexecuted instantiation: cc-reno.c:quicly_maxsender_record
Unexecuted instantiation: defaults.c:quicly_maxsender_record
Unexecuted instantiation: quicly.c:quicly_maxsender_record
Unexecuted instantiation: sentmap.c:quicly_maxsender_record
Unexecuted instantiation: streambuf.c:quicly_maxsender_record
Unexecuted instantiation: http3client.c:quicly_maxsender_record
Unexecuted instantiation: httpclient.c:quicly_maxsender_record
Unexecuted instantiation: absprio.c:quicly_maxsender_record
Unexecuted instantiation: logconf.c:quicly_maxsender_record
Unexecuted instantiation: compress.c:quicly_maxsender_record
Unexecuted instantiation: gzip.c:quicly_maxsender_record
Unexecuted instantiation: headers_util.c:quicly_maxsender_record
Unexecuted instantiation: frame.c:quicly_maxsender_record
Unexecuted instantiation: qpack.c:quicly_maxsender_record
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_record
Unexecuted instantiation: cc-pico.c:quicly_maxsender_record
Unexecuted instantiation: loss.c:quicly_maxsender_record
Unexecuted instantiation: http1client.c:quicly_maxsender_record
Unexecuted instantiation: http2client.c:quicly_maxsender_record
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_record
Unexecuted instantiation: driver_url.cc:quicly_maxsender_record(st_quicly_maxsender_t*, long, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_record(st_quicly_maxsender_t*, long, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_record
Unexecuted instantiation: errordoc.c:quicly_maxsender_record
Unexecuted instantiation: expires.c:quicly_maxsender_record
Unexecuted instantiation: fastcgi.c:quicly_maxsender_record
Unexecuted instantiation: h2olog.c:quicly_maxsender_record
Unexecuted instantiation: connect.c:quicly_maxsender_record
Unexecuted instantiation: redirect.c:quicly_maxsender_record
Unexecuted instantiation: reproxy.c:quicly_maxsender_record
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_record
Unexecuted instantiation: self_trace.c:quicly_maxsender_record
Unexecuted instantiation: server_timing.c:quicly_maxsender_record
Unexecuted instantiation: status.c:quicly_maxsender_record
Unexecuted instantiation: events.c:quicly_maxsender_record
Unexecuted instantiation: memory.c:quicly_maxsender_record
Unexecuted instantiation: requests.c:quicly_maxsender_record
Unexecuted instantiation: ssl.c:quicly_maxsender_record
Unexecuted instantiation: durations.c:quicly_maxsender_record
113
114
inline void quicly_maxsender_acked(quicly_maxsender_t *m, quicly_maxsender_sent_t *sent)
115
0
{
116
0
    if (m->max_acked < (int64_t)sent->value)
117
0
        m->max_acked = sent->value;
118
    /* num_inflight should not be adjusted in case of a late ACK */
119
0
    if (sent->inflight) {
120
0
        assert(m->num_inflight != 0);
121
0
        --m->num_inflight;
122
0
        sent->inflight = 0;
123
0
    }
124
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_acked(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_acked(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: socket.c:quicly_maxsender_acked
Unexecuted instantiation: config.c:quicly_maxsender_acked
Unexecuted instantiation: configurator.c:quicly_maxsender_acked
Unexecuted instantiation: context.c:quicly_maxsender_acked
Unexecuted instantiation: headers.c:quicly_maxsender_acked
Unexecuted instantiation: request.c:quicly_maxsender_acked
Unexecuted instantiation: util.c:quicly_maxsender_acked
Unexecuted instantiation: access_log.c:quicly_maxsender_acked
Unexecuted instantiation: file.c:quicly_maxsender_acked
Unexecuted instantiation: mimemap.c:quicly_maxsender_acked
Unexecuted instantiation: proxy.c:quicly_maxsender_acked
Unexecuted instantiation: http1.c:quicly_maxsender_acked
Unexecuted instantiation: connection.c:quicly_maxsender_acked
Unexecuted instantiation: scheduler.c:quicly_maxsender_acked
Unexecuted instantiation: stream.c:quicly_maxsender_acked
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_acked
Unexecuted instantiation: common.c:quicly_maxsender_acked
Unexecuted instantiation: server.c:quicly_maxsender_acked
Unexecuted instantiation: cc-reno.c:quicly_maxsender_acked
Unexecuted instantiation: defaults.c:quicly_maxsender_acked
Unexecuted instantiation: quicly.c:quicly_maxsender_acked
Unexecuted instantiation: sentmap.c:quicly_maxsender_acked
Unexecuted instantiation: streambuf.c:quicly_maxsender_acked
Unexecuted instantiation: http3client.c:quicly_maxsender_acked
Unexecuted instantiation: httpclient.c:quicly_maxsender_acked
Unexecuted instantiation: absprio.c:quicly_maxsender_acked
Unexecuted instantiation: logconf.c:quicly_maxsender_acked
Unexecuted instantiation: compress.c:quicly_maxsender_acked
Unexecuted instantiation: gzip.c:quicly_maxsender_acked
Unexecuted instantiation: headers_util.c:quicly_maxsender_acked
Unexecuted instantiation: frame.c:quicly_maxsender_acked
Unexecuted instantiation: qpack.c:quicly_maxsender_acked
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_acked
Unexecuted instantiation: cc-pico.c:quicly_maxsender_acked
Unexecuted instantiation: loss.c:quicly_maxsender_acked
Unexecuted instantiation: http1client.c:quicly_maxsender_acked
Unexecuted instantiation: http2client.c:quicly_maxsender_acked
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_acked
Unexecuted instantiation: driver_url.cc:quicly_maxsender_acked(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_acked(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_acked
Unexecuted instantiation: errordoc.c:quicly_maxsender_acked
Unexecuted instantiation: expires.c:quicly_maxsender_acked
Unexecuted instantiation: fastcgi.c:quicly_maxsender_acked
Unexecuted instantiation: h2olog.c:quicly_maxsender_acked
Unexecuted instantiation: connect.c:quicly_maxsender_acked
Unexecuted instantiation: redirect.c:quicly_maxsender_acked
Unexecuted instantiation: reproxy.c:quicly_maxsender_acked
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_acked
Unexecuted instantiation: self_trace.c:quicly_maxsender_acked
Unexecuted instantiation: server_timing.c:quicly_maxsender_acked
Unexecuted instantiation: status.c:quicly_maxsender_acked
Unexecuted instantiation: events.c:quicly_maxsender_acked
Unexecuted instantiation: memory.c:quicly_maxsender_acked
Unexecuted instantiation: requests.c:quicly_maxsender_acked
Unexecuted instantiation: ssl.c:quicly_maxsender_acked
Unexecuted instantiation: durations.c:quicly_maxsender_acked
125
126
inline void quicly_maxsender_lost(quicly_maxsender_t *m, quicly_maxsender_sent_t *sent)
127
0
{
128
    /* the function must be called at most once (when LOST event occurs, but not EXPIRED), hence assert and always decrement */
129
0
    assert(m->num_inflight != 0);
130
0
    --m->num_inflight;
131
0
    sent->inflight = 0;
132
0
}
Unexecuted instantiation: driver.cc:quicly_maxsender_lost(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: driver_common.cc:quicly_maxsender_lost(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: socket.c:quicly_maxsender_lost
Unexecuted instantiation: config.c:quicly_maxsender_lost
Unexecuted instantiation: configurator.c:quicly_maxsender_lost
Unexecuted instantiation: context.c:quicly_maxsender_lost
Unexecuted instantiation: headers.c:quicly_maxsender_lost
Unexecuted instantiation: request.c:quicly_maxsender_lost
Unexecuted instantiation: util.c:quicly_maxsender_lost
Unexecuted instantiation: access_log.c:quicly_maxsender_lost
Unexecuted instantiation: file.c:quicly_maxsender_lost
Unexecuted instantiation: mimemap.c:quicly_maxsender_lost
Unexecuted instantiation: proxy.c:quicly_maxsender_lost
Unexecuted instantiation: http1.c:quicly_maxsender_lost
Unexecuted instantiation: connection.c:quicly_maxsender_lost
Unexecuted instantiation: scheduler.c:quicly_maxsender_lost
Unexecuted instantiation: stream.c:quicly_maxsender_lost
Unexecuted instantiation: http2_debug_state.c:quicly_maxsender_lost
Unexecuted instantiation: common.c:quicly_maxsender_lost
Unexecuted instantiation: server.c:quicly_maxsender_lost
Unexecuted instantiation: cc-reno.c:quicly_maxsender_lost
Unexecuted instantiation: defaults.c:quicly_maxsender_lost
Unexecuted instantiation: quicly.c:quicly_maxsender_lost
Unexecuted instantiation: sentmap.c:quicly_maxsender_lost
Unexecuted instantiation: streambuf.c:quicly_maxsender_lost
Unexecuted instantiation: http3client.c:quicly_maxsender_lost
Unexecuted instantiation: httpclient.c:quicly_maxsender_lost
Unexecuted instantiation: absprio.c:quicly_maxsender_lost
Unexecuted instantiation: logconf.c:quicly_maxsender_lost
Unexecuted instantiation: compress.c:quicly_maxsender_lost
Unexecuted instantiation: gzip.c:quicly_maxsender_lost
Unexecuted instantiation: headers_util.c:quicly_maxsender_lost
Unexecuted instantiation: frame.c:quicly_maxsender_lost
Unexecuted instantiation: qpack.c:quicly_maxsender_lost
Unexecuted instantiation: cc-cubic.c:quicly_maxsender_lost
Unexecuted instantiation: cc-pico.c:quicly_maxsender_lost
Unexecuted instantiation: loss.c:quicly_maxsender_lost
Unexecuted instantiation: http1client.c:quicly_maxsender_lost
Unexecuted instantiation: http2client.c:quicly_maxsender_lost
Unexecuted instantiation: pipe_sender.c:quicly_maxsender_lost
Unexecuted instantiation: driver_url.cc:quicly_maxsender_lost(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: driver_h3.cc:quicly_maxsender_lost(st_quicly_maxsender_t*, st_quicly_maxsender_sent_t*)
Unexecuted instantiation: quicly_mock.c:quicly_maxsender_lost
Unexecuted instantiation: errordoc.c:quicly_maxsender_lost
Unexecuted instantiation: expires.c:quicly_maxsender_lost
Unexecuted instantiation: fastcgi.c:quicly_maxsender_lost
Unexecuted instantiation: h2olog.c:quicly_maxsender_lost
Unexecuted instantiation: connect.c:quicly_maxsender_lost
Unexecuted instantiation: redirect.c:quicly_maxsender_lost
Unexecuted instantiation: reproxy.c:quicly_maxsender_lost
Unexecuted instantiation: throttle_resp.c:quicly_maxsender_lost
Unexecuted instantiation: self_trace.c:quicly_maxsender_lost
Unexecuted instantiation: server_timing.c:quicly_maxsender_lost
Unexecuted instantiation: status.c:quicly_maxsender_lost
Unexecuted instantiation: events.c:quicly_maxsender_lost
Unexecuted instantiation: memory.c:quicly_maxsender_lost
Unexecuted instantiation: requests.c:quicly_maxsender_lost
Unexecuted instantiation: ssl.c:quicly_maxsender_lost
Unexecuted instantiation: durations.c:quicly_maxsender_lost
133
134
#ifdef __cplusplus
135
}
136
#endif
137
138
#endif