From: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> Date: Wed, 15 May 2019 00:56:05 +0000 > Currently, hvsock does not implement any delayed or background close > logic. Whenever the hvsock socket is closed, a FIN is sent to the peer, and > the last reference to the socket is dropped, which leads to a call to > .destruct where the socket can hang indefinitely waiting for the peer to > close it's side. The can cause the user application to hang in the close() > call. > > This change implements proper STREAM(TCP) closing handshake mechanism by > sending the FIN to the peer and the waiting for the peer's FIN to arrive > for a given timeout. On timeout, it will try to terminate the connection > (i.e. a RST). This is in-line with other socket providers such as virtio. > > This change does not address the hang in the vmbus_hvsock_device_unregister > where it waits indefinitely for the host to rescind the channel. That > should be taken up as a separate fix. > > Signed-off-by: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> Applied, thanks.