It tries to get the http response from the socket. But potentially the first negotiation message has arrived earlier then the negotiation message will be swallowed by the above recv(). Then the client will get stuck on waiting for the negotiation message.
This issue was observed with XenServer test. But potentially it will impact other hypervisors.
I think the problem caused the code at here: https:/ /github. com/openstack/ nova/blob/ master/ nova/console/ websocketproxy. py#L155
It tries to get the http response from the socket. But potentially the first negotiation message has arrived earlier then the negotiation message will be swallowed by the above recv(). Then the client will get stuck on waiting for the negotiation message.