Debugging the issue some I can say that (for me) the issue seems to be when the server sends the answer response to the client. It is running in "ply_boot_connection_send_answer" when it gets a SIGPIPE in the middle, implying the client has gone:
Now the client does wait for the server to respond before exiting blocking until the user hits return, and it reports a failure was sent. This however could come out for a lost connection also. The fact that it does wait hints that the response triggers the closure. Need more debug as to what if anything is received.
Debugging the issue some I can say that (for me) the issue seems to be when the server sends the answer response to the client. It is running in "ply_boot_ connection_ send_answer" when it gets a SIGPIPE in the middle, implying the client has gone:
ply_boot_ connection_ send_answer( )
PLY_BOOT_ PROTOCOL_ RESPONSE_ TYPE_ANSWER,
strlen (PLY_BOOT_ PROTOCOL_ RESPONSE_ TYPE_ANSWER) ) ||
!ply_ write_uint32 (connection->fd,
size) ||
!ply_ write (connection->fd,
answer, size))
{
[...]
if (!ply_write (connection->fd,
ply_trace ("could not finish writing answer: %m");
[...]
Now the client does wait for the server to respond before exiting blocking until the user hits return, and it reports a failure was sent. This however could come out for a lost connection also. The fact that it does wait hints that the response triggers the closure. Need more debug as to what if anything is received.