public void TestRefuseCreatingSameCID() { ClosePipeRPC close = new ClosePipeRPC(100); uint requestId = close.RequestID; //create the connection ControlPipe c = new ControlPipe(tunnel); EncryptedPacket packet = new EncryptedPacket(tunnel.ID, 0); packet.RPCs.Add(new CreateAnonymousPipe(PipeType.Duplex.ToString(), 100)); c.HandlePacket(packet); tunnel.PacketInterceptor(p => { Assert.That(p.RPCs.Count > 0); Assert.That(p.RPCs.First.SerializationTag == (byte)RPCType.RefusePipe); RefusePipe refuse = (RefusePipe)p.RPCs.First; Assert.IsTrue(refuse.Reason == (byte)RefusePipe.RefusalReason.ID_ALREADY_EXISTS); }); tunnel.PipeInterceptor(connection => { Assert.Fail("Connection request should never hit the tunnel"); }); packet = new EncryptedPacket(tunnel.ID, 0); packet.RPCs.Add(new CreateAnonymousPipe(PipeType.Duplex.ToString(), 100)); c.HandlePacket(packet); }
private void OnPipeRefused(RefusePipe rpc) { PipeBase p; UInt32 id = rpc.ID; this.requestedPipes.Remove(id, out p); Debug.Assert(p != null); if (this.PipeRefused != null) { this.PipeRefused(this, new PipeChangedEventArgs(p, this.mTunnel)); } }
public void HandleRefuseControlPipe() { var createAnonymousPipe = new CreateAnonymousPipe(PipeType.Duplex.ToString(), 0); tunnel.PacketInterceptor(p => { Assert.That(p.RPCs.Count >= 1); Assert.That(p.RPCs.First.SerializationTag == (byte)RPCType.RefusePipe); RefusePipe req = (RefusePipe)p.RPCs.First; Assert.That(req.Reason == (byte)RefusePipe.RefusalReason.CANNOT_OPEN_ANOTHER_CONTROL); }); tunnel.PipeInterceptor(connection => { Assert.Fail("Connection request should never hit the tunnel"); }); ControlPipe c = new ControlPipe(tunnel); EncryptedPacket packet = new EncryptedPacket(tunnel.ID, 0); packet.RPCs.Add(createAnonymousPipe); c.HandlePacket(packet); }