diff -ur busybox.old/networking/httpd.c busybox.dev/networking/httpd.c
--- busybox.old/networking/httpd.c	2007-02-10 16:36:50.950661000 +0100
+++ busybox.dev/networking/httpd.c	2007-02-11 21:24:52.026742384 +0100
@@ -1211,9 +1211,10 @@
 #if PIPESIZE >= MAX_MEMORY_BUFF
 # error "PIPESIZE >= MAX_MEMORY_BUFF"
 #endif
-			/* NB: was safe_read. If it *has to be* safe_read, */
-			/* please explain why in this comment... */
-			count = full_read(inFd, rbuf, PIPESIZE);
+			/* reverted back to safe_read, otherwise httpd may block if the */
+			/* cgi-script outputs page date before it has fully received all */
+			/* (eg POST) data */
+			count = safe_read(inFd, rbuf, PIPESIZE);
 			if (count == 0)
 				break;  /* closed */
 			if (count < 0)
