what's the proper way to get module specific configuration in init_process

lei shan shanlei at asiainfo.com
Thu Jun 23 08:26:39 UTC 2022


Thanks,

That means we need move some configuration commands form server to main
section. We will review the logic

Lei

On Thu, Jun 23, 2022, 01:51 Maxim Dounin <mdounin at mdounin.ru> wrote:

> Hello!
>
> On Mon, Jun 20, 2022 at 04:05:53PM +0800, shanlei at asiainfo.com wrote:
>
> > Hello, guys,
> >
> > Recently I have been working on an nginx c module, which have to
> > leverage on init_process routine.The logic is based on instruction
> > command which may be configured inside stream.server,  I have to do some
> > work in the init_process routine, for example, to schedule a timer.
> > I did google a while ,and decide to using code snippet like below:
> >
> > ============================
> >
> > ngx_stream_conf_ctx_t conf_ctx = (ngx_stream_conf_ctx_t
> > *)ngx_get_conf(cycle->conf_ctx, ngx_stream_module);
> >
> > "module_spec_conf = conf_ctx->srv_conf["my_module".ctx_index];
> >
> > =============================
> >
> >
> > However, the module_spec_conf  I got is the top_level ,that is created
> > when nginx parse the stream section, not the one created when nginx
> > parse the stream.server section, the later has the proper values.
> > Currently to got the later structure, I have to copy the configure value
> > back from child to parent in configuration merger function, which is
> > inconvenient and buggy when the stream includes multi servers.
> >
> > So I wonder what's the proper way to get module specific configuration
> > in the routine: init_process
>
> For the purpose of the init_process callback, the most simple
> approach would be to use your module's main configuration.  For
> example, the embedded Perl module uses the init process callback
> to set correct PID in Perl interpreter: Perl interpreter is stored
> in the module's main configuration, and the init process callback
> uses the ngx_http_cycle_get_module_main_conf() macro to access it.
> See src/http/modules/perl/ngx_http_perl_module.c for details.
>
> (Just in case, corresponding macro in the stream module is
> ngx_stream_cycle_get_module_main_conf().)
>
> --
> Maxim Dounin
> http://mdounin.ru/
> _______________________________________________
> nginx-devel mailing list -- nginx-devel at nginx.org
> To unsubscribe send an email to nginx-devel-leave at nginx.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20220623/5d032e4d/attachment.htm>


More information about the nginx-devel mailing list