// Requires Meddler v2.2.1.2 from http://www.fiddler2.com/meddler/ // See http://blogs.msdn.com/ieinternals/archive/2009/10/13/Using-Meddler-to-Simulate-HTTP.aspx for more information // // Speculative downloader generates spurious requests when META CHARSET or other // restart-inducing feature (e.g. namespace declaration) is present. // Here's the best test URL: // http://ipv4.fiddler:8088/hammer/yesmeta // Be sure to adjust the port if needed (see the "Listen Port" in the Meddler status bar). // Don't forget to enable Streaming in Fiddler. // Here are other cases: // http://ipv4.fiddler:8088/nometa // http://ipv4.fiddler:8088/yesmeta // http://ipv4.fiddler:8088/hammer/nometa // http://ipv4.fiddler:8088/hammer/yesmeta // http://ipv4.fiddler:8088/hammer/yesmeta/4KB // Byte 4096, 8192, (etc?) of the response body are the key points. import Meddler; import System; import System.Net.Sockets; import System.Windows.Forms; class Handlers { static function OnConnection(oSession: Session) { if (oSession.ReadRequest()){ if (oSession.urlContains("favicon.ico")){ oSession.WriteString("HTTP/1.1 404 NoIcon\r\nCache-Control: no-cache\r\nContent-Length: 0\r\n\r\n"); } else if (oSession.urlContains("hammer")){ oSession.WriteString("HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n"); for (var iFrm = 0; iFrm < 20; iFrm++){ var sMeta = ""; if (oSession.urlContains("nometa")) { sMeta = "nometa"; } oSession.WriteString(""); } } else { if (!oSession.urlContains('/s')){ var sHeader = "HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n"; var s = '
\r\n"; if (!oSession.urlContains("nometa")){ s = s + ''; } else { s = s + ''; } if (oSession.urlContains("4KB")){ s = s + ("") } for (var x=0; x<3; x++){ var sx = "" + x; s = s +""; } oSession.WriteString(sHeader + s); System.Threading.Thread.Sleep(10); oSession.WriteString(""); for (var x=0; x<100; x++){ oSession.WriteString('"'+Meddler.Fuzz.NewString('$', 128) + "\"