diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
index 0b3bd4d008f73733de133aa213f3d07c3e3819c5..78e2c7588ee3aeee24007b33773c332d4b4da3e7 100644
--- a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
+++ b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
@@ -430,7 +430,7 @@ OUTER: while (sizeof(buf) > cpos) {
 		if (sscanf(buf[cpos..f], "%x", np)) {
 		    if (np) cpos = f+np+4;
 		    else {
-			if (sscanf(buf[cpos..f+3], "%*x%*[ ]%s", data)
+			if (sscanf(buf[cpos..f+3], "%*x%*[^\r\n]%s", data)
 				== 3 && sizeof(data) == 4) break;
 			return;
 		    }
@@ -891,7 +891,7 @@ string data(int|void max_length)
 
 	 DBG("got %d; chunk: %O left: %d\n",strlen(lbuf),rbuf[..40],strlen(rbuf));
 
-	 if (sscanf(rbuf,"%x%*[ ]\r\n%s",len,s)==3)
+	 if (sscanf(rbuf,"%x%*[^\r\n]\r\n%s",len,s)==3)
 	 {
 	    if (len==0)
 	    {