I'm not sure where this should go but I'm sure it's a bug.
In
http://arduino.cc/en/Reference/StreamReadBytes readBytes is documented as taking either char[] or byte[] but when used with an SD File object you have to cast it to char[]. Hell it's called
readBytes not
readChars. Perversely enough an eithernet client wants bytes.
This works but vice-versa fails
byte bfr[outBfrSz];
source.readBytes((char)bfr,outBfrSz);
client->write(bfr,outBfrSz);