summaryrefslogtreecommitdiff
path: root/src/inspector_socket.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-11-30 07:39:02 +0100
committerDaniel Bevenius <daniel.bevenius@gmail.com>2018-12-06 05:21:36 +0100
commitaa943d098e0299ea87485a607353d152f5ea5012 (patch)
treeb3f2cd52efc4568d5f7deb6ca99684e2f5d22a62 /src/inspector_socket.cc
parent7bcbf044ddc864be9d6c711a75f3a33b6a3c652e (diff)
downloadandroid-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.cc16
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();