Merge pull request #19516 from yashykt/inqcmsgsize

Increase the control message size
pull/19466/head
Yash Tibrewal 6 years ago committed by GitHub
commit 842a3dcd9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      src/core/lib/iomgr/tcp_posix.cc

@ -435,12 +435,17 @@ static void tcp_do_read(grpc_tcp* tcp) {
GPR_TIMER_SCOPE("tcp_do_read", 0);
struct msghdr msg;
struct iovec iov[MAX_READ_IOVEC];
char cmsgbuf[24 /*CMSG_SPACE(sizeof(int))*/];
ssize_t read_bytes;
size_t total_read_bytes = 0;
size_t iov_len =
std::min<size_t>(MAX_READ_IOVEC, tcp->incoming_buffer->count);
#ifdef GRPC_LINUX_ERRQUEUE
constexpr size_t cmsg_alloc_space =
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) + CMSG_SPACE(sizeof(int));
#else
constexpr size_t cmsg_alloc_space = 24 /* CMSG_SPACE(sizeof(int)) */;
#endif /* GRPC_LINUX_ERRQUEUE */
char cmsgbuf[cmsg_alloc_space];
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_len = GRPC_SLICE_LENGTH(tcp->incoming_buffer->slices[i]);
@ -524,6 +529,7 @@ static void tcp_do_read(grpc_tcp* tcp) {
if (cmsg->cmsg_level == SOL_TCP && cmsg->cmsg_type == TCP_CM_INQ &&
cmsg->cmsg_len == CMSG_LEN(sizeof(int))) {
tcp->inq = *reinterpret_cast<int*>(CMSG_DATA(cmsg));
break;
}
}
}

Loading…
Cancel
Save