headers_in_hash
atarob
nginx-forum at nginx.us
Wed Feb 19 20:59:42 UTC 2014
Maxim Dounin Wrote:
-------------------------------------------------------
> Hello!
>
> On Tue, Feb 18, 2014 at 02:36:24PM -0500, atarob wrote:
>
> > Maxim Dounin Wrote:
> > -------------------------------------------------------
> > > Hello!
> > >
> > > On Fri, Feb 14, 2014 at 04:39:23PM -0500, atarob wrote:
> > >
> > > > Creating a module, I want to read in from config desired http
> header
> > > fields.
> > > > Then, during config still, I want to get the struct offset for
> the
> > > fields
> > > > that have dedicated pointers in the header_in struct. It seems
> that
> > > when I
> > > > access headers_in_hash from the main config, it is
> uninitialized. I
> > > can see
> > > > in the code that there is
> > > >
> > > > ngx_http_init_headers_in_hash(ngx_conf_t *cf,
> > > ngx_http_core_main_conf_t
> > > > *cmcf)
> > > >
> > > > in ngx_http.c. It seems to be called when the main conf is being
> > > generated
> > > > though I am not certain yet.
> > > >
> > > > Where and when exactly is headers_in_hash initialized? If I
> wanted
> > > to read
> > > > from it during ngx_http_X_merge_loc_conf(), what would I need to
> do?
> > > Or am
> > > > I supposed to do it at some point later?
> > >
> > > The cmcf->headers_in_hash is expected to be initialized during
> > > runtime. As of now, it will be initialized before
> > > postconfiguration hooks, but I wouldn't recommend relaying on
> > > this.
> > >
> > > I also won't recommend using cmcf->headers_in_hash in your own
> > > module at all, unless you have good reasons to. It's not really a
>
> > > part of the API, it's an internal entity which http core uses to
> > > do it's work.
> >
> > There is an API? I thought the only way to figure out nginx was to
> read
> > source? But seriously, I didn't land on any API doing a google
> search.
>
> API != documentation
How true. It's more fun reading source anyway. What I mean was that it
wasn't entirely clear to me what I should rely on as "API" and what I
shouldn't because it might easily change down the road.
>
> > API aside, is the point of this hash not to do faster lookups for
> fields
> > that become needed at runtime (say from config) as opposed to
> compile time?
> > Otherwise, to look for N fields, I have to do N*M comparisons as I
> iterate
> > through the fields, right? I was trying to avoid that. Is there a
> better
> > way?
>
> The point of this hash is to do special processing of certain
> headers in http core. If you want to do something similar in your
> own module, you may want to create your own hash.
Fair enough. And thanks for all the hard work.
Ata Roboubi
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,247572,247756#msg-247756
More information about the nginx
mailing list