aboutsummaryrefslogtreecommitdiff
path: root/src/node_http2.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2017-10-24 23:25:02 +0200
committerAnna Henningsen <anna@addaleax.net>2017-10-30 21:59:18 +0100
commit0c90c9c9438f58bf5819abd77b6de1cfa12ce7c2 (patch)
treed46953acc466b2756e23a10c195c56ce109d8fe4 /src/node_http2.cc
parent41aaacb6b19d047edf71559c3adf48a20aa1b6b0 (diff)
downloadandroid-node-v8-0c90c9c9438f58bf5819abd77b6de1cfa12ce7c2.tar.gz
android-node-v8-0c90c9c9438f58bf5819abd77b6de1cfa12ce7c2.tar.bz2
android-node-v8-0c90c9c9438f58bf5819abd77b6de1cfa12ce7c2.zip
http2: track async state for sending
Sending pending data may involve running arbitrary JavaScript code. Therefore, it should involve a callback scope. PR-URL: https://github.com/nodejs/node/pull/16461 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Diffstat (limited to 'src/node_http2.cc')
-rw-r--r--src/node_http2.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/node_http2.cc b/src/node_http2.cc
index 9c8f1293ac..9f5273c550 100644
--- a/src/node_http2.cc
+++ b/src/node_http2.cc
@@ -91,6 +91,12 @@ Http2Session::Http2Session(Environment* env,
prep_->data = static_cast<void*>(this);
uv_prepare_start(prep_, [](uv_prepare_t* t) {
Http2Session* session = static_cast<Http2Session*>(t->data);
+ HandleScope scope(session->env()->isolate());
+ Context::Scope context_scope(session->env()->context());
+
+ // Sending data may call arbitrary JS code, so keep track of
+ // async context.
+ InternalCallbackScope callback_scope(session);
session->SendPendingData();
});
}