X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=stream.cpp;h=37961fadad9253c09b01745233c62256ab115f18;hp=17b5949172a531cae5a37eb4f8948dbf177bb4a9;hb=ef7f588a9b7a63ba2153cd06ce5322db4453fa16;hpb=1e15bf9054e65adfce268578f4e474c980ef6443 diff --git a/stream.cpp b/stream.cpp index 17b5949..37961fa 100644 --- a/stream.cpp +++ b/stream.cpp @@ -206,20 +206,24 @@ void Stream::add_data_deferred(const char *data, size_t bytes) hdr.flags = htonl(0); iovec iov; - iov.iov_base = new char[sizeof(hdr)]; + iov.iov_base = new char[bytes + sizeof(hdr)]; + iov.iov_len = bytes + sizeof(hdr); + memcpy(iov.iov_base, &hdr, sizeof(hdr)); - iov.iov_len = sizeof(hdr); + memcpy(reinterpret_cast(iov.iov_base) + sizeof(hdr), data, bytes); + + queued_data.push_back(iov); + } else if (encoding == Stream::STREAM_ENCODING_RAW) { + // Just add the data itself. + iovec iov; + iov.iov_base = new char[bytes]; + memcpy(iov.iov_base, data, bytes); + iov.iov_len = bytes; + queued_data.push_back(iov); } else { assert(encoding == Stream::STREAM_ENCODING_RAW); } - - // Add the data itself. - iovec iov; - iov.iov_base = new char[bytes]; - memcpy(iov.iov_base, data, bytes); - iov.iov_len = bytes; - queued_data.push_back(iov); } void Stream::process_queued_data()