mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-24 16:17:29 +09:00
Fix socket transport status events
Bug(s): https://bugzilla.mozilla.org/show_bug.cgi?id=1340164 (native in moebius)
This commit is contained in:
parent
2b2216c2d1
commit
e8af99be6e
2 changed files with 49 additions and 0 deletions
|
|
@ -144,6 +144,7 @@ nsHttpTransaction::nsHttpTransaction()
|
||||||
, mIsInIsolatedMozBrowser(false)
|
, mIsInIsolatedMozBrowser(false)
|
||||||
, mClassOfService(0)
|
, mClassOfService(0)
|
||||||
, m0RTTInProgress(false)
|
, m0RTTInProgress(false)
|
||||||
|
, mTransportStatus(NS_OK)
|
||||||
{
|
{
|
||||||
LOG(("Creating nsHttpTransaction @%p\n", this));
|
LOG(("Creating nsHttpTransaction @%p\n", this));
|
||||||
gHttpHandler->GetMaxPipelineObjectSize(&mMaxPipelineObjectSize);
|
gHttpHandler->GetMaxPipelineObjectSize(&mMaxPipelineObjectSize);
|
||||||
|
|
@ -550,6 +551,50 @@ nsHttpTransaction::OnTransportStatus(nsITransport* transport,
|
||||||
LOG(("nsHttpTransaction::OnSocketStatus [this=%p status=%x progress=%lld]\n",
|
LOG(("nsHttpTransaction::OnSocketStatus [this=%p status=%x progress=%lld]\n",
|
||||||
this, status, progress));
|
this, status, progress));
|
||||||
|
|
||||||
|
// A transaction can given to multiple HalfOpen sockets (this is a bug in
|
||||||
|
// nsHttpConnectionMgr). We are going to fix it here as a work around to be
|
||||||
|
// able to uplift it.
|
||||||
|
switch(status) {
|
||||||
|
case NS_NET_STATUS_RESOLVING_HOST:
|
||||||
|
if (mTransportStatus != NS_OK) {
|
||||||
|
LOG(("nsHttpTransaction::OnSocketStatus - ignore socket events "
|
||||||
|
"from backup transport"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NS_NET_STATUS_RESOLVED_HOST:
|
||||||
|
if (mTransportStatus != NS_NET_STATUS_RESOLVING_HOST &&
|
||||||
|
mTransportStatus != NS_OK) {
|
||||||
|
LOG(("nsHttpTransaction::OnSocketStatus - ignore socket events "
|
||||||
|
"from backup transport"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NS_NET_STATUS_CONNECTING_TO:
|
||||||
|
if (mTransportStatus != NS_NET_STATUS_RESOLVING_HOST &&
|
||||||
|
mTransportStatus != NS_NET_STATUS_RESOLVED_HOST &&
|
||||||
|
mTransportStatus != NS_OK) {
|
||||||
|
LOG(("nsHttpTransaction::OnSocketStatus - ignore socket events "
|
||||||
|
"from backup transport"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NS_NET_STATUS_CONNECTED_TO:
|
||||||
|
if (mTransportStatus != NS_NET_STATUS_RESOLVING_HOST &&
|
||||||
|
mTransportStatus != NS_NET_STATUS_RESOLVED_HOST &&
|
||||||
|
mTransportStatus != NS_NET_STATUS_CONNECTING_TO &&
|
||||||
|
mTransportStatus != NS_OK) {
|
||||||
|
LOG(("nsHttpTransaction::OnSocketStatus - ignore socket events "
|
||||||
|
"from backup transport"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
LOG(("nsHttpTransaction::OnSocketStatus - a new event"));
|
||||||
|
}
|
||||||
|
|
||||||
|
mTransportStatus = status;
|
||||||
|
|
||||||
if (status == NS_NET_STATUS_CONNECTED_TO ||
|
if (status == NS_NET_STATUS_CONNECTED_TO ||
|
||||||
status == NS_NET_STATUS_WAITING_FOR) {
|
status == NS_NET_STATUS_WAITING_FOR) {
|
||||||
nsISocketTransport *socketTransport =
|
nsISocketTransport *socketTransport =
|
||||||
|
|
@ -1327,6 +1372,8 @@ nsHttpTransaction::Restart()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mTransportStatus = NS_OK;
|
||||||
|
|
||||||
return gHttpHandler->InitiateTransaction(this, mPriority);
|
return gHttpHandler->InitiateTransaction(this, mPriority);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -479,6 +479,8 @@ private:
|
||||||
NetAddr mPeerAddr;
|
NetAddr mPeerAddr;
|
||||||
|
|
||||||
bool m0RTTInProgress;
|
bool m0RTTInProgress;
|
||||||
|
|
||||||
|
nsresult mTransportStatus;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace net
|
} // namespace net
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue