summaryrefslogtreecommitdiff
path: root/src/inspsocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/inspsocket.cpp')
-rw-r--r--src/inspsocket.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/inspsocket.cpp b/src/inspsocket.cpp
index 65b554006..e3b8f8c8a 100644
--- a/src/inspsocket.cpp
+++ b/src/inspsocket.cpp
@@ -216,6 +216,9 @@ void StreamSocket::DoRead()
}
}
+/* Don't try to prepare huge blobs of data to send to a blocked socket */
+static const int MYIOV_MAX = IOV_MAX < 128 ? IOV_MAX : 128;
+
void StreamSocket::DoWrite()
{
if (sendq.empty())
@@ -330,11 +333,11 @@ void StreamSocket::DoWrite()
{
// Prepare a writev() call to write all buffers efficiently
int bufcount = sendq.size();
-
- // cap the number of buffers at IOV_MAX
- if (bufcount > IOV_MAX)
+
+ // cap the number of buffers at MYIOV_MAX
+ if (bufcount > MYIOV_MAX)
{
- bufcount = IOV_MAX;
+ bufcount = MYIOV_MAX;
}
int rv_max = 0;