httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@jaguNET.com>
Subject Re: svn commit: r1026668 - /httpd/httpd/trunk/modules/proxy/mod_proxy.h
Date Tue, 26 Oct 2010 18:52:22 GMT
Does this really help out? Certainly years ago bitfields made
sense but nowadays even K&R say to avoid them.

Plus, when we have bitfields "randomly" located in the struct,
padding becomes an issue. Plus, iirc, they are slow.

I'd be +1 for changing them to chars if we want to save
space.


On Oct 23, 2010, at 3:34 PM, minfrin@apache.org wrote:

> Author: minfrin
> Date: Sat Oct 23 19:34:16 2010
> New Revision: 1026668
> 
> URL: http://svn.apache.org/viewvc?rev=1026668&view=rev
> Log:
> Optimise more of the flags within proxy structures.
> 
> Modified:
>    httpd/httpd/trunk/modules/proxy/mod_proxy.h
> 
> Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.h
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.h?rev=1026668&r1=1026667&r2=1026668&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original)
> +++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Sat Oct 23 19:34:16 2010
> @@ -214,26 +214,26 @@ typedef struct {
> 
> typedef struct {
>     conn_rec     *connection;
> -    request_rec  *r;        /* Request record of the frontend request
> -                             * which the backend currently answers. */
> -    proxy_worker *worker;   /* Connection pool this connection belongs to */
> -    apr_pool_t   *pool;     /* Subpool for hostname and addr data */
> +    request_rec  *r;           /* Request record of the frontend request
> +                                * which the backend currently answers. */
> +    proxy_worker *worker;      /* Connection pool this connection belongs to */
> +    apr_pool_t   *pool;        /* Subpool for hostname and addr data */
>     const char   *hostname;
> -    apr_sockaddr_t *addr;   /* Preparsed remote address info */
> -    apr_pool_t   *scpool;   /* Subpool used for socket and connection data */
> -    apr_socket_t *sock;     /* Connection socket */
> -    void         *data;     /* per scheme connection data */
> -    void         *forward;  /* opaque forward proxy data */
> -    apr_uint32_t flags;     /* Connection flags */
> +    apr_sockaddr_t *addr;      /* Preparsed remote address info */
> +    apr_pool_t   *scpool;      /* Subpool used for socket and connection data */
> +    apr_socket_t *sock;        /* Connection socket */
> +    void         *data;        /* per scheme connection data */
> +    void         *forward;     /* opaque forward proxy data */
> +    apr_uint32_t flags;        /* Connection flags */
>     apr_port_t   port;
> -    char         is_ssl;
> -    char         close;     /* Close 'this' connection */
> -    char         need_flush;/* Flag to decide whether we need to flush the
> -                             * filter chain or not */
> +    int          is_ssl:1;
> +    int          close:1;      /* Close 'this' connection */
> +    int          need_flush:1; /* Flag to decide whether we need to flush the
> +                                * filter chain or not */
> #if APR_HAS_THREADS
> -    char         inreslist; /* connection in apr_reslist? */
> +    int          inreslist:1;  /* connection in apr_reslist? */
> #endif
> -    int          cleaned:1; /* connection cleaned? */
> +    int          cleaned:1;    /* connection cleaned? */
> } proxy_conn_rec;
> 
> typedef struct {
> @@ -325,7 +325,7 @@ struct proxy_worker {
>     apr_port_t      port;
>     char            keepalive;
>     char            disablereuse;
> -    int             is_address_reusable;
> +    int             is_address_reusable:1;
>     proxy_conn_pool     *cp;        /* Connection pool to use */
>     proxy_worker_stat   *s;         /* Shared data */
>     void            *opaque;    /* per scheme worker data */
> 
> 


Mime
View raw message