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.

"2 text/gemini\r" is written using println(), and the page content with write( void*, size_t).

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().