[webkit-changes] [WebKit/WebKit] a917e0: Add a mechanism to remember the last IP address of...

Wenson Hsieh noreply at github.com
Fri Oct 14 09:41:35 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a917e03c36b8b0f2f016449b9b9e0318fbb3eb38
      https://github.com/WebKit/WebKit/commit/a917e03c36b8b0f2f016449b9b9e0318fbb3eb38
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2022-10-14 (Fri, 14 Oct 2022)

  Changed paths:
    M Source/WTF/wtf/PlatformHave.h
    M Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
    M Source/WebCore/platform/network/DNS.cpp
    M Source/WebCore/platform/network/DNS.h
    M Source/WebKit/NetworkProcess/NetworkDataTask.cpp
    M Source/WebKit/NetworkProcess/NetworkDataTask.h
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm

  Log Message:
  -----------
  Add a mechanism to remember the last IP address of the response for the main resource request
https://bugs.webkit.org/show_bug.cgi?id=246128
rdar://100831206

Reviewed by John Wilander.

Add a mechanism to keep track of the last IP address, corresponding to the main resource request's
response; this information is stashed in a side table on the network session, alongside the existing
map of first party host to CNAME.

* Source/WTF/wtf/PlatformHave.h:

Remove this feature flag, since the oldest macOS version we currently support (Big Sur) contains
this SPI.

* Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:
* Source/WebCore/platform/network/DNS.cpp:
(WebCore::IPAddress::fromString):

Add a helper method to create an `IPAddress` from an IP address string (IPv4 or IPv6).

* Source/WebCore/platform/network/DNS.h:
(WebCore::IPAddress::IPAddress):

Add another explicit constructor that takes `WTF::HashTableEmptyValueType`, so that we can store
`IPAddress` as a value in a `HashMap`; see below.

(WTF::HashTraits<WebCore::IPAddress>::emptyValue):

Additionally add a `HashTraits` template class for `IPAddress`, which allows us to store
`WebCore::IPAddress` as a hash table value by implementing `emptyValue()`.

* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::networkSession const):
* Source/WebKit/NetworkProcess/NetworkDataTask.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::resetParametersToDefaultValues):
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::setFirstPartyHostCNAMEDomain):
(WebKit::NetworkSession::firstPartyHostCNAMEDomain):
(WebKit::NetworkSession::resetFirstPartyDNSData):
(WebKit::NetworkSession::setFirstPartyHostIPAddress):
(WebKit::NetworkSession::firstPartyHostIPAddress):
(WebKit::NetworkSession::resetCNAMEDomainData): Deleted.

Rename `resetCNAMEDomainData` to `resetFirstPartyDNSData`, since we now use it to clear both first
party CNAME information as well as first party IP address information.

* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::lastRemoteIPAddress):

Add a helper function to grab the last resolved IP address of the network data task; this is
intended to be used after we get a response.

(WebKit::NetworkDataTaskCocoa::shouldApplyCookiePolicyForThirdPartyCNAMECloaking const):
(WebKit::NetworkDataTaskCocoa::updateFirstPartyInfoForSession):

Update the first party IP address, alongside the first party CNAME for the main resource.

(WebKit::NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::didReceiveResponse):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
(WebKit::hasCNAMEAndCookieTransformSPI): Deleted.

Remove this helper function, since we no longer need `-respondsToSelector` checks for
`_resolvedCNAMEChain` and `_cookieTransformCallback`.

Canonical link: https://commits.webkit.org/255537@main




More information about the webkit-changes mailing list