Feature #5937

Zlib::Inflate#add_dictionary to pre-supply dictionaries for inflate streams

Added by Eric Hodel over 3 years ago. Updated about 3 years ago.

[ruby-core:42240]
Status:Closed
Priority:Normal
Assignee:-

Description

The attached patch allows Zlib::Inflate users to supply dictionaries ahead of time in order to avoid handling the Zlib::NeedDict exception.

Multiple dictionaries may be provided. Zlib::Inflate will choose a matching dictionary based on the adler32 checksum of the provided dictionaries.

zlib.c.add_dictionary.patch Magnifier (3.77 KB) Eric Hodel, 01/27/2012 08:04 AM


Related issues

Related to Ruby trunk - Bug #5929: Zlib::Inflate#set_dictionary does not work with short input Closed 01/26/2012

Associated revisions

Revision 34553
Added by Eric Hodel over 3 years ago

  • ext/zlib/zlib.c (rb_inflate_add_dictionary): Added Zlib::Inflate#add_dictionary to allow users to pre-specify for using during #inflate. [ruby-trunk - Feature #5937]

Revision 34553
Added by Eric Hodel over 3 years ago

  • ext/zlib/zlib.c (rb_inflate_add_dictionary): Added Zlib::Inflate#add_dictionary to allow users to pre-specify for using during #inflate. [ruby-trunk - Feature #5937]

History

#1 Updated by Eric Hodel over 3 years ago

Oops, forgot patch

#2 Updated by Eric Hodel over 3 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r34553.
Eric, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • ext/zlib/zlib.c (rb_inflate_add_dictionary): Added Zlib::Inflate#add_dictionary to allow users to pre-specify for using during #inflate. [ruby-trunk - Feature #5937]

#3 Updated by Ilya Grigorik about 3 years ago

What are the odds of having this be backported to 1.9.x? We need custom dictionary support to support SPDY without relying on FFI or other native extensions.

ex: https://github.com/igrigorik/spdy/blob/master/lib/spdy/compressor.rb

#4 Updated by Yui NARUSE about 3 years ago

igrigorik (Ilya Grigorik) wrote:

What are the odds of having this be backported to 1.9.x? We need custom dictionary support to support SPDY without relying on FFI or other native extensions.

ex: https://github.com/igrigorik/spdy/blob/master/lib/spdy/compressor.rb

You may know, in principle backporting is for bug fixes.
And even if 1.9.3 backport this, 1.9.2 and 1.8.x still needs ffi.
This means your pain won't decrease, will it?

#5 Updated by Eric Hodel about 3 years ago

I think #5929 should be backported instead. While #5937 makes working with custom dictionaries easier, #5929 fixes the current API (#set_dictionary) to be fully usable.

#6 Updated by Ilya Grigorik about 3 years ago

@naruse: as Eric pointed out in his original ticket (#5929), I do believe this is a bug, as the current API advertises that it can set and use the dictionary, but that is not the case.

I've opened a different / new ticket: http://bugs.ruby-lang.org/issues/6516

Also available in: Atom PDF