diff --git a/exec/load/http.js b/exec/load/http.js
index 081c493f3fa15098afa62165acb961008c5fa950..c8002e967e57a499bf34e69a2acf09873f182894 100644
--- a/exec/load/http.js
+++ b/exec/load/http.js
@@ -112,18 +112,26 @@ function HTTPRequest(username,password)
 			if(header=='')
 				return;
 			this.response_headers.push(header);
-			m=header.match(/^Content-length:\s+([0-9]+)$/);
+			m=header.match(/^Content-length:\s+([0-9]+)$/i);
 			if(m!=null)
-				this.contentlength=parseInt(m[0]);
+				this.contentlength=parseInt(m[1]);
 		}
 	};
 
 	this.ReadBody=function() {
 		var ch;
+		var lastlen=0;
+		var len=this.contentlength;
+		if(len==undefined)
+			len=1024;
 
 		this.body='';
-		while((ch=this.sock.recv(1))!=null && ch != '') {
-			this.body += ch;
+		while((ch=this.sock.recv(len))!=null && ch != '') {
+			this.body += ch.toString();
+			len -= ch.length;
+			if(len < 1)
+				len=1024;
+			js.gc();
 		}
 	};