nsHttpConnectionInfo* nsHttpConnectionInfo::Clone() const { nsHttpConnectionInfo *clone; if (mRoutedHost.IsEmpty()) { clone = new nsHttpConnectionInfo(mOrigin, mOriginPort, mNPNToken, mUsername, mProxyInfo, mOriginAttributes, mEndToEndSSL); } else { MOZ_ASSERT(mEndToEndSSL); clone = new nsHttpConnectionInfo(mOrigin, mOriginPort, mNPNToken, mUsername, mProxyInfo, mOriginAttributes, mRoutedHost, mRoutedPort); } if (!mNetworkInterfaceId.IsEmpty()) { clone->SetNetworkInterfaceId(mNetworkInterfaceId); } // Make sure the anonymous, insecure-scheme, and private flags are transferred clone->SetAnonymous(GetAnonymous()); clone->SetPrivate(GetPrivate()); clone->SetInsecureScheme(GetInsecureScheme()); clone->SetNoSpdy(GetNoSpdy()); MOZ_ASSERT(clone->Equals(this)); return clone; }
void nsHttpConnectionInfo::CloneAsDirectRoute(nsHttpConnectionInfo **outCI) { if (mRoutedHost.IsEmpty()) { *outCI = Clone(); return; } RefPtr<nsHttpConnectionInfo> clone = new nsHttpConnectionInfo(mOrigin, mOriginPort, EmptyCString(), mUsername, mProxyInfo, mEndToEndSSL); // Make sure the anonymous, insecure-scheme, and private flags are transferred clone->SetAnonymous(GetAnonymous()); clone->SetPrivate(GetPrivate()); clone->SetInsecureScheme(GetInsecureScheme()); clone->SetNoSpdy(GetNoSpdy()); if (!mNetworkInterfaceId.IsEmpty()) { clone->SetNetworkInterfaceId(mNetworkInterfaceId); } clone.forget(outCI); }