28 lines
724 B
C
28 lines
724 B
C
#include <string.h>
|
|
|
|
#include "lnm/http/loop.h"
|
|
#include "lnm/loop.h"
|
|
|
|
#include "lander.h"
|
|
|
|
lnm_http_step_err lander_stream_body_to_entry(lnm_http_conn *conn) {
|
|
lnm_http_loop_ctx *ctx = conn->ctx;
|
|
lander_ctx *c_ctx = ctx->c;
|
|
|
|
uint64_t to_append =
|
|
LNM_MIN(conn->r.size - conn->r.read,
|
|
ctx->req.body.expected_len - lsm_entry_data_len(c_ctx->entry));
|
|
|
|
lsm_str *data;
|
|
lsm_str_init_copy_n(&data, (char *)&conn->r.buf[conn->r.read], to_append);
|
|
lsm_entry_data_append(c_ctx->entry, data);
|
|
|
|
conn->r.read += to_append;
|
|
|
|
lsm_str_free(data);
|
|
|
|
return lsm_entry_data_len(c_ctx->entry) == ctx->req.body.expected_len
|
|
? lnm_http_step_err_done
|
|
: lnm_http_step_err_io_needed;
|
|
}
|