diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
index 830bdadfe6004f053a4cb20d6297025b5e0de41c..0834ee7a91b9ec41393b019ba7c6107bcc495341 100644
--- a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
+++ b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
@@ -139,13 +139,16 @@ static void ponder_answer()
    // read until we have all headers
 
    int i=0;
+   int j=0;
 
    for (;;)
    {
       string s;
 
       if (i<0) i=0;
-      if ((i=search(buf,"\r\n\r\n",i))!=-1) break;
+      j=search(buf,"\r\n\r\n",i); if (j==-1) j=10000000;
+      i=search(buf,"\n\n",i);     if (i==-1) i=10000000;
+      if ((j=min(i,j))!=10000000)  break;
 
       s=con->read(8192,1);
       if (s=="") { i=strlen(buf); break; }
@@ -155,7 +158,9 @@ static void ponder_answer()
    }
 
    headerbuf=buf[..i-1];
-   datapos=i+4;
+
+   if (buf[i..i+1]=="\n\n") datapos=i+2;
+   else datapos=i+4;
 
    // split headers