lib/http/protocol/http2/padded.rb in http-protocol-0.2.0 vs lib/http/protocol/http2/padded.rb in http-protocol-0.2.1

- old
+ new

@@ -38,33 +38,23 @@ module Padded def padded? flag_set?(PADDED) end - # We will round up frames to the given length: - MODULUS = 0x0F - - def pack(data, modulus: MODULUS, padding_size: nil, maximum_size: nil) - padding_size ||= (MODULUS - data.bytesize) % MODULUS - - if maximum_size - maximum_padding_size = maximum_size - data.bytesize - - if padding_size > maximum_padding_size - padding_size = maximum_padding_size - end - end - - if padding_size > 0 + def pack(data, padding_size: nil, maximum_size: nil) + if padding_size set_flags(PADDED) buffer = String.new.b buffer << padding_size.chr buffer << data - buffer << "\0" * padding_size + if padding_size > 1 + buffer << "\0" * (padding_size - 1) + end + super buffer else clear_flags(PADDED) super data @@ -72,10 +62,10 @@ end def unpack if padded? padding_size = @payload[0].ord - data_size = @payload.bytesize - 1 - padding_size + data_size = (@payload.bytesize - 1) - padding_size if data_size < 0 raise ProtocolError, "Invalid padding length: #{padding_size}" end