Uploaded image for project: 'Traffic Server'
  1. Traffic Server
  2. TS-4720

ATS not properly closing origin connections in client abort situations

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 6.2.1, 7.0.0
    • Component/s: HTTP
    • Labels:
      None

      Description

      We've noticed that there are some scenarios that ATS doesn't close the origin connection when the client aborts. To reproduce I set up an http server which would return a text/stream sending a message every 10s. In this case, if I do a GET request to the endpoint and then immediately kill the client, the connection to the origin doesn't close until the transaction active timer kicks in.

      After digging into this, it seems that this is actually due to a bug in the HttpSM-- specifically in how it checks whether a request has a body. The default value for content-length is `-1`, but some checks are `== 0` – which means that if the request had no content-length header it is treated as a request with a content-length.

      The particular place that was problematic was the section that enables the vio reader to watch for client aborts-- which specifically isn't enabled for POST/chunked requests as it is enabled later down the call chain (since it needs to handle the buffers itself).

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jacksontj Thomas Jackson
                Reporter:
                jacksontj Thomas Jackson
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 40m
                  1h 40m