|
|
@ -435,14 +435,13 @@ static void tcp_do_read(grpc_tcp* tcp) { |
|
|
|
GPR_TIMER_SCOPE("tcp_do_read", 0); |
|
|
|
GPR_TIMER_SCOPE("tcp_do_read", 0); |
|
|
|
struct msghdr msg; |
|
|
|
struct msghdr msg; |
|
|
|
struct iovec iov[MAX_READ_IOVEC]; |
|
|
|
struct iovec iov[MAX_READ_IOVEC]; |
|
|
|
constexpr size_t cmsg_alloc_space = |
|
|
|
|
|
|
|
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) + CMSG_SPACE(sizeof(int)); |
|
|
|
|
|
|
|
ssize_t read_bytes; |
|
|
|
ssize_t read_bytes; |
|
|
|
size_t total_read_bytes = 0; |
|
|
|
size_t total_read_bytes = 0; |
|
|
|
size_t iov_len = |
|
|
|
size_t iov_len = |
|
|
|
std::min<size_t>(MAX_READ_IOVEC, tcp->incoming_buffer->count); |
|
|
|
std::min<size_t>(MAX_READ_IOVEC, tcp->incoming_buffer->count); |
|
|
|
|
|
|
|
constexpr size_t cmsg_alloc_space = |
|
|
|
|
|
|
|
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) + CMSG_SPACE(sizeof(int)); |
|
|
|
char cmsgbuf[cmsg_alloc_space]; |
|
|
|
char cmsgbuf[cmsg_alloc_space]; |
|
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < iov_len; i++) { |
|
|
|
for (size_t i = 0; i < iov_len; i++) { |
|
|
|
iov[i].iov_base = GRPC_SLICE_START_PTR(tcp->incoming_buffer->slices[i]); |
|
|
|
iov[i].iov_base = GRPC_SLICE_START_PTR(tcp->incoming_buffer->slices[i]); |
|
|
|
iov[i].iov_len = GRPC_SLICE_LENGTH(tcp->incoming_buffer->slices[i]); |
|
|
|
iov[i].iov_len = GRPC_SLICE_LENGTH(tcp->incoming_buffer->slices[i]); |
|
|
|