diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike
index 7b101bf3f11163e5f6364522325d75d6972713d9..2128039ee77093eea7523cedeca35ff45d200c37 100644
--- a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike
+++ b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike
@@ -723,15 +723,14 @@ void send_write()
 	 }
       }
    }
-   else if (send_pos==sizeof(send_buf) && !send_fd)
-   {
-      finish(sent==send_stop);
-      return;
-   }
 
    int n=my_fd->write(send_buf[send_pos..]);
+
    sent += n;
    send_pos+=n;
+
+   if (send_pos==sizeof(send_buf) && !send_fd)
+      finish(sent==send_stop);
 }
 
 void send_timeout()