Changeset 8310b2


Ignore:
Timestamp:
02/03/09 19:45:01 (3 years ago)
Author:
George Potapov <nephrite@…>
Branches:
master-v0.7, nginx-v0.7, nginx-v0.8, upstream_count_limit
Children:
e86d7f, f54237
Parents:
2ac4f5
git-author:
George Potapov <nephrite@…> (02/03/09 19:45:01)
git-committer:
George Potapov <nephrite@…> (02/03/09 19:45:01)
Message:

vendor drop nginx v0.7.33

Location:
server
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • server/CHANGES

    r2ac4f5 r8310b2  
     1 
     2Changes with nginx 0.7.33                                        02 Feb 2009 
     3 
     4    *) Bugfix: a double response might be returned if the epoll or rtsig  
     5       methods are used and a redirect was returned to a request with  
     6       body. 
     7       Thanks to Eden Li. 
     8 
     9    *) Bugfix: the $sent_http_location variable was empty for some  
     10       redirects types. 
     11 
     12    *) Bugfix: a segmentation fault might occur in worker process if  
     13       "resolver" directive was used in SMTP proxy. 
     14 
    115 
    216Changes with nginx 0.7.32                                        26 Jan 2009 
  • server/CHANGES.ru

    r2ac4f5 r8310b2  
     1 
     2éÚÍÅÎÅÎÉÑ × nginx 0.7.33                                          02.02.2009 
     3 
     4    *) éÓÐÒÁ×ÌÅÎÉÅ: ÅÓÌÉ ÎÁ ÚÁÐÒÏÓ Ó ÔÅÌÏÍ ×ÏÚ×ÒÁÝÁÌÓÑ ÒÅÄÉÒÅËÔ, ÔÏ ÏÔ×ÅÔ  
     5       ÍÏÇ ÂÙÔØ Ä×ÏÊÎÙÍ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÍÅÔÏÄÏ× epoll ÉÌÉ rtsig. 
     6       óÐÁÓÉÂÏ Eden Li. 
     7 
     8    *) éÓÐÒÁ×ÌÅÎÉÅ: ÄÌÑ ÎÅËÏÔÏÒÙÈ ÔÉÐÏ× ÒÅÄÉÒÅËÔÏ× × ÐÅÒÅÍÅÎÎÏÊ  
     9       $sent_http_location ÂÙÌÏ ÐÕÓÔÏÅ ÚÎÁÞÅÎÉÅ. 
     10 
     11    *) éÓÐÒÁ×ÌÅÎÉÅ: ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÄÉÒÅËÔÉ×Ù resolver × SMTP  
     12       ÐÒÏËÓÉ-ÓÅÒ×ÅÒÅ × ÒÁÂÏÞÅÍ ÐÒÏÃÅÓÓÅ ÍÏÇ ÐÒÏÉÚÏÊÔÉ segmentation fault. 
     13 
    114 
    215éÚÍÅÎÅÎÉÑ × nginx 0.7.32                                          26.01.2009 
  • server/src/core/nginx.h

    r2ac4f5 r8310b2  
    99 
    1010 
    11 #define NGINX_VERSION      "0.7.32" 
     11#define NGINX_VERSION      "0.7.33" 
    1212#define NGINX_VER          "nginx/" NGINX_VERSION 
    1313 
  • server/src/core/ngx_resolver.c

    r43a52e r8310b2  
    579579ngx_resolve_addr(ngx_resolver_ctx_t *ctx) 
    580580{ 
     581    u_char               *name; 
    581582    ngx_resolver_t       *r; 
    582583    ngx_resolver_node_t  *rn; 
     
    602603            ngx_queue_insert_head(&r->addr_expire_queue, &rn->queue); 
    603604 
    604             ctx->name.len = rn->nlen; 
    605             ctx->name.data = ngx_resolver_dup(r, rn->name, rn->nlen); 
    606             if (ctx->name.data == NULL) { 
     605            name = ngx_resolver_dup(r, rn->name, rn->nlen); 
     606            if (name == NULL) { 
    607607                goto failed; 
    608608            } 
    609609 
     610            ctx->name.len = rn->nlen; 
     611            ctx->name.data = name; 
     612 
    610613            /* unlock addr mutex */ 
    611614 
     
    614617            ctx->handler(ctx); 
    615618 
    616             ngx_resolver_free(r, ctx->name.data); 
     619            ngx_resolver_free(r, name); 
    617620 
    618621            return NGX_OK; 
     
    624627            rn->waiting = ctx; 
    625628 
    626             return NGX_AGAIN; 
     629            /* unlock addr mutex */ 
     630 
     631            return NGX_OK; 
    627632        } 
    628633 
     
    13371342        } 
    13381343 
    1339         if (naddrs) { 
     1344        if (naddrs > 1) { 
    13401345            ngx_resolver_free(r, addrs); 
    13411346        } 
     
    15141519    } 
    15151520 
    1516     len -= 2; 
    1517  
    15181521    if (ngx_resolver_copy(r, &name, buf, &buf[i], &buf[n]) != NGX_OK) { 
    15191522        return; 
     
    15221525    ngx_log_debug1(NGX_LOG_DEBUG_CORE, r->log, 0, "resolver an:%V", &name); 
    15231526 
    1524     if (len != (size_t) rn->nlen || ngx_strncmp(name.data, rn->name, len) != 0) 
     1527    if (name.len != (size_t) rn->nlen 
     1528        || ngx_strncmp(name.data, rn->name, name.len) != 0) 
    15251529    { 
    1526         ngx_resolver_free(r, rn->name); 
     1530        if (rn->nlen) { 
     1531            ngx_resolver_free(r, rn->name); 
     1532        } 
     1533 
     1534        rn->nlen = (u_short) name.len; 
    15271535        rn->name = name.data; 
    15281536 
    1529         name.data = ngx_resolver_dup(r, rn->name, len); 
     1537        name.data = ngx_resolver_dup(r, rn->name, name.len); 
    15301538        if (name.data == NULL) { 
    15311539            goto failed; 
  • server/src/http/modules/ngx_http_index_module.c

    rb82943 r8310b2  
    9797{ 
    9898    u_char                       *p, *name; 
    99     size_t                        len, nlen, root, allocated; 
     99    size_t                        len, root, reserve, allocated; 
    100100    ngx_int_t                     rc; 
    101101    ngx_str_t                     path, uri; 
     
    129129    dir_tested = 0; 
    130130    name = NULL; 
     131    /* suppress MSVC warning */ 
    131132    path.data = NULL; 
    132133 
     
    140141            } 
    141142 
    142             len = ilcf->max_index_len; 
    143             nlen = index[i].name.len; 
     143            reserve = ilcf->max_index_len; 
     144            len = index[i].name.len; 
    144145 
    145146        } else { 
     
    150151            e.flushed = 1; 
    151152 
    152             /* 1 byte for terminating '\0' */ 
    153  
     153            /* 1 is for terminating '\0' as in static names */ 
    154154            len = 1; 
    155155 
     
    159159            } 
    160160 
    161             nlen = len; 
    162  
    163161            /* 16 bytes are preallocation */ 
    164162 
    165             len += 16; 
    166         } 
    167  
    168         if (len > (size_t) (path.data + allocated - name)) { 
    169  
    170             name = ngx_http_map_uri_to_path(r, &path, &root, len); 
     163            reserve = len + 16; 
     164        } 
     165 
     166        if (reserve > allocated) { 
     167 
     168            name = ngx_http_map_uri_to_path(r, &path, &root, reserve); 
    171169            if (name == NULL) { 
    172170                return NGX_ERROR; 
    173171            } 
    174172 
    175             allocated = path.len; 
     173            allocated = path.data + path.len - name; 
    176174        } 
    177175 
     
    194192 
    195193            if (*name == '/') { 
    196                 uri.len = nlen - 1; 
     194                uri.len = len - 1; 
    197195                uri.data = name; 
    198196                return ngx_http_internal_redirect(r, &uri, &r->args); 
     
    249247        } 
    250248 
    251         uri.len = r->uri.len + nlen - 1; 
     249        uri.len = r->uri.len + len - 1; 
    252250 
    253251        if (!clcf->alias) { 
     
    261259 
    262260            p = ngx_copy(uri.data, r->uri.data, r->uri.len); 
    263             ngx_memcpy(p, name, nlen - 1); 
     261            ngx_memcpy(p, name, len - 1); 
    264262        } 
    265263 
     
    492490            } 
    493491 
    494             /* include the terminating '\0' to the length to use ngx_copy() */ 
     492            /* include the terminating '\0' to the length to use ngx_memcpy() */ 
    495493            index->name.len++; 
    496494 
  • server/src/http/modules/perl/nginx.pm

    r2ac4f5 r8310b2  
    4848); 
    4949 
    50 our $VERSION = '0.7.32'; 
     50our $VERSION = '0.7.33'; 
    5151 
    5252require XSLoader; 
  • server/src/http/ngx_http_core_module.c

    r2ac4f5 r8310b2  
    10351035    ngx_http_phase_handler_t *ph) 
    10361036{ 
    1037     size_t                        len, root, alias; 
    1038     ssize_t                       reserve, allocated; 
     1037    size_t                        len, root, alias, reserve, allocated; 
    10391038    u_char                       *p, *name; 
    10401039    ngx_str_t                     path; 
     
    10601059    root = 0; 
    10611060    name = NULL; 
    1062     path.len = 0; 
     1061    /* suppress MSVC warning */ 
    10631062    path.data = NULL; 
    10641063 
  • server/src/http/ngx_http_request.c

    rb82943 r8310b2  
    21862186 
    21872187    if (r->discard_body) { 
     2188        r->write_event_handler = ngx_http_request_empty_handler; 
    21882189        r->lingering_time = ngx_time() + (time_t) (clcf->lingering_time / 1000); 
    21892190        ngx_add_timer(rev, clcf->lingering_timeout); 
  • server/src/http/ngx_http_variables.c

    ra90ad7 r8310b2  
    6969    ngx_http_variable_value_t *v, uintptr_t data); 
    7070static ngx_int_t ngx_http_variable_sent_content_length(ngx_http_request_t *r, 
     71    ngx_http_variable_value_t *v, uintptr_t data); 
     72static ngx_int_t ngx_http_variable_sent_location(ngx_http_request_t *r, 
    7173    ngx_http_variable_value_t *v, uintptr_t data); 
    7274static ngx_int_t ngx_http_variable_sent_last_modified(ngx_http_request_t *r, 
     
    211213      ngx_http_variable_sent_content_length, 0, 0, 0 }, 
    212214 
     215    { ngx_string("sent_http_location"), NULL, 
     216      ngx_http_variable_sent_location, 0, 0, 0 }, 
     217 
    213218    { ngx_string("sent_http_last_modified"), NULL, 
    214219      ngx_http_variable_sent_last_modified, 0, 0, 0 }, 
     
    12431248 
    12441249static ngx_int_t 
     1250ngx_http_variable_sent_location(ngx_http_request_t *r, 
     1251    ngx_http_variable_value_t *v, uintptr_t data) 
     1252{ 
     1253    if (r->headers_out.location) { 
     1254        v->len = r->headers_out.location->value.len; 
     1255        v->valid = 1; 
     1256        v->no_cacheable = 0; 
     1257        v->not_found = 0; 
     1258        v->data = r->headers_out.location->value.data; 
     1259 
     1260        return NGX_OK; 
     1261    } 
     1262 
     1263    return ngx_http_variable_unknown_header(v, (ngx_str_t *) data, 
     1264                                            &r->headers_out.headers.part, 
     1265                                            sizeof("sent_http_") - 1); 
     1266} 
     1267 
     1268 
     1269static ngx_int_t 
    12451270ngx_http_variable_sent_last_modified(ngx_http_request_t *r, 
    12461271    ngx_http_variable_value_t *v, uintptr_t data) 
  • server/src/mail/ngx_mail_smtp_handler.c

    rb82943 r8310b2  
    1313 
    1414static void ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx); 
     15static void ngx_mail_smtp_resolve_name(ngx_event_t *rev); 
    1516static void ngx_mail_smtp_resolve_name_handler(ngx_resolver_ctx_t *ctx); 
    1617static void ngx_mail_smtp_greeting(ngx_mail_session_t *s, ngx_connection_t *c); 
     
    9293ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx) 
    9394{ 
    94     ngx_connection_t          *c; 
    95     ngx_mail_session_t        *s; 
    96     ngx_mail_core_srv_conf_t  *cscf; 
     95    ngx_connection_t    *c; 
     96    ngx_mail_session_t  *s; 
    9797 
    9898    s = ctx->data; 
     
    134134    ngx_log_debug1(NGX_LOG_DEBUG_MAIL, c->log, 0, 
    135135                   "address resolved: %V", &s->host); 
     136 
     137    c->read->handler = ngx_mail_smtp_resolve_name; 
     138 
     139    ngx_post_event(c->read, &ngx_posted_events); 
     140} 
     141 
     142 
     143static void 
     144ngx_mail_smtp_resolve_name(ngx_event_t *rev) 
     145{ 
     146    ngx_connection_t          *c; 
     147    ngx_mail_session_t        *s; 
     148    ngx_resolver_ctx_t        *ctx; 
     149    ngx_mail_core_srv_conf_t  *cscf; 
     150 
     151    c = rev->data; 
     152    s = c->data; 
    136153 
    137154    cscf = ngx_mail_get_module_srv_conf(s, ngx_mail_core_module); 
Note: See TracChangeset for help on using the changeset viewer.