mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 1053650 - Part 3: Make use of gonk-specific per-interface DNS lookup. r=mcmanus
--HG-- extra : rebase_source : a859ed97ede124c0d87dd72c6399be15c72c272d
This commit is contained in:
parent
90b7e51843
commit
d7d5a942ab
@ -28,8 +28,8 @@ native NetAddr(mozilla::net::NetAddr);
|
|||||||
* NOTE: This is a free-threaded interface, meaning that the methods on
|
* NOTE: This is a free-threaded interface, meaning that the methods on
|
||||||
* this interface may be called from any thread.
|
* this interface may be called from any thread.
|
||||||
*/
|
*/
|
||||||
[scriptable, uuid(a0b3b547-d6f0-4b65-a3de-a99ffa368840)]
|
[scriptable, uuid(79221831-85e2-43a8-8152-05d77d6fde31)]
|
||||||
interface nsISocketTransport : nsITransport
|
interface nsISocketTransport : nsITransport
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Get the peer's host for the underlying socket connection.
|
* Get the peer's host for the underlying socket connection.
|
||||||
@ -44,6 +44,13 @@ interface nsISocketTransport : nsITransport
|
|||||||
*/
|
*/
|
||||||
readonly attribute long port;
|
readonly attribute long port;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The platform-specific network interface id that this socket
|
||||||
|
* associated with. Note that this attribute can be only accessed
|
||||||
|
* in the socket thread.
|
||||||
|
*/
|
||||||
|
attribute ACString networkInterfaceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the IP address of the socket connection peer. This
|
* Returns the IP address of the socket connection peer. This
|
||||||
* attribute is defined only once a connection has been established.
|
* attribute is defined only once a connection has been established.
|
||||||
@ -207,6 +214,8 @@ interface nsISocketTransport : nsITransport
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* TCP keepalive configuration (support varies by platform).
|
* TCP keepalive configuration (support varies by platform).
|
||||||
|
* Note that the attribute as well as the setter can only accessed
|
||||||
|
* in the socket thread.
|
||||||
*/
|
*/
|
||||||
attribute boolean keepaliveEnabled;
|
attribute boolean keepaliveEnabled;
|
||||||
void setKeepaliveVals(in long keepaliveIdleTime,
|
void setKeepaliveVals(in long keepaliveIdleTime,
|
||||||
|
@ -1046,8 +1046,8 @@ nsSocketTransport::ResolveHost()
|
|||||||
"Setting both RESOLVE_DISABLE_IPV6 and RESOLVE_DISABLE_IPV4");
|
"Setting both RESOLVE_DISABLE_IPV6 and RESOLVE_DISABLE_IPV4");
|
||||||
|
|
||||||
SendStatus(NS_NET_STATUS_RESOLVING_HOST);
|
SendStatus(NS_NET_STATUS_RESOLVING_HOST);
|
||||||
rv = dns->AsyncResolve(SocketHost(), dnsFlags, this, nullptr,
|
rv = dns->AsyncResolveExtended(SocketHost(), dnsFlags, mNetworkInterfaceId, this,
|
||||||
getter_AddRefs(mDNSRequest));
|
nullptr, getter_AddRefs(mDNSRequest));
|
||||||
if (NS_SUCCEEDED(rv)) {
|
if (NS_SUCCEEDED(rv)) {
|
||||||
SOCKET_LOG((" advancing to STATE_RESOLVING\n"));
|
SOCKET_LOG((" advancing to STATE_RESOLVING\n"));
|
||||||
mState = STATE_RESOLVING;
|
mState = STATE_RESOLVING;
|
||||||
@ -2195,6 +2195,22 @@ nsSocketTransport::GetPort(int32_t *port)
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsSocketTransport::GetNetworkInterfaceId(nsACString_internal &aNetworkInterfaceId)
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread, "wrong thread");
|
||||||
|
aNetworkInterfaceId = mNetworkInterfaceId;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsSocketTransport::SetNetworkInterfaceId(const nsACString_internal &aNetworkInterfaceId)
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread, "wrong thread");
|
||||||
|
mNetworkInterfaceId = aNetworkInterfaceId;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsSocketTransport::GetPeerAddr(NetAddr *addr)
|
nsSocketTransport::GetPeerAddr(NetAddr *addr)
|
||||||
{
|
{
|
||||||
|
@ -296,6 +296,10 @@ private:
|
|||||||
bool mInputClosed;
|
bool mInputClosed;
|
||||||
bool mOutputClosed;
|
bool mOutputClosed;
|
||||||
|
|
||||||
|
// The platform-specific network interface id that this socket
|
||||||
|
// associated with.
|
||||||
|
nsCString mNetworkInterfaceId;
|
||||||
|
|
||||||
// this flag is used to determine if the results of a host lookup arrive
|
// this flag is used to determine if the results of a host lookup arrive
|
||||||
// recursively or not. this flag is not protected by any lock.
|
// recursively or not. this flag is not protected by any lock.
|
||||||
bool mResolving;
|
bool mResolving;
|
||||||
|
@ -1606,6 +1606,18 @@ SocketTransportShim::GetTimeout(uint32_t aType, uint32_t *_retval)
|
|||||||
return mWrapped->GetTimeout(aType, _retval);
|
return mWrapped->GetTimeout(aType, _retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
SocketTransportShim::GetNetworkInterfaceId(nsACString_internal &aNetworkInterfaceId)
|
||||||
|
{
|
||||||
|
return mWrapped->GetNetworkInterfaceId(aNetworkInterfaceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
SocketTransportShim::SetNetworkInterfaceId(const nsACString_internal &aNetworkInterfaceId)
|
||||||
|
{
|
||||||
|
return mWrapped->SetNetworkInterfaceId(aNetworkInterfaceId);
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
SocketTransportShim::SetTimeout(uint32_t aType, uint32_t aValue)
|
SocketTransportShim::SetTimeout(uint32_t aType, uint32_t aValue)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user