ChannelHandlerContext* ChannelPipeline::GetActualDownstreamContext( ChannelHandlerContext* ctx) { RETURN_NULL_IF_NULL(ctx); ChannelHandlerContext* realCtx = ctx; while (!realCtx->CanHandleDownstream()) { realCtx = realCtx->GetPrev(); RETURN_NULL_IF_NULL(realCtx); } return realCtx; }