Send response body chunk. Combines buffered headers with first body chunk for efficient write batching.
(self, body, chunked=False)
| 1367 | ] |
| 1368 | |
| 1369 | def _send_body(self, body, chunked=False): |
| 1370 | """Send response body chunk. |
| 1371 | |
| 1372 | Combines buffered headers with first body chunk for efficient write batching. |
| 1373 | """ |
| 1374 | if chunked: |
| 1375 | if body: |
| 1376 | # Chunked encoding: size in hex + CRLF + data + CRLF |
| 1377 | # Use pre-cached prefix for common sizes, else format |
| 1378 | size = len(body) |
| 1379 | prefix = _CHUNK_PREFIXES.get(size) or f"{size:x}\r\n".encode("latin-1") |
| 1380 | chunk_data = prefix + body + b"\r\n" |
| 1381 | else: |
| 1382 | chunk_data = b"" |
| 1383 | |
| 1384 | # Combine with buffered headers if present |
| 1385 | if self._response_buffer: |
| 1386 | self._safe_write(self._response_buffer + chunk_data) |
| 1387 | self._response_buffer = None |
| 1388 | elif chunk_data: |
| 1389 | self._safe_write(chunk_data) |
| 1390 | else: |
| 1391 | # Non-chunked: combine headers + body or just body |
| 1392 | if self._response_buffer: |
| 1393 | self._safe_write(self._response_buffer + body) |
| 1394 | self._response_buffer = None |
| 1395 | elif body: |
| 1396 | self._safe_write(body) |
| 1397 | |
| 1398 | def _send_error_response(self, status, message): |
| 1399 | """Send an error response.""" |