Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.NET Client negotiate does not timeout on slow response or request #3566

Closed
abillingsley opened this issue Sep 30, 2015 · 1 comment
Closed

Comments

@abillingsley
Copy link

.NET Client negotiate does not timeout on slow response or request

This was first observed in our own diagnostic logging as a connection transitioning from disconnected to connecting but never transitioning back to disconnected or connected

Functional impact

Negotiate never succeeds or fails and no underlying transport is started.

Minimal repro steps

To replicate this in a minimal sample we have use Fiddler and one of two custom rules

Slow Request

//At the Top of the Fiddler Custom Rules Definition
public static RulesOption("Slow Negotiate Request")
BindPref("fiddlerscript.rules.SlowNegotiateRequest")
var m_SlowNegotiateRequest: boolean = false;

static function OnBeforeRequest(oSession: Session) {
     ...
     //Below a bunch of other predefined rules

    if (m_SlowNegotiateRequest && oSession.RequestHeaders.RequestPath.IndexOf("signalr/negotiate") !== -1) {
        // Delay sends by 100000000ms per KB uploaded.
        //100000000 is meant to represent an arbitrarily long time 
        oSession["request-trickle-delay"] = "100000000";
    }
}
  1. Install Fiddler
  2. Add Custom Rule Defined Above
  3. Enable Custom Rule via the Rules Menu in Fiddler
  4. Start the .NET SignalR Client
  5. See that the Request never completes in a failure or success

Slow Response

//At the Top of the Fiddler Custom Rules Definition
public static RulesOption("Slow Negotiate Response")
BindPref("fiddlerscript.rules.SlowNegotiateResponse")
var m_SlowNegotiateResponse: boolean = false;

static function OnBeforeRequest(oSession: Session) {
     ...
     //Below a bunch of other predefined rules

    if (m_SlowNegotiateResponse && oSession.RequestHeaders.RequestPath.IndexOf("signalr/negotiate") !== -1) {
        // Delay sends by 100000000ms per KB uploaded.
        //100000000 is meant to represent an arbitrarily long time 
        oSession["response-trickle-delay"] = "100000000";
    }
}
  1. Install Fiddler
  2. Add Custom Rule Defined Above
  3. Enable Custom Rule via the Rules Menu in Fiddler
  4. Start the .NET SignalR Client
  5. See that the Request never completes in a failure or success

Expected result

Negotiate to fail with a timeout error after x seconds and return error on start task.

Actual result

The connection waits for the negotiate response but never receives it or times out

@aspnet-hello
Copy link

This issue has been closed as part of issue clean-up as described in https://blogs.msdn.microsoft.com/webdev/2018/09/17/the-future-of-asp-net-signalr/. If you're still encountering this problem, please feel free to re-open and comment to let us know! We're still interested in hearing from you, the backlog just got a little big and we had to do a bulk clean up to get back on top of things. Thanks for your continued feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants