diff options
author | Anna Henningsen <anna@addaleax.net> | 2017-10-24 23:25:02 +0200 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2017-10-30 23:22:45 -0400 |
commit | 56dd734a6af3bf799c8af42cc69aa14a19d514fb (patch) | |
tree | a25b6510cbde62affdd3da9cc08c608d8416341c | |
parent | e578268ef96ab62186f78355db41bd7334cf6e3e (diff) | |
download | node-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.cc | 6 |
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(); }); } |