Commit b5d74d7c authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

Bump llhttp to 836430e892862ed6462f6197417eba8e17378956

parent 385abf10
...@@ -90,7 +90,16 @@ if (err == HPE_OK) { ...@@ -90,7 +90,16 @@ if (err == HPE_OK) {
parser.reason); parser.reason);
} }
``` ```
For more information on API usage, please refer to [src/native/api.h](https://github.com/nodejs/llhttp/blob/master/src/native/api.h). For more information on API usage, please refer to [src/native/api.h](https://github.com/nodejs/llhttp/blob/main/src/native/api.h).
## Build Instructions
Make sure you have [Node.js](https://nodejs.org/), npm and npx installed. Then under project directory run:
```sh
npm install
make
```
--- ---
...@@ -99,6 +108,41 @@ For more information on API usage, please refer to [src/native/api.h](https://gi ...@@ -99,6 +108,41 @@ For more information on API usage, please refer to [src/native/api.h](https://gi
* Python: [pallas/pyllhttp][8] * Python: [pallas/pyllhttp][8]
* Ruby: [metabahn/llhttp][9] * Ruby: [metabahn/llhttp][9]
### Using with CMake
If you want to use this library in a CMake project you can use the snippet below.
```
FetchContent_Declare(llhttp
URL "https://github.com/nodejs/llhttp/releases/download/v6.0.5/llhttp-release-v6.0.5.tar.gz") # Using version 6.0.5
FetchContent_MakeAvailable(llhttp)
target_link_libraries(${EXAMPLE_PROJECT_NAME} ${PROJECT_LIBRARIES} llhttp ${PROJECT_NAME})
```
## Building on Windows
### Installation
* `choco install git`
* `choco install node`
* `choco install llvm` (or install the `C++ Clang tools for Windows` optional package from the Visual Studio 2019 installer)
* `choco install make` (or if you have MinGW, it comes bundled)
1. Ensure that `Clang` and `make` are in your system path.
2. Using Git Bash, clone the repo to your preferred location.
3. Cd into the cloned directory and run `npm install`
5. Run `make`
6. Your `repo/build` directory should now have `libllhttp.a` and `libllhttp.so` static and dynamic libraries.
7. When building your executable, you can link to these libraries. Make sure to set the build folder as an include path when building so you can reference the declarations in `repo/build/llhttp.h`.
### A simple example on linking with the library:
Assuming you have an executable `main.cpp` in your current working directory, you would run: `clang++ -Os -g3 -Wall -Wextra -Wno-unused-parameter -I/path/to/llhttp/build main.cpp /path/to/llhttp/build/libllhttp.a -o main.exe`.
If you are getting `unresolved external symbol` linker errors you are likely attempting to build `llhttp.c` without linking it with object files from `api.c` and `http.c`.
#### LICENSE #### LICENSE
This software is licensed under the MIT License. This software is licensed under the MIT License.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#define LLHTTP_VERSION_MAJOR 6 #define LLHTTP_VERSION_MAJOR 6
#define LLHTTP_VERSION_MINOR 0 #define LLHTTP_VERSION_MINOR 0
#define LLHTTP_VERSION_PATCH 2 #define LLHTTP_VERSION_PATCH 6
#ifndef LLHTTP_STRICT_MODE #ifndef LLHTTP_STRICT_MODE
# define LLHTTP_STRICT_MODE 0 # define LLHTTP_STRICT_MODE 0
...@@ -374,8 +374,6 @@ LLHTTP_EXPORT ...@@ -374,8 +374,6 @@ LLHTTP_EXPORT
void llhttp_init(llhttp_t* parser, llhttp_type_t type, void llhttp_init(llhttp_t* parser, llhttp_type_t type,
const llhttp_settings_t* settings); const llhttp_settings_t* settings);
#if defined(__wasm__)
LLHTTP_EXPORT LLHTTP_EXPORT
llhttp_t* llhttp_alloc(llhttp_type_t type); llhttp_t* llhttp_alloc(llhttp_type_t type);
...@@ -400,8 +398,6 @@ int llhttp_get_status_code(llhttp_t* parser); ...@@ -400,8 +398,6 @@ int llhttp_get_status_code(llhttp_t* parser);
LLHTTP_EXPORT LLHTTP_EXPORT
uint8_t llhttp_get_upgrade(llhttp_t* parser); uint8_t llhttp_get_upgrade(llhttp_t* parser);
#endif // defined(__wasm__)
/* Reset an already initialized parser back to the start state, preserving the /* Reset an already initialized parser back to the start state, preserving the
* existing parser type, callback settings, user data, and lenient flags. * existing parser type, callback settings, user data, and lenient flags.
*/ */
......
...@@ -46,17 +46,23 @@ extern int wasm_on_url(llhttp_t* p, const char* at, size_t length); ...@@ -46,17 +46,23 @@ extern int wasm_on_url(llhttp_t* p, const char* at, size_t length);
extern int wasm_on_status(llhttp_t* p, const char* at, size_t length); extern int wasm_on_status(llhttp_t* p, const char* at, size_t length);
extern int wasm_on_header_field(llhttp_t* p, const char* at, size_t length); extern int wasm_on_header_field(llhttp_t* p, const char* at, size_t length);
extern int wasm_on_header_value(llhttp_t* p, const char* at, size_t length); extern int wasm_on_header_value(llhttp_t* p, const char* at, size_t length);
extern int wasm_on_headers_complete(llhttp_t * p); extern int wasm_on_headers_complete(llhttp_t * p, int status_code,
uint8_t upgrade, int should_keep_alive);
extern int wasm_on_body(llhttp_t* p, const char* at, size_t length); extern int wasm_on_body(llhttp_t* p, const char* at, size_t length);
extern int wasm_on_message_complete(llhttp_t * p); extern int wasm_on_message_complete(llhttp_t * p);
static int wasm_on_headers_complete_wrap(llhttp_t* p) {
return wasm_on_headers_complete(p, p->status_code, p->upgrade,
llhttp_should_keep_alive(p));
}
const llhttp_settings_t wasm_settings = { const llhttp_settings_t wasm_settings = {
wasm_on_message_begin, wasm_on_message_begin,
wasm_on_url, wasm_on_url,
wasm_on_status, wasm_on_status,
wasm_on_header_field, wasm_on_header_field,
wasm_on_header_value, wasm_on_header_value,
wasm_on_headers_complete, wasm_on_headers_complete_wrap,
wasm_on_body, wasm_on_body,
wasm_on_message_complete, wasm_on_message_complete,
NULL, NULL,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment