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

    if (window.layoutTestController)
        layoutTestController.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.php', 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>
