in src/Microsoft.Azure.Relay/HybridConnectionListener.cs [539:572]
async Task CompleteAcceptAsync(RelayedHttpListenerContext listenerContext, Uri rendezvousUri, bool shouldAccept)
{
try
{
if (shouldAccept)
{
var webSocketStream = await listenerContext.AcceptAsync(rendezvousUri).ConfigureAwait(false);
lock (this.ThisLock)
{
if (this.closeCalled)
{
RelayEventSource.Log.RelayListenerRendezvousFailed(this, listenerContext.TrackingContext.TrackingId, SR.ObjectClosedOrAborted);
return;
}
this.connectionInputQueue.EnqueueAndDispatch(webSocketStream, null, canDispatchOnThisThread: false);
}
}
else
{
RelayEventSource.Log.RelayListenerRendezvousRejected(
listenerContext.TrackingContext, listenerContext.Response.StatusCode, listenerContext.Response.StatusDescription);
await listenerContext.RejectAsync(rendezvousUri).ConfigureAwait(false);
}
}
catch (Exception exception) when (!Fx.IsFatal(exception))
{
RelayEventSource.Log.RelayListenerRendezvousFailed(this, listenerContext.TrackingContext.TrackingId, exception);
}
finally
{
RelayEventSource.Log.RelayListenerRendezvousStop();
}
}