[PATCH 2 of 2] HTTP: removed unused r->port_start

Maxim Dounin mdounin at mdounin.ru
Thu Nov 30 01:13:23 UTC 2023


Hello!

On Wed, Nov 29, 2023 at 11:20:33AM +0300, Vladimir Homutov via nginx-devel wrote:

> On Tue, Nov 28, 2023 at 05:57:39AM +0300, Maxim Dounin wrote:
> > Hello!
> >
> > On Fri, Nov 10, 2023 at 12:11:55PM +0300, Vladimir Homutov via nginx-devel wrote:
> >
> > >
> > > It is no longer used since the refactoring in 8e5bf1bc87e2 (2008).
> >
> > Neither r->port_start nor r->port_end were ever used.
> >
> > The r->port_end is set by the parser, though it was never used by
> > the following code (and was never usable, since not copied by the
> > ngx_http_alloc_large_header_buffer() without r->port_start set).
> >
> > The 8e5bf1bc87e2 commit is completely unrelated, it is about
> > refactoring of the ngx_parse_inet_url() function, which had a
> > local variable named "port_start".
> 
> exactly, thanks for noticing.
> 
> >
> > >
> > > diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
> > > --- a/src/http/ngx_http_request.c
> > > +++ b/src/http/ngx_http_request.c
> > > @@ -1744,8 +1744,7 @@ ngx_http_alloc_large_header_buffer(ngx_h
> > >              }
> > >          }
> > >
> > > -        if (r->port_start) {
> > > -            r->port_start = new + (r->port_start - old);
> > > +        if (r->port_end) {
> > >              r->port_end = new + (r->port_end - old);
> > >          }
> > >
> > > diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
> > > --- a/src/http/ngx_http_request.h
> > > +++ b/src/http/ngx_http_request.h
> > > @@ -597,7 +597,6 @@ struct ngx_http_request_s {
> > >      u_char                           *schema_end;
> > >      u_char                           *host_start;
> > >      u_char                           *host_end;
> > > -    u_char                           *port_start;
> > >      u_char                           *port_end;
> > >
> > >      unsigned                          http_minor:16;
> >
> > I don't think it's a good change.  Rather, we should either remove
> > both, or (eventually) fix these and provide some valid usage of
> > the port as parsed either from the request line or from the Host
> > header, similarly to the $host variable.
> >
> 
> I think that we should remove both, as unused code still needs to be
> maintained without any advantage, as this example shows.
> Restoring it will be trivial, if ever required.
> 
> 
> 

> # HG changeset patch
> # User Vladimir Khomutov <vl at wbsrv.ru>
> # Date 1701165434 -10800
> #      Tue Nov 28 12:57:14 2023 +0300
> # Node ID dacad3a9c7b8435a4c67ad2b67f261e7b4e36d8e
> # Parent  f366007dd23a6ce8e8427c1b3042781b618a2ade
> HTTP: removed unused r->port_start and r->port_end.
> 
> Neither r->port_start nor r->port_end were ever used.
> 
> The r->port_end is set by the parser, though it was never used by
> the following code (and was never usable, since not copied by the
> ngx_http_alloc_large_header_buffer() without r->port_start set).
> 
> diff --git a/src/http/ngx_http_parse.c b/src/http/ngx_http_parse.c
> --- a/src/http/ngx_http_parse.c
> +++ b/src/http/ngx_http_parse.c
> @@ -451,19 +451,16 @@ ngx_http_parse_request_line(ngx_http_req
>  
>              switch (ch) {
>              case '/':
> -                r->port_end = p;
>                  r->uri_start = p;
>                  state = sw_after_slash_in_uri;
>                  break;
>              case '?':
> -                r->port_end = p;
>                  r->uri_start = p;
>                  r->args_start = p + 1;
>                  r->empty_path_in_uri = 1;
>                  state = sw_uri;
>                  break;
>              case ' ':
> -                r->port_end = p;
>                  /*
>                   * use single "/" from request line to preserve pointers,
>                   * if request line will be copied to large client buffer
> diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
> --- a/src/http/ngx_http_request.c
> +++ b/src/http/ngx_http_request.c
> @@ -1735,11 +1735,6 @@ ngx_http_alloc_large_header_buffer(ngx_h
>              }
>          }
>  
> -        if (r->port_start) {
> -            r->port_start = new + (r->port_start - old);
> -            r->port_end = new + (r->port_end - old);
> -        }
> -
>          if (r->uri_ext) {
>              r->uri_ext = new + (r->uri_ext - old);
>          }
> diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
> --- a/src/http/ngx_http_request.h
> +++ b/src/http/ngx_http_request.h
> @@ -597,8 +597,6 @@ struct ngx_http_request_s {
>      u_char                           *schema_end;
>      u_char                           *host_start;
>      u_char                           *host_end;
> -    u_char                           *port_start;
> -    u_char                           *port_end;
>  
>      unsigned                          http_minor:16;
>      unsigned                          http_major:16;

Looks good, pushed to http://mdounin.ru/hg/nginx/.

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


More information about the nginx-devel mailing list