<html>
<head>
<body>
<p>Test the behavior of a sync XMLHttpRequest that encounters an infinite redirection loop.</p>
<script>

    if (window.testRunner)
        testRunner.dumpAsText();

    try {
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        } else {
            try {
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (ex) {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        
        req.open('GET', 'resources/infinite-loop.py', false);
        req.send(null);

        document.write("Status: " + req.status);
        
    } catch (ex) {
        document.write("Exception " + ex.name + "; code=" + ex.code + "; number=" + ex.number + " (" + (ex.number & 0xFFFF) + "); message='" + ex.message + "'");
    }

</script>
</body>
</html>
