You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2021/07/28 15:41:11 UTC
[trafficserver] branch 9.1.x updated: use sendmsg and recvmsg
(#7793)
This is an automated email from the ASF dual-hosted git repository.
zwoop pushed a commit to branch 9.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/9.1.x by this push:
new e5d74a2 use sendmsg and recvmsg (#7793)
e5d74a2 is described below
commit e5d74a288e4e17d8e7f36b9f16b9817889dcde89
Author: Vijay Mamidi <vi...@yahoo.com>
AuthorDate: Fri May 7 10:09:23 2021 -0700
use sendmsg and recvmsg (#7793)
(cherry picked from commit e9c6f67536e4f50ac9a6c036f82c351a26c45693)
---
iocore/net/UnixNetVConnection.cc | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/iocore/net/UnixNetVConnection.cc b/iocore/net/UnixNetVConnection.cc
index d1f6d9f..af5deec 100644
--- a/iocore/net/UnixNetVConnection.cc
+++ b/iocore/net/UnixNetVConnection.cc
@@ -255,7 +255,14 @@ read_from_net(NetHandler *nh, UnixNetVConnection *vc, EThread *thread)
ink_assert(niov > 0);
ink_assert(niov <= countof(tiovec));
- r = socketManager.readv(vc->con.fd, &tiovec[0], niov);
+ struct msghdr msg;
+
+ ink_zero(msg);
+ msg.msg_name = const_cast<sockaddr *>(vc->get_remote_addr());
+ msg.msg_namelen = ats_ip_size(vc->get_remote_addr());
+ msg.msg_iov = &tiovec[0];
+ msg.msg_iovlen = niov;
+ r = socketManager.recvmsg(vc->con.fd, &msg, 0);
NET_INCREMENT_DYN_STAT(net_calls_to_read_stat);
@@ -966,19 +973,21 @@ UnixNetVConnection::load_buffer_and_write(int64_t towrite, MIOBufferAccessor &bu
// If the platform doesn't support TCP Fast Open, verify that we
// correctly disabled support in the socket option configuration.
ink_assert(MSG_FASTOPEN != 0 || this->options.f_tcp_fastopen == false);
+ struct msghdr msg;
- if (!this->con.is_connected && this->options.f_tcp_fastopen) {
- struct msghdr msg;
-
- ink_zero(msg);
- msg.msg_name = const_cast<sockaddr *>(this->get_remote_addr());
- msg.msg_namelen = ats_ip_size(this->get_remote_addr());
- msg.msg_iov = &tiovec[0];
- msg.msg_iovlen = niov;
+ ink_zero(msg);
+ msg.msg_name = const_cast<sockaddr *>(this->get_remote_addr());
+ msg.msg_namelen = ats_ip_size(this->get_remote_addr());
+ msg.msg_iov = &tiovec[0];
+ msg.msg_iovlen = niov;
+ int flags = 0;
+ if (!this->con.is_connected && this->options.f_tcp_fastopen) {
NET_INCREMENT_DYN_STAT(net_fastopen_attempts_stat);
-
- r = socketManager.sendmsg(con.fd, &msg, MSG_FASTOPEN);
+ flags = MSG_FASTOPEN;
+ }
+ r = socketManager.sendmsg(con.fd, &msg, flags);
+ if (!this->con.is_connected && this->options.f_tcp_fastopen) {
if (r < 0) {
if (r == -EINPROGRESS || r == -EWOULDBLOCK) {
this->con.is_connected = true;
@@ -987,9 +996,6 @@ UnixNetVConnection::load_buffer_and_write(int64_t towrite, MIOBufferAccessor &bu
NET_INCREMENT_DYN_STAT(net_fastopen_successes_stat);
this->con.is_connected = true;
}
-
- } else {
- r = socketManager.writev(con.fd, &tiovec[0], niov);
}
if (r > 0) {