nginx-0.1.33-RELEASE import

*) Bugfix: nginx could not be built with the --without-pcre parameter;
       the bug had appeared in 0.1.29.

    *) Bugfix: 3, 4, 7, and 8 the "proxy_set_header" directives in one
       level cause the bus fault on start up.

    *) Bugfix: the HTTP protocol was specified in the HTTPS redirects.

    *) Bugfix: if the "rewrite" directive used the captures inside the "if"
       directive, then the 500 error code was returned.
This commit is contained in:
Igor Sysoev 2005-05-23 12:07:45 +00:00
parent debb8a42db
commit 4959ec482e
28 changed files with 182 additions and 76 deletions

View File

@ -10,27 +10,30 @@ ngx_include_opt="-I"
CFLAGS="$CFLAGS -msg_enable level6 -msg_fatal level6"
CFLAGS="$CFLAGS -msg_disable unknownmacro"
CFLAGS="$CFLAGS -msg_disable unusedincl"
CFLAGS="$CFLAGS -msg_disable unnecincl"
CFLAGS="$CFLAGS -msg_disable nestincl"
CFLAGS="$CFLAGS -msg_disable unusedincl"
CFLAGS="$CFLAGS -msg_disable unknownmacro"
CFLAGS="$CFLAGS -msg_disable strctpadding"
CFLAGS="$CFLAGS -msg_disable ansialiascast"
CFLAGS="$CFLAGS -msg_disable inlinestoclsmod"
CFLAGS="$CFLAGS -msg_disable cxxkeyword"
CFLAGS="$CFLAGS -msg_disable longlongsufx"
CFLAGS="$CFLAGS -msg_disable valuepres"
# STUB
CFLAGS="$CFLAGS -msg_disable truncintcast"
CFLAGS="$CFLAGS -msg_disable trunclongcast"
CFLAGS="$CFLAGS -msg_disable truncintasn"
CFLAGS="$CFLAGS -msg_disable trunclongint"
CFLAGS="$CFLAGS -msg_disable intconcastsgn"
CFLAGS="$CFLAGS -msg_disable intconstsign"
CFLAGS="$CFLAGS -msg_disable hexoctunsign"
CFLAGS="$CFLAGS -msg_disable switchlong"
CFLAGS="$CFLAGS -msg_disable valuepres"
CFLAGS="$CFLAGS -msg_disable subscrbounds2"
CFLAGS="$CFLAGS -msg_disable hexoctunsign"
CFLAGS="$CFLAGS -msg_disable ignorecallval"
CFLAGS="$CFLAGS -msg_disable nonstandcast"
CFLAGS="$CFLAGS -msg_disable embedcomment"
@ -38,4 +41,5 @@ CFLAGS="$CFLAGS -msg_disable unreachcode"
CFLAGS="$CFLAGS -msg_disable questcompare2"
CFLAGS="$CFLAGS -msg_disable unusedtop"
CFLAGS="$CFLAGS -msg_disable unrefdecl"
CFLAGS="$CFLAGS -msg_disable bitnotint"

View File

@ -124,7 +124,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
. auto/feature
if [ $NGX_CC_NAME = 'ccc' ]; then
if [ "$NGX_CC_NAME" = "ccc" ]; then
echo "checking for C99 variadic macros ... disabled"
else
ngx_feature="C99 variadic macros"

View File

@ -34,7 +34,7 @@ if `$CC -v 2>&1 | grep 'gcc version' 2>&1 >/dev/null`; then
echo " using GNU C compiler"
else
if `$CC -V 2>&1 | grep '^Intel(R) C++ Compiler' 2>&1 >/dev/null`; then
if `$CC -V 2>&1 | grep '^Intel(R) C' 2>&1 >/dev/null`; then
NGX_CC_NAME=icc
echo " using Intel C++ compiler"
@ -49,6 +49,7 @@ if `$CC -V 2>&1 | grep '^aCC: ' 2>&1 >/dev/null`; then
echo " using HP aC++ compiler"
else
NGX_CC_NAME=unknown
echo " unknown"
fi # acc

