I'm writing a binding for nanomsg. When a socket is asked to close, I check for ETERM and if it is not true, I call shutdown on each endpoint. First, is this completely unnecessary? If a socket is asked to close, does nanomsg call shutdown on each endpoint? Secondly, this would trigger an assertion on line 930 of socket.c (zombie socket), which lead me to believe that calling as part of my teardown process (exiting the program) is a Bad Idea. Is this correct? I would be in someone's debt if they would point me to something that outlines a good procedure for teardown. Thank you. -Andrew