On Feb 7, 2012 3:49 AM, "Julian Foad" <julianf...@btopenworld.com> wrote: >... > So... Greg's talking about if a <= 1.7 client is re-linked against the Ev2-capable libraries, the shims would be inserted and that check would be lost. But what happens if, instead, we run that <= 1.7 client *with its old libraries* and connect to an Ev2-capable server? Then the shims would not be used on the client side; instead the server would talk Ev1 protocol ... but then the Ev2 -> Ev1 shims would be used on the server side to drive the old Ev1 protocol ... and so the base checksum would still be set to null, thus bypassing apply_textdelta's check, would it not?
Hyrum and I spoke about that, and figured that we just leave the Ev1 code paths in there, connected to the older protocol(s). The newer Ev2 protocol(s) follows its own patterns, *plus* brings in the checksum-content-skip that we've been talking about. And even if some kind of shim is used on the server, we can fine-tune it for this particular case. ie. we don't have to use the generic shims that Hyrum is building right now. These shims have no semantic knowledge of the driver or receiver. If you *do* know that (ie. what piece of svn code it is connected to, and what its assumptions/needs are), then you can write a much more efficient shim. Cheers, -g