From 790300ddceb417f8ab63ad71d6ba0b0994ac342b Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 5 Dec 2018 20:42:10 +0100 Subject: [PATCH] http: switch default parser to llhttp Refs: https://github.com/nodejs/node/pull/24739 Fixes: https://github.com/nodejs/node/issues/24730 --- configure.py | 5 +---- doc/api/cli.md | 2 +- node.gyp | 1 - node.gypi | 4 ---- src/inspector_socket.cc | 12 ------------ src/node_options.cc | 4 ---- src/node_options.h | 7 +------ 7 files changed, 3 insertions(+), 32 deletions(-) diff --git a/configure.py b/configure.py index 1bef01baef5fbc..350020783ec60c 100755 --- a/configure.py +++ b/configure.py @@ -187,7 +187,7 @@ parser.add_option('--experimental-http-parser', action='store_true', dest='experimental_http_parser', - help='use llhttp instead of http_parser by default') + help='(no-op)') shared_optgroup.add_option('--shared-http-parser', action='store_true', @@ -1117,9 +1117,6 @@ def configure_node(o): else: o['variables']['node_target_type'] = 'executable' - o['variables']['node_experimental_http_parser'] = \ - b(options.experimental_http_parser) - def configure_library(lib, output): shared_lib = 'shared_' + lib output['variables']['node_' + shared_lib] = b(getattr(options, shared_lib)) diff --git a/doc/api/cli.md b/doc/api/cli.md index aa4d28c9fe1d8c..10ba68b81cdf47 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -129,7 +129,7 @@ Chooses an HTTP parser library. Available values are: - `llhttp` for https://llhttp.org/ - `legacy` for https://github.com/nodejs/http-parser -The default is `legacy`, unless otherwise specified when building Node.js. +The default is `llhttp`, unless otherwise specified when building Node.js. This flag exists to aid in experimentation with the internal implementation of the Node.js http parser. diff --git a/node.gyp b/node.gyp index 7e8867e971aec3..cf334c4acec13d 100644 --- a/node.gyp +++ b/node.gyp @@ -12,7 +12,6 @@ 'force_dynamic_crt%': 0, 'node_module_version%': '', 'node_shared_zlib%': 'false', - 'node_experimental_http_parser%': 'false', 'node_shared_http_parser%': 'false', 'node_shared_cares%': 'false', 'node_shared_libuv%': 'false', diff --git a/node.gypi b/node.gypi index 4bfaa01ff3e422..7bcd0a42b4f55a 100644 --- a/node.gypi +++ b/node.gypi @@ -163,10 +163,6 @@ ], }], - [ 'node_experimental_http_parser=="true"', { - 'defines': [ 'NODE_EXPERIMENTAL_HTTP_DEFAULT' ], - } ], - [ 'node_shared_http_parser=="false"', { 'dependencies': [ 'deps/http_parser/http_parser.gyp:http_parser', diff --git a/src/inspector_socket.cc b/src/inspector_socket.cc index dcc42f25b4acb8..511f144c3f8e1d 100644 --- a/src/inspector_socket.cc +++ b/src/inspector_socket.cc @@ -1,8 +1,6 @@ #include "inspector_socket.h" -#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT #define NODE_EXPERIMENTAL_HTTP -#endif #include "http_parser_adaptor.h" #include "util-inl.h" @@ -437,13 +435,8 @@ class HttpHandler : public ProtocolHandler { explicit HttpHandler(InspectorSocket* inspector, TcpHolder::Pointer tcp) : ProtocolHandler(inspector, std::move(tcp)), parsing_value_(false) { -#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT llhttp_init(&parser_, HTTP_REQUEST, &parser_settings); llhttp_settings_init(&parser_settings); -#else /* !NODE_EXPERIMENTAL_HTTP_DEFAULT */ - http_parser_init(&parser_, HTTP_REQUEST); - http_parser_settings_init(&parser_settings); -#endif /* NODE_EXPERIMENTAL_HTTP_DEFAULT */ parser_settings.on_header_field = OnHeaderField; parser_settings.on_header_value = OnHeaderValue; parser_settings.on_message_complete = OnMessageComplete; @@ -488,17 +481,12 @@ class HttpHandler : public ProtocolHandler { void OnData(std::vector* data) override { parser_errno_t err; -#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT err = llhttp_execute(&parser_, data->data(), data->size()); if (err == HPE_PAUSED_UPGRADE) { err = HPE_OK; llhttp_resume_after_upgrade(&parser_); } -#else /* !NODE_EXPERIMENTAL_HTTP_DEFAULT */ - http_parser_execute(&parser_, &parser_settings, data->data(), data->size()); - err = HTTP_PARSER_ERRNO(&parser_); -#endif /* NODE_EXPERIMENTAL_HTTP_DEFAULT */ data->clear(); if (err != HPE_OK) { CancelHandshake(); diff --git a/src/node_options.cc b/src/node_options.cc index 885501839c6012..9fdb1b04e085bc 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -109,11 +109,7 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() { AddOption("--expose-internals", "", &EnvironmentOptions::expose_internals); AddOption("--http-parser", "Select which HTTP parser to use; either 'legacy' or 'llhttp' " -#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT "(default: llhttp).", -#else - "(default: legacy).", -#endif &EnvironmentOptions::http_parser, kAllowedInEnvironment); AddOption("--loader", diff --git a/src/node_options.h b/src/node_options.h index dfe7ff6c5e1e3c..a812e8ad9caf8a 100644 --- a/src/node_options.h +++ b/src/node_options.h @@ -72,12 +72,7 @@ class EnvironmentOptions : public Options { bool experimental_vm_modules = false; bool experimental_worker = false; bool expose_internals = false; - std::string http_parser = -#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT - "llhttp"; -#else - "legacy"; -#endif + std::string http_parser = "llhttp"; bool no_deprecation = false; bool no_force_async_hooks_checks = false; bool no_warnings = false;