diff --git a/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java b/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java index 06095ed..50eca38 100644 --- a/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java +++ b/runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java @@ -180,6 +180,10 @@ private void handleHttpRespCall(ChannelHandlerContext ctx, PostRequest request) PluginFilterChain chain = conf.getChain(); + // here we pre-read parameters in the resp to + // prevent confusion over the read/write index of the resp. + preReadPostReq(); + if (Objects.isNull(chain) || 0 == chain.getFilters().size()) { ChannelFuture future = ctx.writeAndFlush(postResp); future.addListeners(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); @@ -328,6 +332,11 @@ private void preReadReq() { currReq.getSourceIP(); } + private void preReadPostReq() { + postReq.getUpstreamHeaders(); + postReq.getUpstreamStatusCode(); + } + private void errorHandle(ChannelHandlerContext ctx, int code) { A6ErrResponse errResponse = new A6ErrResponse(code); ctx.writeAndFlush(errResponse);