REQ_HEAD,
REQ_POST,
REQ_PUT,
+ REQ_DELETE,
__REQ_MAX
};
[REQ_HEAD] = "HEAD",
[REQ_POST] = "POST",
[REQ_PUT] = "PUT",
+ [REQ_DELETE] = "DELETE",
};
struct uclient_http {
struct ustream_ssl ussl;
struct uloop_timeout disconnect_t;
+ unsigned int seq;
bool ssl_require_validation;
bool ssl;
static void uclient_http_reset_state(struct uclient_http *uh)
{
+ uh->seq++;
uclient_backend_reset_state(&uh->uc);
uh->read_chunked = -1;
uh->content_length = -1;
static void __uclient_notify_read(struct uclient_http *uh)
{
struct uclient *uc = &uh->uc;
+ unsigned int seq = uh->seq;
char *data;
int len;
*sep = 0;
cur_len = sep + 2 - data;
uclient_parse_http_line(uh, data);
+ if (seq != uh->seq)
+ return;
+
ustream_consume(uh->us, cur_len);
len -= cur_len;
}
static int
-uclient_http_send_data(struct uclient *cl, char *buf, unsigned int len)
+uclient_http_send_data(struct uclient *cl, const char *buf, unsigned int len)
{
struct uclient_http *uh = container_of(cl, struct uclient_http, uc);