aio-libs / aio-libs/aiohttp

Response not passed to WSServerHandshakeError

Ouverte
#2,279 9 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement need pull request
Langage dominant
Python
Étoiles
16.5k
Forks
2.4k
Merge moyen
17 h 22 min
PR mergées (30 j)
212

Description

## Long story short

As requested in [comment on issue 701](https://github.com/aio-libs/aiohttp/issues/701#issuecomment-330762574) 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:
```python
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.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.