@@ -152,11 +152,13 @@ struct StringPtr {
152152 size_t size_;
153153};
154154
155-
156155class Parser : public AsyncWrap , public StreamListener {
157156 public:
158157 Parser (Environment* env, Local<Object> wrap, parser_type_t type)
159- : AsyncWrap(env, wrap, AsyncWrap::PROVIDER_HTTPPARSER),
158+ : AsyncWrap(env, wrap,
159+ type == HTTP_REQUEST ?
160+ AsyncWrap::PROVIDER_HTTPINCOMINGMESSAGE :
161+ AsyncWrap::PROVIDER_HTTPCLIENTREQUEST),
160162 current_buffer_len_ (0 ),
161163 current_buffer_data_(nullptr ) {
162164 Init (type);
@@ -503,12 +505,12 @@ class Parser : public AsyncWrap, public StreamListener {
503505 }
504506
505507
506- static void Reinitialize (const FunctionCallbackInfo<Value>& args) {
508+ static void Initialize (const FunctionCallbackInfo<Value>& args) {
507509 Environment* env = Environment::GetCurrent (args);
508510
509511 CHECK (args[0 ]->IsInt32 ());
510- CHECK (args[1 ]->IsBoolean ());
511- bool isReused = args[ 1 ]-> IsTrue ();
512+ CHECK (args[1 ]->IsObject ());
513+
512514 parser_type_t type =
513515 static_cast <parser_type_t >(args[0 ].As <Int32>()->Value ());
514516
@@ -517,16 +519,16 @@ class Parser : public AsyncWrap, public StreamListener {
517519 ASSIGN_OR_RETURN_UNWRAP (&parser, args.Holder ());
518520 // Should always be called from the same context.
519521 CHECK_EQ (env, parser->env ());
520- // This parser has either just been created or it is being reused.
521- // We must only call AsyncReset for the latter case, because AsyncReset has
522- // already been called via the constructor for the former case.
523- if (isReused) {
524- parser->AsyncReset ();
525- }
522+
523+ AsyncWrap::ProviderType provider =
524+ (type == HTTP_REQUEST ?
525+ AsyncWrap::PROVIDER_HTTPINCOMINGMESSAGE
526+ : AsyncWrap::PROVIDER_HTTPCLIENTREQUEST);
527+
528+ parser->set_provider_type (provider);
526529 parser->Init (type);
527530 }
528531
529-
530532 template <bool should_pause>
531533 static void Pause (const FunctionCallbackInfo<Value>& args) {
532534 Environment* env = Environment::GetCurrent (args);
@@ -958,7 +960,7 @@ void InitializeHttpParser(Local<Object> target,
958960 env->SetProtoMethod (t, " free" , Parser::Free);
959961 env->SetProtoMethod (t, " execute" , Parser::Execute);
960962 env->SetProtoMethod (t, " finish" , Parser::Finish);
961- env->SetProtoMethod (t, " reinitialize " , Parser::Reinitialize );
963+ env->SetProtoMethod (t, " initialize " , Parser::Initialize );
962964 env->SetProtoMethod (t, " pause" , Parser::Pause<true >);
963965 env->SetProtoMethod (t, " resume" , Parser::Pause<false >);
964966 env->SetProtoMethod (t, " consume" , Parser::Consume);
0 commit comments