Hello folks, I really hope someone can point me in the correct direction here.
I have an apache module that receives data from clients in the request body and saves the recvd data in a db. The client also sends the Content-MD5 header with the request which I want to verify by computing the MD5 of recvd data and checking if the result is the same as the value of the Content-MD5 header. I want to just discard the data (not store it in the db) and return an error if the MD5 check fails. The client can send up to 4 GB data in the request. Which means I will have to compute the MD5 incrementally in small chunks using the MD5_INIT, MD5_UPDATE and MD5_FINAL routines. But this means that I would have already read the request body once from start to end using the following functions: ap_setup_client_block(request_rec<http://httpd.apache.org/dev/apidoc/apidoc_request_rec.html>*r, int read_policy); ap_should_client_block(request_rec<http://httpd.apache.org/dev/apidoc/apidoc_request_rec.html>*r); ap_get_client_block(request_rec<http://httpd.apache.org/dev/apidoc/apidoc_request_rec.html>*r, char *buffer, int bufsiz); Now if the MD5 checksum passes and now I want to read the data again, how would i do it? I cannot use the above function again, right? 'ap_should_client_block' has already told the client once to send the entire data once. Reading the data once, computing the MD5, caching it and then reusing the cached data if the checksum passes is one option, but I dont want to do that for a variety of reasons. Is there any other way? Thanks for any help. Subra
