KEEL 1.0.0
Minimal C11 HTTP client/server library built on epoll/kqueue/io_uring/poll
Loading...
Searching...
No Matches
Data Structures | Enumerations | Functions
chunked.h File Reference
#include <keel/body_reader.h>
#include <stddef.h>
Include dependency graph for chunked.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  KlChunkedDecoder
 

Enumerations

enum  KlChunkedState {
  KL_CHUNK_SIZE , KL_CHUNK_EXT , KL_CHUNK_SIZE_CR , KL_CHUNK_DATA ,
  KL_CHUNK_DATA_CR , KL_CHUNK_TRAILER , KL_CHUNK_TRAILER_CR , KL_CHUNK_DONE ,
  KL_CHUNK_ERROR
}
 

Functions

void kl_chunked_init (KlChunkedDecoder *dec)
 Initialize/reset decoder state.
 
int kl_chunked_decode (KlChunkedDecoder *dec, const char *data, size_t len, KlBodyReader *reader)
 Feed raw bytes from socket, de-chunk, and forward to body reader.
 

Enumeration Type Documentation

◆ KlChunkedState

Enumerator
KL_CHUNK_SIZE 

reading hex chunk-size

KL_CHUNK_EXT 

skipping chunk extensions after ';'

KL_CHUNK_SIZE_CR 

saw CR, expecting LF after chunk-size line

KL_CHUNK_DATA 

reading chunk-data bytes

KL_CHUNK_DATA_CR 

saw CR after chunk-data, expecting LF

KL_CHUNK_TRAILER 

reading/skipping trailer headers

KL_CHUNK_TRAILER_CR 

saw CR in trailer, expecting LF (could be final)

KL_CHUNK_DONE 
KL_CHUNK_ERROR 

Function Documentation

◆ kl_chunked_init()

void kl_chunked_init ( KlChunkedDecoder dec)

Initialize/reset decoder state.

◆ kl_chunked_decode()

int kl_chunked_decode ( KlChunkedDecoder dec,
const char *  data,
size_t  len,
KlBodyReader reader 
)

Feed raw bytes from socket, de-chunk, and forward to body reader.

Parameters
decDecoder state (must be initialized with kl_chunked_init).
dataRaw chunked-encoded bytes from socket.
lenNumber of bytes.
readerBody reader to forward de-chunked data to (NULL to discard).
Returns
0 need more data (INCOMPLETE) 1 terminal chunk received (DONE) -1 parse error or body reader rejected