Skip to main content


TIFO the Arduino Ethernet library performs unbuffered byte-by-byte transfers when you're using print() and println(), leading to unreasonably increased turnaround count. I'll need to dig in the library's code, to check why, and I'll probably make a bug report.

This doesn't happen when using write() with an explicit buffer length, though.

PCAP: https://app.packetsafari.com/analyze/l/KllD-YoBW6-oT3TQMCLj
"2 text/gemini\r" is written using println(), and the page content with write( void*, size_t).

in reply to isithran

Ok, apparently, print and println are inherited by the stream class, which explains why the write is unbuffered. Next, I'll need to check if I can do a zero-copy write() from flash, otherwise, I'll do a buffered write().