Changeset 158:d377ee423603 in nginx


Ignore:
Timestamp:
10/24/03 06:53:41 (16 years ago)
Author:
Igor Sysoev <igor@…>
Branch:
default
Phase:
public
Convert:
svn:c3fe7df1-7212-e011-8a91-001109144009/trunk@159
Message:

nginx-0.0.1-2003-10-24-10:53:41 import

Location:
src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • src/core/ngx_conf_file.c

    r157 r158  
    597597    char  *p = conf;
    598598
    599     int        *np;
    600     ngx_str_t  *value;
     599    int              *np;
     600    ngx_str_t        *value;
     601    ngx_conf_post_t  *post;
    601602
    602603
     
    613614    }
    614615
    615     if (cmd->bounds) {
    616         return cmd->bounds->check(cf, cmd->bounds, np);
     616    if (cmd->post) {
     617        post = cmd->post;
     618        return post->post_handler(cf, post, np);
    617619    }
    618620
     
    625627    char  *p = conf;
    626628
    627     int        *np;
    628     ngx_str_t  *value;
     629    int              *np;
     630    ngx_str_t        *value;
     631    ngx_conf_post_t  *post;
    629632
    630633
     
    641644    }
    642645
    643     if (cmd->bounds) {
    644         return cmd->bounds->check(cf, cmd->bounds, np);
     646    if (cmd->post) {
     647        post = cmd->post;
     648        return post->post_handler(cf, post, np);
    645649    }
    646650
     
    653657    char  *p = conf;
    654658
    655     int         size, total, len, scale, *np;
    656     u_int       max, i;
    657     char        last, *start;
    658     ngx_str_t  *value;
     659    int              *np;
     660    ngx_str_t        *value;
     661    ngx_conf_post_t  *post;
    659662
    660663
     
    675678    }
    676679
    677     if (cmd->bounds) {
    678         return cmd->bounds->check(cf, cmd->bounds, np);
     680    if (cmd->post) {
     681        post = cmd->post;
     682        return post->post_handler(cf, post, np);
    679683    }
    680684
     
    687691    char  *p = conf;
    688692
    689     int         size, total, len, scale, *np;
    690     u_int       max, i;
    691     char        last, *start;
    692     ngx_str_t  *value;
     693    int              *np;
     694    ngx_str_t        *value;
     695    ngx_conf_post_t  *post;
    693696
    694697
     
    709712    }
    710713
    711     if (cmd->bounds) {
    712         return cmd->bounds->check(cf, cmd->bounds, np);
     714    if (cmd->post) {
     715        post = cmd->post;
     716        return post->post_handler(cf, post, np);
    713717    }
    714718
     
    752756
    753757
    754 char *ngx_conf_check_num_bounds(ngx_conf_t *cf, ngx_conf_bounds_t *bounds,
    755                                 void *conf)
    756 {
    757     int *num = conf;
    758 
    759     if (*num >= bounds->type.num.low && *num <= bounds->type.num.high) {
     758char *ngx_conf_check_num_bounds(ngx_conf_t *cf, void *post, void *data)
     759{
     760    ngx_conf_num_bounds_t *bounds = post;
     761    int *np = data;
     762
     763    if (*np >= bounds->low && (u_int) *np <= (u_int) bounds->high) {
    760764        return NGX_CONF_OK;
    761 
    762765    }
    763766
  • src/core/ngx_conf_file.h

    r157 r158  
    5252
    5353
    54 typedef struct ngx_conf_bounds_s ngx_conf_bounds_t;
    55 
    56 struct ngx_conf_bounds_s {
    57     char     *(*check)(ngx_conf_t *cf, ngx_conf_bounds_t *bounds, void *conf);
    58 
    59     union {
    60         struct {
    61            int  low;
    62            int  high;
    63         } num;
    64 
    65         struct num {
    66            int  low_num;
    67            int  high_num;
    68            int  low_size;
    69            int  high_size;
    70         } bufs;
    71    } type;
    72 };
    73 
    74 
    7554struct ngx_command_s {
    76     ngx_str_t           name;
    77     int                 type;
    78     char             *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
    79     int                 conf;
    80     int                 offset;
    81     ngx_conf_bounds_t  *bounds;
     55    ngx_str_t     name;
     56    int           type;
     57    char       *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
     58    int           conf;
     59    int           offset;
     60    void         *post;
    8261};
    8362
     
    157136
    158137
     138typedef char *(*ngx_conf_post_handler_pt) (ngx_conf_t *cf,
     139                                           void *data, void *conf);
     140
     141typedef struct {
     142    ngx_conf_post_handler_pt  post_handler;
     143} ngx_conf_post_t;
     144
     145
     146typedef struct {
     147    ngx_conf_post_handler_pt  post_handler;
     148    int                       low;
     149    int                       high;
     150} ngx_conf_num_bounds_t;
     151
     152
     153char *ngx_conf_check_num_bounds(ngx_conf_t *cf, void *post, void *data);
     154
     155
    159156#define ngx_get_conf(conf_ctx, module)  conf_ctx[module.index]
    160157
     
    241238                                  void *conf);
    242239
    243 char *ngx_conf_check_num_bounds(ngx_conf_t *cf, ngx_conf_bounds_t *bounds,
    244                                 void *conf);
    245 
    246240
    247241extern ngx_module_t     *ngx_modules[];
  • src/http/modules/ngx_http_gzip_filter.c

    r157 r158  
    5151static char *ngx_http_gzip_merge_conf(ngx_conf_t *cf,
    5252                                      void *parent, void *child);
    53 static char *ngx_http_gzip_set_window(ngx_conf_t *cf, ngx_command_t *cmd,
    54                                       void *conf);
    55 static char *ngx_http_gzip_set_hash(ngx_conf_t *cf, ngx_command_t *cmd,
    56                                     void *conf);
    57 
    58 static ngx_conf_bounds_t ngx_http_gzip_comp_level_bounds;
     53static char *ngx_http_gzip_set_window(ngx_conf_t *cf, void *post, void *data);
     54static char *ngx_http_gzip_set_hash(ngx_conf_t *cf, void *post, void *data);
     55
     56
     57static ngx_conf_num_bounds_t  ngx_http_gzip_comp_level_bounds = {
     58    ngx_conf_check_num_bounds, 1, 9
     59};
     60
     61static ngx_conf_post_handler_pt  ngx_http_gzip_set_window_p =
     62                                                      ngx_http_gzip_set_window;
     63static ngx_conf_post_handler_pt  ngx_http_gzip_set_hash_p =
     64                                                        ngx_http_gzip_set_hash;
     65
    5966
    6067
     
    8491    {ngx_string("gzip_window"),
    8592     NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    86      ngx_http_gzip_set_window,
     93     ngx_conf_set_size_slot,
    8794     NGX_HTTP_LOC_CONF_OFFSET,
    8895     offsetof(ngx_http_gzip_conf_t, wbits),
    89      NULL},
     96     &ngx_http_gzip_set_window_p},
    9097
    9198    {ngx_string("gzip_hash"),
    9299     NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
    93      ngx_http_gzip_set_hash,
     100     ngx_conf_set_size_slot,
    94101     NGX_HTTP_LOC_CONF_OFFSET,
    95102     offsetof(ngx_http_gzip_conf_t, memlevel),
    96      NULL},
     103     &ngx_http_gzip_set_hash_p},
    97104
    98105    {ngx_string("gzip_no_buffer"),
     
    129136
    130137
    131 static ngx_conf_bounds_t ngx_http_gzip_comp_level_bounds = {
    132     ngx_conf_check_num_bounds, { { 1, 9 } }
    133 };
    134 
    135 
    136 static u_char gzheader[10] = { 0x1f, 0x8b, Z_DEFLATED, 0, 0, 0, 0, 0, 0, 3 };
     138static u_char  gzheader[10] = { 0x1f, 0x8b, Z_DEFLATED, 0, 0, 0, 0, 0, 0, 3 };
    137139
    138140#if (HAVE_LITTLE_ENDIAN)
     
    241243        /*
    242244         * We preallocate a memory for zlib in one hunk (200K-400K), this
    243          * dicreases number of malloc() and free() calls and probably
    244          * syscalls.
     245         * dicreases a number of malloc() and free() calls and also probably
     246         * dicreases a number of syscalls.
    245247         * Besides we free() this memory as soon as the gzipping will complete
    246248         * and do not wait while a whole response will be sent to a client.
     
    592594
    593595
    594 static char *ngx_http_gzip_set_window(ngx_conf_t *cf, ngx_command_t *cmd,
    595                                       void *conf)
    596 {
    597     ngx_http_gzip_conf_t *lcf = conf;
    598 
    599     int    wbits, wsize;
    600     char  *rv;
    601 
    602 
    603     rv = ngx_conf_set_size_slot(cf, cmd, conf);
    604     if (rv) {
    605         return rv;
    606     }
    607 
    608 ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "WBITS: %d", lcf->wbits);
     596static char *ngx_http_gzip_set_window(ngx_conf_t *cf, void *post, void *data)
     597{
     598    int *np = data;
     599
     600    int  wbits, wsize;
     601
     602
     603ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "WBITS: %d", *np);
    609604
    610605    wbits = 15;
    611606    for (wsize = 32 * 1024; wsize > 256; wsize >>= 1) {
    612607
    613         if (wsize == lcf->wbits) {
    614             lcf->wbits = wbits;
    615 ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "WBITS: %d", lcf->wbits);
     608        if (wsize == *np) {
     609            *np = wbits;
     610ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "WBITS: %d", *np);
    616611            return NULL;
    617612        }
     
    624619
    625620
    626 static char *ngx_http_gzip_set_hash(ngx_conf_t *cf, ngx_command_t *cmd,
    627                                     void *conf)
    628 {
    629     ngx_http_gzip_conf_t *lcf = conf;
    630 
    631     int    memlevel, hsize;
    632     char  *rv;
    633 
    634 
    635     rv = ngx_conf_set_size_slot(cf, cmd, conf);
    636     if (rv) {
    637         return rv;
    638     }
    639 
    640 ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "MEMLEVEL: %d", lcf->memlevel);
     621static char *ngx_http_gzip_set_hash(ngx_conf_t *cf, void *post, void *data)
     622{
     623    int *np = data;
     624
     625    int  memlevel, hsize;
     626
     627
     628ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "MEMLEVEL: %d", *np);
    641629
    642630    memlevel = 9;
    643631    for (hsize = 128 * 1024; hsize > 256; hsize >>= 1) {
    644632
    645         if (hsize == lcf->memlevel) {
    646             lcf->memlevel = memlevel;
    647 ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "MEMLEVEL: %d", lcf->memlevel);
     633        if (hsize == *np) {
     634            *np = memlevel;
     635ngx_conf_log_error(NGX_LOG_INFO, cf, 0, "MEMLEVEL: %d", *np);
    648636            return NULL;
    649637        }
  • src/http/modules/proxy/ngx_http_proxy_handler.c

    r156 r158  
    189189    /* STUB */ p->accel = 1;
    190190
    191     p->host_header = p->upstream.peers->peers[0].host;
    192 
    193191    ngx_test_null(p->request_hunks, ngx_http_proxy_create_request(p),
    194192                  NGX_HTTP_INTERNAL_SERVER_ERROR);
     
    221219          + 1 + r->args.len                                  /* 1 is for "?" */
    222220          + sizeof(http_version) - 1
    223           + sizeof(host_header) - 1 + p->host_header.len + 2
     221          + sizeof(host_header) - 1 + p->lcf->upstream->host_header.len + 2
    224222                                                          /* 2 is for "\r\n" */
    225223          + sizeof(connection_close_header) - 1
     
    269267
    270268    h->last = ngx_cpymem(h->last, host_header, sizeof(host_header) - 1);
    271     h->last = ngx_cpymem(h->last, p->host_header.data, p->host_header.len);
     269    h->last = ngx_cpymem(h->last, p->lcf->upstream->host_header.data,
     270                         p->lcf->upstream->host_header.len);
    272271    *(h->last++) = CR; *(h->last++) = LF;
    273272
  • src/http/modules/proxy/ngx_http_proxy_handler.h

    r155 r158  
    7474    ngx_str_t                   uri;
    7575    int                         location_len;
    76     ngx_str_t                   host_header;
    7776
    7877    ngx_event_pipe_t           *event_pipe;
  • src/http/ngx_http_core_module.c

    r155 r158  
    164164     NGX_HTTP_LOC_CONF_OFFSET,
    165165     offsetof(ngx_http_core_loc_conf_t, lingering_timeout),
     166     NULL},
     167
     168    {ngx_string("msie_padding"),
     169     NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
     170     ngx_conf_set_flag_slot,
     171     NGX_HTTP_LOC_CONF_OFFSET,
     172     offsetof(ngx_http_core_loc_conf_t, msie_padding),
    166173     NULL},
    167174
     
    844851    lcf->lingering_timeout = NGX_CONF_UNSET;
    845852
     853    lcf->msie_padding = NGX_CONF_UNSET;
     854
    846855    return lcf;
    847856}
     
    917926                              prev->lingering_timeout, 5000);
    918927
     928    ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1);
     929
    919930    return NGX_CONF_OK;
    920931}
  • src/http/ngx_http_core_module.h

    r154 r158  
    119119    ngx_msec_t    lingering_timeout;       /* lingering_timeout */
    120120
     121    int           msie_padding;            /* msie_padding */
     122
    121123    ngx_log_t    *err_log;
    122124} ngx_http_core_loc_conf_t;
  • src/http/ngx_http_special_response.c

    r155 r158  
    153153int ngx_http_special_response_handler(ngx_http_request_t *r, int error)
    154154{
    155     int           err, rc;
    156     ngx_hunk_t   *h;
    157     ngx_chain_t  *out, **ll, *cl;
     155    int                        err, rc;
     156    ngx_hunk_t                *h;
     157    ngx_chain_t               *out, **ll, *cl;
     158    ngx_http_core_loc_conf_t  *clcf;
    158159
    159160    r->headers_out.status = error;
     
    239240    ngx_chain_add_link(out, ll, cl);
    240241
    241     if (/* STUB: "msie_padding on/off" */ 1
     242    clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
     243
     244    if (clcf->msie_padding
    242245        && r->http_version >= NGX_HTTP_VERSION_10
    243246        && error >= NGX_HTTP_BAD_REQUEST
Note: See TracChangeset for help on using the changeset viewer.