Sorry, typo. My question is why bypass post-access phase?
Jinhua Luo <luajit...@gmail.com> 于2021年9月4日周六 下午11:48写道: > > > Further, when access phase checker decides to skip the access phase when > > access is allowed by a handler, and needs to switch to the next phase - it > > does not need to switch to post-access phase, but rather to the phase after > > it. Hence n++ in the access phase case (and not in the post-access phase). > > Why bypass post access phase? Why access phase is so special? > > Maxim Dounin <mdou...@mdounin.ru> 于2021年9月4日周六 上午3:35写道: > > > > Hello! > > > > On Fri, Sep 03, 2021 at 12:08:32PM +0800, Jinhua Luo wrote: > > > > > In the function ngx_http_init_phase_handlers, I found two places hard > > > to understand. > > > > > > a) The n variable is as known as the next phase handler index. In the > > > switch case NGX_HTTP_ACCESS_PHASE, it invokes n++, which seems to be > > > redundant and wrong, While in switch case NGX_HTTP_POST_ACCESS_PHASE, > > > it lacks n++. Think about that if the number of modules registers as > > > NGX_HTTP_ACCESS_PHASE is 0, then the next index is 1 more than the > > > correct number. Of course, the current codes have at least one > > > NGX_HTTP_POST_ACCESS_PHASE module: ngx_http_access_module, but it > > > contains the codes to jump to the next phase handler, then the jump > > > target is bypass NGX_HTTP_POST_ACCESS_PHASE and to > > > NGX_HTTP_PRECONTENT_PHASE? > > > > The NGX_HTTP_POST_ACCESS_PHASE is a special phase which is only > > used when there are modules in the NGX_HTTP_ACCESS_PHASE, and only > > contains a single phase handler, ngx_http_core_post_access_phase(). > > The post-access phase does not need to be present at all when there > > are no modules in the access phase. Further, when access phase > > checker decides to skip the access phase when access is allowed by > > a handler, and needs to switch to the next phase - it does not > > need to switch to post-access phase, but rather to the phase after > > it. Hence n++ in the access phase case (and not in the > > post-access phase). > > > > > b) Does the handler runs in reverse order of registration order? > > > > > > for (j = cmcf->phases[i].handlers.nelts - 1; j >= 0; j--) > > > > Yes. In particular, this ensures that addon modules are called > > first, before the built-in modules. > > > > -- > > Maxim Dounin > > http://mdounin.ru/ > > _______________________________________________ > > nginx-devel mailing list > > nginx-devel@nginx.org > > http://mailman.nginx.org/mailman/listinfo/nginx-devel _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel