[PATCH] D111252: [llvm] [Support] [Debuginfo] Add http and debuginfod client libraries and llvm-debuginfod-find tool

Noah Shutty via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 14 16:13:30 PDT 2021


noajshu added inline comments.


================
Comment at: llvm/lib/Support/HTTPClient.cpp:31
+  size_t BufferSize = Buffer->size();
+  Buffer->resize(BufferSize + ChunkSize);
+  memcpy(&(Buffer[BufferSize]), Contents, ChunkSize);
----------------
phosek wrote:
> One potential downside of this approach is you may have to resize the buffer multiple times as the data comes in which would be inefficient.
> 
> I was reading about alternatives, one possibility would be check a priori what's the size of the resource you're fetching is by performing a HEAD request (via `CURLOPT_NOBODY` and `CURLOPT_HEADER` set to 1) asking for the HTTP headers to be written via `CURLOPT_WRITEHEADER` and `CURLOPT_WRITEFUNCTION` and parsing the `Content-Length` value. Then you can allocate an appropriately sized buffer and fetch the actual content. You might even use `WritableMemoryBuffer::getNewUninitMemBuffer` instead of `std::vector` since you don't need to resize.
Thanks, this is a very interesting idea! I will try to do the same thing using just a single request, by triggering the resize in CURLOPT_HEADERFUNCTION when the content-length is available.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D111252/new/

https://reviews.llvm.org/D111252



More information about the llvm-commits mailing list