Description
Long story short
As requested in comment on issue 701 opening a new issue
WSServerHandshakeError does not provide the actual HTTP Response body.
This means any error handling code, logging code cannot provide the error information that the server provides in the response body with the normal Client object.
In order to work around this issue we use a client like this to get access to the response:
class LoggingClientSession(aiohttp.ClientSession):
@asyncio.coroutine
def _request(self, method, url, **kwargs):
self.last_response = yield from super()._request(method, url, **kwargs)
return self.last_response
Expected behaviour
Provide the complete response object as a property in the error. This way any change to the interface of the standard response is propagated directly without additional code changes.
Actual behaviour
WSServerHandshakeError only forwards a subset of the response. See this code: https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L434
Steps to reproduce
Connect to a websocket server that responds to an upgrade request with an error response with body.
Your environment
not relevant.