diff --git a/src/core/nginx.c b/src/core/nginx.c
index ee63682..48e085b 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -1078,7 +1078,7 @@
             ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                           "invalid character \"%c\" in \"worker_cpu_affinity\"",
                           ch);
-            return NGX_CONF_ERROR ;
+            return NGX_CONF_ERROR;
         }
     }
 
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index d22a08e..b49a696 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -229,7 +229,7 @@
 
     /* TODO: configurable try number */
 
-    for (tries = 5 ; tries; tries--) {
+    for (tries = 5; tries; tries--) {
         failed = 0;
 
         /* for each listening socket */
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index 1b1f971..1ad2d8d 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -446,7 +446,7 @@
     || __FreeBSD_version >= 500018
                                  |NOTE_REVOKE
 #endif
-                                       ;
+                      ;
         kev->data = 0;
 
     } else {
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index d347107..1ec0119 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -942,7 +942,7 @@
     ngx_str_t  *value;
 
     if (ecf->connections != NGX_CONF_UNSET_UINT) {
-        return "is duplicate" ;
+        return "is duplicate";
     }
 
     if (ngx_strcmp(cmd->name.data, "connections") == 0) {
@@ -977,7 +977,7 @@
     ngx_event_module_t   *module;
 
     if (ecf->use != NGX_CONF_UNSET_UINT) {
-        return "is duplicate" ;
+        return "is duplicate";
     }
 
     value = cf->args->elts;
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c
index 0b7eb51..a9cb21e 100644
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -880,7 +880,7 @@
 
     ll = free;
 
-    for (cl = *free ; cl; cl = cl->next) {
+    for (cl = *free; cl; cl = cl->next) {
         if (cl->buf == s) {
             *ll = cl->next;
             break;
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
index c559d31..1d82648 100644
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -1224,7 +1224,7 @@
 
     umcf = ngx_http_get_module_main_conf(r, ngx_http_upstream_module);
 
-    for ( ;;  ) {
+    for ( ;; ) {
 
         rc = ngx_http_parse_header_line(r, &r->upstream->buffer);
 
diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c
index 1d7730d..ddd15f4 100644
--- a/src/http/modules/ngx_http_ssi_filter_module.c
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
@@ -1637,7 +1637,7 @@
 
         quoted = 0;
 
-        for (i = 0 ; i < text->len; i++) {
+        for (i = 0; i < text->len; i++) {
             ch = text->data[i];
 
             if (!quoted) {
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index 9a9f97b..bdc15d6 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -255,10 +255,10 @@
     ngx_array_t  *locations;
 
     /* pointer to the modules' loc_conf */
-    void        **loc_conf ;
+    void        **loc_conf;
 
     uint32_t      limit_except;
-    void        **limit_except_loc_conf ;
+    void        **limit_except_loc_conf;
 
     ngx_http_handler_pt  handler;
 
@@ -401,7 +401,7 @@
                                                                               \
     r->allow_ranges = 0;                                                      \
     if (r->headers_out.accept_ranges) {                                       \
-        r->headers_out.accept_ranges->hash = 0 ;                              \
+        r->headers_out.accept_ranges->hash = 0;                               \
         r->headers_out.accept_ranges = NULL;                                  \
     }
 
diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c
index 2dd5b95..b7f26f6 100644
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -536,7 +536,7 @@
         }
 
         b->last = ngx_copy(b->last, header[i].key.data, header[i].key.len);
-        *b->last++ = ':' ; *b->last++ = ' ' ;
+        *b->last++ = ':'; *b->last++ = ' ';
 
         b->last = ngx_copy(b->last, header[i].value.data, header[i].value.len);
         *b->last++ = CR; *b->last++ = LF;
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index 32b2ed5..e1d0eaf 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -619,7 +619,7 @@
     b->last = tail + len;
 
     out[1].buf = b;
-    out[1].next = NULL;;
+    out[1].next = NULL;
 
     if (msie_padding) {
         b = ngx_calloc_buf(r->pool);
@@ -633,7 +633,7 @@
 
         out[1].next = &out[2];
         out[2].buf = b;
-        out[2].next = NULL;;
+        out[2].next = NULL;
     }
 
     if (r == r->main) {
