in runner-core/src/main/java/org/apache/apisix/plugin/runner/handler/RpcCallHandler.java [285:321]
private void handleHttpReqCall(ChannelHandlerContext ctx, HttpRequest request) {
cleanCtx();
// save HttpCallRequest
currReq = request;
currResp = new HttpResponse(currReq.getRequestId());
confToken = currReq.getConfToken();
A6Conf conf = cache.getIfPresent(confToken);
if (Objects.isNull(conf)) {
logger.warn("cannot find conf token: {}", confToken);
errorHandle(ctx, Code.CONF_TOKEN_NOT_FOUND);
return;
}
PluginFilterChain chain = conf.getChain();
// here we pre-read parameters in the req to
// prevent confusion over the read/write index of the req.
preReadReq();
// if the filter chain is empty, then return the response directly
if (Objects.isNull(chain) || 0 == chain.getFilters().size()) {
ChannelFuture future = ctx.writeAndFlush(currResp);
future.addListeners(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
return;
}
Boolean[] result = fetchExtraInfo(ctx, chain);
if (Objects.isNull(result)) {
return;
}
if (!result[0] && !result[1]) {
// no need to fetch extra info
doFilter(ctx);
}
}