shamelessly stolen from comp.unix.programmer unix-socket-faq:
2.10. Why do I get EPROTO from read(2)?
From Steve Rago (firstname.lastname@example.org):
EPROTO means that the protocol encountered an unrecoverable error for that endpoint. EPROTO is one of those catch-all error codes used by STREAMS-based drivers when a better code isn't available.
And an addition note from Andrew (email@example.com):
Not quite to do with EPROTO from read(2), but I found out once that on some STREAMS-based implementations, EPROTO could be returned by accept(2) if the incoming connection was reset before the accept completes.