diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c
index 5e8ef40..6134c92 100644
--- a/src/http/modules/ngx_http_fastcgi_module.c
+++ b/src/http/modules/ngx_http_fastcgi_module.c
@@ -1356,11 +1356,7 @@
                 }
 
             } else {
-                if (f->padding) {
-                    f->state = ngx_http_fastcgi_st_padding;
-                } else {
-                    f->state = ngx_http_fastcgi_st_version;
-                }
+                f->state = ngx_http_fastcgi_st_padding;
             }
 
             continue;
@@ -1597,11 +1593,7 @@
         f->length -= u->buffer.pos - start;
 
         if (f->length == 0) {
-            if (f->padding) {
-                f->state = ngx_http_fastcgi_st_padding;
-            } else {
-                f->state = ngx_http_fastcgi_st_version;
-            }
+            f->state = ngx_http_fastcgi_st_padding;
         }
 
         if (rc == NGX_HTTP_PARSE_HEADER_DONE) {
@@ -1696,12 +1688,7 @@
             }
 
             if (f->type == NGX_HTTP_FASTCGI_STDOUT && f->length == 0) {
-
-                if (f->padding) {
-                    f->state = ngx_http_fastcgi_st_padding;
-                } else {
-                    f->state = ngx_http_fastcgi_st_version;
-                }
+                f->state = ngx_http_fastcgi_st_padding;
 
                 if (!flcf->keep_conn) {
                     p->upstream_done = 1;
@@ -1714,12 +1701,7 @@
             }
 
             if (f->type == NGX_HTTP_FASTCGI_END_REQUEST) {
-
-                if (f->padding) {
-                    f->state = ngx_http_fastcgi_st_padding;
-                } else {
-                    f->state = ngx_http_fastcgi_st_version;
-                }
+                f->state = ngx_http_fastcgi_st_padding;
 
                 p->upstream_done = 1;
 
@@ -1730,7 +1712,7 @@
                 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, p->log, 0,
                                "http fastcgi sent end request");
 
-                break;
+                continue;
             }
         }
 
@@ -1789,11 +1771,7 @@
                               m + 1 - msg, msg);
 
             } else {
-                if (f->padding) {
-                    f->state = ngx_http_fastcgi_st_padding;
-                } else {
-                    f->state = ngx_http_fastcgi_st_version;
-                }
+                f->state = ngx_http_fastcgi_st_padding;
             }
 
             continue;
@@ -1852,33 +1830,14 @@
         ngx_log_debug2(NGX_LOG_DEBUG_EVENT, p->log, 0,
                        "input buf #%d %p", b->num, b->pos);
 
-        if (f->pos + f->length < f->last) {
-
-            if (f->padding) {
-                f->state = ngx_http_fastcgi_st_padding;
-            } else {
-                f->state = ngx_http_fastcgi_st_version;
-            }
-
+        if (f->pos + f->length <= f->last) {
+            f->state = ngx_http_fastcgi_st_padding;
             f->pos += f->length;
             b->last = f->pos;
 
             continue;
         }
 
-        if (f->pos + f->length == f->last) {
-
-            if (f->padding) {
-                f->state = ngx_http_fastcgi_st_padding;
-            } else {
-                f->state = ngx_http_fastcgi_st_version;
-            }
-
-            b->last = f->last;
-
-            break;
-        }
-
         f->length -= f->last - f->pos;
 
         b->last = f->last;
