const Cc = Components.classes;
const Ci = Components.interfaces;
const CC = Components.Constructor;

const ServerSocket = CC("@mozilla.org/network/server-socket;1",
                        "nsIServerSocket",
                        "init");

var serv;

function TestServer() {
    this.listener = ServerSocket(4444, true, -1);
    this.listener.asyncListen(this);
}

TestServer.prototype = {
    QueryInterface: function(iid) {
        if (iid.equals(Ci.nsIServerSocket) ||
            iid.equals(Ci.nsISupports))
            return this;
        throw Components.results.NS_ERROR_NO_INTERFACE;
    },
    onSocketAccepted: function(socket, trans) {
        try { this.listener.close(); } catch(e) {}
        do_check_true(true);
        do_test_finished();
    },

    onStopListening: function(socket) {}
}

function run_test() {
    var ios = Cc["@mozilla.org/network/io-service;1"]
        .getService(Ci.nsIIOService);    

    serv = new TestServer();
    URI = ios.newURI("http://localhost:4444/just/a/test", null, null);
    ios.QueryInterface(Components.interfaces.nsISpeculativeConnect)
        .speculativeConnect(URI, null, null);
    do_test_pending();
}

