Decodifica limitata dei corpi chunked
Decodifica un corpo chunked ristretto di massimo 65536 byte con uscita limitata a 4096 byte.
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- Modelli
- Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
- Progetto
- Controlla CRLF interni e blocco zero, rifiutando troncamenti, estensioni, trailer e byte successivi.
- Controlla prima di applicare
- Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
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 + 2Mantieni esplicito il formato accettato da un decodificatore
Un decodificatore richiede una risposta precisa su dove finisca l'input valido e inizi il rifiuto. ChunkRavel è un ambiente di programmazione con IA per Windows per sviluppare quel confine tenendo visibile il codice del progetto. Descrivi formato di input supportato, limiti di dimensione e risultato atteso, poi chiedi all'assistente di esaminare come l'implementazione esistente avanza tra i byte e segnala gli errori.
L'esempio limitato di corpo chunked è un'attività che puoi esaminare. Accetta una forma deliberatamente ristretta, quindi rivedi estensioni e trailer non supportati insieme a input troncati e byte aggiuntivi. Chiedi modifiche che preservino i limiti dichiarati, salvo ampliamento esplicito dei requisiti. Segui anche l'output decodificato nel chiamante, perché un risultato corretto in byte può comunque essere gestito male dal componente che lo riceve.
Per le opzioni di IA abliterata, seleziona un modello disponibile tramite un endpoint supportato compatibile con OpenAI o Anthropic e fornisci credenziali quando richieste. Modello e server determinano contesto, strumenti e restrizioni applicabili. Esamina le differenze ed esegui casi validi e non validi nei test del progetto prima di accettare la modifica al decodificatore. Un server di modelli locale eseguito separatamente non rende locali tutti gli strumenti o servizi collegati.
Rivedere un contratto di decodifica ristretto
- Il decodificatore deve accettare ogni forma di input chunked?
Solo se è un requisito dell'applicazione e l'implementazione è progettata e testata per farlo. L'esempio supporta una forma limitata. Mantieni espliciti estensioni, trailer e altri casi non supportati anziché considerare una dimostrazione ristretta come supporto completo del protocollo.
- Come devo testare un corpo troncato?
Fornisci casi tagliati a confini significativi, anche dentro un token di dimensione, nel corpo e nel delimitatore. Indica il rifiuto atteso. Eseguili attraverso il vero punto di ingresso del decodificatore affinché la gestione circostante dell'input sia inclusa nel risultato esaminato.
- Perché controllare i byte rimasti dopo l'ultimo blocco?
L'applicazione necessita di una politica definita per l'input non consumato. Esamina se i byte aggiuntivi debbano essere rifiutati o gestiti da un altro livello, poi testa quel contratto. Ignorarli accidentalmente può nascondere una divergenza tra decodificatore e chiamante.
- Il dominio relativo a SQL implica funzioni di decodifica di database?
Non viene dichiarata alcuna funzione del genere. L'esempio di progetto fornito riguarda la decodifica dei byte e ChunkRavel è un ambiente di programmazione con IA per Windows. Scegli i file di progetto e il runtime effettivi per l'attività, senza dedurre capacità del prodotto dal dominio.
ChunkRavel · Aggiornato 2026-10-25