diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index cc03b58..b3f6a56 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -170,7 +170,7 @@
 
     ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
 
-    if (ccf->master == 0) {
+    if (ccf->master == 0 || ngx_accept_mutex_ptr) {
         return NGX_OK;
     }
 
@@ -196,6 +196,10 @@
 
     ngx_connection_counter = (ngx_atomic_t *) (shared + 128);
 
+    ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+                   "counter: " PTR_FMT ", %d",
+                   ngx_connection_counter, *ngx_connection_counter);
+
 #endif
 
     return NGX_OK;
diff --git a/src/http/modules/ngx_http_gzip_filter.c b/src/http/modules/ngx_http_gzip_filter.c
index 3b228c4..89598fb 100644
--- a/src/http/modules/ngx_http_gzip_filter.c
+++ b/src/http/modules/ngx_http_gzip_filter.c
@@ -666,10 +666,6 @@
 
                 ctx->done = 1;
 
-#if 0
-                ngx_http_delete_ctx(r, ngx_http_gzip_filter_module);
-#endif
-
                 break;
             }
 
diff --git a/src/http/modules/ngx_http_rewrite_handler.c b/src/http/modules/ngx_http_rewrite_handler.c
index 88c6a33..8a645e0 100644
--- a/src/http/modules/ngx_http_rewrite_handler.c
+++ b/src/http/modules/ngx_http_rewrite_handler.c
@@ -32,11 +32,13 @@
 
 typedef struct {
     ngx_array_t   rules;
-    unsigned      log:1;
+    ngx_flag_t    log;
 } ngx_http_rewrite_srv_conf_t;
 
 
-static void *ngx_http_rewrite_create_loc_conf(ngx_conf_t *cf);
+static void *ngx_http_rewrite_create_srv_conf(ngx_conf_t *cf);
+static char *ngx_http_rewrite_merge_srv_conf(ngx_conf_t *cf,
+                                             void *parent, void *child);
 static char *ngx_http_rewrite_rule(ngx_conf_t *cf, ngx_command_t *cmd,
                                    void *conf);
 static ngx_int_t ngx_http_rewrite_init(ngx_cycle_t *cycle);
@@ -51,6 +53,13 @@
       0,
       NULL },
 
+    { ngx_string("rewrite_log"),
+      NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_flag_slot,
+      NGX_HTTP_SRV_CONF_OFFSET,
+      offsetof(ngx_http_rewrite_srv_conf_t, log),
+      NULL },
+
       ngx_null_command
 };
 
@@ -61,8 +70,8 @@
     NULL,                                  /* create main configuration */
     NULL,                                  /* init main configuration */
 
-    ngx_http_rewrite_create_loc_conf,      /* create server configuration */
-    NULL,                                  /* merge server configuration */
+    ngx_http_rewrite_create_srv_conf,      /* create server configuration */
+    ngx_http_rewrite_merge_srv_conf,       /* merge server configuration */
 
     NULL,                                  /* create location configration */
     NULL,                                  /* merge location configration */
@@ -187,7 +196,7 @@
 }
 
 
-static void *ngx_http_rewrite_create_loc_conf(ngx_conf_t *cf)
+static void *ngx_http_rewrite_create_srv_conf(ngx_conf_t *cf)
 {
     ngx_http_rewrite_srv_conf_t  *conf;
 
@@ -198,12 +207,24 @@
     ngx_init_array(conf->rules, cf->pool, 5, sizeof(ngx_http_rewrite_rule_t),
                    NGX_CONF_ERROR);
 
-    conf->log = 1;
+    conf->log = NGX_CONF_UNSET;
 
     return conf;
 }
 
 
+static char *ngx_http_rewrite_merge_srv_conf(ngx_conf_t *cf,
+                                             void *parent, void *child)
+{
+    ngx_http_rewrite_srv_conf_t *prev = parent;
+    ngx_http_rewrite_srv_conf_t *conf = child;
+
+    ngx_conf_merge_value(conf->log, prev->log, 0);
+
+    return NGX_CONF_OK;
+}
+
+
 static char *ngx_http_rewrite_rule(ngx_conf_t *cf, ngx_command_t *cmd,
                                    void *conf)
 {
