base,dev: Simplify the ListenSocket::accept method.

Remove the nodelay option which is always set to the same thing, and
simplify the logic of the method itself.

Change-Id: I78cd91f99cbaec9abddedbc7dcddc563daedb81f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69158
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Yu-hsin Wang <yuhsingw@google.com>
diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc
index dd37a35..b709ac3 100644
--- a/src/base/remote_gdb.cc
+++ b/src/base/remote_gdb.cc
@@ -438,7 +438,7 @@
 
     pollQueue.remove(incomingConnectionEvent);
 
-    int sfd = listener.accept(true);
+    int sfd = listener.accept();
 
     if (sfd != -1) {
         if (isAttached())
diff --git a/src/base/socket.cc b/src/base/socket.cc
index 23f2b40..0a62a88 100644
--- a/src/base/socket.cc
+++ b/src/base/socket.cc
@@ -239,17 +239,17 @@
 // Open a connection.  Accept will block, so if you don't want it to,
 // make sure a connection is ready before you call accept.
 int
-ListenSocket::accept(bool nodelay)
+ListenSocket::accept()
 {
     struct sockaddr_in sockaddr;
     socklen_t slen = sizeof (sockaddr);
     int sfd = acceptCloexec(fd, (struct sockaddr *)&sockaddr, &slen);
-    if (sfd != -1 && nodelay) {
-        int i = 1;
-        if (::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *)&i,
-                         sizeof(i)) < 0)
-            warn("ListenSocket(accept): setsockopt() TCP_NODELAY failed!");
-    }
+    if (sfd == -1)
+        return -1;
+
+    int i = 1;
+    int ret = ::setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, &i, sizeof(i));
+    warn_if(ret < 0, "ListenSocket(accept): setsockopt() TCP_NODELAY failed!");
 
     return sfd;
 }
diff --git a/src/base/socket.hh b/src/base/socket.hh
index af4a651..aa451b6 100644
--- a/src/base/socket.hh
+++ b/src/base/socket.hh
@@ -104,7 +104,7 @@
     ListenSocket();
     virtual ~ListenSocket();
 
-    virtual int accept(bool nodelay = true);
+    virtual int accept();
 
     virtual bool listen(int port, bool reuse = true);
 
diff --git a/src/base/vnc/vncserver.cc b/src/base/vnc/vncserver.cc
index c98838a..5792c44 100644
--- a/src/base/vnc/vncserver.cc
+++ b/src/base/vnc/vncserver.cc
@@ -190,7 +190,7 @@
     if (!listener.islistening())
         panic("%s: cannot accept a connection if not listening!", name());
 
-    int fd = listener.accept(true);
+    int fd = listener.accept();
     if (fd < 0) {
         warn("%s: failed to accept VNC connection!", name());
         return;
diff --git a/src/dev/net/ethertap.cc b/src/dev/net/ethertap.cc
index 5b1e957..b28f255 100644
--- a/src/dev/net/ethertap.cc
+++ b/src/dev/net/ethertap.cc
@@ -280,7 +280,7 @@
     if (!listener.islistening())
         panic("TapListener(accept): cannot accept if we're not listening!");
 
-    int sfd = listener.accept(true);
+    int sfd = listener.accept();
     if (sfd != -1)
         tap->attach(sfd);
 }
diff --git a/src/dev/serial/terminal.cc b/src/dev/serial/terminal.cc
index d4108a3..fada99c 100644
--- a/src/dev/serial/terminal.cc
+++ b/src/dev/serial/terminal.cc
@@ -195,7 +195,7 @@
     if (!listener.islistening())
         panic("%s: cannot accept a connection if not listening!", name());
 
-    int fd = listener.accept(true);
+    int fd = listener.accept();
     if (data_fd != -1) {
         char message[] = "terminal already attached!\n";
         atomic_write(fd, message, sizeof(message));