nginx-0.0.10-2004-09-15-20:00:43 import
diff --git a/src/core/ngx_array.h b/src/core/ngx_array.h
index fadb203..a6a1c8a 100644
--- a/src/core/ngx_array.h
+++ b/src/core/ngx_array.h
@@ -41,7 +41,8 @@
ngx_test_null(a.elts, ngx_palloc(p, n * s), rc); \
a.nelts = 0; a.size = s; a.nalloc = n; a.pool = p;
-#define ngx_array_push ngx_push_array
+#define ngx_array_create ngx_create_array
+#define ngx_array_push ngx_push_array
#endif /* _NGX_ARRAY_H_INCLUDED_ */
diff --git a/src/core/ngx_config.h b/src/core/ngx_config.h
index 09fd70e..63a42ef 100644
--- a/src/core/ngx_config.h
+++ b/src/core/ngx_config.h
@@ -84,11 +84,20 @@
#define NGX_OFF_T_LEN sizeof("-9223372036854775808") - 1
+#if (SOLARIS)
+
+/* TODO: auto_conf */
+#define NGX_ALIGN (_MAX_ALIGNMENT - 1) /* platform word */
+#define NGX_ALIGN_CAST (unsigned long) /* size of the pointer */
+
+#else
/* TODO: auto_conf */
#define NGX_ALIGN (sizeof(unsigned long) - 1) /* platform word */
#define NGX_ALIGN_CAST (unsigned long) /* size of the pointer */
+#endif
+
#define ngx_align(p) (char *) ((NGX_ALIGN_CAST p + NGX_ALIGN) & ~NGX_ALIGN)
diff --git a/src/http/ngx_http_log_handler.c b/src/http/ngx_http_log_handler.c
index 35014cf..3de6b10 100644
--- a/src/http/ngx_http_log_handler.c
+++ b/src/http/ngx_http_log_handler.c
@@ -137,6 +137,10 @@
lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
+ if (lcf->off) {
+ return NGX_OK;
+ }
+
log = lcf->logs->elts;
for (l = 0; l < lcf->logs->nelts; l++) {
@@ -662,8 +666,9 @@
{
ngx_http_log_loc_conf_t *conf;
- ngx_test_null(conf, ngx_pcalloc(cf->pool, sizeof(ngx_http_log_loc_conf_t)),
- NGX_CONF_ERROR);
+ if (!(conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_log_loc_conf_t)))) {
+ return NGX_CONF_ERROR;
+ }
return conf;
}
@@ -680,17 +685,27 @@
ngx_http_log_main_conf_t *lmcf;
if (conf->logs == NULL) {
+
+ if (conf->off) {
+ return NGX_CONF_OK;
+ }
+
if (prev->logs) {
conf->logs = prev->logs;
} else {
- conf->logs = ngx_create_array(cf->pool, 2, sizeof(ngx_http_log_t));
+ if (prev->off) {
+ conf->off = prev->off;
+ return NGX_CONF_OK;
+ }
+
+ conf->logs = ngx_array_create(cf->pool, 2, sizeof(ngx_http_log_t));
if (conf->logs == NULL) {
return NGX_CONF_ERROR;
}
- if (!(log = ngx_push_array(conf->logs))) {
+ if (!(log = ngx_array_push(conf->logs))) {
return NGX_CONF_ERROR;
}
@@ -701,6 +716,7 @@
lmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_log_module);
fmt = lmcf->formats.elts;
+
/* the default "combined" format */
log->ops = fmt[0].ops;
}
@@ -721,17 +737,23 @@
ngx_http_log_fmt_t *fmt;
ngx_http_log_main_conf_t *lmcf;
+ value = cf->args->elts;
+
+ if (ngx_strcmp(value[1].data, "off") == 0) {
+ llcf->off = 1;
+ return NGX_CONF_OK;
+ }
+
if (llcf->logs == NULL) {
- if (!(llcf->logs = ngx_create_array(cf->pool, 2,
- sizeof(ngx_http_log_t)))) {
+ llcf->logs = ngx_array_create(cf->pool, 2, sizeof(ngx_http_log_t));
+ if (llcf->logs == NULL) {
return NGX_CONF_ERROR;
}
}
- value = cf->args->elts;
lmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_log_module);
- if (!(log = ngx_push_array(llcf->logs))) {
+ if (!(log = ngx_array_push(llcf->logs))) {
return NGX_CONF_ERROR;
}
diff --git a/src/http/ngx_http_log_handler.h b/src/http/ngx_http_log_handler.h
index 2ffc61a..d29e70d 100644
--- a/src/http/ngx_http_log_handler.h
+++ b/src/http/ngx_http_log_handler.h
@@ -49,6 +49,7 @@
typedef struct {
ngx_array_t *logs; /* array of ngx_http_log_t */
+ ngx_uint_t off; /* unsigned off:1 */
} ngx_http_log_loc_conf_t;
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 8b44acc..a930d1d 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -97,10 +97,6 @@
ngx_event_t *rev;
ngx_http_log_ctx_t *ctx;
-#if (NGX_STAT_STUB)
- (*ngx_stat_reading)++;
-#endif
-
if (!(ctx = ngx_pcalloc(c->pool, sizeof(ngx_http_log_ctx_t)))) {
ngx_http_close_connection(c);
return;
@@ -133,6 +129,10 @@
return;
}
+#if (NGX_STAT_STUB)
+ (*ngx_stat_reading)++;
+#endif
+
ngx_http_init_request(rev);
return;
}
@@ -155,6 +155,11 @@
return;
}
#endif
+
+#if (NGX_STAT_STUB)
+ (*ngx_stat_reading)++;
+#endif
+
}
@@ -178,6 +183,11 @@
if (rev->timedout) {
ngx_log_error(NGX_LOG_INFO, c->log, NGX_ETIMEDOUT, "client timed out");
+
+#if (NGX_STAT_STUB)
+ (*ngx_stat_reading)--;
+#endif
+
ngx_http_close_connection(c);
return;
}
@@ -186,8 +196,17 @@
r = c->data;
ngx_memzero(r, sizeof(ngx_http_request_t));
+#if (NGX_STAT_STUB)
+ (*ngx_stat_reading)++;
+#endif
+
} else {
if (!(r = ngx_pcalloc(c->pool, sizeof(ngx_http_request_t)))) {
+
+#if (NGX_STAT_STUB)
+ (*ngx_stat_reading)--;
+#endif
+
ngx_http_close_connection(c);
return;
}
@@ -195,6 +214,10 @@
c->data = r;
}
+#if (NGX_STAT_STUB)
+ r->stat_reading = 1;
+#endif
+
c->sent = 0;
r->signature = NGX_HTTP_MODULE;
@@ -869,7 +892,9 @@
#if (NGX_STAT_STUB)
(*ngx_stat_reading)--;
+ r->stat_reading = 0;
(*ngx_stat_writing)++;
+ r->stat_writing = 1;
#endif
rev->event_handler = ngx_http_block_read;
@@ -1118,6 +1143,12 @@
ngx_ssl_set_nosendshut(r->connection->ssl);
#endif
}
+
+ if (ngx_strstr(r->headers_in.user_agent->value.data, "Opera")) {
+ r->headers_in.opera = 1;
+ r->headers_in.msie = 0;
+ r->headers_in.msie4 = 0;
+ }
}
return NGX_OK;
@@ -1148,11 +1179,6 @@
}
if (rc == NGX_HTTP_CLIENT_CLOSED_REQUEST || r->closed) {
-
-#if (NGX_STAT_STUB)
- (*ngx_stat_writing)--;
-#endif
-
ngx_http_close_request(r, 0);
ngx_http_close_connection(r->connection);
return;
@@ -1163,11 +1189,6 @@
return;
} else if (rc == NGX_ERROR) {
-
-#if (NGX_STAT_STUB)
- (*ngx_stat_writing)--;
-#endif
-
ngx_http_close_request(r, 0);
ngx_http_close_connection(r->connection);
return;
@@ -1177,10 +1198,6 @@
return;
}
-#if (NGX_STAT_STUB)
- (*ngx_stat_writing)--;
-#endif
-
if (r->connection->read->timer_set) {
ngx_del_timer(r->connection->read);
}
@@ -1800,6 +1817,16 @@
return;
}
+#if (NGX_STAT_STUB)
+ if (r->stat_reading) {
+ (*ngx_stat_reading)--;
+ }
+
+ if (r->stat_writing) {
+ (*ngx_stat_writing)--;
+ }
+#endif
+
if (error && r->headers_out.status == 0) {
r->headers_out.status = error;
}
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 276330e..4a579ce 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -148,6 +148,7 @@
unsigned msie:1;
unsigned msie4:1;
+ unsigned opera:1;
} ngx_http_headers_in_t;
@@ -308,6 +309,11 @@
unsigned filter_need_temporary:1;
unsigned filter_allow_ranges:1;
+#if (NGX_STAT_STUB)
+ unsigned stat_reading:1;
+ unsigned stat_writing:1;
+#endif
+
ngx_uint_t headers_n;
/* used to parse HTTP headers */