[PATCH] Change hash_data() input type to BLOB
Poul-Henning Kamp
phk at phk.freebsd.dk
Mon Apr 20 07:50:16 CEST 2015
--------
In message <CAJV_h0ZYRsugxTZQiUj1h6STXApruXggU5uFhLF_1SNafgUw+g at mail.gmail.com>
, Federico Schwindt writes:
>I had some time in my recent flights so I decided to give it a shot.
>As discussed at VDD15Q1, this changes the hash_data input to BLOB and adds
>automatic conversion from STRING to BLOB.
>
>There are a few downsides with this approach:
Yes, that's been holding me from doing what you have done.
>A better alternative would be to teach vcc to issue two different calls
>depending on the input, e.g. for BLOBs it will use VRT_hashblob(), for
>anything else use VRT_hashstring(), so point 1 and 2 only affect users of
>hash_data(req.body).
That's by far my preference and it becomes non-messy if we insist that
you can never get vcc_Expr() to do anything with a BLOB, apart from
returning it to you. That means that we will not do things like
BLOB = BLOB + BLOB
but we can do stuff like:
BLOB = std.blob_concat(BLOB, blob("Hello World"))
In practice we would need to pass a flag to vcc_Expr() saying "I want
a FOO but BLOB is also OK" and I have a hard time seeing FOO take
any other value than STRING/STRING_LIST.
(The clean solution is to turn enum var_type into a bitmap, if anybody
feels like it.)
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
More information about the varnish-dev
mailing list