vendor : update cpp-httplib to 0.46.1 (#23980)
Signed-off-by: Adrien Gallouët <angt@huggingface.co>
This commit is contained in:
@@ -5,7 +5,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
HTTPLIB_VERSION = "refs/tags/v0.46.0"
|
HTTPLIB_VERSION = "refs/tags/v0.46.1"
|
||||||
|
|
||||||
vendor = {
|
vendor = {
|
||||||
"https://github.com/nlohmann/json/releases/latest/download/json.hpp": "vendor/nlohmann/json.hpp",
|
"https://github.com/nlohmann/json/releases/latest/download/json.hpp": "vendor/nlohmann/json.hpp",
|
||||||
|
|||||||
Vendored
+26
-10
@@ -1832,7 +1832,7 @@ int getaddrinfo_with_timeout(const char *node, const char *service,
|
|||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Windows-specific implementation using GetAddrInfoEx with overlapped I/O
|
// Windows-specific implementation using GetAddrInfoEx with overlapped I/O
|
||||||
OVERLAPPED overlapped = {0};
|
OVERLAPPED overlapped = {};
|
||||||
HANDLE event = CreateEventW(nullptr, TRUE, FALSE, nullptr);
|
HANDLE event = CreateEventW(nullptr, TRUE, FALSE, nullptr);
|
||||||
if (!event) { return EAI_FAIL; }
|
if (!event) { return EAI_FAIL; }
|
||||||
|
|
||||||
@@ -1841,7 +1841,7 @@ int getaddrinfo_with_timeout(const char *node, const char *service,
|
|||||||
PADDRINFOEXW result_addrinfo = nullptr;
|
PADDRINFOEXW result_addrinfo = nullptr;
|
||||||
HANDLE cancel_handle = nullptr;
|
HANDLE cancel_handle = nullptr;
|
||||||
|
|
||||||
ADDRINFOEXW hints_ex = {0};
|
ADDRINFOEXW hints_ex = {};
|
||||||
if (hints) {
|
if (hints) {
|
||||||
hints_ex.ai_flags = hints->ai_flags;
|
hints_ex.ai_flags = hints->ai_flags;
|
||||||
hints_ex.ai_family = hints->ai_family;
|
hints_ex.ai_family = hints->ai_family;
|
||||||
@@ -9912,13 +9912,28 @@ bool ClientImpl::process_request(Stream &strm, Request &req,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Handle Expect: 100-continue with timeout
|
// Handle Expect: 100-continue.
|
||||||
if (expect_100_continue && CPPHTTPLIB_EXPECT_100_TIMEOUT_MSECOND > 0) {
|
//
|
||||||
time_t sec = CPPHTTPLIB_EXPECT_100_TIMEOUT_MSECOND / 1000;
|
// Wait for an interim/early response by attempting to read the status line
|
||||||
time_t usec = (CPPHTTPLIB_EXPECT_100_TIMEOUT_MSECOND % 1000) * 1000;
|
// under a short timeout, instead of trusting raw socket readability. Over
|
||||||
auto ret = detail::select_read(strm.socket(), sec, usec);
|
// TLS, post-handshake records (e.g. session tickets) make the socket
|
||||||
if (ret <= 0) {
|
// readable without any HTTP response being available; relying on
|
||||||
// Timeout or error: send body anyway (server didn't respond in time)
|
// `select_read` there caused the body to be withheld forever and the
|
||||||
|
// request to fail with `Read` (#2458). If no status line arrives within the
|
||||||
|
// timeout, send the body anyway (matching curl's behavior).
|
||||||
|
auto status_line_read = false;
|
||||||
|
if (expect_100_continue && write_request_success) {
|
||||||
|
if (CPPHTTPLIB_EXPECT_100_TIMEOUT_MSECOND > 0) {
|
||||||
|
time_t sec = CPPHTTPLIB_EXPECT_100_TIMEOUT_MSECOND / 1000;
|
||||||
|
time_t usec = (CPPHTTPLIB_EXPECT_100_TIMEOUT_MSECOND % 1000) * 1000;
|
||||||
|
strm.set_read_timeout(sec, usec);
|
||||||
|
status_line_read = read_response_line(strm, req, res, false);
|
||||||
|
strm.set_read_timeout(read_timeout_sec_, read_timeout_usec_);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!status_line_read) {
|
||||||
|
// No interim response within the timeout: send the body and handle the
|
||||||
|
// response as usual.
|
||||||
if (!write_request_body(strm, req, error)) { return false; }
|
if (!write_request_body(strm, req, error)) { return false; }
|
||||||
expect_100_continue = false; // Switch to normal response handling
|
expect_100_continue = false; // Switch to normal response handling
|
||||||
}
|
}
|
||||||
@@ -9926,7 +9941,8 @@ bool ClientImpl::process_request(Stream &strm, Request &req,
|
|||||||
|
|
||||||
// Receive response and headers
|
// Receive response and headers
|
||||||
// When using Expect: 100-continue, don't auto-skip `100 Continue` response
|
// When using Expect: 100-continue, don't auto-skip `100 Continue` response
|
||||||
if (!read_response_line(strm, req, res, !expect_100_continue) ||
|
if ((!status_line_read &&
|
||||||
|
!read_response_line(strm, req, res, !expect_100_continue)) ||
|
||||||
!detail::read_headers(strm, res.headers)) {
|
!detail::read_headers(strm, res.headers)) {
|
||||||
if (write_request_success) { error = Error::Read; }
|
if (write_request_success) { error = Error::Read; }
|
||||||
output_error_log(error, &req);
|
output_error_log(error, &req);
|
||||||
|
|||||||
Vendored
+2
-2
@@ -8,8 +8,8 @@
|
|||||||
#ifndef CPPHTTPLIB_HTTPLIB_H
|
#ifndef CPPHTTPLIB_HTTPLIB_H
|
||||||
#define CPPHTTPLIB_HTTPLIB_H
|
#define CPPHTTPLIB_HTTPLIB_H
|
||||||
|
|
||||||
#define CPPHTTPLIB_VERSION "0.46.0"
|
#define CPPHTTPLIB_VERSION "0.46.1"
|
||||||
#define CPPHTTPLIB_VERSION_NUM "0x002e00"
|
#define CPPHTTPLIB_VERSION_NUM "0x002e01"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0A00
|
#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0A00
|
||||||
|
|||||||
Reference in New Issue
Block a user