Skip to content

Commit

Permalink
Merge branch 'release' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
DamianEdwards committed Nov 5, 2013
2 parents ccd6d72 + 36cdfb4 commit f8dc16a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
11 changes: 5 additions & 6 deletions src/Microsoft.AspNet.SignalR.Client/Connection.cs
Expand Up @@ -410,17 +410,16 @@ public Task Start(IClientTransport transport)
{
lock (_startLock)
{
_connectTask = TaskAsyncHelper.Empty;
if (!ChangeState(ConnectionState.Disconnected, ConnectionState.Connecting))
{
return _connectTask ?? TaskAsyncHelper.Empty;
}

_disconnectCts = new CancellationTokenSource();
_startTcs = new TaskCompletionSource<object>();
_receiveQueue = new TaskQueue(_startTcs.Task);
_lastQueuedReceiveTask = TaskAsyncHelper.Empty;

if (!ChangeState(ConnectionState.Disconnected, ConnectionState.Connecting))
{
return _connectTask;
}

_transport = transport;

_connectTask = Negotiate(transport);
Expand Down
Expand Up @@ -402,5 +402,38 @@ public async Task ReconnectRequestPathEndsInReconnect(HostType hostType, Transpo
}
}
}

[Theory]
[InlineData(HostType.Memory, TransportType.ServerSentEvents, MessageBusType.Default)]
[InlineData(HostType.Memory, TransportType.ServerSentEvents, MessageBusType.Fake)]
[InlineData(HostType.Memory, TransportType.ServerSentEvents, MessageBusType.FakeMultiStream)]
[InlineData(HostType.IISExpress, TransportType.ServerSentEvents, MessageBusType.Default)]
[InlineData(HostType.IISExpress, TransportType.Websockets, MessageBusType.Default)]
[InlineData(HostType.IISExpress, TransportType.LongPolling, MessageBusType.Default)]
[InlineData(HostType.HttpListener, TransportType.ServerSentEvents, MessageBusType.Default)]
[InlineData(HostType.HttpListener, TransportType.Websockets, MessageBusType.Default)]
[InlineData(HostType.HttpListener, TransportType.LongPolling, MessageBusType.Default)]
public void ConnectionFunctionsCorrectlyAfterCallingStartMutlipleTimes(HostType hostType, TransportType transportType, MessageBusType messageBusType)
{
using (var host = CreateHost(hostType, transportType))
{
host.Initialize(messageBusType: messageBusType);

using (var connection = CreateConnection(host, "/autoencodedjson"))
{
var tcs = new TaskCompletionSource<object>();
connection.Received += _ => tcs.TrySetResult(null);

// We're purposely calling Start().Wait() twice here
connection.Start(host.TransportFactory()).Wait();
connection.Start(host.TransportFactory()).Wait();

connection.Send("test").Wait();

// Wait for message to be received
Assert.True(tcs.Task.Wait(TimeSpan.FromSeconds(10)));
}
}
}
}
}

0 comments on commit f8dc16a

Please sign in to comment.