be more specific about decoding errors

also, skip case where we check r.ContentLength