ngx_http_v3_init_session function

J Carter jordanc.carter at outlook.com
Tue Feb 6 05:08:52 UTC 2024


On Tue, 6 Feb 2024 00:44:56 +0000
J Carter <jordanc.carter at outlook.com> wrote:

> On Tue, 6 Feb 2024 00:16:31 +0000
> J Carter <jordanc.carter at outlook.com> wrote:
> 
> > Hello,
> > 
> > On Mon, 5 Feb 2024 23:24:39 +0200
> > Clima Gabriel <clima.gabrielphoto at gmail.com> wrote:
> > 
> > > Hello everyone,
> > > 
> > > (the code is probably clearer and attached below)
> > > This function modifies what ngx_connection_t->data points to.
> > > ngx_connection_t->data is initially *ngx_http_connection_t.
> > > The *ngx_http_connection_t is assigned to
> > > ngx_http_v3_session_t->http_connection
> > > And the *ngx_http_v3_session_t assigned to ngx_connection_t->data.
> > > 
> > > Result: before ngx_connection_t->data is *ngx_http_connection_t
> > >                after ngx_connection_t->data is *ngx_http_v3_session_t
> > 
> > In C, a pointer to struct can be cast to a pointer to the first member
> > of that struct, as there is no padding before the first member per the
> > standard.
> > 
> > The first member of ngx_http_v3_session_t is *ngx_http_connection_t.
> 
> *Sorry typo here - first member is ngx_http_connection_t of course.
> > 
> > Here is the commit where this was implemented.
> > 
> > https://mailman.nginx.org/pipermail/nginx-devel/2023-September/BWH23FTMRUWCUZSNKXJJXEEN76ZYOK62.html
> > 
> > [...]

Oh, I've just realized that is the wrong patch.  There were a couple of
reworks to that patch later that I missed.. Here is the actual 
changeset version, with *ngx_http_connection_t as you say:

https://hg.nginx.org/nginx/rev/4939fd04737f

It appears that this macro should be used to get ngx_http_connection_t:

https://hg.nginx.org/nginx/file/tip/src/http/v3/ngx_http_v3.h#l85

However it's likely a good idea to wait to see if the author/s will
comment on if that is safe and correct in all situations.


More information about the nginx mailing list