transport: notify accept condition on clean disconnect

When a clean disconnect happens, setting the transport to be inactive
immediately means that it skips the cleanup at the bottom of the run()
method and avoids waking up anyone waiting on the accept() method.

Remove the cleanup in the disconnect message handler and instead allow
the normal cleanup code to do this as well as notify any waiting threads
that something has happened.