You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For more information on API usage, please refer to [src/native/api.h](https://github.com/nodejs/llhttp/blob/main/src/native/api.h).
@@ -287,7 +279,7 @@ protocol support to highly non-compliant clients/server.
287
279
No `HPE_INVALID_HEADER_TOKEN` will be raised for incorrect header values when
288
280
lenient parsing is "on".
289
281
290
-
**Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!**
282
+
**USE AT YOUR OWN RISK!**
291
283
292
284
### `void llhttp_set_lenient_chunked_length(llhttp_t* parser, int enabled)`
293
285
@@ -300,22 +292,23 @@ conjunction with `Content-Length`.
300
292
This error is important to prevent HTTP request smuggling, but may be less desirable
301
293
for small number of cases involving legacy servers.
302
294
303
-
**Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!**
295
+
**USE AT YOUR OWN RISK!**
304
296
305
297
### `void llhttp_set_lenient_keep_alive(llhttp_t* parser, int enabled)`
306
298
307
299
Enables/disables lenient handling of `Connection: close` and HTTP/1.0
308
300
requests responses.
309
301
310
-
Normally `llhttp` would error the HTTP request/response
311
-
after the request/response with `Connection: close` and `Content-Length`.
302
+
Normally `llhttp` would error on (in strict mode) or discard (in loose mode)
303
+
the HTTP request/response after the request/response with `Connection: close`
304
+
and `Content-Length`.
312
305
313
306
This is important to prevent cache poisoning attacks,
314
307
but might interact badly with outdated and insecure clients.
315
308
316
309
With this flag the extra request/response will be parsed normally.
317
310
318
-
**Enabling this flag can pose a security issue since you will be exposed to poisoning attacks. USE WITH CAUTION!**
311
+
**USE AT YOUR OWN RISK!**
319
312
320
313
### `void llhttp_set_lenient_transfer_encoding(llhttp_t* parser, int enabled)`
321
314
@@ -330,74 +323,14 @@ avoid request smuggling.
330
323
331
324
With this flag the extra value will be parsed normally.
332
325
333
-
**Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!**
334
-
335
-
### `void llhttp_set_lenient_version(llhttp_t* parser, int enabled)`
336
-
337
-
Enables/disables lenient handling of HTTP version.
338
-
339
-
Normally `llhttp` would error when the HTTP version in the request or status line
340
-
is not `0.9`, `1.0`, `1.1` or `2.0`.
341
-
With this flag the extra value will be parsed normally.
342
-
343
-
**Enabling this flag can pose a security issue since you will allow unsupported HTTP versions. USE WITH CAUTION!**
344
-
345
-
### `void llhttp_set_lenient_data_after_close(llhttp_t* parser, int enabled)`
346
-
347
-
Enables/disables lenient handling of additional data received after a message ends
348
-
and keep-alive is disabled.
349
-
350
-
Normally `llhttp` would error when additional unexpected data is received if the message
351
-
contains the `Connection` header with `close` value.
352
-
With this flag the extra data will discarded without throwing an error.
353
-
354
-
**Enabling this flag can pose a security issue since you will be exposed to poisoning attacks. USE WITH CAUTION!**
355
-
356
-
### `void llhttp_set_lenient_optional_lf_after_cr(llhttp_t* parser, int enabled)`
357
-
358
-
Enables/disables lenient handling of incomplete CRLF sequences.
359
-
360
-
Normally `llhttp` would error when a CR is not followed by LF when terminating the
361
-
request line, the status line, the headers or a chunk header.
362
-
With this flag only a CR is required to terminate such sections.
363
-
364
-
**Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!**
365
-
366
-
### `void llhttp_set_lenient_optional_cr_before_lf(llhttp_t* parser, int enabled)`
367
-
368
-
Enables/disables lenient handling of line separators.
369
-
370
-
Normally `llhttp` would error when a LF is not preceded by CR when terminating the
371
-
request line, the status line, the headers, a chunk header or a chunk data.
372
-
With this flag only a LF is required to terminate such sections.
373
-
374
-
**Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!**
375
-
376
-
### `void llhttp_set_lenient_optional_crlf_after_chunk(llhttp_t* parser, int enabled)`
377
-
378
-
Enables/disables lenient handling of chunks not separated via CRLF.
379
-
380
-
Normally `llhttp` would error when after a chunk data a CRLF is missing before
381
-
starting a new chunk.
382
-
With this flag the new chunk can start immediately after the previous one.
383
-
384
-
**Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!**
385
-
386
-
### `void llhttp_set_lenient_spaces_after_chunk_size(llhttp_t* parser, int enabled)`
387
-
388
-
Enables/disables lenient handling of spaces after chunk size.
389
-
390
-
Normally `llhttp` would error when after a chunk size is followed by one or more spaces are present instead of a CRLF or `;`.
391
-
With this flag this check is disabled.
392
-
393
-
**Enabling this flag can pose a security issue since you will be exposed to request smuggling attacks. USE WITH CAUTION!**
326
+
**USE AT YOUR OWN RISK!**
394
327
395
328
## Build Instructions
396
329
397
330
Make sure you have [Node.js](https://nodejs.org/), npm and npx installed. Then under project directory run:
398
331
399
332
```sh
400
-
npm ci
333
+
npm install
401
334
make
402
335
```
403
336
@@ -451,7 +384,7 @@ _Note that using the git repo directly (e.g., via a git repo url and tag) will n
451
384
452
385
1. Ensure that `Clang` and `make` are in your system path.
453
386
2. Using Git Bash, clone the repo to your preferred location.
454
-
3. Cd into the cloned directory and run `npm ci`
387
+
3. Cd into the cloned directory and run `npm install`
455
388
5. Run `make`
456
389
6. Your `repo/build` directory should now have `libllhttp.a` and `libllhttp.so` static and dynamic libraries.
457
390
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`.
0 commit comments