View File

@ -53,8 +53,9 @@ case "$NGX_PLATFORM" in
;;
OSF1:*)
# HP Tru64
# Tru64 UNIX
have=NGX_TRU64 . auto/have_headers
have=NGX_HAVE_STRERROR_R . auto/nohave
CORE_INCS="$UNIX_INCS"
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
CORE_SRCS="$UNIX_SRCS"

View File

@ -9,6 +9,53 @@
<title lang="en">nginx changelog</title>
<changes ver="0.1.33" date="23.05.2005">
<change type="bugfix">
<para lang="ru">
nginx ÎÅ ÓÏÂÉÒÁÌÓÑ Ó ÐÁÒÁÍÅÔÒÏÍ --without-pcre;
ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.1.29.
</para>
<para lang="en">
nginx could not be built with the --without-pcre parameter;
bug appeared in 0.1.29.
</para>
</change>
<change type="bugfix">
<para lang="ru">
3, 5, 7 É 8 ÄÉÒÅËÔÉ× proxy_set_header ÎÁ ÏÄÎÏÍ ÕÒÏ×ÎÅ ×ÙÚÙ×ÁÌÉ
bus fault ÐÒÉ ÚÁÐÕÓËÅ.
</para>
<para lang="en">
3, 4, 7, and 8 the "proxy_set_header" directives in one level cause
the bus fault on start up.
</para>
</change>
<change type="bugfix">
<para lang="ru">
× ÒÅÄÉÒÅËÔÁÈ ×ÎÕÔÒÉ HTTPS ÓÅÒ×ÅÒÁ ÂÙÌ ÕËÁÚÁÎ ÐÒÏÔÏËÏÌ HTTP.
</para>
<para lang="en">
the HTTP protocol was specified in the HTTPS redirects.
</para>
</change>
<change type="bugfix">
<para lang="ru">
ÅÓÌÉ ÄÉÒÅËÔÉ×Á rewrite ÉÓÐÏÌØÚÏ×ÁÌÁ ×ÙÄÅÌÅÎÉÑ ×ÎÕÔÒÉ ÄÉÒÅËÔÉ×Ù if, ÔÏ
×ÏÚ×ÒÁÝÁÌÁÓØ ÏÛÉÂËÁ 500.
</para>
<para lang="en">
if the "rewrite" directive used the captures inside the "if" directive, then
the 500 error code was returned.
</para>
</change>
</changes>
<changes ver="0.1.32" date="19.05.2005">
<change type="bugfix">

View File

