X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=stream.cpp;h=e8d65db1a8cfda924226ad1838d087ad01a176a9;hp=99226553451b2b5e8376954883d96e7cab5996f0;hb=ea11d357cc010351871392e433880fb2401161b2;hpb=9abb89bcf7940e2ada9d708f86a218a56334f68d diff --git a/stream.cpp b/stream.cpp index 9922655..e8d65db 100644 --- a/stream.cpp +++ b/stream.cpp @@ -1,9 +1,10 @@ #include #include +#include #include #include #include -#include +#include #include #include @@ -129,7 +130,8 @@ void Stream::put_client_to_sleep(Client *client) vector collect_iovecs(const vector &data, size_t bytes_wanted) { vector ret; - for (size_t i = 0; i < data.size() && bytes_wanted > 0; ++i) { + size_t max_iovecs = std::min(data.size(), IOV_MAX); + for (size_t i = 0; i < max_iovecs && bytes_wanted > 0; ++i) { if (data[i].iov_len <= bytes_wanted) { // Consume the entire iovec. ret.push_back(data[i]); @@ -185,7 +187,7 @@ void Stream::add_data_raw(const vector &orig_data) } while (ret == -1 && errno == EINTR); if (ret == -1) { - log_perror("pwrite"); + log_perror("pwritev"); // Dazed and confused, but trying to continue... return; } @@ -222,7 +224,7 @@ void Stream::add_data_deferred(const char *data, size_t bytes) queued_data.push_back(iov); } else { - assert(encoding == Stream::STREAM_ENCODING_RAW); + assert(false); } }