ChannelHandlerContext* ChannelPipeline::GetActualUpstreamContext( ChannelHandlerContext* ctx) { RETURN_NULL_IF_NULL(ctx); ChannelHandlerContext* realCtx = ctx; while (!realCtx->CanHandleUpstream()) { realCtx = realCtx->GetNext(); RETURN_NULL_IF_NULL(realCtx); } return realCtx; }