mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-27 01:27:30 +09:00
Use mutex in PACResolver when accessing mRequest from multiple threads.
This commit is contained in:
parent
db34f0e7be
commit
38439fd244
1 changed files with 20 additions and 6 deletions
|
|
@ -271,6 +271,7 @@ public:
|
||||||
|
|
||||||
PACResolver()
|
PACResolver()
|
||||||
: mStatus(NS_ERROR_FAILURE)
|
: mStatus(NS_ERROR_FAILURE)
|
||||||
|
, mMutex("PACResolver::Mutex")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -279,9 +280,15 @@ public:
|
||||||
nsIDNSRecord *record,
|
nsIDNSRecord *record,
|
||||||
nsresult status) override
|
nsresult status) override
|
||||||
{
|
{
|
||||||
if (mTimer) {
|
nsCOMPtr<nsITimer> timer;
|
||||||
mTimer->Cancel();
|
{
|
||||||
mTimer = nullptr;
|
MutexAutoLock lock(mMutex);
|
||||||
|
timer.swap(mTimer);
|
||||||
|
mRequest = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timer) {
|
||||||
|
timer->Cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
mRequest = nullptr;
|
mRequest = nullptr;
|
||||||
|
|
@ -293,9 +300,15 @@ public:
|
||||||
// nsITimerCallback
|
// nsITimerCallback
|
||||||
NS_IMETHOD Notify(nsITimer *timer) override
|
NS_IMETHOD Notify(nsITimer *timer) override
|
||||||
{
|
{
|
||||||
if (mRequest)
|
nsCOMPtr<nsICancelable> request;
|
||||||
mRequest->Cancel(NS_ERROR_NET_TIMEOUT);
|
{
|
||||||
mTimer = nullptr;
|
MutexAutoLock lock(mMutex);
|
||||||
|
request.swap(mRequest);
|
||||||
|
mTimer = nullptr;
|
||||||
|
}
|
||||||
|
if (request) {
|
||||||
|
request->Cancel(NS_ERROR_NET_TIMEOUT);
|
||||||
|
}
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -303,6 +316,7 @@ public:
|
||||||
nsCOMPtr<nsICancelable> mRequest;
|
nsCOMPtr<nsICancelable> mRequest;
|
||||||
nsCOMPtr<nsIDNSRecord> mResponse;
|
nsCOMPtr<nsIDNSRecord> mResponse;
|
||||||
nsCOMPtr<nsITimer> mTimer;
|
nsCOMPtr<nsITimer> mTimer;
|
||||||
|
Mutex mMutex;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
~PACResolver() {}
|
~PACResolver() {}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue