This delay is to separate the error flashes from the startup flash, so lets keep it with the startup flashes.
Thanks to @techbelly for the nudges in the right direction. Our best guess is that this might be a buffer issue in the Ethernet library.
When the version header was present, the Arduino would download data, but then fail because the cache size (the file on the SD) was apparently zero length. I tried this with other dummy headers, and basically any other header seemed to screw up the Arduino cache. Why sending another header would affect the behaviour of the downloading, or the SD card, I have absolutely no idea :( I've tried making the requests locally via curl, but the responses are completely identical, even down to a binary diff.
We don't need the duration, since it can be calculated manually if that's important. Since the `debug` macro was always called with a string, making it a function reduces the number of distinct calls to `millis()` and the other functions within it.
We did open it, after all.
The server now sends raw print commands which the Arduino forwards directly to the printer. This should allow a reduction of the sketch size (now 26864); further reductions might be possible by using the hardware serial port, although this will prevent debugging.
This should let the server do two things: 1) Support different printers 2) Support different modes on printers (text vs bitmap; raw byte stream vs bitmap image to be parsed.