diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
index a9ed037d346eb3130c72ec5270afa1642ecbd6cd..cdf766093e26bbbd0bea832b309cf1daf71cf06a 100644
--- a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
+++ b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike
@@ -535,8 +535,14 @@ string data()
       l=len-strlen(buf)+datapos;
    if (l>0 && con)
    {
-      string s=con->read(l);
-      buf+=s;
+     if(headers->server == "WebSTAR")
+     { // Some servers reporting this name exhibit some really hideous behaviour:
+       buf += con->read(); // First, they may well lie about the content-length
+       if(buf[datapos..datapos+1] == "\r\n")
+	 datapos += 2; // And, as if that wasn't enough! *mumble*
+     }
+     else
+       buf += con->read(l);
    }
    // note! this can't handle keep-alive � HEAD requests.
    return buf[datapos..];