Decodificación limitada de cuerpos chunked
Decodifica un cuerpo chunked restringido de hasta 65536 bytes con salida máxima de 4096 bytes.
def chunk_body(wire):
if type(wire) is not bytes or len(wire) > 65536:
raise ValueError("bounded bytes")
pos, body = 0, bytearray()
while True:
end = wire.find(b"\r\n", pos)
token = wire[pos:end] if end >= 0 else b""
if not 1 <= len(token) <= 8 or any(
c not in b"0123456789abcdefABCDEF" for c in token):
raise ValueError("plain hexadecimal size")
size, pos = int(token, 16), end + 2
if size == 0:
if wire[pos:] != b"\r\n":
raise ValueError("no trailers or extra bytes")
return bytes(body)
if len(body) + size > 4096:
raise ValueError("body limit")
if pos + size + 2 > len(wire):
raise ValueError("truncated chunk")
if wire[pos + size:pos + size + 2] != b"\r\n":
raise ValueError("chunk delimiter")
body.extend(wire[pos:pos + size])
pos += size + 2- Modelos
- Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado.
- Proyecto
- Prueba CRLF internos y el bloque cero, rechazando truncamientos, extensiones, tráileres y bytes posteriores.
- Revisa antes de aplicar
- Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
def chunk_body(wire):
if type(wire) is not bytes or len(wire) > 65536:
raise ValueError("bounded bytes")
pos, body = 0, bytearray()
while True:
end = wire.find(b"\r\n", pos)
token = wire[pos:end] if end >= 0 else b""
if not 1 <= len(token) <= 8 or any(
c not in b"0123456789abcdefABCDEF" for c in token):
raise ValueError("plain hexadecimal size")
size, pos = int(token, 16), end + 2
if size == 0:
if wire[pos:] != b"\r\n":
raise ValueError("no trailers or extra bytes")
return bytes(body)
if len(body) + size > 4096:
raise ValueError("body limit")
if pos + size + 2 > len(wire):
raise ValueError("truncated chunk")
if wire[pos + size:pos + size + 2] != b"\r\n":
raise ValueError("chunk delimiter")
body.extend(wire[pos:pos + size])
pos += size + 2Mantén explícito el formato admitido por el decodificador
Un decodificador necesita una respuesta precisa sobre dónde termina la entrada válida y comienza el rechazo. ChunkRavel es un entorno de programación con IA para Windows para desarrollar ese límite con el código de tu proyecto a la vista. Describe el formato de entrada admitido, los límites de tamaño y el resultado esperado, y pide al asistente que examine cómo avanza la implementación existente por los bytes e informa de fallos.
El ejemplo restringido de cuerpo dividido en bloques es una tarea que puedes examinar. Acepta una forma deliberadamente limitada, por lo que debes revisar extensiones y campos finales no admitidos junto con entradas truncadas y bytes adicionales. Solicita cambios que conserven los límites declarados salvo que el requisito los amplíe explícitamente. Sigue también la salida decodificada hasta el consumidor, porque el componente receptor puede tratar mal incluso un resultado de bytes correcto.
Para las opciones de IA ablacionada, selecciona un modelo disponible mediante un endpoint compatible con OpenAI o de Anthropic admitido y proporciona credenciales cuando se requieran. El modelo y el servidor determinan el contexto, las herramientas y las restricciones aplicables. Examina las diferencias y ejecuta casos válidos e inválidos mediante las pruebas de tu proyecto antes de aceptar el cambio del decodificador. Un servidor de modelos local separado no convierte en locales todas las herramientas o servicios conectados.
Revisión de un contrato de decodificación limitado
- ¿Debe aceptar el decodificador todas las formas de entrada por bloques?
Solo si es un requisito de la aplicación y la implementación se diseña y prueba para ello. El ejemplo admite una forma restringida. Mantén explícitas las extensiones, los campos finales y otros casos no admitidos, sin tratar una demostración limitada como soporte completo del protocolo.
- ¿Cómo debo probar un cuerpo truncado?
Proporciona casos cortados en límites significativos, incluso dentro de un token de tamaño, del cuerpo y del delimitador. Indica el rechazo esperado. Ejecútalos mediante el punto de entrada real del decodificador para incluir el tratamiento circundante de la entrada en el resultado examinado.
- ¿Por qué comprobar los bytes restantes tras el bloque final?
La aplicación necesita una política definida para la entrada no consumida. Examina si los bytes adicionales deben rechazarse o tratarse en otra capa y prueba ese contrato. Ignorarlos accidentalmente puede ocultar un desacuerdo entre el decodificador y su consumidor.
- ¿Implica el dominio relacionado con SQL funciones de decodificación de bases de datos?
No se afirma tal función. El ejemplo de proyecto suministrado trata de decodificación de bytes, y ChunkRavel es un entorno de programación con IA para Windows. Elige los archivos y el entorno de ejecución reales de la tarea en lugar de inferir capacidades del producto a partir del dominio.
ChunkRavel · Actualizado 2026-10-25