diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-11-30 07:39:02 +0100 |
---|---|---|
committer | Daniel Bevenius <daniel.bevenius@gmail.com> | 2018-12-06 05:21:36 +0100 |
commit | aa943d098e0299ea87485a607353d152f5ea5012 (patch) | |
tree | b3f2cd52efc4568d5f7deb6ca99684e2f5d22a62 /src/inspector_socket.cc | |
parent | 7bcbf044ddc864be9d6c711a75f3a33b6a3c652e (diff) | |
download | android-node-v8-aa943d098e0299ea87485a607353d152f5ea5012.tar.gz android-node-v8-aa943d098e0299ea87485a607353d152f5ea5012.tar.bz2 android-node-v8-aa943d098e0299ea87485a607353d152f5ea5012.zip |
http: make parser choice a runtime flag
Add a `--http-parser=llhttp` vs `--http-parser=traditional`
command line switch, to make testing and comparing the new
llhttp-based implementation easier.
PR-URL: https://github.com/nodejs/node/pull/24739
Refs: https://github.com/nodejs/node/issues/24730
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Matheus Marchini <mat@mmarchini.me>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'src/inspector_socket.cc')
-rw-r--r-- | src/inspector_socket.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/inspector_socket.cc b/src/inspector_socket.cc index 8c2d0a5a22..dcc42f25b4 100644 --- a/src/inspector_socket.cc +++ b/src/inspector_socket.cc @@ -1,6 +1,10 @@ #include "inspector_socket.h" +#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT +#define NODE_EXPERIMENTAL_HTTP +#endif #include "http_parser_adaptor.h" + #include "util-inl.h" #define NODE_WANT_INTERNALS 1 @@ -433,13 +437,13 @@ class HttpHandler : public ProtocolHandler { explicit HttpHandler(InspectorSocket* inspector, TcpHolder::Pointer tcp) : ProtocolHandler(inspector, std::move(tcp)), parsing_value_(false) { -#ifdef NODE_EXPERIMENTAL_HTTP +#ifdef NODE_EXPERIMENTAL_HTTP_DEFAULT llhttp_init(&parser_, HTTP_REQUEST, &parser_settings); llhttp_settings_init(&parser_settings); -#else /* !NODE_EXPERIMENTAL_HTTP */ +#else /* !NODE_EXPERIMENTAL_HTTP_DEFAULT */ http_parser_init(&parser_, HTTP_REQUEST); http_parser_settings_init(&parser_settings); -#endif /* NODE_EXPERIMENTAL_HTTP */ +#endif /* NODE_EXPERIMENTAL_HTTP_DEFAULT */ parser_settings.on_header_field = OnHeaderField; parser_settings.on_header_value = OnHeaderValue; parser_settings.on_message_complete = OnMessageComplete; @@ -484,17 +488,17 @@ class HttpHandler : public ProtocolHandler { void OnData(std::vector<char>* data) override { parser_errno_t err; -#ifdef NODE_EXPERIMENTAL_HTTP +#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 */ +#else /* !NODE_EXPERIMENTAL_HTTP_DEFAULT */ http_parser_execute(&parser_, &parser_settings, data->data(), data->size()); err = HTTP_PARSER_ERRNO(&parser_); -#endif /* NODE_EXPERIMENTAL_HTTP */ +#endif /* NODE_EXPERIMENTAL_HTTP_DEFAULT */ data->clear(); if (err != HPE_OK) { CancelHandshake(); |