Sounds like you should be using MHD_create_response_from_iovec(). That
way, you can avoid the memcpy() entirely.
I took a look at MHD_create_response_from_iovec, but I'm not sure if that works for my circumstance because it doesn't use a callback. The data from the driver isn't available immediately, so I check for the status inside of the MHD_ContentReaderCallback and will suspend the connection if the next 64MB block isn't ready. When the next data block is ready I resume the connection. Am I missing some way of doing that with MHD_create_response_from_iovec? :)