Project

General

Profile

Bug #11450

HTTPHeader.content_range throws error on non-byte units

Added by thomthom (Thomas Thomassen) over 4 years ago. Updated about 4 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:<unknown>]

Description

I ran into an issue with HTTPHeader.content_range today when interacting with an REST API that used Range and Content-Range with units other than "bytes". It used "items" instead to let the API user to say how many data items should be returned from the database.

The HTTP 1.1 specs only define "bytes", but other units are valid (see that "other-range-unit" is described). The specs then say implementations might ignore these other units. However, Ruby doesn't ignore - Ruby throws an error and refuse to proceed.

https://www.ietf.org/rfc/rfc2616.txt

3.12 Range Units

HTTP/1.1 allows a client to request that only part (a range of) the
response entity be included within the response. HTTP/1.1 uses range
units in the Range (section 14.35) and Content-Range (section 14.16)
header fields. An entity can be broken down into subranges according
to various structural units.

range-unit = bytes-unit | other-range-unit
bytes-unit = "bytes"
other-range-unit = token

The only range unit defined by HTTP/1.1 is "bytes". HTTP/1.1
implementations MAY ignore ranges specified using other units.

Looking at the source it can be seen that "bytes" is hard coded and Ruby doesn't account for the possibility of any other unit.

def content_range
  return nil unless @header['content-range']
  m = %r<bytes\s+(\d+)-(\d+)/(\d+|\*)>i.match(self['Content-Range']) or
      raise Net::HTTPHeaderSyntaxError, 'wrong Content-Range format'
  m[1].to_i .. m[2].to_i
end

The best thing would be if Ruby handled custom range units, but in the very least ignored unknown units instead of throwing errors for a valid HTTP response with custom range units.


Related issues

Has duplicate Ruby master - Bug #12055: `NET::HTTPResponse` is not deflating responses with custom `Content-Range` headerAssignedActions

History

#1

Updated by shishir127 (Shishir Joshi) about 4 years ago

Raised a PR

#2

Updated by jeremyevans0 (Jeremy Evans) 5 months ago

  • Has duplicate Bug #12055: `NET::HTTPResponse` is not deflating responses with custom `Content-Range` header added

Also available in: Atom PDF