Skip to content

Commit 128d2a6

Browse files
deps: update llhttp to 9.3.1
PR-URL: #61827 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent af0d6d4 commit 128d2a6

File tree

5 files changed

+37
-32
lines changed

5 files changed

+37
-32
lines changed

deps/llhttp/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
libllhttp.pc

deps/llhttp/CMakeLists.txt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.25.0)
22
cmake_policy(SET CMP0069 NEW)
33

4-
project(llhttp VERSION 9.3.0)
4+
project(llhttp VERSION 9.3.1)
55
include(GNUInstallDirs)
66

77
set(CMAKE_C_STANDARD 99)
@@ -24,8 +24,8 @@ endif()
2424
# Options
2525
#
2626
# Generic option
27-
option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so)" ON)
28-
option(BUILD_STATIC_LIBS "Build static libraries (.lib/.a)" OFF)
27+
option(LLHTTP_BUILD_SHARED_LIBS "Build shared libraries (.dll/.so)" ON)
28+
option(LLHTTP_BUILD_STATIC_LIBS "Build static libraries (.lib/.a)" OFF)
2929

3030
# Source code
3131
set(LLHTTP_SOURCES
@@ -80,21 +80,19 @@ function(config_library target)
8080
)
8181
endfunction(config_library target)
8282

83-
if(BUILD_SHARED_LIBS)
83+
if(LLHTTP_BUILD_SHARED_LIBS)
8484
add_library(llhttp_shared SHARED
8585
${llhttp_src}
8686
)
8787
add_library(llhttp::llhttp ALIAS llhttp_shared)
8888
config_library(llhttp_shared)
8989
endif()
9090

91-
if(BUILD_STATIC_LIBS)
91+
if(LLHTTP_BUILD_STATIC_LIBS)
9292
add_library(llhttp_static STATIC
9393
${llhttp_src}
9494
)
95-
if(BUILD_SHARED_LIBS)
96-
add_library(llhttp::llhttp ALIAS llhttp_shared)
97-
else()
95+
if(NOT LLHTTP_BUILD_SHARED_LIBS)
9896
add_library(llhttp::llhttp ALIAS llhttp_static)
9997
endif()
10098
config_library(llhttp_static)
@@ -113,6 +111,6 @@ message(STATUS "Project configure summary:")
113111
message(STATUS "")
114112
message(STATUS " CMake build type .................: ${CMAKE_BUILD_TYPE}")
115113
message(STATUS " Install prefix ...................: ${CMAKE_INSTALL_PREFIX}")
116-
message(STATUS " Build shared library .............: ${BUILD_SHARED_LIBS}")
117-
message(STATUS " Build static library .............: ${BUILD_STATIC_LIBS}")
114+
message(STATUS " Build shared library .............: ${LLHTTP_BUILD_SHARED_LIBS}")
115+
message(STATUS " Build static library .............: ${LLHTTP_BUILD_STATIC_LIBS}")
118116
message(STATUS "")

