Aymeric Augustin
Aymeric Augustin
[414 URI Too Long](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/414) [431 Request Header Fields Too Large](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431)
Essentially, it should behave like the asyncio server. It could also gain the connections attribute.
Whenever the opening handshake ends with a code other than 101, an error is logged. While this behavior was already present in the legacy implementation (I believe), it's less than...
All implementations store incoming messages to a queue; then the application reads from this queue. In the legacy asyncio, UTF-8 decoding happens in `WebSocketCommonProtocol.read_message`, before storing messages in the queue....
When reading a fragmented message, `Protocol.parse` decrements `max_size` as fragments are read. This can cause a confusing error in `Frame.parse`: `ConnectionClosedError: sent 1009 (message too big) over size limit (1048576...
When this line: https://github.com/python-websockets/websockets/blob/8c9f6fc27bb54610f1c389d7769cddc1504ca57e/src/websockets/sync/connection.py#L814 runs before this line: https://github.com/python-websockets/websockets/blob/8c9f6fc27bb54610f1c389d7769cddc1504ca57e/src/websockets/sync/client.py#L384 closing the socket doesn't interrupt `recv()` because `recv()` isn't running in the main thread — and interruption is based on signals...
This PR merges parts of #1628, continuing #1669 and #1672.
When the text bounding box had a negative y0, the text was cropped. This happened for all vertical alignments except ascender, notably for baseline, which is needed for aligning text...