[PATCH] Improved code readablity of ngx_cache_manager_process_cycle.

Maxim Dounin mdounin at mdounin.ru
Thu Apr 5 13:34:53 UTC 2018


Hello!

On Thu, Apr 05, 2018 at 02:12:04PM +0300, Ruslan Ermilov wrote:

> On Thu, Apr 05, 2018 at 12:37:19PM +0800, Zexuan Luo wrote:
> > # HG changeset patch
> > # User spacewander <spacewanderlzx at gmail.com>
> > # Date 1522902794 -28800
> > #      Thu Apr 05 12:33:14 2018 +0800
> > # Branch ident
> > # Node ID e0834ca20c9c68c4f0728f85efb3651732134ee2
> > # Parent  d4cc2edb4ff8391d0c7419e91e6fcc988c510654
> > Improved code readablity of ngx_cache_manager_process_cycle.
> > 
> > diff -r d4cc2edb4ff8 -r e0834ca20c9c src/os/unix/ngx_process_cycle.c
> > --- a/src/os/unix/ngx_process_cycle.c   Tue Apr 03 17:38:10 2018 +0300
> > +++ b/src/os/unix/ngx_process_cycle.c   Thu Apr 05 12:33:14 2018 +0800
> > @@ -1128,7 +1128,7 @@
> >  {
> >      ngx_cache_manager_ctx_t *ctx = data;
> > 
> > -    void         *ident[4];
> > +   u_char            ident[offsetof(ngx_connection_t, fd) +
> > sizeof(ngx_socket_t)];
> >      ngx_event_t   ev;
> > 
> >      /*
> > @@ -1148,7 +1148,7 @@
> >      ev.handler = ctx->handler;
> >      ev.data = ident;
> >      ev.log = cycle->log;
> > -    ident[3] = (void *) -1;
> > +   *(ngx_socket_t *)(ident + offsetof(ngx_connection_t, fd)) = -1;
> > 
> >      ngx_use_accept_mutex = 0;
> 
> How's this instead?  A similar comment also exists in ngx_resolver.h.
> 
> diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
> --- a/src/os/unix/ngx_process_cycle.c
> +++ b/src/os/unix/ngx_process_cycle.c
> @@ -1128,8 +1128,10 @@ ngx_cache_manager_process_cycle(ngx_cycl
>  {
>      ngx_cache_manager_ctx_t *ctx = data;
>  
> -    void         *ident[4];
> -    ngx_event_t   ev;
> +    /* event ident must be after 3 pointers as in ngx_connection_t */
> +    void              *ident[4];
> +    ngx_event_t        ev;
> +    ngx_connection_t  *c;
>  
>      /*
>       * Set correct process type since closing listening Unix domain socket
> @@ -1144,11 +1146,13 @@ ngx_cache_manager_process_cycle(ngx_cycl
>  
>      ngx_worker_process_init(cycle, -1);
>  
> +    c = (ngx_connection_t *) ident;
> +    c->fd = (ngx_socket_t) -1;
> +
>      ngx_memzero(&ev, sizeof(ngx_event_t));
>      ev.handler = ctx->handler;
> -    ev.data = ident;
> +    ev.data = c;
>      ev.log = cycle->log;
> -    ident[3] = (void *) -1;
>  
>      ngx_use_accept_mutex = 0;

Both variants seems to be awful compared to what we have now.

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx-devel mailing list