tools.lazy-store: read a .ls directory without entries as empty
16 of the 17 paths without a listing in CI run 39052697442 (neoprism)
failed with "missing field `entries`": cache.lassul.us writes empty
directories as {"type":"directory"}, e.g. 3k9vl6iwf58qy65wcjqccqykgzypm7va.ls
is {"version":1,"root":{"type":"directory"}}. harmonia-file-core's
Directory requires "entries", so since 207a89b5 that was an error; the
hand-walked parser before read a missing "entries" as empty. Fill it in
before deserializing. "size" of regular files is always written (also
for empty files).
The 17th, 9pczdaxss3xdmidr8cvgpw8ccn0agnhq.ls, is not a client bug: B2
itself (also queried directly, over HTTP/1.1) now and then answers 200
with Content-Length 78 and closes without sending a body byte. nginx
turns that into an HTTP/2 RST_STREAM INTERNAL_ERROR, which reqwest
reports as "error decoding response body". The same request succeeds
moments later; the existing retries cover it unless all six tries hit
a truncated response, as in that CI run.