diff options
Diffstat (limited to 'src/inspsocket.cpp')
-rw-r--r-- | src/inspsocket.cpp | 11 |
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; |