I have a client-server application where each side communicate with the other via TCP socket.
I properly establish the connection and then I crash the server BEFORE any data is written on the socket by the client.
What I see is that the first write()
attempt (client-side) is successful and it returns the actual number of written bytes, while the following ones return (as I expected) -1
(receiving a SIGPIPE
) and errno=EPIPE
.
Why the first write()
is successful even if the socket is already closed?
EDIT
Sometimes also the following write()
have a positive return values, as if everything goes well.