fix weird channel-close bug