deps/llhttp/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,14 +435,16 @@ If you want to use this library in a CMake project as a static library, you can
435435
FetchContent_Declare(llhttp
436436
URL "https://github.com/nodejs/llhttp/archive/refs/tags/release/v8.1.0.tar.gz")
437437
438-
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "")
439-
set(BUILD_STATIC_LIBS ON CACHE INTERNAL "")
438+
set(LLHTTP_BUILD_SHARED_LIBS OFF CACHE INTERNAL "")
439+
set(LLHTTP_BUILD_STATIC_LIBS ON CACHE INTERNAL "")
440440
FetchContent_MakeAvailable(llhttp)
441441
442442
# Link with the llhttp_static target
443443
target_link_libraries(${EXAMPLE_PROJECT_NAME} ${PROJECT_LIBRARIES} llhttp_static ${PROJECT_NAME})
444444
```
445445

446+
If using a version prior to 9.3.0, the `LLHTTP_BUILD_SHARED_LIBS` and `LLHTTP_BUILD_STATIC_LIBS` options are known as `BUILD_SHARED_LIBS` and `BUILD_STATIC_LIBS` and should be used instead.
447+
446448
_Note that using the git repo directly (e.g., via a git repo url and tag) will not work with FetchContent_Declare because [CMakeLists.txt](./CMakeLists.txt) requires string replacements (e.g., `_RELEASE_`) before it will build._
447449

448450
## Building on Windows

deps/llhttp/include/llhttp.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
#define LLHTTP_VERSION_MAJOR 9
66
#define LLHTTP_VERSION_MINOR 3
7-
#define LLHTTP_VERSION_PATCH 0
7+
#define LLHTTP_VERSION_PATCH 1
88

99
#ifndef INCLUDE_LLHTTP_ITSELF_H_
1010
#define INCLUDE_LLHTTP_ITSELF_H_
@@ -58,10 +58,8 @@ enum llhttp_errno {
5858
HPE_OK = 0,
5959
HPE_INTERNAL = 1,
6060
HPE_STRICT = 2,
61-
HPE_CR_EXPECTED = 25,
6261
HPE_LF_EXPECTED = 3,
6362
HPE_UNEXPECTED_CONTENT_LENGTH = 4,
64-
HPE_UNEXPECTED_SPACE = 30,
6563
HPE_CLOSED_CONNECTION = 5,
6664
HPE_INVALID_METHOD = 6,
6765
HPE_INVALID_URL = 7,
@@ -82,15 +80,17 @@ enum llhttp_errno {
8280
HPE_PAUSED_UPGRADE = 22,
8381
HPE_PAUSED_H2_UPGRADE = 23,
8482
HPE_USER = 24,
83+
HPE_CR_EXPECTED = 25,
8584
HPE_CB_URL_COMPLETE = 26,
8685
HPE_CB_STATUS_COMPLETE = 27,
87-
HPE_CB_METHOD_COMPLETE = 32,
88-
HPE_CB_VERSION_COMPLETE = 33,
8986
HPE_CB_HEADER_FIELD_COMPLETE = 28,
9087
HPE_CB_HEADER_VALUE_COMPLETE = 29,
88+
HPE_UNEXPECTED_SPACE = 30,
89+
HPE_CB_RESET = 31,
90+
HPE_CB_METHOD_COMPLETE = 32,
91+
HPE_CB_VERSION_COMPLETE = 33,
9192
HPE_CB_CHUNK_EXTENSION_NAME_COMPLETE = 34,
9293
HPE_CB_CHUNK_EXTENSION_VALUE_COMPLETE = 35,
93-
HPE_CB_RESET = 31,
9494
HPE_CB_PROTOCOL_COMPLETE = 38
9595
};
9696
typedef enum llhttp_errno llhttp_errno_t;
@@ -294,10 +294,8 @@ typedef enum llhttp_status llhttp_status_t;
294294
XX(0, OK, OK) \
295295
XX(1, INTERNAL, INTERNAL) \
296296
XX(2, STRICT, STRICT) \
297-
XX(25, CR_EXPECTED, CR_EXPECTED) \
298297
XX(3, LF_EXPECTED, LF_EXPECTED) \
299298
XX(4, UNEXPECTED_CONTENT_LENGTH, UNEXPECTED_CONTENT_LENGTH) \
300-
XX(30, UNEXPECTED_SPACE, UNEXPECTED_SPACE) \
301299
XX(5, CLOSED_CONNECTION, CLOSED_CONNECTION) \
302300
XX(6, INVALID_METHOD, INVALID_METHOD) \
303301
XX(7, INVALID_URL, INVALID_URL) \
@@ -318,15 +316,17 @@ typedef enum llhttp_status llhttp_status_t;
318316
XX(22, PAUSED_UPGRADE, PAUSED_UPGRADE) \
319317
XX(23, PAUSED_H2_UPGRADE, PAUSED_H2_UPGRADE) \
320318
XX(24, USER, USER) \
319+
XX(25, CR_EXPECTED, CR_EXPECTED) \
321320
XX(26, CB_URL_COMPLETE, CB_URL_COMPLETE) \
322321
XX(27, CB_STATUS_COMPLETE, CB_STATUS_COMPLETE) \
323-
XX(32, CB_METHOD_COMPLETE, CB_METHOD_COMPLETE) \
324-
XX(33, CB_VERSION_COMPLETE, CB_VERSION_COMPLETE) \
325322
XX(28, CB_HEADER_FIELD_COMPLETE, CB_HEADER_FIELD_COMPLETE) \
326323
XX(29, CB_HEADER_VALUE_COMPLETE, CB_HEADER_VALUE_COMPLETE) \
324+
XX(30, UNEXPECTED_SPACE, UNEXPECTED_SPACE) \
325+
XX(31, CB_RESET, CB_RESET) \
326+
XX(32, CB_METHOD_COMPLETE, CB_METHOD_COMPLETE) \
327+
XX(33, CB_VERSION_COMPLETE, CB_VERSION_COMPLETE) \
327328
XX(34, CB_CHUNK_EXTENSION_NAME_COMPLETE, CB_CHUNK_EXTENSION_NAME_COMPLETE) \
328329
XX(35, CB_CHUNK_EXTENSION_VALUE_COMPLETE, CB_CHUNK_EXTENSION_VALUE_COMPLETE) \
329-
XX(31, CB_RESET, CB_RESET) \
330330
XX(38, CB_PROTOCOL_COMPLETE, CB_PROTOCOL_COMPLETE) \
331331

332332

deps/llhttp/src/llhttp.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#endif /* _MSC_VER */
1111
#endif /* __SSE4_2__ */
1212

13-
#ifdef __ARM_NEON__
13+
#if defined(__ARM_NEON__) || defined(__ARM_NEON)
1414
#include <arm_neon.h>
1515
#endif /* __ARM_NEON__ */
1616

@@ -1542,7 +1542,7 @@ static llparse_state_t llhttp__internal__run(
15421542
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15431543
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
15441544
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1545-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1545+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
15461546
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15471547
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15481548
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -2625,7 +2625,7 @@ static llparse_state_t llhttp__internal__run(
26252625
goto s_n_llhttp__internal__n_header_value_otherwise;
26262626
}
26272627
#endif /* __SSE4_2__ */
2628-
#ifdef __ARM_NEON__
2628+
#if defined(__ARM_NEON__) || defined(__ARM_NEON)
26292629
while (endp - p >= 16) {
26302630
uint8x16_t input;
26312631
uint8x16_t single;
@@ -2639,19 +2639,23 @@ static llparse_state_t llhttp__internal__run(
26392639
/* Find first character that does not match `ranges` */
26402640
single = vceqq_u8(input, vdupq_n_u8(0x9));
26412641
mask = single;
2642-
single = vandq_u16(
2642+
single = vandq_u8(
26432643
vcgeq_u8(input, vdupq_n_u8(' ')),
26442644
vcleq_u8(input, vdupq_n_u8('~'))
26452645
);
2646-
mask = vorrq_u16(mask, single);
2647-
single = vandq_u16(
2646+
mask = vorrq_u8(mask, single);
2647+
single = vandq_u8(
26482648
vcgeq_u8(input, vdupq_n_u8(0x80)),
26492649
vcleq_u8(input, vdupq_n_u8(0xff))
26502650
);
2651-
mask = vorrq_u16(mask, single);
2652-
narrow = vshrn_n_u16(mask, 4);
2651+
mask = vorrq_u8(mask, single);
2652+
narrow = vshrn_n_u16(vreinterpretq_u16_u8(mask), 4);
26532653
match_mask = ~vget_lane_u64(vreinterpret_u64_u8(narrow), 0);
2654-
match_len = __builtin_ctzll(match_mask) >> 2;
2654+
if (match_mask == 0) {
2655+
match_len = 16;
2656+
} else {
2657+
match_len = __builtin_ctzll(match_mask) >> 2;
2658+
}
26552659
if (match_len != 16) {
26562660
p += match_len;
26572661
goto s_n_llhttp__internal__n_header_value_otherwise;

0 commit comments

Comments
 (0)