mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-08 11:53:00 -04:00
Merge remote-tracking branch 'origin/patches-2.0'
This commit is contained in:
commit
cac02fadc2
9
buffer.c
9
buffer.c
@ -2734,14 +2734,21 @@ evbuffer_peek(struct evbuffer *buffer, ev_ssize_t len,
|
||||
chain = buffer->first;
|
||||
}
|
||||
|
||||
if (n_vec == 0 && len < 0) {
|
||||
/* If no vectors are provided and they asked for "everything",
|
||||
* pretend they asked for the actual available amount. */
|
||||
len = buffer->total_len - len_so_far;
|
||||
}
|
||||
|
||||
while (chain) {
|
||||
if (len >= 0 && len_so_far >= len)
|
||||
break;
|
||||
if (idx<n_vec) {
|
||||
vec[idx].iov_base = chain->buffer + chain->misalign;
|
||||
vec[idx].iov_len = chain->off;
|
||||
} else if (len<0)
|
||||
} else if (len<0) {
|
||||
break;
|
||||
}
|
||||
++idx;
|
||||
len_so_far += chain->off;
|
||||
chain = chain->next;
|
||||
|
@ -779,8 +779,10 @@ struct evbuffer_ptr evbuffer_search_eol(struct evbuffer *buffer,
|
||||
the buffer does not have as much data as you asked to see).
|
||||
|
||||
@param buffer the evbuffer to peek into,
|
||||
@param len the number of bytes to try to peek. If negative, we
|
||||
will try to fill as much of vec_out as we can.
|
||||
@param len the number of bytes to try to peek. If len is negative, we
|
||||
will try to fill as much of vec_out as we can. If len is negative
|
||||
and vec_out is not provided, we return the number of evbuffer_iovecs
|
||||
that would be needed to get all the data in the buffer.
|
||||
@param start_at an evbuffer_ptr indicating the point at which we
|
||||
should start looking for data. NULL means, "At the start of the
|
||||
buffer."
|
||||
|
@ -1780,6 +1780,10 @@ test_evbuffer_peek(void *info)
|
||||
evbuffer_add_buffer(buf, tmp_buf);
|
||||
}
|
||||
|
||||
/* How many chunks do we need for everything? */
|
||||
i = evbuffer_peek(buf, -1, NULL, NULL, 0);
|
||||
tt_int_op(i, ==, 16);
|
||||
|
||||
/* Simple peek: get everything. */
|
||||
i = evbuffer_peek(buf, -1, NULL, v, 20);
|
||||
tt_int_op(i, ==, 16); /* we used only 16 chunks. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user