Revision history for Perl extension Protocol-HTTP2

1.12 2026-02-14T12:55:50Z
    - fix: incorrect END_HEADERS flag on CONTINUATION frames (#18) (Daniil Bondarev)
    - fix: arriving continuation frame overwrite the existing header buffer
    - test: test continuation frames handling

1.11 2024-05-19T16:55:28Z
    - Fix minor typos and spelling errors (Yoshikazu Sawa)
    - Do not hardcode tlsv1 which is deprecated and disabled in some systems (Olivier Gayot)
    - Fix length-undef warnings in pre-5.12 perls (Felipe Gasper)

1.10 2019-11-12T06:19:05Z
    - test: fixed test 9 (issue 10)

1.09 2018-08-05T16:03:20Z
    - doc: fix spelling mistakes (Gregor Herrmann)
    - doc: added link to RFC 7541 (Mohammad S Anwar)
    - bugfix: protect against "disappearing" on_cancel() callback of
      server object (Felipe Gasper)
    - bugfix: prevent uninitialized warning (Junho Choi)

1.08 2016-09-27T12:57:26Z
    - implemented on_error callback for request
    - fixed bug: incorrect handling of negative window size (thanks to Daniil
      Bondarev for patch #2)
    - fixed bug: last chunk of blocked data can be sent several times
    - size of flow control window updated with current value of
      SETTINGS_INITIAL_WINDOW_SIZE

1.07 2016-03-03T20:44:19Z
    - implemented ping() method for client and server
    - implemented trailer headers support
    - fixed some error codes
    - improved header table size handling

1.06 2016-02-22T08:56:19Z
    - implemented keepalive option for client (#1)
    - explicit connection closing for client  (#1)
    - fixed MAX_PAYLOAD_SIZE constant value (thanks to Francisco Obispo for
      bugreport)

1.05 2015-12-24T12:40:10Z
    - support for request body
    - new client/server examples with IO::Socket::SSL

1.04 2015-07-10T20:19:19Z
    - fixed bug: Chrome send ':path' as literal header, make exception for
      pseudo headers in header check
    - make exceptions for RST_STREAM frames in state_machine
    - fixed debugging level

1.03 2015-07-09T21:09:54Z
    - reworked enqueue() method, implemented enqueue_raw()
    - return error when CONTINUATION frames interrupted by other frames
    - check length of RST_STREAM and WINDOW_UPDATE frames
    - implemented validation rules for settings SETTINGS_ENABLE_PUSH and
      SETTINGS_INITIAL_WINDOW_SIZE
    - update flow control window size on active streams when receive
      SETTINGS_INITIAL_WINDOW_SIZE
    - fixed bug: now send ack on empty settings
    - fixed bug: flow control window for sended frames used to be initialized
      with wrong value
    - strict validation of headers
    - check for explicit content-length header to match size of received DATA
      frames
    - control for maximum concurrent streams
    - fixed tests

1.02 2015-06-22T17:27:01Z
    - fixed leaks test

1.01 2015-06-21T14:17:54Z
    - fixed leaks in Server/Client code
    - new test to check leaks
    - updated examples with tls

1.00 2015-05-16T18:51:09Z
    - HTTP/2 is RFC 7540
    - HPACK  is RFC 7541
    - updated protocol id string ("h2", "h2c"), dropped old interop id strings

0.16 2015-04-05T20:41:49Z
    - update status (beta)
    - add wiki link
    - implemented server streaming
    - implemented client downloading, request cancelling

0.15 2015-02-26T20:39:20Z
    - Split settings for decoder/encoder
    - Allow to setup custom settings in Server/Client constructor
    - Fixed bug with settings packing/unpacking
    - Dropper Log::Dispatch dependency
    - updated HPACK to draft 12

0.14 2015-02-11T14:03:22Z
    - updated HTTP/2 to draft 17
    - updated HPACK  to draft 11

0.13 2014-12-01T07:56:43Z
    - updated HTTP/2 to draft 16
    - added draft_interop version (14) for interoperability

0.12 2014-10-28T12:18:22Z
    - updated HTTP/2 to draft 15

0.11 2014-08-14T12:07:48Z
    - dropped Hash::MultiValue requirement
    - fixed HPACK
    - fixed HPACK test

0.10 2014-07-31T21:25:59Z
    - updated HTTP/2 to draft 14
    - updated HPACK to draft 09
    - fixed tests

0.09 2014-07-08T13:16:24Z

    - another fix for 09_client_server_tcp.t (check features of Net::SSLeay)
    - updated extract_* scripts
    - updated HTTP/2 to draft 13
      - removed ALTSVC and BLOCKED frames
      - removed DATA frames compression support
      - PAD_HIGH, PAD_LOW flags are replaced by PADDED
      - settings changed from 8-bit to 16-bit unsigned integer
    - updated HPACK to draft 08
      - updated huffman codes table
      - updated static table
    - fixed tests

0.08 2014-05-17T09:59:07Z

    - fixed test 09_client_server_tcp.t
    - fixed *_COMPRESS_DATA constants
    - fixed blocked data handling
    - allow zero-sized DATA frames
    - fixed HPACK encoding: evicting and reference set emptying
    - added Protocol::HTTP2::Server POD
    - fixed upgrade (added required header :scheme)

0.07 2014-05-15T13:14:32Z

    - implemented PRIOIRITY encoder/decoder
    - update HEADERS implementation (priority handling)
    - remove old flags PRIORITY_GROUP, PRIORITY_DEPENDENCY
    - added tcp test
    - update cpanfile (TCP::Test and other test deps)
    - implemented ALTSVC encoder/decoder
    - updated Protocol::HTTP2 POD
    - added Protocol::HTTP2::Client POD

0.06 2014-05-13T17:51:16Z

    - switch to Module::Build::Tiny
    - implemented PING encoder/decoder
    - fixed Rst_stream - unneeded state manipulation
    - internal PH2Test test module
    - implemented PUSH_PROMISE encoder
    - implemented push for Server
    - add Server's push in server-tls-anyevent.pl example
    - process state of encoded frame after putting it on a queue

0.05 2014-05-11T11:19:57Z

    - implemented flow control
    - implemented WINDOW_UPDATE encoder/decoder
    - fixed MAX_PAYLOAD_SIZE constant
    - fixed runtime error in RST_STREAM
    - required MIME::Base64 >= 3.11 (encode_base64url and decode_base64url)
    - HTTP/1.1 Upgrade for client

0.04 2014-05-08T18:22:24Z

    - enable Upgrade in server-anyevent.pl example
    - implemented HTTP/1.1 Upgrade (server)
    - fixed build/tests on windows
    - update cpanfile (Net::SSLeay > 1.45 for NPN)
    - update state doc

0.03 2014-05-07T18:05:50Z

    - client-tls-anyevent.pl with NPN/ALPN support and server's push handling
    - fixed error handling (send only one GOAWAY)
    - fixed PUSH_RPOMISE/CONTINUATION state and headers handling
    - implemented PUSH_PROMISE decoder
    - implemented RST_STREAM encoder
    - server-tls-anyevent.pl with NPN/ALPN support
    - fixed Connection's send(): set END_STREAM flag for last DATA frame
    - fixed HEADERS/CONTINUATION logic
    - pending state change until all CONTINUATION frames received
    - fixed author

0.02 2014-05-05T20:24:31Z

    - implemented CONTINUATION frame decoding
    - docs: table about frame types, flags and stream id

0.01 2014-04-27T08:51:15Z

    - original version

