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

HTTP needs to support > 2GB objects

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 2.1.1
    • Core
    • None

    Description

      With the 64-bit fixes to TS, we should look into what it'll take to make it support >2GB object sizes. Basically, where do we need to change from signed ints (or even unsigned ints) to longs.

      These changes have been completed in the IO Core and Cache.

      HTTP now needs to be updated.

      Attachments

        1. 64bit.diff
          73 kB
          Leif Hedstrom
        2. 0002-TS34_gp_64bit_diff2.patch
          5 kB
          George Paul

        Activity

          Actually, you'd want to be able to support large (>2G) objects on 32 bit architectures. These are orthogonal issues, so "long" isn't the right answer.
          Something like an "off_t" makes more sense...

          sbelmon Stephane Belmon added a comment - Actually, you'd want to be able to support large (>2G) objects on 32 bit architectures. These are orthogonal issues, so "long" isn't the right answer. Something like an "off_t" makes more sense...
          jplevyak John Plevyak added a comment -

          The iocore in 2.1 is now safe for objects over 2GB including the net and cache code.

          The problem now is HTTP, for example:

          HttpTransact.h: int request_content_length;
          HttpTransact.h: int response_content_length;

          and

          MIME.h: ink32 get_content_length();
          MIME.h: void set_content_length(ink32 value);

          MIME.h:MIMEHdr::get_content_length()
          MIME.h: return (value_get_int(MIME_FIELD_CONTENT_LENGTH, MIME_LEN_CONTENT_LENGTH));

          need some HTTP person to fix this.

          jplevyak John Plevyak added a comment - The iocore in 2.1 is now safe for objects over 2GB including the net and cache code. The problem now is HTTP, for example: HttpTransact.h: int request_content_length; HttpTransact.h: int response_content_length; and MIME.h: ink32 get_content_length(); MIME.h: void set_content_length(ink32 value); MIME.h:MIMEHdr::get_content_length() MIME.h: return (value_get_int(MIME_FIELD_CONTENT_LENGTH, MIME_LEN_CONTENT_LENGTH)); need some HTTP person to fix this.
          zwoop Leif Hedstrom added a comment -

          First "draft" patch, tested on FC12 and FBSD. Please review / test.

          zwoop Leif Hedstrom added a comment - First "draft" patch, tested on FC12 and FBSD. Please review / test.
          georgep George Paul added a comment -

          The first patch '64bit.diff' had in merge issue with line 1553 in HttpSM.cc but I manually fixed that.

          int64 time_in_plugin_ms = .....

          Attached are some minor changes to 'http2' files. The cluster code needs more work but since it is not currently working it can be revisited later. Logging changes in '64bit.diff' will be looked at next.

          georgep George Paul added a comment - The first patch '64bit.diff' had in merge issue with line 1553 in HttpSM.cc but I manually fixed that. int64 time_in_plugin_ms = ..... Attached are some minor changes to 'http2' files. The cluster code needs more work but since it is not currently working it can be revisited later. Logging changes in '64bit.diff' will be looked at next.

          People

            zwoop Leif Hedstrom
            zwoop Leif Hedstrom
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: