mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 23:38:38 +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)
|
||||
, mClassOfService(0)
|
||||
, m0RTTInProgress(false)
|
||||
, mTransportStatus(NS_OK)
|
||||
{
|
||||
LOG(("Creating nsHttpTransaction @%p\n", this));
|
||||
gHttpHandler->GetMaxPipelineObjectSize(&mMaxPipelineObjectSize);
|
||||
|
|
@ -550,6 +551,50 @@ nsHttpTransaction::OnTransportStatus(nsITransport* transport,
|
|||
LOG(("nsHttpTransaction::OnSocketStatus [this=%p status=%x progress=%lld]\n",
|
||||
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 ||
|
||||
status == NS_NET_STATUS_WAITING_FOR) {
|
||||
nsISocketTransport *socketTransport =
|
||||
|
|
@ -1327,6 +1372,8 @@ nsHttpTransaction::Restart()
|
|||
}
|
||||
}
|
||||
|
||||
mTransportStatus = NS_OK;
|
||||
|
||||
return gHttpHandler->InitiateTransaction(this, mPriority);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue