mirror of
https://github.com/curl/curl.git
synced 2026-08-25 00:43:34 +03:00
http2: support HTTP/2 to forward proxies, non-tunneling
- with `--proxy-http2` allow h2 ALPN negotiation to forward proxies - applies to http: requests against a https: proxy only, as https: requests will auto-tunnel - adding a HTTP/1 request parser in http1.c - removed h2h3.c - using new request parser in nghttp2 and all h3 backends - adding test 2603 for request parser - adding h2 proxy test cases to test_10_* scorecard.py: request scoring accidentally always run curl with '-v'. Removed that, expect double numbers. labeller: added http1.* and h2-proxy sources to detection Closes #10967
This commit is contained in:
parent
fb1d62ff07
commit
fc2f1e547a
28 changed files with 1522 additions and 824 deletions
22
lib/bufq.c
22
lib/bufq.c
|
|
@ -142,6 +142,21 @@ static size_t chunk_skip(struct buf_chunk *chunk, size_t amount)
|
|||
return n;
|
||||
}
|
||||
|
||||
static void chunk_shift(struct buf_chunk *chunk)
|
||||
{
|
||||
if(chunk->r_offset) {
|
||||
if(!chunk_is_empty(chunk)) {
|
||||
size_t n = chunk->w_offset - chunk->r_offset;
|
||||
memmove(chunk->x.data, chunk->x.data + chunk->r_offset, n);
|
||||
chunk->w_offset -= chunk->r_offset;
|
||||
chunk->r_offset = 0;
|
||||
}
|
||||
else {
|
||||
chunk->r_offset = chunk->w_offset = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void chunk_list_free(struct buf_chunk **anchor)
|
||||
{
|
||||
struct buf_chunk *chunk;
|
||||
|
|
@ -479,6 +494,13 @@ void Curl_bufq_skip(struct bufq *q, size_t amount)
|
|||
}
|
||||
}
|
||||
|
||||
void Curl_bufq_skip_and_shift(struct bufq *q, size_t amount)
|
||||
{
|
||||
Curl_bufq_skip(q, amount);
|
||||
if(q->tail)
|
||||
chunk_shift(q->tail);
|
||||
}
|
||||
|
||||
ssize_t Curl_bufq_pass(struct bufq *q, Curl_bufq_writer *writer,
|
||||
void *writer_ctx, CURLcode *err)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue