[roll] Roll fuchsia [debugger] Refactor Curl code to not use RefPtr

Recent changes to upstream libcurl exposed an issue with our lifetime
handling of the Curl::MultiHandle object. It is now typical to see the
curl callback functions called as a result of beginning curl's cleanup
routines.

This created an issue when tearing down the message loop, which owns
lambda functions that have the last reference to the MultiHandle object,
where more references would be created to the object from its own
destructor, and would result in reentrantly destructing, which libcurl
prevents.

The solution is a more manual management of the MultiHandle's lifetime.
There is a single object which will be destructed in the correct order
when there are no more EasyHandles associated with it. This allows the
callbacks to not require strong references to the object and for the
object to persist until all of the data has been received from the
remote end.

In the case the remote end _never_ responds to a particular request, it
is cleaned up as the first action of curl_global_cleanup.

Test: fx test --host zxdb_tests -- --gtest_filter="Curl*"
Original-Bug: b/382444850
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1171173
Original-Revision: 6e3d8e07369cf6e431f9dcba48f5be4606b477d0
GitOrigin-RevId: 14a6bee0df33968cda41c67d434951e64437bc40
Change-Id: Ia5db49ab4507532600f4a8e513b56a330f7be889
1 file changed
tree: 66cd581b21bfd83272d9347d3eb0e0ad17bb7fbf
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.