diff --git a/src/brpc/parallel_channel.cpp b/src/brpc/parallel_channel.cpp index 130712bfb9..66b8f0cb75 100644 --- a/src/brpc/parallel_channel.cpp +++ b/src/brpc/parallel_channel.cpp @@ -724,6 +724,9 @@ void ParallelChannel::CallMethod( ParallelChannelDone::SubDone* sd = d->sub_done(j++); // Forward the attachment to each sub call sd->cntl.request_attachment().append(cntl->request_attachment()); + if (PROTOCOL_HTTP == cntl->request_protocol()) { + sd->cntl.http_request() = cntl->http_request(); + } _chans[i].chan->CallMethod(sd->ap.method, &sd->cntl, sd->ap.request, sd->ap.response, sd); } diff --git a/src/brpc/selective_channel.cpp b/src/brpc/selective_channel.cpp index ec93354121..00810b04ed 100644 --- a/src/brpc/selective_channel.cpp +++ b/src/brpc/selective_channel.cpp @@ -344,7 +344,9 @@ int Sender::IssueRPC(int64_t start_realtime_us) { sub_cntl->set_request_code(_main_cntl->request_code()); // Forward request attachment to the subcall sub_cntl->request_attachment().append(_main_cntl->request_attachment()); - sub_cntl->http_request() = _main_cntl->http_request(); + if (PROTOCOL_HTTP == _main_cntl->request_protocol()) { + sub_cntl->http_request() = _main_cntl->http_request(); + } sel_out.channel()->CallMethod(_main_cntl->_method, &r.sub_done->_cntl,