ngx_conf_t args count
noloader at gmail.com
Mon Dec 16 07:27:22 UTC 2013
On Mon, Dec 16, 2013 at 2:15 AM, Ruslan Ermilov <ru at nginx.com> wrote:
> On Sun, Dec 15, 2013 at 04:31:08PM -0500, Jeffrey Walton wrote:
>> From Miller's http://www.evanmiller.org/nginx-modules-guide.html, section 5.2:
>> ngx_http_upstream_hash(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
>> ngx_http_upstream_srv_conf_t *uscf;
>> ngx_http_script_compile_t sc;
>> ngx_str_t *value;
>> ngx_array_t *vars_lengths, *vars_values;
>> value = cf->args->elts;
>> /* the following is necessary to evaluate the argument to "hash"
>> as a $variable */
>> ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
>> vars_lengths = NULL;
>> vars_values = NULL;
>> sc.cf = cf;
>> sc.source = &value;
>> How does one know that value is valid? Shouldn't cf->args->nelts be
>> checked first? Or does ngx_conf_t always have at least two options?
>> Related: why was value not chosen?
> value is the directive name, "hash" in this case. It's
> like argv in main().
> The "hash" directive can be specified in the "upstream" context
> (NGX_HTTP_UPS_CONF) and it takes exactly one argument (NGX_CONF_TAKE1).
> The generic configuration parser code ensures that the argument
Ah, thanks. It makes perfect sense.
More information about the nginx