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) {