@ -440,7 +440,7 @@ ngx_save_argv(ngx_cycle_t *cycle, int argc, char *const *argv)
return NGX_ERROR;
}
ngx_cpystrn((u_char *) ngx_argv[i], (u_char *) argv[i], len);
(void) ngx_cpystrn((u_char *) ngx_argv[i], (u_char *) argv[i], len);
}
ngx_argv[i] = NULL;
@ -473,8 +473,8 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle)
ccf->master = NGX_CONF_UNSET;
ccf->worker_processes = NGX_CONF_UNSET;
ccf->debug_points = NGX_CONF_UNSET;
ccf->user = (ngx_uid_t) NGX_CONF_UNSET;
ccf->group = (ngx_gid_t) NGX_CONF_UNSET;
ccf->user = (ngx_uid_t) NGX_CONF_UNSET_UINT;
ccf->group = (ngx_gid_t) NGX_CONF_UNSET_UINT;
#if (NGX_THREADS)
ccf->worker_threads = NGX_CONF_UNSET;
ccf->thread_stack_size = NGX_CONF_UNSET_SIZE;
@ -507,7 +507,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf)
#if !(NGX_WIN32)
if (ccf->user == (uid_t) NGX_CONF_UNSET && geteuid() == 0) {
if (ccf->user == (uid_t) NGX_CONF_UNSET_UINT && geteuid() == 0) {
pwd = getpwnam(NGX_USER);
if (pwd == NULL) {
@ -573,7 +573,7 @@ ngx_set_user(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
struct group *grp;
ngx_str_t *value;
if (ccf->user != (uid_t) NGX_CONF_UNSET) {
if (ccf->user != (uid_t) NGX_CONF_UNSET_UINT) {
return "is duplicate";
}

View File

@ -8,7 +8,7 @@
#define _NGINX_H_INCLUDED_
#define NGINX_VER "nginx/0.1.32"
#define NGINX_VER "nginx/0.1.33"
#define NGINX_VAR "NGINX"
#define NGX_NEWPID_EXT ".newbin"

View File

@ -457,7 +457,7 @@ ngx_conf_read_token(ngx_conf_t *cf)
return NGX_OK;
case '}':
if (cf->args->nelts > 0) {
if (cf->args->nelts != 0) {
ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
"unexpected \"}\" in %s:%ui",
cf->conf_file->file.name.data,

View File

@ -126,9 +126,9 @@ typedef long ngx_flag_t;
#if ((__GNU__ == 2) && (__GNUC_MINOR__ < 8))
#define NGX_MAX_UINT32_VALUE 0xffffffffLL
#define NGX_MAX_UINT32_VALUE (uint32_t) 0xffffffffLL
#else
#define NGX_MAX_UINT32_VALUE 0xffffffff
#define NGX_MAX_UINT32_VALUE (uint32_t) 0xffffffff
#endif

View File

@ -17,8 +17,8 @@ typedef struct {
struct sockaddr *sockaddr;
socklen_t socklen; /* size of sockaddr */
int addr; /* offset to address in sockaddr */
int addr_text_max_len;
size_t addr; /* offset to address in sockaddr */
size_t addr_text_max_len;
ngx_str_t addr_text;
int family;

View File

@ -717,7 +717,7 @@ void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
continue;
}
#else
if (user != (ngx_uid_t) -1) {
if (user != (ngx_uid_t) NGX_CONF_UNSET_UINT) {
if (ngx_file_info((const char *) file[i].name.data, &fi) == -1) {
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,

View File

@ -61,8 +61,8 @@ ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, ngx_pool_t *pool,
n = ngx_next_temp_number(0);
for ( ;; ) {
ngx_sprintf(file->name.data + path->name.len + 1 + path->len,
"%0muA%Z", n);
(void) ngx_sprintf(file->name.data + path->name.len + 1 + path->len,
"%0muA%Z", n);
ngx_create_hashed_filename(file, path);
@ -123,7 +123,8 @@ ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, ngx_pool_t *pool,
void
ngx_create_hashed_filename(ngx_file_t *file, ngx_path_t *path)
{
ngx_uint_t i, name, pos, level;
size_t name, pos, level;
ngx_uint_t i;
name = file->name.len;
pos = path->name.len + 1;
@ -151,8 +152,9 @@ ngx_create_hashed_filename(ngx_file_t *file, ngx_path_t *path)
ngx_int_t
ngx_create_path(ngx_file_t *file, ngx_path_t *path)
{
int i, pos;
ngx_err_t err;
size_t pos;
ngx_err_t err;
ngx_uint_t i;
pos = path->name.len;
@ -344,7 +346,7 @@ ngx_create_pathes(ngx_cycle_t *cycle, ngx_uid_t user)
}
}
if (user == (ngx_uid_t) -1) {
if (user == (ngx_uid_t) NGX_CONF_UNSET_UINT) {
continue;
}

View File

@ -33,8 +33,8 @@ struct ngx_file_s {
struct ngx_path_s {
ngx_str_t name;
ngx_uint_t len;
ngx_uint_t level[3];
size_t len;
size_t level[3];
ngx_gc_handler_pt cleaner;
u_char *conf_file;

View File

@ -6,7 +6,6 @@
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_garbage_collector.h>

View File

@ -225,8 +225,9 @@ ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u)
{
char *err;
u_char *host;
size_t len;
in_addr_t in_addr;
ngx_uint_t i, len;
ngx_uint_t i;
ngx_peers_t *peers;
struct hostent *h;
struct sockaddr_in *sin;
@ -281,7 +282,7 @@ ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u)
return NULL;
}
ngx_cpystrn(host, u->host.data, u->host.len + 1);
(void) ngx_cpystrn(host, u->host.data, u->host.len + 1);
/* AF_INET only */

View File

@ -179,7 +179,7 @@ ngx_log_write(ngx_log_t *log, u_char *errstr, size_t len)
errstr[len++] = LF;
write(log->file->fd, errstr, len);
(void) write(log->file->fd, errstr, len);
#endif
}

View File

@ -381,12 +381,12 @@ ngx_output_chain_copy_buf(ngx_buf_t *dst, ngx_buf_t *src, ngx_uint_t sendfile)
n = ngx_read_file(src->file, dst->pos, (size_t) size, src->file_pos);
if (n == NGX_ERROR) {
return n;
return (ngx_int_t) n;
}
#if (NGX_FILE_AIO_READ)
if (n == NGX_AGAIN) {
return n;
return (ngx_int_t) n;
}
#endif

View File

@ -15,7 +15,7 @@ ngx_cpystrn(u_char *dst, u_char *src, size_t n)
return dst;
}
for (/* void */; --n; dst++, src++) {
for ( /* void */ ; --n; dst++, src++) {
*dst = *src;
if (*dst == '\0') {

View File

@ -155,14 +155,14 @@ ngx_time_update(time_t s)
p = cached_http_time[slot];
ngx_sprintf(p, "%s, %02d %s %4d %02d:%02d:%02d GMT",
week[ngx_cached_gmtime.ngx_tm_wday],
ngx_cached_gmtime.ngx_tm_mday,
months[ngx_cached_gmtime.ngx_tm_mon - 1],
ngx_cached_gmtime.ngx_tm_year,
ngx_cached_gmtime.ngx_tm_hour,
ngx_cached_gmtime.ngx_tm_min,
ngx_cached_gmtime.ngx_tm_sec);
(void) ngx_sprintf(p, "%s, %02d %s %4d %02d:%02d:%02d GMT",
week[ngx_cached_gmtime.ngx_tm_wday],
ngx_cached_gmtime.ngx_tm_mday,
months[ngx_cached_gmtime.ngx_tm_mon - 1],
ngx_cached_gmtime.ngx_tm_year,
ngx_cached_gmtime.ngx_tm_hour,
ngx_cached_gmtime.ngx_tm_min,
ngx_cached_gmtime.ngx_tm_sec);
ngx_cached_http_time.data = p;
@ -175,7 +175,7 @@ ngx_time_update(time_t s)
#elif (NGX_HAVE_GMTOFF)
ngx_localtime(&tm);
ngx_gmtoff = tm.ngx_tm_gmtoff / 60;
ngx_gmtoff = (ngx_int_t) (tm.ngx_tm_gmtoff / 60);
#else
@ -187,22 +187,22 @@ ngx_time_update(time_t s)
p = cached_err_log_time[slot];
ngx_sprintf(p, "%4d/%02d/%02d %02d:%02d:%02d",
tm.ngx_tm_year, tm.ngx_tm_mon,
tm.ngx_tm_mday, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec);
(void) ngx_sprintf(p, "%4d/%02d/%02d %02d:%02d:%02d",
tm.ngx_tm_year, tm.ngx_tm_mon,
tm.ngx_tm_mday, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec);
ngx_cached_err_log_time.data = p;
p = cached_http_log_time[slot];
ngx_sprintf(p, "%02d/%s/%d:%02d:%02d:%02d %c%02d%02d",
tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
tm.ngx_tm_year, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec,
ngx_gmtoff < 0 ? '-' : '+',
abs(ngx_gmtoff / 60), abs(ngx_gmtoff % 60));
(void) ngx_sprintf(p, "%02d/%s/%d:%02d:%02d:%02d %c%02d%02d",
tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
tm.ngx_tm_year, tm.ngx_tm_hour,
tm.ngx_tm_min, tm.ngx_tm_sec,
ngx_gmtoff < 0 ? '-' : '+',
abs(ngx_gmtoff / 60), abs(ngx_gmtoff % 60));
ngx_cached_http_log_time.data = p;

View File

@ -72,7 +72,7 @@ ngx_unix_upstream_parse(ngx_conf_t *cf, ngx_unix_domain_upstream_t *u)
peers->number = 1;
sun->sun_family = AF_UNIX;
ngx_cpystrn((u_char *) sun->sun_path, u->url.data + 5, len + 1);
(void) ngx_cpystrn((u_char *) sun->sun_path, u->url.data + 5, len + 1);
peers->peer[0].sockaddr = (struct sockaddr *) sun;
peers->peer[0].socklen = sizeof(struct sockaddr_un);

View File

@ -311,8 +311,8 @@ static char ngx_http_proxy_version[] = " HTTP/1.0" CRLF;
static ngx_table_elt_t ngx_http_proxy_headers[] = {
{ 0, ngx_string("Host"), ngx_string("$proxy_host"), },
{ 0, ngx_string("Connection"), ngx_string("close"), },
{ 0, ngx_string("Host"), ngx_string("$proxy_host") },
{ 0, ngx_string("Connection"), ngx_string("close") },
{ 0, ngx_null_string, ngx_null_string }
};
@ -1560,6 +1560,8 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
*s = *h;
src = conf->headers_source->elts;
next:
continue;

View File

@ -556,8 +556,7 @@ ngx_http_rewrite(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
regex_end->redirect = regex->redirect;
if (last) {
code = ngx_http_script_add_code(lcf->codes, sizeof(uintptr_t),
&regex);
code = ngx_http_script_add_code(lcf->codes, sizeof(uintptr_t), &regex);
if (code == NULL) {
return NGX_CONF_ERROR;
}
@ -713,6 +712,11 @@ ngx_http_rewrite_if(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
}
if (lcf->captures < nlcf->captures) {
lcf->captures = nlcf->captures;
}
if (elts != lcf->codes->elts) {
if_code = (ngx_http_script_if_code_t *)
((u_char *) if_code + ((u_char *) lcf->codes->elts - elts));

View File

@ -264,11 +264,26 @@ ngx_http_header_filter(ngx_http_request_t *r)
{
r->headers_out.location->hash = 0;
len += sizeof("Location: http://") - 1
+ r->server_name.len + r->headers_out.location->value.len + 2;
#if (NGX_HTTP_SSL)
if (r->connection->ssl) {
len += sizeof("Location: https://") - 1
+ r->server_name.len
+ r->headers_out.location->value.len + 2;
if (r->port != 80) {
len += r->port_text->len;
if (r->port != 443) {
len += r->port_text->len;
}
} else
#endif
{
len += sizeof("Location: http://") - 1
+ r->server_name.len
+ r->headers_out.location->value.len + 2;
if (r->port != 80) {
len += r->port_text->len;
}
}
}
@ -396,13 +411,33 @@ ngx_http_header_filter(ngx_http_request_t *r)
&& r->headers_out.location->value.data[0] == '/')
{
p = b->last + sizeof("Location: ") - 1;
b->last = ngx_cpymem(b->last, "Location: http://",
sizeof("Location: http://") - 1);
b->last = ngx_cpymem(b->last, "Location: http",
sizeof("Location: http") - 1);
#if (NGX_HTTP_SSL)
if (r->connection->ssl) {
*b->last++ ='s';
}
#endif
*b->last++ = ':'; *b->last++ = '/'; *b->last++ = '/';
b->last = ngx_cpymem(b->last, r->server_name.data,
r->server_name.len);
if (r->port != 80) {
b->last = ngx_cpymem(b->last, r->port_text->data,
r->port_text->len);
#if (NGX_HTTP_SSL)
if (r->connection->ssl) {
if (r->port != 443) {
b->last = ngx_cpymem(b->last, r->port_text->data,
r->port_text->len);
}
} else
#endif
{
if (r->port != 80) {
b->last = ngx_cpymem(b->last, r->port_text->data,
r->port_text->len);
}
}
b->last = ngx_cpymem(b->last, r->headers_out.location->value.data,

View File

@ -463,6 +463,9 @@ ngx_http_script_start_args_code(ngx_http_script_engine_t *e)
}
#if (NGX_PCRE)
void
ngx_http_script_regex_start_code(ngx_http_script_engine_t *e)
{
@ -693,6 +696,8 @@ ngx_http_script_regex_end_code(ngx_http_script_engine_t *e)
e->ip += sizeof(ngx_http_script_regex_end_code_t);
}
#endif
void
ngx_http_script_return_code(ngx_http_script_engine_t *e)

View File

@ -79,6 +79,8 @@ typedef struct {
} ngx_http_script_copy_capture_code_t;
#if (NGX_PCRE)
typedef struct {
ngx_http_script_code_pt code;
ngx_regex_t *regex;
@ -114,6 +116,8 @@ typedef struct {
uintptr_t redirect:1;
} ngx_http_script_regex_end_code_t;
#endif
typedef struct {
ngx_http_script_code_pt code;
@ -156,10 +160,11 @@ size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e);
void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e);
size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e);
void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);
void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);
#if (NGX_PCRE)
void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e);
void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e);
void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);
void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);
#endif
void ngx_http_script_return_code(ngx_http_script_engine_t *e);
void ngx_http_script_if_code(ngx_http_script_engine_t *e);
void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e);

View File

@ -52,7 +52,7 @@ u_char *ngx_strerror_r(int err, u_char *errstr, size_t size);
#else
/* Solaris has thread-safe strerror() */
/* Solaris and Tru64 UNIX have thread-safe strerror() */
#define ngx_strerror_r(err, errstr, size) \
ngx_cpystrn(errstr, (u_char *) strerror(err), size)

View File

@ -14,7 +14,7 @@ void ngx_localtime(ngx_tm_t *tm)
time_t now;
now = ngx_time();
localtime_r(&now, tm);
(void) localtime_r(&now, tm);
#else
time_t now;
@ -37,7 +37,7 @@ void ngx_libc_localtime(struct tm *tm)
time_t now;
now = ngx_time();
localtime_r(&now, tm);
(void) localtime_r(&now, tm);
#else
time_t now;
@ -57,7 +57,7 @@ void ngx_libc_gmtime(struct tm *tm)
time_t now;
now = ngx_time();
gmtime_r(&now, tm);
(void) gmtime_r(&now, tm);
#else
time_t now;

View File

@ -57,9 +57,9 @@ void ngx_localtime(ngx_tm_t *tm);
void ngx_libc_localtime(struct tm *tm);
void ngx_libc_gmtime(struct tm *tm);
#define ngx_gettimeofday(tp) gettimeofday(tp, NULL);
#define ngx_msleep(ms) usleep(ms * 1000)
#define ngx_sleep(s) sleep(s)
#define ngx_gettimeofday(tp) (void) gettimeofday(tp, NULL);
#define ngx_msleep(ms) (void) usleep(ms * 1000)
#define ngx_sleep(s) (void) sleep(s)
#endif /* _NGX_TIME_H_INCLUDED_ */