summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2017-10-24 23:25:02 +0200
committerMyles Borins <mylesborins@google.com>2017-10-30 23:22:45 -0400
commit56dd734a6af3bf799c8af42cc69aa14a19d514fb (patch)
treea25b6510cbde62affdd3da9cc08c608d8416341c
parente578268ef96ab62186f78355db41bd7334cf6e3e (diff)
downloadnode-new-56dd734a6af3bf799c8af42cc69aa14a19d514fb.tar.gz
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>
-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();
});
}