lib/curl/Global: defer the ReadInfo() call

Fixes a crash that can occur due to recursion from InvalidateSockets()
to ReadInfo() to CurlRequest callbacks.
This commit is contained in:
Max Kellermann
2017-01-08 12:40:56 +01:00
parent 218c3bc0d5
commit 3c66feff5a
3 changed files with 14 additions and 2 deletions

View File

@@ -32,6 +32,7 @@
#include "Multi.hxx"
#include "event/TimeoutMonitor.hxx"
#include "event/DeferredMonitor.hxx"
class CurlSocket;
class CurlRequest;
@@ -39,7 +40,7 @@ class CurlRequest;
/**
* Manager for the global CURLM object.
*/
class CurlGlobal final : private TimeoutMonitor {
class CurlGlobal final : TimeoutMonitor, DeferredMonitor {
CurlMulti multi;
public:
@@ -81,6 +82,9 @@ private:
/* virtual methods from class TimeoutMonitor */
void OnTimeout() override;
/* virtual methods from class DeferredMonitor */
void RunDeferred() override;
};
#endif