X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=stream.cpp;h=ae313087e003ac236d7b6134950e32e441582f8c;hb=6d72705df23fbdb0eccb085ff984cd93c38e4166;hp=17b5949172a531cae5a37eb4f8948dbf177bb4a9;hpb=1e15bf9054e65adfce268578f4e474c980ef6443;p=cubemap diff --git a/stream.cpp b/stream.cpp index 17b5949..ae31308 100644 --- a/stream.cpp +++ b/stream.cpp @@ -206,9 +206,20 @@ 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);