http: switch default parser to llhttp · nodejs/node@2cb8f24 (original) (raw)

1

1

`#include "inspector_socket.h"

`

2

2

``

3

``

`-

#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT

`

4

3

`#define NODE_EXPERIMENTAL_HTTP

`

5

``

`-

#endif

`

6

4

`#include "http_parser_adaptor.h"

`

7

5

``

8

6

`#include "util-inl.h"

`

`@@ -437,13 +435,8 @@ class HttpHandler : public ProtocolHandler {

`

437

435

`explicit HttpHandler(InspectorSocket* inspector, TcpHolder::Pointer tcp)

`

438

436

` : ProtocolHandler(inspector, std::move(tcp)),

`

439

437

` parsing_value_(false) {

`

440

``

`-

#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT

`

441

438

`llhttp_init(&parser_, HTTP_REQUEST, &parser_settings);

`

442

439

`llhttp_settings_init(&parser_settings);

`

443

``

`-

#else /* !NODE_EXPERIMENTAL_HTTP_DEFAULT */

`

444

``

`-

http_parser_init(&parser_, HTTP_REQUEST);

`

445

``

`-

http_parser_settings_init(&parser_settings);

`

446

``

`-

#endif /* NODE_EXPERIMENTAL_HTTP_DEFAULT */

`

447

440

` parser_settings.on_header_field = OnHeaderField;

`

448

441

` parser_settings.on_header_value = OnHeaderValue;

`

449

442

` parser_settings.on_message_complete = OnMessageComplete;

`

`@@ -488,17 +481,12 @@ class HttpHandler : public ProtocolHandler {

`

488

481

``

489

482

`void OnData(std::vector* data) override {

`

490

483

`parser_errno_t err;

`

491

``

`-

#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT

`

492

484

` err = llhttp_execute(&parser_, data->data(), data->size());

`

493

485

``

494

486

`if (err == HPE_PAUSED_UPGRADE) {

`

495

487

` err = HPE_OK;

`

496

488

`llhttp_resume_after_upgrade(&parser_);

`

497

489

` }

`

498

``

`-

#else /* !NODE_EXPERIMENTAL_HTTP_DEFAULT */

`

499

``

`-

http_parser_execute(&parser_, &parser_settings, data->data(), data->size());

`

500

``

`-

err = HTTP_PARSER_ERRNO(&parser_);

`

501

``

`-

#endif /* NODE_EXPERIMENTAL_HTTP_DEFAULT */

`

502

490

` data->clear();

`

503

491

`if (err != HPE_OK) {

`

504

492

`CancelHandshake();

`