summaryrefslogtreecommitdiffstats
path: root/netwerk
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk')
-rw-r--r--netwerk/base/Tickler.h4
-rw-r--r--netwerk/base/nsIOService.cpp8
-rw-r--r--netwerk/base/nsNetUtil.cpp2
-rw-r--r--netwerk/base/nsSocketTransport2.cpp7
-rw-r--r--netwerk/base/nsSocketTransportService2.cpp15
-rw-r--r--netwerk/base/security-prefs.js21
-rw-r--r--netwerk/build/moz.build5
-rw-r--r--netwerk/build/nsNetModule.cpp9
-rw-r--r--netwerk/cache/nsCacheService.cpp15
-rw-r--r--netwerk/cache/nsDeleteDir.cpp30
-rw-r--r--netwerk/cache2/CacheFileIOManager.cpp70
-rw-r--r--netwerk/cache2/CacheFileIOManager.h10
-rw-r--r--netwerk/cache2/CacheStorageService.cpp13
-rw-r--r--netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm244
-rw-r--r--netwerk/dns/mdns/libmdns/moz.build5
-rw-r--r--netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.js10
-rw-r--r--netwerk/protocol/device/AndroidCaptureProvider.cpp301
-rw-r--r--netwerk/protocol/device/AndroidCaptureProvider.h68
-rw-r--r--netwerk/protocol/device/CameraStreamImpl.cpp114
-rw-r--r--netwerk/protocol/device/CameraStreamImpl.h71
-rw-r--r--netwerk/protocol/device/moz.build9
-rw-r--r--netwerk/protocol/device/nsDeviceChannel.cpp13
-rw-r--r--netwerk/protocol/http/UserAgentOverrides.jsm48
-rw-r--r--netwerk/protocol/http/UserAgentUpdates.jsm41
-rw-r--r--netwerk/protocol/http/moz.build7
-rw-r--r--netwerk/protocol/http/nsHttpChannel.cpp13
-rw-r--r--netwerk/protocol/http/nsHttpHandler.cpp203
-rw-r--r--netwerk/protocol/http/nsHttpHandler.h2
-rw-r--r--netwerk/sctp/datachannel/moz.build4
-rw-r--r--netwerk/sctp/src/ifaddrs-android-ext.h62
-rw-r--r--netwerk/sctp/src/ifaddrs_android.cpp189
-rw-r--r--netwerk/sctp/src/moz.build14
-rwxr-xr-xnetwerk/sctp/src/netinet/sctp.h7
-rwxr-xr-xnetwerk/sctp/src/netinet/sctp_auth.c5
-rwxr-xr-xnetwerk/sctp/src/netinet/sctp_bsd_addr.c6
-rwxr-xr-xnetwerk/sctp/src/netinet/sctp_os_userspace.h2
-rwxr-xr-xnetwerk/sctp/src/netinet/sctp_pcb.c7
-rwxr-xr-xnetwerk/sctp/src/netinet/sctp_usrreq.c14
-rw-r--r--netwerk/system/android/moz.build14
-rw-r--r--netwerk/system/android/nsAndroidNetworkLinkService.cpp63
-rw-r--r--netwerk/system/android/nsAndroidNetworkLinkService.h24
-rw-r--r--netwerk/system/moz.build7
42 files changed, 170 insertions, 1606 deletions
diff --git a/netwerk/base/Tickler.h b/netwerk/base/Tickler.h
index 63353a924..e38f0d99c 100644
--- a/netwerk/base/Tickler.h
+++ b/netwerk/base/Tickler.h
@@ -27,10 +27,6 @@
// The tickler only applies to wifi on mobile right now. Hopefully it
// can also be restricted to particular handset models in the future.
-#if defined(ANDROID)
-#define MOZ_USE_WIFI_TICKLER
-#endif
-
#include "mozilla/Attributes.h"
#include "nsISupports.h"
#include <stdint.h>
diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
index bd9a4a96f..314f2aeff 100644
--- a/netwerk/base/nsIOService.cpp
+++ b/netwerk/base/nsIOService.cpp
@@ -79,6 +79,7 @@ namespace net {
nsIOService* gIOService = nullptr;
static bool gHasWarnedUploadChannel2;
+static bool gCaptivePortalEnabled = false;
static LazyLogModule gIOServiceLog("nsIOService");
#undef LOG
#define LOG(args) MOZ_LOG(gIOServiceLog, LogLevel::Debug, args)
@@ -1142,7 +1143,7 @@ nsIOService::SetConnectivityInternal(bool aConnectivity)
mConnectivity = aConnectivity;
if (mCaptivePortalService) {
- if (aConnectivity && !xpc::AreNonLocalConnectionsDisabled()) {
+ if (aConnectivity && !xpc::AreNonLocalConnectionsDisabled() && gCaptivePortalEnabled) {
// This will also trigger a captive portal check for the new network
static_cast<CaptivePortalService*>(mCaptivePortalService.get())->Start();
} else {
@@ -1285,10 +1286,9 @@ nsIOService::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
}
if (!pref || strcmp(pref, NETWORK_CAPTIVE_PORTAL_PREF) == 0) {
- bool captivePortalEnabled;
- nsresult rv = prefs->GetBoolPref(NETWORK_CAPTIVE_PORTAL_PREF, &captivePortalEnabled);
+ nsresult rv = prefs->GetBoolPref(NETWORK_CAPTIVE_PORTAL_PREF, &gCaptivePortalEnabled);
if (NS_SUCCEEDED(rv) && mCaptivePortalService) {
- if (captivePortalEnabled && !xpc::AreNonLocalConnectionsDisabled()) {
+ if (gCaptivePortalEnabled && !xpc::AreNonLocalConnectionsDisabled()) {
static_cast<CaptivePortalService*>(mCaptivePortalService.get())->Start();
} else {
static_cast<CaptivePortalService*>(mCaptivePortalService.get())->Stop();
diff --git a/netwerk/base/nsNetUtil.cpp b/netwerk/base/nsNetUtil.cpp
index 2974e26b0..ce0e2d4ef 100644
--- a/netwerk/base/nsNetUtil.cpp
+++ b/netwerk/base/nsNetUtil.cpp
@@ -1814,9 +1814,7 @@ NS_RelaxStrictFileOriginPolicy(nsIURI *aTargetURI,
NS_FAILED(sourceFileURL->GetFile(getter_AddRefs(sourceFile))) ||
!targetFile || !sourceFile ||
NS_FAILED(targetFile->Normalize()) ||
-#ifndef MOZ_WIDGET_ANDROID
NS_FAILED(sourceFile->Normalize()) ||
-#endif
(!aAllowDirectoryTarget &&
(NS_FAILED(targetFile->IsDirectory(&targetIsDir)) || targetIsDir))) {
return false;
diff --git a/netwerk/base/nsSocketTransport2.cpp b/netwerk/base/nsSocketTransport2.cpp
index 0c8434813..76a357aa3 100644
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -3048,9 +3048,8 @@ nsSocketTransport::PRFileDescAutoLock::SetKeepaliveVals(bool aEnabled,
#elif defined(XP_UNIX)
// Not all *nix OSes support the following setsockopt() options
- // ... but we assume they are supported in the Android kernel;
// build errors will tell us if they are not.
-#if defined(ANDROID) || defined(TCP_KEEPIDLE)
+#ifdef TCP_KEEPIDLE
// Idle time until first keepalive probe; interval between ack'd probes; seconds.
int err = setsockopt(sock, IPPROTO_TCP, TCP_KEEPIDLE,
&aIdleTime, sizeof(aIdleTime));
@@ -3061,7 +3060,7 @@ nsSocketTransport::PRFileDescAutoLock::SetKeepaliveVals(bool aEnabled,
}
#endif
-#if defined(ANDROID) || defined(TCP_KEEPINTVL)
+#ifdef TCP_KEEPINTVL
// Interval between unack'd keepalive probes; seconds.
err = setsockopt(sock, IPPROTO_TCP, TCP_KEEPINTVL,
&aRetryInterval, sizeof(aRetryInterval));
@@ -3072,7 +3071,7 @@ nsSocketTransport::PRFileDescAutoLock::SetKeepaliveVals(bool aEnabled,
}
#endif
-#if defined(ANDROID) || defined(TCP_KEEPCNT)
+#ifdef TCP_KEEPCNT
// Number of unack'd keepalive probes before connection times out.
err = setsockopt(sock, IPPROTO_TCP, TCP_KEEPCNT,
&aProbeCount, sizeof(aProbeCount));
diff --git a/netwerk/base/nsSocketTransportService2.cpp b/netwerk/base/nsSocketTransportService2.cpp
index af5742564..4a8d80eed 100644
--- a/netwerk/base/nsSocketTransportService2.cpp
+++ b/netwerk/base/nsSocketTransportService2.cpp
@@ -25,7 +25,6 @@
#include "nsThreadUtils.h"
#include "nsIFile.h"
#include "nsIWidget.h"
-#include "mozilla/dom/FlyWebService.h"
namespace mozilla {
namespace net {
@@ -681,20 +680,6 @@ nsSocketTransportService::CreateRoutedTransport(const char **types,
nsIProxyInfo *proxyInfo,
nsISocketTransport **result)
{
- // Check FlyWeb table for host mappings. If one exists, then use that.
- RefPtr<mozilla::dom::FlyWebService> fws =
- mozilla::dom::FlyWebService::GetExisting();
- if (fws) {
- nsresult rv = fws->CreateTransportForHost(types, typeCount, host, port,
- hostRoute, portRoute,
- proxyInfo, result);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (*result) {
- return NS_OK;
- }
- }
-
NS_ENSURE_TRUE(mInitialized, NS_ERROR_NOT_INITIALIZED);
NS_ENSURE_TRUE(port >= 0 && port <= 0xFFFF, NS_ERROR_ILLEGAL_VALUE);
diff --git a/netwerk/base/security-prefs.js b/netwerk/base/security-prefs.js
index 702315d43..973c73123 100644
--- a/netwerk/base/security-prefs.js
+++ b/netwerk/base/security-prefs.js
@@ -120,27 +120,6 @@ pref("security.webauth.u2f_enable_usbtoken", false);
// OCSP must-staple
pref("security.ssl.enable_ocsp_must_staple", true);
-// HPKP settings
-
-// Enable pinning checks by default.
-pref("security.cert_pinning.enforcement_level", 2);
-// Do not process hpkp headers rooted by not built in roots by default.
-// This is to prevent accidental pinning from MITM devices and is used
-// for tests.
-pref("security.cert_pinning.process_headers_from_non_builtin_roots", false);
-// Impose a maximum age on HPKP headers, to avoid sites getting permanently
-// blacking themselves out by setting a bad pin. (60 days by default)
-// https://tools.ietf.org/html/rfc7469#section-4.1
-pref("security.cert_pinning.max_max_age_seconds", 5184000);
-// Controls whether or not HPKP (the HTTP Public Key Pinning header) is enabled.
-// If true, the header is processed and collected HPKP information is consulted
-// when looking for pinning information.
-// If false, the header is not processed and collected HPKP information is not
-// consulted when looking for pinning information. Preloaded pins are not
-// affected by this preference.
-// Default: false
-pref("security.cert_pinning.hpkp.enabled", false);
-
// If a request is mixed-content, send an HSTS priming request to attempt to
// see if it is available over HTTPS.
pref("security.mixed_content.send_hsts_priming", true);
diff --git a/netwerk/build/moz.build b/netwerk/build/moz.build
index 6cb47f99e..db2c4cada 100644
--- a/netwerk/build/moz.build
+++ b/netwerk/build/moz.build
@@ -42,11 +42,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
'/netwerk/system/mac',
]
-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
- LOCAL_INCLUDES += [
- '/netwerk/system/android',
- ]
-
elif CONFIG['OS_ARCH'] == 'Linux':
LOCAL_INCLUDES += [
'/netwerk/system/linux',
diff --git a/netwerk/build/nsNetModule.cpp b/netwerk/build/nsNetModule.cpp
index d244a14f1..88bdff548 100644
--- a/netwerk/build/nsNetModule.cpp
+++ b/netwerk/build/nsNetModule.cpp
@@ -418,9 +418,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNotifyAddrListener, Init)
#elif defined(MOZ_WIDGET_COCOA)
#include "nsNetworkLinkService.h"
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNetworkLinkService, Init)
-#elif defined(MOZ_WIDGET_ANDROID)
-#include "nsAndroidNetworkLinkService.h"
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsAndroidNetworkLinkService)
#elif defined(XP_LINUX)
#include "nsNotifyAddrListener_Linux.h"
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNotifyAddrListener, Init)
@@ -852,8 +849,6 @@ NS_DEFINE_NAMED_CID(NS_RTSPPROTOCOLHANDLER_CID);
NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
#elif defined(MOZ_WIDGET_COCOA)
NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
-#elif defined(MOZ_WIDGET_ANDROID)
-NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
#elif defined(XP_LINUX)
NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
#endif
@@ -1003,8 +998,6 @@ static const mozilla::Module::CIDEntry kNeckoCIDs[] = {
{ &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNotifyAddrListenerConstructor },
#elif defined(MOZ_WIDGET_COCOA)
{ &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNetworkLinkServiceConstructor },
-#elif defined(MOZ_WIDGET_ANDROID)
- { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsAndroidNetworkLinkServiceConstructor },
#elif defined(XP_LINUX)
{ &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNotifyAddrListenerConstructor },
#endif
@@ -1158,8 +1151,6 @@ static const mozilla::Module::ContractIDEntry kNeckoContracts[] = {
{ NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
#elif defined(MOZ_WIDGET_COCOA)
{ NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
-#elif defined(MOZ_WIDGET_ANDROID)
- { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
#elif defined(XP_LINUX)
{ NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
#endif
diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp
index 4b08614b8..b2d488ea6 100644
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
@@ -107,13 +107,9 @@ static const char * prefList[] = {
// Cache sizes, in KB
const int32_t DEFAULT_CACHE_SIZE = 250 * 1024; // 250 MB
-#ifdef ANDROID
-const int32_t MAX_CACHE_SIZE = 200 * 1024; // 200 MB
-const int32_t OLD_MAX_CACHE_SIZE = 200 * 1024; // 200 MB
-#else
const int32_t MAX_CACHE_SIZE = 350 * 1024; // 350 MB
const int32_t OLD_MAX_CACHE_SIZE = 1024 * 1024; // 1 GB
-#endif
+
// Default cache size was 50 MB for many years until FF 4:
const int32_t PRE_GECKO_2_0_DEFAULT_CACHE_SIZE = 50 * 1024;
@@ -593,17 +589,8 @@ SmartCacheSize(const uint32_t availKB, bool shouldUseOldMaxSmartSize)
avail10MBs = 50;
}
-#ifdef ANDROID
- // On Android, smaller/older devices may have very little storage and
- // device owners may be sensitive to storage footprint: Use a smaller
- // percentage of available space and a smaller minimum.
-
- // 20% of space up to 500 MB (10 MB min)
- sz10MBs += std::max<uint32_t>(1, static_cast<uint32_t>(avail10MBs * .2));
-#else
// 40% of space up to 500 MB (50 MB min)
sz10MBs += std::max<uint32_t>(5, static_cast<uint32_t>(avail10MBs * .4));
-#endif
return std::min<uint32_t>(maxSize, sz10MBs * 10 * 1024);
}
diff --git a/netwerk/cache/nsDeleteDir.cpp b/netwerk/cache/nsDeleteDir.cpp
index 8c4edf812..b081a12eb 100644
--- a/netwerk/cache/nsDeleteDir.cpp
+++ b/netwerk/cache/nsDeleteDir.cpp
@@ -235,18 +235,11 @@ nsDeleteDir::DeleteDir(nsIFile *dirIn, bool moveToTrash, uint32_t delay)
if (!leaf.Length())
return NS_ERROR_FAILURE;
-#if defined(MOZ_WIDGET_ANDROID)
- nsCOMPtr<nsIFile> parent;
- rv = trash->GetParent(getter_AddRefs(parent));
- if (NS_FAILED(rv))
- return rv;
- rv = dir->MoveToNative(parent, leaf);
-#else
// Important: must rename directory w/o changing parent directory: else on
// NTFS we'll wait (with cache lock) while nsIFile's ACL reset walks file
// tree: was hanging GUI for *minutes* on large cache dirs.
rv = dir->MoveToNative(nullptr, leaf);
-#endif
+
if (NS_FAILED(rv))
return rv;
} else {
@@ -269,21 +262,6 @@ nsresult
nsDeleteDir::GetTrashDir(nsIFile *target, nsCOMPtr<nsIFile> *result)
{
nsresult rv;
-#if defined(MOZ_WIDGET_ANDROID)
- // Try to use the app cache folder for cache trash on Android
- char* cachePath = getenv("CACHE_DIRECTORY");
- if (cachePath) {
- rv = NS_NewNativeLocalFile(nsDependentCString(cachePath),
- true, getter_AddRefs(*result));
- if (NS_FAILED(rv))
- return rv;
-
- // Add a sub folder with the cache folder name
- nsAutoCString leaf;
- rv = target->GetNativeLeafName(leaf);
- (*result)->AppendNative(leaf);
- } else
-#endif
{
rv = target->Clone(getter_AddRefs(*result));
}
@@ -318,11 +296,9 @@ nsDeleteDir::RemoveOldTrashes(nsIFile *cacheDir)
return rv;
nsCOMPtr<nsIFile> parent;
-#if defined(MOZ_WIDGET_ANDROID)
- rv = trash->GetParent(getter_AddRefs(parent));
-#else
+
rv = cacheDir->GetParent(getter_AddRefs(parent));
-#endif
+
if (NS_FAILED(rv))
return rv;
diff --git a/netwerk/cache2/CacheFileIOManager.cpp b/netwerk/cache2/CacheFileIOManager.cpp
index 25e621d12..845ad7314 100644
--- a/netwerk/cache2/CacheFileIOManager.cpp
+++ b/netwerk/cache2/CacheFileIOManager.cpp
@@ -49,11 +49,7 @@ namespace net {
#define kRemoveTrashStartDelay 60000 // in milliseconds
#define kSmartSizeUpdateInterval 60000 // in milliseconds
-#ifdef ANDROID
-const uint32_t kMaxCacheSizeKB = 200*1024; // 200 MB
-#else
const uint32_t kMaxCacheSizeKB = 350*1024; // 350 MB
-#endif
bool
CacheFileHandle::DispatchRelease()
@@ -1280,37 +1276,6 @@ CacheFileIOManager::OnProfile()
CacheObserver::ParentDirOverride(getter_AddRefs(directory));
-#if defined(MOZ_WIDGET_ANDROID)
- nsCOMPtr<nsIFile> profilelessDirectory;
- char* cachePath = getenv("CACHE_DIRECTORY");
- if (!directory && cachePath && *cachePath) {
- rv = NS_NewNativeLocalFile(nsDependentCString(cachePath),
- true, getter_AddRefs(directory));
- if (NS_SUCCEEDED(rv)) {
- // Save this directory as the profileless path.
- rv = directory->Clone(getter_AddRefs(profilelessDirectory));
- NS_ENSURE_SUCCESS(rv, rv);
-
- // Add profile leaf name to the directory name to distinguish
- // multiple profiles Fennec supports.
- nsCOMPtr<nsIFile> profD;
- rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR,
- getter_AddRefs(profD));
-
- nsAutoCString leafName;
- if (NS_SUCCEEDED(rv)) {
- rv = profD->GetNativeLeafName(leafName);
- }
- if (NS_SUCCEEDED(rv)) {
- rv = directory->AppendNative(leafName);
- }
- if (NS_FAILED(rv)) {
- directory = nullptr;
- }
- }
- }
-#endif
-
if (!directory) {
rv = NS_GetSpecialDirectory(NS_APP_CACHE_PARENT_DIR,
getter_AddRefs(directory));
@@ -1329,15 +1294,6 @@ CacheFileIOManager::OnProfile()
// All functions return a clone.
ioMan->mCacheDirectory.swap(directory);
-#if defined(MOZ_WIDGET_ANDROID)
- if (profilelessDirectory) {
- rv = profilelessDirectory->Append(NS_LITERAL_STRING("cache2"));
- NS_ENSURE_SUCCESS(rv, rv);
- }
-
- ioMan->mCacheProfilelessDirectory.swap(profilelessDirectory);
-#endif
-
if (ioMan->mCacheDirectory) {
CacheIndex::Init(ioMan->mCacheDirectory);
}
@@ -2391,23 +2347,6 @@ void CacheFileIOManager::GetCacheDirectory(nsIFile** result)
ioMan->mCacheDirectory->Clone(result);
}
-#if defined(MOZ_WIDGET_ANDROID)
-
-// static
-void CacheFileIOManager::GetProfilelessCacheDirectory(nsIFile** result)
-{
- *result = nullptr;
-
- RefPtr<CacheFileIOManager> ioMan = gInstance;
- if (!ioMan || !ioMan->mCacheProfilelessDirectory) {
- return;
- }
-
- ioMan->mCacheProfilelessDirectory->Clone(result);
-}
-
-#endif
-
// static
nsresult
CacheFileIOManager::GetEntryInfo(const SHA1Sum::Hash *aHash,
@@ -4019,17 +3958,8 @@ SmartCacheSize(const uint32_t availKB)
avail10MBs = 50;
}
-#ifdef ANDROID
- // On Android, smaller/older devices may have very little storage and
- // device owners may be sensitive to storage footprint: Use a smaller
- // percentage of available space and a smaller minimum.
-
- // 20% of space up to 500 MB (10 MB min)
- sz10MBs += std::max<uint32_t>(1, static_cast<uint32_t>(avail10MBs * .2));
-#else
// 40% of space up to 500 MB (50 MB min)
sz10MBs += std::max<uint32_t>(5, static_cast<uint32_t>(avail10MBs * .4));
-#endif
return std::min<uint32_t>(maxSize, sz10MBs * 10 * 1024);
}
diff --git a/netwerk/cache2/CacheFileIOManager.h b/netwerk/cache2/CacheFileIOManager.h
index 5ac812da5..8a51b5a0e 100644
--- a/netwerk/cache2/CacheFileIOManager.h
+++ b/netwerk/cache2/CacheFileIOManager.h
@@ -346,9 +346,6 @@ public:
};
static void GetCacheDirectory(nsIFile** result);
-#if defined(MOZ_WIDGET_ANDROID)
- static void GetProfilelessCacheDirectory(nsIFile** result);
-#endif
// Calls synchronously OnEntryInfo for an entry with the given hash.
// Tries to find an existing entry in the service hashtables first, if not
@@ -459,13 +456,6 @@ private:
bool mShuttingDown;
RefPtr<CacheIOThread> mIOThread;
nsCOMPtr<nsIFile> mCacheDirectory;
-#if defined(MOZ_WIDGET_ANDROID)
- // On Android we add the active profile directory name between the path
- // and the 'cache2' leaf name. However, to delete any leftover data from
- // times before we were doing it, we still need to access the directory
- // w/o the profile name in the path. Here it is stored.
- nsCOMPtr<nsIFile> mCacheProfilelessDirectory;
-#endif
bool mTreeCreated;
bool mTreeCreationFailed;
CacheFileHandles mHandles;
diff --git a/netwerk/cache2/CacheStorageService.cpp b/netwerk/cache2/CacheStorageService.cpp
index 3ee1e15cd..a27b082c4 100644
--- a/netwerk/cache2/CacheStorageService.cpp
+++ b/netwerk/cache2/CacheStorageService.cpp
@@ -569,17 +569,11 @@ private:
{
nsCacheService::GetDiskCacheDirectory(getter_AddRefs(mCache1Dir));
CacheFileIOManager::GetCacheDirectory(getter_AddRefs(mCache2Dir));
-#if defined(MOZ_WIDGET_ANDROID)
- CacheFileIOManager::GetProfilelessCacheDirectory(getter_AddRefs(mCache2Profileless));
-#endif
}
virtual ~CleaupCacheDirectoriesRunnable() {}
uint32_t mVersion, mActive;
nsCOMPtr<nsIFile> mCache1Dir, mCache2Dir;
-#if defined(MOZ_WIDGET_ANDROID)
- nsCOMPtr<nsIFile> mCache2Profileless;
-#endif
};
// static
@@ -613,13 +607,6 @@ NS_IMETHODIMP CleaupCacheDirectoriesRunnable::Run()
if (mCache2Dir) {
nsDeleteDir::RemoveOldTrashes(mCache2Dir);
}
-#if defined(MOZ_WIDGET_ANDROID)
- if (mCache2Profileless) {
- nsDeleteDir::RemoveOldTrashes(mCache2Profileless);
- // Always delete the profileless cache on Android
- nsDeleteDir::DeleteDir(mCache2Profileless, true, 30000);
- }
-#endif
// Delete the non-active version cache data right now
if (mVersion == mActive) {
diff --git a/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm b/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm
deleted file mode 100644
index 771f9a794..000000000
--- a/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm
+++ /dev/null
@@ -1,244 +0,0 @@
-// -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-this.EXPORTED_SYMBOLS = ["MulticastDNS"];
-
-const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
-
-Cu.import("resource://gre/modules/Messaging.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-var log = Cu.import("resource://gre/modules/AndroidLog.jsm", {}).AndroidLog.d.bind(null, "MulticastDNS");
-
-const FAILURE_INTERNAL_ERROR = -65537;
-
-// Helper function for sending commands to Java.
-function send(type, data, callback) {
- let msg = {
- type: type
- };
-
- for (let i in data) {
- try {
- msg[i] = data[i];
- } catch (e) {
- }
- }
-
- Messaging.sendRequestForResult(msg)
- .then(result => callback(result, null),
- err => callback(null, typeof err === "number" ? err : FAILURE_INTERNAL_ERROR));
-}
-
-// Receives service found/lost event from NsdManager
-function ServiceManager() {
-}
-
-ServiceManager.prototype = {
- listeners: {},
- numListeners: 0,
-
- registerEvent: function() {
- log("registerEvent");
- Messaging.addListener(this.onServiceFound.bind(this), "NsdManager:ServiceFound");
- Messaging.addListener(this.onServiceLost.bind(this), "NsdManager:ServiceLost");
- },
-
- unregisterEvent: function() {
- log("unregisterEvent");
- Messaging.removeListener("NsdManager:ServiceFound");
- Messaging.removeListener("NsdManager:ServiceLost");
- },
-
- addListener: function(aServiceType, aListener) {
- log("addListener: " + aServiceType + ", " + aListener);
-
- if (!this.listeners[aServiceType]) {
- this.listeners[aServiceType] = [];
- }
- if (this.listeners[aServiceType].includes(aListener)) {
- log("listener already exists");
- return;
- }
-
- this.listeners[aServiceType].push(aListener);
- ++this.numListeners;
-
- if (this.numListeners === 1) {
- this.registerEvent();
- }
-
- log("listener added: " + this);
- },
-
- removeListener: function(aServiceType, aListener) {
- log("removeListener: " + aServiceType + ", " + aListener);
-
- if (!this.listeners[aServiceType]) {
- log("listener doesn't exist");
- return;
- }
- let index = this.listeners[aServiceType].indexOf(aListener);
- if (index < 0) {
- log("listener doesn't exist");
- return;
- }
-
- this.listeners[aServiceType].splice(index, 1);
- --this.numListeners;
-
- if (this.numListeners === 0) {
- this.unregisterEvent();
- }
-
- log("listener removed" + this);
- },
-
- onServiceFound: function(aServiceInfo) {
- let listeners = this.listeners[aServiceInfo.serviceType];
- if (listeners) {
- for (let listener of listeners) {
- listener.onServiceFound(aServiceInfo);
- }
- } else {
- log("no listener");
- }
- return {};
- },
-
- onServiceLost: function(aServiceInfo) {
- let listeners = this.listeners[aServiceInfo.serviceType];
- if (listeners) {
- for (let listener of listeners) {
- listener.onServiceLost(aServiceInfo);
- }
- } else {
- log("no listener");
- }
- return {};
- }
-};
-
-// make an object from nsIPropertyBag2
-function parsePropertyBag2(bag) {
- if (!bag || !(bag instanceof Ci.nsIPropertyBag2)) {
- throw new TypeError("Not a property bag");
- }
-
- let attributes = [];
- let enumerator = bag.enumerator;
- while (enumerator.hasMoreElements()) {
- let name = enumerator.getNext().QueryInterface(Ci.nsIProperty).name;
- let value = bag.getPropertyAsACString(name);
- attributes.push({
- "name": name,
- "value": value
- });
- }
-
- return attributes;
-}
-
-function MulticastDNS() {
- this.serviceManager = new ServiceManager();
-}
-
-MulticastDNS.prototype = {
- startDiscovery: function(aServiceType, aListener) {
- this.serviceManager.addListener(aServiceType, aListener);
-
- let serviceInfo = {
- serviceType: aServiceType,
- uniqueId: aListener.uuid
- };
-
- send("NsdManager:DiscoverServices", serviceInfo, (result, err) => {
- if (err) {
- log("onStartDiscoveryFailed: " + aServiceType + " (" + err + ")");
- this.serviceManager.removeListener(aServiceType, aListener);
- aListener.onStartDiscoveryFailed(aServiceType, err);
- } else {
- aListener.onDiscoveryStarted(result);
- }
- });
- },
-
- stopDiscovery: function(aServiceType, aListener) {
- this.serviceManager.removeListener(aServiceType, aListener);
-
- let serviceInfo = {
- uniqueId: aListener.uuid
- };
-
- send("NsdManager:StopServiceDiscovery", serviceInfo, (result, err) => {
- if (err) {
- log("onStopDiscoveryFailed: " + aServiceType + " (" + err + ")");
- aListener.onStopDiscoveryFailed(aServiceType, err);
- } else {
- aListener.onDiscoveryStopped(aServiceType);
- }
- });
- },
-
- registerService: function(aServiceInfo, aListener) {
- let serviceInfo = {
- port: aServiceInfo.port,
- serviceType: aServiceInfo.serviceType,
- uniqueId: aListener.uuid
- };
-
- try {
- serviceInfo.host = aServiceInfo.host;
- } catch(e) {
- // host unspecified
- }
- try {
- serviceInfo.serviceName = aServiceInfo.serviceName;
- } catch(e) {
- // serviceName unspecified
- }
- try {
- serviceInfo.attributes = parsePropertyBag2(aServiceInfo.attributes);
- } catch(e) {
- // attributes unspecified
- }
-
- send("NsdManager:RegisterService", serviceInfo, (result, err) => {
- if (err) {
- log("onRegistrationFailed: (" + err + ")");
- aListener.onRegistrationFailed(aServiceInfo, err);
- } else {
- aListener.onServiceRegistered(result);
- }
- });
- },
-
- unregisterService: function(aServiceInfo, aListener) {
- let serviceInfo = {
- uniqueId: aListener.uuid
- };
-
- send("NsdManager:UnregisterService", serviceInfo, (result, err) => {
- if (err) {
- log("onUnregistrationFailed: (" + err + ")");
- aListener.onUnregistrationFailed(aServiceInfo, err);
- } else {
- aListener.onServiceUnregistered(aServiceInfo);
- }
- });
- },
-
- resolveService: function(aServiceInfo, aListener) {
- send("NsdManager:ResolveService", aServiceInfo, (result, err) => {
- if (err) {
- log("onResolveFailed: (" + err + ")");
- aListener.onResolveFailed(aServiceInfo, err);
- } else {
- aListener.onServiceResolved(result);
- }
- });
- }
-};
diff --git a/netwerk/dns/mdns/libmdns/moz.build b/netwerk/dns/mdns/libmdns/moz.build
index efad64d64..b7d376fc3 100644
--- a/netwerk/dns/mdns/libmdns/moz.build
+++ b/netwerk/dns/mdns/libmdns/moz.build
@@ -31,11 +31,6 @@ else:
'fallback/MulticastDNS.jsm',
]
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
- EXTRA_JS_MODULES += [
- 'MulticastDNSAndroid.jsm',
- ]
-
UNIFIED_SOURCES += [
'nsDNSServiceInfo.cpp',
'nsMulticastDNSModule.cpp',
diff --git a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.js b/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.js
index b94f67297..af9196135 100644
--- a/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.js
+++ b/netwerk/dns/mdns/libmdns/nsDNSServiceDiscovery.js
@@ -5,17 +5,9 @@
const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
-Cu.import("resource://gre/modules/ExtensionUtils.jsm");
Cu.import('resource://gre/modules/Services.jsm');
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-let { PlatformInfo } = ExtensionUtils;
-
-if (PlatformInfo.os == "android" && !Services.prefs.getBoolPref("network.mdns.use_js_fallback")) {
- Cu.import("resource://gre/modules/MulticastDNSAndroid.jsm");
-} else {
- Cu.import("resource://gre/modules/MulticastDNS.jsm");
-}
+Cu.import("resource://gre/modules/MulticastDNS.jsm");
const DNSSERVICEDISCOVERY_CID = Components.ID("{f9346d98-f27a-4e89-b744-493843416480}");
const DNSSERVICEDISCOVERY_CONTRACT_ID = "@mozilla.org/toolkit/components/mdnsresponder/dns-sd;1";
diff --git a/netwerk/protocol/device/AndroidCaptureProvider.cpp b/netwerk/protocol/device/AndroidCaptureProvider.cpp
deleted file mode 100644
index e69766085..000000000
--- a/netwerk/protocol/device/AndroidCaptureProvider.cpp
+++ /dev/null
@@ -1,301 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "base/basictypes.h"
-#include "AndroidCaptureProvider.h"
-#include "nsXULAppAPI.h"
-#include "nsStreamUtils.h"
-#include "nsThreadUtils.h"
-#include "nsMemory.h"
-#include "RawStructs.h"
-
-// The maximum number of frames we keep in our queue. Don't live in the past.
-#define MAX_FRAMES_QUEUED 10
-
-using namespace mozilla::net;
-
-NS_IMPL_ISUPPORTS(AndroidCameraInputStream, nsIInputStream, nsIAsyncInputStream)
-
-AndroidCameraInputStream::AndroidCameraInputStream() :
- mWidth(0), mHeight(0), mCamera(0), mHeaderSent(false), mClosed(true), mFrameSize(0),
- mMonitor("AndroidCamera.Monitor")
-{
- mAvailable = sizeof(RawVideoHeader);
- mFrameQueue = new nsDeque();
-}
-
-AndroidCameraInputStream::~AndroidCameraInputStream() {
- // clear the frame queue
- while (mFrameQueue->GetSize() > 0) {
- free(mFrameQueue->PopFront());
- }
- delete mFrameQueue;
-}
-
-NS_IMETHODIMP
-AndroidCameraInputStream::Init(nsACString& aContentType, nsCaptureParams* aParams)
-{
- if (!XRE_IsParentProcess())
- return NS_ERROR_NOT_IMPLEMENTED;
-
- mContentType = aContentType;
- mWidth = aParams->width;
- mHeight = aParams->height;
- mCamera = aParams->camera;
-
- CameraStreamImpl *impl = CameraStreamImpl::GetInstance(0);
- if (!impl)
- return NS_ERROR_OUT_OF_MEMORY;
- if (impl->Init(mContentType, mCamera, mWidth, mHeight, this)) {
- mWidth = impl->GetWidth();
- mHeight = impl->GetHeight();
- mClosed = false;
- }
- return NS_OK;
-}
-
-void AndroidCameraInputStream::ReceiveFrame(char* frame, uint32_t length) {
- {
- mozilla::ReentrantMonitorAutoEnter autoMonitor(mMonitor);
- if (mFrameQueue->GetSize() > MAX_FRAMES_QUEUED) {
- free(mFrameQueue->PopFront());
- mAvailable -= mFrameSize;
- }
- }
-
- mFrameSize = sizeof(RawPacketHeader) + length;
-
- char* fullFrame = (char*)moz_xmalloc(mFrameSize);
-
- if (!fullFrame)
- return;
-
- RawPacketHeader* header = (RawPacketHeader*) fullFrame;
- header->packetID = 0xFF;
- header->codecID = 0x595556; // "YUV"
-
- // we copy the Y plane, and de-interlace the CrCb
-
- uint32_t yFrameSize = mWidth * mHeight;
- uint32_t uvFrameSize = yFrameSize / 4;
-
- memcpy(fullFrame + sizeof(RawPacketHeader), frame, yFrameSize);
-
- char* uFrame = fullFrame + yFrameSize;
- char* vFrame = fullFrame + yFrameSize + uvFrameSize;
- char* yFrame = frame + yFrameSize;
- for (uint32_t i = 0; i < uvFrameSize; i++) {
- uFrame[i] = yFrame[2 * i + 1];
- vFrame[i] = yFrame[2 * i];
- }
-
- {
- mozilla::ReentrantMonitorAutoEnter autoMonitor(mMonitor);
- mAvailable += mFrameSize;
- mFrameQueue->Push((void*)fullFrame);
- }
-
- NotifyListeners();
-}
-
-NS_IMETHODIMP
-AndroidCameraInputStream::Available(uint64_t *aAvailable)
-{
- mozilla::ReentrantMonitorAutoEnter autoMonitor(mMonitor);
-
- *aAvailable = mAvailable;
-
- return NS_OK;
-}
-
-NS_IMETHODIMP AndroidCameraInputStream::IsNonBlocking(bool *aNonBlock) {
- *aNonBlock = true;
- return NS_OK;
-}
-
-NS_IMETHODIMP AndroidCameraInputStream::Read(char *aBuffer, uint32_t aCount, uint32_t *aRead) {
- return ReadSegments(NS_CopySegmentToBuffer, aBuffer, aCount, aRead);
-}
-
-NS_IMETHODIMP AndroidCameraInputStream::ReadSegments(nsWriteSegmentFun aWriter, void *aClosure, uint32_t aCount, uint32_t *aRead) {
- *aRead = 0;
-
- nsresult rv;
-
- if (mAvailable == 0)
- return NS_BASE_STREAM_WOULD_BLOCK;
-
- if (aCount > mAvailable)
- aCount = mAvailable;
-
- if (!mHeaderSent) {
- CameraStreamImpl *impl = CameraStreamImpl::GetInstance(0);
- RawVideoHeader header;
- header.headerPacketID = 0;
- header.codecID = 0x595556; // "YUV"
- header.majorVersion = 0;
- header.minorVersion = 1;
- header.options = 1 | 1 << 1; // color, 4:2:2
-
- header.alphaChannelBpp = 0;
- header.lumaChannelBpp = 8;
- header.chromaChannelBpp = 4;
- header.colorspace = 1;
-
- header.frameWidth = mWidth;
- header.frameHeight = mHeight;
- header.aspectNumerator = 1;
- header.aspectDenominator = 1;
-
- header.framerateNumerator = impl->GetFps();
- header.framerateDenominator = 1;
-
- rv = aWriter(this, aClosure, (const char*)&header, 0, sizeof(RawVideoHeader), aRead);
-
- if (NS_FAILED(rv))
- return NS_OK;
-
- mHeaderSent = true;
- aCount -= sizeof(RawVideoHeader);
- mAvailable -= sizeof(RawVideoHeader);
- }
-
- {
- mozilla::ReentrantMonitorAutoEnter autoMonitor(mMonitor);
- while ((mAvailable > 0) && (aCount >= mFrameSize)) {
- uint32_t readThisTime = 0;
-
- char* frame = (char*)mFrameQueue->PopFront();
- rv = aWriter(this, aClosure, (const char*)frame, *aRead, mFrameSize, &readThisTime);
-
- if (readThisTime != mFrameSize) {
- mFrameQueue->PushFront((void*)frame);
- return NS_OK;
- }
-
- // RawReader does a copy when calling VideoData::Create()
- free(frame);
-
- if (NS_FAILED(rv))
- return NS_OK;
-
- aCount -= readThisTime;
- mAvailable -= readThisTime;
- *aRead += readThisTime;
- }
- }
- return NS_OK;
-}
-
-NS_IMETHODIMP AndroidCameraInputStream::Close() {
- return CloseWithStatus(NS_OK);
-}
-
-
-/**
- * must be called on the main (java) thread
- */
-void AndroidCameraInputStream::doClose() {
- NS_ASSERTION(!mClosed, "Camera is already closed");
-
- CameraStreamImpl *impl = CameraStreamImpl::GetInstance(0);
- impl->Close();
- mClosed = true;
-}
-
-
-void AndroidCameraInputStream::NotifyListeners() {
- mozilla::ReentrantMonitorAutoEnter autoMonitor(mMonitor);
-
- if (mCallback && (mAvailable > sizeof(RawVideoHeader))) {
- nsCOMPtr<nsIInputStreamCallback> callback;
- if (mCallbackTarget) {
- callback = NS_NewInputStreamReadyEvent(mCallback, mCallbackTarget);
- } else {
- callback = mCallback;
- }
-
- NS_ASSERTION(callback, "Shouldn't fail to make the callback!");
-
- // Null the callback first because OnInputStreamReady may reenter AsyncWait
- mCallback = nullptr;
- mCallbackTarget = nullptr;
-
- callback->OnInputStreamReady(this);
- }
-}
-
-NS_IMETHODIMP AndroidCameraInputStream::AsyncWait(nsIInputStreamCallback *aCallback, uint32_t aFlags, uint32_t aRequestedCount, nsIEventTarget *aTarget)
-{
- if (aFlags != 0)
- return NS_ERROR_NOT_IMPLEMENTED;
-
- if (mCallback || mCallbackTarget)
- return NS_ERROR_UNEXPECTED;
-
- mCallbackTarget = aTarget;
- mCallback = aCallback;
-
- // What we are being asked for may be present already
- NotifyListeners();
- return NS_OK;
-}
-
-
-NS_IMETHODIMP AndroidCameraInputStream::CloseWithStatus(nsresult status)
-{
- AndroidCameraInputStream::doClose();
- return NS_OK;
-}
-
-/**
- * AndroidCaptureProvider implementation
- */
-
-NS_IMPL_ISUPPORTS0(AndroidCaptureProvider)
-
-AndroidCaptureProvider* AndroidCaptureProvider::sInstance = nullptr;
-
-AndroidCaptureProvider::AndroidCaptureProvider() {
-}
-
-AndroidCaptureProvider::~AndroidCaptureProvider() {
- AndroidCaptureProvider::sInstance = nullptr;
-}
-
-nsresult AndroidCaptureProvider::Init(nsACString& aContentType,
- nsCaptureParams* aParams,
- nsIInputStream** aStream) {
-
- NS_ENSURE_ARG_POINTER(aParams);
-
- NS_ASSERTION(aParams->frameLimit == 0 || aParams->timeLimit == 0,
- "Cannot set both a frame limit and a time limit!");
-
- RefPtr<AndroidCameraInputStream> stream;
-
- if (aContentType.EqualsLiteral("video/x-raw-yuv")) {
- stream = new AndroidCameraInputStream();
- if (stream) {
- nsresult rv = stream->Init(aContentType, aParams);
- if (NS_FAILED(rv))
- return rv;
- }
- else
- return NS_ERROR_OUT_OF_MEMORY;
- } else {
- NS_NOTREACHED("Should not have asked Android for this type!");
- }
- stream.forget(aStream);
- return NS_OK;
-}
-
-already_AddRefed<AndroidCaptureProvider> GetAndroidCaptureProvider() {
- if (!AndroidCaptureProvider::sInstance) {
- AndroidCaptureProvider::sInstance = new AndroidCaptureProvider();
- }
- RefPtr<AndroidCaptureProvider> ret = AndroidCaptureProvider::sInstance;
- return ret.forget();
-}
diff --git a/netwerk/protocol/device/AndroidCaptureProvider.h b/netwerk/protocol/device/AndroidCaptureProvider.h
deleted file mode 100644
index dd99ea541..000000000
--- a/netwerk/protocol/device/AndroidCaptureProvider.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef AndroidDeviceCaptureProvide_h_
-#define AndroidDeviceCaptureProvide_h_
-
-#include "nsDeviceCaptureProvider.h"
-#include "nsIAsyncInputStream.h"
-#include "nsCOMPtr.h"
-#include "nsAutoPtr.h"
-#include "nsString.h"
-#include "mozilla/net/CameraStreamImpl.h"
-#include "nsIEventTarget.h"
-#include "nsDeque.h"
-#include "mozilla/ReentrantMonitor.h"
-
-class AndroidCaptureProvider final : public nsDeviceCaptureProvider {
- private:
- ~AndroidCaptureProvider();
-
- public:
- AndroidCaptureProvider();
-
- NS_DECL_THREADSAFE_ISUPPORTS
-
- MOZ_MUST_USE nsresult Init(nsACString& aContentType, nsCaptureParams* aParams, nsIInputStream** aStream) override;
- static AndroidCaptureProvider* sInstance;
-};
-
-class AndroidCameraInputStream final : public nsIAsyncInputStream, mozilla::net::CameraStreamImpl::FrameCallback {
- private:
- ~AndroidCameraInputStream();
-
- public:
- AndroidCameraInputStream();
-
- NS_IMETHODIMP Init(nsACString& aContentType, nsCaptureParams* aParams);
-
- NS_DECL_THREADSAFE_ISUPPORTS
- NS_DECL_NSIINPUTSTREAM
- NS_DECL_NSIASYNCINPUTSTREAM
-
- void ReceiveFrame(char* frame, uint32_t length) override;
-
- protected:
- void NotifyListeners();
- void doClose();
-
- uint32_t mAvailable;
- nsCString mContentType;
- uint32_t mWidth;
- uint32_t mHeight;
- uint32_t mCamera;
- bool mHeaderSent;
- bool mClosed;
- nsDeque *mFrameQueue;
- uint32_t mFrameSize;
- mozilla::ReentrantMonitor mMonitor;
-
- nsCOMPtr<nsIInputStreamCallback> mCallback;
- nsCOMPtr<nsIEventTarget> mCallbackTarget;
-};
-
-already_AddRefed<AndroidCaptureProvider> GetAndroidCaptureProvider();
-
-#endif
diff --git a/netwerk/protocol/device/CameraStreamImpl.cpp b/netwerk/protocol/device/CameraStreamImpl.cpp
deleted file mode 100644
index f4a2cf4a4..000000000
--- a/netwerk/protocol/device/CameraStreamImpl.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "CameraStreamImpl.h"
-#include "GeneratedJNINatives.h"
-#include "nsCRTGlue.h"
-#include "nsThreadUtils.h"
-#include "nsXULAppAPI.h"
-#include "mozilla/Monitor.h"
-
-using namespace mozilla;
-
-namespace mozilla {
-namespace net {
-
-static CameraStreamImpl* mCamera0 = nullptr;
-static CameraStreamImpl* mCamera1 = nullptr;
-
-class CameraStreamImpl::Callback
- : public java::GeckoAppShell::CameraCallback::Natives<Callback>
-{
-public:
- static void OnFrameData(int32_t aCamera, jni::ByteArray::Param aData)
- {
- MOZ_ASSERT(NS_IsMainThread());
-
- CameraStreamImpl* impl = GetInstance(uint32_t(aCamera));
- if (impl) {
- impl->TransmitFrame(aData);
- }
- }
-};
-
-/**
- * CameraStreamImpl
- */
-
-void CameraStreamImpl::TransmitFrame(jni::ByteArray::Param aData) {
- if (!mCallback) {
- return;
- }
-
- JNIEnv* const env = jni::GetGeckoThreadEnv();
- const size_t length = size_t(env->GetArrayLength(aData.Get()));
-
- if (!length) {
- return;
- }
-
- jbyte* const data = env->GetByteArrayElements(aData.Get(), nullptr);
- mCallback->ReceiveFrame(reinterpret_cast<char*>(data), length);
- env->ReleaseByteArrayElements(aData.Get(), data, JNI_ABORT);
-}
-
-CameraStreamImpl* CameraStreamImpl::GetInstance(uint32_t aCamera) {
- CameraStreamImpl* res = nullptr;
- switch(aCamera) {
- case 0:
- if (mCamera0)
- res = mCamera0;
- else
- res = mCamera0 = new CameraStreamImpl(aCamera);
- break;
- case 1:
- if (mCamera1)
- res = mCamera1;
- else
- res = mCamera1 = new CameraStreamImpl(aCamera);
- break;
- }
- return res;
-}
-
-
-CameraStreamImpl::CameraStreamImpl(uint32_t aCamera) :
- mInit(false), mCamera(aCamera)
-{
- NS_WARNING("CameraStreamImpl::CameraStreamImpl()");
- mWidth = 0;
- mHeight = 0;
- mFps = 0;
-}
-
-CameraStreamImpl::~CameraStreamImpl()
-{
- NS_WARNING("CameraStreamImpl::~CameraStreamImpl()");
-}
-
-bool CameraStreamImpl::Init(const nsCString& contentType, const uint32_t& camera, const uint32_t& width, const uint32_t& height, FrameCallback* aCallback)
-{
- mCallback = aCallback;
- mWidth = width;
- mHeight = height;
-
- Callback::Init();
- jni::IntArray::LocalRef retArray = java::GeckoAppShell::InitCamera(
- contentType, int32_t(camera), int32_t(width), int32_t(height));
- nsTArray<int32_t> ret = retArray->GetElements();
-
- mWidth = uint32_t(ret[1]);
- mHeight = uint32_t(ret[2]);
- mFps = uint32_t(ret[3]);
-
- return !!ret[0];
-}
-
-void CameraStreamImpl::Close() {
- java::GeckoAppShell::CloseCamera();
- mCallback = nullptr;
-}
-
-} // namespace net
-} // namespace mozilla
diff --git a/netwerk/protocol/device/CameraStreamImpl.h b/netwerk/protocol/device/CameraStreamImpl.h
deleted file mode 100644
index 93037caf6..000000000
--- a/netwerk/protocol/device/CameraStreamImpl.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef __CAMERASTREAMIMPL_H__
-#define __CAMERASTREAMIMPL_H__
-
-#include "mozilla/jni/Refs.h"
-
-#include "nsString.h"
-
-/**
- * This singleton class handles communication with the Android camera
- * through JNI. It is used by the IPDL parent or directly from the chrome process
- */
-
-namespace mozilla {
-namespace net {
-
-class CameraStreamImpl {
-public:
- class FrameCallback {
- public:
- virtual void ReceiveFrame(char* frame, uint32_t length) = 0;
- };
-
- /**
- * instance bound to a given camera
- */
- static CameraStreamImpl* GetInstance(uint32_t aCamera);
-
- bool initNeeded() {
- return !mInit;
- }
-
- FrameCallback* GetFrameCallback() {
- return mCallback;
- }
-
- MOZ_MUST_USE bool Init(const nsCString& contentType, const uint32_t& camera, const uint32_t& width, const uint32_t& height, FrameCallback* callback);
- void Close();
-
- uint32_t GetWidth() { return mWidth; }
- uint32_t GetHeight() { return mHeight; }
- uint32_t GetFps() { return mFps; }
-
- void takePicture(const nsAString& aFileName);
-
-private:
- class Callback;
-
- CameraStreamImpl(uint32_t aCamera);
- CameraStreamImpl(const CameraStreamImpl&);
- CameraStreamImpl& operator=(const CameraStreamImpl&);
-
- ~CameraStreamImpl();
-
- void TransmitFrame(jni::ByteArray::Param aData);
-
- bool mInit;
- uint32_t mCamera;
- uint32_t mWidth;
- uint32_t mHeight;
- uint32_t mFps;
- FrameCallback* mCallback;
-};
-
-} // namespace net
-} // namespace mozilla
-
-#endif
diff --git a/netwerk/protocol/device/moz.build b/netwerk/protocol/device/moz.build
index a18672220..3bb95930e 100644
--- a/netwerk/protocol/device/moz.build
+++ b/netwerk/protocol/device/moz.build
@@ -4,15 +4,6 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
- EXPORTS.mozilla.net += [
- 'CameraStreamImpl.h',
- ]
- UNIFIED_SOURCES += [
- 'AndroidCaptureProvider.cpp',
- 'CameraStreamImpl.cpp',
- ]
-
UNIFIED_SOURCES += [
'nsDeviceChannel.cpp',
'nsDeviceProtocolHandler.cpp',
diff --git a/netwerk/protocol/device/nsDeviceChannel.cpp b/netwerk/protocol/device/nsDeviceChannel.cpp
index 6c5788a56..d8b6900e8 100644
--- a/netwerk/protocol/device/nsDeviceChannel.cpp
+++ b/netwerk/protocol/device/nsDeviceChannel.cpp
@@ -7,11 +7,6 @@
#include "nsDeviceChannel.h"
#include "nsDeviceCaptureProvider.h"
-#ifdef MOZ_WIDGET_ANDROID
-#include "mozilla/Preferences.h"
-#include "AndroidCaptureProvider.h"
-#endif
-
using namespace mozilla;
// Copied from image/decoders/icon/nsIconURI.cpp
@@ -112,9 +107,6 @@ nsDeviceChannel::OpenContentStream(bool aAsync,
extractAttributeValue(spec.get(), "camera=", buffer);
captureParams.camera = buffer.ToInteger(&err);
captureParams.bpp = 32;
-#ifdef MOZ_WIDGET_ANDROID
- capture = GetAndroidCaptureProvider();
-#endif
} else if (kNotFound != spec.Find(NS_LITERAL_CSTRING("type=video/x-raw-yuv"),
true,
0,
@@ -138,11 +130,6 @@ nsDeviceChannel::OpenContentStream(bool aAsync,
captureParams.bpp = 32;
captureParams.timeLimit = 0;
captureParams.frameLimit = 60000;
-#ifdef MOZ_WIDGET_ANDROID
- // only enable if "device.camera.enabled" is true.
- if (Preferences::GetBool("device.camera.enabled", false) == true)
- capture = GetAndroidCaptureProvider();
-#endif
} else {
return NS_ERROR_NOT_IMPLEMENTED;
}
diff --git a/netwerk/protocol/http/UserAgentOverrides.jsm b/netwerk/protocol/http/UserAgentOverrides.jsm
index 037aa575b..e106f817a 100644
--- a/netwerk/protocol/http/UserAgentOverrides.jsm
+++ b/netwerk/protocol/http/UserAgentOverrides.jsm
@@ -2,6 +2,10 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#ifdef XP_WIN
+#define UA_SPARE_PLATFORM
+#endif
+
"use strict";
this.EXPORTED_SYMBOLS = [ "UserAgentOverrides" ];
@@ -18,6 +22,14 @@ const PREF_OVERRIDES_ENABLED = "general.useragent.site_specific_overrides";
const DEFAULT_UA = Cc["@mozilla.org/network/protocol;1?name=http"]
.getService(Ci.nsIHttpProtocolHandler)
.userAgent;
+const OSCPU = Cc["@mozilla.org/network/protocol;1?name=http"]
+ .getService(Ci.nsIHttpProtocolHandler)
+ .oscpu;
+#ifndef UA_SPARE_PLATFORM
+const PLATFORM = Cc["@mozilla.org/network/protocol;1?name=http"]
+ .getService(Ci.nsIHttpProtocolHandler)
+ .platform;
+#endif
const MAX_OVERRIDE_FOR_HOST_CACHE_SIZE = 250;
XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
@@ -27,18 +39,27 @@ XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
var gPrefBranch;
var gOverrides = new Map;
var gUpdatedOverrides;
+var gOldDynOverrides;
var gOverrideForHostCache = new Map;
var gInitialized = false;
var gOverrideFunctions = [
function (aHttpChannel) { return UserAgentOverrides.getOverrideForURI(aHttpChannel.URI); }
];
var gBuiltUAs = new Map;
+var gOSSlice;
this.UserAgentOverrides = {
init: function uao_init() {
if (gInitialized)
return;
+ gOSSlice = OSCPU + ";";
+#ifndef UA_SPARE_PLATFORM
+ if (PLATFORM != "") {
+ gOSSlice = PLATFORM + "; " + gOSSlice;
+ }
+#endif
+
gPrefBranch = Services.prefs.getBranch("general.useragent.override.");
gPrefBranch.addObserver("", buildOverrides, false);
@@ -52,7 +73,10 @@ this.UserAgentOverrides = {
}
UserAgentUpdates.init(function(overrides) {
- gOverrideForHostCache.clear();
+ if (overrides == gOldDynOverrides) {
+ return;
+ }
+ gOldDynOverrides = overrides;
if (overrides) {
for (let domain in overrides) {
overrides[domain] = getUserAgentFromOverride(overrides[domain]);
@@ -60,6 +84,7 @@ this.UserAgentOverrides = {
overrides.get = function(key) { return this[key]; };
}
gUpdatedOverrides = overrides;
+ buildOverrides();
});
buildOverrides();
@@ -143,7 +168,7 @@ function getUserAgentFromOverride(override)
if (search && replace) {
userAgent = DEFAULT_UA.replace(new RegExp(search, "g"), replace);
} else {
- userAgent = override;
+ userAgent = override.replace(/%OS_SLICE%/g, gOSSlice);
}
gBuiltUAs.set(override, userAgent);
return userAgent;
@@ -156,15 +181,22 @@ function buildOverrides() {
if (!Services.prefs.getBoolPref(PREF_OVERRIDES_ENABLED))
return;
- let builtUAs = new Map;
let domains = gPrefBranch.getChildList("");
+ // Since the static override map has the highest priority, we build it so
+ // that it includes only domains with user-set overrides and domains with
+ // default pre-set overrides that are not overridden by dynamic updates.
for (let domain of domains) {
- let override = gPrefBranch.getCharPref(domain);
- let userAgent = getUserAgentFromOverride(override);
-
- if (userAgent != DEFAULT_UA) {
- gOverrides.set(domain, userAgent);
+ if (!(gUpdatedOverrides && gUpdatedOverrides.get(domain)) ||
+ gPrefBranch.prefHasUserValue(domain)) {
+ // Here we selected domains that are not dynamically overridden
+ // or have a user-set override.
+ let override = gPrefBranch.getCharPref(domain);
+ let userAgent = getUserAgentFromOverride(override);
+
+ if (userAgent != DEFAULT_UA) {
+ gOverrides.set(domain, userAgent);
+ }
}
}
}
diff --git a/netwerk/protocol/http/UserAgentUpdates.jsm b/netwerk/protocol/http/UserAgentUpdates.jsm
index 602705ebe..cd21b78b3 100644
--- a/netwerk/protocol/http/UserAgentUpdates.jsm
+++ b/netwerk/protocol/http/UserAgentUpdates.jsm
@@ -10,7 +10,6 @@ const Ci = Components.interfaces;
const Cc = Components.classes;
const Cu = Components.utils;
-Cu.import("resource://gre/modules/AppConstants.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -18,15 +17,9 @@ XPCOMUtils.defineLazyModuleGetter(
this, "FileUtils", "resource://gre/modules/FileUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(
- this, "NetUtil", "resource://gre/modules/NetUtil.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(
this, "OS", "resource://gre/modules/osfile.jsm");
XPCOMUtils.defineLazyModuleGetter(
- this, "Promise", "resource://gre/modules/Promise.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(
this, "UpdateUtils", "resource://gre/modules/UpdateUtils.jsm");
XPCOMUtils.defineLazyServiceGetter(
@@ -65,30 +58,6 @@ const PREF_APP_DISTRIBUTION_VERSION = "distribution.version";
var gInitialized = false;
-function readChannel(url) {
- return new Promise((resolve, reject) => {
- try {
- let channel = NetUtil.newChannel({uri: url, loadUsingSystemPrincipal: true});
- channel.contentType = "application/json";
-
- NetUtil.asyncFetch(channel, (inputStream, status) => {
- if (!Components.isSuccessCode(status)) {
- reject();
- return;
- }
-
- let data = JSON.parse(
- NetUtil.readInputStreamToString(inputStream, inputStream.available())
- );
- resolve(data);
- });
- } catch (ex) {
- reject(new Error("UserAgentUpdates: Could not fetch " + url + " " +
- ex + "\n" + ex.stack));
- }
- });
-}
-
this.UserAgentUpdates = {
init: function(callback) {
if (gInitialized) {
@@ -144,13 +113,9 @@ this.UserAgentUpdates = {
// try to load next one if the previous load failed
return prevLoad ? prevLoad.then(null, tryNext) : tryNext();
}, null).then(null, (ex) => {
- if (AppConstants.platform !== "android") {
- // All previous (non-Android) load attempts have failed, so we bail.
- throw new Error("UserAgentUpdates: Failed to load " + FILE_UPDATES +
- ex + "\n" + ex.stack);
- }
- // Make one last attempt to read from the Fennec APK root.
- return readChannel("resource://android/" + FILE_UPDATES);
+ // All previous load attempts have failed, so we bail.
+ throw new Error("UserAgentUpdates: Failed to load " + FILE_UPDATES +
+ ex + "\n" + ex.stack);
}).then((update) => {
// Apply update if loading was successful
this._applyUpdate(update);
diff --git a/netwerk/protocol/http/moz.build b/netwerk/protocol/http/moz.build
index 1368ee707..a1b57876b 100644
--- a/netwerk/protocol/http/moz.build
+++ b/netwerk/protocol/http/moz.build
@@ -99,10 +99,9 @@ IPDL_SOURCES += [
'PHttpChannel.ipdl',
]
-EXTRA_JS_MODULES += [
- 'UserAgentOverrides.jsm',
- 'UserAgentUpdates.jsm',
-]
+EXTRA_JS_MODULES += ['UserAgentUpdates.jsm']
+
+EXTRA_PP_JS_MODULES += ['UserAgentOverrides.jsm']
include('/ipc/chromium/chromium-config.mozbuild')
diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
index 05383916f..950b1a7ab 100644
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -1530,7 +1530,7 @@ GetPKPConsoleErrorTag(uint32_t failureResult, nsAString& consoleErrorTag)
}
/**
- * Process a single security header. Only two types are supported: HSTS and HPKP.
+ * Process a single security header. Only one type is supported: HSTS.
*/
nsresult
nsHttpChannel::ProcessSingleSecurityHeader(uint32_t aType,
@@ -1542,9 +1542,6 @@ nsHttpChannel::ProcessSingleSecurityHeader(uint32_t aType,
case nsISiteSecurityService::HEADER_HSTS:
atom = nsHttp::ResolveAtom("Strict-Transport-Security");
break;
- case nsISiteSecurityService::HEADER_HPKP:
- atom = nsHttp::ResolveAtom("Public-Key-Pins");
- break;
default:
NS_NOTREACHED("Invalid security header type");
return NS_ERROR_FAILURE;
@@ -1568,10 +1565,6 @@ nsHttpChannel::ProcessSingleSecurityHeader(uint32_t aType,
GetSTSConsoleErrorTag(failureResult, consoleErrorTag);
consoleErrorCategory = NS_LITERAL_STRING("Invalid HSTS Headers");
break;
- case nsISiteSecurityService::HEADER_HPKP:
- GetPKPConsoleErrorTag(failureResult, consoleErrorTag);
- consoleErrorCategory = NS_LITERAL_STRING("Invalid HPKP Headers");
- break;
default:
return NS_ERROR_FAILURE;
}
@@ -1641,10 +1634,6 @@ nsHttpChannel::ProcessSecurityHeaders()
sslStatus, flags);
NS_ENSURE_SUCCESS(rv, rv);
- rv = ProcessSingleSecurityHeader(nsISiteSecurityService::HEADER_HPKP,
- sslStatus, flags);
- NS_ENSURE_SUCCESS(rv, rv);
-
return NS_OK;
}
diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp
index 0f4c94202..7a29e041b 100644
--- a/netwerk/protocol/http/nsHttpHandler.cpp
+++ b/netwerk/protocol/http/nsHttpHandler.cpp
@@ -127,30 +127,6 @@ NewURI(const nsACString &aSpec,
return NS_OK;
}
-#ifdef ANDROID
-static nsCString
-GetDeviceModelId() {
- // Assumed to be running on the main thread
- // We need the device property in either case
- nsAutoCString deviceModelId;
- nsCOMPtr<nsIPropertyBag2> infoService = do_GetService("@mozilla.org/system-info;1");
- MOZ_ASSERT(infoService, "Could not find a system info service");
- nsAutoString androidDevice;
- nsresult rv = infoService->GetPropertyAsAString(NS_LITERAL_STRING("device"), androidDevice);
- if (NS_SUCCEEDED(rv)) {
- deviceModelId = NS_LossyConvertUTF16toASCII(androidDevice);
- }
- nsAutoCString deviceString;
- rv = Preferences::GetCString(UA_PREF("device_string"), &deviceString);
- if (NS_SUCCEEDED(rv)) {
- deviceString.Trim(" ", true, true);
- deviceString.ReplaceSubstring(NS_LITERAL_CSTRING("%DEVICEID%"), deviceModelId);
- return deviceString;
- }
- return deviceModelId;
-}
-#endif
-
//-----------------------------------------------------------------------------
// nsHttpHandler <public>
//-----------------------------------------------------------------------------
@@ -198,8 +174,10 @@ nsHttpHandler::nsHttpHandler()
, mLegacyAppName("Mozilla")
, mLegacyAppVersion("5.0")
, mProduct("Goanna")
+ , mCompatGeckoEnabled(false)
+ , mAppBuildID("20200101")
, mCompatFirefoxEnabled(false)
- , mCompatFirefoxVersion("52.9")
+ , mCompatFirefoxVersion("68.9")
, mUserAgentIsDirty(true)
, mAcceptLanguagesIsDirty(true)
, mPromptTempRedirect(true)
@@ -315,8 +293,13 @@ nsHttpHandler::Init()
nsHttpChannelAuthProvider::InitializePrefs();
// rv: should have the Firefox/Gecko compatversion for web compatibility
+ // when in either compatmodes
mMisc.AssignLiteral("rv:");
- mMisc += mCompatFirefoxVersion;
+ if (mCompatGeckoEnabled) {
+ mMisc += mCompatFirefoxVersion;
+ } else {
+ mMisc += MOZILLA_UAVERSION;
+ }
mCompatGecko.AssignLiteral("Gecko/20100101");
mCompatFirefox.AssignLiteral("Firefox/");
@@ -325,6 +308,14 @@ nsHttpHandler::Init()
nsCOMPtr<nsIXULAppInfo> appInfo =
do_GetService("@mozilla.org/xre/app-info;1");
+ nsCString dynamicBuildID;
+ if (appInfo) {
+ appInfo->GetPlatformBuildID(dynamicBuildID);
+ if (dynamicBuildID.Length() > 8 )
+ dynamicBuildID.Left(dynamicBuildID, 8);
+ }
+ mAppBuildID.Assign(dynamicBuildID);
+
mAppName.AssignLiteral(MOZ_APP_UA_NAME);
if (mAppName.Length() == 0 && appInfo) {
// Try to get the UA name from appInfo, falling back to the name
@@ -334,28 +325,9 @@ nsHttpHandler::Init()
}
mAppName.StripChars(R"( ()<>@,;:\"/[]?={})");
}
-
- nsCString dynamicBuildID;
- if (appInfo) {
- appInfo->GetPlatformBuildID(dynamicBuildID);
- if (dynamicBuildID.Length() > 8 )
- dynamicBuildID.Left(dynamicBuildID, 8);
- }
- if (mAppVersionIsBuildID) {
- // Override BuildID
- mAppVersion.AssignLiteral(MOZ_UA_BUILDID);
- } else if (appInfo) {
- appInfo->GetVersion(mAppVersion);
- } else {
- // Fall back to platform if appInfo is unavailable
- mAppVersion.AssignLiteral(MOZILLA_UAVERSION);
- }
+ BuildAppVersion();
- // If there's no override set, set it to the dynamic BuildID
- if (mAppVersion.IsEmpty())
- mAppVersion.Assign(dynamicBuildID);
-
mSessionStartTime = NowInSeconds();
mHandlerActive = true;
@@ -372,10 +344,15 @@ nsHttpHandler::Init()
do_GetService("@mozilla.org/network/request-context-service;1");
// Goanna slice version
- mProductSub.AssignLiteral(MOZILLA_UAVERSION);
-
- if (mProductSub.IsEmpty())
- mProductSub.Assign(dynamicBuildID);
+ if (mCompatGeckoEnabled) {
+ mProductSub.AssignLiteral(MOZILLA_UAVERSION);
+ } else {
+ mProductSub.Assign(mAppBuildID);
+ }
+ // In case MOZILLA_UAVERSION is empty for some odd reason...
+ if (mProductSub.IsEmpty()) {
+ mProductSub.Assign(mAppBuildID);
+ }
#if DEBUG
// dump user agent prefs
@@ -681,6 +658,30 @@ nsHttpHandler::GenerateHostPort(const nsCString& host, int32_t port,
// nsHttpHandler <private>
//-----------------------------------------------------------------------------
+void
+nsHttpHandler::BuildAppVersion()
+{
+ nsCOMPtr<nsIXULAppInfo> appInfo = do_GetService("@mozilla.org/xre/app-info;1");
+
+ if (mAppVersionIsBuildID) {
+ // Override with BuildID
+ mAppVersion.Assign(mAppBuildID);
+ } else if (appInfo) {
+ appInfo->GetVersion(mAppVersion);
+ } else {
+ // Fall back to platform if appInfo is unavailable
+ mAppVersion.AssignLiteral(MOZILLA_UAVERSION);
+ }
+
+ // If there's still no version set, set it to a fixed BuildID
+ if (mAppVersion.IsEmpty()) {
+ mAppVersion.AssignLiteral(MOZ_UA_BUILDID);
+ }
+ if (mAppVersion.IsEmpty()) {
+ mAppVersion.AssignLiteral("20200101");
+ }
+}
+
const nsAFlatCString &
nsHttpHandler::UserAgent()
{
@@ -792,9 +793,7 @@ nsHttpHandler::InitUserAgentComponents()
#ifndef MOZ_UA_OS_AGNOSTIC
// Gather platform.
mPlatform.AssignLiteral(
-#if defined(ANDROID)
- "Android"
-#elif defined(XP_WIN)
+#if defined(XP_WIN)
"Windows"
#elif defined(XP_MACOSX)
"Macintosh"
@@ -808,64 +807,6 @@ nsHttpHandler::InitUserAgentComponents()
);
#endif
-
-#ifdef ANDROID
- nsCOMPtr<nsIPropertyBag2> infoService = do_GetService("@mozilla.org/system-info;1");
- MOZ_ASSERT(infoService, "Could not find a system info service");
- nsresult rv;
- // Add the Android version number to the Fennec platform identifier.
-#if defined MOZ_WIDGET_ANDROID
-#ifndef MOZ_UA_OS_AGNOSTIC // Don't add anything to mPlatform since it's empty.
- nsAutoString androidVersion;
- rv = infoService->GetPropertyAsAString(
- NS_LITERAL_STRING("release_version"), androidVersion);
- if (NS_SUCCEEDED(rv)) {
- mPlatform += " ";
- // If the 2nd character is a ".", we know the major version is a single
- // digit. If we're running on a version below 4 we pretend to be on
- // Android KitKat (4.4) to work around scripts sniffing for low versions.
- if (androidVersion[1] == 46 && androidVersion[0] < 52) {
- mPlatform += "4.4";
- } else {
- mPlatform += NS_LossyConvertUTF16toASCII(androidVersion);
- }
- }
-#endif
-#endif
- // Add the `Mobile` or `Tablet` or `TV` token when running on device.
- bool isTablet;
- rv = infoService->GetPropertyAsBool(NS_LITERAL_STRING("tablet"), &isTablet);
- if (NS_SUCCEEDED(rv) && isTablet) {
- mCompatDevice.AssignLiteral("Tablet");
- } else {
- bool isTV;
- rv = infoService->GetPropertyAsBool(NS_LITERAL_STRING("tv"), &isTV);
- if (NS_SUCCEEDED(rv) && isTV) {
- mCompatDevice.AssignLiteral("TV");
- } else {
- mCompatDevice.AssignLiteral("Mobile");
- }
- }
-
- if (Preferences::GetBool(UA_PREF("use_device"), false)) {
- mDeviceModelId = mozilla::net::GetDeviceModelId();
- }
-#endif // ANDROID
-
-#ifdef MOZ_MULET
- {
- // Add the `Mobile` or `Tablet` or `TV` token when running in the b2g
- // desktop simulator via preference.
- nsCString deviceType;
- nsresult rv = Preferences::GetCString("devtools.useragent.device_type", &deviceType);
- if (NS_SUCCEEDED(rv)) {
- mCompatDevice.Assign(deviceType);
- } else {
- mCompatDevice.AssignLiteral("Mobile");
- }
- }
-#endif // MOZ_MULET
-
#ifndef MOZ_UA_OS_AGNOSTIC
// Gather OS/CPU.
#if defined(XP_WIN)
@@ -993,12 +934,34 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
if (PREF_CHANGED(UA_PREF("appVersionIsBuildID"))) {
rv = prefs->GetBoolPref(UA_PREF("appVersionIsBuildID"), &cVar);
mAppVersionIsBuildID = (NS_SUCCEEDED(rv) && cVar);
+
+ // Rebuild application version string.
+ BuildAppVersion();
+
mUserAgentIsDirty = true;
}
if (PREF_CHANGED(UA_PREF("compatMode.gecko"))) {
rv = prefs->GetBoolPref(UA_PREF("compatMode.gecko"), &cVar);
mCompatGeckoEnabled = (NS_SUCCEEDED(rv) && cVar);
+
+ // Rebuild rv: and Goanna slice version
+ mMisc.AssignLiteral("rv:");
+ if (mCompatGeckoEnabled) {
+ mMisc += mCompatFirefoxVersion;
+ } else {
+ mMisc += MOZILLA_UAVERSION;
+ }
+
+ if (mCompatGeckoEnabled) {
+ mProductSub.AssignLiteral(MOZILLA_UAVERSION);
+ } else {
+ mProductSub.Assign(mAppBuildID);
+ }
+ // In case MOZILLA_UAVERSION is empty for some odd reason...
+ if (mProductSub.IsEmpty()) {
+ mProductSub.Assign(mAppBuildID);
+ }
mUserAgentIsDirty = true;
}
@@ -1017,7 +980,11 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
// rebuild mMisc and compatMode slice
mMisc.AssignLiteral("rv:");
- mMisc += mCompatFirefoxVersion;
+ if (mCompatGeckoEnabled) {
+ mMisc += mCompatFirefoxVersion;
+ } else {
+ mMisc += MOZILLA_UAVERSION;
+ }
mCompatFirefox.AssignLiteral("Firefox/");
mCompatFirefox += mCompatFirefoxVersion;
@@ -1031,18 +998,6 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
mUserAgentIsDirty = true;
}
-#ifdef ANDROID
- // general.useragent.use_device
- if (PREF_CHANGED(UA_PREF("use_device"))) {
- if (Preferences::GetBool(UA_PREF("use_device"), false)) {
- mDeviceModelId = mozilla::net::GetDeviceModelId();
- } else {
- mDeviceModelId = EmptyCString();
- }
- mUserAgentIsDirty = true;
- }
-#endif
-
//
// HTTP options
//
diff --git a/netwerk/protocol/http/nsHttpHandler.h b/netwerk/protocol/http/nsHttpHandler.h
index 402147577..4f632e078 100644
--- a/netwerk/protocol/http/nsHttpHandler.h
+++ b/netwerk/protocol/http/nsHttpHandler.h
@@ -391,6 +391,7 @@ private:
//
// Useragent/prefs helper methods
//
+ void BuildAppVersion();
void BuildUserAgent();
void InitUserAgentComponents();
void PrefsChanged(nsIPrefBranch *prefs, const char *pref);
@@ -500,6 +501,7 @@ private:
nsCString mCompatFirefox;
bool mCompatFirefoxEnabled;
nsCString mCompatFirefoxVersion;
+ nsCString mAppBuildID;
nsXPIDLCString mCompatDevice;
nsCString mDeviceModelId;
diff --git a/netwerk/sctp/datachannel/moz.build b/netwerk/sctp/datachannel/moz.build
index fc59da229..18bb8533a 100644
--- a/netwerk/sctp/datachannel/moz.build
+++ b/netwerk/sctp/datachannel/moz.build
@@ -25,9 +25,7 @@ LOCAL_INCLUDES += [
DEFINES['INET'] = 1
DEFINES['SCTP_DEBUG'] = 1
-
-if CONFIG['OS_TARGET'] != 'Android':
- DEFINES['INET6'] = 1
+DEFINES['INET6'] = 1
if CONFIG['OS_TARGET'] == 'WINNT':
DEFINES['__Userspace_os_Windows'] = 1
diff --git a/netwerk/sctp/src/ifaddrs-android-ext.h b/netwerk/sctp/src/ifaddrs-android-ext.h
deleted file mode 100644
index abddae735..000000000
--- a/netwerk/sctp/src/ifaddrs-android-ext.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef IFADDRS_ANDROID_EXT_H_included
-#define IFADDRS_ANDROID_EXT_H_included
-
-#include <arpa/inet.h>
-#include <errno.h>
-#include <net/if.h>
-#include <netinet/in.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <stdio.h>
-#include <linux/netlink.h>
-#include <linux/rtnetlink.h>
-
-// Android (bionic) doesn't have getifaddrs(3)/freeifaddrs(3).
-// We fake it here, so java_net_NetworkInterface.cpp can use that API
-// with all the non-portable code being in this file.
-
-// Source-compatible subset of the BSD struct.
-typedef struct ifaddrs {
- // Pointer to next struct in list, or NULL at end.
- struct ifaddrs* ifa_next;
-
- // Interface name.
- char* ifa_name;
-
- // Interface flags.
- unsigned int ifa_flags;
-
- // Interface network address.
- struct sockaddr* ifa_addr;
-
- // Interface netmask.
- struct sockaddr* ifa_netmask;
-} ifaddrs;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- int getifaddrs(ifaddrs** result);
- void freeifaddrs(ifaddrs* addresses);
-#ifdef __cplusplus
-}
-#endif
-
-#endif // IFADDRS_ANDROID_H_included
diff --git a/netwerk/sctp/src/ifaddrs_android.cpp b/netwerk/sctp/src/ifaddrs_android.cpp
deleted file mode 100644
index 78eb90a1a..000000000
--- a/netwerk/sctp/src/ifaddrs_android.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "ifaddrs-android-ext.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include "ScopedFd.h"
-#include "LocalArray.h"
-
-// Returns a pointer to the first byte in the address data (which is
-// stored in network byte order).
-uint8_t* sockaddrBytes(int family, sockaddr_storage* ss) {
- if (family == AF_INET) {
- sockaddr_in* ss4 = reinterpret_cast<sockaddr_in*>(ss);
- return reinterpret_cast<uint8_t*>(&ss4->sin_addr);
- } else if (family == AF_INET6) {
- sockaddr_in6* ss6 = reinterpret_cast<sockaddr_in6*>(ss);
- return reinterpret_cast<uint8_t*>(&ss6->sin6_addr);
- }
- return NULL;
-}
-
-// Sadly, we can't keep the interface index for portability with BSD.
-// We'll have to keep the name instead, and re-query the index when
-// we need it later.
-bool ifa_setNameAndFlagsByIndex(ifaddrs *self, int interfaceIndex) {
- // Get the name.
- char buf[IFNAMSIZ];
- char* name = if_indextoname(interfaceIndex, buf);
- if (name == NULL) {
- return false;
- }
- self->ifa_name = new char[strlen(name) + 1];
- strcpy(self->ifa_name, name);
-
- // Get the flags.
- ScopedFd fd(socket(AF_INET, SOCK_DGRAM, 0));
- if (fd.get() == -1) {
- return false;
- }
- ifreq ifr;
- memset(&ifr, 0, sizeof(ifr));
- strcpy(ifr.ifr_name, name);
- int rc = ioctl(fd.get(), SIOCGIFFLAGS, &ifr);
- if (rc == -1) {
- return false;
- }
- self->ifa_flags = ifr.ifr_flags;
- return true;
-}
-
-// Netlink gives us the address family in the header, and the
-// sockaddr_in or sockaddr_in6 bytes as the payload. We need to
-// stitch the two bits together into the sockaddr that's part of
-// our portable interface.
-void ifa_setAddress(ifaddrs *self, int family, void* data, size_t byteCount) {
- // Set the address proper...
- sockaddr_storage* ss = new sockaddr_storage;
- memset(ss, 0, sizeof(*ss));
- self->ifa_addr = reinterpret_cast<sockaddr*>(ss);
- ss->ss_family = family;
- uint8_t* dst = sockaddrBytes(family, ss);
- memcpy(dst, data, byteCount);
-}
-
-// Netlink gives us the prefix length as a bit count. We need to turn
-// that into a BSD-compatible netmask represented by a sockaddr*.
-void ifa_setNetmask(ifaddrs *self, int family, size_t prefixLength) {
- // ...and work out the netmask from the prefix length.
- sockaddr_storage* ss = new sockaddr_storage;
- memset(ss, 0, sizeof(*ss));
- self->ifa_netmask = reinterpret_cast<sockaddr*>(ss);
- ss->ss_family = family;
- uint8_t* dst = sockaddrBytes(family, ss);
- memset(dst, 0xff, prefixLength / 8);
- if ((prefixLength % 8) != 0) {
- dst[prefixLength/8] = (0xff << (8 - (prefixLength % 8)));
- }
-}
-
-// FIXME: use iovec instead.
-struct addrReq_struct {
- nlmsghdr netlinkHeader;
- ifaddrmsg msg;
-};
-
-inline bool sendNetlinkMessage(int fd, const void* data, size_t byteCount) {
- ssize_t sentByteCount = TEMP_FAILURE_RETRY(send(fd, data, byteCount, 0));
- return (sentByteCount == static_cast<ssize_t>(byteCount));
-}
-
-inline ssize_t recvNetlinkMessage(int fd, char* buf, size_t byteCount) {
- return TEMP_FAILURE_RETRY(recv(fd, buf, byteCount, 0));
-}
-
-// Source-compatible with the BSD function.
-int getifaddrs(ifaddrs** result)
-{
- // Simplify cleanup for callers.
- *result = NULL;
-
- // Create a netlink socket.
- ScopedFd fd(socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE));
- if (fd.get() < 0) {
- return -1;
- }
-
- // Ask for the address information.
- addrReq_struct addrRequest;
- memset(&addrRequest, 0, sizeof(addrRequest));
- addrRequest.netlinkHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH;
- addrRequest.netlinkHeader.nlmsg_type = RTM_GETADDR;
- addrRequest.netlinkHeader.nlmsg_len = NLMSG_ALIGN(NLMSG_LENGTH(sizeof(addrRequest)));
- addrRequest.msg.ifa_family = AF_UNSPEC; // All families.
- addrRequest.msg.ifa_index = 0; // All interfaces.
- if (!sendNetlinkMessage(fd.get(), &addrRequest, addrRequest.netlinkHeader.nlmsg_len)) {
- return -1;
- }
-
- // Read the responses.
- LocalArray<0> buf(65536); // We don't necessarily have std::vector.
- ssize_t bytesRead;
- while ((bytesRead = recvNetlinkMessage(fd.get(), &buf[0], buf.size())) > 0) {
- nlmsghdr* hdr = reinterpret_cast<nlmsghdr*>(&buf[0]);
- for (; NLMSG_OK(hdr, (size_t)bytesRead); hdr = NLMSG_NEXT(hdr, bytesRead)) {
- switch (hdr->nlmsg_type) {
- case NLMSG_DONE:
- return 0;
- case NLMSG_ERROR:
- return -1;
- case RTM_NEWADDR:
- {
- ifaddrmsg* address = reinterpret_cast<ifaddrmsg*>(NLMSG_DATA(hdr));
- rtattr* rta = IFA_RTA(address);
- size_t ifaPayloadLength = IFA_PAYLOAD(hdr);
- while (RTA_OK(rta, ifaPayloadLength)) {
- if (rta->rta_type == IFA_LOCAL) {
- int family = address->ifa_family;
- if (family == AF_INET || family == AF_INET6) {
- ifaddrs *next = *result;
- *result = new ifaddrs;
- memset(*result, 0, sizeof(ifaddrs));
- (*result)->ifa_next = next;
- if (!ifa_setNameAndFlagsByIndex(*result, address->ifa_index)) {
- return -1;
- }
- ifa_setAddress(*result, family, RTA_DATA(rta), RTA_PAYLOAD(rta));
- ifa_setNetmask(*result, family, address->ifa_prefixlen);
- }
- }
- rta = RTA_NEXT(rta, ifaPayloadLength);
- }
- }
- break;
- }
- }
- }
- // We only get here if recv fails before we see a NLMSG_DONE.
- return -1;
-}
-
-// Source-compatible with the BSD function.
-void freeifaddrs(ifaddrs* addresses) {
- ifaddrs* self = addresses;
- while (self != NULL) {
- delete[] self->ifa_name;
- delete self->ifa_addr;
- delete self->ifa_netmask;
- ifaddrs* next = self->ifa_next;
- delete self;
- self = next;
- }
-}
diff --git a/netwerk/sctp/src/moz.build b/netwerk/sctp/src/moz.build
index f24702fee..40a91eec1 100644
--- a/netwerk/sctp/src/moz.build
+++ b/netwerk/sctp/src/moz.build
@@ -34,11 +34,6 @@ SOURCES += [
'user_socket.c',
]
-if CONFIG['OS_TARGET'] == 'Android':
- SOURCES += [
- 'ifaddrs_android.cpp',
- ]
-
Library('nksctp_s')
include('/ipc/chromium/chromium-config.mozbuild')
@@ -58,16 +53,11 @@ for var in ('SCTP_SIMPLE_ALLOCATOR',
'CALLBACK_API', 'SCTP_DEBUG'):
DEFINES[var] = 1
-# Android NDK r5c, used on the builders at the time of this writing, doesn't
-# have the headers we need for IPv6
-if CONFIG['OS_TARGET'] != 'Android':
- DEFINES['INET6'] = 1
+DEFINES['INET6'] = 1
if CONFIG['OS_TARGET'] == 'WINNT':
DEFINES['__Userspace_os_Windows'] = 1
DEFINES['_LIB'] = 1
-elif CONFIG['OS_TARGET'] == 'Android':
- DEFINES['__Userspace_os_Linux'] = 1
else:
DEFINES['__Userspace_os_%s' % CONFIG['OS_TARGET']] = 1
@@ -75,7 +65,7 @@ if CONFIG['OS_TARGET'] == 'Darwin':
DEFINES['__APPLE_USE_RFC_2292'] = 1
DEFINES['__APPLE__'] = False
-if CONFIG['OS_TARGET'] in ('Linux', 'Android'):
+if CONFIG['OS_TARGET'] == 'Linux':
# to make sure that in6_pktinfo gets defined on all distros
DEFINES['_GNU_SOURCE'] = True
diff --git a/netwerk/sctp/src/netinet/sctp.h b/netwerk/sctp/src/netinet/sctp.h
index a5ff4eb0b..962ce1140 100755
--- a/netwerk/sctp/src/netinet/sctp.h
+++ b/netwerk/sctp/src/netinet/sctp.h
@@ -32,7 +32,7 @@
#ifdef __FreeBSD__
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/netinet/sctp.h 279859 2015-03-10 19:49:25Z tuexen $");
+__FBSDID("$FreeBSD: head/sys/netinet/sctp.h 356270 2020-01-02 13:55:10Z tuexen $");
#endif
#ifndef _NETINET_SCTP_H_
@@ -598,7 +598,10 @@ struct sctp_error_no_user_data {
#define SCTP_MOBILITY_PRIM_DELETED 0x00000004
-#define SCTP_SMALLEST_PMTU 512 /* smallest pmtu allowed when disabling PMTU discovery */
+/* Smallest PMTU allowed when disabling PMTU discovery */
+#define SCTP_SMALLEST_PMTU 512
+/* Largest PMTU allowed when disabling PMTU discovery */
+#define SCTP_LARGEST_PMTU 65536
#if defined(__Userspace_os_Windows)
#pragma pack()
diff --git a/netwerk/sctp/src/netinet/sctp_auth.c b/netwerk/sctp/src/netinet/sctp_auth.c
index ee5ca36ce..4e9f7e4cd 100755
--- a/netwerk/sctp/src/netinet/sctp_auth.c
+++ b/netwerk/sctp/src/netinet/sctp_auth.c
@@ -32,7 +32,7 @@
#ifdef __FreeBSD__
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/netinet/sctp_auth.c 271673 2014-09-16 14:20:33Z tuexen $");
+__FBSDID("$FreeBSD: head/sys/netinet/sctp_auth.c 355931 2019-12-20 15:25:08Z tuexen $");
#endif
#include <netinet/sctp_os.h>
@@ -1450,7 +1450,8 @@ sctp_auth_get_cookie_params(struct sctp_tcb *stcb, struct mbuf *m,
ptype = ntohs(phdr->param_type);
plen = ntohs(phdr->param_length);
- if ((plen == 0) || (offset + plen > length))
+ if ((plen < sizeof(struct sctp_paramhdr)) ||
+ (offset + plen > length))
break;
if (ptype == SCTP_RANDOM) {
diff --git a/netwerk/sctp/src/netinet/sctp_bsd_addr.c b/netwerk/sctp/src/netinet/sctp_bsd_addr.c
index 292941b53..f79b9ebb1 100755
--- a/netwerk/sctp/src/netinet/sctp_bsd_addr.c
+++ b/netwerk/sctp/src/netinet/sctp_bsd_addr.c
@@ -48,14 +48,10 @@ __FBSDID("$FreeBSD: head/sys/netinet/sctp_bsd_addr.c 276914 2015-01-10 20:49:57Z
#include <netinet/sctp_asconf.h>
#include <netinet/sctp_sysctl.h>
#include <netinet/sctp_indata.h>
-#if defined(ANDROID)
-#include <unistd.h>
-#include <ifaddrs-android-ext.h>
-#else
+
#if defined(__FreeBSD__)
#include <sys/unistd.h>
#endif
-#endif
/* Declare all of our malloc named types */
#ifndef __Panda__
diff --git a/netwerk/sctp/src/netinet/sctp_os_userspace.h b/netwerk/sctp/src/netinet/sctp_os_userspace.h
index bf4a3b519..13df42423 100755
--- a/netwerk/sctp/src/netinet/sctp_os_userspace.h
+++ b/netwerk/sctp/src/netinet/sctp_os_userspace.h
@@ -495,7 +495,7 @@ struct sx {int dummy;};
/* for getifaddrs */
#include <sys/types.h>
#if !defined(__Userspace_os_Windows)
-#if !defined(ANDROID) && (defined(INET) || defined(INET6))
+#if defined(INET) || defined(INET6)
#include <ifaddrs.h>
#endif
diff --git a/netwerk/sctp/src/netinet/sctp_pcb.c b/netwerk/sctp/src/netinet/sctp_pcb.c
index 58c164f50..ea5725c85 100755
--- a/netwerk/sctp/src/netinet/sctp_pcb.c
+++ b/netwerk/sctp/src/netinet/sctp_pcb.c
@@ -32,7 +32,7 @@
#ifdef __FreeBSD__
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.c 280459 2015-03-24 21:12:45Z tuexen $");
+__FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.c 355931 2019-12-20 15:25:08Z tuexen $");
#endif
#include <netinet/sctp_os.h>
@@ -7213,7 +7213,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m,
if (offset + plen > limit) {
break;
}
- if (plen == 0) {
+ if (plen < sizeof(struct sctp_paramhdr)) {
break;
}
#ifdef INET
@@ -7413,6 +7413,9 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m,
if (plen > sizeof(lstore)) {
return (-23);
}
+ if (plen < sizeof(struct sctp_asconf_addrv4_param)) {
+ return (-101);
+ }
phdr = sctp_get_next_param(m, offset,
(struct sctp_paramhdr *)&lstore,
min(plen,sizeof(lstore)));
diff --git a/netwerk/sctp/src/netinet/sctp_usrreq.c b/netwerk/sctp/src/netinet/sctp_usrreq.c
index d24a21815..7ffd8e8c8 100755
--- a/netwerk/sctp/src/netinet/sctp_usrreq.c
+++ b/netwerk/sctp/src/netinet/sctp_usrreq.c
@@ -32,7 +32,7 @@
#ifdef __FreeBSD__
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/netinet/sctp_usrreq.c 280459 2015-03-24 21:12:45Z tuexen $");
+__FBSDID("$FreeBSD: head/sys/netinet/sctp_usrreq.c 356270 2020-01-02 13:55:10Z tuexen $");
#endif
#include <netinet/sctp_os.h>
@@ -5995,6 +5995,14 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
return (EINVAL);
}
+ if ((paddrp->spp_flags & SPP_PMTUD_DISABLE) &&
+ ((paddrp->spp_pathmtu < SCTP_SMALLEST_PMTU) ||
+ (paddrp->spp_pathmtu > SCTP_LARGEST_PMTU))) {
+ if (stcb)
+ SCTP_TCB_UNLOCK(stcb);
+ SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
+ return (EINVAL);
+ }
if (stcb != NULL) {
/************************TCB SPECIFIC SET ******************/
@@ -6038,7 +6046,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_SOCKOPT, SCTP_SO_LOCKED);
sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net);
}
- if ((paddrp->spp_flags & SPP_PMTUD_DISABLE) && (paddrp->spp_pathmtu >= SCTP_SMALLEST_PMTU)) {
+ if (paddrp->spp_flags & SPP_PMTUD_DISABLE) {
if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) {
sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net,
SCTP_FROM_SCTP_USRREQ+SCTP_LOC_10);
@@ -6160,7 +6168,7 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
}
sctp_stcb_feature_on(inp, stcb, SCTP_PCB_FLAGS_DONOT_HEARTBEAT);
}
- if ((paddrp->spp_flags & SPP_PMTUD_DISABLE) && (paddrp->spp_pathmtu >= SCTP_SMALLEST_PMTU)) {
+ if (paddrp->spp_flags & SPP_PMTUD_DISABLE) {
TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) {
sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net,
diff --git a/netwerk/system/android/moz.build b/netwerk/system/android/moz.build
deleted file mode 100644
index 68288ad10..000000000
--- a/netwerk/system/android/moz.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-SOURCES += [
- 'nsAndroidNetworkLinkService.cpp',
-]
-
-FINAL_LIBRARY = 'xul'
-LOCAL_INCLUDES += [
- '/netwerk/base',
-]
diff --git a/netwerk/system/android/nsAndroidNetworkLinkService.cpp b/netwerk/system/android/nsAndroidNetworkLinkService.cpp
deleted file mode 100644
index 692b69a7e..000000000
--- a/netwerk/system/android/nsAndroidNetworkLinkService.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsAndroidNetworkLinkService.h"
-#include "nsServiceManagerUtils.h"
-#include "mozilla/Services.h"
-
-#include "AndroidBridge.h"
-
-namespace java = mozilla::java;
-
-NS_IMPL_ISUPPORTS(nsAndroidNetworkLinkService,
- nsINetworkLinkService)
-
-nsAndroidNetworkLinkService::nsAndroidNetworkLinkService()
-{
-}
-
-nsAndroidNetworkLinkService::~nsAndroidNetworkLinkService()
-{
-}
-
-NS_IMETHODIMP
-nsAndroidNetworkLinkService::GetIsLinkUp(bool *aIsUp)
-{
- if (!mozilla::AndroidBridge::Bridge()) {
- // Fail soft here and assume a connection exists
- NS_WARNING("GetIsLinkUp is not supported without a bridge connection");
- *aIsUp = true;
- return NS_OK;
- }
-
- *aIsUp = java::GeckoAppShell::IsNetworkLinkUp();
- return NS_OK;
-}
-
-NS_IMETHODIMP
-nsAndroidNetworkLinkService::GetLinkStatusKnown(bool *aIsKnown)
-{
- NS_ENSURE_TRUE(mozilla::AndroidBridge::Bridge(), NS_ERROR_NOT_IMPLEMENTED);
-
- *aIsKnown = java::GeckoAppShell::IsNetworkLinkKnown();
- return NS_OK;
-}
-
-NS_IMETHODIMP
-nsAndroidNetworkLinkService::GetLinkType(uint32_t *aLinkType)
-{
- NS_ENSURE_ARG_POINTER(aLinkType);
-
- if (!mozilla::AndroidBridge::Bridge()) {
- // Fail soft here and assume a connection exists
- NS_WARNING("GetLinkType is not supported without a bridge connection");
- *aLinkType = nsINetworkLinkService::LINK_TYPE_UNKNOWN;
- return NS_OK;
- }
-
- *aLinkType = java::GeckoAppShell::GetNetworkLinkType();
- return NS_OK;
-}
diff --git a/netwerk/system/android/nsAndroidNetworkLinkService.h b/netwerk/system/android/nsAndroidNetworkLinkService.h
deleted file mode 100644
index 9fdda7cae..000000000
--- a/netwerk/system/android/nsAndroidNetworkLinkService.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef NSANDROIDNETWORKLINKSERVICE_H_
-#define NSANDROIDNETWORKLINKSERVICE_H_
-
-#include "nsINetworkLinkService.h"
-
-class nsAndroidNetworkLinkService: public nsINetworkLinkService
-{
-public:
- NS_DECL_ISUPPORTS
- NS_DECL_NSINETWORKLINKSERVICE
-
- nsAndroidNetworkLinkService();
-
-private:
- virtual ~nsAndroidNetworkLinkService();
-};
-
-#endif /* NSANDROIDNETWORKLINKSERVICE_H_ */
diff --git a/netwerk/system/moz.build b/netwerk/system/moz.build
index 08c41342b..66360bb63 100644
--- a/netwerk/system/moz.build
+++ b/netwerk/system/moz.build
@@ -6,12 +6,7 @@
if CONFIG['OS_ARCH'] == 'WINNT':
DIRS += ['win32']
-
-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
DIRS += ['mac']
-
-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
- DIRS += ['android']
-
elif CONFIG['OS_ARCH'] == 'Linux':
DIRS += ['linux']