Uploaded image for project: 'Traffic Control'
  1. Traffic Control
  2. TC-503

Traffic Ops ORT Fails with Chunked Encoding

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.1.0, 2.2.0
    • Fix Version/s: 2.1.0, 2.2.0
    • Component/s: Traffic Ops ORT
    • Labels:
      None

      Description

      ORT fails if no 'Content-Length' header exists.

      Content-Length MAY be omitted per HTTP/1.1 RFC 7230, and in fact MUST NOT be included with a 'Transfer-Encoding: Chunked' header, which MUST be accepted by clients.

      So far, we've just been lucky Perl/Mojolicious Traffic Ops doesn't happen to send Chunked encodings to ORT. But the spec requires clients accept it, ORT is in violation of HTTP/1.1.

      Further, the upcoming Golang Traffic Ops sends Chunked encoding, and there's no reasonable way in Go to prevent it. There's no HTTP-compliant way to instruct the server not to send Chunked encoding either, since clients are required to accept it. The right solution here is to fix ORT to accept Chunked encoding, without Content-Length.

      It appears ORT only refuses it as a safety check, and doesn't actually need it for anything. Should be a simple fix.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                dewrich Dewayne Richardson
                Reporter:
                rob05c Robert Butts
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - 24h
                  24h
                  Remaining:
                  Remaining Estimate - 24h
                  24h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified