summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-09-04 20:53:31 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-09-04 20:53:31 +0200
commit580084e9e1d0355c96a54a9641df6c1fee894948 (patch)
tree5aff416b5aed2ca9e326054567d837f28c20ed25
parentfc61780b35af913801d72086456f493f63197da6 (diff)
parentb28ab55f9675f2e97dda9a4fcac0d4f5267a2bb9 (diff)
downloaduxp-2018.09.05.tar.gz
Merge branch 'master' into Basilisk-releasev2018.09.05
-rw-r--r--AUTHORS7
-rw-r--r--CLOBBER2
-rw-r--r--README.md3
-rw-r--r--accessible/base/NotificationController.cpp1
-rw-r--r--accessible/base/Statistics.h8
-rw-r--r--application/basilisk/app/macbuild/Contents/Info.plist.in4
-rw-r--r--application/basilisk/app/profile/basilisk.js5
-rw-r--r--application/basilisk/base/content/aboutNetError.xhtml114
-rw-r--r--application/basilisk/base/content/browser-fullScreenAndPointerLock.js3
-rw-r--r--application/basilisk/base/content/browser-fxaccounts.js48
-rw-r--r--application/basilisk/base/content/browser-gestureSupport.js10
-rw-r--r--application/basilisk/base/content/browser.js115
-rw-r--r--application/basilisk/base/content/browser.xul3
-rw-r--r--application/basilisk/base/content/content.js3
-rw-r--r--application/basilisk/base/content/sanitize.js55
-rw-r--r--application/basilisk/base/content/tabbrowser.xml50
-rw-r--r--application/basilisk/branding/official/disk.icnsbin459117 -> 41448 bytes
-rw-r--r--application/basilisk/branding/official/document.icnsbin660004 -> 39113 bytes
-rw-r--r--application/basilisk/branding/official/firefox.icnsbin801511 -> 39138 bytes
-rw-r--r--application/basilisk/components/migration/AutoMigrate.jsm18
-rw-r--r--application/basilisk/components/migration/MigrationUtils.jsm16
-rw-r--r--application/basilisk/components/migration/content/migration.xul6
-rw-r--r--application/basilisk/components/places/content/history-panel.js7
-rw-r--r--application/basilisk/components/places/content/places.js3
-rw-r--r--application/basilisk/components/sessionstore/SessionFile.jsm2
-rw-r--r--application/basilisk/components/sessionstore/SessionSaver.jsm16
-rw-r--r--application/basilisk/components/sessionstore/SessionStore.jsm13
-rw-r--r--application/basilisk/components/sessionstore/nsSessionStartup.js1
-rw-r--r--application/basilisk/locales/en-US/chrome/browser/browser.properties7
-rw-r--r--application/basilisk/locales/en-US/chrome/overrides/netError.dtd1
-rw-r--r--application/basilisk/themes/shared/aboutNetError.css27
-rw-r--r--application/palemoon/app/blocklist.xml14
-rw-r--r--application/palemoon/app/profile/palemoon.js23
-rw-r--r--application/palemoon/base/content/aboutDialog.xul7
-rw-r--r--application/palemoon/base/content/baseMenuOverlay.xul2
-rw-r--r--application/palemoon/base/content/blockedSite.xhtml193
-rw-r--r--application/palemoon/base/content/browser-sets.inc3
-rw-r--r--application/palemoon/base/content/browser.js30
-rw-r--r--application/palemoon/base/content/browser.xul1
-rw-r--r--application/palemoon/base/content/nsContextMenu.js40
-rw-r--r--application/palemoon/base/content/report-phishing-overlay.xul35
-rw-r--r--application/palemoon/base/content/tabbrowser.xml26
-rw-r--r--application/palemoon/base/content/utilityOverlay.js56
-rw-r--r--application/palemoon/branding/official/locales/en-US/brand.properties6
-rw-r--r--application/palemoon/branding/official/pref/palemoon-branding.js4
-rw-r--r--application/palemoon/branding/unofficial/locales/en-US/brand.dtd2
-rw-r--r--application/palemoon/branding/unofficial/newmoon.desktop352
-rw-r--r--application/palemoon/branding/unstable/locales/en-US/brand.properties6
-rw-r--r--application/palemoon/components/downloads/content/downloadsOverlay.xul2
-rw-r--r--application/palemoon/components/permissions/aboutPermissions.xul2
-rw-r--r--application/palemoon/components/places/content/controller.js5
-rw-r--r--application/palemoon/components/preferences/applications.js105
-rw-r--r--application/palemoon/config/version.txt2
-rw-r--r--application/palemoon/locales/en-US/chrome/browser/browser.properties13
-rw-r--r--application/palemoon/locales/en-US/chrome/browser/downloads/downloads.properties4
-rw-r--r--application/palemoon/locales/en-US/chrome/browser/preferences/preferences.properties7
-rw-r--r--application/palemoon/locales/en-US/chrome/overrides/appstrings.properties2
-rw-r--r--application/palemoon/locales/en-US/chrome/overrides/netError.dtd12
-rw-r--r--application/palemoon/locales/en-US/installer/custom.properties4
-rw-r--r--application/palemoon/locales/en-US/installer/nsisstrings.properties15
-rw-r--r--application/palemoon/locales/en-US/pdfviewer/chrome.properties18
-rw-r--r--application/palemoon/locales/en-US/pdfviewer/viewer.properties124
-rw-r--r--application/palemoon/locales/jar.mn3
-rw-r--r--application/palemoon/modules/WindowsPreviewPerTab.jsm614
-rw-r--r--application/palemoon/themes/linux/permissions/aboutPermissions.css5
-rw-r--r--application/palemoon/themes/osx/browser.css259
-rw-r--r--application/palemoon/themes/osx/jar.mn9
-rw-r--r--application/palemoon/themes/osx/panel-expander-closed.pngbin0 -> 155 bytes
-rw-r--r--application/palemoon/themes/osx/panel-expander-closed@2x.pngbin0 -> 362 bytes
-rw-r--r--application/palemoon/themes/osx/panel-expander-open.pngbin0 -> 155 bytes
-rw-r--r--application/palemoon/themes/osx/panel-expander-open@2x.pngbin0 -> 356 bytes
-rw-r--r--application/palemoon/themes/osx/panel-plus-sign.pngbin0 -> 212 bytes
-rw-r--r--application/palemoon/themes/osx/permissions/aboutPermissions.css5
-rw-r--r--application/palemoon/themes/osx/places/editBookmarkOverlay.css62
-rw-r--r--application/palemoon/themes/osx/places/expander-closed-active.pngbin0 -> 1329 bytes
-rw-r--r--application/palemoon/themes/osx/places/expander-open-active.pngbin0 -> 1329 bytes
-rw-r--r--application/palemoon/themes/osx/places/unfiledBookmarks.pngbin0 -> 586 bytes
-rw-r--r--application/palemoon/themes/osx/places/unfiledBookmarks@2x.pngbin0 -> 1289 bytes
-rw-r--r--application/palemoon/themes/windows/permissions/aboutPermissions.css5
-rw-r--r--build/moz.configure/warnings.configure3
-rw-r--r--caps/nsScriptSecurityManager.cpp3
-rw-r--r--config/external/nss/nss.symbols16
-rw-r--r--devtools/shared/heapsnapshot/HeapSnapshot.cpp12
-rw-r--r--devtools/shared/security/socket.js1
-rw-r--r--docs/CODE_OF_CONDUCT.md48
-rw-r--r--docshell/base/nsDocShell.cpp80
-rw-r--r--dom/base/Navigator.cpp2
-rw-r--r--dom/base/nsDOMClassInfo.cpp4
-rw-r--r--dom/base/nsDOMNavigationTiming.cpp7
-rw-r--r--dom/base/nsDeprecatedOperationList.h1
-rw-r--r--dom/base/nsDocument.cpp97
-rw-r--r--dom/base/nsFrameMessageManager.cpp8
-rw-r--r--dom/base/nsGlobalWindow.cpp19
-rw-r--r--dom/base/nsJSEnvironment.cpp15
-rw-r--r--dom/base/nsNodeInfoManager.cpp3
-rw-r--r--dom/base/nsObjectLoadingContent.cpp9
-rw-r--r--dom/bindings/BindingUtils.cpp4
-rw-r--r--dom/bindings/BindingUtils.h2
-rw-r--r--dom/bindings/Bindings.conf5
-rw-r--r--dom/bindings/ErrorResult.h2
-rw-r--r--dom/bindings/test/test_dom_xrays.html2
-rw-r--r--dom/canvas/CanvasRenderingContextHelper.cpp14
-rw-r--r--dom/canvas/WebGL1Context.cpp3
-rw-r--r--dom/canvas/WebGLContext.cpp24
-rw-r--r--dom/canvas/WebGLContextExtensions.cpp8
-rw-r--r--dom/canvas/WebGLContextState.cpp12
-rw-r--r--dom/canvas/WebGLContextUtils.cpp12
-rw-r--r--dom/canvas/WebGLContextUtils.h2
-rw-r--r--dom/canvas/WebGLExtensionDebugGet.cpp79
-rw-r--r--dom/canvas/WebGLExtensions.h14
-rw-r--r--dom/canvas/WebGLTypes.h1
-rw-r--r--dom/canvas/moz.build1
-rw-r--r--dom/crypto/WebCryptoTask.cpp40
-rw-r--r--dom/events/DataTransfer.cpp17
-rw-r--r--dom/events/DataTransfer.h3
-rw-r--r--dom/events/EventDispatcher.cpp48
-rw-r--r--dom/events/EventStateManager.cpp6
-rw-r--r--dom/events/EventStateManager.h3
-rw-r--r--dom/fetch/Fetch.cpp5
-rw-r--r--dom/fetch/FetchDriver.cpp3
-rw-r--r--dom/geolocation/nsGeolocation.cpp27
-rw-r--r--dom/html/HTMLFormElement.cpp8
-rw-r--r--dom/html/HTMLInputElement.cpp10
-rw-r--r--dom/html/HTMLMediaElement.cpp130
-rw-r--r--dom/html/ImageDocument.cpp17
-rw-r--r--dom/html/ImageDocument.h3
-rw-r--r--dom/html/TextTrackManager.cpp16
-rw-r--r--dom/html/nsHTMLDocument.cpp6
-rw-r--r--dom/html/nsTextEditorState.cpp13
-rw-r--r--dom/ipc/ContentParent.cpp7
-rw-r--r--dom/ipc/TabChild.cpp1
-rw-r--r--dom/locales/en-US/chrome/dom/dom.properties2
-rw-r--r--dom/locales/en-US/chrome/security/security.properties1
-rw-r--r--dom/media/AudioStream.cpp3
-rw-r--r--dom/media/Benchmark.cpp2
-rw-r--r--dom/media/CubebUtils.cpp8
-rw-r--r--dom/media/DecoderTraits.cpp7
-rw-r--r--dom/media/MediaDecoder.cpp1
-rw-r--r--dom/media/MediaDecoderStateMachine.cpp35
-rw-r--r--dom/media/MediaManager.cpp27
-rw-r--r--dom/media/VideoUtils.cpp19
-rw-r--r--dom/media/eme/DetailedPromise.cpp3
-rw-r--r--dom/media/eme/MediaKeySession.cpp3
-rw-r--r--dom/media/eme/MediaKeys.cpp2
-rw-r--r--dom/media/fmp4/MP4Demuxer.cpp35
-rw-r--r--dom/media/ogg/OggDemuxer.cpp2
-rw-r--r--dom/media/platforms/wmf/DXVA2Manager.cpp7
-rw-r--r--dom/media/platforms/wmf/WMFAudioMFTManager.cpp1
-rw-r--r--dom/media/platforms/wmf/WMFMediaDataDecoder.cpp3
-rw-r--r--dom/media/platforms/wmf/WMFVideoMFTManager.cpp3
-rw-r--r--dom/media/systemservices/LoadManager.cpp18
-rw-r--r--dom/media/webaudio/MediaBufferDecoder.cpp2
-rw-r--r--dom/notification/Notification.cpp45
-rw-r--r--dom/plugins/base/nsPluginHost.cpp9
-rw-r--r--dom/plugins/ipc/PluginAsyncSurrogate.cpp2
-rw-r--r--dom/plugins/ipc/PluginHangUIParent.cpp9
-rw-r--r--dom/plugins/ipc/PluginInstanceParent.cpp13
-rwxr-xr-xdom/plugins/ipc/PluginModuleParent.cpp48
-rw-r--r--dom/presentation/provider/PresentationControlService.js1
-rw-r--r--dom/security/nsMixedContentBlocker.cpp41
-rw-r--r--dom/storage/DOMStorageCache.cpp5
-rw-r--r--dom/storage/DOMStorageDBThread.cpp2
-rw-r--r--dom/system/mac/CoreLocationLocationProvider.mm3
-rw-r--r--dom/system/windows/WindowsLocationProvider.cpp4
-rw-r--r--dom/webidl/DataTransfer.webidl2
-rw-r--r--dom/webidl/HTMLDocument.webidl2
-rw-r--r--dom/webidl/WebGLRenderingContext.webidl9
-rw-r--r--dom/workers/RuntimeService.cpp13
-rw-r--r--dom/workers/ServiceWorkerManager.cpp3
-rw-r--r--dom/workers/ServiceWorkerRegistrar.cpp3
-rw-r--r--dom/workers/ServiceWorkerUpdateJob.cpp2
-rw-r--r--dom/workers/SharedWorker.cpp3
-rw-r--r--dom/workers/WorkerRunnable.cpp8
-rw-r--r--dom/xhr/XMLHttpRequestMainThread.cpp11
-rw-r--r--dom/xhr/XMLHttpRequestWorker.cpp2
-rw-r--r--dom/xul/nsXULPrototypeCache.cpp6
-rw-r--r--embedding/components/find/nsFind.cpp2
-rw-r--r--extensions/auth/nsAuthGSSAPI.cpp11
-rw-r--r--extensions/auth/nsAuthSSPI.cpp11
-rw-r--r--extensions/auth/nsAuthSambaNTLM.cpp12
-rw-r--r--extensions/cookie/nsPermissionManager.cpp29
-rwxr-xr-xgfx/angle/src/libANGLE/Program.cpp6
-rwxr-xr-xgfx/angle/src/libANGLE/renderer/ProgramImpl.h4
-rwxr-xr-xgfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h2
-rw-r--r--gfx/gl/GLContext.h2
-rw-r--r--gfx/gl/GLContextCGL.h2
-rw-r--r--gfx/gl/GLContextEAGL.h2
-rw-r--r--gfx/gl/GLContextEGL.h2
-rw-r--r--gfx/gl/GLContextGLX.h2
-rw-r--r--gfx/gl/GLContextProviderCGL.mm5
-rw-r--r--gfx/gl/GLContextProviderEAGL.mm5
-rw-r--r--gfx/gl/GLContextProviderEGL.cpp18
-rw-r--r--gfx/gl/GLContextProviderGLX.cpp22
-rw-r--r--gfx/gl/GLContextProviderWGL.cpp7
-rw-r--r--gfx/gl/GLContextWGL.h2
-rw-r--r--gfx/gl/GLLibraryEGL.cpp15
-rw-r--r--gfx/gl/GLTextureImage.cpp3
-rw-r--r--gfx/gl/GLUploadHelpers.cpp31
-rw-r--r--gfx/gl/GLUploadHelpers.h2
-rw-r--r--gfx/gl/TextureImageEGL.cpp4
-rw-r--r--gfx/ipc/GPUChild.cpp12
-rw-r--r--gfx/layers/Layers.cpp3
-rw-r--r--gfx/layers/apz/src/AsyncPanZoomController.cpp21
-rw-r--r--gfx/layers/apz/src/InputBlockState.cpp3
-rw-r--r--gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp8
-rw-r--r--gfx/layers/composite/TextureHost.cpp3
-rw-r--r--gfx/layers/ipc/CompositorBridgeParent.cpp19
-rw-r--r--gfx/layers/opengl/TextureHostOGL.cpp4
-rw-r--r--gfx/src/DriverCrashGuard.cpp16
-rw-r--r--gfx/thebes/DeviceManagerDx.cpp6
-rw-r--r--gfx/thebes/gfxDWriteFontList.cpp12
-rw-r--r--gfx/thebes/gfxFont.cpp7
-rw-r--r--gfx/thebes/gfxGDIFontList.cpp2
-rw-r--r--gfx/thebes/gfxGradientCache.cpp2
-rw-r--r--gfx/thebes/gfxMacPlatformFontList.mm7
-rw-r--r--gfx/thebes/gfxPlatform.cpp25
-rw-r--r--gfx/thebes/gfxPlatformFontList.cpp12
-rw-r--r--gfx/thebes/gfxUserFontSet.cpp14
-rwxr-xr-xgfx/thebes/gfxWindowsPlatform.cpp14
-rw-r--r--image/RasterImage.cpp31
-rw-r--r--image/imgFrame.cpp3
-rw-r--r--intl/strres/nsStringBundle.cpp27
-rw-r--r--intl/strres/nsStringBundleService.h2
-rw-r--r--intl/uconv/ucvja/nsJapaneseToUnicode.h2
-rw-r--r--intl/uconv/ucvlatin/nsCP866ToUnicode.cpp1
-rw-r--r--intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp1
-rw-r--r--intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp1
-rw-r--r--intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacCEToUnicode.cpp1
-rw-r--r--intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp1
-rw-r--r--intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp2
-rw-r--r--intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp2
-rw-r--r--ipc/chromium/src/base/process_util_win.cc27
-rw-r--r--ipc/glue/GeckoChildProcessHost.cpp3
-rw-r--r--ipc/glue/MessageChannel.cpp15
-rw-r--r--js/ipc/JavaScriptParent.cpp3
-rw-r--r--js/public/HashTable.h46
-rw-r--r--js/public/MemoryMetrics.h18
-rw-r--r--js/src/builtin/AtomicsObject.cpp2
-rw-r--r--js/src/gc/Barrier.h27
-rw-r--r--js/src/jit/MacroAssembler.cpp6
-rw-r--r--js/src/jit/ProcessExecutableMemory.cpp8
-rw-r--r--js/src/jit/ProcessExecutableMemory.h8
-rw-r--r--js/src/jit/shared/IonAssemblerBuffer.h4
-rw-r--r--js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h35
-rw-r--r--js/src/vm/NativeObject.h11
-rw-r--r--js/xpconnect/src/XPCJSContext.cpp99
-rw-r--r--layout/base/nsArenaMemoryStats.h7
-rw-r--r--layout/base/nsCSSRendering.cpp1
-rw-r--r--layout/base/nsDisplayList.cpp6
-rw-r--r--layout/base/nsDocumentViewer.cpp14
-rw-r--r--layout/base/nsLayoutUtils.cpp4
-rw-r--r--layout/base/nsPresShell.cpp40
-rw-r--r--layout/base/nsRefreshDriver.cpp12
-rw-r--r--layout/forms/nsNumberControlFrame.cpp4
-rw-r--r--layout/generic/ReflowInput.cpp64
-rw-r--r--layout/generic/ReflowInput.h30
-rw-r--r--layout/generic/nsFrame.cpp14
-rw-r--r--layout/generic/nsFrame.h2
-rw-r--r--layout/generic/nsSelection.cpp7
-rw-r--r--layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html47
-rw-r--r--layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html4
-rw-r--r--layout/reftests/css-grid/grid-item-sizing-percent-001.html4
-rw-r--r--layout/reftests/css-grid/grid-item-sizing-px-001.html4
-rw-r--r--layout/reftests/css-grid/reftest.list2
-rw-r--r--layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml28
-rw-r--r--layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml20
-rw-r--r--layout/style/FontFaceSet.cpp8
-rw-r--r--layout/style/nsFontFaceLoader.cpp1
-rw-r--r--layout/xul/nsScrollbarButtonFrame.cpp3
-rw-r--r--layout/xul/nsSliderFrame.cpp6
-rw-r--r--media/ffvpx/README_MCP7
-rw-r--r--media/libstagefright/binding/Index.cpp64
-rw-r--r--media/libstagefright/binding/MoofParser.cpp479
-rw-r--r--media/libstagefright/binding/SinfParser.cpp24
-rw-r--r--media/libstagefright/binding/include/mp4_demuxer/Box.h6
-rw-r--r--media/libstagefright/binding/include/mp4_demuxer/BufferReader.h225
-rw-r--r--media/libstagefright/binding/include/mp4_demuxer/ByteReader.h38
-rw-r--r--media/libstagefright/binding/include/mp4_demuxer/Index.h3
-rw-r--r--media/libstagefright/binding/include/mp4_demuxer/MoofParser.h55
-rw-r--r--media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp1
-rw-r--r--media/libstagefright/moz.build1
-rwxr-xr-xmedia/webrtc/signaling/src/media-conduit/AudioConduit.cpp9
-rw-r--r--media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp8
-rw-r--r--media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp109
-rw-r--r--media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp16
-rw-r--r--mfbt/EnumSet.h2
-rw-r--r--mfbt/tests/TestTypeTraits.cpp4
-rw-r--r--mobile/android/.eslintrc1
-rw-r--r--mobile/android/chrome/content/aboutLogins.js1
-rw-r--r--mobile/android/components/SessionStore.js3
-rw-r--r--modules/libjar/nsJARChannel.cpp7
-rw-r--r--modules/libpref/init/all.js39
-rw-r--r--modules/zlib/src/ChangeLog55
-rw-r--r--modules/zlib/src/ChangeLog.moz4
-rw-r--r--modules/zlib/src/README6
-rw-r--r--modules/zlib/src/adler32.c21
-rw-r--r--modules/zlib/src/compress.c42
-rw-r--r--modules/zlib/src/crc32.c41
-rw-r--r--modules/zlib/src/deflate.c802
-rw-r--r--modules/zlib/src/deflate.h35
-rw-r--r--modules/zlib/src/gzguts.h23
-rw-r--r--modules/zlib/src/gzlib.c31
-rw-r--r--modules/zlib/src/gzread.c156
-rw-r--r--modules/zlib/src/gzwrite.c332
-rw-r--r--modules/zlib/src/infback.c4
-rw-r--r--modules/zlib/src/inffast.c85
-rw-r--r--modules/zlib/src/inflate.c122
-rw-r--r--modules/zlib/src/inflate.h11
-rw-r--r--modules/zlib/src/inftrees.c26
-rw-r--r--modules/zlib/src/mozzconf.h42
-rw-r--r--modules/zlib/src/trees.c99
-rw-r--r--modules/zlib/src/uncompr.c98
-rw-r--r--modules/zlib/src/zconf.h43
-rw-r--r--modules/zlib/src/zlib.h453
-rw-r--r--modules/zlib/src/zutil.c49
-rw-r--r--modules/zlib/src/zutil.h57
-rw-r--r--netwerk/base/BackgroundFileSaver.cpp2
-rw-r--r--netwerk/base/Predictor.cpp26
-rw-r--r--netwerk/base/TLSServerSocket.cpp16
-rw-r--r--netwerk/base/nsITLSServerSocket.idl9
-rw-r--r--netwerk/base/nsLoadGroup.cpp159
-rw-r--r--netwerk/base/nsNetUtil.cpp8
-rw-r--r--netwerk/base/nsSocketTransport2.cpp46
-rw-r--r--netwerk/base/nsSocketTransportService2.cpp43
-rw-r--r--netwerk/base/nsUDPSocket.cpp27
-rw-r--r--netwerk/base/security-prefs.js2
-rw-r--r--netwerk/cache/nsCacheService.cpp15
-rw-r--r--netwerk/cache/nsDeleteDir.cpp3
-rw-r--r--netwerk/cache/nsDiskCacheDevice.cpp2
-rw-r--r--netwerk/cache/nsDiskCacheDeviceSQL.cpp1
-rw-r--r--netwerk/cache/nsDiskCacheEntry.h2
-rw-r--r--netwerk/cache/nsDiskCacheMap.cpp4
-rw-r--r--netwerk/cache/nsMemoryCacheDevice.cpp1
-rw-r--r--netwerk/cache2/CacheFile.cpp7
-rw-r--r--netwerk/cache2/CacheFileIOManager.cpp7
-rw-r--r--netwerk/cache2/CacheFileMetadata.cpp14
-rw-r--r--netwerk/cache2/CacheFileUtils.cpp16
-rw-r--r--netwerk/cache2/CacheFileUtils.h2
-rw-r--r--netwerk/cache2/CacheIOThread.cpp2
-rw-r--r--netwerk/cache2/CacheIndex.cpp1
-rw-r--r--netwerk/cache2/CacheStorageService.cpp5
-rw-r--r--netwerk/cache2/OldWrappers.cpp19
-rw-r--r--netwerk/cookie/nsCookieService.cpp51
-rw-r--r--netwerk/dns/nsHostResolver.cpp58
-rw-r--r--netwerk/protocol/http/ASpdySession.cpp2
-rw-r--r--netwerk/protocol/http/Http2Compression.cpp16
-rw-r--r--netwerk/protocol/http/Http2Session.cpp11
-rw-r--r--netwerk/protocol/http/Http2Stream.cpp11
-rw-r--r--netwerk/protocol/http/HttpBaseChannel.cpp2
-rw-r--r--netwerk/protocol/http/nsCORSListenerProxy.cpp2
-rw-r--r--netwerk/protocol/http/nsHttpChannel.cpp246
-rw-r--r--netwerk/protocol/http/nsHttpChannel.h2
-rw-r--r--netwerk/protocol/http/nsHttpChannelAuthProvider.cpp34
-rw-r--r--netwerk/protocol/http/nsHttpConnection.cpp24
-rw-r--r--netwerk/protocol/http/nsHttpConnectionMgr.cpp16
-rw-r--r--netwerk/protocol/http/nsHttpHandler.cpp43
-rw-r--r--netwerk/protocol/http/nsHttpHandler.h3
-rw-r--r--netwerk/protocol/websocket/WebSocketChannel.cpp2
-rw-r--r--netwerk/system/linux/nsNotifyAddrListener_Linux.cpp4
-rw-r--r--netwerk/system/mac/nsNetworkLinkService.mm4
-rw-r--r--netwerk/system/win32/nsNotifyAddrListener.cpp4
-rw-r--r--netwerk/test/unit/test_be_conservative.js1
-rw-r--r--netwerk/test/unit/test_tls_server.js1
-rw-r--r--netwerk/test/unit/test_tls_server_multiple_clients.js1
-rw-r--r--old-configure.in20
-rw-r--r--parser/html/nsHtml5AtomTable.cpp11
-rw-r--r--parser/html/nsHtml5AtomTable.h6
-rw-r--r--python/mozbuild/mozbuild/action/dump_env.py8
-rw-r--r--security/certverifier/ExtendedValidation.cpp10
-rwxr-xr-xsecurity/manager/locales/en-US/chrome/pipnss/pipnss.properties3
-rw-r--r--security/manager/ssl/DataStorage.cpp3
-rw-r--r--security/manager/ssl/SSLServerCertVerification.cpp147
-rw-r--r--security/manager/ssl/TransportSecurityInfo.cpp2
-rw-r--r--security/manager/ssl/nsKeygenHandler.cpp43
-rw-r--r--security/manager/ssl/nsNSSCallbacks.cpp49
-rw-r--r--security/manager/ssl/nsNSSComponent.cpp57
-rw-r--r--security/manager/ssl/nsNSSErrors.cpp2
-rw-r--r--security/manager/ssl/nsNSSIOLayer.cpp31
-rw-r--r--security/manager/ssl/nsNTLMAuthModule.cpp5
-rw-r--r--security/manager/ssl/nsPKCS11Slot.cpp4
-rw-r--r--security/manager/ssl/nsSTSPreloadList.errors3843
-rw-r--r--security/manager/ssl/nsSTSPreloadList.inc4773
-rw-r--r--security/manager/ssl/tests/unit/test_weak_crypto.js1
-rw-r--r--security/nss/TAG-INFO2
-rw-r--r--security/nss/automation/abi-check/expected-report-libnssutil3.so.txt4
-rw-r--r--security/nss/automation/abi-check/expected-report-libssl3.so.txt28
-rw-r--r--security/nss/automation/abi-check/previous-nss-release2
-rw-r--r--security/nss/automation/taskcluster/docker-hacl/Dockerfile6
-rw-r--r--security/nss/automation/taskcluster/docker-hacl/setup-user.sh1
-rw-r--r--security/nss/automation/taskcluster/docker-saw/Dockerfile2
-rw-r--r--security/nss/automation/taskcluster/docker/Dockerfile3
-rw-r--r--security/nss/automation/taskcluster/graph/src/extend.js22
-rw-r--r--security/nss/automation/taskcluster/graph/src/try_syntax.js2
-rw-r--r--security/nss/automation/taskcluster/scripts/gen_coverage_report.sh12
-rw-r--r--security/nss/automation/taskcluster/scripts/run_hacl.sh4
-rw-r--r--security/nss/automation/taskcluster/scripts/tools.sh5
-rw-r--r--security/nss/cmd/bltest/blapitest.c6
-rw-r--r--security/nss/cmd/certutil/certutil.c156
-rw-r--r--security/nss/cmd/crlutil/crlutil.c14
-rw-r--r--security/nss/cmd/crmftest/testcrmf.c1
-rw-r--r--security/nss/cmd/dbtest/dbtest.c7
-rw-r--r--security/nss/cmd/httpserv/httpserv.c10
-rw-r--r--security/nss/cmd/lib/secutil.c8
-rw-r--r--security/nss/cmd/listsuites/listsuites.c2
-rw-r--r--security/nss/cmd/lowhashtest/lowhashtest.c4
-rw-r--r--security/nss/cmd/modutil/install-ds.c10
-rw-r--r--security/nss/cmd/mpitests/mpi-test.c16
-rw-r--r--security/nss/cmd/ocspclnt/ocspclnt.c24
-rw-r--r--security/nss/cmd/ocspresp/ocspresp.c6
-rw-r--r--security/nss/cmd/pk12util/pk12util.c12
-rw-r--r--security/nss/cmd/pk1sign/pk1sign.c2
-rw-r--r--security/nss/cmd/rsaperf/rsaperf.c32
-rw-r--r--security/nss/cmd/selfserv/selfserv.c59
-rw-r--r--security/nss/cmd/shlibsign/shlibsign.c2
-rw-r--r--security/nss/cmd/signtool/javascript.c8
-rw-r--r--security/nss/cmd/signtool/sign.c68
-rw-r--r--security/nss/cmd/signtool/zip.c4
-rw-r--r--security/nss/cmd/smimetools/cmsutil.c37
-rw-r--r--security/nss/cmd/strsclnt/strsclnt.c16
-rw-r--r--security/nss/cmd/symkeyutil/symkeyutil.c5
-rw-r--r--security/nss/cmd/tstclnt/tstclnt.c225
-rw-r--r--security/nss/cmd/vfyserv/vfyserv.c6
-rw-r--r--security/nss/cmd/vfyserv/vfyutil.c4
-rw-r--r--security/nss/coreconf/Werror.mk6
-rw-r--r--security/nss/coreconf/config.mk4
-rw-r--r--security/nss/coreconf/coreconf.dep1
-rw-r--r--security/nss/coreconf/nsinstall/pathsub.c2
-rw-r--r--security/nss/coreconf/werror.py2
-rw-r--r--security/nss/cpputil/databuffer.cc10
-rw-r--r--security/nss/cpputil/databuffer.h14
-rw-r--r--security/nss/cpputil/scoped_ptrs.h2
-rw-r--r--security/nss/cpputil/tls_parser.cc15
-rw-r--r--security/nss/cpputil/tls_parser.h1
-rw-r--r--security/nss/fuzz/fuzz.gyp3
-rw-r--r--security/nss/fuzz/tls_client_target.cc8
-rw-r--r--security/nss/gtests/freebl_gtest/blake2b_unittest.cc4
-rw-r--r--security/nss/gtests/freebl_gtest/kat/blake2b_kat.h2
-rw-r--r--security/nss/gtests/nss_bogo_shim/config.cc35
-rw-r--r--security/nss/gtests/nss_bogo_shim/config.h17
-rw-r--r--security/nss/gtests/nss_bogo_shim/config.json74
-rw-r--r--security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc59
-rw-r--r--security/nss/gtests/pk11_gtest/pk11_signature_test.h4
-rw-r--r--security/nss/gtests/ssl_gtest/libssl_internals.c13
-rw-r--r--security/nss/gtests/ssl_gtest/manifest.mn1
-rw-r--r--security/nss/gtests/ssl_gtest/rsa8193.h209
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc4
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc78
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc48
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc11
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc1
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc73
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc126
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc111
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc35
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc28
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc4
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_gtest.gyp1
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc136
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc71
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_record_unittest.cc57
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_recordsize_unittest.cc431
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc6
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc6
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc36
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc92
-rw-r--r--security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc12
-rw-r--r--security/nss/gtests/ssl_gtest/test_io.cc8
-rw-r--r--security/nss/gtests/ssl_gtest/test_io.h6
-rw-r--r--security/nss/gtests/ssl_gtest/tls_agent.cc131
-rw-r--r--security/nss/gtests/ssl_gtest/tls_agent.h24
-rw-r--r--security/nss/gtests/ssl_gtest/tls_connect.cc49
-rw-r--r--security/nss/gtests/ssl_gtest/tls_connect.h4
-rw-r--r--security/nss/gtests/ssl_gtest/tls_filter.cc234
-rw-r--r--security/nss/gtests/ssl_gtest/tls_filter.h149
-rw-r--r--security/nss/gtests/ssl_gtest/tls_protect.cc35
-rw-r--r--security/nss/gtests/ssl_gtest/tls_protect.h15
-rw-r--r--security/nss/lib/certdb/crl.c8
-rw-r--r--security/nss/lib/ckfw/Makefile4
-rw-r--r--security/nss/lib/ckfw/builtins/certdata.txt467
-rw-r--r--security/nss/lib/ckfw/builtins/nssckbi.h6
-rw-r--r--security/nss/lib/ckfw/nssmkey/Makefile72
-rw-r--r--security/nss/lib/ckfw/nssmkey/README21
-rw-r--r--security/nss/lib/ckfw/nssmkey/ckmk.h182
-rw-r--r--security/nss/lib/ckfw/nssmkey/ckmkver.c17
-rw-r--r--security/nss/lib/ckfw/nssmkey/config.mk24
-rw-r--r--security/nss/lib/ckfw/nssmkey/manchor.c17
-rw-r--r--security/nss/lib/ckfw/nssmkey/manifest.mn33
-rw-r--r--security/nss/lib/ckfw/nssmkey/mconstants.c61
-rw-r--r--security/nss/lib/ckfw/nssmkey/mfind.c352
-rw-r--r--security/nss/lib/ckfw/nssmkey/minst.c97
-rw-r--r--security/nss/lib/ckfw/nssmkey/mobject.c1861
-rw-r--r--security/nss/lib/ckfw/nssmkey/mrsa.c479
-rw-r--r--security/nss/lib/ckfw/nssmkey/msession.c87
-rw-r--r--security/nss/lib/ckfw/nssmkey/mslot.c81
-rw-r--r--security/nss/lib/ckfw/nssmkey/mtoken.c184
-rw-r--r--security/nss/lib/ckfw/nssmkey/nssmkey.def26
-rw-r--r--security/nss/lib/ckfw/nssmkey/nssmkey.h41
-rw-r--r--security/nss/lib/ckfw/nssmkey/staticobj.c36
-rw-r--r--security/nss/lib/ckfw/session.c3
-rw-r--r--security/nss/lib/dev/devtoken.c4
-rw-r--r--security/nss/lib/freebl/Makefile10
-rw-r--r--security/nss/lib/freebl/blake2b.c2
-rw-r--r--security/nss/lib/freebl/chacha20poly1305.c88
-rw-r--r--security/nss/lib/freebl/dsa.c37
-rw-r--r--security/nss/lib/freebl/ec.c29
-rw-r--r--security/nss/lib/freebl/freebl.gyp36
-rw-r--r--security/nss/lib/freebl/freebl_base.gypi15
-rw-r--r--security/nss/lib/freebl/loader.c4
-rw-r--r--security/nss/lib/freebl/mpi/mpi.c13
-rw-r--r--security/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c881
-rw-r--r--security/nss/lib/freebl/poly1305.c314
-rw-r--r--security/nss/lib/freebl/poly1305.h30
-rw-r--r--security/nss/lib/freebl/unix_urandom.c33
-rw-r--r--security/nss/lib/freebl/verified/Hacl_Poly1305_32.c578
-rw-r--r--security/nss/lib/freebl/verified/Hacl_Poly1305_32.h103
-rw-r--r--security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c130
-rw-r--r--security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c20
-rw-r--r--security/nss/lib/nss/nss.h6
-rw-r--r--security/nss/lib/pk11wrap/pk11akey.c18
-rw-r--r--security/nss/lib/pk11wrap/pk11pars.c8
-rw-r--r--security/nss/lib/pkcs12/p12e.c5
-rw-r--r--security/nss/lib/pkcs7/p7decode.c1
-rw-r--r--security/nss/lib/pki/pki3hack.c4
-rw-r--r--security/nss/lib/smime/cmsrecinfo.c2
-rw-r--r--security/nss/lib/softoken/legacydb/pcertdb.c3
-rw-r--r--security/nss/lib/softoken/lowkey.c24
-rw-r--r--security/nss/lib/softoken/lowkeyi.h1
-rw-r--r--security/nss/lib/softoken/lowkeyti.h9
-rw-r--r--security/nss/lib/softoken/lowpbe.c10
-rw-r--r--security/nss/lib/softoken/pkcs11.c72
-rw-r--r--security/nss/lib/softoken/pkcs11c.c116
-rw-r--r--security/nss/lib/softoken/pkcs11u.c4
-rw-r--r--security/nss/lib/softoken/sdb.c69
-rw-r--r--security/nss/lib/softoken/sftkdb.c3
-rw-r--r--security/nss/lib/softoken/sftkpars.c34
-rw-r--r--security/nss/lib/softoken/sftkpwd.c6
-rw-r--r--security/nss/lib/softoken/softkver.h6
-rw-r--r--security/nss/lib/ssl/SSLerrs.h11
-rw-r--r--security/nss/lib/ssl/dtls13con.c59
-rw-r--r--security/nss/lib/ssl/dtls13con.h4
-rw-r--r--security/nss/lib/ssl/dtlscon.c116
-rw-r--r--security/nss/lib/ssl/dtlscon.h2
-rw-r--r--security/nss/lib/ssl/ssl.h81
-rw-r--r--security/nss/lib/ssl/ssl3con.c430
-rw-r--r--security/nss/lib/ssl/ssl3ecc.c6
-rw-r--r--security/nss/lib/ssl/ssl3ext.c13
-rw-r--r--security/nss/lib/ssl/ssl3ext.h3
-rw-r--r--security/nss/lib/ssl/ssl3exthandle.c181
-rw-r--r--security/nss/lib/ssl/ssl3exthandle.h7
-rw-r--r--security/nss/lib/ssl/ssl3gthr.c109
-rw-r--r--security/nss/lib/ssl/ssl3prot.h2
-rw-r--r--security/nss/lib/ssl/sslcert.c3
-rw-r--r--security/nss/lib/ssl/sslerr.h2
-rw-r--r--security/nss/lib/ssl/sslimpl.h39
-rw-r--r--security/nss/lib/ssl/sslsecur.c19
-rw-r--r--security/nss/lib/ssl/sslsock.c123
-rw-r--r--security/nss/lib/ssl/sslspec.c1
-rw-r--r--security/nss/lib/ssl/sslspec.h8
-rw-r--r--security/nss/lib/ssl/sslt.h3
-rw-r--r--security/nss/lib/ssl/tls13con.c262
-rw-r--r--security/nss/lib/ssl/tls13con.h2
-rw-r--r--security/nss/lib/ssl/tls13exthandle.c4
-rw-r--r--security/nss/lib/util/nssutil.def7
-rw-r--r--security/nss/lib/util/nssutil.h6
-rw-r--r--security/nss/lib/util/pkcs11t.h2
-rw-r--r--security/nss/lib/util/secasn1d.c4
-rw-r--r--security/nss/lib/util/secitem.c9
-rw-r--r--security/nss/lib/util/secitem.h8
-rw-r--r--security/nss/nss-tool/enc/enctool.cc1
-rwxr-xr-xsecurity/nss/tests/all.sh2
-rwxr-xr-xsecurity/nss/tests/bogo/bogo.sh9
-rwxr-xr-xsecurity/nss/tests/cert/cert.sh76
-rw-r--r--security/nss/tests/common/init.sh7
-rw-r--r--security/nss/tests/interop/interop.sh2
-rwxr-xr-xsecurity/nss/tests/ssl/ssl.sh122
-rwxr-xr-xsecurity/nss/tests/ssl_gtests/ssl_gtests.sh2
-rw-r--r--security/nss/tests/tools/TestRSAPSS.p12bin0 -> 2554 bytes
-rw-r--r--security/nss/tests/tools/tools.sh21
-rw-r--r--services/sync/Weave.js7
-rw-r--r--services/sync/modules/FxaMigrator.jsm99
-rw-r--r--services/sync/moz.build1
-rw-r--r--services/sync/tests/unit/test_fxa_migration.js117
-rw-r--r--services/sync/tests/unit/xpcshell.ini3
-rw-r--r--startupcache/StartupCache.cpp26
-rw-r--r--storage/TelemetryVFS.cpp11
-rw-r--r--storage/mozStorageAsyncStatementExecution.cpp4
-rw-r--r--testing/web-platform/meta/html/dom/interfaces.html.ini3
-rw-r--r--toolkit/components/alerts/nsAlertsService.cpp4
-rw-r--r--toolkit/components/downloads/ApplicationReputation.cpp31
-rw-r--r--toolkit/components/osfile/modules/osfile_async_front.jsm4
-rw-r--r--toolkit/components/perfmonitoring/nsPerformanceStats.cpp18
-rw-r--r--toolkit/components/places/Database.cpp3
-rw-r--r--toolkit/components/places/FaviconHelpers.cpp28
-rw-r--r--toolkit/components/places/Helpers.cpp4
-rw-r--r--toolkit/components/places/UnifiedComplete.js14
-rw-r--r--toolkit/components/places/nsPlacesAutoComplete.js5
-rw-r--r--toolkit/components/search/current/SearchStaticData.jsm (renamed from toolkit/components/search/SearchStaticData.jsm)0
-rw-r--r--toolkit/components/search/current/SearchSuggestionController.jsm (renamed from toolkit/components/search/SearchSuggestionController.jsm)0
-rw-r--r--toolkit/components/search/current/moz.build31
-rw-r--r--toolkit/components/search/current/nsSearchService.js (renamed from toolkit/components/search/nsSearchService.js)6
-rw-r--r--toolkit/components/search/current/nsSearchSuggestions.js (renamed from toolkit/components/search/nsSearchSuggestions.js)0
-rw-r--r--toolkit/components/search/current/nsSidebar.js (renamed from toolkit/components/search/nsSidebar.js)0
-rw-r--r--toolkit/components/search/current/toolkitsearch.manifest (renamed from toolkit/components/search/toolkitsearch.manifest)0
-rw-r--r--toolkit/components/search/moz.build29
-rw-r--r--toolkit/components/search/orginal/SearchStaticData.jsm43
-rw-r--r--toolkit/components/search/orginal/SearchSuggestionController.jsm396
-rw-r--r--toolkit/components/search/orginal/moz.build31
-rw-r--r--toolkit/components/search/orginal/nsSearchService.js4971
-rw-r--r--toolkit/components/search/orginal/nsSearchSuggestions.js197
-rw-r--r--toolkit/components/search/orginal/nsSidebar.js57
-rw-r--r--toolkit/components/search/orginal/toolkitsearch.manifest10
-rw-r--r--toolkit/components/startup/nsAppStartup.cpp17
-rw-r--r--toolkit/components/telemetry/TelemetryStopwatch.jsm335
-rw-r--r--toolkit/components/telemetry/moz.build1
-rw-r--r--toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js156
-rw-r--r--toolkit/components/telemetry/tests/unit/xpcshell.ini1
-rw-r--r--toolkit/components/thumbnails/BackgroundPageThumbs.jsm15
-rw-r--r--toolkit/components/thumbnails/PageThumbs.jsm13
-rw-r--r--toolkit/components/thumbnails/blankthumb.inc87
-rw-r--r--toolkit/components/thumbnails/moz.build6
-rw-r--r--toolkit/components/url-classifier/Classifier.cpp8
-rw-r--r--toolkit/components/url-classifier/Entries.h2
-rw-r--r--toolkit/components/url-classifier/LookupCache.cpp9
-rw-r--r--toolkit/components/url-classifier/LookupCacheV4.cpp13
-rw-r--r--toolkit/components/url-classifier/VariableLengthPrefixSet.cpp13
-rw-r--r--toolkit/components/url-classifier/nsUrlClassifierDBService.cpp6
-rw-r--r--toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp16
-rw-r--r--toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp5
-rw-r--r--toolkit/content/aboutSupport.js15
-rw-r--r--toolkit/content/tests/chrome/window_browser_drop.xul14
-rw-r--r--toolkit/content/widgets/tabbox.xml22
-rw-r--r--toolkit/locales/Makefile.in2
-rw-r--r--toolkit/locales/en-US/chrome/global/aboutRights.dtd2
-rw-r--r--toolkit/locales/en-US/chrome/global/aboutSupport.properties12
-rw-r--r--toolkit/modules/Troubleshoot.jsm33
-rw-r--r--toolkit/modules/tests/browser/browser_Troubleshoot.js26
-rw-r--r--toolkit/mozapps/downloads/content/downloads.js10
-rw-r--r--toolkit/themes/linux/global/jar.mn2
-rw-r--r--toolkit/themes/linux/global/toolbar.css10
-rw-r--r--toolkit/themes/osx/global/jar.mn2
-rw-r--r--toolkit/themes/osx/global/toolbar.css9
-rw-r--r--toolkit/themes/shared/jar.inc.mn1
-rw-r--r--toolkit/themes/windows/global/jar.mn2
-rw-r--r--toolkit/themes/windows/global/toolbar.css12
-rw-r--r--toolkit/xre/nsAppRunner.cpp5
-rw-r--r--toolkit/xre/nsXREDirProvider.cpp21
-rw-r--r--widget/android/fennec/Telemetry.h3
-rw-r--r--widget/nsIdleService.cpp3
-rw-r--r--widget/windows/nsLookAndFeel.cpp3
-rw-r--r--widget/windows/nsNativeThemeWin.cpp5
-rw-r--r--widget/windows/nsWindow.cpp16
-rw-r--r--xpcom/base/CycleCollectedJSContext.cpp3
-rw-r--r--xpcom/base/nsCycleCollector.cpp17
-rw-r--r--xpcom/base/nsMemoryReporterManager.cpp1
-rw-r--r--xpcom/build/XPCOMInit.cpp13
-rw-r--r--xpcom/glue/nsTHashtable.h4
-rw-r--r--xpcom/string/nsReadableUtilsImpl.h2
-rw-r--r--xpcom/threads/HangMonitor.cpp2
668 files changed, 20664 insertions, 17258 deletions
diff --git a/AUTHORS b/AUTHORS
index 7e9d1f4912..149ea5cc40 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -3,8 +3,10 @@ codebase which lives in this repository. If you make a contribution
here, you may add your name and, optionally, email address in the
appropriate place.
-For a full list of the people who are credited with making a
-contribution to Mozilla, see http://www.mozilla.org/credits/ .
+For a more comprehensive list of the people who are credited with
+making a contribution to this project and its Mozilla roots, see
+http://www.palemoon.org/Contributors.shtml
+
<1010mozilla@Ostermiller.com>
Aaron Boodman <aa@google.com>
@@ -650,6 +652,7 @@ Mark Mentovai <mark@moxienet.com>
Mark Pilgrim <pilgrim@gmail.com>
Mark Smith <mcs@pearlcrescent.com>
Mark Steele <mwsteele@gmail.com>
+Mark Straver <moonchild@palemoon.org>
Markus G. Kuhn <mkuhn@acm.org>
Markus Stange <mstange@themasta.com>
Martijn Pieters <mj@digicool.com>
diff --git a/CLOBBER b/CLOBBER
index fd0b259671..76ebbb54bf 100644
--- a/CLOBBER
+++ b/CLOBBER
@@ -22,4 +22,4 @@
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
# don't change CLOBBER for WebIDL changes any more.
-Clobber for updating NSPR+NSS
+Clobber required for updating NSS to 3.38 (poly1305 symbol changes)
diff --git a/README.md b/README.md
index 69f81ca3be..4f5f58255d 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,9 @@ Additional documentation relevant to this source code can be found in the `/docs
directory. This will contain relevant documentation regarding contributing,
using and distributing this code and its binaries.
+If you are interested in the development and building side of things, some
+information will be available on the [Pale Moon developer wiki](http://developer.palemoon.org).
+
### A note about trademarks and branding
Although this repository is licensed under Mozilla Public License v2.0, the
diff --git a/accessible/base/NotificationController.cpp b/accessible/base/NotificationController.cpp
index 73d3646417..3545ce6c17 100644
--- a/accessible/base/NotificationController.cpp
+++ b/accessible/base/NotificationController.cpp
@@ -591,7 +591,6 @@ void
NotificationController::WillRefresh(mozilla::TimeStamp aTime)
{
PROFILER_LABEL_FUNC(js::ProfileEntry::Category::OTHER);
- Telemetry::AutoTimer<Telemetry::A11Y_UPDATE_TIME> updateTimer;
// If the document accessible that notification collector was created for is
// now shut down, don't process notifications anymore.
diff --git a/accessible/base/Statistics.h b/accessible/base/Statistics.h
index c9f1832b23..f5a9a85b8e 100644
--- a/accessible/base/Statistics.h
+++ b/accessible/base/Statistics.h
@@ -14,22 +14,22 @@ namespace a11y {
namespace statistics {
inline void A11yInitialized()
- { Telemetry::Accumulate(Telemetry::A11Y_INSTANTIATED_FLAG, true); }
+ { /* STUB */ }
inline void A11yConsumers(uint32_t aConsumer)
- { Telemetry::Accumulate(Telemetry::A11Y_CONSUMERS, aConsumer); }
+ { /* STUB */ }
/**
* Report that ISimpleDOM* has been used.
*/
inline void ISimpleDOMUsed()
- { Telemetry::Accumulate(Telemetry::A11Y_ISIMPLEDOM_USAGE_FLAG, true); }
+ { /* STUB */ }
/**
* Report that IAccessibleTable has been used.
*/
inline void IAccessibleTableUsed()
- { Telemetry::Accumulate(Telemetry::A11Y_IATABLE_USAGE_FLAG, true); }
+ { /* STUB */ }
} // namespace statistics
} // namespace a11y
diff --git a/application/basilisk/app/macbuild/Contents/Info.plist.in b/application/basilisk/app/macbuild/Contents/Info.plist.in
index d6902fffde..3f93806067 100644
--- a/application/basilisk/app/macbuild/Contents/Info.plist.in
+++ b/application/basilisk/app/macbuild/Contents/Info.plist.in
@@ -143,7 +143,7 @@
</dict>
</array>
<key>CFBundleExecutable</key>
- <string>firefox</string>
+ <string>basilisk</string>
<key>CFBundleGetInfoString</key>
<string>%MAC_APP_NAME% %APP_VERSION%</string>
<key>CFBundleIconFile</key>
@@ -213,7 +213,7 @@
<key>LSFileQuarantineEnabled</key>
<true/>
<key>LSMinimumSystemVersion</key>
- <string>10.9.0</string>
+ <string>10.7.0</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<key>NSPrincipalClass</key>
diff --git a/application/basilisk/app/profile/basilisk.js b/application/basilisk/app/profile/basilisk.js
index 2df95a97fb..fd81e82041 100644
--- a/application/basilisk/app/profile/basilisk.js
+++ b/application/basilisk/app/profile/basilisk.js
@@ -543,9 +543,10 @@ pref("browser.gesture.tap", "cmd_fullZoomReset");
pref("browser.snapshots.limit", 0);
// 0: Nothing happens
-// 1: Scrolling contents
+// 1: Scroll contents
// 2: Go back or go forward, in your history
-// 3: Zoom in or out.
+// 3: Zoom in or out
+// 4: Scroll contents with X and Y swapped
#ifdef XP_MACOSX
// On OS X, if the wheel has one axis only, shift+wheel comes through as a
// horizontal scroll event. Thus, we can't assign anything other than normal
diff --git a/application/basilisk/base/content/aboutNetError.xhtml b/application/basilisk/base/content/aboutNetError.xhtml
index 609725c9ea..3296600c8a 100644
--- a/application/basilisk/base/content/aboutNetError.xhtml
+++ b/application/basilisk/base/content/aboutNetError.xhtml
@@ -123,13 +123,6 @@
document.getElementById("advancedButton")
.addEventListener("click", function togglePanelVisibility() {
toggleDisplay(panel);
- if (gIsCertError) {
- // Toggling the advanced panel must ensure that the debugging
- // information panel is hidden as well, since it's opened by the
- // error code link in the advanced panel.
- var div = document.getElementById("certificateErrorDebugInformation");
- div.style.display = "none";
- }
if (panel.style.display == "block") {
// send event to trigger telemetry ping
@@ -149,11 +142,6 @@
if (getCSSClass() == "expertBadCert") {
toggleDisplay(document.getElementById("badCertAdvancedPanel"));
- // Toggling the advanced panel must ensure that the debugging
- // information panel is hidden as well, since it's opened by the
- // error code link in the advanced panel.
- var div = document.getElementById("certificateErrorDebugInformation");
- div.style.display = "none";
}
disallowCertOverridesIfNeeded();
@@ -224,9 +212,6 @@
}
if (err == "sslv3Used") {
- document.getElementById("learnMoreContainer").style.display = "block";
- var learnMoreLink = document.getElementById("learnMoreLink");
- learnMoreLink.href = "https://support.mozilla.org/kb/how-resolve-sslv3-error-messages-firefox";
document.body.className = "certerror";
}
@@ -270,17 +255,6 @@
window.addEventListener("AboutNetErrorOptions", function(evt) {
// Pinning errors are of type nssFailure2
if (getErrorCode() == "nssFailure2" || getErrorCode() == "weakCryptoUsed") {
- document.getElementById("learnMoreContainer").style.display = "block";
- var learnMoreLink = document.getElementById("learnMoreLink");
- // nssFailure2 also gets us other non-overrideable errors. Choose
- // a "learn more" link based on description:
- if (getDescription().includes("mozilla_pkix_error_key_pinning_failure")) {
- learnMoreLink.href = "https://support.mozilla.org/kb/certificate-pinning-reports";
- }
- if (getErrorCode() == "weakCryptoUsed") {
- learnMoreLink.href = "https://support.mozilla.org/kb/how-resolve-weak-crypto-error-messages-firefox";
- }
-
const hasPrefStyleError = [
"interrupted", // This happens with subresources that are above the max tls
"SSL_ERROR_PROTOCOL_VERSION_ALERT",
@@ -312,7 +286,7 @@
}
}
- addDomainErrorLinks();
+ addDomainErrorLink();
}
function initPageCaptivePortal()
@@ -329,7 +303,7 @@
addAutofocus("openPortalLoginPageButton");
setupAdvancedButton(true);
- addDomainErrorLinks();
+ addDomainErrorLink();
// When the portal is freed, an event is generated by the frame script
// that we can pick up and attempt to reload the original page.
@@ -348,12 +322,10 @@
addAutofocus("returnButton");
setupAdvancedButton(true);
- document.getElementById("learnMoreContainer").style.display = "block";
-
let event = new CustomEvent("AboutNetErrorLoad", {bubbles:true});
document.getElementById("advancedButton").dispatchEvent(event);
- addDomainErrorLinks();
+ addDomainErrorLink();
}
/* Only do autofocus if we're the toplevel frame; otherwise we
@@ -372,16 +344,13 @@
}
}
- /* Try to preserve the links contained in the error description, like
- the error code.
-
- Also, in the case of SSL error pages about domain mismatch, see if
+ /* In the case of SSL error pages about domain mismatch, see if
we can hyperlink the user to the correct site. We don't want
to do this generically since it allows MitM attacks to redirect
users to a site under attacker control, but in certain cases
it is safe (and helpful!) to do so. Bug 402210
*/
- function addDomainErrorLinks() {
+ function addDomainErrorLink() {
// Rather than textContent, we need to treat description as HTML
var sdid = gIsCertError ? "badCertTechnicalInfo" : "errorShortDescText";
var sd = document.getElementById(sdid);
@@ -390,50 +359,28 @@
// sanitize description text - see bug 441169
- // First, find the index of the <a> tags we care about, being
+ // First, find the index of the <a> tag we care about, being
// careful not to use an over-greedy regex.
- var codeRe = /<a id="errorCode" title="([^"]+)">/;
- var codeResult = codeRe.exec(desc);
- var domainRe = /<a id="cert_domain_link" title="([^"]+)">/;
- var domainResult = domainRe.exec(desc);
-
- // The order of these links in the description is fixed in
- // TransportSecurityInfo.cpp:formatOverridableCertErrorMessage.
- var firstResult = domainResult;
- if (!domainResult)
- firstResult = codeResult;
- if (!firstResult)
+ var re = /<a id="cert_domain_link" title="([^"]+)">/;
+ var result = domainRe.exec(desc);
+
+ if (!result)
return;
// Remove sd's existing children
sd.textContent = "";
- // Everything up to the first link should be text content.
- sd.appendChild(document.createTextNode(desc.slice(0, firstResult.index)));
+ // Everything up to the link should be text content.
+ sd.appendChild(document.createTextNode(desc.slice(0, result.index)));
- // Now create the actual links.
- if (domainResult) {
- createLink(sd, "cert_domain_link", domainResult[1])
- // Append text for anything between the two links.
- sd.appendChild(document.createTextNode(desc.slice(desc.indexOf("</a>") + "</a>".length, codeResult.index)));
- }
- createLink(sd, "errorCode", codeResult[1])
+ // Now create the link itself.
+ var anchorEl = document.createElement("a");
+ anchorEl.setAttribute("id", "cert_domain_link");
+ anchorEl.setAttribute("title", result[1]);
+ anchorEl.appendChild(document.createTextNode(result[1]));
+ sd.appendChild(anchorEl);
- // Finally, append text for anything after the last closing </a>.
- sd.appendChild(document.createTextNode(desc.slice(desc.lastIndexOf("</a>") + "</a>".length)));
- }
-
- if (gIsCertError) {
- // Initialize the error code link embedded in the error message to
- // display debug information about the cert error.
- var errorCode = document.getElementById("errorCode");
- if (errorCode) {
- errorCode.href = "javascript:void(0)";
- errorCode.addEventListener("click", () => {
- let debugInfo = document.getElementById("certificateErrorDebugInformation");
- debugInfo.style.display = "block";
- debugInfo.scrollIntoView({block: "start", behavior: "smooth"});
- }, false);
- }
+ // Finally, append text for anything after the closing </a>.
+ sd.appendChild(document.createTextNode(desc.slice(desc.indexOf("</a>") + "</a>".length)));
}
// Initialize the cert domain link.
@@ -479,23 +426,8 @@
if (link.href && getCSSClass() != "expertBadCert") {
var panelId = gIsCertError ? "badCertAdvancedPanel" : "weakCryptoAdvancedPanel"
toggleDisplay(document.getElementById(panelId));
- if (gIsCertError) {
- // Toggling the advanced panel must ensure that the debugging
- // information panel is hidden as well, since it's opened by the
- // error code link in the advanced panel.
- var div = document.getElementById("certificateErrorDebugInformation");
- div.style.display = "none";
- }
}
}
-
- function createLink(el, id, text) {
- var anchorEl = document.createElement("a");
- anchorEl.setAttribute("id", id);
- anchorEl.setAttribute("title", text);
- anchorEl.appendChild(document.createTextNode(text));
- el.appendChild(anchorEl);
- }
]]></script>
</head>
@@ -628,12 +560,6 @@
</div>
- <div id="certificateErrorDebugInformation">
- <button id="copyToClipboard">&certerror.copyToClipboard.label;</button>
- <div id="certificateErrorText"/>
- <button id="copyToClipboard">&certerror.copyToClipboard.label;</button>
- </div>
-
<!--
- Note: It is important to run the script this way, instead of using
- an onload handler. This is because error pages are loaded as
diff --git a/application/basilisk/base/content/browser-fullScreenAndPointerLock.js b/application/basilisk/base/content/browser-fullScreenAndPointerLock.js
index dbc9478c1f..ebe55377fc 100644
--- a/application/basilisk/base/content/browser-fullScreenAndPointerLock.js
+++ b/application/basilisk/base/content/browser-fullScreenAndPointerLock.js
@@ -379,12 +379,10 @@ var FullScreen = {
let topWin = event.target.ownerGlobal.top;
browser = gBrowser.getBrowserForContentWindow(topWin);
}
- TelemetryStopwatch.start("FULLSCREEN_CHANGE_MS");
this.enterDomFullscreen(browser);
break;
}
case "MozDOMFullscreen:Exited":
- TelemetryStopwatch.start("FULLSCREEN_CHANGE_MS");
this.cleanupDomFullscreen();
break;
}
@@ -410,7 +408,6 @@ var FullScreen = {
}
case "DOMFullscreen:Painted": {
Services.obs.notifyObservers(window, "fullscreen-painted", "");
- TelemetryStopwatch.finish("FULLSCREEN_CHANGE_MS");
break;
}
}
diff --git a/application/basilisk/base/content/browser-fxaccounts.js b/application/basilisk/base/content/browser-fxaccounts.js
index 0bbce3e26d..94a591f1e5 100644
--- a/application/basilisk/base/content/browser-fxaccounts.js
+++ b/application/basilisk/base/content/browser-fxaccounts.js
@@ -4,8 +4,6 @@
var gFxAccounts = {
- SYNC_MIGRATION_NOTIFICATION_TITLE: "fxa-migration",
-
_initialized: false,
_inCustomizationMode: false,
_cachedProfile: null,
@@ -26,7 +24,6 @@ var gFxAccounts = {
"weave:service:setup-complete",
"weave:service:sync:error",
"weave:ui:login:error",
- "fxa-migration:state-changed",
this.FxAccountsCommon.ONLOGIN_NOTIFICATION,
this.FxAccountsCommon.ONLOGOUT_NOTIFICATION,
this.FxAccountsCommon.ON_PROFILE_CHANGE_NOTIFICATION,
@@ -122,9 +119,6 @@ var gFxAccounts = {
observe: function (subject, topic, data) {
switch (topic) {
- case "fxa-migration:state-changed":
- this.onMigrationStateChanged(data, subject);
- break;
case this.FxAccountsCommon.ON_PROFILE_CHANGE_NOTIFICATION:
this._cachedProfile = null;
// Fallthrough intended
@@ -134,48 +128,6 @@ var gFxAccounts = {
}
},
- onMigrationStateChanged: function () {
- // Since we nuked most of the migration code, this notification will fire
- // once after legacy Sync has been disconnected (and should never fire
- // again)
- let nb = window.document.getElementById("global-notificationbox");
-
- let msg = this.strings.GetStringFromName("autoDisconnectDescription")
- let signInLabel = this.strings.GetStringFromName("autoDisconnectSignIn.label");
- let signInAccessKey = this.strings.GetStringFromName("autoDisconnectSignIn.accessKey");
- let learnMoreLink = this.fxaMigrator.learnMoreLink;
-
- let buttons = [
- {
- label: signInLabel,
- accessKey: signInAccessKey,
- callback: () => {
- this.openPreferences();
- }
- }
- ];
-
- let fragment = document.createDocumentFragment();
- let msgNode = document.createTextNode(msg);
- fragment.appendChild(msgNode);
- if (learnMoreLink) {
- let link = document.createElement("label");
- link.className = "text-link";
- link.setAttribute("value", learnMoreLink.text);
- link.href = learnMoreLink.href;
- fragment.appendChild(link);
- }
-
- nb.appendNotification(fragment,
- this.SYNC_MIGRATION_NOTIFICATION_TITLE,
- undefined,
- nb.PRIORITY_WARNING_LOW,
- buttons);
-
- // ensure the hamburger menu reflects the newly disconnected state.
- this.updateAppMenuItem();
- },
-
handleEvent: function (event) {
this._inCustomizationMode = event.type == "customizationstarting";
this.updateAppMenuItem();
diff --git a/application/basilisk/base/content/browser-gestureSupport.js b/application/basilisk/base/content/browser-gestureSupport.js
index f472e5c9a2..6c21a6ad59 100644
--- a/application/basilisk/base/content/browser-gestureSupport.js
+++ b/application/basilisk/base/content/browser-gestureSupport.js
@@ -1001,13 +1001,10 @@ var gHistorySwipeAnimation = {
ctx.DRAWWINDOW_ASYNC_DECODE_IMAGES |
ctx.DRAWWINDOW_USE_WIDGET_LAYERS);
- TelemetryStopwatch.start("FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE");
try {
this._installCurrentPageSnapshot(canvas);
this._assignSnapshotToCurrentBrowser(canvas);
- } finally {
- TelemetryStopwatch.finish("FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE");
- }
+ } catch (e) {}
},
/**
@@ -1058,7 +1055,6 @@ var gHistorySwipeAnimation = {
return;
}
- TelemetryStopwatch.start("FX_GESTURE_COMPRESS_SNAPSHOT_OF_PAGE");
try {
let browser = gBrowser.selectedBrowser;
let snapshots = browser.snapshots;
@@ -1072,9 +1068,7 @@ var gHistorySwipeAnimation = {
}
}, "image/png"
);
- } finally {
- TelemetryStopwatch.finish("FX_GESTURE_COMPRESS_SNAPSHOT_OF_PAGE");
- }
+ } catch (e) {}
},
/**
diff --git a/application/basilisk/base/content/browser.js b/application/basilisk/base/content/browser.js
index 9ec7715fae..4f4ebb08f0 100644
--- a/application/basilisk/base/content/browser.js
+++ b/application/basilisk/base/content/browser.js
@@ -45,7 +45,6 @@ Cu.import("resource://gre/modules/NotificationDB.jsm");
["SitePermissions", "resource:///modules/SitePermissions.jsm"],
["TabCrashHandler", "resource:///modules/ContentCrashHandlers.jsm"],
["Task", "resource://gre/modules/Task.jsm"],
- ["TelemetryStopwatch", "resource://gre/modules/TelemetryStopwatch.jsm"],
["Translation", "resource:///modules/translation/Translation.jsm"],
["UpdateUtils", "resource://gre/modules/UpdateUtils.jsm"],
["Weave", "resource://services-sync/main.js"],
@@ -2888,24 +2887,7 @@ var BrowserOnClick = {
secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_BAD_CERT_TOP_UNDERSTAND_RISKS);
}
- securityInfo = getSecurityInfo(securityInfoAsString);
- let errorInfo = getDetailedCertErrorInfo(location,
- securityInfo);
- browser.messageManager.sendAsyncMessage( "CertErrorDetails", {
- code: securityInfo.errorCode,
- info: errorInfo
- });
- break;
-
- case "copyToClipboard":
- const gClipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"]
- .getService(Ci.nsIClipboardHelper);
- securityInfo = getSecurityInfo(securityInfoAsString);
- let detailedInfo = getDetailedCertErrorInfo(location,
- securityInfo);
- gClipboardHelper.copyString(detailedInfo);
break;
-
}
},
@@ -3145,81 +3127,6 @@ function getSecurityInfo(securityInfoAsString) {
return securityInfo;
}
-/**
- * Returns a string with detailed information about the certificate validation
- * failure from the specified URI that can be used to send a report.
- */
-function getDetailedCertErrorInfo(location, securityInfo) {
- if (!securityInfo)
- return "";
-
- let certErrorDetails = location;
- let code = securityInfo.errorCode;
- let errors = Cc["@mozilla.org/nss_errors_service;1"]
- .getService(Ci.nsINSSErrorsService);
-
- certErrorDetails += "\r\n\r\n" + errors.getErrorMessage(errors.getXPCOMFromNSSError(code));
-
- const sss = Cc["@mozilla.org/ssservice;1"]
- .getService(Ci.nsISiteSecurityService);
- // SiteSecurityService uses different storage if the channel is
- // private. Thus we must give isSecureHost correct flags or we
- // might get incorrect results.
- let flags = PrivateBrowsingUtils.isWindowPrivate(window) ?
- Ci.nsISocketProvider.NO_PERMANENT_STORAGE : 0;
-
- let uri = Services.io.newURI(location, null, null);
-
- let hasHSTS = sss.isSecureHost(sss.HEADER_HSTS, uri.host, flags);
- let hasHPKP = sss.isSecureHost(sss.HEADER_HPKP, uri.host, flags);
- certErrorDetails += "\r\n\r\n" +
- gNavigatorBundle.getFormattedString("certErrorDetailsHSTS.label",
- [hasHSTS]);
- certErrorDetails += "\r\n" +
- gNavigatorBundle.getFormattedString("certErrorDetailsKeyPinning.label",
- [hasHPKP]);
-
- let certChain = "";
- if (securityInfo.failedCertChain) {
- let certs = securityInfo.failedCertChain.getEnumerator();
- while (certs.hasMoreElements()) {
- let cert = certs.getNext();
- cert.QueryInterface(Ci.nsIX509Cert);
- certChain += getPEMString(cert);
- }
- }
-
- certErrorDetails += "\r\n\r\n" +
- gNavigatorBundle.getString("certErrorDetailsCertChain.label") +
- "\r\n\r\n" + certChain;
-
- return certErrorDetails;
-}
-
-// TODO: can we pull getDERString and getPEMString in from pippki.js instead of
-// duplicating them here?
-function getDERString(cert)
-{
- var length = {};
- var derArray = cert.getRawDER(length);
- var derString = '';
- for (var i = 0; i < derArray.length; i++) {
- derString += String.fromCharCode(derArray[i]);
- }
- return derString;
-}
-
-function getPEMString(cert)
-{
- var derb64 = btoa(getDERString(cert));
- // Wrap the Base64 string into lines of 64 characters,
- // with CRLF line breaks (as specified in RFC 1421).
- var wrapped = derb64.replace(/(\S{64}(?!$))/g, "$1\r\n");
- return "-----BEGIN CERTIFICATE-----\r\n"
- + wrapped
- + "\r\n-----END CERTIFICATE-----\r\n";
-}
-
var PrintPreviewListener = {
_printPreviewTab: null,
_tabBeforePrintPreview: null,
@@ -3910,8 +3817,6 @@ function toOpenWindowByType(inType, uri, features)
function OpenBrowserWindow(options)
{
- var telemetryObj = {};
- TelemetryStopwatch.start("FX_NEW_WINDOW_MS", telemetryObj);
function newDocumentShown(doc, topic, data) {
if (topic == "document-shown" &&
@@ -3919,7 +3824,6 @@ function OpenBrowserWindow(options)
doc.defaultView == win) {
Services.obs.removeObserver(newDocumentShown, "document-shown");
Services.obs.removeObserver(windowClosed, "domwindowclosed");
- TelemetryStopwatch.finish("FX_NEW_WINDOW_MS", telemetryObj);
}
}
@@ -4715,25 +4619,6 @@ var TabsProgressListener = {
_startedLoadTimer: new WeakSet(),
onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
- // Collect telemetry data about tab load times.
- if (aWebProgress.isTopLevel && (!aRequest.originalURI || aRequest.originalURI.spec.scheme != "about")) {
- if (aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW) {
- if (aStateFlags & Ci.nsIWebProgressListener.STATE_START) {
- this._startedLoadTimer.add(aBrowser);
- TelemetryStopwatch.start("FX_PAGE_LOAD_MS", aBrowser);
- Services.telemetry.getHistogramById("FX_TOTAL_TOP_VISITS").add(true);
- } else if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
- this._startedLoadTimer.has(aBrowser)) {
- this._startedLoadTimer.delete(aBrowser);
- TelemetryStopwatch.finish("FX_PAGE_LOAD_MS", aBrowser);
- }
- } else if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
- aStatus == Cr.NS_BINDING_ABORTED &&
- this._startedLoadTimer.has(aBrowser)) {
- this._startedLoadTimer.delete(aBrowser);
- TelemetryStopwatch.cancel("FX_PAGE_LOAD_MS", aBrowser);
- }
- }
// We used to listen for clicks in the browser here, but when that
// became unnecessary, removing the code below caused focus issues.
diff --git a/application/basilisk/base/content/browser.xul b/application/basilisk/base/content/browser.xul
index 982edfcd99..74a90f5e0d 100644
--- a/application/basilisk/base/content/browser.xul
+++ b/application/basilisk/base/content/browser.xul
@@ -521,8 +521,7 @@
tabbrowser="content"
flex="1"
setfocus="false"
- tooltip="tabbrowser-tab-tooltip"
- stopwatchid="FX_TAB_CLICK_MS">
+ tooltip="tabbrowser-tab-tooltip">
<tab class="tabbrowser-tab" selected="true" visuallyselected="true" fadein="true"/>
</tabs>
diff --git a/application/basilisk/base/content/content.js b/application/basilisk/base/content/content.js
index 88e58b5015..5accbdf7b7 100644
--- a/application/basilisk/base/content/content.js
+++ b/application/basilisk/base/content/content.js
@@ -298,12 +298,10 @@ var AboutNetAndCertErrorListener = {
onCertErrorDetails(msg) {
let div = content.document.getElementById("certificateErrorText");
div.textContent = msg.data.info;
- let learnMoreLink = content.document.getElementById("learnMoreLink");
let baseURL = Services.urlFormatter.formatURLPref("app.support.baseURL");
switch (msg.data.code) {
case SEC_ERROR_UNKNOWN_ISSUER:
- learnMoreLink.href = baseURL + "security-error";
break;
// in case the certificate expired we make sure the system clock
@@ -336,7 +334,6 @@ var AboutNetAndCertErrorListener = {
content.document.getElementById("wrongSystemTimePanel")
.style.display = "block";
}
- learnMoreLink.href = baseURL + "time-errors";
break;
}
},
diff --git a/application/basilisk/base/content/sanitize.js b/application/basilisk/base/content/sanitize.js
index 8413765806..0a00defa4c 100644
--- a/application/basilisk/base/content/sanitize.js
+++ b/application/basilisk/base/content/sanitize.js
@@ -19,8 +19,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "Task",
"resource://gre/modules/Task.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "DownloadsCommon",
"resource:///modules/DownloadsCommon.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
- "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "console",
"resource://gre/modules/Console.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Preferences",
@@ -154,8 +152,6 @@ Sanitizer.prototype = {
// we catch and store them, but continue to sanitize as much as possible.
// Callers should check returned errors and give user feedback
// about items that could not be sanitized
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_TOTAL", refObj);
let annotateError = (name, ex) => {
progress[name] = "failed";
@@ -188,7 +184,7 @@ Sanitizer.prototype = {
}
// Sanitization is complete.
- TelemetryStopwatch.finish("FX_SANITIZE_TOTAL", refObj);
+
// Reset the inProgress preference since we were not killed during
// sanitization.
Preferences.reset(Sanitizer.PREF_SANITIZE_IN_PROGRESS);
@@ -210,8 +206,6 @@ Sanitizer.prototype = {
cache: {
clear: Task.async(function* (range) {
let seenException;
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_CACHE", refObj);
try {
// Cache doesn't consult timespan, nor does it have the
@@ -232,7 +226,6 @@ Sanitizer.prototype = {
seenException = ex;
}
- TelemetryStopwatch.finish("FX_SANITIZE_CACHE", refObj);
if (seenException) {
throw seenException;
}
@@ -243,10 +236,8 @@ Sanitizer.prototype = {
clear: Task.async(function* (range) {
let seenException;
let yieldCounter = 0;
- let refObj = {};
// Clear cookies.
- TelemetryStopwatch.start("FX_SANITIZE_COOKIES_2", refObj);
try {
let cookieMgr = Components.classes["@mozilla.org/cookiemanager;1"]
.getService(Ci.nsICookieManager);
@@ -274,8 +265,6 @@ Sanitizer.prototype = {
}
} catch (ex) {
seenException = ex;
- } finally {
- TelemetryStopwatch.finish("FX_SANITIZE_COOKIES_2", refObj);
}
// Clear deviceIds. Done asynchronously (returns before complete).
@@ -332,13 +321,6 @@ Sanitizer.prototype = {
if (!range || age >= 0) {
let tags = ph.getPluginTags();
for (let tag of tags) {
- let refObj = {};
- let probe = "";
- if (/\bFlash\b/.test(tag.name)) {
- probe = tag.loaded ? "FX_SANITIZE_LOADED_FLASH"
- : "FX_SANITIZE_UNLOADED_FLASH";
- TelemetryStopwatch.start(probe, refObj);
- }
try {
let rv = yield new Promise(resolve =>
ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, age, resolve)
@@ -349,14 +331,8 @@ Sanitizer.prototype = {
ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, -1, resolve)
);
}
- if (probe) {
- TelemetryStopwatch.finish(probe, refObj);
- }
} catch (ex) {
// Ignore errors from plug-ins
- if (probe) {
- TelemetryStopwatch.cancel(probe, refObj);
- }
}
}
}
@@ -413,8 +389,6 @@ Sanitizer.prototype = {
history: {
clear: Task.async(function* (range) {
let seenException;
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_HISTORY", refObj);
try {
if (range) {
yield PlacesUtils.history.removeVisitsByFilter({
@@ -427,8 +401,6 @@ Sanitizer.prototype = {
}
} catch (ex) {
seenException = ex;
- } finally {
- TelemetryStopwatch.finish("FX_SANITIZE_HISTORY", refObj);
}
try {
@@ -455,8 +427,6 @@ Sanitizer.prototype = {
formdata: {
clear: Task.async(function* (range) {
let seenException;
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_FORMDATA", refObj);
try {
// Clear undo history of all searchBars
let windows = Services.wm.getEnumerator("navigator:browser");
@@ -504,7 +474,6 @@ Sanitizer.prototype = {
seenException = ex;
}
- TelemetryStopwatch.finish("FX_SANITIZE_FORMDATA", refObj);
if (seenException) {
throw seenException;
}
@@ -513,8 +482,6 @@ Sanitizer.prototype = {
downloads: {
clear: Task.async(function* (range) {
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_DOWNLOADS", refObj);
try {
let filterByTime = null;
if (range) {
@@ -528,16 +495,13 @@ Sanitizer.prototype = {
// Clear all completed/cancelled downloads
let list = yield Downloads.getList(Downloads.ALL);
list.removeFinished(filterByTime);
- } finally {
- TelemetryStopwatch.finish("FX_SANITIZE_DOWNLOADS", refObj);
- }
+ } catch (ex) {
+ }
})
},
sessions: {
clear: Task.async(function* (range) {
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_SESSIONS", refObj);
try {
// clear all auth tokens
@@ -547,17 +511,14 @@ Sanitizer.prototype = {
// clear FTP and plain HTTP auth sessions
Services.obs.notifyObservers(null, "net:clear-active-logins", null);
- } finally {
- TelemetryStopwatch.finish("FX_SANITIZE_SESSIONS", refObj);
- }
+ } catch (ex) {
+ }
})
},
siteSettings: {
clear: Task.async(function* (range) {
let seenException;
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_SITESETTINGS", refObj);
let startDateMS = range ? range[0] / 1000 : null;
@@ -615,7 +576,6 @@ Sanitizer.prototype = {
seenException = ex;
}
- TelemetryStopwatch.finish("FX_SANITIZE_SITESETTINGS", refObj);
if (seenException) {
throw seenException;
}
@@ -672,9 +632,6 @@ Sanitizer.prototype = {
// If/once we get here, we should actually be able to close all windows.
- let refObj = {};
- TelemetryStopwatch.start("FX_SANITIZE_OPENWINDOWS", refObj);
-
// First create a new window. We do this first so that on non-mac, we don't
// accidentally close the app by closing all the windows.
let handler = Cc["@mozilla.org/browser/clh;1"].getService(Ci.nsIBrowserHandler);
@@ -719,7 +676,6 @@ Sanitizer.prototype = {
newWindowOpened = true;
// If we're the last thing to happen, invoke callback.
if (numWindowsClosing == 0) {
- TelemetryStopwatch.finish("FX_SANITIZE_OPENWINDOWS", refObj);
resolve();
}
}
@@ -731,7 +687,6 @@ Sanitizer.prototype = {
Services.obs.removeObserver(onWindowClosed, "xul-window-destroyed");
// If we're the last thing to happen, invoke callback.
if (newWindowOpened) {
- TelemetryStopwatch.finish("FX_SANITIZE_OPENWINDOWS", refObj);
resolve();
}
}
diff --git a/application/basilisk/base/content/tabbrowser.xml b/application/basilisk/base/content/tabbrowser.xml
index f8dbcf364d..76ea5d167d 100644
--- a/application/basilisk/base/content/tabbrowser.xml
+++ b/application/basilisk/base/content/tabbrowser.xml
@@ -1042,11 +1042,6 @@
</body>
</method>
- <!-- Holds a unique ID for the tab change that's currently being timed.
- Used to make sure that multiple, rapid tab switches do not try to
- create overlapping timers. -->
- <field name="_tabSwitchID">null</field>
-
<method name="updateCurrentBrowser">
<parameter name="aForceUpdate"/>
<body>
@@ -1055,33 +1050,6 @@
if (this.mCurrentBrowser == newBrowser && !aForceUpdate)
return;
- if (!aForceUpdate) {
- TelemetryStopwatch.start("FX_TAB_SWITCH_UPDATE_MS");
- if (!gMultiProcessBrowser) {
- // old way of measuring tab paint which is not valid with e10s.
- // Waiting until the next MozAfterPaint ensures that we capture
- // the time it takes to paint, upload the textures to the compositor,
- // and then composite.
- if (this._tabSwitchID) {
- TelemetryStopwatch.cancel("FX_TAB_SWITCH_TOTAL_MS");
- }
-
- let tabSwitchID = Symbol();
-
- TelemetryStopwatch.start("FX_TAB_SWITCH_TOTAL_MS");
- this._tabSwitchID = tabSwitchID;
-
- let onMozAfterPaint = () => {
- if (this._tabSwitchID === tabSwitchID) {
- TelemetryStopwatch.finish("FX_TAB_SWITCH_TOTAL_MS");
- this._tabSwitchID = null;
- }
- window.removeEventListener("MozAfterPaint", onMozAfterPaint);
- }
- window.addEventListener("MozAfterPaint", onMozAfterPaint);
- }
- }
-
var oldTab = this.mCurrentTab;
// Preview mode should not reset the owner
@@ -1274,9 +1242,6 @@
});
this.dispatchEvent(event);
}
-
- if (!aForceUpdate)
- TelemetryStopwatch.finish("FX_TAB_SWITCH_UPDATE_MS");
]]>
</body>
</method>
@@ -4145,8 +4110,6 @@
*/
startTabSwitch: function () {
- TelemetryStopwatch.cancel("FX_TAB_SWITCH_TOTAL_E10S_MS", window);
- TelemetryStopwatch.start("FX_TAB_SWITCH_TOTAL_E10S_MS", window);
this.addMarker("AsyncTabSwitch:Start");
this.switchInProgress = true;
},
@@ -4162,31 +4125,18 @@
this.getTabState(this.requestedTab) == this.STATE_LOADED) {
// After this point the tab has switched from the content thread's point of view.
// The changes will be visible after the next refresh driver tick + composite.
- let time = TelemetryStopwatch.timeElapsed("FX_TAB_SWITCH_TOTAL_E10S_MS", window);
- if (time != -1) {
- TelemetryStopwatch.finish("FX_TAB_SWITCH_TOTAL_E10S_MS", window);
- this.log("DEBUG: tab switch time = " + time);
this.addMarker("AsyncTabSwitch:Finish");
- }
this.switchInProgress = false;
}
},
spinnerDisplayed: function () {
this.assert(!this.spinnerTab);
- TelemetryStopwatch.start("FX_TAB_SWITCH_SPINNER_VISIBLE_MS", window);
- // We have a second, similar probe for capturing recordings of
- // when the spinner is displayed for very long periods.
- TelemetryStopwatch.start("FX_TAB_SWITCH_SPINNER_VISIBLE_LONG_MS", window);
this.addMarker("AsyncTabSwitch:SpinnerShown");
},
spinnerHidden: function () {
this.assert(this.spinnerTab);
- this.log("DEBUG: spinner time = " +
- TelemetryStopwatch.timeElapsed("FX_TAB_SWITCH_SPINNER_VISIBLE_MS", window));
- TelemetryStopwatch.finish("FX_TAB_SWITCH_SPINNER_VISIBLE_MS", window);
- TelemetryStopwatch.finish("FX_TAB_SWITCH_SPINNER_VISIBLE_LONG_MS", window);
this.addMarker("AsyncTabSwitch:SpinnerHidden");
// we do not get a onPaint after displaying the spinner
this.maybeFinishTabSwitch();
diff --git a/application/basilisk/branding/official/disk.icns b/application/basilisk/branding/official/disk.icns
index 82fdccff8c..bb3fdd5e47 100644
--- a/application/basilisk/branding/official/disk.icns
+++ b/application/basilisk/branding/official/disk.icns
Binary files differ
diff --git a/application/basilisk/branding/official/document.icns b/application/basilisk/branding/official/document.icns
index 5f03305d71..388296713b 100644
--- a/application/basilisk/branding/official/document.icns
+++ b/application/basilisk/branding/official/document.icns
Binary files differ
diff --git a/application/basilisk/branding/official/firefox.icns b/application/basilisk/branding/official/firefox.icns
index 4d2ad5a042..8b9232cbab 100644
--- a/application/basilisk/branding/official/firefox.icns
+++ b/application/basilisk/branding/official/firefox.icns
Binary files differ
diff --git a/application/basilisk/components/migration/AutoMigrate.jsm b/application/basilisk/components/migration/AutoMigrate.jsm
index b387478253..003f70d706 100644
--- a/application/basilisk/components/migration/AutoMigrate.jsm
+++ b/application/basilisk/components/migration/AutoMigrate.jsm
@@ -37,8 +37,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "OS",
"resource://gre/modules/osfile.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
"resource://gre/modules/PlacesUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
- "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyGetter(this, "gBrandBundle", function() {
const kBrandBundle = "chrome://branding/locale/brand.properties";
@@ -211,7 +209,6 @@ const AutoMigrate = {
undo: Task.async(function* () {
let browserId = Preferences.get(kAutoMigrateBrowserPref, "unknown");
- TelemetryStopwatch.startKeyed("FX_STARTUP_MIGRATION_UNDO_TOTAL_MS", browserId);
let histogram = Services.telemetry.getHistogramById("FX_STARTUP_MIGRATION_AUTOMATED_IMPORT_UNDO");
histogram.add(0);
if (!(yield this.canUndo())) {
@@ -236,38 +233,24 @@ const AutoMigrate = {
Services.telemetry.getKeyedHistogramById(histogramId).add(browserId, this._errorMap[type]);
};
- let startTelemetryStopwatch = resourceType => {
- let histogramId = `FX_STARTUP_MIGRATION_UNDO_${resourceType.toUpperCase()}_MS`;
- TelemetryStopwatch.startKeyed(histogramId, browserId);
- };
- let stopTelemetryStopwatch = resourceType => {
- let histogramId = `FX_STARTUP_MIGRATION_UNDO_${resourceType.toUpperCase()}_MS`;
- TelemetryStopwatch.finishKeyed(histogramId, browserId);
- };
- startTelemetryStopwatch("bookmarks");
yield this._removeUnchangedBookmarks(stateData.get("bookmarks")).catch(ex => {
Cu.reportError("Uncaught exception when removing unchanged bookmarks!");
Cu.reportError(ex);
});
- stopTelemetryStopwatch("bookmarks");
reportErrorTelemetry("bookmarks");
histogram.add(15);
- startTelemetryStopwatch("visits");
yield this._removeSomeVisits(stateData.get("visits")).catch(ex => {
Cu.reportError("Uncaught exception when removing history visits!");
Cu.reportError(ex);
});
- stopTelemetryStopwatch("visits");
reportErrorTelemetry("visits");
histogram.add(20);
- startTelemetryStopwatch("logins");
yield this._removeUnchangedLogins(stateData.get("logins")).catch(ex => {
Cu.reportError("Uncaught exception when removing unchanged logins!");
Cu.reportError(ex);
});
- stopTelemetryStopwatch("logins");
reportErrorTelemetry("logins");
histogram.add(25);
@@ -278,7 +261,6 @@ const AutoMigrate = {
this._purgeUndoState(this.UNDO_REMOVED_REASON_UNDO_USED);
histogram.add(30);
- TelemetryStopwatch.finishKeyed("FX_STARTUP_MIGRATION_UNDO_TOTAL_MS", browserId);
}),
_removeNotificationBars() {
diff --git a/application/basilisk/components/migration/MigrationUtils.jsm b/application/basilisk/components/migration/MigrationUtils.jsm
index e133ec5203..ccae006fec 100644
--- a/application/basilisk/components/migration/MigrationUtils.jsm
+++ b/application/basilisk/components/migration/MigrationUtils.jsm
@@ -32,8 +32,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "ResponsivenessMonitor",
"resource://gre/modules/ResponsivenessMonitor.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Sqlite",
"resource://gre/modules/Sqlite.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
- "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "WindowsRegistry",
"resource://gre/modules/WindowsRegistry.jsm");
@@ -254,14 +252,6 @@ this.MigratorPrototype = {
let browserKey = this.getBrowserKey();
- let maybeStartTelemetryStopwatch = resourceType => {
- let histogramId = getHistogramIdForResourceType(resourceType, "FX_MIGRATION_*_IMPORT_MS");
- if (histogramId) {
- TelemetryStopwatch.startKeyed(histogramId, browserKey);
- }
- return histogramId;
- };
-
let maybeStartResponsivenessMonitor = resourceType => {
let responsivenessMonitor;
let responsivenessHistogramId =
@@ -323,8 +313,6 @@ this.MigratorPrototype = {
for (let [migrationType, itemResources] of resourcesGroupedByItems) {
notify("Migration:ItemBeforeMigrate", migrationType);
- let stopwatchHistogramId = maybeStartTelemetryStopwatch(migrationType);
-
let {responsivenessMonitor, responsivenessHistogramId} =
maybeStartResponsivenessMonitor(migrationType);
@@ -340,10 +328,6 @@ this.MigratorPrototype = {
migrationType);
resourcesGroupedByItems.delete(migrationType);
- if (stopwatchHistogramId) {
- TelemetryStopwatch.finishKeyed(stopwatchHistogramId, browserKey);
- }
-
maybeFinishResponsivenessMonitor(responsivenessMonitor, responsivenessHistogramId);
if (resourcesGroupedByItems.size == 0) {
diff --git a/application/basilisk/components/migration/content/migration.xul b/application/basilisk/components/migration/content/migration.xul
index e850910020..62c97c107c 100644
--- a/application/basilisk/components/migration/content/migration.xul
+++ b/application/basilisk/components/migration/content/migration.xul
@@ -24,11 +24,9 @@
<wizardpage id="importSource" pageid="importSource" next="selectProfile"
label="&importSource.title;"
onpageadvanced="return MigrationWizard.onImportSourcePageAdvanced();">
-#ifdef XP_WIN
+
<description id="importAll" control="importSourceGroup">&importFrom.label;</description>
-#else
- <description id="importAll" control="importSourceGroup">&importFromUnix.label;</description>
-#endif
+
<description id="importBookmarks" control="importSourceGroup" hidden="true">&importFromBookmarks.label;</description>
<radiogroup id="importSourceGroup" align="start">
diff --git a/application/basilisk/components/places/content/history-panel.js b/application/basilisk/components/places/content/history-panel.js
index 20dbbb5bd5..65f00e93b2 100644
--- a/application/basilisk/components/places/content/history-panel.js
+++ b/application/basilisk/components/places/content/history-panel.js
@@ -3,8 +3,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/. */
-Components.utils.import("resource://gre/modules/TelemetryStopwatch.jsm");
-
var gHistoryTree;
var gSearchBox;
var gHistoryGrouping = "";
@@ -81,16 +79,11 @@ function searchHistory(aInput)
options.resultType = resultType;
options.includeHidden = !!aInput;
- if (gHistoryGrouping == "lastvisited")
- this.TelemetryStopwatch.start("HISTORY_LASTVISITED_TREE_QUERY_TIME_MS");
-
// call load() on the tree manually
// instead of setting the place attribute in history-panel.xul
// otherwise, we will end up calling load() twice
gHistoryTree.load([query], options);
- if (gHistoryGrouping == "lastvisited")
- this.TelemetryStopwatch.finish("HISTORY_LASTVISITED_TREE_QUERY_TIME_MS");
}
window.addEventListener("SidebarFocused",
diff --git a/application/basilisk/components/places/content/places.js b/application/basilisk/components/places/content/places.js
index aa43b20e68..375c3de179 100644
--- a/application/basilisk/components/places/content/places.js
+++ b/application/basilisk/components/places/content/places.js
@@ -5,7 +5,6 @@
Components.utils.import("resource://gre/modules/AppConstants.jsm");
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-Components.utils.import("resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "MigrationUtils",
"resource:///modules/MigrationUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Task",
@@ -810,9 +809,7 @@ var PlacesSearchBox = {
currentView.load([query], options);
}
else {
- TelemetryStopwatch.start(HISTORY_LIBRARY_SEARCH_TELEMETRY);
currentView.applyFilter(filterString, null, true);
- TelemetryStopwatch.finish(HISTORY_LIBRARY_SEARCH_TELEMETRY);
}
break;
case "downloads":
diff --git a/application/basilisk/components/sessionstore/SessionFile.jsm b/application/basilisk/components/sessionstore/SessionFile.jsm
index 80c4e77904..3c55101e41 100644
--- a/application/basilisk/components/sessionstore/SessionFile.jsm
+++ b/application/basilisk/components/sessionstore/SessionFile.jsm
@@ -43,8 +43,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "PromiseUtils",
"resource://gre/modules/PromiseUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "RunState",
"resource:///modules/sessionstore/RunState.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
- "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Task",
"resource://gre/modules/Task.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "Telemetry",
diff --git a/application/basilisk/components/sessionstore/SessionSaver.jsm b/application/basilisk/components/sessionstore/SessionSaver.jsm
index d672f88774..fa3a675126 100644
--- a/application/basilisk/components/sessionstore/SessionSaver.jsm
+++ b/application/basilisk/components/sessionstore/SessionSaver.jsm
@@ -13,7 +13,6 @@ const Ci = Components.interfaces;
Cu.import("resource://gre/modules/Timer.jsm", this);
Cu.import("resource://gre/modules/Services.jsm", this);
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
-Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this);
XPCOMUtils.defineLazyModuleGetter(this, "AppConstants",
"resource://gre/modules/AppConstants.jsm");
@@ -52,19 +51,6 @@ function notify(subject, topic) {
Services.obs.notifyObservers(subject, topic, "");
}
-// TelemetryStopwatch helper functions.
-function stopWatch(method) {
- return function (...histograms) {
- for (let hist of histograms) {
- TelemetryStopwatch[method]("FX_SESSION_RESTORE_" + hist);
- }
- };
-}
-
-var stopWatchStart = stopWatch("start");
-var stopWatchCancel = stopWatch("cancel");
-var stopWatchFinish = stopWatch("finish");
-
/**
* The external API implemented by the SessionSaver module.
*/
@@ -182,7 +168,6 @@ var SessionSaverInternal = {
return Promise.resolve();
}
- stopWatchStart("COLLECT_DATA_MS", "COLLECT_DATA_LONGEST_OP_MS");
let state = SessionStore.getCurrentState(forceUpdateAllWindows);
PrivacyFilter.filterPrivateWindowsAndTabs(state);
@@ -226,7 +211,6 @@ var SessionSaverInternal = {
}
}
- stopWatchFinish("COLLECT_DATA_MS", "COLLECT_DATA_LONGEST_OP_MS");
return this._writeState(state);
},
diff --git a/application/basilisk/components/sessionstore/SessionStore.jsm b/application/basilisk/components/sessionstore/SessionStore.jsm
index 6b30943f38..e23b205fc0 100644
--- a/application/basilisk/components/sessionstore/SessionStore.jsm
+++ b/application/basilisk/components/sessionstore/SessionStore.jsm
@@ -135,7 +135,6 @@ Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm", this);
Cu.import("resource://gre/modules/Promise.jsm", this);
Cu.import("resource://gre/modules/Services.jsm", this);
Cu.import("resource://gre/modules/Task.jsm", this);
-Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this);
Cu.import("resource://gre/modules/TelemetryTimestamps.jsm", this);
Cu.import("resource://gre/modules/Timer.jsm", this);
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
@@ -564,7 +563,6 @@ var SessionStoreInternal = {
* Initialize the session using the state provided by SessionStartup
*/
initSession: function () {
- TelemetryStopwatch.start("FX_SESSION_RESTORE_STARTUP_INIT_SESSION_MS");
let state;
let ss = gSessionStartup;
@@ -640,7 +638,6 @@ var SessionStoreInternal = {
this._prefBranch.getBoolPref("sessionstore.resume_session_once"))
this._prefBranch.setBoolPref("sessionstore.resume_session_once", false);
- TelemetryStopwatch.finish("FX_SESSION_RESTORE_STARTUP_INIT_SESSION_MS");
return state;
},
@@ -1247,9 +1244,7 @@ var SessionStoreInternal = {
if (initialState) {
Services.obs.notifyObservers(null, NOTIFY_RESTORING_ON_STARTUP, "");
}
- TelemetryStopwatch.start("FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS");
this.initializeWindow(aWindow, initialState);
- TelemetryStopwatch.finish("FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS");
// Let everyone know we're done.
this._deferredInitialized.resolve();
@@ -2857,7 +2852,6 @@ var SessionStoreInternal = {
var activeWindow = this._getMostRecentBrowserWindow();
- TelemetryStopwatch.start("FX_SESSION_RESTORE_COLLECT_ALL_WINDOWS_DATA_MS");
if (RunState.isRunning) {
// update the data for all windows with activities since the last save operation
this._forEachBrowserWindow(function(aWindow) {
@@ -2872,7 +2866,6 @@ var SessionStoreInternal = {
});
DirtyWindows.clear();
}
- TelemetryStopwatch.finish("FX_SESSION_RESTORE_COLLECT_ALL_WINDOWS_DATA_MS");
// An array that at the end will hold all current window data.
var total = [];
@@ -2892,9 +2885,7 @@ var SessionStoreInternal = {
nonPopupCount++;
}
- TelemetryStopwatch.start("FX_SESSION_RESTORE_COLLECT_COOKIES_MS");
SessionCookies.update(total);
- TelemetryStopwatch.finish("FX_SESSION_RESTORE_COLLECT_COOKIES_MS");
// collect the data for all windows yet to be restored
for (ix in this._statesToRestore) {
@@ -3063,8 +3054,6 @@ var SessionStoreInternal = {
if (aWindow && (!aWindow.__SSi || !this._windows[aWindow.__SSi]))
this.onLoad(aWindow);
- TelemetryStopwatch.start("FX_SESSION_RESTORE_RESTORE_WINDOW_MS");
-
// We're not returning from this before we end up calling restoreTabs
// for this window, so make sure we send the SSWindowStateBusy event.
this._setWindowStateBusy(aWindow);
@@ -3235,8 +3224,6 @@ var SessionStoreInternal = {
// set smoothScroll back to the original value
tabstrip.smoothScroll = smoothScroll;
- TelemetryStopwatch.finish("FX_SESSION_RESTORE_RESTORE_WINDOW_MS");
-
this._setWindowStateReady(aWindow);
this._sendWindowRestoredNotification(aWindow);
diff --git a/application/basilisk/components/sessionstore/nsSessionStartup.js b/application/basilisk/components/sessionstore/nsSessionStartup.js
index 7593c48ece..9cda1552ef 100644
--- a/application/basilisk/components/sessionstore/nsSessionStartup.js
+++ b/application/basilisk/components/sessionstore/nsSessionStartup.js
@@ -37,7 +37,6 @@ const Cr = Components.results;
const Cu = Components.utils;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/TelemetryStopwatch.jsm");
Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
Cu.import("resource://gre/modules/Promise.jsm");
diff --git a/application/basilisk/locales/en-US/chrome/browser/browser.properties b/application/basilisk/locales/en-US/chrome/browser/browser.properties
index aa7a82e4f6..f1c39839b2 100644
--- a/application/basilisk/locales/en-US/chrome/browser/browser.properties
+++ b/application/basilisk/locales/en-US/chrome/browser/browser.properties
@@ -679,13 +679,6 @@ weakCryptoOverriding.message = %S recommends that you don’t enter your passwor
revokeOverride.label = Don’t Trust This Website
revokeOverride.accesskey = D
-# LOCALIZATION NOTE (certErrorDetails*.label): These are text strings that
-# appear in the about:certerror page, so that the user can copy and send them to
-# the server administrators for troubleshooting.
-certErrorDetailsHSTS.label = HTTP Strict Transport Security: %S
-certErrorDetailsKeyPinning.label = HTTP Public Key Pinning: %S
-certErrorDetailsCertChain.label = Certificate chain:
-
# LOCALIZATION NOTE (pendingCrashReports2.label): Semi-colon list of plural forms
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
# #1 is the number of pending crash reports
diff --git a/application/basilisk/locales/en-US/chrome/overrides/netError.dtd b/application/basilisk/locales/en-US/chrome/overrides/netError.dtd
index 8728474586..55da9a36cf 100644
--- a/application/basilisk/locales/en-US/chrome/overrides/netError.dtd
+++ b/application/basilisk/locales/en-US/chrome/overrides/netError.dtd
@@ -203,7 +203,6 @@ was trying to connect. -->
Strict Transport Security (HSTS) to specify that &brandShortName; may only connect
to it securely. As a result, it is not possible to add an exception for this
certificate.">
-<!ENTITY certerror.copyToClipboard.label "Copy text to clipboard">
<!ENTITY inadequateSecurityError.title "Your connection is not secure">
<!-- LOCALIZATION NOTE (inadequateSecurityError.longDesc) - Do not translate
diff --git a/application/basilisk/themes/shared/aboutNetError.css b/application/basilisk/themes/shared/aboutNetError.css
index c0b76aa474..7e1e7c32b8 100644
--- a/application/basilisk/themes/shared/aboutNetError.css
+++ b/application/basilisk/themes/shared/aboutNetError.css
@@ -39,10 +39,6 @@ button:disabled {
display: none;
}
-#learnMoreContainer {
- display: none;
-}
-
#certErrorAndCaptivePortalButtonContainer {
display: none;
}
@@ -132,16 +128,12 @@ span#hostname {
line-height: 16px
}
-#errorCode:not([href]) {
+#errorCode {
color: var(--in-content-page-color);
cursor: text;
text-decoration: none;
}
-#errorCode[href] {
- white-space: nowrap;
-}
-
#badCertTechnicalInfo {
overflow: auto;
white-space: pre-wrap;
@@ -150,20 +142,3 @@ span#hostname {
#certificateErrorReporting {
display: none;
}
-
-#certificateErrorDebugInformation {
- display: none;
- background-color: var(--in-content-box-background-hover) !important;
- border-top: 1px solid var(--in-content-border-color);
- position: absolute;
- left: 0%;
- top: 100%;
- width: 65%;
- padding: 1em 17.5%;
-}
-
-#certificateErrorText {
- font-family: monospace;
- white-space: pre-wrap;
- padding: 1em 0;
-}
diff --git a/application/palemoon/app/blocklist.xml b/application/palemoon/app/blocklist.xml
index 296b8ad244..d557841697 100644
--- a/application/palemoon/app/blocklist.xml
+++ b/application/palemoon/app/blocklist.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
-<blocklist lastupdate="1521130300000"
+<blocklist lastupdate="1534840140000"
xmlns="http://www.mozilla.org/2006/addons-blocklist">
<emItems>
<emItem blockID="i545" id="superlrcs@svenyor.net">
@@ -2513,7 +2513,17 @@ xmlns="http://www.mozilla.org/2006/addons-blocklist">
<versionRange minVersion="0" maxVersion="52.4.2" severity="3">
</versionRange>
<prefs></prefs>
- </emItem>
+ </emItem>
+ <emItem blockID="pm112" id="{73a6fe31-595d-460b-a920-fcc0f8843232}">
+ <versionRange minVersion="0" maxVersion="*" severity="1">
+ </versionRange>
+ <prefs></prefs>
+ </emItem>
+ <emItem blockID="pm113" id="addonsmanagerfix@sonco.com">
+ <versionRange minVersion="0" maxVersion="*" severity="3">
+ </versionRange>
+ <prefs></prefs>
+ </emItem>
</emItems>
<pluginItems>
<pluginItem blockID="p26">
diff --git a/application/palemoon/app/profile/palemoon.js b/application/palemoon/app/profile/palemoon.js
index 22c4f86541..15accd1467 100644
--- a/application/palemoon/app/profile/palemoon.js
+++ b/application/palemoon/app/profile/palemoon.js
@@ -59,9 +59,9 @@ pref("extensions.blocklist.level.updated", false);
// Controls what level the blocklist switches from warning about items to forcibly
// blocking them.
pref("extensions.blocklist.level", 2);
-pref("extensions.blocklist.url", "http://blocklist.palemoon.org/%VERSION%/blocklist.xml");
+pref("extensions.blocklist.url", "https://blocklist.palemoon.org/?version=%VERSION%");
pref("extensions.blocklist.detailsURL", "https://blocklist.palemoon.org/about.shtml");
-pref("extensions.blocklist.itemURL", "http://blocklist.palemoon.org/info/?id=%blockID%");
+pref("extensions.blocklist.itemURL", "https://blocklist.palemoon.org/info/?id=%blockID%");
pref("extensions.update.autoUpdateDefault", true);
@@ -544,6 +544,25 @@ pref("privacy.sanitize.migrateFx3Prefs", false);
pref("network.proxy.share_proxy_settings", false); // use the same proxy settings for all protocols
+// Disable speculative half-open connections on Pale Moon
+pref("network.http.speculative-parallel-limit", 0);
+
+// Enable pipelining over SSL
+pref("network.http.pipelining.ssl", true);
+
+// Disable predictor/prefetch of URIs
+pref("network.predictor.enabled", false);
+pref("network.prefetch-next", false);
+
+// Disable DNS prefetching
+pref("network.dns.disablePrefetch", true);
+
+// Tune DNS lookups
+pref("network.dnsCacheEntries", 800);
+pref("network.dnsCacheExpiration", 180); // 3 minutes if no TTL given by DNS resolver
+pref("network.dns.get-ttl", true); // Get and use DNS resolver TTL
+pref("network.dnsCacheExpirationGracePeriod", 60); // 1 minute grace period for stale entry
+
// simple gestures support
pref("browser.gesture.swipe.left", "Browser:BackOrBackDuplicate");
pref("browser.gesture.swipe.right", "Browser:ForwardOrForwardDuplicate");
diff --git a/application/palemoon/base/content/aboutDialog.xul b/application/palemoon/base/content/aboutDialog.xul
index 743ff21df8..5c344f55da 100644
--- a/application/palemoon/base/content/aboutDialog.xul
+++ b/application/palemoon/base/content/aboutDialog.xul
@@ -88,6 +88,7 @@
</vbox>
<description class="text-pmcreds">
+#if defined(MOZ_OFFICIAL_BRANDING) || defined(MC_OFFICIAL)
#ifdef MC_PRIVATE_BUILD
This is a private build of Pale Moon. If you did not manually build this copy from source yourself, then please download an official version from the <label class="text-link" href="http://www.palemoon.org/">Pale Moon website</label>.
#else
@@ -100,6 +101,12 @@
If you wish to contribute, please consider helping out by providing support to other users on the <label class="text-link" href="https://forum.palemoon.org/">Pale Moon forum</label>
or getting involved in our development by tackling some of the issues found in our GitHub issue tracker.
#endif
+#else
+ &brandFullName; is released by &vendorShortName;.
+ </description>
+ <description class="text-blurb">
+ This is an unofficial build of Pale Moon. For official builds, please go to <label class="text-link" href="http://www.palemoon.org/">the Pale Moon website</label>.
+#endif
</description>
</vbox>
</vbox>
diff --git a/application/palemoon/base/content/baseMenuOverlay.xul b/application/palemoon/base/content/baseMenuOverlay.xul
index f61348c9f2..e9019dc55c 100644
--- a/application/palemoon/base/content/baseMenuOverlay.xul
+++ b/application/palemoon/base/content/baseMenuOverlay.xul
@@ -41,7 +41,7 @@
label="&helpMenu.label;"
accesskey="&helpMenu.accesskey;">
#endif
- <menupopup id="menu_HelpPopup" onpopupshowing="buildHelpMenu();">
+ <menupopup id="menu_HelpPopup">
<menuitem id="menu_openHelp"
oncommand="openHelpLink('firefox-help')"
onclick="checkForMiddleClick(this, event);"
diff --git a/application/palemoon/base/content/blockedSite.xhtml b/application/palemoon/base/content/blockedSite.xhtml
deleted file mode 100644
index b56875eb6c..0000000000
--- a/application/palemoon/base/content/blockedSite.xhtml
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE html [
- <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
- %htmlDTD;
- <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
- %globalDTD;
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
- <!ENTITY % blockedSiteDTD SYSTEM "chrome://browser/locale/safebrowsing/phishing-afterload-warning-message.dtd">
- %blockedSiteDTD;
-]>
-
-<!-- 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/. -->
-
-<html xmlns="http://www.w3.org/1999/xhtml" class="blacklist">
- <head>
- <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all" />
- <link rel="icon" type="image/png" id="favicon" href="chrome://global/skin/icons/blacklist_favicon.png"/>
-
- <script type="application/javascript"><![CDATA[
- // Error url MUST be formatted like this:
- // about:blocked?e=error_code&u=url
-
- // Note that this file uses document.documentURI to get
- // the URL (with the format from above). This is because
- // document.location.href gets the current URI off the docshell,
- // which is the URL displayed in the location bar, i.e.
- // the URI that the user attempted to load.
-
- function getErrorCode()
- {
- var url = document.documentURI;
- var error = url.search(/e\=/);
- var duffUrl = url.search(/\&u\=/);
- return decodeURIComponent(url.slice(error + 2, duffUrl));
- }
-
- function getURL()
- {
- var url = document.documentURI;
- var match = url.match(/&u=([^&]+)&/);
-
- // match == null if not found; if so, return an empty string
- // instead of what would turn out to be portions of the URI
- if (!match)
- return "";
-
- url = decodeURIComponent(match[1]);
-
- // If this is a view-source page, then get then real URI of the page
- if (url.startsWith("view-source:"))
- url = url.slice(12);
- return url;
- }
-
- /**
- * Attempt to get the hostname via document.location. Fail back
- * to getURL so that we always return something meaningful.
- */
- function getHostString()
- {
- try {
- return document.location.hostname;
- } catch (e) {
- return getURL();
- }
- }
-
- function initPage()
- {
- // Handoff to the appropriate initializer, based on error code
- switch (getErrorCode()) {
- case "malwareBlocked" :
- initPage_malware();
- break;
- case "phishingBlocked" :
- initPage_phishing();
- break;
- }
- }
-
- /**
- * Initialize custom strings and functionality for blocked malware case
- */
- function initPage_malware()
- {
- // Remove phishing strings
- var el = document.getElementById("errorTitleText_phishing");
- el.parentNode.removeChild(el);
-
- el = document.getElementById("errorShortDescText_phishing");
- el.parentNode.removeChild(el);
-
- el = document.getElementById("errorLongDescText_phishing");
- el.parentNode.removeChild(el);
-
- // Set sitename
- document.getElementById("malware_sitename").textContent = getHostString();
- document.title = document.getElementById("errorTitleText_malware")
- .innerHTML;
- }
-
- /**
- * Initialize custom strings and functionality for blocked phishing case
- */
- function initPage_phishing()
- {
- // Remove malware strings
- var el = document.getElementById("errorTitleText_malware");
- el.parentNode.removeChild(el);
-
- el = document.getElementById("errorShortDescText_malware");
- el.parentNode.removeChild(el);
-
- el = document.getElementById("errorLongDescText_malware");
- el.parentNode.removeChild(el);
-
- // Set sitename
- document.getElementById("phishing_sitename").textContent = getHostString();
- document.title = document.getElementById("errorTitleText_phishing")
- .innerHTML;
- }
- ]]></script>
- <style type="text/css">
- /* Style warning button to look like a small text link in the
- bottom right. This is preferable to just using a text link
- since there is already a mechanism in browser.js for trapping
- oncommand events from unprivileged chrome pages (BrowserOnCommand).*/
- #ignoreWarningButton {
- -moz-appearance: none;
- background: transparent;
- border: none;
- color: white; /* Hard coded because netError.css forces this page's background to dark red */
- text-decoration: underline;
- margin: 0;
- padding: 0;
- position: relative;
- top: 23px;
- left: 20px;
- font-size: smaller;
- }
-
- #ignoreWarning {
- text-align: right;
- }
- </style>
- </head>
-
- <body dir="&locale.dir;">
- <div id="errorPageContainer">
-
- <!-- Error Title -->
- <div id="errorTitle">
- <h1 id="errorTitleText_phishing">&safeb.blocked.phishingPage.title;</h1>
- <h1 id="errorTitleText_malware">&safeb.blocked.malwarePage.title;</h1>
- </div>
-
- <div id="errorLongContent">
-
- <!-- Short Description -->
- <div id="errorShortDesc">
- <p id="errorShortDescText_phishing">&safeb.blocked.phishingPage.shortDesc;</p>
- <p id="errorShortDescText_malware">&safeb.blocked.malwarePage.shortDesc;</p>
- </div>
-
- <!-- Long Description -->
- <div id="errorLongDesc">
- <p id="errorLongDescText_phishing">&safeb.blocked.phishingPage.longDesc;</p>
- <p id="errorLongDescText_malware">&safeb.blocked.malwarePage.longDesc;</p>
- </div>
-
- <!-- Action buttons -->
- <div id="buttons">
- <!-- Commands handled in browser.js -->
- <button id="getMeOutButton">&safeb.palm.accept.label;</button>
- <button id="reportButton">&safeb.palm.reportPage.label;</button>
- </div>
- </div>
- <div id="ignoreWarning">
- <button id="ignoreWarningButton">&safeb.palm.decline.label;</button>
- </div>
- </div>
- <!--
- - Note: It is important to run the script this way, instead of using
- - an onload handler. This is because error pages are loaded as
- - LOAD_BACKGROUND, which means that onload handlers will not be executed.
- -->
- <script type="application/javascript">initPage();</script>
- </body>
-</html>
diff --git a/application/palemoon/base/content/browser-sets.inc b/application/palemoon/base/content/browser-sets.inc
index 64228678ec..25794a65ce 100644
--- a/application/palemoon/base/content/browser-sets.inc
+++ b/application/palemoon/base/content/browser-sets.inc
@@ -79,7 +79,6 @@
<command id="Browser:NextTab" oncommand="gBrowser.tabContainer.advanceSelectedTab(1, true);"/>
<command id="Browser:PrevTab" oncommand="gBrowser.tabContainer.advanceSelectedTab(-1, true);"/>
<command id="Browser:ShowAllTabs" oncommand="allTabs.open();"/>
- <command id="Browser:FocusNextFrame" oncommand="focusNextFrame(event);"/>
<command id="cmd_fullZoomReduce" oncommand="FullZoom.reduce()"/>
<command id="cmd_fullZoomEnlarge" oncommand="FullZoom.enlarge()"/>
<command id="cmd_fullZoomReset" oncommand="FullZoom.reset()"/>
@@ -251,8 +250,6 @@
#ifndef XP_MACOSX
<key id="showAllHistoryKb" key="&showAllHistoryCmd.commandkey;" command="Browser:ShowAllHistory" modifiers="accel,shift"/>
<key keycode="VK_F5" command="Browser:ReloadSkipCache" modifiers="accel"/>
- <key keycode="VK_F6" command="Browser:FocusNextFrame"/>
- <key keycode="VK_F6" command="Browser:FocusNextFrame" modifiers="shift"/>
<key id="key_fullScreen" keycode="VK_F11" command="View:FullScreen"/>
#else
<key id="key_fullScreen" key="&fullScreenCmd.macCommandKey;" command="View:FullScreen" modifiers="accel,control"/>
diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js
index 386bd418b9..c7a2633d42 100644
--- a/application/palemoon/base/content/browser.js
+++ b/application/palemoon/base/content/browser.js
@@ -1051,6 +1051,8 @@ var gBrowserInit = {
// [3]: postData (nsIInputStream)
// [4]: allowThirdPartyFixup (bool)
// [5]: referrerPolicy (int)
+ // [6]: originPrincipal (nsIPrincipal)
+ // [7]: triggeringPrincipal (nsIPrincipal)
else if (window.arguments.length >= 3) {
let referrerURI = window.arguments[2];
if (typeof(referrerURI) == "string") {
@@ -1063,7 +1065,10 @@ var gBrowserInit = {
let referrerPolicy = (window.arguments[5] != undefined ?
window.arguments[5] : Ci.nsIHttpChannel.REFERRER_POLICY_DEFAULT);
loadURI(uriToLoad, referrerURI, window.arguments[3] || null,
- window.arguments[4] || false, referrerPolicy);
+ window.arguments[4] || false, referrerPolicy,
+ // pass the origin principal (if any) and force its use to create
+ // an initial about:blank viewer if present:
+ window.arguments[6], !!window.arguments[6], window.arguments[7]);
window.focus();
}
// Note: loadOneOrMoreURIs *must not* be called if window.arguments.length >= 3.
@@ -1952,7 +1957,9 @@ function BrowserTryToCloseWindow()
window.close(); // WindowIsClosing does all the necessary checks
}
-function loadURI(uri, referrer, postData, allowThirdPartyFixup, referrerPolicy) {
+function loadURI(uri, referrer, postData, allowThirdPartyFixup, referrerPolicy,
+ originPrincipal, forceAboutBlankViewerInCurrent,
+ triggeringPrincipal) {
if (postData === undefined)
postData = null;
@@ -1968,6 +1975,9 @@ function loadURI(uri, referrer, postData, allowThirdPartyFixup, referrerPolicy)
referrerURI: referrer,
referrerPolicy: referrerPolicy,
postData: postData,
+ originPrincipal: originPrincipal,
+ triggeringPrincipal: triggeringPrincipal,
+ forceAboutBlankViewerInCurrent: forceAboutBlankViewerInCurrent,
});
} catch (e) {}
}
@@ -4395,9 +4405,11 @@ nsBrowserAccess.prototype = {
}
let referrer = aOpener ? makeURI(aOpener.location.href) : null;
+ let triggeringPrincipal = null;
let referrerPolicy = Ci.nsIHttpChannel.REFERRER_POLICY_DEFAULT;
if (aOpener && aOpener.document) {
referrerPolicy = aOpener.document.referrerPolicy;
+ triggeringPrincipal = aOpener.document.nodePrincipal;
}
switch (aWhere) {
@@ -4437,6 +4449,7 @@ nsBrowserAccess.prototype = {
let referrer = aOpener ? makeURI(aOpener.location.href) : null;
let tab = win.gBrowser.loadOneTab(aURI ? aURI.spec : "about:blank", {
+ triggeringPrincipal: triggeringPrincipal,
referrerURI: referrer,
referrerPolicy: referrerPolicy,
fromExternal: isExternal,
@@ -4459,6 +4472,7 @@ nsBrowserAccess.prototype = {
Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
gBrowser.loadURIWithFlags(aURI.spec, {
flags: loadflags,
+ triggeringPrincipal: triggeringPrincipal,
referrerURI: referrer,
referrerPolicy: referrerPolicy,
});
@@ -5192,7 +5206,9 @@ function handleLinkClick(event, href, linkNode) {
urlSecurityCheck(href, doc.nodePrincipal);
openLinkIn(href, where, { referrerURI: doc.documentURIObject,
charset: doc.characterSet,
- referrerPolicy: doc.referrerPolicy });
+ referrerPolicy: doc.referrerPolicy,
+ originPrincipal: doc.nodePrincipal,
+ triggeringPrincipal: doc.nodePrincipal });
event.preventDefault();
return true;
}
@@ -7206,14 +7222,6 @@ var MousePosTracker = {
}
};
-function focusNextFrame(event) {
- let fm = Services.focus;
- let dir = event.shiftKey ? fm.MOVEFOCUS_BACKWARDDOC : fm.MOVEFOCUS_FORWARDDOC;
- let element = fm.moveFocus(window, null, dir, fm.FLAG_BYKEY);
- if (element.ownerDocument == document)
- focusAndSelectUrlBar();
-}
-
var BrowserChromeTest = {
_cb: null,
_ready: false,
diff --git a/application/palemoon/base/content/browser.xul b/application/palemoon/base/content/browser.xul
index 90899bb88c..07ca547222 100644
--- a/application/palemoon/base/content/browser.xul
+++ b/application/palemoon/base/content/browser.xul
@@ -59,6 +59,7 @@
macanimationtype="document"
screenX="4" screenY="4"
fullscreenbutton="true"
+ retargetdocumentfocus="urlbar"
persist="screenX screenY width height sizemode">
# All JS files which are not content (only) dependent that browser.xul
diff --git a/application/palemoon/base/content/nsContextMenu.js b/application/palemoon/base/content/nsContextMenu.js
index 738868ccb9..1d4f888165 100644
--- a/application/palemoon/base/content/nsContextMenu.js
+++ b/application/palemoon/base/content/nsContextMenu.js
@@ -754,7 +754,9 @@ nsContextMenu.prototype = {
openLinkIn(this.linkURL, "window",
{ charset: doc.characterSet,
referrerURI: doc.documentURIObject,
- referrerPolicy: doc.referrerPolicy });
+ referrerPolicy: doc.referrerPolicy,
+ originPrincipal: doc.nodePrincipal,
+ triggeringPrincipal: doc.nodePrincipal });
},
// Open linked-to URL in a new private window.
@@ -765,6 +767,8 @@ nsContextMenu.prototype = {
{ charset: doc.characterSet,
referrerURI: doc.documentURIObject,
referrerPolicy: doc.referrerPolicy,
+ originPrincipal: doc.nodePrincipal,
+ triggeringPrincipal: doc.nodePrincipal,
private: true });
},
@@ -775,7 +779,9 @@ nsContextMenu.prototype = {
openLinkIn(this.linkURL, "tab",
{ charset: doc.characterSet,
referrerURI: doc.documentURIObject,
- referrerPolicy: doc.referrerPolicy });
+ referrerPolicy: doc.referrerPolicy,
+ originPrincipal: doc.nodePrincipal,
+ triggeringPrincipal: doc.nodePrincipal });
},
// open URL in current tab
@@ -784,7 +790,9 @@ nsContextMenu.prototype = {
urlSecurityCheck(this.linkURL, doc.nodePrincipal);
openLinkIn(this.linkURL, "current",
{ charset: doc.characterSet,
- referrerURI: doc.documentURIObject });
+ referrerURI: doc.documentURIObject,
+ originPrincipal: doc.nodePrincipal,
+ triggeringPrincipal: doc.nodePrincipal });
},
// Open frame in a new tab.
@@ -830,30 +838,8 @@ nsContextMenu.prototype = {
// View Partial Source
viewPartialSource: function(aContext) {
- var focusedWindow = document.commandDispatcher.focusedWindow;
- if (focusedWindow == window)
- focusedWindow = content;
-
- var docCharset = null;
- if (focusedWindow)
- docCharset = "charset=" + focusedWindow.document.characterSet;
-
- // "View Selection Source" and others such as "View MathML Source"
- // are mutually exclusive, with the precedence given to the selection
- // when there is one
- var reference = null;
- if (aContext == "selection")
- reference = focusedWindow.getSelection();
- else if (aContext == "mathml")
- reference = this.target;
- else
- throw "not reached";
-
- // unused (and play nice for fragments generated via XSLT too)
- var docUrl = null;
- window.openDialog("chrome://global/content/viewPartialSource.xul",
- "_blank", "scrollbars,resizable,chrome,dialog=no",
- docUrl, docCharset, reference, aContext);
+ let target = aContext == "mathml" ? this.target : null;
+ top.gViewSourceUtils.viewPartialSourceInBrowser(gBrowser.selectedBrowser, target);
},
// Open new "view source" window with the frame's URL.
diff --git a/application/palemoon/base/content/report-phishing-overlay.xul b/application/palemoon/base/content/report-phishing-overlay.xul
deleted file mode 100644
index 76baf01da3..0000000000
--- a/application/palemoon/base/content/report-phishing-overlay.xul
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.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/. -->
-
-<!DOCTYPE overlay [
-<!ENTITY % reportphishDTD SYSTEM "chrome://browser/locale/safebrowsing/report-phishing.dtd">
-%reportphishDTD;
-<!ENTITY % safebrowsingDTD SYSTEM "chrome://browser/locale/safebrowsing/phishing-afterload-warning-message.dtd">
-%safebrowsingDTD;
-]>
-
-<overlay id="reportPhishingMenuOverlay"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <broadcasterset id="mainBroadcasterSet">
- <broadcaster id="reportPhishingBroadcaster" disabled="true"/>
- <broadcaster id="reportPhishingErrorBroadcaster" disabled="true"/>
- </broadcasterset>
- <menupopup id="menu_HelpPopup">
- <menuitem id="menu_HelpPopup_reportPhishingtoolmenu"
- label="&reportPhishSiteMenu.title2;"
- accesskey="&reportPhishSiteMenu.accesskey;"
- insertbefore="aboutSeparator"
- observes="reportPhishingBroadcaster"
- oncommand="openUILink(gSafeBrowsing.getReportURL('Phish'), event);"
- onclick="checkForMiddleClick(this, event);"/>
- <menuitem id="menu_HelpPopup_reportPhishingErrortoolmenu"
- label="&safeb.palm.notforgery.label2;"
- accesskey="&reportPhishSiteMenu.accesskey;"
- insertbefore="aboutSeparator"
- observes="reportPhishingErrorBroadcaster"
- oncommand="openUILinkIn(gSafeBrowsing.getReportURL('Error'), 'tab');"
- onclick="checkForMiddleClick(this, event);"/>
- </menupopup>
-</overlay>
diff --git a/application/palemoon/base/content/tabbrowser.xml b/application/palemoon/base/content/tabbrowser.xml
index ea68d00ad7..d5735149e1 100644
--- a/application/palemoon/base/content/tabbrowser.xml
+++ b/application/palemoon/base/content/tabbrowser.xml
@@ -1313,13 +1313,16 @@
<parameter name="aAllowThirdPartyFixup"/>
<body>
<![CDATA[
+ var aTriggeringPrincipal;
var aReferrerPolicy;
var aFromExternal;
var aRelatedToCurrent;
+ var aOriginPrincipal;
if (arguments.length == 2 &&
typeof arguments[1] == "object" &&
!(arguments[1] instanceof Ci.nsIURI)) {
let params = arguments[1];
+ aTriggeringPrincipal = params.triggeringPrincipal;
aReferrerURI = params.referrerURI;
aReferrerPolicy = params.referrerPolicy;
aCharset = params.charset;
@@ -1328,12 +1331,14 @@
aAllowThirdPartyFixup = params.allowThirdPartyFixup;
aFromExternal = params.fromExternal;
aRelatedToCurrent = params.relatedToCurrent;
+ aOriginPrincipal = params.originPrincipal;
}
var bgLoad = (aLoadInBackground != null) ? aLoadInBackground :
Services.prefs.getBoolPref("browser.tabs.loadInBackground");
var owner = bgLoad ? null : this.selectedTab;
var tab = this.addTab(aURI, {
+ triggeringPrincipal: aTriggeringPrincipal,
referrerURI: aReferrerURI,
referrerPolicy: aReferrerPolicy,
charset: aCharset,
@@ -1341,6 +1346,7 @@
ownerTab: owner,
allowThirdPartyFixup: aAllowThirdPartyFixup,
fromExternal: aFromExternal,
+ originPrincipal: aOriginPrincipal,
relatedToCurrent: aRelatedToCurrent});
if (!bgLoad)
this.selectedTab = tab;
@@ -1461,14 +1467,17 @@
<body>
<![CDATA[
const NS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var aTriggeringPrincipal;
var aReferrerPolicy;
var aFromExternal;
var aRelatedToCurrent;
var aSkipAnimation;
+ var aOriginPrincipal;
if (arguments.length == 2 &&
typeof arguments[1] == "object" &&
!(arguments[1] instanceof Ci.nsIURI)) {
let params = arguments[1];
+ aTriggeringPrincipal = params.triggeringPrincipal;
aReferrerURI = params.referrerURI;
aReferrerPolicy = params.referrerPolicy;
aCharset = params.charset;
@@ -1478,6 +1487,7 @@
aFromExternal = params.fromExternal;
aRelatedToCurrent = params.relatedToCurrent;
aSkipAnimation = params.skipAnimation;
+ aOriginPrincipal = params.originPrincipal;
}
// if we're adding tabs, we're past interrupt mode, ditch the owner
@@ -1486,6 +1496,11 @@
var t = document.createElementNS(NS_XUL, "tab");
+ let aURIObject = null;
+ try {
+ aURIObject = Services.io.newURI(aURI || "about:blank");
+ } catch (ex) { /* we'll try to fix up this URL later */ }
+
var uriIsAboutBlank = !aURI || aURI == "about:blank";
if (!aURI || isBlankPageURL(aURI))
@@ -1625,6 +1640,16 @@
evt.initEvent("TabOpen", true, false);
t.dispatchEvent(evt);
+ if (aOriginPrincipal && aURI) {
+ let {URI_INHERITS_SECURITY_CONTEXT} = Ci.nsIProtocolHandler;
+ // Unless we know for sure we're not inheriting principals,
+ // force the about:blank viewer to have the right principal:
+ if (!aURIObject ||
+ (Services.io.getProtocolFlags(aURIObject.scheme) & URI_INHERITS_SECURITY_CONTEXT)) {
+ b.createAboutBlankContentViewer(aOriginPrincipal);
+ }
+ }
+
// If we didn't swap docShells with a preloaded browser
// then let's just continue loading the page normally.
if (!docShellsSwapped && !uriIsAboutBlank) {
@@ -1643,6 +1668,7 @@
try {
b.loadURIWithFlags(aURI, {
flags: flags,
+ triggeringPrincipal: aTriggeringPrincipal,
referrerURI: aReferrerURI,
referrerPolicy: aReferrerPolicy,
charset: aCharset,
diff --git a/application/palemoon/base/content/utilityOverlay.js b/application/palemoon/base/content/utilityOverlay.js
index 63488e2092..2c1a95f83c 100644
--- a/application/palemoon/base/content/utilityOverlay.js
+++ b/application/palemoon/base/content/utilityOverlay.js
@@ -230,6 +230,10 @@ function openLinkIn(url, where, params) {
var aDisallowInheritPrincipal = params.disallowInheritPrincipal;
var aInitiatingDoc = params.initiatingDoc;
var aIsPrivate = params.private;
+ var aPrincipal = params.originPrincipal;
+ var aTriggeringPrincipal = params.triggeringPrincipal;
+ var aForceAboutBlankViewerInCurrent =
+ params.forceAboutBlankViewerInCurrent;
var sendReferrerURI = true;
if (where == "save") {
@@ -254,6 +258,23 @@ function openLinkIn(url, where, params) {
// Note that if |w| is null we might have no current browser (we'll open a new window).
var aCurrentBrowser = params.currentBrowser || (w && w.gBrowser.selectedBrowser);
+ // Teach the principal about the right OA to use, e.g. in case when
+ // opening a link in a new private window.
+ // Please note we do not have to do that for SystemPrincipals and we
+ // can not do it for NullPrincipals since NullPrincipals are only
+ // identical if they actually are the same object (See Bug: 1346759)
+ function useOAForPrincipal(principal) {
+ if (principal && principal.isCodebasePrincipal) {
+ let attrs = {
+ privateBrowsingId: aIsPrivate || (w && PrivateBrowsingUtils.isWindowPrivate(w)),
+ };
+ return Services.scriptSecurityManager.createCodebasePrincipal(principal.URI, attrs);
+ }
+ return principal;
+ }
+ aPrincipal = useOAForPrincipal(aPrincipal);
+ aTriggeringPrincipal = useOAForPrincipal(aTriggeringPrincipal);
+
if (!w || where == "window") {
// This propagates to window.arguments.
// Strip referrer data when opening a new private window, to prevent
@@ -297,6 +318,8 @@ function openLinkIn(url, where, params) {
sa.AppendElement(aPostData);
sa.AppendElement(allowThirdPartyFixupSupports);
sa.AppendElement(referrerPolicySupports);
+ sa.AppendElement(aPrincipal);
+ sa.AppendElement(aTriggeringPrincipal);
let features = "chrome,dialog=no,all";
if (aIsPrivate) {
@@ -314,10 +337,17 @@ function openLinkIn(url, where, params) {
getBoolPref("browser.tabs.loadInBackground");
}
+ let uriObj;
+ if (where == "current") {
+ try {
+ uriObj = Services.io.newURI(url, null, null);
+ } catch (e) {}
+ }
+
if (where == "current" && w.gBrowser.selectedTab.pinned) {
try {
- let uriObj = Services.io.newURI(url, null, null);
- if (!uriObj.schemeIs("javascript") &&
+ // nsIURI.host can throw for non-nsStandardURL nsIURIs.
+ if (!uriObj || !uriObj.schemeIs("javascript") &&
w.gBrowser.currentURI.host != uriObj.host) {
where = "tab";
loadInBackground = false;
@@ -345,11 +375,22 @@ function openLinkIn(url, where, params) {
if (aForceAllowDataURI) {
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FORCE_ALLOW_DATA_URI;
}
+ let {URI_INHERITS_SECURITY_CONTEXT} = Ci.nsIProtocolHandler;
+ if (aForceAboutBlankViewerInCurrent &&
+ (!uriObj ||
+ (Services.io.getProtocolFlags(uriObj.scheme) & URI_INHERITS_SECURITY_CONTEXT))) {
+ // Unless we know for sure we're not inheriting principals,
+ // force the about:blank viewer to have the right principal:
+ w.gBrowser.selectedBrowser.createAboutBlankContentViewer(aPrincipal);
+ }
+
w.gBrowser.loadURIWithFlags(url, {
flags: flags,
+ triggeringPrincipal: aTriggeringPrincipal,
referrerURI: aReferrerURI,
referrerPolicy: aReferrerPolicy,
postData: aPostData,
+ originPrincipal: aPrincipal,
});
browserUsedForLoad = aCurrentBrowser;
break;
@@ -365,7 +406,9 @@ function openLinkIn(url, where, params) {
postData: aPostData,
inBackground: loadInBackground,
allowThirdPartyFixup: aAllowThirdPartyFixup,
- relatedToCurrent: aRelatedToCurrent});
+ relatedToCurrent: aRelatedToCurrent,
+ originPrincipal: aPrincipal,
+ triggeringPrincipal: aTriggeringPrincipal });
browserUsedForLoad = tabUsedForLoad.linkedBrowser;
break;
}
@@ -564,13 +607,6 @@ function openFeedbackPage()
openUILinkIn(Services.prefs.getCharPref("browser.feedback.url"), "tab");
}
-function buildHelpMenu()
-{
- // Enable/disable the "Report Web Forgery" menu item.
- if (typeof gSafeBrowsing != "undefined")
- gSafeBrowsing.setReportPhishingMenu();
-}
-
function isElementVisible(aElement)
{
if (!aElement)
diff --git a/application/palemoon/branding/official/locales/en-US/brand.properties b/application/palemoon/branding/official/locales/en-US/brand.properties
index d85ceebce0..7d4b469542 100644
--- a/application/palemoon/branding/official/locales/en-US/brand.properties
+++ b/application/palemoon/branding/official/locales/en-US/brand.properties
@@ -2,10 +2,4 @@ brandShortName=Pale Moon
brandFullName=Pale Moon
vendorShortName=Moonchild
-homePageSingleStartMain=Pale Moon Start, a convenient home page with built-in search
-homePageImport=Import your home page from %S
-
-homePageMigrationPageTitle=Home Page Selection
-homePageMigrationDescription=Please select the home page you wish to use:
-
syncBrandShortName=Sync
diff --git a/application/palemoon/branding/official/pref/palemoon-branding.js b/application/palemoon/branding/official/pref/palemoon-branding.js
index 8e8703fb7c..02e75b6ce0 100644
--- a/application/palemoon/branding/official/pref/palemoon-branding.js
+++ b/application/palemoon/branding/official/pref/palemoon-branding.js
@@ -12,7 +12,7 @@ pref("general.useragent.compatMode.gecko", true);
pref("general.useragent.compatMode.firefox", true);
// ========================= updates ========================
-#if defined(XP_WIN)
+#if defined(XP_WIN) || defined(XP_LINUX)
// Updates enabled
pref("app.update.enabled", true);
pref("app.update.cert.checkAttributes", true);
@@ -29,7 +29,7 @@ pref("app.update.url.manual", "http://www.palemoon.org/");
// supplied in the "An update is available" page of the update wizard.
pref("app.update.url.details", "http://www.palemoon.org/releasenotes.shtml");
#else
-// Updates disabled (Linux, etc.)
+// Updates disabled (Mac, etc.)
pref("app.update.enabled", false);
pref("app.update.url", "");
#endif
diff --git a/application/palemoon/branding/unofficial/locales/en-US/brand.dtd b/application/palemoon/branding/unofficial/locales/en-US/brand.dtd
index a90d524412..debb7442d2 100644
--- a/application/palemoon/branding/unofficial/locales/en-US/brand.dtd
+++ b/application/palemoon/branding/unofficial/locales/en-US/brand.dtd
@@ -4,5 +4,5 @@
<!ENTITY brandShortName "New Moon">
<!ENTITY brandFullName "New Moon">
-<!ENTITY vendorShortName "Moonchild">
+<!ENTITY vendorShortName "a community developer">
<!ENTITY trademarkInfo.part1 " ">
diff --git a/application/palemoon/branding/unofficial/newmoon.desktop b/application/palemoon/branding/unofficial/newmoon.desktop
new file mode 100644
index 0000000000..6dcf324771
--- /dev/null
+++ b/application/palemoon/branding/unofficial/newmoon.desktop
@@ -0,0 +1,352 @@
+[Desktop Entry]
+Name=New Moon
+GenericName=Web Browser
+GenericName[ar]=متصÙØ­ ويب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeÄ
+GenericName[da]=Webbrowser
+GenericName[el]=ΠεÏιηγητής διαδικτÏου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן ×ינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브ë¼ìš°ì €
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=PrzeglÄ…darka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadaÄ
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络æµè§ˆå™¨
+GenericName[zh_TW]=網路ç€è¦½å™¨
+Comment=Browse the World Wide Web
+Comment[ar]=تصÙØ­ الشبكة العنكبوتية العالمية
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইনà§à¦Ÿà¦¾à¦°à¦¨à§‡à¦Ÿ বà§à¦°à¦¾à¦‰à¦œ করà§à¦¨
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=ΜποÏείτε να πεÏιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صÙحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי ×”×ינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧ã—ã¾ã™
+Comment[ko]=ì›¹ì„ ëŒì•„ 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=PrzeglÄ…danie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=ДоÑтуп в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=Ä°nternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=ПереглÑд Ñторінок Інтернету
+Comment[vi]=Äể duyệt các trang web
+Comment[zh_CN]=æµè§ˆäº’è”网
+Comment[zh_TW]=ç€è¦½ç¶²éš›ç¶²è·¯
+Exec=palemoon %u
+Terminal=false
+Type=Application
+Icon=palemoon
+Categories=Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
+StartupNotify=true
+Actions=NewTab;NewWindow;NewPrivateWindow;
+
+[Desktop Action NewTab]
+Name=Open new tab
+Name[ach]=Yab dirica matidi manyen
+Name[af]=Open nuwe oortjie
+Name[an]=Ubrir una pestanya nueva
+Name[ar]=اÙتح لسانًا جديدًا
+Name[as]=নতà§à¦¨ টেব খোলক
+Name[ast]=Abrir llingüeta nueva
+Name[az]=Yeni vərəq aç
+Name[be]=Ðдкрыць новую ÑžÑтаўку
+Name[bg]=ОтварÑне на нов подпрозорец
+Name[bn_BD]=নতà§à¦¨ টà§à¦¯à¦¾à¦¬ খà§à¦²à§à¦¨
+Name[bn_IN]=নতà§à¦¨ টà§à¦¯à¦¾à¦¬ খà§à¦²à§à¦¨
+Name[br]=Digeriñ un ivinell nevez
+Name[bs]=Otvori novi tab
+Name[ca]=Obre una pestanya nova
+Name[cs]=Otevřít nový panel
+Name[cy]=Agor tab newydd
+Name[da]=Ã…bn nyt faneblad
+Name[de]=Neuen Tab öffnen
+Name[dsb]=Nowy rejtark wócyniś
+Name[el]=Άνοιγμα νέας καÏτέλας
+Name[eo]=Malfermi novan langeton
+Name[es_AR]=Abrir nueva pestaña
+Name[es_CL]=Abrir nueva pestaña
+Name[es_ES]=Abrir pestaña nueva
+Name[es_MX]=Abrir una pestaña nueva
+Name[et]=Ava uus kaart
+Name[eu]=Ireki fitxa berria
+Name[ff]=Uddit tabbere hesere
+Name[fi]=Avaa uusi välilehti
+Name[fr]=Ouvrir un nouvel onglet
+Name[fy_NL]=Iepenje nij ljepblêd
+Name[ga_IE]=Oscail i gcluaisín nua
+Name[gd]=Fosgail taba ùr
+Name[gl]=Abrir unha nova lapela
+Name[gu_IN]=નવી ટૅબને ખોલો
+Name[he]=פתיחת לשונית חדשה
+Name[hi_IN]=नया टैब खोलें
+Name[hr]=Otvori novu karticu
+Name[hsb]=Nowy rajtark woÄinić
+Name[hu]=Új lap megnyitása
+Name[hy_AM]=Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ¸Ö€ Õ¶Õ¥Ö€Õ¤Õ«Ö€
+Name[id]=Buka tab baru
+Name[is]=Opna nýjan flipa
+Name[it]=Apri nuova scheda
+Name[ja]=æ–°ã—ã„タブ
+Name[kk]=Жаңа бетті ашу
+Name[kn]=ಹೊಸ ಹಾಳೆಯನà³à²¨à³ ತೆರೆ
+Name[ko]=새 탭 열기
+Name[lij]=Àrvi nêuvo féuggio
+Name[lt]=Atverti naujÄ… kortelÄ™
+Name[mai]=नव टैब खोलू
+Name[mk]=Отвори ново јазиче
+Name[ml]=à´ªàµà´¤à´¿à´¯ à´±àµà´±à´¾à´¬àµ à´¤àµà´±à´•àµà´•àµà´•
+Name[mr]=नवीन टॅब उघडा
+Name[ms]=Buka tab baru
+Name[nb_NO]=Ã…pne ny fane
+Name[nl]=Nieuw tabblad openen
+Name[nn_NO]=Opna ny fane
+Name[or]=ନୂତନ ଟà­à­Ÿà¬¾à¬¬ ଖୋଲନà­à¬¤à­
+Name[pa_IN]=ਨਵੀਂ ਟੈਬ ਖੋਲà©à¨¹à©‹
+Name[pl]=Otwórz nową kartę
+Name[pt_BR]=Nova aba
+Name[pt_PT]=Abrir novo separador
+Name[rm]=Avrir in nov tab
+Name[ro]=Deschide o filă nouă
+Name[ru]=Открыть новую вкладку
+Name[si]=නව ටà·à¶¶à¶º විවෘත කරන්න
+Name[sk]=Otvoriť novú kartu
+Name[sl]=Odpri nov zavihek
+Name[son]=Nor loku taaga feeri
+Name[sq]=Hap skedë të re
+Name[sr]=Отвори нови језичак
+Name[sv_SE]=Öppna ny flik
+Name[ta]=பà¯à®¤à®¿à®¯ கீறà¯à®±à¯ˆà®¤à¯ திற
+Name[te]=కొతà±à°¤ టాబౠతెరà±à°µà±à°®à±
+Name[th]=เปิดà¹à¸—็บใหม่
+Name[tr]=Yeni sekme aç
+Name[uk]=Відкрити нову вкладку
+Name[uz]=Yangi ichki oyna ochish
+Name[vi]=Mở thẻ mới
+Name[xh]=Vula ithebhu entsha
+Name[zh_CN]=打开新标签页
+Name[zh_TW]=開啟新分é 
+Exec=palemoon -new-tab
+
+[Desktop Action NewWindow]
+Name=Open new window
+Name[ach]=Yab dirica manyen
+Name[af]=Open nuwe venster
+Name[an]=Ubrir una nueva finestra
+Name[ar]=اÙتح ناÙذة جديدة
+Name[as]=নতà§à¦¨ উইনà§à¦¡à§‹ খোলক
+Name[ast]=Abrir ventana nueva
+Name[az]=Yeni pəncərə aç
+Name[be]=Ðдкрыць новае акно
+Name[bg]=ОтварÑне на нов прозорец
+Name[bn_BD]=নতà§à¦¨ উইনà§à¦¡à§‹ খà§à¦²à§à¦¨
+Name[bn_IN]=নতà§à¦¨ উইনà§à¦¡à§‹ খà§à¦²à§à¦¨
+Name[br]=Digeriñ ur prenestr nevez
+Name[bs]=Otvori novi prozor
+Name[ca]=Obre una finestra nova
+Name[cs]=Otevřít nové okno
+Name[cy]=Agor ffenestr newydd
+Name[da]=Ã…bn nyt vindue
+Name[de]=Neues Fenster öffnen
+Name[dsb]=Nowe wokno wócyniś
+Name[el]=Άνοιγμα νέου παÏαθÏÏου
+Name[eo]=Malfermi novan fenestron
+Name[es_AR]=Abrir nueva ventana
+Name[es_CL]=Abrir nueva ventana
+Name[es_ES]=Abrir nueva ventana
+Name[es_MX]=Abrir nueva ventana
+Name[et]=Ava uus aken
+Name[eu]=Ireki leiho berria
+Name[ff]=Uddit henorde hesere
+Name[fi]=Avaa uusi ikkuna
+Name[fr]=Ouvrir une nouvelle fenêtre
+Name[fy_NL]=Iepenje nij finster
+Name[ga_IE]=Oscail fuinneog nua
+Name[gd]=Fosgail uinneag ùr
+Name[gl]=Abrir unha nova xanela
+Name[gu_IN]=નવી વિનà«àª¡à«‹àª¨à«‡ ખોલો
+Name[he]=פתח חלון חדש
+Name[hi_IN]=नई विंडो खोलें
+Name[hr]=Otvori novi prozor
+Name[hsb]=Nowe wokno woÄinić
+Name[hu]=Új ablak megnyitása
+Name[hy_AM]=Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ¸Ö€ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶
+Name[id]=Buka jendela baru
+Name[is]=Opna nýjan glugga
+Name[it]=Apri nuova finestra
+Name[ja]=æ–°ã—ã„ウィンドウ
+Name[kk]=Жаңа терезені ашу
+Name[kn]=ಹೊಸ ವಿಂಡೊವನà³à²¨à³ ತೆರೆ
+Name[ko]=새 창 열기
+Name[lij]=Àrvi nêuvo barcón
+Name[lt]=Atverti naujÄ… langÄ…
+Name[mai]=नई विंडो खोलू
+Name[mk]=Отвори нов прозорец
+Name[ml]=à´ªàµà´¤à´¿à´¯ ജാലകം à´¤àµà´±à´•àµà´•àµà´•
+Name[mr]=नवीन पटल उघडा
+Name[ms]=Buka tetingkap baru
+Name[nb_NO]=Ã…pne nytt vindu
+Name[nl]=Een nieuw venster openen
+Name[nn_NO]=Opna nytt vindauge
+Name[or]=ନୂତନ ୱିଣà­à¬¡à­‹ ଖୋଲନà­à¬¤à­
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ ਖੋਲà©à¨¹à©‹
+Name[pl]=Otwórz nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Abrir nova janela
+Name[rm]=Avrir ina nova fanestra
+Name[ro]=Deschide o nouă fereastră
+Name[ru]=Открыть новое окно
+Name[si]=නව කවුළුවක් විවෘත කරන්න
+Name[sk]=Otvoriť nové okno
+Name[sl]=Odpri novo okno
+Name[son]=Zanfun taaga feeri
+Name[sq]=Hap dritare të re
+Name[sr]=Отвори нови прозор
+Name[sv_SE]=Öppna nytt fönster
+Name[ta]=பà¯à®¤à®¿à®¯ சாளரதà¯à®¤à¯ˆ திற
+Name[te]=కొతà±à°¤ విండో తెరà±à°µà±à°®à±
+Name[th]=เปิดหน้าต่างใหม่
+Name[tr]=Yeni pencere aç
+Name[uk]=Відкрити нове вікно
+Name[uz]=Yangi oyna ochish
+Name[vi]=Mở cửa sổ mới
+Name[xh]=Vula iwindow entsha
+Name[zh_CN]=打开新窗å£
+Name[zh_TW]=開啟新視窗
+Exec=palemoon -new-window
+
+[Desktop Action NewPrivateWindow]
+Name=New private window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra de navegación privada
+Name[ar]=ناÙذة خاصة جديدة
+Name[as]=নতà§à¦¨ বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত উইনà§à¦¡à§‹
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni məxfi pəncərə
+Name[be]=Ðовае акно адаÑабленнÑ
+Name[bg]=Ðов прозорец за поверително Ñърфиране
+Name[bn_BD]=নতà§à¦¨ বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত উইনà§à¦¡à§‹
+Name[bn_IN]=নতà§à¦¨ বà§à¦¯à¦¾à¦•à§à¦¤à¦¿à¦—ত উইনà§à¦¡à§‹
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr breifat newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster öffnen
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Îέο παÏάθυÏο ιδιωτικής πεÏιήγησης
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[ff]=Henorde suturo hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog nua phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gu_IN]=નવી ખાનગી વિનà«àª¡à«‹
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नया निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Ô³Õ¡Õ²Õ¿Õ¶Õ« Õ¤Õ«Õ¿Õ¡Ö€Õ¯Õ¸Ö‚Õ´
+Name[id]=Jendela mode pribadi baru
+Name[is]=Nýr einkagluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=æ–°ã—ã„プライベートウィンドウ
+Name[kk]=Жаңа жекелік терезе
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사ìƒí™œ 보호 ì°½
+Name[lij]=Nêuvo barcón privòu
+Name[lt]=Atverti privaÄiojo narÅ¡ymo langÄ…
+Name[mai]=नव निज विंडो
+Name[mk]=Ðов прозорец за приватно Ñурфање
+Name[ml]=à´ªàµà´¤à´¿à´¯ à´¸àµà´µà´•à´¾à´°àµà´¯ ജാലകം
+Name[mr]=नवीन वैयकà¥à¤¤à¤¿à¤• पटल
+Name[ms]=Tetingkap peribadi baharu
+Name[nb_NO]=Nytt privat vindu
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବà­à­Ÿà¬•à­à¬¤à¬¿à¬—ତ ୱିଣà­à¬¡à­‹
+Name[pa_IN]=ਨਵੀਂ ਪà©à¨°à¨¾à¨ˆà¨µà©‡à¨Ÿ ਵਿੰਡੋ
+Name[pl]=Nowe okno w trybie prywatnym
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră fără urme nouă
+Name[ru]=Ðовое приватное окно
+Name[si]=නව පුද්ගලික කවුළුව
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e re private
+Name[sr]=Ðови приватни прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=பà¯à®¤à®¿à®¯ தனிபà¯à®ªà®Ÿà¯à®Ÿ சாளரமà¯
+Name[te]=కొతà±à°¤ ఆంతరంగిక విండో
+Name[th]=หน้าต่างท่องเว็บà¹à¸šà¸šà¸ªà¹ˆà¸§à¸™à¸•à¸±à¸§à¹ƒà¸«à¸¡à¹ˆ
+Name[tr]=Yeni gizli pencere
+Name[uk]=Ðове приватне вікно
+Name[uz]=Yangi shaxsiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建éšç§æµè§ˆçª—å£
+Name[zh_TW]=新增隱ç§è¦–窗
+Exec=palemoon -private-window
diff --git a/application/palemoon/branding/unstable/locales/en-US/brand.properties b/application/palemoon/branding/unstable/locales/en-US/brand.properties
index d85ceebce0..7d4b469542 100644
--- a/application/palemoon/branding/unstable/locales/en-US/brand.properties
+++ b/application/palemoon/branding/unstable/locales/en-US/brand.properties
@@ -2,10 +2,4 @@ brandShortName=Pale Moon
brandFullName=Pale Moon
vendorShortName=Moonchild
-homePageSingleStartMain=Pale Moon Start, a convenient home page with built-in search
-homePageImport=Import your home page from %S
-
-homePageMigrationPageTitle=Home Page Selection
-homePageMigrationDescription=Please select the home page you wish to use:
-
syncBrandShortName=Sync
diff --git a/application/palemoon/components/downloads/content/downloadsOverlay.xul b/application/palemoon/components/downloads/content/downloadsOverlay.xul
index 2a4fe90995..ca35ee3cf1 100644
--- a/application/palemoon/components/downloads/content/downloadsOverlay.xul
+++ b/application/palemoon/components/downloads/content/downloadsOverlay.xul
@@ -35,7 +35,7 @@
oncommand="goDoCommand('downloadsCmd_clearList')"/>
</commandset>
- <popupset>
+ <popupset id="mainPopupSet">
<!-- The panel has level="top" to ensure that it is never hidden by the
taskbar on Windows. See bug 672365. For accessibility to screen
readers, we use a label on the panel instead of the anchor because the
diff --git a/application/palemoon/components/permissions/aboutPermissions.xul b/application/palemoon/components/permissions/aboutPermissions.xul
index afd98247b1..dfee14756c 100644
--- a/application/palemoon/components/permissions/aboutPermissions.xul
+++ b/application/palemoon/components/permissions/aboutPermissions.xul
@@ -29,7 +29,7 @@
<key key="&focusSearch.key;" modifiers="accel" oncommand="AboutPermissions.focusFilterBox();"/>
</keyset>
- <hbox flex="1" id="permissions-header">
+ <hbox id="permissions-header">
<label id="permissions-pagetitle">&permissionsManager.title;</label>
</hbox>
<hbox flex="1" id="permissions-content" class="main-content">
diff --git a/application/palemoon/components/places/content/controller.js b/application/palemoon/components/places/content/controller.js
index e2ae2afb04..7f27e83478 100644
--- a/application/palemoon/components/places/content/controller.js
+++ b/application/palemoon/components/places/content/controller.js
@@ -300,9 +300,6 @@ PlacesController.prototype = {
* are non-removable. We don't need to worry about recursion here since it
* is a policy decision that a removable item not be placed inside a non-
* removable item.
- * @param aIsMoveCommand
- * True if the command for which this method is called only moves the
- * selected items to another container, false otherwise.
* @returns true if all nodes in the selection can be removed,
* false otherwise.
*/
@@ -462,8 +459,6 @@ PlacesController.prototype = {
uri = NetUtil.newURI(node.uri);
if (PlacesUtils.nodeIsBookmark(node)) {
nodeData["bookmark"] = true;
- PlacesUtils.nodeIsTagQuery(node.parent)
-
var parentNode = node.parent;
if (parentNode) {
if (PlacesUtils.nodeIsTagQuery(parentNode))
diff --git a/application/palemoon/components/preferences/applications.js b/application/palemoon/components/preferences/applications.js
index 5768de7089..d06f9f9fbd 100644
--- a/application/palemoon/components/preferences/applications.js
+++ b/application/palemoon/components/preferences/applications.js
@@ -8,15 +8,10 @@
//****************************************************************************//
// Constants & Enumeration Values
-/*
-#ifndef XP_MACOSX
-*/
var Cc = Components.classes;
var Ci = Components.interfaces;
var Cr = Components.results;
-/*
-#endif
-*/
+
Components.utils.import('resource://gre/modules/Services.jsm');
const TYPE_MAYBE_FEED = "application/vnd.mozilla.maybe.feed";
@@ -158,7 +153,7 @@ function isFeedType(t) {
*
* We create an instance of this wrapper for each entry we might display
* in the prefpane, and we compose the instances from various sources,
- * including navigator.plugins and the handler service.
+ * including plugins and the handler service.
*
* We don't implement all the original nsIHandlerInfo functionality,
* just the stuff that the prefpane needs.
@@ -272,7 +267,7 @@ HandlerInfoWrapper.prototype = {
// What to do with content of this type.
get preferredAction() {
// If we have an enabled plugin, then the action is to use that plugin.
- if (this.plugin && !this.isDisabledPluginType)
+ if (this.pluginName && !this.isDisabledPluginType)
return kActionUsePlugin;
// If the action is to use a helper app, but we don't have a preferred
@@ -293,6 +288,14 @@ HandlerInfoWrapper.prototype = {
},
set preferredAction(aNewValue) {
+ // If the action is to use the plugin,
+ // we must set the preferred action to "save to disk".
+ // But only if it's not currently the preferred action.
+ if ((aNewValue == kActionUsePlugin) &&
+ (this.preferredAction != Ci.nsIHandlerInfo.saveToDisk)) {
+ aNewValue = Ci.nsIHandlerInfo.saveToDisk;
+ }
+
// We don't modify the preferred action if the new action is to use a plugin
// because handler info objects don't understand our custom "use plugin"
// value. Also, leaving it untouched means that we can automatically revert
@@ -308,7 +311,7 @@ HandlerInfoWrapper.prototype = {
// of any user configuration, and the default in that case is to always ask,
// even though we never ask for content handled by a plugin, so special case
// plugin-handled types by returning false here.
- if (this.plugin && this.handledOnlyByPlugin)
+ if (this.pluginName && this.handledOnlyByPlugin)
return false;
// If this is a protocol type and the preferred action is "save to disk",
@@ -1064,24 +1067,22 @@ var gApplicationsPane = {
* check the pref ourselves to find out if it's enabled.
*/
_loadPluginHandlers: function() {
- for (let i = 0; i < navigator.plugins.length; ++i) {
- let plugin = navigator.plugins[i];
- for (let j = 0; j < plugin.length; ++j) {
- let type = plugin[j].type;
-
- let handlerInfoWrapper;
- if (type in this._handledTypes)
- handlerInfoWrapper = this._handledTypes[type];
- else {
- let wrappedHandlerInfo =
- this._mimeSvc.getFromTypeAndExtension(type, null);
- handlerInfoWrapper = new HandlerInfoWrapper(type, wrappedHandlerInfo);
- handlerInfoWrapper.handledOnlyByPlugin = true;
- this._handledTypes[type] = handlerInfoWrapper;
- }
+ "use strict";
- handlerInfoWrapper.plugin = plugin;
+ let mimeTypes = navigator.mimeTypes;
+
+ for (let mimeType of mimeTypes) {
+ let handlerInfoWrapper;
+ if (mimeType.type in this._handledTypes) {
+ handlerInfoWrapper = this._handledTypes[mimeType.type];
+ } else {
+ let wrappedHandlerInfo =
+ this._mimeSvc.getFromTypeAndExtension(mimeType.type, null);
+ handlerInfoWrapper = new HandlerInfoWrapper(mimeType.type, wrappedHandlerInfo);
+ handlerInfoWrapper.handledOnlyByPlugin = true;
+ this._handledTypes[mimeType.type] = handlerInfoWrapper;
}
+ handlerInfoWrapper.pluginName = mimeType.enabledPlugin.name;
}
},
@@ -1274,7 +1275,7 @@ var gApplicationsPane = {
case kActionUsePlugin:
return this._prefsBundle.getFormattedString("usePluginIn",
- [aHandlerInfo.plugin.name,
+ [aHandlerInfo.pluginName,
this._brandShortName]);
}
},
@@ -1368,7 +1369,7 @@ var gApplicationsPane = {
{
var askMenuItem = document.createElement("menuitem");
- askMenuItem.setAttribute("alwaysAsk", "true");
+ askMenuItem.setAttribute("action", Ci.nsIHandlerInfo.alwaysAsk);
let label;
if (isFeedType(handlerInfo.type))
label = this._prefsBundle.getFormattedString("previewInApp",
@@ -1456,11 +1457,11 @@ var gApplicationsPane = {
}
// Create a menu item for the plugin.
- if (handlerInfo.plugin) {
+ if (handlerInfo.pluginName) {
var pluginMenuItem = document.createElement("menuitem");
pluginMenuItem.setAttribute("action", kActionUsePlugin);
let label = this._prefsBundle.getFormattedString("usePluginIn",
- [handlerInfo.plugin.name,
+ [handlerInfo.pluginName,
this._brandShortName]);
pluginMenuItem.setAttribute("label", label);
pluginMenuItem.setAttribute("tooltiptext", label);
@@ -1614,33 +1615,31 @@ var gApplicationsPane = {
var typeItem = this._list.selectedItem;
var handlerInfo = this._handledTypes[typeItem.type];
- if (aActionItem.hasAttribute("alwaysAsk")) {
+ let action = parseInt(aActionItem.getAttribute("action"));
+
+ // Set the plugin state if we're enabling or disabling a plugin.
+ if (action == kActionUsePlugin)
+ handlerInfo.enablePluginType();
+ else if (handlerInfo.pluginName && !handlerInfo.isDisabledPluginType)
+ handlerInfo.disablePluginType();
+
+ // Set the preferred application handler.
+ // We leave the existing preferred app in the list when we set
+ // the preferred action to something other than useHelperApp so that
+ // legacy datastores that don't have the preferred app in the list
+ // of possible apps still include the preferred app in the list of apps
+ // the user can choose to handle the type.
+ if (action == Ci.nsIHandlerInfo.useHelperApp)
+ handlerInfo.preferredApplicationHandler = aActionItem.handlerApp;
+
+ // Set the "always ask" flag.
+ if (action == Ci.nsIHandlerInfo.alwaysAsk)
handlerInfo.alwaysAskBeforeHandling = true;
- }
- else if (aActionItem.hasAttribute("action")) {
- let action = parseInt(aActionItem.getAttribute("action"));
-
- // Set the plugin state if we're enabling or disabling a plugin.
- if (action == kActionUsePlugin)
- handlerInfo.enablePluginType();
- else if (handlerInfo.plugin && !handlerInfo.isDisabledPluginType)
- handlerInfo.disablePluginType();
-
- // Set the preferred application handler.
- // We leave the existing preferred app in the list when we set
- // the preferred action to something other than useHelperApp so that
- // legacy datastores that don't have the preferred app in the list
- // of possible apps still include the preferred app in the list of apps
- // the user can choose to handle the type.
- if (action == Ci.nsIHandlerInfo.useHelperApp)
- handlerInfo.preferredApplicationHandler = aActionItem.handlerApp;
-
- // Set the "always ask" flag.
+ else
handlerInfo.alwaysAskBeforeHandling = false;
- // Set the preferred action.
- handlerInfo.preferredAction = action;
- }
+ // Set the preferred action.
+ handlerInfo.preferredAction = action;
handlerInfo.store();
diff --git a/application/palemoon/config/version.txt b/application/palemoon/config/version.txt
index abc7f476b2..466c71dc8c 100644
--- a/application/palemoon/config/version.txt
+++ b/application/palemoon/config/version.txt
@@ -1 +1 @@
-28.0.0b3 \ No newline at end of file
+28.1.0a1 \ No newline at end of file
diff --git a/application/palemoon/locales/en-US/chrome/browser/browser.properties b/application/palemoon/locales/en-US/chrome/browser/browser.properties
index 5dce994fe7..9969bd753b 100644
--- a/application/palemoon/locales/en-US/chrome/browser/browser.properties
+++ b/application/palemoon/locales/en-US/chrome/browser/browser.properties
@@ -323,19 +323,6 @@ pointerLock.neverAllow.accesskey=N
pointerLock.title2=Would you like to allow the pointer to be hidden on %S?
pointerLock.autoLock.title2=%S will hide the pointer.
-# Phishing/Malware Notification Bar.
-# LOCALIZATION NOTE (notAForgery, notAnAttack)
-# The two button strings will never be shown at the same time, so
-# it's okay for them to have the same access key
-safebrowsing.getMeOutOfHereButton.label=Get me out of here!
-safebrowsing.getMeOutOfHereButton.accessKey=G
-safebrowsing.reportedWebForgery=Reported Web Forgery!
-safebrowsing.notAForgeryButton.label=This isn't a web forgery…
-safebrowsing.notAForgeryButton.accessKey=F
-safebrowsing.reportedAttackSite=Reported Attack Site!
-safebrowsing.notAnAttackButton.label=This isn't an attack site…
-safebrowsing.notAnAttackButton.accessKey=A
-
# Ctrl-Tab
# LOCALIZATION NOTE (ctrlTab.showAll.label): #1 represents the number
# of tabs in the current browser window. It will always be 2 at least.
diff --git a/application/palemoon/locales/en-US/chrome/browser/downloads/downloads.properties b/application/palemoon/locales/en-US/chrome/browser/downloads/downloads.properties
index 761abf61af..2a5b77633d 100644
--- a/application/palemoon/locales/en-US/chrome/browser/downloads/downloads.properties
+++ b/application/palemoon/locales/en-US/chrome/browser/downloads/downloads.properties
@@ -67,10 +67,6 @@ shortTimeLeftDays=%1$Sd
statusSeparator=%1$S \u2014 %2$S
statusSeparatorBeforeNumber=%1$S \u2014 %2$S
-fileExecutableSecurityWarning="%S" is an executable file. Executable files may contain viruses or other malicious code that could harm your computer. Use caution when opening this file. Are you sure you want to launch "%S"?
-fileExecutableSecurityWarningTitle=Open Executable File?
-fileExecutableSecurityWarningDontAsk=Don't ask me this again
-
# LOCALIZATION NOTE (otherDownloads2):
# This is displayed in an item at the bottom of the Downloads Panel when
# there are more downloads than can fit in the list in the panel. Use a
diff --git a/application/palemoon/locales/en-US/chrome/browser/preferences/preferences.properties b/application/palemoon/locales/en-US/chrome/browser/preferences/preferences.properties
index 3eebbcbecc..b262eebf5f 100644
--- a/application/palemoon/locales/en-US/chrome/browser/preferences/preferences.properties
+++ b/application/palemoon/locales/en-US/chrome/browser/preferences/preferences.properties
@@ -2,13 +2,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/.
-#### Security
-
-# LOCALIZATION NOTE: phishBefore uses %S to represent the name of the provider
-# whose privacy policy must be accepted (for enabling
-# check-every-page-as-I-load-it phishing protection).
-phishBeforeText=Selecting this option will send the address of web pages you are viewing to %S. To continue, please review and accept the following terms of service.
-
#### Fonts
labelDefaultFont=Default (%S)
diff --git a/application/palemoon/locales/en-US/chrome/overrides/appstrings.properties b/application/palemoon/locales/en-US/chrome/overrides/appstrings.properties
index 1bf5447485..28ce0220e0 100644
--- a/application/palemoon/locales/en-US/chrome/overrides/appstrings.properties
+++ b/application/palemoon/locales/en-US/chrome/overrides/appstrings.properties
@@ -29,8 +29,6 @@ externalProtocolPrompt=An external application must be launched to handle %1$S:
externalProtocolUnknown=<Unknown>
externalProtocolChkMsg=Remember my choice for all links of this type.
externalProtocolLaunchBtn=Launch application
-malwareBlocked=The site at %S has been reported as an attack site and has been blocked based on your security preferences.
-phishingBlocked=The website at %S has been reported as a web forgery designed to trick users into sharing personal or financial information.
cspBlocked=This page has a content security policy that prevents it from being embedded in this way.
xssBlockMode=This page contains an XSS attack that has been blocked for your security.
corruptedContentError=The page you are trying to view cannot be shown because an error in the data transmission was detected.
diff --git a/application/palemoon/locales/en-US/chrome/overrides/netError.dtd b/application/palemoon/locales/en-US/chrome/overrides/netError.dtd
index 04bfe99251..9e5cbc7e29 100644
--- a/application/palemoon/locales/en-US/chrome/overrides/netError.dtd
+++ b/application/palemoon/locales/en-US/chrome/overrides/netError.dtd
@@ -178,18 +178,6 @@ was trying to connect. -->
</ul>
">
-<!ENTITY malwareBlocked.title "Suspected Attack Site!">
-<!ENTITY malwareBlocked.longDesc "
-<p>Attack sites try to install programs that steal private information, use your computer to attack others, or damage your system.</p>
-<p>Website owners who believe their site has been reported as an attack site in error may <a href='https://www.stopbadware.org/request-review' >request a review</a>.</p>
-">
-
-<!ENTITY phishingBlocked.title "Suspected Web Forgery!">
-<!ENTITY phishingBlocked.longDesc "
-<p>Entering any personal information on this page may result in identity theft or other fraud.</p>
-<p>These types of web forgeries are used in scams known as phishing attacks, in which fraudulent web pages and emails are used to imitate sources you may trust.</p>
-">
-
<!ENTITY cspBlocked.title "Blocked by Content Security Policy">
<!ENTITY cspBlocked.longDesc "<p>&brandShortName; prevented this page from loading in this way because the page has a content security policy that disallows it.</p>">
diff --git a/application/palemoon/locales/en-US/installer/custom.properties b/application/palemoon/locales/en-US/installer/custom.properties
index ef29b1e7e6..8f95a194b4 100644
--- a/application/palemoon/locales/en-US/installer/custom.properties
+++ b/application/palemoon/locales/en-US/installer/custom.properties
@@ -46,7 +46,9 @@ WARN_MANUALLY_CLOSE_APP_UNINSTALL=$BrandShortName must be closed to proceed with
WARN_MANUALLY_CLOSE_APP_LAUNCH=$BrandShortName is already running.\n\nPlease close $BrandShortName prior to launching the version you have just installed.
WARN_WRITE_ACCESS=You don't have access to write to the installation directory.\n\nClick OK to select a different directory.
WARN_DISK_SPACE=You don't have sufficient disk space to install to this location.\n\nClick OK to select a different location.
-WARN_MIN_SUPPORTED_OS_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer.
+WARN_MIN_SUPPORTED_OSVER_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer.
+WARN_MIN_SUPPORTED_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires a processor with ${MinSupportedCPU} support.
+WARN_MIN_SUPPORTED_OSVER_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer and a processor with ${MinSupportedCPU} support.
WARN_RESTART_REQUIRED_UNINSTALL=Your computer must be restarted to complete a previous uninstall of $BrandShortName. Do you want to reboot now?
WARN_RESTART_REQUIRED_UPGRADE=Your computer must be restarted to complete a previous upgrade of $BrandShortName. Do you want to reboot now?
ERROR_CREATE_DIRECTORY_PREFIX=Error creating directory:
diff --git a/application/palemoon/locales/en-US/installer/nsisstrings.properties b/application/palemoon/locales/en-US/installer/nsisstrings.properties
index 0144c2a98f..fc2898860d 100644
--- a/application/palemoon/locales/en-US/installer/nsisstrings.properties
+++ b/application/palemoon/locales/en-US/installer/nsisstrings.properties
@@ -25,7 +25,9 @@ INSTALL_BLURB1=You're about to enjoy the very latest in speed, flexibility and s
INSTALL_BLURB2=That's because $BrandShortName is made by a non-profit to make browsing and the Web better for you.
INSTALL_BLURB3=You're also joining a global community of users, contributors and developers working to make the best browser in the world.
-WARN_MIN_SUPPORTED_OS_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer.
+WARN_MIN_SUPPORTED_OSVER_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer.
+WARN_MIN_SUPPORTED_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires a processor with ${MinSupportedCPU} support.
+WARN_MIN_SUPPORTED_OSVER_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer and a processor with ${MinSupportedCPU} support.
WARN_WRITE_ACCESS=You don't have access to write to the installation directory.\n\nClick OK to select a different directory.
WARN_DISK_SPACE=You don't have sufficient disk space to install to this location.\n\nClick OK to select a different location.
WARN_ROOT_INSTALL=Unable to install to the root of your disk.\n\nClick OK to select a different location.
@@ -46,15 +48,16 @@ ADD_CheckboxShortcutInStartMenu=In my &Start Menu Programs Folder
ADD_CheckboxShortcutOnDesktop=On my &Desktop
SPACE_REQUIRED=Space Required:
SPACE_AVAILABLE=Space Available:
-ONE_MOMENT=One moment, $BrandShortName will launch as soon as the install is complete…
+ONE_MOMENT_INSTALL=One moment, $BrandShortName will launch as soon as the install is complete…
+ONE_MOMENT_UPGRADE=One moment, $BrandShortName will launch as soon as the upgrade is complete…
+INSTALL_MAINT_SERVICE=&Install the $BrandShortName background update service
SEND_PING=S&end information about this installation to Mozilla
BROWSE_BUTTON=B&rowse…
DEST_FOLDER=Destination Folder
-DOWNLOADING_IN_PROGRESS=Downloading…
-DOWNLOADING_DONE=Downloaded
-INSTALLING_TO_BE_DONE=Installing
-INSTALLING_IN_PROGRESS=Installing…
+DOWNLOADING_LABEL=Downloading $BrandShortName…
+INSTALLING_LABEL=Installing $BrandShortName…
+UPGRADING_LABEL=Upgrading $BrandShortName…
SELECT_FOLDER_TEXT=Select the folder to install $BrandShortName in.
diff --git a/application/palemoon/locales/en-US/pdfviewer/chrome.properties b/application/palemoon/locales/en-US/pdfviewer/chrome.properties
deleted file mode 100644
index 0b469195c2..0000000000
--- a/application/palemoon/locales/en-US/pdfviewer/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# 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.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=This PDF document might not be displayed correctly.
-open_with_different_viewer=Open With Different Viewer
-open_with_different_viewer.accessKey=o
diff --git a/application/palemoon/locales/en-US/pdfviewer/viewer.properties b/application/palemoon/locales/en-US/pdfviewer/viewer.properties
deleted file mode 100644
index ffc025362b..0000000000
--- a/application/palemoon/locales/en-US/pdfviewer/viewer.properties
+++ /dev/null
@@ -1,124 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# 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.
-
-# Main toolbar buttons (tooltips and alt text for images)
-previous.title=Previous Page
-previous_label=Previous
-next.title=Next Page
-next_label=Next
-
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Page:
-page_of=of {{pageCount}}
-
-zoom_out.title=Zoom Out
-zoom_out_label=Zoom Out
-zoom_in.title=Zoom In
-zoom_in_label=Zoom In
-zoom.title=Zoom
-print.title=Print
-print_label=Print
-presentation_mode.title=Switch to Presentation Mode
-presentation_mode_label=Presentation Mode
-open_file.title=Open File
-open_file_label=Open
-download.title=Download
-download_label=Download
-bookmark.title=Current view (copy or open in new window)
-bookmark_label=Current View
-
-# Tooltips and alt text for side panel toolbar buttons
-# (the _label strings are alt text for the buttons, the .title strings are
-# tooltips)
-toggle_sidebar.title=Toggle Sidebar
-toggle_sidebar_label=Toggle Sidebar
-outline.title=Show Document Outline
-outline_label=Document Outline
-thumbs.title=Show Thumbnails
-thumbs_label=Thumbnails
-findbar.title=Find in Document
-findbar_label=Find
-
-# Thumbnails panel item (tooltip and alt text for images)
-# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
-# number.
-thumb_page_title=Page {{page}}
-# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
-# number.
-thumb_page_canvas=Thumbnail of Page {{page}}
-
-# Context menu
-first_page.label=Go to First Page
-last_page.label=Go to Last Page
-page_rotate_cw.label=Rotate Clockwise
-page_rotate_ccw.label=Rotate Counterclockwise
-
-# Find panel button title and messages
-find_label=Find:
-find_previous.title=Find the previous occurrence of the phrase
-find_previous_label=Previous
-find_next.title=Find the next occurrence of the phrase
-find_next_label=Next
-find_highlight=Highlight all
-find_match_case_label=Match case
-find_reached_top=Reached top of document, continued from bottom
-find_reached_bottom=Reached end of document, continued from top
-find_not_found=Phrase not found
-
-# Error panel labels
-error_more_info=More Information
-error_less_info=Less Information
-error_close=Close
-# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
-# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
-# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
-# english string describing the error.
-error_message=Message: {{message}}
-# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
-# trace.
-error_stack=Stack: {{stack}}
-# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=File: {{file}}
-# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Line: {{line}}
-rendering_error=An error occurred while rendering the page.
-
-# Predefined zoom values
-page_scale_width=Page Width
-page_scale_fit=Page Fit
-page_scale_auto=Automatic Zoom
-page_scale_actual=Actual Size
-
-# Loading indicator messages
-loading_error_indicator=Error
-loading_error=An error occurred while loading the PDF.
-invalid_file_error=Invalid or corrupted PDF file.
-missing_file_error=Missing PDF file.
-
-# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
-# "{{type}}" will be replaced with an annotation type from a list defined in
-# the PDF spec (32000-1:2008 Table 169 – Annotation types).
-# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type.alt=[{{type}} Annotation]
-request_password=PDF is protected by a password:
-invalid_password=Invalid Password.
-
-printing_not_supported=Warning: Printing is not fully supported by this browser.
-printing_not_ready=Warning: The PDF is not fully loaded for printing.
-web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-document_colors_disabled=PDF documents are not allowed to use their own colors: \'Allow pages to choose their own colors\' is deactivated in the browser.
diff --git a/application/palemoon/locales/jar.mn b/application/palemoon/locales/jar.mn
index 8d88e16fd3..e3477c320d 100644
--- a/application/palemoon/locales/jar.mn
+++ b/application/palemoon/locales/jar.mn
@@ -96,6 +96,3 @@
% override chrome://global/locale/netError.dtd chrome://browser/locale/netError.dtd
% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
% override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://browser/locale/downloads/settingsChange.dtd
-% locale pdf.js @AB_CD@ %locale/pdfviewer/
- locale/pdfviewer/viewer.properties (%pdfviewer/viewer.properties)
- locale/pdfviewer/chrome.properties (%pdfviewer/chrome.properties)
diff --git a/application/palemoon/modules/WindowsPreviewPerTab.jsm b/application/palemoon/modules/WindowsPreviewPerTab.jsm
index c1ed05c39e..243a00aaea 100644
--- a/application/palemoon/modules/WindowsPreviewPerTab.jsm
+++ b/application/palemoon/modules/WindowsPreviewPerTab.jsm
@@ -3,12 +3,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/. */
/*
- * This module implements the front end behavior for AeroPeek. Starting in
- * Windows Vista, the taskbar began showing live thumbnail previews of windows
- * when the user hovered over the window icon in the taskbar. Starting with
- * Windows 7, the taskbar allows an application to expose its tabbed interface
- * in the taskbar by showing thumbnail previews rather than the default window
- * preview. Additionally, when a user hovers over a thumbnail (tab or window),
+ * This module implements the front end behavior for AeroPeek. The taskbar
+ * allows an application to expose its tabbed interface by showing thumbnail
+ * previews rather than the default window preview.
+ * Additionally, when a user hovers over a thumbnail (tab or window),
* they are shown a live preview of the window (or tab + its containing window).
*
* In Windows 7, a title, icon, close button and optional toolbar are shown for
@@ -31,7 +29,7 @@
* Screen real estate is limited so when there are too many thumbnails to fit
* on the screen, the taskbar stops displaying thumbnails and instead displays
* just the title, icon and close button in a similar fashion to previous
- * versions of the taskbar. If there are still too many previews to fit on the
+ * versions of the taskbar. If there are still too many previews to fit on the
* screen, the taskbar resorts to a scroll up and scroll down button pair to let
* the user scroll through the list of tabs. Since this is undoubtedly
* inconvenient for users with many tabs, the AeroPeek objects turns off all of
@@ -47,9 +45,11 @@ const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm");
+Cu.import("resource://gre/modules/PlacesUtils.jsm");
Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
// Pref to enable/disable preview-per-tab
const TOGGLE_PREF_NAME = "browser.taskbar.previews.enable";
@@ -60,17 +60,15 @@ const CACHE_EXPIRATION_TIME_PREF_NAME = "browser.taskbar.previews.cachetime";
const WINTASKBAR_CONTRACTID = "@mozilla.org/windows-taskbar;1";
-////////////////////////////////////////////////////////////////////////////////
-//// Various utility properties
+// Various utility properties
XPCOMUtils.defineLazyServiceGetter(this, "imgTools",
"@mozilla.org/image/tools;1",
"imgITools");
-XPCOMUtils.defineLazyServiceGetter(this, "faviconSvc",
- "@mozilla.org/browser/favicon-service;1",
- "nsIFaviconService");
+XPCOMUtils.defineLazyModuleGetter(this, "PageThumbs",
+ "resource://gre/modules/PageThumbs.jsm");
// nsIURI -> imgIContainer
-function _imageFromURI(doc, uri, privateMode, callback) {
+function _imageFromURI(uri, privateMode, callback) {
let channel = NetUtil.newChannel({
uri: uri,
loadUsingSystemPrincipal: true,
@@ -93,19 +91,20 @@ function _imageFromURI(doc, uri, privateMode, callback) {
} catch (e) {
// We failed, so use the default favicon (only if this wasn't the default
// favicon).
- let defaultURI = faviconSvc.defaultFavicon;
+ let defaultURI = PlacesUtils.favicons.defaultFavicon;
if (!defaultURI.equals(uri))
- _imageFromURI(doc, defaultURI, privateMode, callback);
+ _imageFromURI(defaultURI, privateMode, callback);
}
});
}
// string? -> imgIContainer
-function getFaviconAsImage(doc, iconurl, privateMode, callback) {
- if (iconurl)
- _imageFromURI(doc, NetUtil.newURI(iconurl), privateMode, callback);
- else
- _imageFromURI(doc, faviconSvc.defaultFavicon, privateMode, callback);
+function getFaviconAsImage(iconurl, privateMode, callback) {
+ if (iconurl) {
+ _imageFromURI(NetUtil.newURI(iconurl), privateMode, callback);
+ } else {
+ _imageFromURI(PlacesUtils.favicons.defaultFavicon, privateMode, callback);
+ }
}
// Snaps the given rectangle to be pixel-aligned at the given scale
@@ -121,16 +120,17 @@ function snapRectAtScale(r, scale) {
r.height = height / scale;
}
-////////////////////////////////////////////////////////////////////////////////
-//// PreviewController
+// PreviewController
/*
- * This class manages the behavior of the preview.
- *
- * To give greater performance when drawing, the dirty areas of the content
- * window are tracked and drawn on demand into a canvas of the same size.
- * This provides a great increase in responsiveness when drawing a preview
- * for unchanged (or even only slightly changed) tabs.
+ * This class manages the behavior of thumbnails and previews. It has the following
+ * responsibilities:
+ * 1) Responding to requests from Windows taskbar for a thumbnail or window
+ * preview.
+ * 2) Listening for DOM events that result in a thumbnail or window preview needing
+ * to be refreshed, and communicating this to the taskbar.
+ * 3) Handling queryies and returning new thumbnail or window preview images to the
+ * taskbar through PageThumbs.
*
* @param win
* The TabWindow (see below) that owns the preview that this controls
@@ -143,206 +143,182 @@ function PreviewController(win, tab) {
this.linkedBrowser = tab.linkedBrowser;
this.preview = this.win.createTabPreview(this);
- this.linkedBrowser.addEventListener("MozAfterPaint", this, false);
this.tab.addEventListener("TabAttrModified", this, false);
XPCOMUtils.defineLazyGetter(this, "canvasPreview", function () {
- let canvas = this.win.win.document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
+ let canvas = PageThumbs.createCanvas();
canvas.mozOpaque = true;
return canvas;
});
-
- XPCOMUtils.defineLazyGetter(this, "dirtyRegion",
- function () {
- let dirtyRegion = Cc["@mozilla.org/gfx/region;1"]
- .createInstance(Ci.nsIScriptableRegion);
- dirtyRegion.init();
- return dirtyRegion;
- });
-
- XPCOMUtils.defineLazyGetter(this, "winutils",
- function () {
- let win = tab.linkedBrowser.contentWindow;
- return win.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsIDOMWindowUtils);
- });
}
PreviewController.prototype = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsITaskbarPreviewController,
Ci.nsIDOMEventListener]),
+
destroy: function () {
this.tab.removeEventListener("TabAttrModified", this, false);
- this.linkedBrowser.removeEventListener("MozAfterPaint", this, false);
// Break cycles, otherwise we end up leaking the window with everything
// attached to it.
delete this.win;
delete this.preview;
- delete this.dirtyRegion;
},
+
get wrappedJSObject() {
return this;
},
- get dirtyRects() {
- let rectstream = this.dirtyRegion.getRects();
- if (!rectstream)
- return [];
- let rects = [];
- for (let i = 0; i < rectstream.length; i+= 4) {
- let r = {x: rectstream[i],
- y: rectstream[i+1],
- width: rectstream[i+2],
- height: rectstream[i+3]};
- rects.push(r);
- }
- return rects;
- },
-
// Resizes the canvasPreview to 0x0, essentially freeing its memory.
- // updateCanvasPreview() will detect the size mismatch as a resize event
- // the next time it is called.
resetCanvasPreview: function () {
this.canvasPreview.width = 0;
this.canvasPreview.height = 0;
},
+ /**
+ * Set the canvas dimensions.
+ */
+ resizeCanvasPreview: function (aRequestedWidth, aRequestedHeight) {
+ this.canvasPreview.width = aRequestedWidth;
+ this.canvasPreview.height = aRequestedHeight;
+ },
+
+
get zoom() {
// Note that winutils.fullZoom accounts for "quantization" of the zoom factor
- // from nsIMarkupDocumentViewer due to conversion through appUnits.
+ // from nsIContentViewer due to conversion through appUnits.
// We do -not- want screenPixelsPerCSSPixel here, because that would -also-
// incorporate any scaling that is applied due to hi-dpi resolution options.
- return this.winutils.fullZoom;
- },
-
- // Updates the controller's canvas with the parts of the <browser> that need
- // to be redrawn.
- updateCanvasPreview: function () {
- let win = this.linkedBrowser.contentWindow;
- let bx = this.linkedBrowser.boxObject;
- // Check for resize
- if (bx.width != this.canvasPreview.width ||
- bx.height != this.canvasPreview.height) {
- // Invalidate the entire area and repaint
- this.onTabPaint({left:0, top:0, right:win.innerWidth, bottom:win.innerHeight});
- this.canvasPreview.width = bx.width;
- this.canvasPreview.height = bx.height;
- }
+ return this.tab.linkedBrowser.fullZoom;
+ },
- // Draw dirty regions
- let ctx = this.canvasPreview.getContext("2d");
- let scale = this.zoom;
-
- let flags = this.canvasPreviewFlags;
- // The dirty region may include parts that are offscreen so we clip to the
- // canvas area.
- this.dirtyRegion.intersectRect(0, 0, win.innerWidth, win.innerHeight);
- this.dirtyRects.forEach(function (r) {
- // We need to snap the rectangle to be pixel aligned in the destination
- // coordinate space. Otherwise natively themed widgets might not draw.
- snapRectAtScale(r, scale);
- let x = r.x;
- let y = r.y;
- let width = r.width;
- let height = r.height;
+ get screenPixelsPerCSSPixel() {
+ let chromeWin = this.tab.ownerGlobal;
+ let windowUtils = chromeWin.getInterface(Ci.nsIDOMWindowUtils);
+ return windowUtils.screenPixelsPerCSSPixel;
+ },
- ctx.save();
- ctx.scale(scale, scale);
- ctx.translate(x, y);
- ctx.drawWindow(win, x, y, width, height, "white", flags);
- ctx.restore();
- });
- this.dirtyRegion.setToRect(0,0,0,0);
+ get browserDims() {
+ return this.tab.linkedBrowser.getBoundingClientRect();
+ },
+
+ cacheBrowserDims: function () {
+ let dims = this.browserDims;
+ this._cachedWidth = dims.width;
+ this._cachedHeight = dims.height;
+ },
+ testCacheBrowserDims: function () {
+ let dims = this.browserDims;
+ return this._cachedWidth == dims.width &&
+ this._cachedHeight == dims.height;
+ },
+
+ /**
+ * Capture a new thumbnail image for this preview. Called by the controller
+ * in response to a request for a new thumbnail image.
+ */
+ updateCanvasPreview: function (aFullScale, aCallback) {
+ // Update our cached browser dims so that delayed resize
+ // events don't trigger another invalidation if this tab becomes active.
+ this.cacheBrowserDims();
+ PageThumbs.captureToCanvas(this.linkedBrowser, this.canvasPreview,
+ aCallback, { fullScale: aFullScale });
// If we're updating the canvas, then we're in the middle of a peek so
// don't discard the cache of previews.
AeroPeek.resetCacheTimer();
},
- onTabPaint: function (rect) {
- let x = Math.floor(rect.left),
- y = Math.floor(rect.top),
- width = Math.ceil(rect.right) - x,
- height = Math.ceil(rect.bottom) - y;
- this.dirtyRegion.unionRect(x, y, width, height);
- },
-
updateTitleAndTooltip: function () {
let title = this.win.tabbrowser.getWindowTitleForBrowser(this.linkedBrowser);
this.preview.title = title;
this.preview.tooltip = title;
},
- //////////////////////////////////////////////////////////////////////////////
- //// nsITaskbarPreviewController
+ // nsITaskbarPreviewController
+ // window width and height, not browser
get width() {
return this.win.width;
},
+ // window width and height, not browser
get height() {
return this.win.height;
},
get thumbnailAspectRatio() {
- let boxObject = this.tab.linkedBrowser.boxObject;
+ let browserDims = this.browserDims;
// Avoid returning 0
- let tabWidth = boxObject.width || 1;
+ let tabWidth = browserDims.width || 1;
// Avoid divide by 0
- let tabHeight = boxObject.height || 1;
+ let tabHeight = browserDims.height || 1;
return tabWidth / tabHeight;
},
- drawPreview: function (ctx) {
- let self = this;
- this.win.tabbrowser.previewTab(this.tab, function () self.previewTabCallback(ctx));
-
- // We must avoid having the frame drawn around the window. See bug 520807
- return false;
- },
-
- previewTabCallback: function (ctx) {
- // This will extract the resolution-scale component of the scaling we need,
- // which should be applied to both chrome and content;
- // the page zoom component is applied (to content only) within updateCanvasPreview.
- let scale = this.winutils.screenPixelsPerCSSPixel / this.winutils.fullZoom;
- ctx.save();
- ctx.scale(scale, scale);
- let width = this.win.width;
- let height = this.win.height;
- // Draw our toplevel window
- ctx.drawWindow(this.win.win, 0, 0, width, height, "transparent");
-
- // XXX (jfkthame): Pending tabs don't seem to draw with the proper scaling
- // unless we use this block of code; but doing this for "normal" (loaded) tabs
- // results in blurry rendering on hidpi systems, so we avoid it if possible.
- // I don't understand why pending and loaded tabs behave differently here...
- // (see bug 857061).
- if (this.tab.hasAttribute("pending")) {
- // Compositor, where art thou?
- // Draw the tab content on top of the toplevel window
- this.updateCanvasPreview();
-
- let boxObject = this.linkedBrowser.boxObject;
- ctx.translate(boxObject.x, boxObject.y);
- ctx.drawImage(this.canvasPreview, 0, 0);
- }
+ /**
+ * Responds to taskbar requests for window previews. Returns the results asynchronously
+ * through updateCanvasPreview.
+ *
+ * @param aTaskbarCallback nsITaskbarPreviewCallback results callback
+ */
+ requestPreview: function (aTaskbarCallback) {
+ // Grab a high res content preview
+ this.resetCanvasPreview();
+ this.updateCanvasPreview(true, (aPreviewCanvas) => {
+ let winWidth = this.win.width;
+ let winHeight = this.win.height;
- ctx.restore();
- },
+ let composite = PageThumbs.createCanvas();
+
+ // Use transparency, Aero glass is drawn black without it.
+ composite.mozOpaque = false;
- drawThumbnail: function (ctx, width, height) {
- this.updateCanvasPreview();
+ let ctx = composite.getContext('2d');
+ let scale = this.screenPixelsPerCSSPixel / this.zoom;
- let scale = width/this.linkedBrowser.boxObject.width;
- ctx.scale(scale, scale);
- ctx.drawImage(this.canvasPreview, 0, 0);
+ composite.width = winWidth * scale;
+ composite.height = winHeight * scale;
- // Don't draw a frame around the thumbnail
- return false;
+ ctx.save();
+ ctx.scale(scale, scale);
+
+ // Draw chrome. Note we currently do not get scrollbars for remote frames
+ // in the image above.
+ ctx.drawWindow(this.win.win, 0, 0, winWidth, winHeight, "rgba(0,0,0,0)");
+
+ // Draw the content are into the composite canvas at the right location.
+ ctx.drawImage(aPreviewCanvas, this.browserDims.x, this.browserDims.y,
+ aPreviewCanvas.width, aPreviewCanvas.height);
+ ctx.restore();
+
+ // Deliver the resulting composite canvas to Windows
+ this.win.tabbrowser.previewTab(this.tab, function () {
+ aTaskbarCallback.done(composite, false);
+ });
+ });
+ },
+
+ /**
+ * Responds to taskbar requests for tab thumbnails. Returns the results asynchronously
+ * through updateCanvasPreview.
+ *
+ * Note Windows requests a specific width and height here, if the resulting thumbnail
+ * does not match these dimensions thumbnail display will fail.
+ *
+ * @param aTaskbarCallback nsITaskbarPreviewCallback results callback
+ * @param aRequestedWidth width of the requested thumbnail
+ * @param aRequestedHeight height of the requested thumbnail
+ */
+ requestThumbnail: function (aTaskbarCallback, aRequestedWidth, aRequestedHeight) {
+ this.resizeCanvasPreview(aRequestedWidth, aRequestedHeight);
+ this.updateCanvasPreview(false, (aThumbnailCanvas) => {
+ aTaskbarCallback.done(aThumbnailCanvas, false);
+ });
},
+ // Event handling
+
onClose: function () {
this.win.tabbrowser.removeTab(this.tab);
},
@@ -355,22 +331,9 @@ PreviewController.prototype = {
return true;
},
- //// nsIDOMEventListener
+ // nsIDOMEventListener
handleEvent: function (evt) {
switch (evt.type) {
- case "MozAfterPaint":
- if (evt.originalTarget === this.linkedBrowser.contentWindow) {
- let clientRects = evt.clientRects;
- let length = clientRects.length;
- for (let i = 0; i < length; i++) {
- let r = clientRects.item(i);
- this.onTabPaint(r);
- }
- }
- let preview = this.preview;
- if (preview.visible)
- preview.invalidate();
- break;
case "TabAttrModified":
this.updateTitleAndTooltip();
break;
@@ -386,14 +349,13 @@ XPCOMUtils.defineLazyGetter(PreviewController.prototype, "canvasPreviewFlags",
| canvasInterface.DRAWWINDOW_DO_NOT_FLUSH;
});
-////////////////////////////////////////////////////////////////////////////////
-//// TabWindow
+// TabWindow
/*
* This class monitors a browser window for changes to its tabs
*
* @param win
- * The nsIDOMWindow browser window
+ * The nsIDOMWindow browser window
*/
function TabWindow(win) {
this.win = win;
@@ -403,6 +365,10 @@ function TabWindow(win) {
for (let i = 0; i < this.tabEvents.length; i++)
this.tabbrowser.tabContainer.addEventListener(this.tabEvents[i], this, false);
+
+ for (let i = 0; i < this.winEvents.length; i++)
+ this.win.addEventListener(this.winEvents[i], this, false);
+
this.tabbrowser.addTabsProgressListener(this);
AeroPeek.windows.push(this);
@@ -416,7 +382,10 @@ function TabWindow(win) {
TabWindow.prototype = {
_enabled: false,
+ _cachedWidth: 0,
+ _cachedHeight: 0,
tabEvents: ["TabOpen", "TabClose", "TabSelect", "TabMove"],
+ winEvents: ["resize"],
destroy: function () {
this._destroying = true;
@@ -424,6 +393,10 @@ TabWindow.prototype = {
let tabs = this.tabbrowser.tabs;
this.tabbrowser.removeTabsProgressListener(this);
+
+ for (let i = 0; i < this.winEvents.length; i++)
+ this.win.removeEventListener(this.winEvents[i], this, false);
+
for (let i = 0; i < this.tabEvents.length; i++)
this.tabbrowser.tabContainer.removeEventListener(this.tabEvents[i], this, false);
@@ -442,6 +415,15 @@ TabWindow.prototype = {
return this.win.innerHeight;
},
+ cacheDims: function () {
+ this._cachedWidth = this.width;
+ this._cachedHeight = this.height;
+ },
+
+ testCacheDims: function () {
+ return this._cachedWidth == this.width && this._cachedHeight == this.height;
+ },
+
// Invoked when the given tab is added to this window
newTab: function (tab) {
let controller = new PreviewController(this, tab);
@@ -461,18 +443,8 @@ TabWindow.prototype = {
let preview = AeroPeek.taskbar.createTaskbarTabPreview(docShell, controller);
preview.visible = AeroPeek.enabled;
preview.active = this.tabbrowser.selectedTab == controller.tab;
- // Grab the default favicon
- getFaviconAsImage(
- controller.linkedBrowser.contentWindow.document,
- null,
- PrivateBrowsingUtils.isWindowPrivate(this.win),
- function (img) {
- // It is possible that we've already gotten the real favicon, so make sure
- // we have not set one before setting this default one.
- if (!preview.icon)
- preview.icon = img;
- });
-
+ this.onLinkIconAvailable(controller.tab.linkedBrowser,
+ controller.tab.getAttribute("image"));
return preview;
},
@@ -484,8 +456,6 @@ TabWindow.prototype = {
preview.move(null);
preview.controller.wrappedJSObject.destroy();
- // We don't want to splice from the array if the tabs aren't being removed
- // from the tab bar as well (as is the case when the window closes).
this.previews.delete(tab);
AeroPeek.removePreview(preview);
},
@@ -499,7 +469,7 @@ TabWindow.prototype = {
// Because making a tab visible requires that the tab it is next to be
// visible, it is far simpler to unset the 'next' tab and recreate them all
// at once.
- for (let [tab, preview] of this.previews) {
+ for (let [, preview] of this.previews) {
preview.move(null);
preview.visible = enable;
}
@@ -514,27 +484,25 @@ TabWindow.prototype = {
let previews = this.previews;
let tabs = this.tabbrowser.tabs;
- // Previews are internally stored using a map, so we need to iterate over
- // the tabbrowser's array of tabs to retrieve previews in the same order.
- // Tycho: let inorder = [previews.get(t) for (t of tabs) if (previews.has(t))];
+ // Previews are internally stored using a map, so we need to iterate the
+ // tabbrowser's array of tabs to retrieve previews in the same order.
let inorder = [];
-
for (let t of tabs) {
if (previews.has(t)) {
inorder.push(previews.get(t));
}
}
- // Since the internal taskbar array has not yet been updated, we must force
- // the sorting order of our local array on it. To do so, we must walk
- // the local array backwards, because otherwise we would send move requests
- // in the wrong order. See bug 522610 for details.
+ // Since the internal taskbar array has not yet been updated we must force
+ // on it the sorting order of our local array. To do so we must walk
+ // the local array backwards, otherwise we would send move requests in the
+ // wrong order. See bug 522610 for details.
for (let i = inorder.length - 1; i >= 0; i--) {
inorder[i].move(inorder[i + 1] || null);
}
},
- //// nsIDOMEventListener
+ // nsIDOMEventListener
handleEvent: function (evt) {
let tab = evt.originalTarget;
switch (evt.type) {
@@ -552,28 +520,117 @@ TabWindow.prototype = {
case "TabMove":
this.updateTabOrdering();
break;
+ case "resize":
+ if (!AeroPeek._prefenabled)
+ return;
+ this.onResize();
+ break;
+ }
+ },
+
+ // Set or reset a timer that will invalidate visible thumbnails soon.
+ setInvalidationTimer: function () {
+ if (!this.invalidateTimer) {
+ this.invalidateTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
+ }
+ this.invalidateTimer.cancel();
+
+ // delay 1 second before invalidating
+ this.invalidateTimer.initWithCallback(() => {
+ // invalidate every preview. note the internal implementation of
+ // invalidate ignores thumbnails that aren't visible.
+ this.previews.forEach(function (aPreview) {
+ let controller = aPreview.controller.wrappedJSObject;
+ if (!controller.testCacheBrowserDims()) {
+ controller.cacheBrowserDims();
+ aPreview.invalidate();
+ }
+ });
+ }, 1000, Ci.nsITimer.TYPE_ONE_SHOT);
+ },
+
+ onResize: function () {
+ // Specific to a window.
+
+ // Call invalidate on each tab thumbnail so that Windows will request an
+ // updated image. However don't do this repeatedly across multiple resize
+ // events triggered during window border drags.
+
+ if (this.testCacheDims()) {
+ return;
+ }
+
+ // update the window dims on our TabWindow object.
+ this.cacheDims();
+
+ // invalidate soon
+ this.setInvalidationTimer();
+ },
+
+ invalidateTabPreview: function(aBrowser) {
+ for (let [tab, preview] of this.previews) {
+ if (aBrowser == tab.linkedBrowser) {
+ preview.invalidate();
+ break;
+ }
+ }
+ },
+
+ // Browser progress listener
+
+ onLocationChange: function (aBrowser) {
+ // I'm not sure we need this, onStateChange does a really good job
+ // of picking up page changes.
+ // this.invalidateTabPreview(aBrowser);
+ },
+
+ onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
+ if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
+ aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK) {
+ this.invalidateTabPreview(aBrowser);
}
},
- //// Browser progress listener
+ directRequestProtocols: new Set([
+ "file", "chrome", "resource", "about"
+ ]),
onLinkIconAvailable: function (aBrowser, aIconURL) {
- let self = this;
+ let requestURL = null;
+ if (aIconURL) {
+ let shouldRequestFaviconURL = true;
+ try {
+ let urlObject = NetUtil.newURI(aIconURL);
+ shouldRequestFaviconURL =
+ !this.directRequestProtocols.has(urlObject.scheme);
+ } catch (ex) {}
+
+ requestURL = shouldRequestFaviconURL ?
+ "moz-anno:favicon:" + aIconURL :
+ aIconURL;
+ }
+ let isDefaultFavicon = !requestURL;
getFaviconAsImage(
- aBrowser.contentWindow.document,
- aIconURL,PrivateBrowsingUtils.isWindowPrivate(this.win),
- function (img) {
- let index = self.tabbrowser.browsers.indexOf(aBrowser);
- // Only add it if we've found the index. The tab could have closed!
+ requestURL,
+ PrivateBrowsingUtils.isWindowPrivate(this.win),
+ img => {
+ let index = this.tabbrowser.browsers.indexOf(aBrowser);
+ // Only add it if we've found the index and the URI is still the same.
+ // The tab could have closed, and there's no guarantee the icons
+ // will have finished fetching 'in order'.
if (index != -1) {
- let tab = self.tabbrowser.tabs[index];
- self.previews.get(tab).icon = img;
+ let tab = this.tabbrowser.tabs[index];
+ let preview = this.previews.get(tab);
+ if (tab.getAttribute("image") == aIconURL ||
+ (!preview.icon && isDefaultFavicon)) {
+ preview.icon = img;
+ }
}
- });
+ }
+ );
}
}
-////////////////////////////////////////////////////////////////////////////////
-//// AeroPeek
+// AeroPeek
/*
* This object acts as global storage and external interface for this feature.
@@ -582,10 +639,12 @@ TabWindow.prototype = {
this.AeroPeek = {
available: false,
// Does the pref say we're enabled?
- _prefenabled: true,
+ __prefenabled: false,
_enabled: true,
+ initialized: false,
+
// nsITaskbarTabPreview array
previews: [],
@@ -609,24 +668,14 @@ this.AeroPeek = {
if (!this.available)
return;
- this.prefs.addObserver(TOGGLE_PREF_NAME, this, false);
- this.prefs.addObserver(DISABLE_THRESHOLD_PREF_NAME, this, false);
- this.prefs.addObserver(CACHE_EXPIRATION_TIME_PREF_NAME, this, false);
-
- this.cacheLifespan = this.prefs.getIntPref(CACHE_EXPIRATION_TIME_PREF_NAME);
-
- this.maxpreviews = this.prefs.getIntPref(DISABLE_THRESHOLD_PREF_NAME);
-
+ this.prefs.addObserver(TOGGLE_PREF_NAME, this, true);
this.enabled = this._prefenabled = this.prefs.getBoolPref(TOGGLE_PREF_NAME);
+ this.initialized = true;
},
destroy: function destroy() {
this._enabled = false;
- this.prefs.removeObserver(TOGGLE_PREF_NAME, this);
- this.prefs.removeObserver(DISABLE_THRESHOLD_PREF_NAME, this);
- this.prefs.removeObserver(CACHE_EXPIRATION_TIME_PREF_NAME, this);
-
if (this.cacheTimer)
this.cacheTimer.cancel();
},
@@ -646,6 +695,61 @@ this.AeroPeek = {
});
},
+ get _prefenabled() {
+ return this.__prefenabled;
+ },
+
+ set _prefenabled(enable) {
+ if (enable == this.__prefenabled) {
+ return;
+ }
+ this.__prefenabled = enable;
+
+ if (enable) {
+ this.enable();
+ } else {
+ this.disable();
+ }
+ },
+
+ _observersAdded: false,
+
+ enable() {
+ if (!this._observersAdded) {
+ this.prefs.addObserver(DISABLE_THRESHOLD_PREF_NAME, this, true);
+ this.prefs.addObserver(CACHE_EXPIRATION_TIME_PREF_NAME, this, true);
+ PlacesUtils.history.addObserver(this, true);
+ this._observersAdded = true;
+ }
+
+ this.cacheLifespan = this.prefs.getIntPref(CACHE_EXPIRATION_TIME_PREF_NAME);
+
+ this.maxpreviews = this.prefs.getIntPref(DISABLE_THRESHOLD_PREF_NAME);
+
+ // If the user toggled us on/off while the browser was already up
+ // (rather than this code running on startup because the pref was
+ // already set to true), we must initialize previews for open windows:
+ if (this.initialized) {
+ let browserWindows = Services.wm.getEnumerator("navigator:browser");
+ while (browserWindows.hasMoreElements()) {
+ let win = browserWindows.getNext();
+ if (!win.closed) {
+ this.onOpenWindow(win);
+ }
+ }
+ }
+ },
+
+ disable() {
+ while (this.windows.length) {
+ // We can't call onCloseWindow here because it'll bail if we're not
+ // enabled.
+ let tabWinObject = this.windows[0];
+ tabWinObject.destroy(); // This will remove us from the array.
+ delete tabWinObject.win.gTaskbarTabGroup; // Tidy up the window.
+ }
+ },
+
addPreview: function (preview) {
this.previews.push(preview);
this.checkPreviewCount();
@@ -658,15 +762,15 @@ this.AeroPeek = {
},
checkPreviewCount: function () {
- if (this.previews.length > this.maxpreviews)
- this.enabled = false;
- else
- this.enabled = this._prefenabled;
+ if (!this._prefenabled) {
+ return;
+ }
+ this.enabled = this.previews.length <= this.maxpreviews;
},
onOpenWindow: function (win) {
// This occurs when the taskbar service is not available (xp, vista)
- if (!this.available)
+ if (!this.available || !this._prefenabled)
return;
win.gTaskbarTabGroup = new TabWindow(win);
@@ -674,7 +778,7 @@ this.AeroPeek = {
onCloseWindow: function (win) {
// This occurs when the taskbar service is not available (xp, vista)
- if (!this.available)
+ if (!this.available || !this._prefenabled)
return;
win.gTaskbarTabGroup.destroy();
@@ -689,16 +793,20 @@ this.AeroPeek = {
this.cacheTimer.init(this, 1000*this.cacheLifespan, Ci.nsITimer.TYPE_ONE_SHOT);
},
- //// nsIObserver
+ // nsIObserver
observe: function (aSubject, aTopic, aData) {
+ if (aTopic == "nsPref:changed" && aData == TOGGLE_PREF_NAME) {
+ this._prefenabled = this.prefs.getBoolPref(TOGGLE_PREF_NAME);
+ }
+ if (!this._prefenabled) {
+ return;
+ }
switch (aTopic) {
case "nsPref:changed":
if (aData == CACHE_EXPIRATION_TIME_PREF_NAME)
break;
- if (aData == TOGGLE_PREF_NAME)
- this._prefenabled = this.prefs.getBoolPref(TOGGLE_PREF_NAME);
- else if (aData == DISABLE_THRESHOLD_PREF_NAME)
+ if (aData == DISABLE_THRESHOLD_PREF_NAME)
this.maxpreviews = this.prefs.getIntPref(DISABLE_THRESHOLD_PREF_NAME);
// Might need to enable/disable ourselves
this.checkPreviewCount();
@@ -710,10 +818,38 @@ this.AeroPeek = {
});
break;
}
- }
+ },
+
+ /* nsINavHistoryObserver implementation */
+ onBeginUpdateBatch() {},
+ onEndUpdateBatch() {},
+ onVisit() {},
+ onTitleChanged() {},
+ onFrecencyChanged() {},
+ onManyFrecenciesChanged() {},
+ onDeleteURI() {},
+ onClearHistory() {},
+ onDeleteVisits() {},
+ onPageChanged(uri, changedConst, newValue) {
+ if (this.enabled && changedConst == Ci.nsINavHistoryObserver.ATTRIBUTE_FAVICON) {
+ for (let win of this.windows) {
+ for (let [tab, ] of win.previews) {
+ if (tab.getAttribute("image") == newValue) {
+ win.onLinkIconAvailable(tab.linkedBrowser, newValue);
+ }
+ }
+ }
+ }
+ },
+
+ QueryInterface: XPCOMUtils.generateQI([
+ Ci.nsISupportsWeakReference,
+ Ci.nsINavHistoryObserver,
+ Ci.nsIObserver
+ ]),
};
-XPCOMUtils.defineLazyGetter(AeroPeek, "cacheTimer", function ()
+XPCOMUtils.defineLazyGetter(AeroPeek, "cacheTimer", () =>
Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer)
);
diff --git a/application/palemoon/themes/linux/permissions/aboutPermissions.css b/application/palemoon/themes/linux/permissions/aboutPermissions.css
index f4fd3d0baa..386e167e68 100644
--- a/application/palemoon/themes/linux/permissions/aboutPermissions.css
+++ b/application/palemoon/themes/linux/permissions/aboutPermissions.css
@@ -12,6 +12,11 @@
padding-bottom: 0.5em;
}
+/* content box */
+#permissions-content {
+ height: 100%;
+}
+
/* sites box */
#sites-box {
diff --git a/application/palemoon/themes/osx/browser.css b/application/palemoon/themes/osx/browser.css
index 400ace3f8f..97073b1611 100644
--- a/application/palemoon/themes/osx/browser.css
+++ b/application/palemoon/themes/osx/browser.css
@@ -817,14 +817,6 @@ toolbar[brighttext] #bookmarks-menu-button.bookmark-item {
}
%endif
-/* ::::: fullscreen window controls ::::: */
-
-#minimize-button,
-#close-button,
-#fullscreen-button ~ #window-controls > #restore-button {
- display: none;
-}
-
/* ::::: Location Bar ::::: */
#urlbar,
@@ -1348,6 +1340,257 @@ richlistitem[type~="action"][actiontype="switchtab"][selected="true"] > .ac-url-
min-width: 27em;
}
+/* BOOKMARKING PANEL */
+#editBookmarkPanelStarIcon {
+ list-style-image: url("chrome://browser/skin/places/starred48.png");
+ width: 48px;
+ height: 48px;
+}
+
+#editBookmarkPanelStarIcon[unstarred] {
+ list-style-image: url("chrome://browser/skin/places/unstarred48.png");
+}
+
+#editBookmarkPanelTitle {
+ font-size: 130%;
+ font-weight: bold;
+}
+
+#editBMPanel_rows > row {
+ margin-bottom: 8px;
+}
+
+#editBMPanel_rows > row:last-of-type {
+ margin-bottom: 0;
+}
+
+/**** Input elements ****/
+
+#editBMPanel_rows > row > textbox,
+#editBMPanel_rows > row > hbox > textbox {
+ -moz-appearance: none;
+ background: linear-gradient(#fafafa, #fff);
+ background-clip: padding-box;
+ border-radius: 3px;
+ border: 1px solid rgba(0,0,0,.3) !important;
+ box-shadow: inset 0 1px 1px 1px rgba(0,0,0,.05),
+ 0 1px rgba(255,255,255,.3);
+ margin: 0;
+ padding: 3px 6px;
+}
+
+#editBMPanel_rows > row > textbox[focused="true"],
+#editBMPanel_rows > row > hbox > textbox[focused="true"] {
+ border-color: -moz-mac-focusring !important;
+ box-shadow: @focusRingShadow@;
+}
+
+/**** HUD style buttons ****/
+
+.editBookmarkPanelHeaderButton,
+.editBookmarkPanelBottomButton {
+ @hudButton@
+ margin: 0;
+ min-width: 82px;
+ min-height: 22px;
+}
+
+.editBookmarkPanelHeaderButton:hover:active,
+.editBookmarkPanelBottomButton:hover:active {
+ @hudButtonPressed@
+}
+
+.editBookmarkPanelHeaderButton:-moz-focusring,
+.editBookmarkPanelBottomButton:-moz-focusring {
+ @hudButtonFocused@
+}
+
+.editBookmarkPanelBottomButton[default="true"] {
+ background-color: #666;
+}
+
+#editBookmarkPanelHeader {
+ margin-bottom: 6px;
+}
+
+.editBookmarkPanelBottomButton:last-child {
+ -moz-margin-start: 8px;
+}
+
+/* The following elements come from editBookmarkOverlay.xul. Styling that's
+ specific to the editBookmarkPanel should be in browser.css. Styling that
+ should be shared by all editBookmarkOverlay.xul consumers should be in
+ editBookmarkOverlay.css. */
+
+#editBMPanel_newFolderBox {
+ background: linear-gradient(#fff, #f2f2f2);
+ background-origin: padding-box;
+ background-clip: padding-box;
+ border-radius: 0 0 3px 3px;
+ border: 1px solid #a5a5a5;
+ box-shadow: inset 0 1px rgba(255,255,255,.8),
+ inset 0 0 1px rgba(255,255, 255,.25),
+ 0 1px rgba(255,255,255,.3);
+ margin: 0;
+ padding: 0;
+ height: 20px;
+}
+
+#editBMPanel_newFolderButton {
+ -moz-appearance: none;
+ border: 0 solid #a5a5a5;
+ -moz-border-end-width: 1px;
+ padding: 0 9px;
+ margin: 0;
+ min-width: 21px;
+ min-height: 20px;
+ height: 20px;
+ color: #fff;
+ list-style-image: url("chrome://browser/skin/panel-plus-sign.png");
+ position: relative;
+}
+
+#editBMPanel_newFolderButton:hover:active {
+ background: linear-gradient(rgba(40,40,40,.9), rgba(70,70,70,.9));
+ box-shadow: inset 0 0 3px rgba(0,0,0,.2), inset 0 1px 7px rgba(0,0,0,.4);
+}
+
+#editBMPanel_newFolderButton:-moz-focusring {
+ @hudButtonFocused@
+}
+
+#editBMPanel_newFolderButton .button-text {
+ display: none;
+}
+
+#editBMPanel_folderMenuList {
+ @hudButton@
+ background-clip: padding-box;
+ margin: 0;
+ min-height: 22px;
+ padding-top: 2px;
+ padding-bottom: 1px;
+ -moz-padding-start: 8px;
+ -moz-padding-end: 4px;
+}
+
+#editBMPanel_folderMenuList:-moz-focusring {
+ @hudButtonFocused@
+}
+
+#editBMPanel_folderMenuList[open="true"],
+#editBMPanel_folderMenuList:hover:active {
+ @hudButtonPressed@
+}
+
+#editBMPanel_folderMenuList > .menulist-dropmarker {
+ -moz-appearance: none;
+ display: -moz-box;
+ background-color: transparent;
+ border: 0;
+ margin: 0;
+ padding: 0;
+ -moz-padding-end: 4px;
+ width: 7px;
+}
+
+#editBMPanel_folderMenuList > .menulist-dropmarker > .dropmarker-icon {
+ list-style-image: url("chrome://global/skin/icons/panel-dropmarker.png");
+}
+
+/**** folder tree and tag selector ****/
+
+#editBMPanel_folderTree,
+#editBMPanel_tagsSelector {
+ -moz-appearance: none;
+ background: linear-gradient(#fafafa, #fff);
+ background-clip: padding-box;
+ border-radius: 3px;
+ border: 1px solid rgba(0,0,0,.3);
+ box-shadow: inset 0 1px 1px 1px rgba(0,0,0,.05),
+ 0 1px rgba(255,255,255,.3);
+ margin: 0;
+}
+
+#editBMPanel_folderTree:-moz-focusring,
+#editBMPanel_tagsSelector:-moz-focusring {
+ border-color: -moz-mac-focusring;
+ box-shadow: @focusRingShadow@;
+}
+
+#editBMPanel_folderTree {
+ border-bottom: none;
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ /* Implements editBookmarkPanel resizing on folderTree un-collapse. */
+ margin: 0 !important;
+ min-width: 27em;
+ position: relative;
+}
+
+/**** expanders ****/
+
+#editBookmarkPanel .expander-up,
+#editBookmarkPanel .expander-down {
+ @hudButton@
+ margin: 0;
+ -moz-margin-start: 4px;
+ min-width: 27px;
+ min-height: 22px;
+}
+
+#editBookmarkPanel .expander-up:-moz-focusring,
+#editBookmarkPanel .expander-down:-moz-focusring {
+ @hudButtonFocused@
+}
+
+#editBookmarkPanel .expander-up:hover:active,
+#editBookmarkPanel .expander-down:hover:active {
+ @hudButtonPressed@
+}
+
+#editBookmarkPanel .expander-up {
+ list-style-image: url("chrome://browser/skin/panel-expander-open.png");
+}
+
+#editBookmarkPanel .expander-down {
+ list-style-image: url("chrome://browser/skin/panel-expander-closed.png");
+}
+
+#editBookmarkPanel .expander-up > .button-box > .button-icon,
+#editBookmarkPanel .expander-down > .button-box > .button-icon {
+ margin: 1px 0 0;
+}
+
+#editBookmarkPanel .expander-up > .button-box > .button-text,
+#editBookmarkPanel .expander-down > .button-box > .button-text {
+ display: none;
+}
+
+@media (min-resolution: 2dppx) {
+ #editBookmarkPanel .expander-up {
+ list-style-image: url("chrome://browser/skin/panel-expander-open@2x.png");
+ }
+
+ #editBookmarkPanel .expander-down {
+ list-style-image: url("chrome://browser/skin/panel-expander-closed@2x.png");
+ }
+
+ #editBookmarkPanel .expander-up > .button-box > .button-icon,
+ #editBookmarkPanel .expander-down > .button-box > .button-icon {
+ width: 9px;
+ }
+}
+
+#editBMPanel_tagsField > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input::-moz-placeholder {
+ opacity: 1.0;
+ color: #bbb;
+}
+
+.editBMPanel_rowLabel {
+ text-align: end;
+}
+
/* ::::: content area ::::: */
#sidebar {
diff --git a/application/palemoon/themes/osx/jar.mn b/application/palemoon/themes/osx/jar.mn
index 8f1ed03415..a665639894 100644
--- a/application/palemoon/themes/osx/jar.mn
+++ b/application/palemoon/themes/osx/jar.mn
@@ -41,6 +41,11 @@ browser.jar:
skin/classic/browser/mixed-content-blocked-64.png
skin/classic/browser/monitor.png
skin/classic/browser/monitor_16-10.png
+ skin/classic/browser/panel-expander-closed.png
+ skin/classic/browser/panel-expander-closed@2x.png
+ skin/classic/browser/panel-expander-open.png
+ skin/classic/browser/panel-expander-open@2x.png
+ skin/classic/browser/panel-plus-sign.png
skin/classic/browser/pageInfo.css
skin/classic/browser/pageInfo.png
skin/classic/browser/page-livemarks.png
@@ -116,6 +121,8 @@ browser.jar:
skin/classic/browser/places/libraryToolbar.png (places/libraryToolbar.png)
skin/classic/browser/places/starred48.png (places/starred48.png)
skin/classic/browser/places/unstarred48.png (places/unstarred48.png)
+ skin/classic/browser/places/unfiledBookmarks.png (places/unfiledBookmarks.png)
+ skin/classic/browser/places/unfiledBookmarks@2x.png (places/unfiledBookmarks@2x.png)
skin/classic/browser/places/tag.png (places/tag.png)
skin/classic/browser/places/tag@2x.png (places/tag@2x.png)
skin/classic/browser/places/history.png (places/history.png)
@@ -123,6 +130,8 @@ browser.jar:
skin/classic/browser/places/allBookmarks.png (places/allBookmarks.png)
skin/classic/browser/places/unsortedBookmarks.png (places/unsortedBookmarks.png)
skin/classic/browser/places/downloads.png (places/downloads.png)
+ skin/classic/browser/places/expander-closed-active.png (places/expander-closed-active.png)
+ skin/classic/browser/places/expander-open-active.png (places/expander-open-active.png)
skin/classic/browser/places/livemark-item.png (places/livemark-item.png)
skin/classic/browser/places/expander-closed.png (places/expander-closed.png)
skin/classic/browser/places/expander-open.png (places/expander-open.png)
diff --git a/application/palemoon/themes/osx/panel-expander-closed.png b/application/palemoon/themes/osx/panel-expander-closed.png
new file mode 100644
index 0000000000..f0e97b22e1
--- /dev/null
+++ b/application/palemoon/themes/osx/panel-expander-closed.png
Binary files differ
diff --git a/application/palemoon/themes/osx/panel-expander-closed@2x.png b/application/palemoon/themes/osx/panel-expander-closed@2x.png
new file mode 100644
index 0000000000..0e7ded50f4
--- /dev/null
+++ b/application/palemoon/themes/osx/panel-expander-closed@2x.png
Binary files differ
diff --git a/application/palemoon/themes/osx/panel-expander-open.png b/application/palemoon/themes/osx/panel-expander-open.png
new file mode 100644
index 0000000000..e3febf4ffb
--- /dev/null
+++ b/application/palemoon/themes/osx/panel-expander-open.png
Binary files differ
diff --git a/application/palemoon/themes/osx/panel-expander-open@2x.png b/application/palemoon/themes/osx/panel-expander-open@2x.png
new file mode 100644
index 0000000000..391337030c
--- /dev/null
+++ b/application/palemoon/themes/osx/panel-expander-open@2x.png
Binary files differ
diff --git a/application/palemoon/themes/osx/panel-plus-sign.png b/application/palemoon/themes/osx/panel-plus-sign.png
new file mode 100644
index 0000000000..375601e680
--- /dev/null
+++ b/application/palemoon/themes/osx/panel-plus-sign.png
Binary files differ
diff --git a/application/palemoon/themes/osx/permissions/aboutPermissions.css b/application/palemoon/themes/osx/permissions/aboutPermissions.css
index 406bb92046..f9a4a88af2 100644
--- a/application/palemoon/themes/osx/permissions/aboutPermissions.css
+++ b/application/palemoon/themes/osx/permissions/aboutPermissions.css
@@ -12,6 +12,11 @@
padding-bottom: 0.5em;
}
+/* content box */
+#permissions-content {
+ height: 100%;
+}
+
/* sites box */
#sites-box {
diff --git a/application/palemoon/themes/osx/places/editBookmarkOverlay.css b/application/palemoon/themes/osx/places/editBookmarkOverlay.css
index 3becb5069c..cc749c1152 100644
--- a/application/palemoon/themes/osx/places/editBookmarkOverlay.css
+++ b/application/palemoon/themes/osx/places/editBookmarkOverlay.css
@@ -2,8 +2,12 @@
* 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/. */
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+@namespace html url("http://www.w3.org/1999/xhtml");
+
/**** folder menulist ****/
-.folder-icon > .menulist-label-box > .menulist-icon {
+.folder-icon > .menulist-label-box > .menulist-icon,
+.folder-icon > .menu-iconic-left > .menu-iconic-icon {
width: 16px;
height: 16px;
}
@@ -16,27 +20,41 @@
list-style-image: url("chrome://global/skin/tree/folder.png") !important;
}
+@media (min-resolution: 2dppx) {
+ .folder-icon {
+ list-style-image: url("chrome://global/skin/tree/folder@2x.png") !important;
+ }
+}
+
+.menulist-icon {
+ margin: 0 !important;
+}
/**** expanders ****/
.expander-up,
.expander-down {
- min-width: 0;
+ -moz-appearance: none;
margin: 0;
- -moz-margin-end: 4px;
-}
-
-.expander-up > .button-box,
-.expander-down > .button-box {
+ margin-left: 8px;
padding: 0;
+ min-width: 0;
}
.expander-up {
- list-style-image: url("chrome://global/skin/icons/collapse.png");
+ list-style-image: url("chrome://browser/skin/places/expander-open.png");
}
.expander-down {
- list-style-image: url("chrome://global/skin/icons/expand.png");
+ list-style-image: url("chrome://browser/skin/places/expander-closed.png");
+}
+
+.expander-down:hover:active {
+ list-style-image: url("chrome://browser/skin/places/expander-closed-active.png");
+}
+
+.expander-up:hover:active {
+ list-style-image: url("chrome://browser/skin/places/expander-open-active.png");
}
#editBookmarkPanelContent {
@@ -44,8 +62,7 @@
}
#editBMPanel_folderTree {
- margin-top: 2px;
- margin-bottom: 2px;
+ margin: 6px 4px 0 4px;
}
/* Hide the value column of the tag autocomplete popup
@@ -58,22 +75,31 @@
}
-/* ::::: bookmark panel dropdown icons ::::: */
+/* ----- BOOKMARK PANEL DROPDOWN MENU ITEMS ----- */
#editBMPanel_folderMenuList[selectedIndex="0"],
#editBMPanel_toolbarFolderItem {
- list-style-image: url("chrome://browser/skin/places/bookmarksToolbar.png") !important;
- -moz-image-region: auto !important;
+ list-style-image: url("chrome://browser/skin/places/bookmarksToolbar.png") !important;
}
#editBMPanel_folderMenuList[selectedIndex="1"],
#editBMPanel_bmRootItem {
- list-style-image: url("chrome://browser/skin/places/bookmarksMenu.png") !important;
- -moz-image-region: auto !important;
+ list-style-image: url("chrome://browser/skin/places/bookmarksMenu.png") !important;
}
#editBMPanel_folderMenuList[selectedIndex="2"],
#editBMPanel_unfiledRootItem {
- list-style-image: url("chrome://browser/skin/places/unsortedBookmarks.png") !important;
- -moz-image-region: auto !important;
+ list-style-image: url("chrome://browser/skin/places/unfiledBookmarks.png") !important;
+}
+
+@media (min-resolution: 2dppx) {
+ #editBMPanel_folderMenuList[selectedIndex="0"],
+ #editBMPanel_toolbarFolderItem {
+ list-style-image: url("chrome://browser/skin/places/bookmarksToolbar@2x.png") !important;
+ }
+
+ #editBMPanel_folderMenuList[selectedIndex="2"],
+ #editBMPanel_unfiledRootItem {
+ list-style-image: url("chrome://browser/skin/places/unfiledBookmarks@2x.png") !important;
+ }
}
diff --git a/application/palemoon/themes/osx/places/expander-closed-active.png b/application/palemoon/themes/osx/places/expander-closed-active.png
new file mode 100644
index 0000000000..7ef5f04f9e
--- /dev/null
+++ b/application/palemoon/themes/osx/places/expander-closed-active.png
Binary files differ
diff --git a/application/palemoon/themes/osx/places/expander-open-active.png b/application/palemoon/themes/osx/places/expander-open-active.png
new file mode 100644
index 0000000000..673ead568d
--- /dev/null
+++ b/application/palemoon/themes/osx/places/expander-open-active.png
Binary files differ
diff --git a/application/palemoon/themes/osx/places/unfiledBookmarks.png b/application/palemoon/themes/osx/places/unfiledBookmarks.png
new file mode 100644
index 0000000000..69495dac0f
--- /dev/null
+++ b/application/palemoon/themes/osx/places/unfiledBookmarks.png
Binary files differ
diff --git a/application/palemoon/themes/osx/places/unfiledBookmarks@2x.png b/application/palemoon/themes/osx/places/unfiledBookmarks@2x.png
new file mode 100644
index 0000000000..44efd6aba3
--- /dev/null
+++ b/application/palemoon/themes/osx/places/unfiledBookmarks@2x.png
Binary files differ
diff --git a/application/palemoon/themes/windows/permissions/aboutPermissions.css b/application/palemoon/themes/windows/permissions/aboutPermissions.css
index fb28ef02a3..60ee816733 100644
--- a/application/palemoon/themes/windows/permissions/aboutPermissions.css
+++ b/application/palemoon/themes/windows/permissions/aboutPermissions.css
@@ -12,6 +12,11 @@
padding-bottom: 0.5em;
}
+/* content box */
+#permissions-content {
+ height: 100%;
+}
+
/* sites box */
#sites-box {
diff --git a/build/moz.configure/warnings.configure b/build/moz.configure/warnings.configure
index 273a41bd91..94ad3fa79b 100644
--- a/build/moz.configure/warnings.configure
+++ b/build/moz.configure/warnings.configure
@@ -101,6 +101,9 @@ check_and_add_gcc_warning('-Wno-error=coverage-mismatch', when='MOZ_PGO')
# false positives during PGO
check_and_add_gcc_warning('-Wno-error=free-nonheap-object', when='MOZ_PGO')
+# Would be a pain to fix all occurrences, for very little gain
+check_and_add_gcc_warning('-Wno-error=multistatement-macros')
+
# We use mix of both POSIX and Win32 printf format across the tree, so format
# warnings are useless on mingw.
check_and_add_gcc_warning('-Wno-format',
diff --git a/caps/nsScriptSecurityManager.cpp b/caps/nsScriptSecurityManager.cpp
index 0277f771d7..129a4d0da9 100644
--- a/caps/nsScriptSecurityManager.cpp
+++ b/caps/nsScriptSecurityManager.cpp
@@ -68,9 +68,6 @@
#include "nsILoadInfo.h"
#include "nsXPCOMStrings.h"
-// This should be probably defined on some other place... but I couldn't find it
-#define WEBAPPS_PERM_NAME "webapps-manage"
-
using namespace mozilla;
using namespace mozilla::dom;
diff --git a/config/external/nss/nss.symbols b/config/external/nss/nss.symbols
index ba5492c37a..3239d3119c 100644
--- a/config/external/nss/nss.symbols
+++ b/config/external/nss/nss.symbols
@@ -271,7 +271,6 @@ NSS_IsInitialized
NSS_OptionSet
NSS_NoDB_Init
NSS_SecureMemcmp
-NSS_SecureMemcmpZero
NSS_SetAlgorithmPolicy
NSS_SetDomesticPolicy
NSS_Shutdown
@@ -490,7 +489,6 @@ PORT_UCS2_ASCIIConversion_Util
PORT_UCS2_UTF8Conversion
PORT_UCS2_UTF8Conversion_Util
PORT_ZAlloc
-PORT_ZAllocAlignedOffset_Util
PORT_ZAlloc_Util
PORT_ZFree_Util
SEC_AnyTemplate_Util @DATA@
@@ -725,9 +723,17 @@ VFY_VerifyDataWithAlgorithmID
VFY_VerifyDigestDirect
_SGN_VerifyPKCS1DigestInfo
__PK11_SetCertificateNickname
-# These symbols are not used by Firefox itself, but are used by Java's security
-# libraries, which in turn are used by Java applets/plugins/etc. Provide them
-# to make Java code happy.
+# These symbols are not used by applications but are possibly used across
+# NSS library boundaries.
+NSS_SecureMemcmpZero
+PORT_ZAllocAlignedOffset_Util
+CERT_FindCertByNicknameOrEmailAddrCX
+SECKEY_GetPrivateKeyType
+SEC_DerSignDataWithAlgorithmID
+SEC_CreateSignatureAlgorithmParameters
+# These symbols are not used by applicatons themselves, but are used by
+# Java's security libraries, which in turn are used by Java
+# applets/plugins/etc. Provide them to make Java code happy.
NSS_VersionCheck
NSS_Initialize
#ifdef NSS_EXTRA_SYMBOLS_FILE
diff --git a/devtools/shared/heapsnapshot/HeapSnapshot.cpp b/devtools/shared/heapsnapshot/HeapSnapshot.cpp
index 17f43f34e7..ef0bde948b 100644
--- a/devtools/shared/heapsnapshot/HeapSnapshot.cpp
+++ b/devtools/shared/heapsnapshot/HeapSnapshot.cpp
@@ -28,7 +28,6 @@
#include "mozilla/dom/ContentChild.h"
#include "mozilla/dom/HeapSnapshotBinding.h"
#include "mozilla/RangedPtr.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Unused.h"
#include "jsapi.h"
@@ -1610,13 +1609,6 @@ ThreadSafeChromeUtils::SaveHeapSnapshot(GlobalObject& global,
return;
}
}
-
- Telemetry::AccumulateTimeDelta(Telemetry::DEVTOOLS_SAVE_HEAP_SNAPSHOT_MS,
- start);
- Telemetry::Accumulate(Telemetry::DEVTOOLS_HEAP_SNAPSHOT_NODE_COUNT,
- nodeCount);
- Telemetry::Accumulate(Telemetry::DEVTOOLS_HEAP_SNAPSHOT_EDGE_COUNT,
- edgeCount);
}
/* static */ already_AddRefed<HeapSnapshot>
@@ -1641,10 +1633,6 @@ ThreadSafeChromeUtils::ReadHeapSnapshot(GlobalObject& global,
global.Context(), global, reinterpret_cast<const uint8_t*>(mm.address()),
mm.size(), rv);
- if (!rv.Failed())
- Telemetry::AccumulateTimeDelta(Telemetry::DEVTOOLS_READ_HEAP_SNAPSHOT_MS,
- start);
-
return snapshot.forget();
}
diff --git a/devtools/shared/security/socket.js b/devtools/shared/security/socket.js
index 068a8ea81f..9c6f5750a4 100644
--- a/devtools/shared/security/socket.js
+++ b/devtools/shared/security/socket.js
@@ -480,7 +480,6 @@ SocketListener.prototype = {
_setAdditionalSocketOptions: Task.async(function* () {
if (this.encryption) {
this._socket.serverCert = yield cert.local.getOrCreate();
- this._socket.setSessionCache(false);
this._socket.setSessionTickets(false);
let requestCert = Ci.nsITLSServerSocket.REQUEST_NEVER;
this._socket.setRequestClientCertificate(requestCert);
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000..bcd8b8f77b
--- /dev/null
+++ b/docs/CODE_OF_CONDUCT.md
@@ -0,0 +1,48 @@
+# Contributor Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, physical attributes, disability, ethnicity, level of experience, nationality, personal appearance, race, religion, or sexual orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being courteous (use "please" when you ask something of someone)
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism, even if you disagree with such criticism.
+* Similarly, accepting that someone may not act on criticism given.
+* Focusing on what is best for the community and its projects
+* Showing understanding and a reasonable level of empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* Unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct or community's or projects' best interests, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, acting on behalf of the project on IRC or other chat networks, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project owner at moonchild@palemoon.org. The project owner will review and investigate all complaints, and will respond in a way that they deem appropriate for the circumstances. The project team is generally obligated to maintain confidentiality with regard to the reporter of an incident, although in exceptional cases where intervention of authorities is required, the reporter may be individually identified to aid in the investigation or resolution of a conflict situation. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version [1.4][version].
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 8eca474950..ae307431d9 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -1972,71 +1972,7 @@ nsDocShell::GetCharset(nsACString& aCharset)
NS_IMETHODIMP
nsDocShell::GatherCharsetMenuTelemetry()
{
- nsCOMPtr<nsIContentViewer> viewer;
- GetContentViewer(getter_AddRefs(viewer));
- if (!viewer) {
- return NS_OK;
- }
-
- nsIDocument* doc = viewer->GetDocument();
- if (!doc || doc->WillIgnoreCharsetOverride()) {
- return NS_OK;
- }
-
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_USED, true);
-
- bool isFileURL = false;
- nsIURI* url = doc->GetOriginalURI();
- if (url) {
- url->SchemeIs("file", &isFileURL);
- }
-
- int32_t charsetSource = doc->GetDocumentCharacterSetSource();
- switch (charsetSource) {
- case kCharsetFromTopLevelDomain:
- // Unlabeled doc on a domain that we map to a fallback encoding
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 7);
- break;
- case kCharsetFromFallback:
- case kCharsetFromDocTypeDefault:
- case kCharsetFromCache:
- case kCharsetFromParentFrame:
- case kCharsetFromHintPrevDoc:
- // Changing charset on an unlabeled doc.
- if (isFileURL) {
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 0);
- } else {
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 1);
- }
- break;
- case kCharsetFromAutoDetection:
- // Changing charset on unlabeled doc where chardet fired
- if (isFileURL) {
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 2);
- } else {
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 3);
- }
- break;
- case kCharsetFromMetaPrescan:
- case kCharsetFromMetaTag:
- case kCharsetFromChannel:
- // Changing charset on a doc that had a charset label.
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 4);
- break;
- case kCharsetFromParentForced:
- case kCharsetFromUserForced:
- // Changing charset on a document that already had an override.
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 5);
- break;
- case kCharsetFromIrreversibleAutoDetection:
- case kCharsetFromOtherComponent:
- case kCharsetFromByteOrderMark:
- case kCharsetUninitialized:
- default:
- // Bug. This isn't supposed to happen.
- Telemetry::Accumulate(Telemetry::CHARSET_OVERRIDE_SITUATION, 6);
- break;
- }
+ /* STUB */
return NS_OK;
}
@@ -5062,10 +4998,6 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
errorPage.Assign(alternateErrorPage);
}
- if (!IsFrame() && errorPage.EqualsIgnoreCase("certerror")) {
- Telemetry::Accumulate(mozilla::Telemetry::SECURITY_UI, bucketId);
- }
-
} else {
error.AssignLiteral("nssFailure2");
}
@@ -5105,10 +5037,6 @@ nsDocShell::DisplayLoadError(nsresult aError, nsIURI* aURI,
: nsISecurityUITelemetry::WARNING_UNWANTED_PAGE_TOP;
}
- if (sendTelemetry && errorPage.EqualsIgnoreCase("blocked")) {
- Telemetry::Accumulate(Telemetry::SECURITY_UI, bucketId);
- }
-
cssClass.AssignLiteral("blacklist");
} else if (NS_ERROR_CONTENT_CRASHED == aError) {
errorPage.AssignLiteral("tabcrashed");
@@ -7622,8 +7550,6 @@ nsDocShell::EndPageLoad(nsIWebProgress* aProgress,
TimeStamp channelCreationTime;
rv = timingChannel->GetChannelCreation(&channelCreationTime);
if (NS_SUCCEEDED(rv) && !channelCreationTime.IsNull()) {
- Telemetry::AccumulateTimeDelta(Telemetry::TOTAL_CONTENT_PAGE_LOAD_TIME,
- channelCreationTime);
nsCOMPtr<nsPILoadGroupInternal> internalLoadGroup =
do_QueryInterface(mLoadGroup);
if (internalLoadGroup) {
@@ -12281,7 +12207,9 @@ nsDocShell::ShouldAddToSessionHistory(nsIURI* aURI)
return false;
}
- if (buf.EqualsLiteral("blank") || buf.EqualsLiteral("newtab")) {
+ if (buf.EqualsLiteral("blank") || buf.EqualsLiteral("logopage") ||
+ (buf.EqualsLiteral("newtab") &&
+ !Preferences::GetBool("browser.newtabpage.add_to_session_history", false))) {
return false;
}
}
diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
index ed96ee23b9..1bc4f82f49 100644
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -684,8 +684,6 @@ Navigator::GetDoNotTrack(nsAString &aResult)
bool
Navigator::JavaEnabled(ErrorResult& aRv)
{
- Telemetry::AutoTimer<Telemetry::CHECK_JAVA_ENABLED> telemetryTimer;
-
// Return true if we have a handler for the java mime
nsAdoptingString javaMIME = Preferences::GetString("plugin.java.mime");
NS_ENSURE_TRUE(!javaMIME.IsEmpty(), false);
diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp
index d125e5ad1c..1cfde6e1bb 100644
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -49,7 +49,6 @@
#include "nsContentUtils.h"
#include "nsIDOMGlobalPropertyInitializer.h"
#include "mozilla/Attributes.h"
-#include "mozilla/Telemetry.h"
// Window scriptable helper includes
#include "nsScriptNameSpaceManager.h"
@@ -1903,9 +1902,6 @@ LookupComponentsShim(JSContext *cx, JS::Handle<JSObject*> global,
nsPIDOMWindowInner *win,
JS::MutableHandle<JS::PropertyDescriptor> desc)
{
- // Keep track of how often this happens.
- Telemetry::Accumulate(Telemetry::COMPONENTS_SHIM_ACCESSED_BY_CONTENT, true);
-
// Warn once.
nsCOMPtr<nsIDocument> doc = win->GetExtantDoc();
if (doc) {
diff --git a/dom/base/nsDOMNavigationTiming.cpp b/dom/base/nsDOMNavigationTiming.cpp
index 32ce8a8cb0..9c732f2d8c 100644
--- a/dom/base/nsDOMNavigationTiming.cpp
+++ b/dom/base/nsDOMNavigationTiming.cpp
@@ -15,7 +15,6 @@
#include "nsPrintfCString.h"
#include "mozilla/dom/PerformanceNavigation.h"
#include "mozilla/TimeStamp.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -203,12 +202,6 @@ nsDOMNavigationTiming::NotifyNonBlankPaintForRootContentDocument()
mDocShellHasBeenActiveSinceNavigationStart ? "foreground tab" : "this tab was inactive some of the time between navigation start and first non-blank paint");
PROFILER_MARKER(marker.get());
}
-
- if (mDocShellHasBeenActiveSinceNavigationStart) {
- Telemetry::AccumulateTimeDelta(Telemetry::TIME_TO_NON_BLANK_PAINT_MS,
- mNavigationStart,
- mNonBlankPaint);
- }
}
void
diff --git a/dom/base/nsDeprecatedOperationList.h b/dom/base/nsDeprecatedOperationList.h
index 8fb381d9de..ea4b052890 100644
--- a/dom/base/nsDeprecatedOperationList.h
+++ b/dom/base/nsDeprecatedOperationList.h
@@ -44,7 +44,6 @@ DEPRECATED_OPERATION(PannerNodeDoppler)
DEPRECATED_OPERATION(NavigatorGetUserMedia)
DEPRECATED_OPERATION(WebrtcDeprecatedPrefix)
DEPRECATED_OPERATION(RTCPeerConnectionGetStreams)
-DEPRECATED_OPERATION(AppCache)
DEPRECATED_OPERATION(PrefixedImageSmoothingEnabled)
DEPRECATED_OPERATION(PrefixedFullscreenAPI)
DEPRECATED_OPERATION(LenientSetter)
diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp
index 8acfd901a9..ac9601caf1 100644
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -25,7 +25,6 @@
#include "plstr.h"
#include "mozilla/Sprintf.h"
-#include "mozilla/Telemetry.h"
#include "nsIInterfaceRequestor.h"
#include "nsIInterfaceRequestorUtils.h"
#include "nsILoadContext.h"
@@ -12370,101 +12369,7 @@ MightBeAboutOrChromeScheme(nsIURI* aURI)
void
nsDocument::ReportUseCounters()
{
- static const bool sDebugUseCounters = false;
- if (mReportedUseCounters) {
- return;
- }
-
- mReportedUseCounters = true;
-
- if (Telemetry::HistogramUseCounterCount > 0 &&
- (IsContentDocument() || IsResourceDoc())) {
- nsCOMPtr<nsIURI> uri;
- NodePrincipal()->GetURI(getter_AddRefs(uri));
- if (!uri || MightBeAboutOrChromeScheme(uri)) {
- return;
- }
-
- if (sDebugUseCounters) {
- nsCString spec = uri->GetSpecOrDefault();
-
- // URIs can be rather long for data documents, so truncate them to
- // some reasonable length.
- spec.Truncate(std::min(128U, spec.Length()));
- printf("-- Use counters for %s --\n", spec.get());
- }
-
- // We keep separate counts for individual documents and top-level
- // pages to more accurately track how many web pages might break if
- // certain features were removed. Consider the case of a single
- // HTML document with several SVG images and/or iframes with
- // sub-documents of their own. If we maintained a single set of use
- // counters and all the sub-documents use a particular feature, then
- // telemetry would indicate that we would be breaking N documents if
- // that feature were removed. Whereas with a document/top-level
- // page split, we can see that N documents would be affected, but
- // only a single web page would be affected.
-
- // The difference between the values of these two histograms and the
- // related use counters below tell us how many pages did *not* use
- // the feature in question. For instance, if we see that a given
- // session has destroyed 30 content documents, but a particular use
- // counter shows only a count of 5, we can infer that the use
- // counter was *not* used in 25 of those 30 documents.
- //
- // We do things this way, rather than accumulating a boolean flag
- // for each use counter, to avoid sending histograms for features
- // that don't get widely used. Doing things in this fashion means
- // smaller telemetry payloads and faster processing on the server
- // side.
- Telemetry::Accumulate(Telemetry::CONTENT_DOCUMENTS_DESTROYED, 1);
- if (IsTopLevelContentDocument()) {
- Telemetry::Accumulate(Telemetry::TOP_LEVEL_CONTENT_DOCUMENTS_DESTROYED, 1);
- }
-
- for (int32_t c = 0;
- c < eUseCounter_Count; ++c) {
- UseCounter uc = static_cast<UseCounter>(c);
-
- Telemetry::ID id =
- static_cast<Telemetry::ID>(Telemetry::HistogramFirstUseCounter + uc * 2);
- bool value = GetUseCounter(uc);
-
- if (value) {
- if (sDebugUseCounters) {
- const char* name = Telemetry::GetHistogramName(id);
- if (name) {
- printf(" %s", name);
- } else {
- printf(" #%d", id);
- }
- printf(": %d\n", value);
- }
-
- Telemetry::Accumulate(id, 1);
- }
-
- if (IsTopLevelContentDocument()) {
- id = static_cast<Telemetry::ID>(Telemetry::HistogramFirstUseCounter +
- uc * 2 + 1);
- value = GetUseCounter(uc) || GetChildDocumentUseCounter(uc);
-
- if (value) {
- if (sDebugUseCounters) {
- const char* name = Telemetry::GetHistogramName(id);
- if (name) {
- printf(" %s", name);
- } else {
- printf(" #%d", id);
- }
- printf(": %d\n", value);
- }
-
- Telemetry::Accumulate(id, 1);
- }
- }
- }
- }
+/* STUB */
}
void
diff --git a/dom/base/nsFrameMessageManager.cpp b/dom/base/nsFrameMessageManager.cpp
index 6fffd376b2..f173678b74 100644
--- a/dom/base/nsFrameMessageManager.cpp
+++ b/dom/base/nsFrameMessageManager.cpp
@@ -32,7 +32,6 @@
#include "mozilla/CycleCollectedJSContext.h"
#include "mozilla/IntentionalCrash.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/dom/File.h"
#include "mozilla/dom/MessagePort.h"
#include "mozilla/dom/nsIContentParent.h"
@@ -716,9 +715,6 @@ AllowMessage(size_t aDataLength, const nsAString& aMessageName)
NS_ConvertUTF16toUTF8 messageName(aMessageName);
messageName.StripChars("0123456789");
- Telemetry::Accumulate(Telemetry::MESSAGE_MANAGER_MESSAGE_SIZE2, messageName,
- aDataLength);
-
// A message includes more than structured clone data, so subtract
// 20KB to make it more likely that a message within this bound won't
// result in an overly large IPC message.
@@ -727,9 +723,6 @@ AllowMessage(size_t aDataLength, const nsAString& aMessageName)
return true;
}
- Telemetry::Accumulate(Telemetry::REJECTED_MESSAGE_MANAGER_MESSAGE,
- messageName);
-
return false;
}
@@ -2248,7 +2241,6 @@ nsSameProcessAsyncMessageBase::Init(const nsAString& aMessage,
nsIPrincipal* aPrincipal)
{
if (!mData.Copy(aData)) {
- Telemetry::Accumulate(Telemetry::IPC_SAME_PROCESS_MESSAGE_COPY_OOM_KB, aData.DataLength());
return NS_ERROR_OUT_OF_MEMORY;
}
diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
index 884ad69ca5..88cebe42b5 100644
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -211,7 +211,6 @@
#include "mozilla/AddonPathService.h"
#include "mozilla/BasePrincipal.h"
#include "mozilla/Services.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/dom/Location.h"
#include "nsHTMLDocument.h"
#include "nsWrapperCacheInlines.h"
@@ -1759,9 +1758,6 @@ nsGlobalWindow::~nsGlobalWindow()
DropOuterWindowDocs();
} else {
- Telemetry::Accumulate(Telemetry::INNERWINDOWS_WITH_MUTATION_LISTENERS,
- mMutationBits ? 1 : 0);
-
if (mListenerManager) {
mListenerManager->Disconnect();
mListenerManager = nullptr;
@@ -2695,7 +2691,6 @@ TreatAsRemoteXUL(nsIPrincipal* aPrincipal)
static bool
EnablePrivilege(JSContext* cx, unsigned argc, JS::Value* vp)
{
- Telemetry::Accumulate(Telemetry::ENABLE_PRIVILEGE_EVER_CALLED, true);
return xpc::EnableUniversalXPConnect(cx);
}
@@ -3389,9 +3384,6 @@ nsGlobalWindow::InnerSetNewDocument(JSContext* aCx, nsIDocument* aDocument)
mLastOpenedURI = aDocument->GetDocumentURI();
#endif
- Telemetry::Accumulate(Telemetry::INNERWINDOWS_WITH_MUTATION_LISTENERS,
- mMutationBits ? 1 : 0);
-
// Clear our mutation bitfield.
mMutationBits = 0;
}
@@ -6848,8 +6840,6 @@ FullscreenTransitionTask::Run()
Preferences::GetUint("full-screen-api.transition.timeout", 1000);
mTimer->Init(observer, timeout, nsITimer::TYPE_ONE_SHOT);
} else if (stage == eAfterToggle) {
- Telemetry::AccumulateTimeDelta(Telemetry::FULLSCREEN_TRANSITION_BLACK_MS,
- mFullscreenChangeStartTime);
mWidget->PerformFullscreenTransition(nsIWidget::eAfterFullscreenToggle,
mDuration.mFadeOut, mTransitionData,
this);
@@ -11577,11 +11567,6 @@ nsGlobalWindow::ShowSlowScriptDialog()
unsigned lineno;
bool hasFrame = JS::DescribeScriptedCaller(cx, &filename, &lineno);
- // Record the slow script event if we haven't done so already for this inner window
- // (which represents a particular page to the user).
- if (!mHasHadSlowScript) {
- Telemetry::Accumulate(Telemetry::SLOW_SCRIPT_PAGE_COUNT, 1);
- }
mHasHadSlowScript = true;
if (XRE_IsContentProcess() &&
@@ -11613,10 +11598,6 @@ nsGlobalWindow::ShowSlowScriptDialog()
return ContinueSlowScriptAndKeepNotifying;
}
- // Reached only on non-e10s - once per slow script dialog.
- // On e10s - we probe once at ProcessHangsMonitor.jsm
- Telemetry::Accumulate(Telemetry::SLOW_SCRIPT_NOTICE_COUNT, 1);
-
// Get the nsIPrompt interface from the docshell
nsCOMPtr<nsIDocShell> ds = GetDocShell();
NS_ENSURE_TRUE(ds, KillSlowScript);
diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp
index 3be1a6d2f4..4a984d294d 100644
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -70,7 +70,6 @@
#include "prthread.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/dom/BindingUtils.h"
#include "mozilla/Attributes.h"
#include "mozilla/dom/asmjscache/AsmJSCache.h"
@@ -1477,22 +1476,8 @@ nsJSContext::EndCycleCollectionCallback(CycleCollectorResults &aResults)
NS_GC_DELAY - std::min(ccNowDuration, kMaxICCDuration));
}
- // Log information about the CC via telemetry, JSON and the console.
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_FINISH_IGC, gCCStats.mAnyLockedOut);
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_SYNC_SKIPPABLE, gCCStats.mRanSyncForgetSkippable);
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_FULL, ccNowDuration);
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_MAX_PAUSE, gCCStats.mMaxSliceTime);
-
- if (!sLastCCEndTime.IsNull()) {
- // TimeBetween returns milliseconds, but we want to report seconds.
- uint32_t timeBetween = TimeBetween(sLastCCEndTime, gCCStats.mBeginTime) / 1000;
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_TIME_BETWEEN, timeBetween);
- }
sLastCCEndTime = endCCTimeStamp;
- Telemetry::Accumulate(Telemetry::FORGET_SKIPPABLE_MAX,
- sMaxForgetSkippableTime / PR_USEC_PER_MSEC);
-
PRTime delta = GetCollectionTimeDelta();
uint32_t cleanups = sForgetSkippableBeforeCC ? sForgetSkippableBeforeCC : 1;
diff --git a/dom/base/nsNodeInfoManager.cpp b/dom/base/nsNodeInfoManager.cpp
index 66c8c84cfd..80f0aa786b 100644
--- a/dom/base/nsNodeInfoManager.cpp
+++ b/dom/base/nsNodeInfoManager.cpp
@@ -392,9 +392,6 @@ nsNodeInfoManager::SetDocumentPrincipal(nsIPrincipal *aPrincipal)
NS_ASSERTION(aPrincipal, "Must have principal by this point!");
MOZ_DIAGNOSTIC_ASSERT(!nsContentUtils::IsExpandedPrincipal(aPrincipal),
"Documents shouldn't have an expanded principal");
- if (nsContentUtils::IsExpandedPrincipal(aPrincipal)) {
- Telemetry::Accumulate(Telemetry::DOCUMENT_WITH_EXPANDED_PRINCIPAL, 1);
- }
mPrincipal = aPrincipal;
}
diff --git a/dom/base/nsObjectLoadingContent.cpp b/dom/base/nsObjectLoadingContent.cpp
index 9e9dacf014..709c7aa56c 100644
--- a/dom/base/nsObjectLoadingContent.cpp
+++ b/dom/base/nsObjectLoadingContent.cpp
@@ -85,7 +85,6 @@
#include "mozilla/AsyncEventDispatcher.h"
#include "mozilla/EventDispatcher.h"
#include "mozilla/EventStates.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/dom/HTMLObjectElementBinding.h"
#include "mozilla/dom/HTMLSharedObjectElement.h"
#include "nsChannelClassifier.h"
@@ -1149,7 +1148,6 @@ nsObjectLoadingContent::OnStartRequest(nsIRequest *aRequest,
NS_LITERAL_STRING(" since it was found on an internal Firefox blocklist.");
console->LogStringMessage(message.get());
}
- Telemetry::Accumulate(Telemetry::PLUGIN_BLOCKED_FOR_STABILITY, 1);
mContentBlockingEnabled = true;
return NS_ERROR_FAILURE;
} else if (status == NS_ERROR_TRACKING_URI) {
@@ -1565,7 +1563,6 @@ nsObjectLoadingContent::MaybeRewriteYoutubeEmbed(nsIURI* aURI, nsIURI* aBaseURI,
}
if (uri.Find("enablejsapi=1", true, 0, -1) != kNotFound) {
- Telemetry::Accumulate(Telemetry::YOUTUBE_NONREWRITABLE_EMBED_SEEN, 1);
return;
}
@@ -1585,10 +1582,6 @@ nsObjectLoadingContent::MaybeRewriteYoutubeEmbed(nsIURI* aURI, nsIURI* aBaseURI,
}
}
- // If we've made it this far, we've got a rewritable embed. Log it in
- // telemetry.
- Telemetry::Accumulate(Telemetry::YOUTUBE_REWRITABLE_EMBED_SEEN, 1);
-
// If we're pref'd off, return after telemetry has been logged.
if (!Preferences::GetBool(kPrefYoutubeRewrite)) {
return;
@@ -3800,8 +3793,6 @@ nsObjectLoadingContent::LegacyCall(JSContext* aCx,
aRv.Throw(NS_ERROR_FAILURE);
return;
}
-
- Telemetry::Accumulate(Telemetry::PLUGIN_CALLED_DIRECTLY, true);
}
void
diff --git a/dom/bindings/BindingUtils.cpp b/dom/bindings/BindingUtils.cpp
index 7056658a78..323feca52c 100644
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -119,7 +119,7 @@ ThrowInvalidThis(JSContext* aCx, const JS::CallArgs& aArgs,
MSG_METHOD_THIS_DOES_NOT_IMPLEMENT_INTERFACE;
MOZ_RELEASE_ASSERT(GetErrorArgCount(errorNumber) <= 2);
JS_ReportErrorNumberUC(aCx, GetErrorMessage, nullptr,
- static_cast<const unsigned>(errorNumber),
+ static_cast<unsigned>(errorNumber),
funcNameStr.get(), ifaceName.get());
return false;
}
@@ -226,7 +226,7 @@ TErrorResult<CleanupPolicy>::SetPendingExceptionWithMessage(JSContext* aCx)
args[argCount] = nullptr;
JS_ReportErrorNumberUCArray(aCx, dom::GetErrorMessage, nullptr,
- static_cast<const unsigned>(message->mErrorNumber),
+ static_cast<unsigned>(message->mErrorNumber),
argCount > 0 ? args : nullptr);
ClearMessage();
diff --git a/dom/bindings/BindingUtils.h b/dom/bindings/BindingUtils.h
index 3e58390c9f..24b47a545d 100644
--- a/dom/bindings/BindingUtils.h
+++ b/dom/bindings/BindingUtils.h
@@ -515,7 +515,7 @@ class ProtoAndIfaceCache
{
public:
PageTableCache() {
- memset(&mPages, 0, sizeof(mPages));
+ memset(mPages.begin(), 0, sizeof(mPages));
}
~PageTableCache() {
diff --git a/dom/bindings/Bindings.conf b/dom/bindings/Bindings.conf
index aa7f26ad61..6f9733c5fb 100644
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -1222,6 +1222,11 @@ DOMInterfaces = {
'headerFile': 'WebGLExtensions.h'
},
+'MOZ_debug_get': {
+ 'nativeType': 'mozilla::WebGLExtensionDebugGet',
+ 'headerFile': 'WebGLExtensions.h'
+},
+
'WebGLFramebuffer': {
'nativeType': 'mozilla::WebGLFramebuffer',
'headerFile': 'WebGLFramebuffer.h'
diff --git a/dom/bindings/ErrorResult.h b/dom/bindings/ErrorResult.h
index 7c3fc9e2f9..da7ec30e71 100644
--- a/dom/bindings/ErrorResult.h
+++ b/dom/bindings/ErrorResult.h
@@ -75,7 +75,7 @@ template<typename... Ts>
inline bool
ThrowErrorMessage(JSContext* aCx, const ErrNum aErrorNumber, Ts&&... aArgs)
{
- binding_detail::ThrowErrorMessage(aCx, static_cast<const unsigned>(aErrorNumber),
+ binding_detail::ThrowErrorMessage(aCx, static_cast<unsigned>(aErrorNumber),
mozilla::Forward<Ts>(aArgs)...);
return false;
}
diff --git a/dom/bindings/test/test_dom_xrays.html b/dom/bindings/test/test_dom_xrays.html
index 0700db2f8b..15d7013ade 100644
--- a/dom/bindings/test/test_dom_xrays.html
+++ b/dom/bindings/test/test_dom_xrays.html
@@ -172,7 +172,7 @@ function test()
// Check that DataTransfer's .types has the hack to alias contains()
// to includes().
- var dataTransfer = new win.DataTransfer("foo", true);
+ var dataTransfer = new win.DataTransfer();
is(dataTransfer.types.contains, dataTransfer.types.includes,
"Should have contains() set up as an alias to includes()");
// Waive Xrays on the dataTransfer itself, since the .types we get is
diff --git a/dom/canvas/CanvasRenderingContextHelper.cpp b/dom/canvas/CanvasRenderingContextHelper.cpp
index 3000e59bdf..61317fb515 100644
--- a/dom/canvas/CanvasRenderingContextHelper.cpp
+++ b/dom/canvas/CanvasRenderingContextHelper.cpp
@@ -7,7 +7,6 @@
#include "ImageBitmapRenderingContext.h"
#include "ImageEncoder.h"
#include "mozilla/dom/CanvasRenderingContext2D.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/UniquePtr.h"
#include "nsContentUtils.h"
#include "nsDOMJSUtils.h"
@@ -138,13 +137,10 @@ CanvasRenderingContextHelper::CreateContextHelper(CanvasContextType aContextType
break;
case CanvasContextType::Canvas2D:
- Telemetry::Accumulate(Telemetry::CANVAS_2D_USED, 1);
ret = new CanvasRenderingContext2D(aCompositorBackend);
break;
case CanvasContextType::WebGL1:
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_USED, 1);
-
ret = WebGL1Context::Create();
if (!ret)
return nullptr;
@@ -152,8 +148,6 @@ CanvasRenderingContextHelper::CreateContextHelper(CanvasContextType aContextType
break;
case CanvasContextType::WebGL2:
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_USED, 1);
-
ret = WebGL2Context::Create();
if (!ret)
return nullptr;
@@ -205,16 +199,8 @@ CanvasRenderingContextHelper::GetContext(JSContext* aCx,
// See bug 645792 and bug 1215072.
// We want to throw only if dictionary initialization fails,
// so only in case aRv has been set to some error value.
- if (contextType == CanvasContextType::WebGL1)
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_SUCCESS, 0);
- else if (contextType == CanvasContextType::WebGL2)
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL2_SUCCESS, 0);
return nullptr;
}
- if (contextType == CanvasContextType::WebGL1)
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_SUCCESS, 1);
- else if (contextType == CanvasContextType::WebGL2)
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL2_SUCCESS, 1);
} else {
// We already have a context of some type.
if (contextType != mCurrentContextType)
diff --git a/dom/canvas/WebGL1Context.cpp b/dom/canvas/WebGL1Context.cpp
index c1818a3f95..e82cafbe5c 100644
--- a/dom/canvas/WebGL1Context.cpp
+++ b/dom/canvas/WebGL1Context.cpp
@@ -6,7 +6,6 @@
#include "WebGL1Context.h"
#include "mozilla/dom/WebGLRenderingContextBinding.h"
-#include "mozilla/Telemetry.h"
#include "WebGLFormats.h"
namespace mozilla {
@@ -43,8 +42,6 @@ WebGL1Context::WrapObject(JSContext* cx, JS::Handle<JSObject*> givenProto)
nsresult
NS_NewCanvasRenderingContextWebGL(nsIDOMWebGLRenderingContext** out_result)
{
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::CANVAS_WEBGL_USED, 1);
-
nsIDOMWebGLRenderingContext* ctx = mozilla::WebGL1Context::Create();
NS_ADDREF(*out_result = ctx);
diff --git a/dom/canvas/WebGLContext.cpp b/dom/canvas/WebGLContext.cpp
index 32eed63541..14bc7e3e3d 100644
--- a/dom/canvas/WebGLContext.cpp
+++ b/dom/canvas/WebGLContext.cpp
@@ -825,10 +825,6 @@ NS_IMETHODIMP
WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
{
if (signedWidth < 0 || signedHeight < 0) {
- if (!gl) {
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_FAILURE_ID,
- NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_SIZE"));
- }
GenerateWarning("Canvas size is too large (seems like a negative value wrapped)");
return NS_ERROR_OUT_OF_MEMORY;
}
@@ -884,12 +880,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
return NS_OK;
}
- nsCString failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_UNKOWN");
- auto autoTelemetry = mozilla::MakeScopeExit([&] {
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_FAILURE_ID,
- failureId);
- });
-
// End of early return cases.
// At this point we know that we're not just resizing an existing context,
// we are initializing a new context.
@@ -911,7 +901,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
// resource handles created from older context generations.
if (!(mGeneration + 1).isValid()) {
// exit without changing the value of mGeneration
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_TOO_MANY");
const nsLiteralCString text("Too many WebGL contexts created this run.");
ThrowEvent_WebGLContextCreationError(text);
return NS_ERROR_FAILURE;
@@ -928,11 +917,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
disabled |= gfxPlatform::InSafeMode();
if (disabled) {
- if (gfxPlatform::InSafeMode()) {
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_SAFEMODE");
- } else {
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_DISABLED");
- }
const nsLiteralCString text("WebGL is currently disabled.");
ThrowEvent_WebGLContextCreationError(text);
return NS_ERROR_FAILURE;
@@ -945,7 +929,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
if (mOptions.failIfMajorPerformanceCaveat) {
nsCOMPtr<nsIGfxInfo> gfxInfo = services::GetGfxInfo();
if (!HasAcceleratedLayers(gfxInfo)) {
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_PERF_CAVEAT");
const nsLiteralCString text("failIfMajorPerformanceCaveat: Compositor is not"
" hardware-accelerated.");
ThrowEvent_WebGLContextCreationError(text);
@@ -961,12 +944,9 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
if (!CreateAndInitGL(forceEnabled, &failReasons)) {
nsCString text("WebGL creation failed: ");
for (const auto& cur : failReasons) {
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_FAILURE_ID, cur.key);
-
text.AppendASCII("\n* ");
text.Append(cur.info);
}
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_REASON");
ThrowEvent_WebGLContextCreationError(text);
return NS_ERROR_FAILURE;
}
@@ -978,7 +958,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
DestroyResourcesAndContext();
MOZ_ASSERT(!gl);
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_PERF_WARP");
const nsLiteralCString text("failIfMajorPerformanceCaveat: Driver is not"
" hardware-accelerated.");
ThrowEvent_WebGLContextCreationError(text);
@@ -992,7 +971,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
DestroyResourcesAndContext();
MOZ_ASSERT(!gl);
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_DXGL_INTEROP2");
const nsLiteralCString text("Caveat: WGL without DXGLInterop2.");
ThrowEvent_WebGLContextCreationError(text);
return NS_ERROR_FAILURE;
@@ -1001,7 +979,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
}
if (!ResizeBackbuffer(width, height)) {
- failureId = NS_LITERAL_CSTRING("FEATURE_FAILURE_WEBGL_BACKBUFFER");
const nsLiteralCString text("Initializing WebGL backbuffer failed.");
ThrowEvent_WebGLContextCreationError(text);
return NS_ERROR_FAILURE;
@@ -1085,7 +1062,6 @@ WebGLContext::SetDimensions(int32_t signedWidth, int32_t signedHeight)
//////
- failureId = NS_LITERAL_CSTRING("SUCCESS");
return NS_OK;
}
diff --git a/dom/canvas/WebGLContextExtensions.cpp b/dom/canvas/WebGLContextExtensions.cpp
index 4a5a232749..7f338b4e97 100644
--- a/dom/canvas/WebGLContextExtensions.cpp
+++ b/dom/canvas/WebGLContextExtensions.cpp
@@ -40,6 +40,7 @@ WebGLContext::GetExtensionString(WebGLExtensionID ext)
WEBGL_EXTENSION_IDENTIFIER(EXT_sRGB)
WEBGL_EXTENSION_IDENTIFIER(EXT_texture_filter_anisotropic)
WEBGL_EXTENSION_IDENTIFIER(EXT_disjoint_timer_query)
+ WEBGL_EXTENSION_IDENTIFIER(MOZ_debug_get)
WEBGL_EXTENSION_IDENTIFIER(OES_element_index_uint)
WEBGL_EXTENSION_IDENTIFIER(OES_standard_derivatives)
WEBGL_EXTENSION_IDENTIFIER(OES_texture_float)
@@ -91,6 +92,8 @@ bool WebGLContext::IsExtensionSupported(dom::CallerType callerType,
switch (ext) {
case WebGLExtensionID::EXT_disjoint_timer_query:
return WebGLExtensionDisjointTimerQuery::IsSupported(this);
+ case WebGLExtensionID::MOZ_debug_get:
+ return true;
case WebGLExtensionID::WEBGL_debug_renderer_info:
return true;
case WebGLExtensionID::WEBGL_debug_shaders:
@@ -372,6 +375,11 @@ WebGLContext::EnableExtension(WebGLExtensionID ext)
obj = new WebGLExtensionTextureFilterAnisotropic(this);
break;
+ // MOZ_
+ case WebGLExtensionID::MOZ_debug_get:
+ obj = new WebGLExtensionDebugGet(this);
+ break;
+
// OES_
case WebGLExtensionID::OES_element_index_uint:
obj = new WebGLExtensionElementIndexUint(this);
diff --git a/dom/canvas/WebGLContextState.cpp b/dom/canvas/WebGLContextState.cpp
index e0234f5c61..c2f4c1a757 100644
--- a/dom/canvas/WebGLContextState.cpp
+++ b/dom/canvas/WebGLContextState.cpp
@@ -61,18 +61,6 @@ WebGLContext::Enable(GLenum cap)
gl->fEnable(cap);
}
-static JS::Value
-StringValue(JSContext* cx, const nsAString& str, ErrorResult& rv)
-{
- JSString* jsStr = JS_NewUCStringCopyN(cx, str.BeginReading(), str.Length());
- if (!jsStr) {
- rv.Throw(NS_ERROR_OUT_OF_MEMORY);
- return JS::NullValue();
- }
-
- return JS::StringValue(jsStr);
-}
-
bool
WebGLContext::GetStencilBits(GLint* const out_stencilBits)
{
diff --git a/dom/canvas/WebGLContextUtils.cpp b/dom/canvas/WebGLContextUtils.cpp
index 9c0d349397..3fd32eb301 100644
--- a/dom/canvas/WebGLContextUtils.cpp
+++ b/dom/canvas/WebGLContextUtils.cpp
@@ -874,4 +874,16 @@ InfoFrom(WebGLTexImageFunc func, WebGLTexDimensions dims)
}
}
+JS::Value
+StringValue(JSContext* cx, const nsAString& str, ErrorResult& er)
+{
+ JSString* jsStr = JS_NewUCStringCopyN(cx, str.BeginReading(), str.Length());
+ if (!jsStr) {
+ er.Throw(NS_ERROR_OUT_OF_MEMORY);
+ return JS::NullValue();
+ }
+
+ return JS::StringValue(jsStr);
+}
+
} // namespace mozilla
diff --git a/dom/canvas/WebGLContextUtils.h b/dom/canvas/WebGLContextUtils.h
index 5401fc878f..1d06659b1e 100644
--- a/dom/canvas/WebGLContextUtils.h
+++ b/dom/canvas/WebGLContextUtils.h
@@ -94,6 +94,8 @@ WebGLContext::WebGLObjectAsJSObject(JSContext* cx,
*/
const char* InfoFrom(WebGLTexImageFunc func, WebGLTexDimensions dims);
+JS::Value StringValue(JSContext* cx, const nsAString& str, ErrorResult& er);
+
} // namespace mozilla
#endif // WEBGL_CONTEXT_UTILS_H_
diff --git a/dom/canvas/WebGLExtensionDebugGet.cpp b/dom/canvas/WebGLExtensionDebugGet.cpp
new file mode 100644
index 0000000000..39bb3c57a2
--- /dev/null
+++ b/dom/canvas/WebGLExtensionDebugGet.cpp
@@ -0,0 +1,79 @@
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* 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 "WebGLExtensions.h"
+
+#include "mozilla/dom/WebGLRenderingContextBinding.h"
+#include "WebGLContext.h"
+#include "WebGLContextUtils.h"
+
+namespace mozilla {
+
+WebGLExtensionDebugGet::WebGLExtensionDebugGet(WebGLContext* webgl)
+ : WebGLExtensionBase(webgl)
+{
+}
+
+WebGLExtensionDebugGet::~WebGLExtensionDebugGet()
+{
+}
+
+void
+WebGLExtensionDebugGet::GetParameter(JSContext* cx, GLenum pname,
+ JS::MutableHandle<JS::Value> retval,
+ ErrorResult& er) const
+{
+ const auto& gl = mContext->gl;
+ gl->MakeCurrent();
+
+ switch (pname) {
+ case LOCAL_GL_EXTENSIONS:
+ {
+ nsString ret;
+ if (!gl->IsCoreProfile()) {
+ const auto rawExts = (const char*)gl->fGetString(LOCAL_GL_EXTENSIONS);
+ ret = NS_ConvertUTF8toUTF16(rawExts);
+ } else {
+ const auto& numExts = gl->GetIntAs<GLuint>(LOCAL_GL_NUM_EXTENSIONS);
+ for (GLuint i = 0; i < numExts; i++) {
+ const auto rawExt = (const char*)gl->fGetStringi(LOCAL_GL_EXTENSIONS,
+ i);
+ if (i > 0) {
+ ret.AppendLiteral(" ");
+ }
+ ret.Append(NS_ConvertUTF8toUTF16(rawExt));
+ }
+ }
+ retval.set(StringValue(cx, ret, er));
+ return;
+ }
+
+ case LOCAL_GL_RENDERER:
+ case LOCAL_GL_VENDOR:
+ case LOCAL_GL_VERSION:
+ {
+ const auto raw = (const char*)gl->fGetString(pname);
+ retval.set(StringValue(cx, NS_ConvertUTF8toUTF16(raw), er));
+ return;
+ }
+
+ case 0x10000: // "WSI_INFO"
+ {
+ nsCString info;
+ gl->GetWSIInfo(&info);
+ retval.set(StringValue(cx, NS_ConvertUTF8toUTF16(info), er));
+ return;
+ }
+
+ default:
+ mContext->ErrorInvalidEnumArg("MOZ_debug_get.getParameter", "pname", pname);
+ retval.set(JS::NullValue());
+ return;
+ }
+}
+
+IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionDebugGet, MOZ_debug_get)
+
+} // namespace mozilla
diff --git a/dom/canvas/WebGLExtensions.h b/dom/canvas/WebGLExtensions.h
index 741f6997f8..7b6b6b54b6 100644
--- a/dom/canvas/WebGLExtensions.h
+++ b/dom/canvas/WebGLExtensions.h
@@ -12,6 +12,7 @@
#include "WebGLTypes.h"
namespace mozilla {
+class ErrorResult;
namespace dom {
template<typename T>
@@ -385,6 +386,19 @@ public:
DECL_WEBGL_EXTENSION_GOOP
};
+class WebGLExtensionDebugGet final
+ : public WebGLExtensionBase
+{
+public:
+ explicit WebGLExtensionDebugGet(WebGLContext* webgl);
+ virtual ~WebGLExtensionDebugGet();
+
+ void GetParameter(JSContext* cx, GLenum pname,
+ JS::MutableHandle<JS::Value> retval, ErrorResult& er) const;
+
+ DECL_WEBGL_EXTENSION_GOOP
+};
+
} // namespace mozilla
#endif // WEBGL_EXTENSIONS_H_
diff --git a/dom/canvas/WebGLTypes.h b/dom/canvas/WebGLTypes.h
index 42b8701f36..2f4a4368ac 100644
--- a/dom/canvas/WebGLTypes.h
+++ b/dom/canvas/WebGLTypes.h
@@ -149,6 +149,7 @@ enum class WebGLExtensionID : uint8_t {
EXT_shader_texture_lod,
EXT_texture_filter_anisotropic,
EXT_disjoint_timer_query,
+ MOZ_debug_get,
OES_element_index_uint,
OES_standard_derivatives,
OES_texture_float,
diff --git a/dom/canvas/moz.build b/dom/canvas/moz.build
index f7555b33db..6d5e2756ff 100644
--- a/dom/canvas/moz.build
+++ b/dom/canvas/moz.build
@@ -105,6 +105,7 @@ UNIFIED_SOURCES += [
'WebGLExtensionCompressedTextureETC1.cpp',
'WebGLExtensionCompressedTexturePVRTC.cpp',
'WebGLExtensionCompressedTextureS3TC.cpp',
+ 'WebGLExtensionDebugGet.cpp',
'WebGLExtensionDebugRendererInfo.cpp',
'WebGLExtensionDebugShaders.cpp',
'WebGLExtensionDepthTexture.cpp',
diff --git a/dom/crypto/WebCryptoTask.cpp b/dom/crypto/WebCryptoTask.cpp
index f5fc7b5bc9..c4cc7080da 100644
--- a/dom/crypto/WebCryptoTask.cpp
+++ b/dom/crypto/WebCryptoTask.cpp
@@ -452,7 +452,6 @@ void
WebCryptoTask::FailWithError(nsresult aRv)
{
MOZ_ASSERT(IsOnOriginalThread());
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_RESOLVED, false);
// Blindly convert nsresult to DOMException
// Individual tasks must ensure they pass the right values
@@ -491,7 +490,6 @@ WebCryptoTask::CallCallback(nsresult rv)
}
Resolve();
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_RESOLVED, true);
// Manually release mResultPromise while we're on the main thread
mResultPromise = nullptr;
@@ -650,7 +648,6 @@ public:
mEarlyRv = NS_ERROR_DOM_NOT_SUPPORTED_ERR;
return;
}
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, telemetryAlg);
}
private:
@@ -794,7 +791,6 @@ public:
return;
}
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_AES_KW);
}
private:
@@ -908,8 +904,6 @@ public:
void Init(JSContext* aCx, const ObjectOrString& aAlgorithm,
CryptoKey& aKey, bool aEncrypt)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_RSA_OAEP);
-
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_RSA_OAEP);
if (mEncrypt) {
@@ -1049,7 +1043,6 @@ public:
case CKM_SHA512_HMAC: telemetryAlg = TA_HMAC_SHA_512; break;
default: telemetryAlg = TA_UNKNOWN;
}
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, telemetryAlg);
}
private:
@@ -1158,12 +1151,10 @@ public:
if (algName.EqualsLiteral(WEBCRYPTO_ALG_RSASSA_PKCS1)) {
mAlgorithm = Algorithm::RSA_PKCS1;
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_RSASSA_PKCS1);
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_RSASSA_PKCS1);
hashAlgName = aKey.Algorithm().mRsa.mHash.mName;
} else if (algName.EqualsLiteral(WEBCRYPTO_ALG_RSA_PSS)) {
mAlgorithm = Algorithm::RSA_PSS;
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_RSA_PSS);
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_RSA_PSS);
KeyAlgorithm& hashAlg = aKey.Algorithm().mRsa.mHash;
@@ -1188,7 +1179,6 @@ public:
mSaltLength = params.mSaltLength;
} else if (algName.EqualsLiteral(WEBCRYPTO_ALG_ECDSA)) {
mAlgorithm = Algorithm::ECDSA;
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_ECDSA);
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_ECDSA);
// For ECDSA, the hash name comes from the algorithm parameter
@@ -1356,7 +1346,6 @@ public:
mEarlyRv = NS_ERROR_DOM_SYNTAX_ERR;
return;
}
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, telemetryAlg);
mOidTag = MapHashAlgorithmNameToOID(algName);
}
@@ -2656,7 +2645,6 @@ public:
void Init(JSContext* aCx, const ObjectOrString& aAlgorithm, CryptoKey& aKey,
uint32_t aLength)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_HKDF);
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_HKDF);
// Check that we have a key.
@@ -2806,7 +2794,6 @@ public:
void Init(JSContext* aCx, const ObjectOrString& aAlgorithm, CryptoKey& aKey,
uint32_t aLength)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_PBKDF2);
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_PBKDF2);
// Check that we got a symmetric key
@@ -2981,7 +2968,6 @@ public:
void Init(JSContext* aCx, const ObjectOrString& aAlgorithm, CryptoKey& aKey)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_ALG, TA_ECDH);
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_ECDH);
// Check that we have a private key.
@@ -3277,10 +3263,6 @@ WebCryptoTask::CreateEncryptDecryptTask(JSContext* aCx,
const CryptoOperationData& aData,
bool aEncrypt)
{
- TelemetryMethod method = (aEncrypt)? TM_ENCRYPT : TM_DECRYPT;
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, method);
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_ENC, aKey.Extractable());
-
// Ensure key is usable for this operation
if ((aEncrypt && !aKey.HasUsage(CryptoKey::ENCRYPT)) ||
(!aEncrypt && !aKey.HasUsage(CryptoKey::DECRYPT))) {
@@ -3312,10 +3294,6 @@ WebCryptoTask::CreateSignVerifyTask(JSContext* aCx,
const CryptoOperationData& aData,
bool aSign)
{
- TelemetryMethod method = (aSign)? TM_SIGN : TM_VERIFY;
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, method);
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_SIG, aKey.Extractable());
-
// Ensure key is usable for this operation
if ((aSign && !aKey.HasUsage(CryptoKey::SIGN)) ||
(!aSign && !aKey.HasUsage(CryptoKey::VERIFY))) {
@@ -3345,8 +3323,6 @@ WebCryptoTask::CreateDigestTask(JSContext* aCx,
const ObjectOrString& aAlgorithm,
const CryptoOperationData& aData)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_DIGEST);
-
nsString algName;
nsresult rv = GetAlgorithmName(aCx, aAlgorithm, algName);
if (NS_FAILED(rv)) {
@@ -3372,9 +3348,6 @@ WebCryptoTask::CreateImportKeyTask(nsIGlobalObject* aGlobal,
bool aExtractable,
const Sequence<nsString>& aKeyUsages)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_IMPORTKEY);
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_IMPORT, aExtractable);
-
// Verify that the format is recognized
if (!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_RAW) &&
!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_SPKI) &&
@@ -3426,8 +3399,6 @@ WebCryptoTask*
WebCryptoTask::CreateExportKeyTask(const nsAString& aFormat,
CryptoKey& aKey)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_EXPORTKEY);
-
// Verify that the format is recognized
if (!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_RAW) &&
!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_SPKI) &&
@@ -3470,9 +3441,6 @@ WebCryptoTask::CreateGenerateKeyTask(nsIGlobalObject* aGlobal,
bool aExtractable,
const Sequence<nsString>& aKeyUsages)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_GENERATEKEY);
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_EXTRACTABLE_GENERATE, aExtractable);
-
// Verify that aKeyUsages does not contain an unrecognized value
// SPEC-BUG: Spec says that this should be InvalidAccessError, but that
// is inconsistent with other analogous points in the spec
@@ -3515,8 +3483,6 @@ WebCryptoTask::CreateDeriveKeyTask(nsIGlobalObject* aGlobal,
bool aExtractable,
const Sequence<nsString>& aKeyUsages)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_DERIVEKEY);
-
// Ensure baseKey is usable for this operation
if (!aBaseKey.HasUsage(CryptoKey::DERIVEKEY)) {
return new FailureTask(NS_ERROR_DOM_INVALID_ACCESS_ERR);
@@ -3560,8 +3526,6 @@ WebCryptoTask::CreateDeriveBitsTask(JSContext* aCx,
CryptoKey& aKey,
uint32_t aLength)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_DERIVEBITS);
-
// Ensure baseKey is usable for this operation
if (!aKey.HasUsage(CryptoKey::DERIVEBITS)) {
return new FailureTask(NS_ERROR_DOM_INVALID_ACCESS_ERR);
@@ -3599,8 +3563,6 @@ WebCryptoTask::CreateWrapKeyTask(JSContext* aCx,
CryptoKey& aWrappingKey,
const ObjectOrString& aWrapAlgorithm)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_WRAPKEY);
-
// Verify that the format is recognized
if (!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_RAW) &&
!aFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_SPKI) &&
@@ -3652,8 +3614,6 @@ WebCryptoTask::CreateUnwrapKeyTask(nsIGlobalObject* aGlobal,
bool aExtractable,
const Sequence<nsString>& aKeyUsages)
{
- Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD, TM_UNWRAPKEY);
-
// Ensure key is usable for this operation
if (!aUnwrappingKey.HasUsage(CryptoKey::UNWRAPKEY)) {
return new FailureTask(NS_ERROR_DOM_INVALID_ACCESS_ERR);
diff --git a/dom/events/DataTransfer.cpp b/dom/events/DataTransfer.cpp
index 2c6ecdd56a..45c72e6629 100644
--- a/dom/events/DataTransfer.cpp
+++ b/dom/events/DataTransfer.cpp
@@ -161,22 +161,11 @@ DataTransfer::~DataTransfer()
// static
already_AddRefed<DataTransfer>
-DataTransfer::Constructor(const GlobalObject& aGlobal,
- const nsAString& aEventType, bool aIsExternal,
- ErrorResult& aRv)
+DataTransfer::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
{
- nsAutoCString onEventType("on");
- AppendUTF16toUTF8(aEventType, onEventType);
- nsCOMPtr<nsIAtom> eventTypeAtom = NS_Atomize(onEventType);
- if (!eventTypeAtom) {
- aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
- return nullptr;
- }
-
- EventMessage eventMessage = nsContentUtils::GetEventMessage(eventTypeAtom);
RefPtr<DataTransfer> transfer = new DataTransfer(aGlobal.GetAsSupports(),
- eventMessage, aIsExternal,
- -1);
+ eCopy, /* is external */ false, /* clipboard type */ -1);
+ transfer->mEffectAllowed = nsIDragService::DRAGDROP_ACTION_NONE;
return transfer.forget();
}
diff --git a/dom/events/DataTransfer.h b/dom/events/DataTransfer.h
index 7c6b0b8c1e..344593ed0a 100644
--- a/dom/events/DataTransfer.h
+++ b/dom/events/DataTransfer.h
@@ -115,8 +115,7 @@ public:
}
static already_AddRefed<DataTransfer>
- Constructor(const GlobalObject& aGlobal, const nsAString& aEventType,
- bool aIsExternal, ErrorResult& aRv);
+ Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
void GetDropEffect(nsString& aDropEffect)
{
diff --git a/dom/events/EventDispatcher.cpp b/dom/events/EventDispatcher.cpp
index 65f01844b9..1d4dfd7d9f 100644
--- a/dom/events/EventDispatcher.cpp
+++ b/dom/events/EventDispatcher.cpp
@@ -858,63 +858,46 @@ EventDispatcher::CreateEvent(EventTarget* aOwner,
// And if we didn't get an event, check the type argument.
-#define LOG_EVENT_CREATION(name) mozilla::Telemetry::Accumulate( \
- mozilla::Telemetry::CREATE_EVENT_##name, true);
-
if (aEventType.LowerCaseEqualsLiteral("mouseevent")) {
- LOG_EVENT_CREATION(MOUSEEVENT);
return NS_NewDOMMouseEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("mouseevents")) {
- LOG_EVENT_CREATION(MOUSEEVENTS);
return NS_NewDOMMouseEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("popupevents")) {
- LOG_EVENT_CREATION(POPUPEVENTS);
return NS_NewDOMMouseEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("mousescrollevents")) {
- LOG_EVENT_CREATION(MOUSESCROLLEVENTS);
return NS_NewDOMMouseScrollEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("dragevent")) {
- LOG_EVENT_CREATION(DRAGEVENT);
return NS_NewDOMDragEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("dragevents")) {
- LOG_EVENT_CREATION(DRAGEVENTS);
return NS_NewDOMDragEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("keyboardevent")) {
- LOG_EVENT_CREATION(KEYBOARDEVENT);
return NS_NewDOMKeyboardEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("keyevents")) {
- LOG_EVENT_CREATION(KEYEVENTS);
return NS_NewDOMKeyboardEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("compositionevent")) {
- LOG_EVENT_CREATION(COMPOSITIONEVENT);
return NS_NewDOMCompositionEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("textevent")) {
- LOG_EVENT_CREATION(TEXTEVENT);
return NS_NewDOMCompositionEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("textevents")) {
- LOG_EVENT_CREATION(TEXTEVENTS);
return NS_NewDOMCompositionEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("mutationevent")) {
- LOG_EVENT_CREATION(MUTATIONEVENT);
return NS_NewDOMMutationEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("mutationevents")) {
- LOG_EVENT_CREATION(MUTATIONEVENTS);
return NS_NewDOMMutationEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("deviceorientationevent")) {
- LOG_EVENT_CREATION(DEVICEORIENTATIONEVENT);
DeviceOrientationEventInit init;
RefPtr<Event> event =
DeviceOrientationEvent::Constructor(aOwner, EmptyString(), init);
@@ -922,97 +905,74 @@ EventDispatcher::CreateEvent(EventTarget* aOwner,
return event.forget();
}
if (aEventType.LowerCaseEqualsLiteral("devicemotionevent")) {
- LOG_EVENT_CREATION(DEVICEMOTIONEVENT);
return NS_NewDOMDeviceMotionEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("uievent")) {
- LOG_EVENT_CREATION(UIEVENT);
return NS_NewDOMUIEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("uievents")) {
- LOG_EVENT_CREATION(UIEVENTS);
return NS_NewDOMUIEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("event")) {
- LOG_EVENT_CREATION(EVENT);
return NS_NewDOMEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("events")) {
- LOG_EVENT_CREATION(EVENTS);
return NS_NewDOMEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("htmlevents")) {
- LOG_EVENT_CREATION(HTMLEVENTS);
return NS_NewDOMEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("svgevent")) {
- LOG_EVENT_CREATION(SVGEVENT);
return NS_NewDOMEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("svgevents")) {
- LOG_EVENT_CREATION(SVGEVENTS);
return NS_NewDOMEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("svgzoomevent")) {
- LOG_EVENT_CREATION(SVGZOOMEVENT);
return NS_NewDOMSVGZoomEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("svgzoomevents")) {
- LOG_EVENT_CREATION(SVGZOOMEVENTS);
return NS_NewDOMSVGZoomEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("timeevent")) {
- LOG_EVENT_CREATION(TIMEEVENT);
return NS_NewDOMTimeEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("timeevents")) {
- LOG_EVENT_CREATION(TIMEEVENTS);
return NS_NewDOMTimeEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("xulcommandevent")) {
- LOG_EVENT_CREATION(XULCOMMANDEVENT);
return NS_NewDOMXULCommandEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("xulcommandevents")) {
- LOG_EVENT_CREATION(XULCOMMANDEVENTS);
return NS_NewDOMXULCommandEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("commandevent")) {
- LOG_EVENT_CREATION(COMMANDEVENT);
return NS_NewDOMCommandEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("commandevents")) {
- LOG_EVENT_CREATION(COMMANDEVENTS);
return NS_NewDOMCommandEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("datacontainerevent")) {
- LOG_EVENT_CREATION(DATACONTAINEREVENT);
return NS_NewDOMDataContainerEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("datacontainerevents")) {
- LOG_EVENT_CREATION(DATACONTAINEREVENTS);
return NS_NewDOMDataContainerEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("messageevent")) {
- LOG_EVENT_CREATION(MESSAGEEVENT);
RefPtr<Event> event = new MessageEvent(aOwner, aPresContext, nullptr);
return event.forget();
}
if (aEventType.LowerCaseEqualsLiteral("notifypaintevent")) {
- LOG_EVENT_CREATION(NOTIFYPAINTEVENT);
return NS_NewDOMNotifyPaintEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("simplegestureevent")) {
- LOG_EVENT_CREATION(SIMPLEGESTUREEVENT);
return NS_NewDOMSimpleGestureEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("beforeunloadevent")) {
- LOG_EVENT_CREATION(BEFOREUNLOADEVENT);
return NS_NewDOMBeforeUnloadEvent(aOwner, aPresContext, nullptr);
}
// XXXkhuey this is broken
if (aEventType.LowerCaseEqualsLiteral("pagetransition")) {
- LOG_EVENT_CREATION(PAGETRANSITION);
PageTransitionEventInit init;
RefPtr<Event> event =
PageTransitionEvent::Constructor(aOwner, EmptyString(), init);
@@ -1020,14 +980,12 @@ EventDispatcher::CreateEvent(EventTarget* aOwner,
return event.forget();
}
if (aEventType.LowerCaseEqualsLiteral("scrollareaevent")) {
- LOG_EVENT_CREATION(SCROLLAREAEVENT);
return NS_NewDOMScrollAreaEvent(aOwner, aPresContext, nullptr);
}
// XXXkhuey Chrome supports popstateevent here, even though it provides no
// initPopStateEvent method. This is nuts ... but copying it is unlikely to
// break the web.
if (aEventType.LowerCaseEqualsLiteral("popstateevent")) {
- LOG_EVENT_CREATION(POPSTATEEVENT);
AutoJSContext cx;
RootedDictionary<PopStateEventInit> init(cx);
RefPtr<Event> event =
@@ -1037,11 +995,9 @@ EventDispatcher::CreateEvent(EventTarget* aOwner,
}
if (aEventType.LowerCaseEqualsLiteral("touchevent") &&
TouchEvent::PrefEnabled(nsContentUtils::GetDocShellForEventTarget(aOwner))) {
- LOG_EVENT_CREATION(TOUCHEVENT);
return NS_NewDOMTouchEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("hashchangeevent")) {
- LOG_EVENT_CREATION(HASHCHANGEEVENT);
HashChangeEventInit init;
RefPtr<Event> event =
HashChangeEvent::Constructor(aOwner, EmptyString(), init);
@@ -1049,11 +1005,9 @@ EventDispatcher::CreateEvent(EventTarget* aOwner,
return event.forget();
}
if (aEventType.LowerCaseEqualsLiteral("customevent")) {
- LOG_EVENT_CREATION(CUSTOMEVENT);
return NS_NewDOMCustomEvent(aOwner, aPresContext, nullptr);
}
if (aEventType.LowerCaseEqualsLiteral("storageevent")) {
- LOG_EVENT_CREATION(STORAGEEVENT);
return NS_NewDOMStorageEvent(aOwner);
}
if (aEventType.LowerCaseEqualsLiteral("focusevent")) {
@@ -1062,8 +1016,6 @@ EventDispatcher::CreateEvent(EventTarget* aOwner,
return event.forget();
}
-#undef LOG_EVENT_CREATION
-
// NEW EVENT TYPES SHOULD NOT BE ADDED HERE; THEY SHOULD USE ONLY EVENT
// CONSTRUCTORS
diff --git a/dom/events/EventStateManager.cpp b/dom/events/EventStateManager.cpp
index 7bbfe21b79..e16d68c81a 100644
--- a/dom/events/EventStateManager.cpp
+++ b/dom/events/EventStateManager.cpp
@@ -3240,6 +3240,12 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
action = WheelPrefs::GetInstance()->ComputeActionFor(wheelEvent);
}
switch (action) {
+ case WheelPrefs::ACTION_HSCROLL: {
+ // Swap axes and fall through
+ double deltaX = wheelEvent->mDeltaX;
+ wheelEvent->mDeltaX = wheelEvent->mDeltaY;
+ wheelEvent->mDeltaY = deltaX;
+ }
case WheelPrefs::ACTION_SCROLL: {
// For scrolling of default action, we should honor the mouse wheel
// transaction.
diff --git a/dom/events/EventStateManager.h b/dom/events/EventStateManager.h
index d0461e7fae..95ce9a907f 100644
--- a/dom/events/EventStateManager.h
+++ b/dom/events/EventStateManager.h
@@ -513,7 +513,8 @@ protected:
ACTION_SCROLL,
ACTION_HISTORY,
ACTION_ZOOM,
- ACTION_LAST = ACTION_ZOOM,
+ ACTION_HSCROLL,
+ ACTION_LAST = ACTION_HSCROLL,
// Following actions are used only by internal processing. So, cannot
// specified by prefs.
ACTION_SEND_TO_PLUGIN
diff --git a/dom/fetch/Fetch.cpp b/dom/fetch/Fetch.cpp
index 5c05f36024..e2c1394263 100644
--- a/dom/fetch/Fetch.cpp
+++ b/dom/fetch/Fetch.cpp
@@ -38,7 +38,6 @@
#include "mozilla/dom/ScriptSettings.h"
#include "mozilla/dom/URLSearchParams.h"
#include "mozilla/dom/workers/ServiceWorkerManager.h"
-#include "mozilla/Telemetry.h"
#include "InternalRequest.h"
#include "InternalResponse.h"
@@ -237,8 +236,6 @@ FetchRequest(nsIGlobalObject* aGlobal, const RequestOrUSVString& aInput,
}
}
- Telemetry::Accumulate(Telemetry::FETCH_IS_MAINTHREAD, 1);
-
RefPtr<MainThreadFetchResolver> resolver = new MainThreadFetchResolver(p);
RefPtr<FetchDriver> fetch = new FetchDriver(r, principal, loadGroup);
fetch->SetDocument(doc);
@@ -251,8 +248,6 @@ FetchRequest(nsIGlobalObject* aGlobal, const RequestOrUSVString& aInput,
WorkerPrivate* worker = GetCurrentThreadWorkerPrivate();
MOZ_ASSERT(worker);
- Telemetry::Accumulate(Telemetry::FETCH_IS_MAINTHREAD, 0);
-
if (worker->IsServiceWorker()) {
r->SetSkipServiceWorker();
}
diff --git a/dom/fetch/FetchDriver.cpp b/dom/fetch/FetchDriver.cpp
index aac79b8290..1791399b7f 100644
--- a/dom/fetch/FetchDriver.cpp
+++ b/dom/fetch/FetchDriver.cpp
@@ -77,9 +77,6 @@ FetchDriver::Fetch(FetchDriverObserver* aObserver)
mObserver = aObserver;
- Telemetry::Accumulate(Telemetry::SERVICE_WORKER_REQUEST_PASSTHROUGH,
- mRequest->WasCreatedByFetchEvent());
-
// FIXME(nsm): Deal with HSTS.
MOZ_RELEASE_ASSERT(!mRequest->IsSynchronous(),
diff --git a/dom/geolocation/nsGeolocation.cpp b/dom/geolocation/nsGeolocation.cpp
index 2d84a3e11e..201d4d89a0 100644
--- a/dom/geolocation/nsGeolocation.cpp
+++ b/dom/geolocation/nsGeolocation.cpp
@@ -382,13 +382,6 @@ nsGeolocationRequest::GetElement(nsIDOMElement * *aRequestingElement)
NS_IMETHODIMP
nsGeolocationRequest::Cancel()
{
- if (mRequester) {
- // Record the number of denied requests for regular web content.
- // This method is only called when the user explicitly denies the request,
- // and is not called when the page is simply unloaded, or similar.
- Telemetry::Accumulate(Telemetry::GEOLOCATION_REQUEST_GRANTED, mProtocolType);
- }
-
if (mLocator->ClearPendingRequest(this)) {
return NS_OK;
}
@@ -403,9 +396,6 @@ nsGeolocationRequest::Allow(JS::HandleValue aChoices)
MOZ_ASSERT(aChoices.isUndefined());
if (mRequester) {
- // Record the number of granted requests for regular web content.
- Telemetry::Accumulate(Telemetry::GEOLOCATION_REQUEST_GRANTED, mProtocolType + 10);
-
// Record whether a location callback is fulfilled while the owner window
// is not visible.
bool isVisible = false;
@@ -415,12 +405,6 @@ nsGeolocationRequest::Allow(JS::HandleValue aChoices)
nsCOMPtr<nsIDocument> doc = window->GetDoc();
isVisible = doc && !doc->Hidden();
}
-
- if (IsWatch()) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_WATCHPOSITION_VISIBLE, isVisible);
- } else {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_GETCURRENTPOSITION_VISIBLE, isVisible);
- }
}
if (mLocator->ClearPendingRequest(this)) {
@@ -1110,7 +1094,6 @@ Geolocation::Update(nsIDOMGeoPosition *aSomewhere)
if (coords) {
double accuracy = -1;
coords->GetAccuracy(&accuracy);
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_ACCURACY_EXPONENTIAL, accuracy);
}
}
@@ -1135,8 +1118,6 @@ Geolocation::NotifyError(uint16_t aErrorCode)
return NS_OK;
}
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::GEOLOCATION_ERROR, true);
-
for (uint32_t i = mPendingCallbacks.Length(); i > 0; i--) {
mPendingCallbacks[i-1]->NotifyErrorAndShutdown(aErrorCode);
//NotifyErrorAndShutdown() removes the request from the array
@@ -1214,10 +1195,6 @@ Geolocation::GetCurrentPosition(GeoPositionCallback callback,
// After this we hand over ownership of options to our nsGeolocationRequest.
- // Count the number of requests per protocol/scheme.
- Telemetry::Accumulate(Telemetry::GEOLOCATION_GETCURRENTPOSITION_SECURE_ORIGIN,
- static_cast<uint8_t>(mProtocolType));
-
RefPtr<nsGeolocationRequest> request =
new nsGeolocationRequest(this, Move(callback), Move(errorCallback),
Move(options), static_cast<uint8_t>(mProtocolType),
@@ -1292,10 +1269,6 @@ Geolocation::WatchPosition(GeoPositionCallback aCallback,
return NS_ERROR_NOT_AVAILABLE;
}
- // Count the number of requests per protocol/scheme.
- Telemetry::Accumulate(Telemetry::GEOLOCATION_WATCHPOSITION_SECURE_ORIGIN,
- static_cast<uint8_t>(mProtocolType));
-
// The watch ID:
*aRv = mLastWatchId++;
diff --git a/dom/html/HTMLFormElement.cpp b/dom/html/HTMLFormElement.cpp
index 5164391f8d..0393ed3e00 100644
--- a/dom/html/HTMLFormElement.cpp
+++ b/dom/html/HTMLFormElement.cpp
@@ -38,7 +38,6 @@
// form submission
#include "HTMLFormSubmissionConstants.h"
#include "mozilla/dom/FormData.h"
-#include "mozilla/Telemetry.h"
#include "nsIFormSubmitObserver.h"
#include "nsIObserverService.h"
#include "nsICategoryManager.h"
@@ -957,13 +956,6 @@ HTMLFormElement::DoSecureToInsecureSubmitCheck(nsIURI* aActionURL,
*aCancelSubmit = (buttonPressed == 1);
uint32_t telemetryBucket =
nsISecurityUITelemetry::WARNING_CONFIRM_POST_TO_INSECURE_FROM_SECURE;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SECURITY_UI,
- telemetryBucket);
- if (!*aCancelSubmit) {
- // The user opted to continue, so note that in the next telemetry bucket.
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SECURITY_UI,
- telemetryBucket + 1);
- }
return NS_OK;
}
diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp
index e9086933b7..0b879bb9b4 100644
--- a/dom/html/HTMLInputElement.cpp
+++ b/dom/html/HTMLInputElement.cpp
@@ -24,7 +24,6 @@
#include "nsIPhonetic.h"
#include "HTMLFormSubmissionConstants.h"
-#include "mozilla/Telemetry.h"
#include "nsIControllers.h"
#include "nsIStringBundle.h"
#include "nsFocusManager.h"
@@ -1275,10 +1274,6 @@ HTMLInputElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
container->RadioRequiredWillChange(name, !!aValue);
}
}
-
- if (aName == nsGkAtoms::webkitdirectory) {
- Telemetry::Accumulate(Telemetry::WEBKIT_DIRECTORY_USED, true);
- }
}
return nsGenericHTMLFormElementWithState::BeforeSetAttr(aNameSpaceID, aName,
@@ -4989,10 +4984,6 @@ HTMLInputElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
true);
dispatcher->PostDOMEvent();
}
-
-#ifdef EARLY_BETA_OR_EARLIER
- Telemetry::Accumulate(Telemetry::PWMGR_PASSWORD_INPUT_IN_FORM, !!mForm);
-#endif
}
return rv;
@@ -8863,7 +8854,6 @@ HTMLInputElement::UpdateEntries(const nsTArray<OwningFileOrDirectory>& aFilesOrD
void
HTMLInputElement::GetWebkitEntries(nsTArray<RefPtr<FileSystemEntry>>& aSequence)
{
- Telemetry::Accumulate(Telemetry::BLINK_FILESYSTEM_USED, true);
aSequence.AppendElements(mEntries);
}
diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp
index 3954e62088..6171e17663 100644
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -92,7 +92,6 @@
#include "mozilla/dom/VideoTrackList.h"
#include "mozilla/dom/TextTrack.h"
#include "nsIContentPolicy.h"
-#include "mozilla/Telemetry.h"
#include "DecoderDoctorDiagnostics.h"
#include "DecoderTraits.h"
#include "MediaContentType.h"
@@ -1902,7 +1901,6 @@ void
HTMLMediaElement::FastSeek(double aTime, ErrorResult& aRv)
{
LOG(LogLevel::Debug, ("Reporting telemetry VIDEO_FASTSEEK_USED"));
- Telemetry::Accumulate(Telemetry::VIDEO_FASTSEEK_USED, 1);
RefPtr<Promise> tobeDropped = Seek(aTime, SeekTarget::PrevSyncPoint, aRv);
}
@@ -3693,7 +3691,6 @@ HTMLMediaElement::ReportEMETelemetry()
// Report telemetry for EME videos when a page is unloaded.
NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
if (mIsEncrypted && Preferences::GetBool("media.eme.enabled")) {
- Telemetry::Accumulate(Telemetry::VIDEO_EME_PLAY_SUCCESS, mLoadedDataFired);
LOG(LogLevel::Debug, ("%p VIDEO_EME_PLAY_SUCCESS = %s",
this, mLoadedDataFired ? "true" : "false"));
}
@@ -3745,7 +3742,6 @@ HTMLMediaElement::ReportTelemetry()
}
}
- Telemetry::Accumulate(Telemetry::VIDEO_UNLOAD_STATE, state);
LOG(LogLevel::Debug, ("%p VIDEO_UNLOAD_STATE = %d", this, state));
FrameStatisticsData data;
@@ -3761,8 +3757,6 @@ HTMLMediaElement::ReportTelemetry()
uint32_t percentage = 100 * data.mDroppedFrames / data.mParsedFrames;
LOG(LogLevel::Debug,
("Reporting telemetry DROPPED_FRAMES_IN_VIDEO_PLAYBACK"));
- Telemetry::Accumulate(Telemetry::VIDEO_DROPPED_FRAMES_PROPORTION,
- percentage);
}
}
}
@@ -3774,10 +3768,8 @@ HTMLMediaElement::ReportTelemetry()
double hiddenPlayTime = mHiddenPlayTime.Total();
double videoDecodeSuspendTime = mVideoDecodeSuspendTime.Total();
- Telemetry::Accumulate(Telemetry::VIDEO_PLAY_TIME_MS, SECONDS_TO_MS(playTime));
LOG(LogLevel::Debug, ("%p VIDEO_PLAY_TIME_MS = %f", this, playTime));
- Telemetry::Accumulate(Telemetry::VIDEO_HIDDEN_PLAY_TIME_MS, SECONDS_TO_MS(hiddenPlayTime));
LOG(LogLevel::Debug, ("%p VIDEO_HIDDEN_PLAY_TIME_MS = %f", this, hiddenPlayTime));
if (playTime > 0.0) {
@@ -3804,24 +3796,11 @@ HTMLMediaElement::ReportTelemetry()
key.AppendASCII(resolution);
uint32_t hiddenPercentage = uint32_t(hiddenPlayTime / playTime * 100.0 + 0.5);
- Telemetry::Accumulate(Telemetry::VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE,
- key,
- hiddenPercentage);
- // Also accumulate all percentages in an "All" key.
- Telemetry::Accumulate(Telemetry::VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE,
- NS_LITERAL_CSTRING("All"),
- hiddenPercentage);
LOG(LogLevel::Debug, ("%p VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE = %u, keys: '%s' and 'All'",
this, hiddenPercentage, key.get()));
uint32_t videoDecodeSuspendPercentage =
uint32_t(videoDecodeSuspendTime / playTime * 100.0 + 0.5);
- Telemetry::Accumulate(Telemetry::VIDEO_INFERRED_DECODE_SUSPEND_PERCENTAGE,
- key,
- videoDecodeSuspendPercentage);
- Telemetry::Accumulate(Telemetry::VIDEO_INFERRED_DECODE_SUSPEND_PERCENTAGE,
- NS_LITERAL_CSTRING("All"),
- videoDecodeSuspendPercentage);
LOG(LogLevel::Debug, ("%p VIDEO_INFERRED_DECODE_SUSPEND_PERCENTAGE = %u, keys: '%s' and 'All'",
this, videoDecodeSuspendPercentage, key.get()));
@@ -3832,24 +3811,12 @@ HTMLMediaElement::ReportTelemetry()
/ 1000.0
+ 0.5,
UINT32_MAX));
- Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_AVERAGE_MS,
- key,
- average_ms);
- Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_AVERAGE_MS,
- NS_LITERAL_CSTRING("All"),
- average_ms);
LOG(LogLevel::Debug, ("%p VIDEO_INTER_KEYFRAME_AVERAGE_MS = %u, keys: '%s' and 'All'",
this, average_ms, key.get()));
uint32_t max_ms =
uint32_t(std::min<uint64_t>((data.mInterKeyFrameMax_us + 500) / 1000,
UINT32_MAX));
- Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS,
- key,
- max_ms);
- Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS,
- NS_LITERAL_CSTRING("All"),
- max_ms);
LOG(LogLevel::Debug, ("%p VIDEO_INTER_KEYFRAME_MAX_MS = %u, keys: '%s' and 'All'",
this, max_ms, key.get()));
} else {
@@ -3858,12 +3825,6 @@ HTMLMediaElement::ReportTelemetry()
// decode-suspend delay (showing recovery would be difficult).
uint32_t suspendDelay_ms = MediaPrefs::MDSMSuspendBackgroundVideoDelay();
if (uint32_t(playTime * 1000.0) > suspendDelay_ms) {
- Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS,
- key,
- 0);
- Telemetry::Accumulate(Telemetry::VIDEO_INTER_KEYFRAME_MAX_MS,
- NS_LITERAL_CSTRING("All"),
- 0);
LOG(LogLevel::Debug, ("%p VIDEO_INTER_KEYFRAME_MAX_MS = 0 (only 1 keyframe), keys: '%s' and 'All'",
this, key.get()));
}
@@ -6860,97 +6821,6 @@ HTMLMediaElement::MarkAsContentSource(CallerAPI aAPI)
{
const bool isVisible = mVisibilityState != Visibility::APPROXIMATELY_NONVISIBLE;
- if (isVisible) {
- // 0 = ALL_VISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 0);
- } else {
- // 1 = ALL_INVISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 1);
-
- if (IsInUncomposedDoc()) {
- // 0 = ALL_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 0);
- } else {
- // 1 = ALL_NOT_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 1);
- }
- }
-
- switch (aAPI) {
- case CallerAPI::DRAW_IMAGE: {
- if (isVisible) {
- // 2 = drawImage_VISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 2);
- } else {
- // 3 = drawImage_INVISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 3);
-
- if (IsInUncomposedDoc()) {
- // 2 = drawImage_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 2);
- } else {
- // 3 = drawImage_NOT_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 3);
- }
- }
- break;
- }
- case CallerAPI::CREATE_PATTERN: {
- if (isVisible) {
- // 4 = createPattern_VISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 4);
- } else {
- // 5 = createPattern_INVISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 5);
-
- if (IsInUncomposedDoc()) {
- // 4 = createPattern_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 4);
- } else {
- // 5 = createPattern_NOT_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 5);
- }
- }
- break;
- }
- case CallerAPI::CREATE_IMAGEBITMAP: {
- if (isVisible) {
- // 6 = createImageBitmap_VISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 6);
- } else {
- // 7 = createImageBitmap_INVISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 7);
-
- if (IsInUncomposedDoc()) {
- // 6 = createImageBitmap_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 6);
- } else {
- // 7 = createImageBitmap_NOT_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 7);
- }
- }
- break;
- }
- case CallerAPI::CAPTURE_STREAM: {
- if (isVisible) {
- // 8 = captureStream_VISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 8);
- } else {
- // 9 = captureStream_INVISIBLE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE, 9);
-
- if (IsInUncomposedDoc()) {
- // 8 = captureStream_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 8);
- } else {
- // 9 = captureStream_NOT_IN_TREE
- Telemetry::Accumulate(Telemetry::VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT, 9);
- }
- }
- break;
- }
- }
-
LOG(LogLevel::Debug,
("%p Log VIDEO_AS_CONTENT_SOURCE: visibility = %u, API: '%d' and 'All'",
this, isVisible, aAPI));
diff --git a/dom/html/ImageDocument.cpp b/dom/html/ImageDocument.cpp
index 200bb5d46d..f83a804bef 100644
--- a/dom/html/ImageDocument.cpp
+++ b/dom/html/ImageDocument.cpp
@@ -40,12 +40,14 @@
#include "nsThreadUtils.h"
#include "nsIScrollableFrame.h"
#include "nsContentUtils.h"
+#include "nsCSSParser.h" // for CSS colors on the background
#include "mozilla/dom/Element.h"
#include "mozilla/Preferences.h"
#include <algorithm>
#define AUTOMATIC_IMAGE_RESIZING_PREF "browser.enable_automatic_image_resizing"
#define CLICK_IMAGE_RESIZING_PREF "browser.enable_click_image_resizing"
+#define STANDALONE_IMAGE_BACKGROUND_COLOR_PREF "browser.display.standalone_images.background_color"
//XXX A hack needed for Firefox's site specific zoom.
#define SITE_SPECIFIC_ZOOM "browser.zoom.siteSpecific"
@@ -170,6 +172,8 @@ ImageDocument::Init()
mClickResizingEnabled = Preferences::GetBool(CLICK_IMAGE_RESIZING_PREF);
mShouldResize = mResizeImageByDefault;
mFirstResize = true;
+
+ mBackgroundColor = Preferences::GetString(STANDALONE_IMAGE_BACKGROUND_COLOR_PREF);
return NS_OK;
}
@@ -682,9 +686,22 @@ ImageDocument::CreateSyntheticDocument()
mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::src, srcString, false);
mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::alt, srcString, false);
+ // Implement mechanism for custom background color from pref.
+ if (!mBackgroundColor.IsEmpty()) {
+ nsCSSValue color;
+ nsCSSParser parser;
+ if (parser.ParseColorString(mBackgroundColor, nullptr, 0, color)) {
+ nsAutoString styleAttr(NS_LITERAL_STRING("background-color: "));
+ styleAttr.Append(mBackgroundColor);
+ body->SetAttr(kNameSpaceID_None, nsGkAtoms::style, styleAttr, false);
+ }
+ }
+
body->AppendChildTo(mImageContent, false);
imageLoader->SetLoadingEnabled(true);
+ UpdateTitleAndCharset();
+
return NS_OK;
}
diff --git a/dom/html/ImageDocument.h b/dom/html/ImageDocument.h
index fdf2a00a85..9453173140 100644
--- a/dom/html/ImageDocument.h
+++ b/dom/html/ImageDocument.h
@@ -112,6 +112,9 @@ protected:
float mVisibleHeight;
int32_t mImageWidth;
int32_t mImageHeight;
+
+ // Holds the custom background color for stand-alone images
+ nsAutoString mBackgroundColor;
bool mResizeImageByDefault;
bool mClickResizingEnabled;
diff --git a/dom/html/TextTrackManager.cpp b/dom/html/TextTrackManager.cpp
index 8110dab293..4266575f70 100644
--- a/dom/html/TextTrackManager.cpp
+++ b/dom/html/TextTrackManager.cpp
@@ -12,7 +12,6 @@
#include "mozilla/dom/TextTrackCue.h"
#include "mozilla/dom/Event.h"
#include "mozilla/ClearOnShutdown.h"
-#include "mozilla/Telemetry.h"
#include "nsComponentManagerUtils.h"
#include "nsVariant.h"
#include "nsVideoFrame.h"
@@ -824,24 +823,13 @@ TextTrackManager::NotifyReset()
void
TextTrackManager::ReportTelemetryForTrack(TextTrack* aTextTrack) const
{
- MOZ_ASSERT(NS_IsMainThread());
- MOZ_ASSERT(aTextTrack);
- MOZ_ASSERT(mTextTracks->Length() > 0);
-
- TextTrackKind kind = aTextTrack->Kind();
- Telemetry::Accumulate(Telemetry::WEBVTT_TRACK_KINDS, uint32_t(kind));
+/* STUB */
}
void
TextTrackManager::ReportTelemetryForCue()
{
- MOZ_ASSERT(NS_IsMainThread());
- MOZ_ASSERT(!mNewCues->IsEmpty() || !mLastActiveCues->IsEmpty());
-
- if (!mCueTelemetryReported) {
- Telemetry::Accumulate(Telemetry::WEBVTT_USED_VTT_CUES, 1);
- mCueTelemetryReported = true;
- }
+/* STUB */
}
} // namespace dom
diff --git a/dom/html/nsHTMLDocument.cpp b/dom/html/nsHTMLDocument.cpp
index 69e7102423..d64c277271 100644
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -886,7 +886,7 @@ nsHTMLDocument::GetDomain(nsAString& aDomain)
nsCOMPtr<nsIURI> uri = GetDomainURI();
if (!uri) {
- SetDOMStringToNull(aDomain);
+ aDomain.Truncate();
return NS_OK;
}
@@ -896,8 +896,8 @@ nsHTMLDocument::GetDomain(nsAString& aDomain)
CopyUTF8toUTF16(hostName, aDomain);
} else {
// If we can't get the host from the URI (e.g. about:, javascript:,
- // etc), just return an null string.
- SetDOMStringToNull(aDomain);
+ // etc), just return an empty string.
+ aDomain.Truncate();
}
return NS_OK;
}
diff --git a/dom/html/nsTextEditorState.cpp b/dom/html/nsTextEditorState.cpp
index 187afb66df..0b4cb19206 100644
--- a/dom/html/nsTextEditorState.cpp
+++ b/dom/html/nsTextEditorState.cpp
@@ -47,7 +47,6 @@
#include "mozilla/dom/HTMLInputElement.h"
#include "nsNumberControlFrame.h"
#include "nsFrameSelection.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/layers/ScrollInputMethods.h"
using namespace mozilla;
@@ -585,9 +584,6 @@ nsTextInputSelectionImpl::CompleteScroll(bool aForward)
if (!mScrollFrame)
return NS_ERROR_NOT_INITIALIZED;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadCompleteScroll);
-
mScrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1),
nsIScrollableFrame::WHOLE,
nsIScrollableFrame::INSTANT);
@@ -640,9 +636,6 @@ nsTextInputSelectionImpl::ScrollPage(bool aForward)
if (!mScrollFrame)
return NS_ERROR_NOT_INITIALIZED;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollPage);
-
mScrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1),
nsIScrollableFrame::PAGES,
nsIScrollableFrame::SMOOTH);
@@ -655,9 +648,6 @@ nsTextInputSelectionImpl::ScrollLine(bool aForward)
if (!mScrollFrame)
return NS_ERROR_NOT_INITIALIZED;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollLine);
-
mScrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1),
nsIScrollableFrame::LINES,
nsIScrollableFrame::SMOOTH);
@@ -670,9 +660,6 @@ nsTextInputSelectionImpl::ScrollCharacter(bool aRight)
if (!mScrollFrame)
return NS_ERROR_NOT_INITIALIZED;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollCharacter);
-
mScrollFrame->ScrollBy(nsIntPoint(aRight ? 1 : -1, 0),
nsIScrollableFrame::LINES,
nsIScrollableFrame::SMOOTH);
diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp
index 0a07147bf0..5c6aadb77e 100644
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -1718,9 +1718,6 @@ ContentParent::ActorDestroy(ActorDestroyReason why)
props->SetPropertyAsUint64(NS_LITERAL_STRING("childID"), mChildID);
if (AbnormalShutdown == why) {
- Telemetry::Accumulate(Telemetry::SUBPROCESS_ABNORMAL_ABORT,
- NS_LITERAL_CSTRING("content"), 1);
-
props->SetPropertyAsBool(NS_LITERAL_STRING("abnormal"), true);
}
nsAutoString cpId;
@@ -4778,7 +4775,7 @@ bool
ContentParent::RecvAccumulateChildHistogram(
InfallibleTArray<Accumulation>&& aAccumulations)
{
- Telemetry::AccumulateChild(GeckoProcessType_Content, aAccumulations);
+ /* STUB */
return true;
}
@@ -4786,6 +4783,6 @@ bool
ContentParent::RecvAccumulateChildKeyedHistogram(
InfallibleTArray<KeyedAccumulation>&& aAccumulations)
{
- Telemetry::AccumulateChildKeyed(GeckoProcessType_Content, aAccumulations);
+ /* STUB */
return true;
}
diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp
index 705799c549..244fa99699 100644
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -2395,7 +2395,6 @@ TabChild::RecvSetDocShellIsActive(const bool& aIsActive,
root->SchedulePaint();
}
- Telemetry::AutoTimer<Telemetry::TABCHILD_PAINT_TIME> timer;
// If we need to repaint, let's do that right away. No sense waiting until
// we get back to the event loop again. We suppress the display port so that
// we only paint what's visible. This ensures that the tab we're switching
diff --git a/dom/locales/en-US/chrome/dom/dom.properties b/dom/locales/en-US/chrome/dom/dom.properties
index ec0356c046..0472979d7b 100644
--- a/dom/locales/en-US/chrome/dom/dom.properties
+++ b/dom/locales/en-US/chrome/dom/dom.properties
@@ -195,8 +195,6 @@ IgnoringWillChangeOverBudgetWarning=Will-change memory consumption is too high.
HittingMaxWorkersPerDomain2=A Worker could not be started immediately because other documents in the same origin are already using the maximum number of workers. The Worker is now queued and will be started after some of the other workers have completed.
# LOCALIZATION NOTE: Do not translate "setVelocity", "PannerNode", "AudioListener", "speedOfSound" and "dopplerFactor"
PannerNodeDopplerWarning=Use of setVelocity on the PannerNode and AudioListener, and speedOfSound and dopplerFactor on the AudioListener are deprecated and those members will be removed. For more help https://developer.mozilla.org/en-US/docs/Web/API/AudioListener#Deprecated_features
-# LOCALIZATION NOTE: Do not translate "Application Cache API", "AppCache" and "ServiceWorker".
-AppCacheWarning=The Application Cache API (AppCache) is deprecated and will be removed at a future date. Please consider using ServiceWorker for offline support.
# LOCALIZATION NOTE: Do not translate "Worker".
EmptyWorkerSourceWarning=Attempting to create a Worker from an empty source. This is probably unintentional.
WebrtcDeprecatedPrefixWarning=WebRTC interfaces with the “moz†prefix (mozRTCPeerConnection, mozRTCSessionDescription, mozRTCIceCandidate) have been deprecated.
diff --git a/dom/locales/en-US/chrome/security/security.properties b/dom/locales/en-US/chrome/security/security.properties
index c0b80996cc..8efdb0a6d2 100644
--- a/dom/locales/en-US/chrome/security/security.properties
+++ b/dom/locales/en-US/chrome/security/security.properties
@@ -8,6 +8,7 @@ BlockMixedActiveContent = Blocked loading mixed active content “%1$Sâ€
CORSDisabled=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS disabled).
CORSRequestNotHttp=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS request not http).
CORSMissingAllowOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
+CORSMultipleAllowOriginNotAllowed=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: Multiple CORS headers ‘Access-Control-Allow-Origin’ not allowed).
CORSAllowOriginNotMatchingOrigin=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘%2$S’).
CORSNotSupportingCredentials=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at ‘%1$S’. (Reason: Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’).
CORSMethodNotFound=Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at %1$S. (Reason: Did not find method in CORS header ‘Access-Control-Allow-Methods’).
diff --git a/dom/media/AudioStream.cpp b/dom/media/AudioStream.cpp
index 54cf7b9653..896dee4073 100644
--- a/dom/media/AudioStream.cpp
+++ b/dom/media/AudioStream.cpp
@@ -14,7 +14,6 @@
#include "mozilla/Mutex.h"
#include "mozilla/Sprintf.h"
#include <algorithm>
-#include "mozilla/Telemetry.h"
#include "CubebUtils.h"
#include "nsPrintfCString.h"
#include "gfxPrefs.h"
@@ -378,8 +377,6 @@ AudioStream::OpenCubeb(cubeb* aContext, cubeb_stream_params& aParams,
TimeDuration timeDelta = TimeStamp::Now() - aStartTime;
LOG("creation time %sfirst: %u ms", aIsFirst ? "" : "not ",
(uint32_t) timeDelta.ToMilliseconds());
- Telemetry::Accumulate(aIsFirst ? Telemetry::AUDIOSTREAM_FIRST_OPEN_MS :
- Telemetry::AUDIOSTREAM_LATER_OPEN_MS, timeDelta.ToMilliseconds());
return NS_OK;
}
diff --git a/dom/media/Benchmark.cpp b/dom/media/Benchmark.cpp
index fdbedeca5e..7394f8036b 100644
--- a/dom/media/Benchmark.cpp
+++ b/dom/media/Benchmark.cpp
@@ -11,7 +11,6 @@
#include "PDMFactory.h"
#include "WebMDemuxer.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/dom/ContentChild.h"
#ifndef MOZ_WIDGET_ANDROID
@@ -68,7 +67,6 @@ VP9Benchmark::IsVP9DecodeFast()
Preferences::SetUint(sBenchmarkFpsPref, aDecodeFps);
Preferences::SetUint(sBenchmarkFpsVersionCheck, sBenchmarkVersionID);
}
- Telemetry::Accumulate(Telemetry::ID::VIDEO_VP9_BENCHMARK_FPS, aDecodeFps);
},
[]() { });
}
diff --git a/dom/media/CubebUtils.cpp b/dom/media/CubebUtils.cpp
index fe94264eed..93792e63bb 100644
--- a/dom/media/CubebUtils.cpp
+++ b/dom/media/CubebUtils.cpp
@@ -248,14 +248,9 @@ void ReportCubebBackendUsed()
bool foundBackend = false;
for (uint32_t i = 0; i < ArrayLength(AUDIOSTREAM_BACKEND_ID_STR); i++) {
if (!strcmp(cubeb_get_backend_id(sCubebContext), AUDIOSTREAM_BACKEND_ID_STR[i])) {
- Telemetry::Accumulate(Telemetry::AUDIOSTREAM_BACKEND_USED, i);
foundBackend = true;
}
}
- if (!foundBackend) {
- Telemetry::Accumulate(Telemetry::AUDIOSTREAM_BACKEND_USED,
- CUBEB_BACKEND_UNKNOWN);
- }
}
void ReportCubebStreamInitFailure(bool aIsFirst)
@@ -267,9 +262,6 @@ void ReportCubebStreamInitFailure(bool aIsFirst)
// failures to open multiple streams in a process over time.
return;
}
- Telemetry::Accumulate(Telemetry::AUDIOSTREAM_BACKEND_USED,
- aIsFirst ? CUBEB_BACKEND_INIT_FAILURE_FIRST
- : CUBEB_BACKEND_INIT_FAILURE_OTHER);
}
uint32_t GetCubebPlaybackLatencyInMilliseconds()
diff --git a/dom/media/DecoderTraits.cpp b/dom/media/DecoderTraits.cpp
index ddd35fe0dd..56ebd9ce9d 100644
--- a/dom/media/DecoderTraits.cpp
+++ b/dom/media/DecoderTraits.cpp
@@ -288,7 +288,7 @@ CanHandleMediaType(const MediaContentType& aType,
MOZ_ASSERT(NS_IsMainThread());
if (IsHttpLiveStreamingType(aType.GetMIMEType())) {
- Telemetry::Accumulate(Telemetry::MEDIA_HLS_CANPLAY_REQUESTED, true);
+ /* Telemetry STUB */
}
if (aType.HaveCodecs()) {
@@ -433,11 +433,6 @@ InstantiateDecoder(const nsACString& aType,
}
#endif
- if (IsHttpLiveStreamingType(aType)) {
- // We don't have an HLS decoder.
- Telemetry::Accumulate(Telemetry::MEDIA_HLS_DECODER_SUCCESS, false);
- }
-
return nullptr;
}
diff --git a/dom/media/MediaDecoder.cpp b/dom/media/MediaDecoder.cpp
index 9334d1bcb9..d027818dea 100644
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -877,7 +877,6 @@ MediaDecoder::EnsureTelemetryReported()
}
for (const nsCString& codec : codecs) {
DECODER_LOG("Telemetry MEDIA_CODEC_USED= '%s'", codec.get());
- Telemetry::Accumulate(Telemetry::ID::MEDIA_CODEC_USED, codec);
}
mTelemetryReported = true;
diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp
index c586139ad9..5bc1d95ef4 100644
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1178,40 +1178,7 @@ ReportRecoveryTelemetry(const TimeStamp& aRecoveryStart,
const MediaInfo& aMediaInfo,
bool aIsHardwareAccelerated)
{
- MOZ_ASSERT(NS_IsMainThread());
- if (!aMediaInfo.HasVideo()) {
- return;
- }
-
- // Keyed by audio+video or video alone, hardware acceleration,
- // and by a resolution range.
- nsCString key(aMediaInfo.HasAudio() ? "AV" : "V");
- key.AppendASCII(aIsHardwareAccelerated ? "(hw)," : ",");
- static const struct { int32_t mH; const char* mRes; } sResolutions[] = {
- { 240, "0-240" },
- { 480, "241-480" },
- { 720, "481-720" },
- { 1080, "721-1080" },
- { 2160, "1081-2160" }
- };
- const char* resolution = "2161+";
- int32_t height = aMediaInfo.mVideo.mImage.height;
- for (const auto& res : sResolutions) {
- if (height <= res.mH) {
- resolution = res.mRes;
- break;
- }
- }
- key.AppendASCII(resolution);
-
- TimeDuration duration = TimeStamp::Now() - aRecoveryStart;
- double duration_ms = duration.ToMilliseconds();
- Telemetry::Accumulate(Telemetry::VIDEO_SUSPEND_RECOVERY_TIME_MS,
- key,
- uint32_t(duration_ms + 0.5));
- Telemetry::Accumulate(Telemetry::VIDEO_SUSPEND_RECOVERY_TIME_MS,
- NS_LITERAL_CSTRING("All"),
- uint32_t(duration_ms + 0.5));
+/* STUB */
}
void
diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp
index ba6b4cd475..baaf454162 100644
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -32,7 +32,6 @@
#include "nsAppDirectoryServiceDefs.h"
#include "nsIInputStream.h"
#include "nsILineInputStream.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Types.h"
#include "mozilla/PeerIdentity.h"
#include "mozilla/dom/ContentChild.h"
@@ -2058,28 +2057,6 @@ MediaManager::GetUserMedia(nsPIDOMWindowInner* aWindow,
host.LowerCaseEqualsLiteral("127.0.0.1") ||
host.LowerCaseEqualsLiteral("::1"));
- // Record telemetry about whether the source of the call was secure, i.e.,
- // privileged or HTTPS. We may handle other cases
-if (privileged) {
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
- (uint32_t) GetUserMediaSecurityState::Privileged);
- } else if (isHTTPS) {
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
- (uint32_t) GetUserMediaSecurityState::HTTPS);
- } else if (isFile) {
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
- (uint32_t) GetUserMediaSecurityState::File);
- } else if (isApp) {
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
- (uint32_t) GetUserMediaSecurityState::App);
- } else if (isLocalhost) {
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
- (uint32_t) GetUserMediaSecurityState::Localhost);
- } else {
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
- (uint32_t) GetUserMediaSecurityState::Other);
- }
-
nsCString origin;
rv = nsPrincipal::GetOriginForURI(docURI, origin);
if (NS_WARN_IF(NS_FAILED(rv))) {
@@ -2098,8 +2075,6 @@ if (privileged) {
videoType = StringToEnum(dom::MediaSourceEnumValues::strings,
vc.mMediaSource,
MediaSourceEnum::Other);
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_TYPE,
- (uint32_t) videoType);
switch (videoType) {
case MediaSourceEnum::Camera:
break;
@@ -2182,8 +2157,6 @@ if (privileged) {
ac.mMediaSource.AssignASCII(EnumToASCII(dom::MediaSourceEnumValues::strings,
audioType));
}
- Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_TYPE,
- (uint32_t) audioType);
switch (audioType) {
case MediaSourceEnum::Microphone:
diff --git a/dom/media/VideoUtils.cpp b/dom/media/VideoUtils.cpp
index 5c00e54bcc..b1a202c030 100644
--- a/dom/media/VideoUtils.cpp
+++ b/dom/media/VideoUtils.cpp
@@ -6,7 +6,6 @@
#include "mozilla/Base64.h"
#include "mozilla/TaskQueue.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Function.h"
#include "MediaContentType.h"
@@ -248,24 +247,6 @@ ExtractH264CodecDetails(const nsAString& aCodec,
aLevel *= 10;
}
- // Capture the constraint_set flag value for the purpose of Telemetry.
- // We don't NS_ENSURE_SUCCESS here because ExtractH264CodecDetails doesn't
- // care about this, but we make sure constraints is above 4 (constraint_set5_flag)
- // otherwise collect 0 for unknown.
- uint8_t constraints = PromiseFlatString(Substring(aCodec, 7, 2)).ToInteger(&rv, 16);
- Telemetry::Accumulate(Telemetry::VIDEO_CANPLAYTYPE_H264_CONSTRAINT_SET_FLAG,
- constraints >= 4 ? constraints : 0);
-
- // 244 is the highest meaningful profile value (High 4:4:4 Intra Profile)
- // that can be represented as single hex byte, otherwise collect 0 for unknown.
- Telemetry::Accumulate(Telemetry::VIDEO_CANPLAYTYPE_H264_PROFILE,
- aProfile <= 244 ? aProfile : 0);
-
- // Make sure aLevel represents a value between levels 1 and 5.2,
- // otherwise collect 0 for unknown.
- Telemetry::Accumulate(Telemetry::VIDEO_CANPLAYTYPE_H264_LEVEL,
- (aLevel >= 10 && aLevel <= 52) ? aLevel : 0);
-
return true;
}
diff --git a/dom/media/eme/DetailedPromise.cpp b/dom/media/eme/DetailedPromise.cpp
index 5893bea2ee..d443e33369 100644
--- a/dom/media/eme/DetailedPromise.cpp
+++ b/dom/media/eme/DetailedPromise.cpp
@@ -96,9 +96,6 @@ DetailedPromise::MaybeReportTelemetry(Status aStatus)
uint32_t latency = (TimeStamp::Now() - mStartTime).ToMilliseconds();
EME_LOG("%s %s latency %ums reported via telemetry", mName.get(),
((aStatus == Succeeded) ? "succcess" : "failure"), latency);
- Telemetry::ID tid = (aStatus == Succeeded) ? mSuccessLatencyProbe.Value()
- : mFailureLatencyProbe.Value();
- Telemetry::Accumulate(tid, latency);
}
} // namespace dom
diff --git a/dom/media/eme/MediaKeySession.cpp b/dom/media/eme/MediaKeySession.cpp
index d5eff3f773..9c002b5baa 100644
--- a/dom/media/eme/MediaKeySession.cpp
+++ b/dom/media/eme/MediaKeySession.cpp
@@ -315,9 +315,6 @@ MediaKeySession::GenerateRequest(const nsAString& aInitDataType,
// Note: Remaining steps of generateRequest method continue in CDM.
- Telemetry::Accumulate(Telemetry::VIDEO_CDM_GENERATE_REQUEST_CALLED,
- ToCDMTypeTelemetryEnum(mKeySystem));
-
// Convert initData to base64 for easier logging.
// Note: CreateSession() Move()s the data out of the array, so we have
// to copy it here.
diff --git a/dom/media/eme/MediaKeys.cpp b/dom/media/eme/MediaKeys.cpp
index eedd675e4f..fea548698b 100644
--- a/dom/media/eme/MediaKeys.cpp
+++ b/dom/media/eme/MediaKeys.cpp
@@ -13,7 +13,6 @@
#include "mozilla/dom/MediaKeySession.h"
#include "mozilla/dom/DOMException.h"
#include "mozilla/dom/UnionTypes.h"
-#include "mozilla/Telemetry.h"
#include "GMPCDMProxy.h"
#ifdef MOZ_WIDGET_ANDROID
#include "mozilla/MediaDrmCDMProxy.h"
@@ -457,7 +456,6 @@ MediaKeys::OnCDMCreated(PromiseId aId, const nsACString& aNodeId, const uint32_t
mKeySystem,
MediaKeySystemStatus::Cdm_created);
- Telemetry::Accumulate(Telemetry::VIDEO_CDM_CREATED, ToCDMTypeTelemetryEnum(mKeySystem));
}
static bool
diff --git a/dom/media/fmp4/MP4Demuxer.cpp b/dom/media/fmp4/MP4Demuxer.cpp
index 70b1766990..5a637b0035 100644
--- a/dom/media/fmp4/MP4Demuxer.cpp
+++ b/dom/media/fmp4/MP4Demuxer.cpp
@@ -81,35 +81,11 @@ private:
bool
AccumulateSPSTelemetry(const MediaByteBuffer* aExtradata)
{
+ // XXX: Do we still need this without telemetry?
mp4_demuxer::SPSData spsdata;
if (mp4_demuxer::H264::DecodeSPSFromExtraData(aExtradata, spsdata)) {
- uint8_t constraints = (spsdata.constraint_set0_flag ? (1 << 0) : 0) |
- (spsdata.constraint_set1_flag ? (1 << 1) : 0) |
- (spsdata.constraint_set2_flag ? (1 << 2) : 0) |
- (spsdata.constraint_set3_flag ? (1 << 3) : 0) |
- (spsdata.constraint_set4_flag ? (1 << 4) : 0) |
- (spsdata.constraint_set5_flag ? (1 << 5) : 0);
- Telemetry::Accumulate(Telemetry::VIDEO_DECODED_H264_SPS_CONSTRAINT_SET_FLAG,
- constraints);
-
- // Collect profile_idc values up to 244, otherwise 0 for unknown.
- Telemetry::Accumulate(Telemetry::VIDEO_DECODED_H264_SPS_PROFILE,
- spsdata.profile_idc <= 244 ? spsdata.profile_idc : 0);
-
- // Make sure level_idc represents a value between levels 1 and 5.2,
- // otherwise collect 0 for unknown level.
- Telemetry::Accumulate(Telemetry::VIDEO_DECODED_H264_SPS_LEVEL,
- (spsdata.level_idc >= 10 && spsdata.level_idc <= 52) ?
- spsdata.level_idc : 0);
-
- // max_num_ref_frames should be between 0 and 16, anything larger will
- // be treated as invalid.
- Telemetry::Accumulate(Telemetry::VIDEO_H264_SPS_MAX_NUM_REF_FRAMES,
- std::min(spsdata.max_num_ref_frames, 17u));
-
return false;
}
-
return true;
}
@@ -349,8 +325,13 @@ MP4TrackDemuxer::GetNextSample()
if (sample->mCrypto.mValid) {
nsAutoPtr<MediaRawDataWriter> writer(sample->CreateWriter());
writer->mCrypto.mMode = mInfo->mCrypto.mMode;
- writer->mCrypto.mIVSize = mInfo->mCrypto.mIVSize;
- writer->mCrypto.mKeyId.AppendElements(mInfo->mCrypto.mKeyId);
+
+ // Only use the default key parsed from the moov if we haven't already got
+ // one from the sample group description.
+ if (writer->mCrypto.mKeyId.Length() == 0) {
+ writer->mCrypto.mIVSize = mInfo->mCrypto.mIVSize;
+ writer->mCrypto.mKeyId.AppendElements(mInfo->mCrypto.mKeyId);
+ }
}
return sample.forget();
}
diff --git a/dom/media/ogg/OggDemuxer.cpp b/dom/media/ogg/OggDemuxer.cpp
index 591a5248fc..0cc4846878 100644
--- a/dom/media/ogg/OggDemuxer.cpp
+++ b/dom/media/ogg/OggDemuxer.cpp
@@ -12,7 +12,6 @@
#include "mozilla/Atomics.h"
#include "mozilla/PodOperations.h"
#include "mozilla/SharedThreadPool.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/TimeStamp.h"
#include "MediaDataDemuxer.h"
#include "nsAutoRef.h"
@@ -164,7 +163,6 @@ OggDemuxer::~OggDemuxer()
MOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug,
("OggDemuxer(%p)::%s: Reporting telemetry MEDIA_OGG_LOADED_IS_CHAINED=%d",
ptr, __func__, isChained));
- Telemetry::Accumulate(Telemetry::ID::MEDIA_OGG_LOADED_IS_CHAINED, isChained);
});
AbstractThread::MainThread()->Dispatch(task.forget());
}
diff --git a/dom/media/platforms/wmf/DXVA2Manager.cpp b/dom/media/platforms/wmf/DXVA2Manager.cpp
index 0c1734c54d..1226ea6216 100644
--- a/dom/media/platforms/wmf/DXVA2Manager.cpp
+++ b/dom/media/platforms/wmf/DXVA2Manager.cpp
@@ -14,7 +14,6 @@
#include "mozilla/layers/D3D11ShareHandleImage.h"
#include "mozilla/layers/ImageBridgeChild.h"
#include "mozilla/layers/TextureForwarder.h"
-#include "mozilla/Telemetry.h"
#include "MediaTelemetryConstants.h"
#include "mfapi.h"
#include "gfxPrefs.h"
@@ -442,9 +441,6 @@ D3D9DXVA2Manager::Init(layers::KnowsCompositor* aKnowsCompositor,
}
mTextureClientAllocator->SetMaxPoolSize(5);
- Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED,
- uint32_t(media::MediaDecoderBackend::WMFDXVA2D3D9));
-
return S_OK;
}
@@ -775,9 +771,6 @@ D3D11DXVA2Manager::Init(layers::KnowsCompositor* aKnowsCompositor,
}
mTextureClientAllocator->SetMaxPoolSize(5);
- Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED,
- uint32_t(media::MediaDecoderBackend::WMFDXVA2D3D11));
-
return S_OK;
}
diff --git a/dom/media/platforms/wmf/WMFAudioMFTManager.cpp b/dom/media/platforms/wmf/WMFAudioMFTManager.cpp
index 69b62da517..3dacdf0aad 100644
--- a/dom/media/platforms/wmf/WMFAudioMFTManager.cpp
+++ b/dom/media/platforms/wmf/WMFAudioMFTManager.cpp
@@ -252,7 +252,6 @@ WMFAudioMFTManager::Output(int64_t aStreamOffset,
LOG("Audio MFTDecoder returned success but null output.");
nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([]() -> void {
LOG("Reporting telemetry AUDIO_MFT_OUTPUT_NULL_SAMPLES");
- Telemetry::Accumulate(Telemetry::ID::AUDIO_MFT_OUTPUT_NULL_SAMPLES, 1);
});
AbstractThread::MainThread()->Dispatch(task.forget());
return E_FAIL;
diff --git a/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp b/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp
index d2c13eac75..15e2e10978 100644
--- a/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp
+++ b/dom/media/platforms/wmf/WMFMediaDataDecoder.cpp
@@ -8,7 +8,6 @@
#include "VideoUtils.h"
#include "WMFUtils.h"
#include "nsTArray.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Logging.h"
#include "mozilla/SyncRunnable.h"
@@ -67,7 +66,7 @@ SendTelemetry(unsigned long hr)
nsCOMPtr<nsIRunnable> runnable = NS_NewRunnableFunction(
[sample] {
- Telemetry::Accumulate(Telemetry::MEDIA_WMF_DECODE_ERROR, sample);
+ /* Telemetry STUB */
});
NS_DispatchToMainThread(runnable);
}
diff --git a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
index 291bc5b74f..8a51f817ab 100644
--- a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
+++ b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
@@ -128,7 +128,6 @@ WMFVideoMFTManager::~WMFVideoMFTManager()
nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([=]() -> void {
LOG(nsPrintfCString("Reporting telemetry VIDEO_MFT_OUTPUT_NULL_SAMPLES=%d", telemetry).get());
- Telemetry::Accumulate(Telemetry::ID::VIDEO_MFT_OUTPUT_NULL_SAMPLES, telemetry);
});
AbstractThread::MainThread()->Dispatch(task.forget());
}
@@ -511,8 +510,6 @@ WMFVideoMFTManager::InitInternal(bool aForceD3D9)
if (mStreamType == VP9 || mStreamType == VP8) {
return false;
}
- Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED,
- uint32_t(media::MediaDecoderBackend::WMFSoftware));
}
mDecoder = decoder;
diff --git a/dom/media/systemservices/LoadManager.cpp b/dom/media/systemservices/LoadManager.cpp
index f0f4f83a7a..34b8fc7e01 100644
--- a/dom/media/systemservices/LoadManager.cpp
+++ b/dom/media/systemservices/LoadManager.cpp
@@ -15,7 +15,6 @@
#include "nsThreadUtils.h"
#include "nsReadableUtils.h"
#include "nsIObserverService.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/ArrayUtils.h"
// MOZ_LOG=LoadManager:5
@@ -192,23 +191,6 @@ LoadManagerSingleton::RemoveObserver(webrtc::CPULoadStateObserver * aObserver)
for (size_t i = 0; i < MOZ_ARRAY_LENGTH(mTimeInState); i++) {
total += mTimeInState[i];
}
- // Don't include short calls; we don't have reasonable load data, and
- // such short calls rarely reach a stable state. Keep relatively
- // short calls separate from longer ones
- bool log = total > 5*PR_MSEC_PER_SEC;
- bool small = log && total < 30*PR_MSEC_PER_SEC;
- if (log) {
- // Note: We don't care about rounding here; thus total may be < 100
- Telemetry::Accumulate(small ? Telemetry::WEBRTC_LOAD_STATE_RELAXED_SHORT :
- Telemetry::WEBRTC_LOAD_STATE_RELAXED,
- (uint32_t) (mTimeInState[webrtc::CPULoadState::kLoadRelaxed]/total * 100));
- Telemetry::Accumulate(small ? Telemetry::WEBRTC_LOAD_STATE_NORMAL_SHORT :
- Telemetry::WEBRTC_LOAD_STATE_NORMAL,
- (uint32_t) (mTimeInState[webrtc::CPULoadState::kLoadNormal]/total * 100));
- Telemetry::Accumulate(small ? Telemetry::WEBRTC_LOAD_STATE_STRESSED_SHORT :
- Telemetry::WEBRTC_LOAD_STATE_STRESSED,
- (uint32_t) (mTimeInState[webrtc::CPULoadState::kLoadStressed]/total * 100));
- }
for (auto &in_state : mTimeInState) {
in_state = 0;
}
diff --git a/dom/media/webaudio/MediaBufferDecoder.cpp b/dom/media/webaudio/MediaBufferDecoder.cpp
index e9f1d5a47c..2ee11eacd4 100644
--- a/dom/media/webaudio/MediaBufferDecoder.cpp
+++ b/dom/media/webaudio/MediaBufferDecoder.cpp
@@ -23,7 +23,6 @@
#include "VideoUtils.h"
#include "WebAudioUtils.h"
#include "mozilla/dom/Promise.h"
-#include "mozilla/Telemetry.h"
#include "nsPrintfCString.h"
#include "GMPService.h"
@@ -302,7 +301,6 @@ MediaDecodeTask::OnMetadataRead(MetadataHolder* aMetadata)
MOZ_LOG(gMediaDecoderLog,
LogLevel::Debug,
("Telemetry (WebAudio) MEDIA_CODEC_USED= '%s'", codec.get()));
- Telemetry::Accumulate(Telemetry::ID::MEDIA_CODEC_USED, codec);
});
AbstractThread::MainThread()->Dispatch(task.forget());
diff --git a/dom/notification/Notification.cpp b/dom/notification/Notification.cpp
index 1dd5724e45..71c4916b92 100644
--- a/dom/notification/Notification.cpp
+++ b/dom/notification/Notification.cpp
@@ -642,8 +642,6 @@ NotificationPermissionRequest::ResolvePromise()
mCallback->Call(mPermission, error);
rv = error.StealNSResult();
}
- Telemetry::Accumulate(
- Telemetry::WEB_NOTIFICATION_REQUEST_PERMISSION_CALLBACK, !!mCallback);
mPromise->MaybeResolve(mPermission);
return rv;
}
@@ -750,11 +748,6 @@ NotificationTelemetryService::RecordPermissions()
if (!GetNotificationPermission(supportsPermission, &capability)) {
continue;
}
- if (capability == nsIPermissionManager::DENY_ACTION) {
- Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_PERMISSIONS, 0);
- } else if (capability == nsIPermissionManager::ALLOW_ACTION) {
- Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_PERMISSIONS, 1);
- }
}
}
@@ -800,9 +793,6 @@ NotificationTelemetryService::RecordDNDSupported()
if (NS_FAILED(rv)) {
return;
}
-
- Telemetry::Accumulate(
- Telemetry::ALERTS_SERVICE_DND_SUPPORTED_FLAG, true);
}
nsresult
@@ -819,7 +809,6 @@ NotificationTelemetryService::RecordSender(nsIPrincipal* aPrincipal)
}
if (!mOrigins.Contains(origin)) {
mOrigins.PutEntry(origin);
- Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_SENDERS, 1);
}
return NS_OK;
}
@@ -829,21 +818,7 @@ NotificationTelemetryService::Observe(nsISupports* aSubject,
const char* aTopic,
const char16_t* aData)
{
- uint32_t capability;
- if (strcmp("perm-changed", aTopic) ||
- !NS_strcmp(u"cleared", aData) ||
- !GetNotificationPermission(aSubject, &capability)) {
- return NS_OK;
- }
- if (!NS_strcmp(u"deleted", aData)) {
- if (capability == nsIPermissionManager::DENY_ACTION) {
- Telemetry::Accumulate(
- Telemetry::WEB_NOTIFICATION_PERMISSION_REMOVED, 0);
- } else if (capability == nsIPermissionManager::ALLOW_ACTION) {
- Telemetry::Accumulate(
- Telemetry::WEB_NOTIFICATION_PERMISSION_REMOVED, 1);
- }
- }
+ /* STUB */
return NS_OK;
}
@@ -1407,7 +1382,6 @@ NotificationObserver::Observe(nsISupports* aSubject, const char* aTopic,
AssertIsOnMainThread();
if (!strcmp("alertdisablecallback", aTopic)) {
- Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_MENU, 1);
if (XRE_IsParentProcess()) {
return Notification::RemovePermission(mPrincipal);
}
@@ -1417,10 +1391,7 @@ NotificationObserver::Observe(nsISupports* aSubject, const char* aTopic,
ContentChild::GetSingleton()->SendDisableNotifications(
IPC::Principal(mPrincipal));
return NS_OK;
- } else if (!strcmp("alertclickcallback", aTopic)) {
- Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_CLICKED, 1);
} else if (!strcmp("alertsettingscallback", aTopic)) {
- Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_MENU, 2);
if (XRE_IsParentProcess()) {
return Notification::OpenSettings(mPrincipal);
}
@@ -1433,21 +1404,7 @@ NotificationObserver::Observe(nsISupports* aSubject, const char* aTopic,
!strcmp("alertfinished", aTopic)) {
RefPtr<NotificationTelemetryService> telemetry =
NotificationTelemetryService::GetInstance();
- if (telemetry) {
- // Record whether "do not disturb" is supported after the first
- // notification, to account for falling back to XUL alerts.
- telemetry->RecordDNDSupported();
- if (!mInPrivateBrowsing) {
- // Ignore senders in private windows.
- Unused << NS_WARN_IF(NS_FAILED(telemetry->RecordSender(mPrincipal)));
- }
- }
Unused << NS_WARN_IF(NS_FAILED(AdjustPushQuota(aTopic)));
-
- if (!strcmp("alertshow", aTopic)) {
- // Record notifications actually shown (e.g. don't count if DND is on).
- Telemetry::Accumulate(Telemetry::WEB_NOTIFICATION_SHOWN, 1);
- }
}
return mObserver->Observe(aSubject, aTopic, aData);
diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
index 916bdea0fb..c3de136d02 100644
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -2148,11 +2148,7 @@ nsresult nsPluginHost::ScanPluginsDirectory(nsIFile *pluginsDir,
nsPluginInfo info;
memset(&info, 0, sizeof(info));
nsresult res;
- // Opening a block for the telemetry AutoTimer
- {
- Telemetry::AutoTimer<Telemetry::PLUGIN_LOAD_METADATA> telemetry;
- res = pluginFile.GetPluginInfo(info, &library);
- }
+ res = pluginFile.GetPluginInfo(info, &library);
// if we don't have mime type don't proceed, this is not a plugin
if (NS_FAILED(res) || !info.fMimeTypeArray) {
RefPtr<nsInvalidPluginTag> invalidTag = new nsInvalidPluginTag(filePath.get(),
@@ -2410,8 +2406,6 @@ nsPluginHost::FindPluginsInContent(bool aCreatePluginList, bool* aPluginsChanged
// This is needed in ReloadPlugins to prevent possible recursive reloads
nsresult nsPluginHost::FindPlugins(bool aCreatePluginList, bool * aPluginsChanged)
{
- Telemetry::AutoTimer<Telemetry::FIND_PLUGINS> telemetry;
-
NS_ENSURE_ARG_POINTER(aPluginsChanged);
*aPluginsChanged = false;
@@ -3412,7 +3406,6 @@ nsPluginHost::StopPluginInstance(nsNPAPIPluginInstance* aInstance)
return NS_OK;
}
- Telemetry::AutoTimer<Telemetry::PLUGIN_SHUTDOWN_MS> timer;
aInstance->Stop();
// if the instance does not want to be 'cached' just remove it
diff --git a/dom/plugins/ipc/PluginAsyncSurrogate.cpp b/dom/plugins/ipc/PluginAsyncSurrogate.cpp
index da07116ccd..3fe4c71680 100644
--- a/dom/plugins/ipc/PluginAsyncSurrogate.cpp
+++ b/dom/plugins/ipc/PluginAsyncSurrogate.cpp
@@ -504,8 +504,6 @@ PluginAsyncSurrogate::WaitForInit()
if (mAcceptCalls) {
return true;
}
- Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGINASYNCSURROGATE_WAITFORINIT_MS>
- timer(mParent->GetHistogramKey());
bool result = false;
MOZ_ASSERT(mParent);
if (mParent->IsChrome()) {
diff --git a/dom/plugins/ipc/PluginHangUIParent.cpp b/dom/plugins/ipc/PluginHangUIParent.cpp
index 5114f2e9a3..908182a22f 100644
--- a/dom/plugins/ipc/PluginHangUIParent.cpp
+++ b/dom/plugins/ipc/PluginHangUIParent.cpp
@@ -8,7 +8,6 @@
#include "PluginHangUIParent.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/plugins/PluginModuleParent.h"
@@ -48,14 +47,6 @@ public:
NS_IMETHOD
Run() override
{
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::PLUGIN_HANG_UI_USER_RESPONSE, mResponseCode);
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::PLUGIN_HANG_UI_DONT_ASK, mDontAskCode);
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::PLUGIN_HANG_UI_RESPONSE_TIME, mResponseTimeMs);
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::PLUGIN_HANG_TIME, mTimeoutMs + mResponseTimeMs);
return NS_OK;
}
diff --git a/dom/plugins/ipc/PluginInstanceParent.cpp b/dom/plugins/ipc/PluginInstanceParent.cpp
index 02f0641f70..bdd15ca99c 100644
--- a/dom/plugins/ipc/PluginInstanceParent.cpp
+++ b/dom/plugins/ipc/PluginInstanceParent.cpp
@@ -9,7 +9,6 @@
#include "mozilla/BasicEvents.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "PluginInstanceParent.h"
#include "BrowserStreamParent.h"
#include "PluginAsyncSurrogate.h"
@@ -206,12 +205,8 @@ NPError
PluginInstanceParent::Destroy()
{
NPError retval;
- { // Scope for timer
- Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGIN_INSTANCE_DESTROY_MS>
- timer(Module()->GetHistogramKey());
- if (!CallNPP_Destroy(&retval)) {
- retval = NPERR_GENERIC_ERROR;
- }
+ if (!CallNPP_Destroy(&retval)) {
+ retval = NPERR_GENERIC_ERROR;
}
#if defined(OS_WIN)
@@ -1786,9 +1781,6 @@ PluginInstanceParent::NPP_NewStream(NPMIMEType type, NPStream* stream,
return NPERR_GENERIC_ERROR;
}
- Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGIN_STREAM_INIT_MS>
- timer(Module()->GetHistogramKey());
-
NPError err = NPERR_NO_ERROR;
if (mParent->IsStartingAsync()) {
MOZ_ASSERT(mSurrogate);
@@ -2504,6 +2496,5 @@ PluginInstanceParent::RecordDrawingModel()
}
MOZ_ASSERT(mode >= 0);
- Telemetry::Accumulate(Telemetry::PLUGIN_DRAWING_MODEL, mode);
mLastRecordedDrawingModel = mode;
}
diff --git a/dom/plugins/ipc/PluginModuleParent.cpp b/dom/plugins/ipc/PluginModuleParent.cpp
index 2489baf166..300c4f621b 100755
--- a/dom/plugins/ipc/PluginModuleParent.cpp
+++ b/dom/plugins/ipc/PluginModuleParent.cpp
@@ -20,7 +20,6 @@
#include "mozilla/Preferences.h"
#include "mozilla/ProcessHangMonitor.h"
#include "mozilla/Services.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Unused.h"
#include "nsAutoPtr.h"
#include "nsCRT.h"
@@ -1172,11 +1171,6 @@ PluginModuleParent::GetRunID(uint32_t* aRunID)
void
PluginModuleChromeParent::ActorDestroy(ActorDestroyReason why)
{
- if (why == AbnormalShutdown) {
- Telemetry::Accumulate(Telemetry::SUBPROCESS_ABNORMAL_ABORT,
- NS_LITERAL_CSTRING("plugin"), 1);
- }
-
// We can't broadcast settings changes anymore.
UnregisterSettingsCallbacks();
@@ -2203,12 +2197,8 @@ public:
void
PluginModuleParent::AccumulateModuleInitBlockedTime()
{
- if (mPluginName.IsEmpty()) {
- GetPluginDetails();
- }
- Telemetry::Accumulate(Telemetry::BLOCKED_ON_PLUGIN_MODULE_INIT_MS,
- GetHistogramKey(),
- static_cast<uint32_t>(mTimeBlocked.ToMilliseconds()));
+ // XXX: mTimeBlocked can probably go if not used for anything besides
+ // telemetry.
mTimeBlocked = TimeDuration();
}
@@ -2294,27 +2284,23 @@ PluginModuleParent::NPP_NewInternal(NPMIMEType pluginType, NPP instance,
return NS_ERROR_FAILURE;
}
- { // Scope for timer
- Telemetry::AutoTimer<Telemetry::BLOCKED_ON_PLUGIN_INSTANCE_INIT_MS>
- timer(GetHistogramKey());
- if (mIsStartingAsync) {
- MOZ_ASSERT(surrogate);
- surrogate->AsyncCallDeparting();
- if (!SendAsyncNPP_New(parentInstance)) {
+ if (mIsStartingAsync) {
+ MOZ_ASSERT(surrogate);
+ surrogate->AsyncCallDeparting();
+ if (!SendAsyncNPP_New(parentInstance)) {
+ *error = NPERR_GENERIC_ERROR;
+ return NS_ERROR_FAILURE;
+ }
+ *error = NPERR_NO_ERROR;
+ } else {
+ if (!CallSyncNPP_New(parentInstance, error)) {
+ // if IPC is down, we'll get an immediate "failed" return, but
+ // without *error being set. So make sure that the error
+ // condition is signaled to nsNPAPIPluginInstance
+ if (NPERR_NO_ERROR == *error) {
*error = NPERR_GENERIC_ERROR;
- return NS_ERROR_FAILURE;
- }
- *error = NPERR_NO_ERROR;
- } else {
- if (!CallSyncNPP_New(parentInstance, error)) {
- // if IPC is down, we'll get an immediate "failed" return, but
- // without *error being set. So make sure that the error
- // condition is signaled to nsNPAPIPluginInstance
- if (NPERR_NO_ERROR == *error) {
- *error = NPERR_GENERIC_ERROR;
- }
- return NS_ERROR_FAILURE;
}
+ return NS_ERROR_FAILURE;
}
}
diff --git a/dom/presentation/provider/PresentationControlService.js b/dom/presentation/provider/PresentationControlService.js
index fe61d26d65..e9f92247f4 100644
--- a/dom/presentation/provider/PresentationControlService.js
+++ b/dom/presentation/provider/PresentationControlService.js
@@ -100,7 +100,6 @@ PresentationControlService.prototype = {
if (aCert) {
this._serverSocket.serverCert = aCert;
- this._serverSocket.setSessionCache(false);
this._serverSocket.setSessionTickets(false);
let requestCert = Ci.nsITLSServerSocket.REQUEST_NEVER;
this._serverSocket.setRequestClientCertificate(requestCert);
diff --git a/dom/security/nsMixedContentBlocker.cpp b/dom/security/nsMixedContentBlocker.cpp
index c03628da0b..5f41f414d0 100644
--- a/dom/security/nsMixedContentBlocker.cpp
+++ b/dom/security/nsMixedContentBlocker.cpp
@@ -983,44 +983,5 @@ enum MixedContentHSTSState {
void
nsMixedContentBlocker::AccumulateMixedContentHSTS(nsIURI* aURI, bool aActive)
{
- // This method must only be called in the parent, because
- // nsSiteSecurityService is only available in the parent
- if (!XRE_IsParentProcess()) {
- MOZ_ASSERT(false);
- return;
- }
-
- bool hsts;
- nsresult rv;
- nsCOMPtr<nsISiteSecurityService> sss = do_GetService(NS_SSSERVICE_CONTRACTID, &rv);
- if (NS_FAILED(rv)) {
- return;
- }
- rv = sss->IsSecureURI(nsISiteSecurityService::HEADER_HSTS, aURI, 0, nullptr, &hsts);
- if (NS_FAILED(rv)) {
- return;
- }
-
- // states: would upgrade, hsts info cached
- // active, passive
- //
- if (!aActive) {
- if (!hsts) {
- Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS,
- MCB_HSTS_PASSIVE_NO_HSTS);
- }
- else {
- Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS,
- MCB_HSTS_PASSIVE_WITH_HSTS);
- }
- } else {
- if (!hsts) {
- Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS,
- MCB_HSTS_ACTIVE_NO_HSTS);
- }
- else {
- Telemetry::Accumulate(Telemetry::MIXED_CONTENT_HSTS,
- MCB_HSTS_ACTIVE_WITH_HSTS);
- }
- }
+/* STUB */
} \ No newline at end of file
diff --git a/dom/storage/DOMStorageCache.cpp b/dom/storage/DOMStorageCache.cpp
index 811f79fd36..a6aa17424e 100644
--- a/dom/storage/DOMStorageCache.cpp
+++ b/dom/storage/DOMStorageCache.cpp
@@ -309,7 +309,7 @@ public:
explicit TelemetryAutoTimer(Telemetry::ID aId)
: id(aId), start(TimeStamp::Now()) {}
~TelemetryAutoTimer()
- { Telemetry::AccumulateDelta_impl<Telemetry::Millisecond>::compute(id, start); }
+ { /* STUB */ }
private:
Telemetry::ID id;
const TimeStamp start;
@@ -329,9 +329,6 @@ DOMStorageCache::WaitForPreload(Telemetry::ID aTelemetryID)
// Telemetry of rates of pending preloads
if (!mPreloadTelemetryRecorded) {
mPreloadTelemetryRecorded = true;
- Telemetry::Accumulate(
- Telemetry::LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS,
- !loaded);
}
if (loaded) {
diff --git a/dom/storage/DOMStorageDBThread.cpp b/dom/storage/DOMStorageDBThread.cpp
index 183be5c5c8..f86dbad9c7 100644
--- a/dom/storage/DOMStorageDBThread.cpp
+++ b/dom/storage/DOMStorageDBThread.cpp
@@ -163,8 +163,6 @@ DOMStorageDBThread::Shutdown()
return NS_ERROR_NOT_INITIALIZED;
}
- Telemetry::AutoTimer<Telemetry::LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS> timer;
-
{
MonitorAutoLock monitor(mThreadObserver->GetMonitor());
diff --git a/dom/system/mac/CoreLocationLocationProvider.mm b/dom/system/mac/CoreLocationLocationProvider.mm
index b39582a9ed..7a3feba97b 100644
--- a/dom/system/mac/CoreLocationLocationProvider.mm
+++ b/dom/system/mac/CoreLocationLocationProvider.mm
@@ -13,7 +13,6 @@
#include "CoreLocationLocationProvider.h"
#include "nsCocoaFeatures.h"
#include "prtime.h"
-#include "mozilla/Telemetry.h"
#include "MLSFallback.h"
#include <CoreLocation/CLError.h>
@@ -103,7 +102,6 @@ static const CLLocationAccuracy kDEFAULT_ACCURACY = kCLLocationAccuracyNearestTe
PR_Now() / PR_USEC_PER_MSEC);
mProvider->Update(geoPosition);
- Telemetry::Accumulate(Telemetry::GEOLOCATION_OSX_SOURCE_IS_MLS, false);
}
@end
@@ -127,7 +125,6 @@ CoreLocationLocationProvider::MLSUpdate::Update(nsIDOMGeoPosition *position)
return NS_ERROR_FAILURE;
}
mParentLocationProvider.Update(position);
- Telemetry::Accumulate(Telemetry::GEOLOCATION_OSX_SOURCE_IS_MLS, true);
return NS_OK;
}
NS_IMETHODIMP
diff --git a/dom/system/windows/WindowsLocationProvider.cpp b/dom/system/windows/WindowsLocationProvider.cpp
index fa7f8d8be1..9da7bcc304 100644
--- a/dom/system/windows/WindowsLocationProvider.cpp
+++ b/dom/system/windows/WindowsLocationProvider.cpp
@@ -10,7 +10,6 @@
#include "nsComponentManagerUtils.h"
#include "prtime.h"
#include "MLSFallback.h"
-#include "mozilla/Telemetry.h"
namespace mozilla {
namespace dom {
@@ -34,7 +33,6 @@ WindowsLocationProvider::MLSUpdate::Update(nsIDOMGeoPosition *aPosition)
if (!coords) {
return NS_ERROR_FAILURE;
}
- Telemetry::Accumulate(Telemetry::GEOLOCATION_WIN8_SOURCE_IS_MLS, true);
return mCallback->Update(aPosition);
}
NS_IMETHODIMP
@@ -176,8 +174,6 @@ LocationEvent::OnLocationChanged(REFIID aReportType,
PR_Now() / PR_USEC_PER_MSEC);
mCallback->Update(position);
- Telemetry::Accumulate(Telemetry::GEOLOCATION_WIN8_SOURCE_IS_MLS, false);
-
return S_OK;
}
diff --git a/dom/webidl/DataTransfer.webidl b/dom/webidl/DataTransfer.webidl
index 206d808049..dd44e1ddce 100644
--- a/dom/webidl/DataTransfer.webidl
+++ b/dom/webidl/DataTransfer.webidl
@@ -7,7 +7,7 @@
* http://www.whatwg.org/specs/web-apps/current-work/#the-datatransfer-interface
*/
-[ChromeConstructor(DOMString eventType, boolean isExternal)]
+[Constructor]
interface DataTransfer {
attribute DOMString dropEffect;
attribute DOMString effectAllowed;
diff --git a/dom/webidl/HTMLDocument.webidl b/dom/webidl/HTMLDocument.webidl
index 42f6d98f79..ffb61ccdd9 100644
--- a/dom/webidl/HTMLDocument.webidl
+++ b/dom/webidl/HTMLDocument.webidl
@@ -7,7 +7,7 @@
[OverrideBuiltins]
interface HTMLDocument : Document {
[SetterThrows]
- attribute DOMString? domain;
+ attribute DOMString domain;
[Throws]
attribute DOMString cookie;
// DOM tree accessors
diff --git a/dom/webidl/WebGLRenderingContext.webidl b/dom/webidl/WebGLRenderingContext.webidl
index dd0e6ff690..323d234219 100644
--- a/dom/webidl/WebGLRenderingContext.webidl
+++ b/dom/webidl/WebGLRenderingContext.webidl
@@ -1046,3 +1046,12 @@ interface EXT_disjoint_timer_query {
any getQueryEXT(GLenum target, GLenum pname);
any getQueryObjectEXT(WebGLQuery query, GLenum pname);
};
+
+[NoInterfaceObject]
+interface MOZ_debug_get {
+ const GLenum EXTENSIONS = 0x1F03;
+ const GLenum WSI_INFO = 0x10000;
+
+ [Throws]
+ any getParameter(GLenum pname);
+};
diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp
index e1910536f2..1f49e16dd3 100644
--- a/dom/workers/RuntimeService.cpp
+++ b/dom/workers/RuntimeService.cpp
@@ -30,7 +30,6 @@
#include "mozilla/AsyncEventDispatcher.h"
#include "mozilla/Atomics.h"
#include "mozilla/CycleCollectedJSContext.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/TimeStamp.h"
#include "mozilla/dom/asmjscache/AsmJSCache.h"
#include "mozilla/dom/AtomList.h"
@@ -1534,7 +1533,6 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate)
const bool isDedicatedWorker = aWorkerPrivate->IsDedicatedWorker();
if (isServiceWorker) {
AssertIsOnMainThread();
- Telemetry::Accumulate(Telemetry::SERVICE_WORKER_SPAWN_ATTEMPTS, 1);
}
nsCString sharedWorkerScriptSpec;
@@ -1586,14 +1584,6 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate)
// Worker spawn gets queued due to hitting max workers per domain
// limit so let's log a warning.
WorkerPrivate::ReportErrorToConsole("HittingMaxWorkersPerDomain2");
-
- if (isServiceWorker) {
- Telemetry::Accumulate(Telemetry::SERVICE_WORKER_SPAWN_GETS_QUEUED, 1);
- } else if (isSharedWorker) {
- Telemetry::Accumulate(Telemetry::SHARED_WORKER_SPAWN_GETS_QUEUED, 1);
- } else if (isDedicatedWorker) {
- Telemetry::Accumulate(Telemetry::DEDICATED_WORKER_SPAWN_GETS_QUEUED, 1);
- }
}
else if (parent) {
domainInfo->mChildWorkerCount++;
@@ -1669,7 +1659,6 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate)
if (isServiceWorker) {
AssertIsOnMainThread();
- Telemetry::Accumulate(Telemetry::SERVICE_WORKER_WAS_SPAWNED, 1);
}
return true;
}
@@ -1766,8 +1755,6 @@ RuntimeService::UnregisterWorker(WorkerPrivate* aWorkerPrivate)
if (aWorkerPrivate->IsServiceWorker()) {
AssertIsOnMainThread();
- Telemetry::AccumulateTimeDelta(Telemetry::SERVICE_WORKER_LIFE_TIME,
- aWorkerPrivate->CreationTimeStamp());
}
if (aWorkerPrivate->IsSharedWorker() ||
diff --git a/dom/workers/ServiceWorkerManager.cpp b/dom/workers/ServiceWorkerManager.cpp
index a66df07314..a8f191f2e6 100644
--- a/dom/workers/ServiceWorkerManager.cpp
+++ b/dom/workers/ServiceWorkerManager.cpp
@@ -33,7 +33,6 @@
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/ErrorNames.h"
#include "mozilla/LoadContext.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/dom/BindingUtils.h"
#include "mozilla/dom/ContentParent.h"
#include "mozilla/dom/DOMError.h"
@@ -676,7 +675,6 @@ ServiceWorkerManager::Register(mozIDOMWindow* aWindow,
queue->ScheduleJob(job);
AssertIsOnMainThread();
- Telemetry::Accumulate(Telemetry::SERVICE_WORKER_REGISTRATIONS, 1);
promise.forget(aPromise);
return NS_OK;
@@ -2180,7 +2178,6 @@ ServiceWorkerManager::StartControllingADocument(ServiceWorkerRegistrationInfo* a
if (!aDocumentId.IsEmpty()) {
aDoc->SetId(aDocumentId);
}
- Telemetry::Accumulate(Telemetry::SERVICE_WORKER_CONTROLLED_DOCUMENTS, 1);
}
void
diff --git a/dom/workers/ServiceWorkerRegistrar.cpp b/dom/workers/ServiceWorkerRegistrar.cpp
index a4757ea548..7df129c2be 100644
--- a/dom/workers/ServiceWorkerRegistrar.cpp
+++ b/dom/workers/ServiceWorkerRegistrar.cpp
@@ -135,9 +135,6 @@ ServiceWorkerRegistrar::GetRegistrations(
if (firstTime) {
firstTime = false;
- Telemetry::AccumulateTimeDelta(
- Telemetry::SERVICE_WORKER_REGISTRATION_LOADING,
- startTime);
}
}
diff --git a/dom/workers/ServiceWorkerUpdateJob.cpp b/dom/workers/ServiceWorkerUpdateJob.cpp
index 614fe4de5a..69877dfe4c 100644
--- a/dom/workers/ServiceWorkerUpdateJob.cpp
+++ b/dom/workers/ServiceWorkerUpdateJob.cpp
@@ -408,8 +408,6 @@ ServiceWorkerUpdateJob::ComparisonResult(nsresult aStatus,
return;
}
- Telemetry::Accumulate(Telemetry::SERVICE_WORKER_UPDATED, 1);
-
// Begin step 7 of the Update algorithm to evaluate the new script.
RefPtr<ServiceWorkerInfo> sw =
diff --git a/dom/workers/SharedWorker.cpp b/dom/workers/SharedWorker.cpp
index b0eed2def4..99bb503397 100644
--- a/dom/workers/SharedWorker.cpp
+++ b/dom/workers/SharedWorker.cpp
@@ -12,7 +12,6 @@
#include "mozilla/Preferences.h"
#include "mozilla/dom/MessagePort.h"
#include "mozilla/dom/SharedWorkerBinding.h"
-#include "mozilla/Telemetry.h"
#include "nsContentUtils.h"
#include "nsIClassInfoImpl.h"
#include "nsIDOMEvent.h"
@@ -73,8 +72,6 @@ SharedWorker::Constructor(const GlobalObject& aGlobal, JSContext* aCx,
return nullptr;
}
- Telemetry::Accumulate(Telemetry::SHARED_WORKER_COUNT, 1);
-
return sharedWorker.forget();
}
diff --git a/dom/workers/WorkerRunnable.cpp b/dom/workers/WorkerRunnable.cpp
index 6bbe40f66a..9e6d4cfb8f 100644
--- a/dom/workers/WorkerRunnable.cpp
+++ b/dom/workers/WorkerRunnable.cpp
@@ -15,7 +15,6 @@
#include "mozilla/DebugOnly.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/dom/ScriptSettings.h"
-#include "mozilla/Telemetry.h"
#include "js/RootingAPI.h"
#include "js/Value.h"
@@ -572,8 +571,6 @@ WorkerMainThreadRunnable::Dispatch(Status aFailStatus, ErrorResult& aRv)
{
mWorkerPrivate->AssertIsOnWorkerThread();
- TimeStamp startTime = TimeStamp::NowLoRes();
-
AutoSyncLoopHolder syncLoop(mWorkerPrivate, aFailStatus);
mSyncLoopTarget = syncLoop.GetEventTarget();
@@ -590,11 +587,6 @@ WorkerMainThreadRunnable::Dispatch(Status aFailStatus, ErrorResult& aRv)
if (!syncLoop.Run()) {
aRv.ThrowUncatchableException();
}
-
- Telemetry::Accumulate(Telemetry::SYNC_WORKER_OPERATION, mTelemetryKey,
- static_cast<uint32_t>((TimeStamp::NowLoRes() - startTime)
- .ToMilliseconds()));
- Unused << startTime; // Shut the compiler up.
}
NS_IMETHODIMP
diff --git a/dom/xhr/XMLHttpRequestMainThread.cpp b/dom/xhr/XMLHttpRequestMainThread.cpp
index 4fd34a9933..613008ad53 100644
--- a/dom/xhr/XMLHttpRequestMainThread.cpp
+++ b/dom/xhr/XMLHttpRequestMainThread.cpp
@@ -757,15 +757,6 @@ XMLHttpRequestMainThread::SetResponseType(XMLHttpRequestResponseType aResponseTy
return;
}
- // We want to get rid of this moz-only types. Bug 1335365.
- if (aResponseType == XMLHttpRequestResponseType::Moz_blob) {
- Telemetry::Accumulate(Telemetry::MOZ_BLOB_IN_XHR, 1);
- } else if (aResponseType == XMLHttpRequestResponseType::Moz_chunked_text) {
- Telemetry::Accumulate(Telemetry::MOZ_CHUNKED_TEXT_IN_XHR, 1);
- } else if (aResponseType == XMLHttpRequestResponseType::Moz_chunked_arraybuffer) {
- Telemetry::Accumulate(Telemetry::MOZ_CHUNKED_ARRAYBUFFER_IN_XHR, 1);
- }
-
// Set the responseType attribute's value to the given value.
mResponseType = aResponseType;
}
@@ -1521,8 +1512,6 @@ XMLHttpRequestMainThread::Open(const nsACString& aMethod,
GetOwner()->GetExtantDoc()->WarnOnceAbout(nsIDocument::eSyncXMLHttpRequest);
}
- Telemetry::Accumulate(Telemetry::XMLHTTPREQUEST_ASYNC_OR_SYNC, aAsync ? 0 : 1);
-
// Step 1
nsCOMPtr<nsIDocument> responsibleDocument = GetDocumentIfCurrent();
if (!responsibleDocument) {
diff --git a/dom/xhr/XMLHttpRequestWorker.cpp b/dom/xhr/XMLHttpRequestWorker.cpp
index c9e892f26a..2af61bd7dd 100644
--- a/dom/xhr/XMLHttpRequestWorker.cpp
+++ b/dom/xhr/XMLHttpRequestWorker.cpp
@@ -1588,8 +1588,6 @@ XMLHttpRequestWorker::Construct(const GlobalObject& aGlobal,
WorkerPrivate* workerPrivate = GetWorkerPrivateFromContext(cx);
MOZ_ASSERT(workerPrivate);
- Telemetry::Accumulate(Telemetry::XHR_IN_WORKER, 1);
-
RefPtr<XMLHttpRequestWorker> xhr = new XMLHttpRequestWorker(workerPrivate);
if (workerPrivate->XHRParamsAllowed()) {
diff --git a/dom/xul/nsXULPrototypeCache.cpp b/dom/xul/nsXULPrototypeCache.cpp
index 84a201d594..2c34548608 100644
--- a/dom/xul/nsXULPrototypeCache.cpp
+++ b/dom/xul/nsXULPrototypeCache.cpp
@@ -45,12 +45,6 @@ UpdategDisableXULCache()
// Get the value of "nglayout.debug.disable_xul_cache" preference
gDisableXULCache =
Preferences::GetBool(kDisableXULCachePref, gDisableXULCache);
-
- // Sets the flag if the XUL cache is disabled
- if (gDisableXULCache) {
- Telemetry::Accumulate(Telemetry::XUL_CACHE_DISABLED, true);
- }
-
}
static void
diff --git a/embedding/components/find/nsFind.cpp b/embedding/components/find/nsFind.cpp
index cbc42298bb..5fc1f9db68 100644
--- a/embedding/components/find/nsFind.cpp
+++ b/embedding/components/find/nsFind.cpp
@@ -33,7 +33,7 @@
using namespace mozilla;
// Yikes! Casting a char to unichar can fill with ones!
-#define CHAR_TO_UNICHAR(c) ((char16_t)(const unsigned char)c)
+#define CHAR_TO_UNICHAR(c) ((char16_t)(unsigned char)c)
static NS_DEFINE_CID(kCContentIteratorCID, NS_CONTENTITERATOR_CID);
static NS_DEFINE_CID(kCPreContentIteratorCID, NS_PRECONTENTITERATOR_CID);
diff --git a/extensions/auth/nsAuthGSSAPI.cpp b/extensions/auth/nsAuthGSSAPI.cpp
index f63b30eff6..0e273a3005 100644
--- a/extensions/auth/nsAuthGSSAPI.cpp
+++ b/extensions/auth/nsAuthGSSAPI.cpp
@@ -22,7 +22,6 @@
#include "nsIPrefBranch.h"
#include "nsIServiceManager.h"
#include "nsNativeCharsetUtils.h"
-#include "mozilla/Telemetry.h"
#include "nsAuthGSSAPI.h"
@@ -377,16 +376,6 @@ nsAuthGSSAPI::Init(const char *serviceName,
mServiceName = serviceName;
mServiceFlags = serviceFlags;
- static bool sTelemetrySent = false;
- if (!sTelemetrySent) {
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::NTLM_MODULE_USED_2,
- serviceFlags & nsIAuthModule::REQ_PROXY_AUTH
- ? NTLM_MODULE_KERBEROS_PROXY
- : NTLM_MODULE_KERBEROS_DIRECT);
- sTelemetrySent = true;
- }
-
return NS_OK;
}
diff --git a/extensions/auth/nsAuthSSPI.cpp b/extensions/auth/nsAuthSSPI.cpp
index eb577d3bf3..677a4773af 100644
--- a/extensions/auth/nsAuthSSPI.cpp
+++ b/extensions/auth/nsAuthSSPI.cpp
@@ -20,7 +20,6 @@
#include "nsNetCID.h"
#include "nsCOMPtr.h"
#include "nsICryptoHash.h"
-#include "mozilla/Telemetry.h"
#include <windows.h>
@@ -275,16 +274,6 @@ nsAuthSSPI::Init(const char *serviceName,
if (rc != SEC_E_OK)
return NS_ERROR_UNEXPECTED;
- static bool sTelemetrySent = false;
- if (!sTelemetrySent) {
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::NTLM_MODULE_USED_2,
- serviceFlags & nsIAuthModule::REQ_PROXY_AUTH
- ? NTLM_MODULE_WIN_API_PROXY
- : NTLM_MODULE_WIN_API_DIRECT);
- sTelemetrySent = true;
- }
-
LOG(("AcquireCredentialsHandle() succeeded.\n"));
return NS_OK;
}
diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
index 69777dcca2..6b9204c349 100644
--- a/extensions/auth/nsAuthSambaNTLM.cpp
+++ b/extensions/auth/nsAuthSambaNTLM.cpp
@@ -9,7 +9,6 @@
#include "prenv.h"
#include "plbase64.h"
#include "prerror.h"
-#include "mozilla/Telemetry.h"
#include <stdlib.h>
@@ -212,17 +211,6 @@ nsAuthSambaNTLM::Init(const char *serviceName,
const char16_t *password)
{
NS_ASSERTION(!username && !domain && !password, "unexpected credentials");
-
- static bool sTelemetrySent = false;
- if (!sTelemetrySent) {
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::NTLM_MODULE_USED_2,
- serviceFlags & nsIAuthModule::REQ_PROXY_AUTH
- ? NTLM_MODULE_SAMBA_AUTH_PROXY
- : NTLM_MODULE_SAMBA_AUTH_DIRECT);
- sTelemetrySent = true;
- }
-
return NS_OK;
}
diff --git a/extensions/cookie/nsPermissionManager.cpp b/extensions/cookie/nsPermissionManager.cpp
index c448308121..1f3c257ddf 100644
--- a/extensions/cookie/nsPermissionManager.cpp
+++ b/extensions/cookie/nsPermissionManager.cpp
@@ -866,9 +866,6 @@ nsPermissionManager::InitDB(bool aRemoveFile)
if (rv == NS_ERROR_FILE_CORRUPTED) {
LogToConsole(NS_LITERAL_STRING("permissions.sqlite is corrupted! Try again!"));
- // Add telemetry probe
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PERMISSIONS_SQL_CORRUPTED, 1);
-
// delete corrupted permissions.sqlite and try again
rv = permissionsFile->Remove(false);
NS_ENSURE_SUCCESS(rv, rv);
@@ -891,9 +888,6 @@ nsPermissionManager::InitDB(bool aRemoveFile)
NS_ENSURE_SUCCESS(rv, rv);
LogToConsole(NS_LITERAL_STRING("Defective permissions.sqlite has been removed."));
- // Add telemetry probe
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::DEFECTIVE_PERMISSIONS_SQL_REMOVED, 1);
-
rv = OpenDatabase(permissionsFile);
NS_ENSURE_SUCCESS(rv, rv);
LogToConsole(NS_LITERAL_STRING("OpenDatabase to permissions.sqlite is successful!"));
@@ -1185,25 +1179,7 @@ nsPermissionManager::InitDB(bool aRemoveFile)
if (NS_SUCCEEDED(rv) &&
NS_SUCCEEDED(countStmt->ExecuteStep(&hasResult)) &&
hasResult) {
- int32_t permsCount = countStmt->AsInt32(0);
-
- // The id variable contains the number of rows inserted into the
- // moz_hosts_new table (as one ID was used per entry)
- uint32_t telemetryValue;
- if (permsCount > id) {
- telemetryValue = 3; // NEW > OLD
- } else if (permsCount == id) {
- telemetryValue = 2; // NEW == OLD
- } else if (permsCount == 0) {
- telemetryValue = 0; // NEW = 0
- } else {
- telemetryValue = 1; // NEW < OLD
- }
-
- // Report the telemetry value to telemetry
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::PERMISSIONS_REMIGRATION_COMPARISON,
- telemetryValue);
+ // Telemetry STUB (count rows and report)
} else {
NS_WARNING("Could not count the rows in moz_perms");
}
@@ -1221,9 +1197,6 @@ nsPermissionManager::InitDB(bool aRemoveFile)
rv = mDBConn->CommitTransaction();
NS_ENSURE_SUCCESS(rv, rv);
-
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PERMISSIONS_MIGRATION_7_ERROR,
- NS_WARN_IF(migrationError));
} else {
// We don't have a moz_hosts table, so we create one for downgrading purposes.
// This table is empty.
diff --git a/gfx/angle/src/libANGLE/Program.cpp b/gfx/angle/src/libANGLE/Program.cpp
index 7f4226da17..49a0f9a335 100755
--- a/gfx/angle/src/libANGLE/Program.cpp
+++ b/gfx/angle/src/libANGLE/Program.cpp
@@ -679,6 +679,12 @@ Error Program::link(const ContextState &data)
gatherInterfaceBlockInfo();
+ // Because we do lazy init in assignUniformBlockRegisters,
+ // we must initialize them when linking shaders,
+ // otherwise, we will have no shaders for getting uniform blocks
+ // information from shaders when doing draw calls.
+ mProgram->assignUniformBlockRegisters();
+
mLinked = true;
return NoError();
}
diff --git a/gfx/angle/src/libANGLE/renderer/ProgramImpl.h b/gfx/angle/src/libANGLE/renderer/ProgramImpl.h
index 45ff0a05a1..e62623a8da 100755
--- a/gfx/angle/src/libANGLE/renderer/ProgramImpl.h
+++ b/gfx/angle/src/libANGLE/renderer/ProgramImpl.h
@@ -86,6 +86,10 @@ class ProgramImpl : angle::NonCopyable
GLint components,
const GLfloat *coeffs) = 0;
+ virtual void assignUniformBlockRegisters()
+ {
+ }
+
protected:
const gl::ProgramState &mState;
};
diff --git a/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h b/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
index 88fe4020db..01f3973c56 100755
--- a/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
+++ b/gfx/angle/src/libANGLE/renderer/d3d/ProgramD3D.h
@@ -231,6 +231,7 @@ class ProgramD3D : public ProgramImpl
const GLfloat *value);
void setUniformBlockBinding(GLuint uniformBlockIndex, GLuint uniformBlockBinding) override;
+ void assignUniformBlockRegisters() override;
const UniformStorageD3D &getVertexUniformStorage() const { return *mVertexUniformStorage; }
const UniformStorageD3D &getFragmentUniformStorage() const { return *mFragmentUniformStorage; }
@@ -350,7 +351,6 @@ class ProgramD3D : public ProgramImpl
void initAttribLocationsToD3DSemantic();
void reset();
- void assignUniformBlockRegisters();
void initUniformBlockInfo();
size_t getUniformBlockInfo(const sh::InterfaceBlock &interfaceBlock);
diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h
index f205630705..c82efcedaf 100644
--- a/gfx/gl/GLContext.h
+++ b/gfx/gl/GLContext.h
@@ -221,6 +221,8 @@ public:
return false;
}
+ virtual void GetWSIInfo(nsCString* const out) const = 0;
+
/**
* Return true if we are running on a OpenGL core profile context
*/
diff --git a/gfx/gl/GLContextCGL.h b/gfx/gl/GLContextCGL.h
index 12da90aeed..1a29f3d155 100644
--- a/gfx/gl/GLContextCGL.h
+++ b/gfx/gl/GLContextCGL.h
@@ -58,6 +58,8 @@ public:
virtual bool SupportsRobustness() const override { return false; }
virtual bool SwapBuffers() override;
+
+ virtual void GetWSIInfo(nsCString* const out) const override;
};
} // namespace gl
diff --git a/gfx/gl/GLContextEAGL.h b/gfx/gl/GLContextEAGL.h
index 86e9a5b98b..df25d0f1e5 100644
--- a/gfx/gl/GLContextEAGL.h
+++ b/gfx/gl/GLContextEAGL.h
@@ -55,6 +55,8 @@ public:
virtual bool SwapBuffers() override;
+ virtual void GetWSIInfo(nsCString* const out) const override;
+
virtual GLuint GetDefaultFramebuffer() override {
return mBackbufferFB;
}
diff --git a/gfx/gl/GLContextEGL.h b/gfx/gl/GLContextEGL.h
index 9755ecfe79..64b9b13fbe 100644
--- a/gfx/gl/GLContextEGL.h
+++ b/gfx/gl/GLContextEGL.h
@@ -89,6 +89,8 @@ public:
virtual bool SwapBuffers() override;
+ virtual void GetWSIInfo(nsCString* const out) const override;
+
// hold a reference to the given surface
// for the lifetime of this context.
void HoldSurface(gfxASurface* aSurf);
diff --git a/gfx/gl/GLContextGLX.h b/gfx/gl/GLContextGLX.h
index ca476baec0..1f2cee08da 100644
--- a/gfx/gl/GLContextGLX.h
+++ b/gfx/gl/GLContextGLX.h
@@ -59,6 +59,8 @@ public:
virtual bool SwapBuffers() override;
+ virtual void GetWSIInfo(nsCString* const out) const override;
+
// Overrides the current GLXDrawable backing the context and makes the
// context current.
bool OverrideDrawable(GLXDrawable drawable);
diff --git a/gfx/gl/GLContextProviderCGL.mm b/gfx/gl/GLContextProviderCGL.mm
index 0b8add435a..ceab3046cb 100644
--- a/gfx/gl/GLContextProviderCGL.mm
+++ b/gfx/gl/GLContextProviderCGL.mm
@@ -166,6 +166,11 @@ GLContextCGL::SwapBuffers()
return true;
}
+void
+GLContextCGL::GetWSIInfo(nsCString* const out) const
+{
+ out->AppendLiteral("CGL");
+}
already_AddRefed<GLContext>
GLContextProviderCGL::CreateWrappingExisting(void*, void*)
diff --git a/gfx/gl/GLContextProviderEAGL.mm b/gfx/gl/GLContextProviderEAGL.mm
index 784a3e29e0..507616e2fa 100644
--- a/gfx/gl/GLContextProviderEAGL.mm
+++ b/gfx/gl/GLContextProviderEAGL.mm
@@ -155,6 +155,11 @@ GLContextEAGL::SwapBuffers()
return true;
}
+void
+GLContextEAGL::GetWSIInfo(nsCString* const out) const
+{
+ out->AppendLiteral("EAGL");
+}
already_AddRefed<GLContext>
GLContextProviderEAGL::CreateWrappingExisting(void*, void*)
diff --git a/gfx/gl/GLContextProviderEGL.cpp b/gfx/gl/GLContextProviderEGL.cpp
index 098662200d..7979f3bf0b 100644
--- a/gfx/gl/GLContextProviderEGL.cpp
+++ b/gfx/gl/GLContextProviderEGL.cpp
@@ -418,6 +418,24 @@ GLContextEGL::SwapBuffers()
}
}
+void
+GLContextEGL::GetWSIInfo(nsCString* const out) const
+{
+ out->AppendLiteral("EGL_VENDOR: ");
+ out->Append((const char*)sEGLLibrary.fQueryString(EGL_DISPLAY(), LOCAL_EGL_VENDOR));
+
+ out->AppendLiteral("\nEGL_VERSION: ");
+ out->Append((const char*)sEGLLibrary.fQueryString(EGL_DISPLAY(), LOCAL_EGL_VERSION));
+
+ out->AppendLiteral("\nEGL_EXTENSIONS: ");
+ out->Append((const char*)sEGLLibrary.fQueryString(EGL_DISPLAY(), LOCAL_EGL_EXTENSIONS));
+
+#ifndef ANDROID // This query will crash some old android.
+ out->AppendLiteral("\nEGL_EXTENSIONS(nullptr): ");
+ out->Append((const char*)sEGLLibrary.fQueryString(nullptr, LOCAL_EGL_EXTENSIONS));
+#endif
+}
+
// hold a reference to the given surface
// for the lifetime of this context.
void
diff --git a/gfx/gl/GLContextProviderGLX.cpp b/gfx/gl/GLContextProviderGLX.cpp
index d804f95aff..539520a8ce 100644
--- a/gfx/gl/GLContextProviderGLX.cpp
+++ b/gfx/gl/GLContextProviderGLX.cpp
@@ -80,7 +80,6 @@ GLXLibrary::EnsureInitialized()
if (!mOGLLibrary) {
const char* libGLfilename = nullptr;
- bool forceFeatureReport = false;
// see e.g. bug 608526: it is intrinsically interesting to know whether we have dynamically linked to libGL.so.1
// because at least the NVIDIA implementation requires an executable stack, which causes mprotect calls,
@@ -994,6 +993,27 @@ GLContextGLX::SwapBuffers()
return true;
}
+void
+GLContextGLX::GetWSIInfo(nsCString* const out) const
+{
+ Display* display = DefaultXDisplay();
+ int screen = DefaultScreen(display);
+
+ int majorVersion, minorVersion;
+ sGLXLibrary.xQueryVersion(display, &majorVersion, &minorVersion);
+
+ out->Append(nsPrintfCString("GLX %u.%u", majorVersion, minorVersion));
+
+ out->AppendLiteral("\nGLX_VENDOR(client): ");
+ out->Append(sGLXLibrary.xGetClientString(display, LOCAL_GLX_VENDOR));
+
+ out->AppendLiteral("\nGLX_VENDOR(server): ");
+ out->Append(sGLXLibrary.xQueryServerString(display, screen, LOCAL_GLX_VENDOR));
+
+ out->AppendLiteral("\nExtensions: ");
+ out->Append(sGLXLibrary.xQueryExtensionsString(display, screen));
+}
+
bool
GLContextGLX::OverrideDrawable(GLXDrawable drawable)
{
diff --git a/gfx/gl/GLContextProviderWGL.cpp b/gfx/gl/GLContextProviderWGL.cpp
index c9c3f0a54d..35957259de 100644
--- a/gfx/gl/GLContextProviderWGL.cpp
+++ b/gfx/gl/GLContextProviderWGL.cpp
@@ -373,6 +373,13 @@ GLContextWGL::SwapBuffers() {
return ::SwapBuffers(mDC);
}
+void
+GLContextWGL::GetWSIInfo(nsCString* const out) const
+{
+ out->AppendLiteral("wglGetExtensionsString: ");
+ out->Append(sWGLLib.fGetExtensionsString(mDC));
+}
+
bool
GLContextWGL::SetupLookupFunction()
{
diff --git a/gfx/gl/GLContextWGL.h b/gfx/gl/GLContextWGL.h
index 9d270bf52d..839b10aa78 100644
--- a/gfx/gl/GLContextWGL.h
+++ b/gfx/gl/GLContextWGL.h
@@ -57,6 +57,8 @@ public:
virtual bool SwapBuffers() override;
+ virtual void GetWSIInfo(nsCString* const out) const override;
+
virtual bool SetupLookupFunction() override;
HGLRC Context() { return mContext; }
diff --git a/gfx/gl/GLLibraryEGL.cpp b/gfx/gl/GLLibraryEGL.cpp
index 3d8da30854..75f40f13f0 100644
--- a/gfx/gl/GLLibraryEGL.cpp
+++ b/gfx/gl/GLLibraryEGL.cpp
@@ -9,7 +9,6 @@
#include "gfxUtils.h"
#include "mozilla/Preferences.h"
#include "mozilla/Assertions.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Tokenizer.h"
#include "mozilla/ScopeExit.h"
#include "mozilla/Unused.h"
@@ -472,20 +471,6 @@ GLLibraryEGL::EnsureInitialized(bool forceAccel, nsACString* const out_failureId
chosenDisplay = GetAndInitDisplayForAccelANGLE(*this, out_failureId);
}
- // Report the acceleration status to telemetry
- if (!chosenDisplay) {
- if (accelAngleFailureId.IsEmpty()) {
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_ACCL_FAILURE_ID,
- NS_LITERAL_CSTRING("FEATURE_FAILURE_ACCL_ANGLE_UNKNOWN"));
- } else {
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_ACCL_FAILURE_ID,
- accelAngleFailureId);
- }
- } else {
- Telemetry::Accumulate(Telemetry::CANVAS_WEBGL_ACCL_FAILURE_ID,
- NS_LITERAL_CSTRING("SUCCESS"));
- }
-
// Fallback to a WARP display if ANGLE fails, or if WARP is forced
if (!chosenDisplay && shouldTryWARP) {
chosenDisplay = GetAndInitWARPDisplay(*this, EGL_DEFAULT_DISPLAY);
diff --git a/gfx/gl/GLTextureImage.cpp b/gfx/gl/GLTextureImage.cpp
index 65678432da..c91d558af4 100644
--- a/gfx/gl/GLTextureImage.cpp
+++ b/gfx/gl/GLTextureImage.cpp
@@ -149,9 +149,6 @@ BasicTextureImage::DirectUpdate(gfx::DataSourceSurface* aSurf, const nsIntRegion
&uploadSize,
needInit,
aFrom);
- if (mTextureFormat == SurfaceFormat::UNKNOWN) {
- return false;
- }
if (uploadSize > 0) {
UpdateUploadSize(uploadSize);
diff --git a/gfx/gl/GLUploadHelpers.cpp b/gfx/gl/GLUploadHelpers.cpp
index ca1c890a48..75165eedf7 100644
--- a/gfx/gl/GLUploadHelpers.cpp
+++ b/gfx/gl/GLUploadHelpers.cpp
@@ -27,23 +27,6 @@ DataOffset(const IntPoint& aPoint, int32_t aStride, SurfaceFormat aFormat)
return data;
}
-static bool
-CheckUploadBounds(const IntSize& aDst, const IntSize& aSrc, const IntPoint& aOffset)
-{
- if (aOffset.x < 0 || aOffset.y < 0 ||
- aOffset.x >= aSrc.width ||
- aOffset.y >= aSrc.height) {
- MOZ_ASSERT_UNREACHABLE("Offset outside source bounds");
- return false;
- }
- if (aDst.width > (aSrc.width - aOffset.x) ||
- aDst.height > (aSrc.height - aOffset.y)) {
- MOZ_ASSERT_UNREACHABLE("Source has insufficient data");
- return false;
- }
- return true;
-}
-
static GLint GetAddressAlignment(ptrdiff_t aAddress)
{
if (!(aAddress & 0x7)) {
@@ -392,7 +375,6 @@ TexImage2DHelper(GLContext* gl,
SurfaceFormat
UploadImageDataToTexture(GLContext* gl,
unsigned char* aData,
- const gfx::IntSize& aDataSize,
int32_t aStride,
SurfaceFormat aFormat,
const nsIntRegion& aDstRegion,
@@ -516,10 +498,6 @@ UploadImageDataToTexture(GLContext* gl,
// Upload each rect in the region to the texture
for (auto iter = aDstRegion.RectIter(); !iter.Done(); iter.Next()) {
const IntRect& rect = iter.Get();
- if (!CheckUploadBounds(rect.Size(), aDataSize, rect.TopLeft())) {
- return SurfaceFormat::UNKNOWN;
- }
-
const unsigned char* rectData =
aData + DataOffset(rect.TopLeft(), aStride, aFormat);
@@ -556,17 +534,10 @@ UploadSurfaceToTexture(GLContext* gl,
int32_t stride = aSurface->Stride();
SurfaceFormat format = aSurface->GetFormat();
- gfx::IntSize size = aSurface->GetSize();
- if (!CheckUploadBounds(aSize, size, aSrcPoint)) {
- return SurfaceFormat::UNKNOWN;
- }
-
unsigned char* data = aSurface->GetData() +
DataOffset(aSrcPoint, stride, format);
- size.width -= aSrcPoint.x;
- size.height -= aSrcPoint.y;
- return UploadImageDataToTexture(gl, data, size, stride, format,
+ return UploadImageDataToTexture(gl, data, stride, format,
aDstRegion, aTexture, aSize,
aOutUploadSize, aNeedInit,
aTextureUnit, aTextureTarget);
diff --git a/gfx/gl/GLUploadHelpers.h b/gfx/gl/GLUploadHelpers.h
index f732d2b383..866d44adbe 100644
--- a/gfx/gl/GLUploadHelpers.h
+++ b/gfx/gl/GLUploadHelpers.h
@@ -28,7 +28,6 @@ class GLContext;
* \param gl The GL Context to use.
* \param aData Start of image data of surface to upload.
* Corresponds to the first pixel of the texture.
- * \param aDataSize The image data's size.
* \param aStride The image data's stride.
* \param aFormat The image data's format.
* \param aDstRegion Region of the texture to upload.
@@ -47,7 +46,6 @@ class GLContext;
gfx::SurfaceFormat
UploadImageDataToTexture(GLContext* gl,
unsigned char* aData,
- const gfx::IntSize& aDataSize,
int32_t aStride,
gfx::SurfaceFormat aFormat,
const nsIntRegion& aDstRegion,
diff --git a/gfx/gl/TextureImageEGL.cpp b/gfx/gl/TextureImageEGL.cpp
index 3bb2987d1d..87a547c269 100644
--- a/gfx/gl/TextureImageEGL.cpp
+++ b/gfx/gl/TextureImageEGL.cpp
@@ -119,10 +119,6 @@ TextureImageEGL::DirectUpdate(gfx::DataSourceSurface* aSurf, const nsIntRegion&
&uploadSize,
needInit,
aFrom);
- if (mTextureFormat == SurfaceFormat::UNKNOWN) {
- return false;
- }
-
if (uploadSize > 0) {
UpdateUploadSize(uploadSize);
}
diff --git a/gfx/ipc/GPUChild.cpp b/gfx/ipc/GPUChild.cpp
index a075716e32..bfe2d56f72 100644
--- a/gfx/ipc/GPUChild.cpp
+++ b/gfx/ipc/GPUChild.cpp
@@ -8,7 +8,6 @@
#include "gfxPrefs.h"
#include "GPUProcessHost.h"
#include "GPUProcessManager.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/dom/CheckerboardReportService.h"
#include "mozilla/gfx/gfxVars.h"
#if defined(XP_WIN)
@@ -80,7 +79,6 @@ GPUChild::EnsureGPUReady()
SendGetDeviceStatus(&data);
gfxPlatform::GetPlatform()->ImportGPUDeviceData(data);
- Telemetry::AccumulateTimeDelta(Telemetry::GPU_PROCESS_LAUNCH_TIME_MS, mHost->GetLaunchTime());
mGPUReady = true;
}
@@ -93,7 +91,6 @@ GPUChild::RecvInitComplete(const GPUDeviceData& aData)
}
gfxPlatform::GetPlatform()->ImportGPUDeviceData(aData);
- Telemetry::AccumulateTimeDelta(Telemetry::GPU_PROCESS_LAUNCH_TIME_MS, mHost->GetLaunchTime());
mGPUReady = true;
return true;
}
@@ -131,14 +128,14 @@ GPUChild::RecvNotifyUiObservers(const nsCString& aTopic)
bool
GPUChild::RecvAccumulateChildHistogram(InfallibleTArray<Accumulation>&& aAccumulations)
{
- Telemetry::AccumulateChild(GeckoProcessType_GPU, aAccumulations);
+ /* Telemetry STUB */
return true;
}
bool
GPUChild::RecvAccumulateChildKeyedHistogram(InfallibleTArray<KeyedAccumulation>&& aAccumulations)
{
- Telemetry::AccumulateChildKeyed(GeckoProcessType_GPU, aAccumulations);
+ /* Telemetry STUB */
return true;
}
@@ -152,11 +149,6 @@ GPUChild::RecvNotifyDeviceReset()
void
GPUChild::ActorDestroy(ActorDestroyReason aWhy)
{
- if (aWhy == AbnormalShutdown) {
- Telemetry::Accumulate(Telemetry::SUBPROCESS_ABNORMAL_ABORT,
- nsDependentCString(XRE_ChildProcessTypeToString(GeckoProcessType_GPU), 1));
- }
-
gfxVars::RemoveReceiver(this);
mHost->OnChannelClosed();
}
diff --git a/gfx/layers/Layers.cpp b/gfx/layers/Layers.cpp
index ff5ab9b50a..482d809a1f 100644
--- a/gfx/layers/Layers.cpp
+++ b/gfx/layers/Layers.cpp
@@ -22,7 +22,6 @@
#include "gfxUtils.h" // for gfxUtils, etc
#include "gfx2DGlue.h"
#include "mozilla/DebugOnly.h" // for DebugOnly
-#include "mozilla/Telemetry.h" // for Accumulate
#include "mozilla/ToString.h"
#include "mozilla/dom/Animation.h" // for ComputedTimingFunction
#include "mozilla/gfx/2D.h" // for DrawTarget
@@ -1621,8 +1620,6 @@ void
LayerManager::PostPresent()
{
if (!mTabSwitchStart.IsNull()) {
- Telemetry::Accumulate(Telemetry::FX_TAB_SWITCH_TOTAL_MS,
- uint32_t((TimeStamp::Now() - mTabSwitchStart).ToMilliseconds()));
mTabSwitchStart = TimeStamp();
}
}
diff --git a/gfx/layers/apz/src/AsyncPanZoomController.cpp b/gfx/layers/apz/src/AsyncPanZoomController.cpp
index 102f282f37..e7574eeb7c 100644
--- a/gfx/layers/apz/src/AsyncPanZoomController.cpp
+++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp
@@ -904,9 +904,6 @@ nsEventStatus AsyncPanZoomController::HandleDragEvent(const MouseInput& aEvent,
return nsEventStatus_eConsumeNoDefault;
}
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::ApzScrollbarDrag);
-
ReentrantMonitorAutoEnter lock(mMonitor);
CSSPoint scrollFramePoint = aEvent.mLocalOrigin / GetFrameMetrics().GetZoom();
// The scrollbar can be transformed with the frame but the pres shell
@@ -1731,10 +1728,6 @@ nsEventStatus AsyncPanZoomController::OnScrollWheel(const ScrollWheelInput& aEve
return nsEventStatus_eIgnore;
}
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethodForWheelDeltaType(aEvent.mDeltaType));
-
-
switch (aEvent.mScrollMode) {
case ScrollWheelInput::SCROLLMODE_INSTANT: {
@@ -1934,9 +1927,6 @@ nsEventStatus AsyncPanZoomController::OnPan(const PanGestureInput& aEvent, bool
HandlePanningUpdate(physicalPanDisplacement);
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::ApzPanGesture);
-
ScreenPoint panDistance(fabs(physicalPanDisplacement.x), fabs(physicalPanDisplacement.y));
MOZ_ASSERT(GetCurrentPanGestureBlock());
OverscrollHandoffState handoffState(
@@ -2600,8 +2590,6 @@ void AsyncPanZoomController::TrackTouch(const MultiTouchInput& aEvent) {
UpdateWithTouchAtDevicePoint(aEvent);
if (prevTouchPoint != touchPoint) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::ApzTouch);
MOZ_ASSERT(GetCurrentTouchBlock());
OverscrollHandoffState handoffState(
*GetCurrentTouchBlock()->GetOverscrollHandoffChain(),
@@ -3260,14 +3248,7 @@ AsyncPanZoomController::UpdateCheckerboardEvent(const MutexAutoLock& aProofOfLoc
uint32_t aMagnitude)
{
if (mCheckerboardEvent && mCheckerboardEvent->RecordFrameInfo(aMagnitude)) {
- // This checkerboard event is done. Report some metrics to telemetry.
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::CHECKERBOARD_SEVERITY,
- mCheckerboardEvent->GetSeverity());
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::CHECKERBOARD_PEAK,
- mCheckerboardEvent->GetPeak());
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::CHECKERBOARD_DURATION,
- (uint32_t)mCheckerboardEvent->GetDuration().ToMilliseconds());
-
+ // This checkerboard event is done.
mPotentialCheckerboardTracker.CheckerboardDone();
if (gfxPrefs::APZRecordCheckerboarding()) {
diff --git a/gfx/layers/apz/src/InputBlockState.cpp b/gfx/layers/apz/src/InputBlockState.cpp
index f1310c031d..85b4e13ffe 100644
--- a/gfx/layers/apz/src/InputBlockState.cpp
+++ b/gfx/layers/apz/src/InputBlockState.cpp
@@ -10,7 +10,6 @@
#include "gfxPrefs.h" // for gfxPrefs
#include "mozilla/MouseEvents.h"
#include "mozilla/SizePrintfMacros.h" // for PRIuSIZE
-#include "mozilla/Telemetry.h" // for Telemetry
#include "mozilla/layers/APZCTreeManager.h" // for AllowedTouchBehavior
#include "OverscrollHandoffState.h"
#include "QueuedInput.h"
@@ -246,8 +245,6 @@ CancelableBlockState::RecordContentResponseTime()
// Not done yet, we'll get called again
return;
}
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::CONTENT_RESPONSE_DURATION,
- (uint32_t)(TimeStamp::Now() - mContentResponseTimer).ToMilliseconds());
mContentResponseTimer = TimeStamp();
}
diff --git a/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp b/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp
index c83b9f45c2..e469421adf 100644
--- a/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp
+++ b/gfx/layers/apz/src/PotentialCheckerboardDurationTracker.cpp
@@ -33,9 +33,7 @@ PotentialCheckerboardDurationTracker::CheckerboardDone()
MOZ_ASSERT(Tracking());
mInCheckerboard = false;
if (!Tracking()) {
- mozilla::Telemetry::AccumulateTimeDelta(
- mozilla::Telemetry::CHECKERBOARD_POTENTIAL_DURATION,
- mCurrentPeriodStart);
+ /* Telemetry STUB */
}
}
@@ -63,9 +61,7 @@ PotentialCheckerboardDurationTracker::InTransform(bool aInTransform)
// would have taken the other !Tracking branch above. If it's false now,
// it means we just stopped tracking, so we are ending a potential
// checkerboard period.
- mozilla::Telemetry::AccumulateTimeDelta(
- mozilla::Telemetry::CHECKERBOARD_POTENTIAL_DURATION,
- mCurrentPeriodStart);
+ /* Telemetry STUB */
}
}
diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp
index e4a2ffd869..b342f1d184 100644
--- a/gfx/layers/composite/TextureHost.cpp
+++ b/gfx/layers/composite/TextureHost.cpp
@@ -890,7 +890,8 @@ BufferTextureHost::Upload(nsIntRegion *aRegion)
mFirstSource = mCompositor->CreateDataTextureSource(mFlags|TextureFlags::RGB_FROM_YCBCR);
mFirstSource->SetOwner(this);
}
- return mFirstSource->Update(surf, aRegion);
+ mFirstSource->Update(surf, aRegion);
+ return true;
}
RefPtr<DataTextureSource> srcY;
diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp
index bf510cd465..e31c6ceb65 100644
--- a/gfx/layers/ipc/CompositorBridgeParent.cpp
+++ b/gfx/layers/ipc/CompositorBridgeParent.cpp
@@ -484,8 +484,6 @@ CompositorVsyncScheduler::Composite(TimeStamp aVsyncTimestamp)
mVsyncNotificationsSkipped = 0;
TimeDuration compositeFrameTotal = TimeStamp::Now() - aVsyncTimestamp;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::COMPOSITE_FRAME_ROUNDTRIP_TIME,
- compositeFrameTotal.ToMilliseconds());
} else if (mVsyncNotificationsSkipped++ > gfxPrefs::CompositorUnobserveCount()) {
UnobserveVsync();
}
@@ -1305,7 +1303,6 @@ CompositorBridgeParent::CompositeToTarget(DrawTarget* aTarget, const gfx::IntRec
}
mCompositor->SetCompositionTime(TimeStamp());
- mozilla::Telemetry::AccumulateTimeDelta(mozilla::Telemetry::COMPOSITE_TIME, start);
profiler_tracing("Paint", "Composite", TRACING_INTERVAL_END);
}
@@ -1660,19 +1657,6 @@ CompositorBridgeParent::NewCompositor(const nsTArray<LayersBackend>& aBackendHin
failureReason = "SUCCESS";
}
- // should only report success here
- if (aBackendHints[i] == LayersBackend::LAYERS_OPENGL){
- Telemetry::Accumulate(Telemetry::OPENGL_COMPOSITING_FAILURE_ID, failureReason);
- }
-#ifdef XP_WIN
- else if (aBackendHints[i] == LayersBackend::LAYERS_D3D9){
- Telemetry::Accumulate(Telemetry::D3D9_COMPOSITING_FAILURE_ID, failureReason);
- }
- else if (aBackendHints[i] == LayersBackend::LAYERS_D3D11){
- Telemetry::Accumulate(Telemetry::D3D11_COMPOSITING_FAILURE_ID, failureReason);
- }
-#endif
-
compositor->SetCompositorID(mCompositorID);
return compositor;
}
@@ -1681,18 +1665,15 @@ CompositorBridgeParent::NewCompositor(const nsTArray<LayersBackend>& aBackendHin
if (aBackendHints[i] == LayersBackend::LAYERS_OPENGL){
gfxCriticalNote << "[OPENGL] Failed to init compositor with reason: "
<< failureReason.get();
- Telemetry::Accumulate(Telemetry::OPENGL_COMPOSITING_FAILURE_ID, failureReason);
}
#ifdef XP_WIN
else if (aBackendHints[i] == LayersBackend::LAYERS_D3D9){
gfxCriticalNote << "[D3D9] Failed to init compositor with reason: "
<< failureReason.get();
- Telemetry::Accumulate(Telemetry::D3D9_COMPOSITING_FAILURE_ID, failureReason);
}
else if (aBackendHints[i] == LayersBackend::LAYERS_D3D11){
gfxCriticalNote << "[D3D11] Failed to init compositor with reason: "
<< failureReason.get();
- Telemetry::Accumulate(Telemetry::D3D11_COMPOSITING_FAILURE_ID, failureReason);
}
#endif
}
diff --git a/gfx/layers/opengl/TextureHostOGL.cpp b/gfx/layers/opengl/TextureHostOGL.cpp
index ec6ba91312..02c398b51f 100644
--- a/gfx/layers/opengl/TextureHostOGL.cpp
+++ b/gfx/layers/opengl/TextureHostOGL.cpp
@@ -161,7 +161,9 @@ TextureImageTextureSourceOGL::Update(gfx::DataSourceSurface* aSurface,
}
}
- return mTexImage->UpdateFromDataSource(aSurface, aDestRegion, aSrcOffset);
+ mTexImage->UpdateFromDataSource(aSurface, aDestRegion, aSrcOffset);
+
+ return true;
}
void
diff --git a/gfx/src/DriverCrashGuard.cpp b/gfx/src/DriverCrashGuard.cpp
index 4754c26adf..fd616575bd 100644
--- a/gfx/src/DriverCrashGuard.cpp
+++ b/gfx/src/DriverCrashGuard.cpp
@@ -11,7 +11,6 @@
#include "nsString.h"
#include "nsXULAppAPI.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Services.h"
#include "mozilla/gfx/Logging.h"
#include "mozilla/dom/ContentChild.h"
@@ -469,20 +468,7 @@ D3D11LayersCrashGuard::LogFeatureDisabled()
void
D3D11LayersCrashGuard::RecordTelemetry(TelemetryState aState)
{
- // D3D11LayersCrashGuard is a no-op in the child process.
- if (!XRE_IsParentProcess()) {
- return;
- }
-
- // Since we instantiate this class more than once, make sure we only record
- // the first state (since that is really all we care about).
- static bool sTelemetryStateRecorded = false;
- if (sTelemetryStateRecorded) {
- return;
- }
-
- Telemetry::Accumulate(Telemetry::GRAPHICS_DRIVER_STARTUP_TEST, int32_t(aState));
- sTelemetryStateRecorded = true;
+ /* STUB */
}
D3D9VideoCrashGuard::D3D9VideoCrashGuard(dom::ContentParent* aContentParent)
diff --git a/gfx/thebes/DeviceManagerDx.cpp b/gfx/thebes/DeviceManagerDx.cpp
index 2f2693c76f..e1cfc5763f 100644
--- a/gfx/thebes/DeviceManagerDx.cpp
+++ b/gfx/thebes/DeviceManagerDx.cpp
@@ -10,7 +10,6 @@
#include "gfxPrefs.h"
#include "gfxWindowsPlatform.h"
#include "mozilla/D3DMessageUtils.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/WindowsVersion.h"
#include "mozilla/gfx/GraphicsMessages.h"
#include "mozilla/gfx/Logging.h"
@@ -589,10 +588,6 @@ DeviceManagerDx::MaybeResetAndReacquireDevices()
return false;
}
- if (resetReason != DeviceResetReason::FORCED_RESET) {
- Telemetry::Accumulate(Telemetry::DEVICE_RESET_REASON, uint32_t(resetReason));
- }
-
bool createCompositorDevice = !!mCompositorDevice;
bool createContentDevice = !!mContentDevice;
@@ -724,7 +719,6 @@ DeviceManagerDx::GetAnyDeviceRemovedReason(DeviceResetReason* aOutReason)
void
DeviceManagerDx::ForceDeviceReset(ForcedDeviceResetReason aReason)
{
- Telemetry::Accumulate(Telemetry::FORCED_DEVICE_RESET_REASON, uint32_t(aReason));
{
MutexAutoLock lock(mDeviceLock);
mDeviceResetReason = Some(DeviceResetReason::FORCED_RESET);
diff --git a/gfx/thebes/gfxDWriteFontList.cpp b/gfx/thebes/gfxDWriteFontList.cpp
index d159fddb1e..5cc1fbb92b 100644
--- a/gfx/thebes/gfxDWriteFontList.cpp
+++ b/gfx/thebes/gfxDWriteFontList.cpp
@@ -14,7 +14,6 @@
#include "nsCharSeparatedTokenizer.h"
#include "mozilla/Preferences.h"
#include "mozilla/Sprintf.h"
-#include "mozilla/Telemetry.h"
#include "nsDirectoryServiceUtils.h"
#include "nsDirectoryServiceDefs.h"
#include "nsAppDirectoryServiceDefs.h"
@@ -864,8 +863,6 @@ gfxDWriteFontList::InitFontListForPlatform()
hr = gfxWindowsPlatform::GetPlatform()->GetDWriteFactory()->
GetGdiInterop(getter_AddRefs(mGDIInterop));
if (FAILED(hr)) {
- Telemetry::Accumulate(Telemetry::DWRITEFONT_INIT_PROBLEM,
- uint32_t(errGDIInterop));
return NS_ERROR_FAILURE;
}
@@ -878,8 +875,6 @@ gfxDWriteFontList::InitFontListForPlatform()
NS_ASSERTION(SUCCEEDED(hr), "GetSystemFontCollection failed!");
if (FAILED(hr)) {
- Telemetry::Accumulate(Telemetry::DWRITEFONT_INIT_PROBLEM,
- uint32_t(errSystemFontCollection));
return NS_ERROR_FAILURE;
}
@@ -891,8 +886,6 @@ gfxDWriteFontList::InitFontListForPlatform()
NS_ASSERTION(mFontFamilies.Count() != 0,
"no fonts found in the system fontlist -- holy crap batman!");
if (mFontFamilies.Count() == 0) {
- Telemetry::Accumulate(Telemetry::DWRITEFONT_INIT_PROBLEM,
- uint32_t(errNoFonts));
return NS_ERROR_FAILURE;
}
@@ -1001,9 +994,6 @@ gfxDWriteFontList::InitFontListForPlatform()
}
elapsedTime = (t5.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart;
- Telemetry::Accumulate(Telemetry::DWRITEFONT_DELAYEDINITFONTLIST_TOTAL, elapsedTime);
- Telemetry::Accumulate(Telemetry::DWRITEFONT_DELAYEDINITFONTLIST_COUNT,
- mSystemFonts->GetFontFamilyCount());
LOG_FONTINIT((
"(fontinit) Total time in InitFontList: %9.3f ms (families: %d, %s)\n",
elapsedTime, mSystemFonts->GetFontFamilyCount(),
@@ -1013,7 +1003,6 @@ gfxDWriteFontList::InitFontListForPlatform()
LOG_FONTINIT(("(fontinit) --- base/interop obj initialization init: %9.3f ms\n", elapsedTime));
elapsedTime = (t3.QuadPart - t2.QuadPart) * 1000.0 / frequency.QuadPart;
- Telemetry::Accumulate(Telemetry::DWRITEFONT_DELAYEDINITFONTLIST_COLLECT, elapsedTime);
LOG_FONTINIT(("(fontinit) --- GetSystemFontCollection: %9.3f ms\n", elapsedTime));
elapsedTime = (t4.QuadPart - t3.QuadPart) * 1000.0 / frequency.QuadPart;
@@ -1455,7 +1444,6 @@ gfxDWriteFontList::PlatformGlobalFontFallback(const uint32_t aCh,
*aMatchedFamily = family;
return fontEntry;
}
- Telemetry::Accumulate(Telemetry::BAD_FALLBACK_FONT, true);
}
return nullptr;
diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp
index d0b747fff1..8ccd721f84 100644
--- a/gfx/thebes/gfxFont.cpp
+++ b/gfx/thebes/gfxFont.cpp
@@ -229,7 +229,6 @@ gfxFontCache::Lookup(const gfxFontEntry* aFontEntry,
Key key(aFontEntry, aStyle, aUnicodeRangeMap);
HashEntry *entry = mFonts.GetEntry(key);
- Telemetry::Accumulate(Telemetry::FONT_CACHE_HIT, entry != nullptr);
if (!entry)
return nullptr;
@@ -2578,9 +2577,6 @@ gfxFont::GetShapedWord(DrawTarget *aDrawTarget,
if (sw) {
sw->ResetAge();
- Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_HITS_CONTENT :
- Telemetry::WORD_CACHE_HITS_CHROME),
- aLength);
#ifndef RELEASE_OR_BETA
if (aTextPerf) {
aTextPerf->current.wordCacheHit++;
@@ -2589,9 +2585,6 @@ gfxFont::GetShapedWord(DrawTarget *aDrawTarget,
return sw;
}
- Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_MISSES_CONTENT :
- Telemetry::WORD_CACHE_MISSES_CHROME),
- aLength);
#ifndef RELEASE_OR_BETA
if (aTextPerf) {
aTextPerf->current.wordCacheMiss++;
diff --git a/gfx/thebes/gfxGDIFontList.cpp b/gfx/thebes/gfxGDIFontList.cpp
index cc047ef38c..f65334fe64 100644
--- a/gfx/thebes/gfxGDIFontList.cpp
+++ b/gfx/thebes/gfxGDIFontList.cpp
@@ -637,8 +637,6 @@ gfxGDIFontList::GetFontSubstitutes()
nsresult
gfxGDIFontList::InitFontListForPlatform()
{
- Telemetry::AutoTimer<Telemetry::GDI_INITFONTLIST_TOTAL> timer;
-
mFontSubstitutes.Clear();
mNonExistingFonts.Clear();
diff --git a/gfx/thebes/gfxGradientCache.cpp b/gfx/thebes/gfxGradientCache.cpp
index fa25bd78c8..bfa82685c3 100644
--- a/gfx/thebes/gfxGradientCache.cpp
+++ b/gfx/thebes/gfxGradientCache.cpp
@@ -8,7 +8,6 @@
#include "PLDHashTable.h"
#include "nsExpirationTracker.h"
#include "nsClassHashtable.h"
-#include "mozilla/Telemetry.h"
#include "gfxGradientCache.h"
#include <time.h>
@@ -127,7 +126,6 @@ class GradientCache final : public nsExpirationTracker<GradientCacheData,4>
{
srand(time(nullptr));
mTimerPeriod = rand() % MAX_GENERATION_MS + 1;
- Telemetry::Accumulate(Telemetry::GRADIENT_RETENTION_TIME, mTimerPeriod);
}
virtual void NotifyExpired(GradientCacheData* aObject)
diff --git a/gfx/thebes/gfxMacPlatformFontList.mm b/gfx/thebes/gfxMacPlatformFontList.mm
index bf958a90bb..4536ab527b 100644
--- a/gfx/thebes/gfxMacPlatformFontList.mm
+++ b/gfx/thebes/gfxMacPlatformFontList.mm
@@ -65,7 +65,6 @@
#include "mozilla/MemoryReporting.h"
#include "mozilla/Preferences.h"
#include "mozilla/Sprintf.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/gfx/2D.h"
#include <unistd.h>
@@ -738,8 +737,6 @@ gfxMacPlatformFontList::InitFontListForPlatform()
{
nsAutoreleasePool localPool;
- Telemetry::AutoTimer<Telemetry::MAC_INITFONTLIST_TOTAL> timer;
-
// reset system font list
mSystemFontFamilies.Clear();
@@ -1043,10 +1040,6 @@ gfxMacPlatformFontList::PlatformGlobalFontFallback(const uint32_t aCh,
}
}
- if (cantUseFallbackFont) {
- Telemetry::Accumulate(Telemetry::BAD_FALLBACK_FONT, cantUseFallbackFont);
- }
-
::CFRelease(str);
return fontEntry;
diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
index 171d1bec91..d5af16a196 100644
--- a/gfx/thebes/gfxPlatform.cpp
+++ b/gfx/thebes/gfxPlatform.cpp
@@ -361,7 +361,6 @@ class CrashTelemetryEvent : public Runnable
NS_IMETHOD Run() override {
MOZ_ASSERT(NS_IsMainThread());
- Telemetry::Accumulate(Telemetry::GFX_CRASH, mReason);
return NS_OK;
}
@@ -374,29 +373,7 @@ NS_IMPL_ISUPPORTS_INHERITED0(CrashTelemetryEvent, Runnable);
void
CrashStatsLogForwarder::CrashAction(LogReason aReason)
{
-#ifndef RELEASE_OR_BETA
- // Non-release builds crash by default, but will use telemetry
- // if this environment variable is present.
- static bool useTelemetry = gfxEnv::GfxDevCrashTelemetry();
-#else
- // Release builds use telemetry by default, but will crash instead
- // if this environment variable is present.
- static bool useTelemetry = !gfxEnv::GfxDevCrashMozCrash();
-#endif
-
- if (useTelemetry) {
- // The callers need to assure that aReason is in the range
- // that the telemetry call below supports.
- if (NS_IsMainThread()) {
- Telemetry::Accumulate(Telemetry::GFX_CRASH, (uint32_t)aReason);
- } else {
- nsCOMPtr<nsIRunnable> r1 = new CrashTelemetryEvent((uint32_t)aReason);
- NS_DispatchToMainThread(r1);
- }
- } else {
- // ignoring aReason, we can get the information we need from the stack
- MOZ_CRASH("GFX_CRASH");
- }
+ MOZ_CRASH("GFX_CRASH");
}
NS_IMPL_ISUPPORTS(SRGBOverrideObserver, nsIObserver, nsISupportsWeakReference)
diff --git a/gfx/thebes/gfxPlatformFontList.cpp b/gfx/thebes/gfxPlatformFontList.cpp
index e12f4e1975..59df406663 100644
--- a/gfx/thebes/gfxPlatformFontList.cpp
+++ b/gfx/thebes/gfxPlatformFontList.cpp
@@ -322,8 +322,6 @@ gfxPlatformFontList::InitOtherFamilyNames()
mOtherFamilyNamesInitialized = true;
}
TimeStamp end = TimeStamp::Now();
- Telemetry::AccumulateTimeDelta(Telemetry::FONTLIST_INITOTHERFAMILYNAMES,
- start, end);
if (LOG_FONTINIT_ENABLED()) {
TimeDuration elapsed = end - start;
@@ -370,8 +368,6 @@ gfxPlatformFontList::SearchFamiliesForFaceName(const nsAString& aFaceName)
lookup = FindFaceName(aFaceName);
TimeStamp end = TimeStamp::Now();
- Telemetry::AccumulateTimeDelta(Telemetry::FONTLIST_INITFACENAMELISTS,
- start, end);
if (LOG_FONTINIT_ENABLED()) {
TimeDuration elapsed = end - start;
LOG_FONTINIT(("(fontinit) SearchFamiliesForFaceName took %8.2f ms %s %s",
@@ -587,16 +583,8 @@ gfxPlatformFontList::SystemFindFontForChar(uint32_t aCh, uint32_t aNextCh,
static bool first = true;
int32_t intElapsed = int32_t(first ? elapsed.ToMilliseconds() :
elapsed.ToMicroseconds());
- Telemetry::Accumulate((first ? Telemetry::SYSTEM_FONT_FALLBACK_FIRST :
- Telemetry::SYSTEM_FONT_FALLBACK),
- intElapsed);
first = false;
- // track the script for which fallback occurred (incremented one make it
- // 1-based)
- Telemetry::Accumulate(Telemetry::SYSTEM_FONT_FALLBACK_SCRIPT,
- int(aRunScript) + 1);
-
return fontEntry;
}
diff --git a/gfx/thebes/gfxUserFontSet.cpp b/gfx/thebes/gfxUserFontSet.cpp
index 23c26d9fed..72c54d9b5d 100644
--- a/gfx/thebes/gfxUserFontSet.cpp
+++ b/gfx/thebes/gfxUserFontSet.cpp
@@ -453,8 +453,6 @@ gfxUserFontEntry::LoadNextSrc()
gfxUserFontData::kUnknownCompression);
mPlatformFontEntry = fe;
SetLoadState(STATUS_LOADED);
- Telemetry::Accumulate(Telemetry::WEBFONT_SRCTYPE,
- currSrc.mSourceType + 1);
return;
} else {
LOG(("userfonts (%p) [src %d] failed local: (%s) for (%s)\n",
@@ -517,8 +515,6 @@ gfxUserFontEntry::LoadNextSrc()
if (NS_SUCCEEDED(rv) &&
LoadPlatformFont(buffer, bufferLength)) {
SetLoadState(STATUS_LOADED);
- Telemetry::Accumulate(Telemetry::WEBFONT_SRCTYPE,
- currSrc.mSourceType + 1);
return;
} else {
mFontSet->LogMessage(this,
@@ -572,8 +568,6 @@ gfxUserFontEntry::LoadNextSrc()
// LoadPlatformFont takes ownership of the buffer, so no need
// to free it here.
SetLoadState(STATUS_LOADED);
- Telemetry::Accumulate(Telemetry::WEBFONT_SRCTYPE,
- currSrc.mSourceType + 1);
return;
} else {
mFontSet->LogMessage(this,
@@ -617,7 +611,6 @@ gfxUserFontEntry::LoadPlatformFont(const uint8_t* aFontData, uint32_t& aLength)
gfxUserFontType fontType =
gfxFontUtils::DetermineFontDataType(aFontData, aLength);
- Telemetry::Accumulate(Telemetry::WEBFONT_FONTTYPE, uint32_t(fontType));
// Unwrap/decompress/sanitize or otherwise munge the downloaded data
// to make a usable sfnt structure.
@@ -650,13 +643,6 @@ gfxUserFontEntry::LoadPlatformFont(const uint8_t* aFontData, uint32_t& aLength)
if (saneData) {
if (saneLen) {
fontCompressionRatio = uint32_t(100.0 * aLength / saneLen + 0.5);
- if (fontType == GFX_USERFONT_WOFF ||
- fontType == GFX_USERFONT_WOFF2) {
- Telemetry::Accumulate(fontType == GFX_USERFONT_WOFF ?
- Telemetry::WEBFONT_COMPRESSION_WOFF :
- Telemetry::WEBFONT_COMPRESSION_WOFF2,
- fontCompressionRatio);
- }
}
// The sanitizer ensures that we have a valid sfnt and a usable
diff --git a/gfx/thebes/gfxWindowsPlatform.cpp b/gfx/thebes/gfxWindowsPlatform.cpp
index a988859eb9..b1ede7ad27 100755
--- a/gfx/thebes/gfxWindowsPlatform.cpp
+++ b/gfx/thebes/gfxWindowsPlatform.cpp
@@ -430,10 +430,6 @@ gfxWindowsPlatform::HandleDeviceReset()
return false;
}
- if (resetReason != DeviceResetReason::FORCED_RESET) {
- Telemetry::Accumulate(Telemetry::DEVICE_RESET_REASON, uint32_t(resetReason));
- }
-
// Remove devices and adapters.
DeviceManagerDx::Get()->ResetDevices();
@@ -1442,15 +1438,7 @@ gfxWindowsPlatform::InitializeD3D11Config()
/* static */ void
gfxWindowsPlatform::RecordContentDeviceFailure(TelemetryDeviceCode aDevice)
{
- // If the parent process fails to acquire a device, we record this
- // normally as part of the environment. The exceptional case we're
- // looking for here is when the parent process successfully acquires
- // a device, but the content process fails to acquire the same device.
- // This would not normally be displayed in about:support.
- if (!XRE_IsContentProcess()) {
- return;
- }
- Telemetry::Accumulate(Telemetry::GFX_CONTENT_FAILED_TO_ACQUIRE_DEVICE, uint32_t(aDevice));
+ /* STUB */
}
void
diff --git a/image/RasterImage.cpp b/image/RasterImage.cpp
index aad705473d..b67ec3bef4 100644
--- a/image/RasterImage.cpp
+++ b/image/RasterImage.cpp
@@ -39,8 +39,8 @@
#include "mozilla/MemoryReporting.h"
#include "mozilla/Services.h"
#include <stdint.h>
-#include "mozilla/Telemetry.h"
#include "mozilla/TimeStamp.h"
+#include "mozilla/Telemetry.h"
#include "mozilla/Tuple.h"
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/gfx/Scale.h"
@@ -104,9 +104,6 @@ RasterImage::~RasterImage()
// Release all frames from the surface cache.
SurfaceCache::RemoveImage(ImageKey(this));
-
- // Record Telemetry.
- Telemetry::Accumulate(Telemetry::IMAGE_DECODE_COUNT, mDecodeCount);
}
nsresult
@@ -1365,19 +1362,9 @@ RasterImage::Draw(gfxContext* aContext,
return DrawResult::NOT_READY;
}
- bool shouldRecordTelemetry = !mDrawStartTime.IsNull() &&
- surface->IsFinished();
-
auto result = DrawInternal(Move(surface), aContext, aSize,
aRegion, aSamplingFilter, flags);
- if (shouldRecordTelemetry) {
- TimeDuration drawLatency = TimeStamp::Now() - mDrawStartTime;
- Telemetry::Accumulate(Telemetry::IMAGE_DECODE_ON_DRAW_LATENCY,
- int32_t(drawLatency.ToMicroseconds()));
- mDrawStartTime = TimeStamp();
- }
-
return result;
}
@@ -1614,22 +1601,6 @@ RasterImage::NotifyDecodeComplete(const DecoderFinalStatus& aStatus,
mAnimationState->SetDoneDecoding(true);
}
- // Do some telemetry if this isn't a metadata decode.
- if (!aStatus.mWasMetadataDecode) {
- if (aTelemetry.mChunkCount) {
- Telemetry::Accumulate(Telemetry::IMAGE_DECODE_CHUNKS, aTelemetry.mChunkCount);
- }
-
- if (aStatus.mFinished) {
- Telemetry::Accumulate(Telemetry::IMAGE_DECODE_TIME,
- int32_t(aTelemetry.mDecodeTime.ToMicroseconds()));
-
- if (aTelemetry.mSpeedHistogram) {
- Telemetry::Accumulate(*aTelemetry.mSpeedHistogram, aTelemetry.Speed());
- }
- }
- }
-
// Only act on errors if we have no usable frames from the decoder.
if (aStatus.mHadError &&
(!mAnimationState || mAnimationState->KnownFrameCount() == 0)) {
diff --git a/image/imgFrame.cpp b/image/imgFrame.cpp
index 9c5bf9b998..5da2ccec5d 100644
--- a/image/imgFrame.cpp
+++ b/image/imgFrame.cpp
@@ -22,7 +22,6 @@
#include "mozilla/gfx/Tools.h"
#include "mozilla/Likely.h"
#include "mozilla/MemoryReporting.h"
-#include "mozilla/Telemetry.h"
#include "nsMargin.h"
#include "nsThreadUtils.h"
@@ -620,8 +619,6 @@ imgFrame::Finish(Opacity aFrameOpacity /* = Opacity::SOME_TRANSPARENCY */,
if (aFrameOpacity == Opacity::FULLY_OPAQUE) {
mHasNoAlpha = true;
- Telemetry::Accumulate(Telemetry::IMAGE_DECODE_OPAQUE_BGRA,
- mFormat == SurfaceFormat::B8G8R8A8);
}
mDisposalMethod = aDisposalMethod;
diff --git a/intl/strres/nsStringBundle.cpp b/intl/strres/nsStringBundle.cpp
index ab840a469a..717e368e2c 100644
--- a/intl/strres/nsStringBundle.cpp
+++ b/intl/strres/nsStringBundle.cpp
@@ -25,6 +25,7 @@
#include "nsIErrorService.h"
#include "nsICategoryManager.h"
#include "nsContentUtils.h"
+#include "mozilla/Preferences.h"
// for async loading
#ifdef ASYNC_LOADING
@@ -32,6 +33,9 @@
#include "nsIStringStream.h"
#endif
+#define STR_HELPER(x) #x
+#define STR(x) STR_HELPER(x)
+
using namespace mozilla;
static NS_DEFINE_CID(kErrorServiceCID, NS_ERRORSERVICE_CID);
@@ -529,6 +533,8 @@ nsStringBundleService::Init()
os->AddObserver(this, "profile-do-change", true);
os->AddObserver(this, "chrome-flush-caches", true);
os->AddObserver(this, "xpcom-category-entry-added", true);
+ os->AddObserver(this, "selected-locale-has-changed", true);
+ os->AddObserver(this, "final-ui-startup", true);
}
// instantiate the override service, if there is any.
@@ -550,6 +556,19 @@ nsStringBundleService::Observe(nsISupports* aSubject,
{
flushBundleCache();
}
+ else if (strcmp("selected-locale-has-changed", aTopic) == 0)
+ {
+ flushBundleCache();
+ notifyBundlesFlushed();
+ }
+ else if (strcmp("final-ui-startup", aTopic) == 0)
+ {
+ nsAdoptingCString ualocale = Preferences::GetCString("general.useragent.locale");
+ if (!ualocale.EqualsLiteral(STR(MOZ_UI_LOCALE))) {
+ flushBundleCache();
+ notifyBundlesFlushed();
+ }
+ }
else if (strcmp("xpcom-category-entry-added", aTopic) == 0 &&
NS_LITERAL_STRING("xpcom-autoregistration").Equals(aSomeData))
{
@@ -560,6 +579,14 @@ nsStringBundleService::Observe(nsISupports* aSubject,
}
void
+nsStringBundleService::notifyBundlesFlushed()
+{
+ nsCOMPtr<nsIObserverService> obsSvc = mozilla::services::GetObserverService();
+ NS_ASSERTION(obsSvc, "Couldn't get observer service.");
+ obsSvc->NotifyObservers(nullptr, "string-bundles-have-flushed", nullptr);
+}
+
+void
nsStringBundleService::flushBundleCache()
{
// release all bundles in the cache
diff --git a/intl/strres/nsStringBundleService.h b/intl/strres/nsStringBundleService.h
index a192cdff8c..e65c61f128 100644
--- a/intl/strres/nsStringBundleService.h
+++ b/intl/strres/nsStringBundleService.h
@@ -43,6 +43,8 @@ private:
void flushBundleCache();
+ void notifyBundlesFlushed();
+
bundleCacheEntry_t *insertIntoCache(already_AddRefed<nsIStringBundle> aBundle,
nsCString &aHashKey);
diff --git a/intl/uconv/ucvja/nsJapaneseToUnicode.h b/intl/uconv/ucvja/nsJapaneseToUnicode.h
index 8e3f207eb2..e2ea45fb68 100644
--- a/intl/uconv/ucvja/nsJapaneseToUnicode.h
+++ b/intl/uconv/ucvja/nsJapaneseToUnicode.h
@@ -83,8 +83,6 @@ public:
mGB2312Decoder = nullptr;
mEUCKRDecoder = nullptr;
mISO88597Decoder = nullptr;
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::DECODER_INSTANTIATED_ISO2022JP, true);
}
virtual ~nsISO2022JPToUnicodeV2()
{
diff --git a/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp b/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp
index 4d4b899480..08db5f65a6 100644
--- a/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsCP866ToUnicode.cpp
@@ -20,7 +20,6 @@ nsCP866ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "cp866.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_IBM866, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp b/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp
index 23395aa4e5..dae79881d4 100644
--- a/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp
@@ -20,7 +20,6 @@ nsISO88595ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "8859-5.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_ISO_8859_5, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp b/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp
index 35f77ba410..25a760a66d 100644
--- a/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsKOI8RToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsKOI8RToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "koi8r.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_KOI8R, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp b/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp
index c5d588ad6a..2dbb863777 100644
--- a/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp
@@ -20,7 +20,6 @@ nsKOI8UToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "koi8u.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_KOI8U, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp b/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp
index 1a9950df72..7ff51f868c 100644
--- a/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacArabicToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacArabicToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macarabic.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACARABIC, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp b/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp
index 458d0f53ce..4dd3eb159a 100644
--- a/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacCEToUnicode.cpp
@@ -20,7 +20,6 @@ nsMacCEToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macce.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACCE, true);
return CreateOneByteDecoder((uMappingTable*) &g_MacCEMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp b/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp
index 9799ac9ad5..a0549ee269 100644
--- a/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacCroatianToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacCroatianToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "maccroat.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACCROATIAN, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp b/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp
index edbf604fd5..0475c2a135 100644
--- a/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacCyrillicToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacCyrillicToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "maccyril.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACCYRILLIC, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp b/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp
index 3c1cae7338..630553d9c1 100644
--- a/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacDevanagariToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacDevanagariToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macdevanaga.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACDEVANAGARI, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp b/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp
index 1e7e291bad..5870533ff5 100644
--- a/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacFarsiToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacFarsiToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macfarsi.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACFARSI, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp b/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp
index 3f90811d37..64d489147a 100644
--- a/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacGreekToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacGreekToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macgreek.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACGREEK, true);
return CreateOneByteDecoder((uMappingTable*) &g_MacGreekMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp b/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp
index 21b3020f55..0d01e33e4d 100644
--- a/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp
@@ -17,7 +17,6 @@ nsMacGujaratiToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macgujarati.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACGUJARATI, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp b/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp
index d6b3a88d66..e0a59c2053 100644
--- a/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacGurmukhiToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacGurmukhiToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macgurmukhi.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACGURMUKHI, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp b/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp
index f19d82c090..d7b1f2139a 100644
--- a/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacHebrewToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacHebrewToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "machebrew.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACHEBREW, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp b/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp
index 00cff75091..2b2a3b4d00 100644
--- a/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacIcelandicToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacIcelandicToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macicela.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACICELANDIC, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp b/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp
index 96c24dea39..955610e165 100644
--- a/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacRomanianToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacRomanianToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macro.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACROMANIAN, true);
return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
aOuter, aIID, aResult);
}
diff --git a/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp b/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp
index 86d2d1ae71..c30cf94d40 100644
--- a/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp
+++ b/intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp
@@ -5,7 +5,6 @@
#include "nsUCConstructors.h"
#include "nsMacTurkishToUnicode.h"
-#include "mozilla/Telemetry.h"
using namespace mozilla;
@@ -20,7 +19,6 @@ nsMacTurkishToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
#include "macturki.ut"
};
- Telemetry::Accumulate(Telemetry::DECODER_INSTANTIATED_MACTURKISH, true);
return CreateOneByteDecoder((uMappingTable*) &g_MacTurkishMappingTable,
aOuter, aIID, aResult);
}
diff --git a/ipc/chromium/src/base/process_util_win.cc b/ipc/chromium/src/base/process_util_win.cc
index f22f7216fa..fa9b86ace9 100644
--- a/ipc/chromium/src/base/process_util_win.cc
+++ b/ipc/chromium/src/base/process_util_win.cc
@@ -298,6 +298,33 @@ bool LaunchApp(const std::wstring& cmdline,
LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList = NULL;
+ // setup our handle array first - if we end up with no handles that can
+ // be inherited we can avoid trying to do the ThreadAttributeList dance...
+ HANDLE handlesToInherit[2];
+ int handleCount = 0;
+ HANDLE stdOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
+ HANDLE stdErr = ::GetStdHandle(STD_ERROR_HANDLE);
+
+ if (IsInheritableHandle(stdOut))
+ handlesToInherit[handleCount++] = stdOut;
+ if (stdErr != stdOut && IsInheritableHandle(stdErr))
+ handlesToInherit[handleCount++] = stdErr;
+
+ if (handleCount) {
+ lpAttributeList = CreateThreadAttributeList(handlesToInherit, handleCount);
+ if (lpAttributeList) {
+ // it's safe to inherit handles, so arrange for that...
+ startup_info.cb = sizeof(startup_info_ex);
+ startup_info.dwFlags |= STARTF_USESTDHANDLES;
+ startup_info.hStdOutput = stdOut;
+ startup_info.hStdError = stdErr;
+ startup_info.hStdInput = INVALID_HANDLE_VALUE;
+ startup_info_ex.lpAttributeList = lpAttributeList;
+ dwCreationFlags |= EXTENDED_STARTUPINFO_PRESENT;
+ bInheritHandles = TRUE;
+ }
+ }
+
PROCESS_INFORMATION process_info;
BOOL createdOK = CreateProcess(NULL,
const_cast<wchar_t*>(cmdline.c_str()), NULL, NULL,
diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp
index e58408e0c6..8147e87dc2 100644
--- a/ipc/glue/GeckoChildProcessHost.cpp
+++ b/ipc/glue/GeckoChildProcessHost.cpp
@@ -32,7 +32,6 @@
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/ipc/BrowserProcessSubThread.h"
#include "mozilla/Omnijar.h"
-#include "mozilla/Telemetry.h"
#include "ProtocolUtils.h"
#include <sys/stat.h>
@@ -534,8 +533,6 @@ GeckoChildProcessHost::RunPerformAsyncLaunch(std::vector<std::string> aExtraOpts
lock.Notify();
CHROMIUM_LOG(ERROR) << "Failed to launch " <<
XRE_ChildProcessTypeToString(mProcessType) << " subprocess";
- Telemetry::Accumulate(Telemetry::SUBPROCESS_LAUNCH_FAILURE,
- nsDependentCString(XRE_ChildProcessTypeToString(mProcessType)));
}
return ok;
}
diff --git a/ipc/glue/MessageChannel.cpp b/ipc/glue/MessageChannel.cpp
index 7861f3e2d3..a988fae53c 100644
--- a/ipc/glue/MessageChannel.cpp
+++ b/ipc/glue/MessageChannel.cpp
@@ -760,11 +760,6 @@ MessageChannel::Echo(Message* aMsg)
bool
MessageChannel::Send(Message* aMsg)
{
- if (aMsg->size() >= kMinTelemetryMessageSize) {
- Telemetry::Accumulate(Telemetry::IPC_MESSAGE_SIZE,
- nsDependentCString(aMsg->name()), aMsg->size());
- }
-
MOZ_RELEASE_ASSERT(!aMsg->is_sync());
MOZ_RELEASE_ASSERT(aMsg->nested_level() != IPC::Message::NESTED_INSIDE_SYNC);
@@ -1059,11 +1054,6 @@ MessageChannel::ProcessPendingRequests(AutoEnterTransaction& aTransaction)
bool
MessageChannel::Send(Message* aMsg, Message* aReply)
{
- if (aMsg->size() >= kMinTelemetryMessageSize) {
- Telemetry::Accumulate(Telemetry::IPC_MESSAGE_SIZE,
- nsDependentCString(aMsg->name()), aMsg->size());
- }
-
nsAutoPtr<Message> msg(aMsg);
// Sanity checks.
@@ -1249,10 +1239,6 @@ MessageChannel::Send(Message* aMsg, Message* aReply)
MOZ_RELEASE_ASSERT(reply->is_sync());
*aReply = Move(*reply);
- if (aReply->size() >= kMinTelemetryMessageSize) {
- Telemetry::Accumulate(Telemetry::IPC_REPLY_SIZE,
- nsDependentCString(msgName), aReply->size());
- }
return true;
}
@@ -2546,7 +2532,6 @@ void
CancelCPOWs()
{
if (gParentProcessBlocker) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::IPC_TRANSACTION_CANCEL, true);
gParentProcessBlocker->CancelCurrentTransaction();
}
}
diff --git a/js/ipc/JavaScriptParent.cpp b/js/ipc/JavaScriptParent.cpp
index ca0a0bd214..6cf9e05911 100644
--- a/js/ipc/JavaScriptParent.cpp
+++ b/js/ipc/JavaScriptParent.cpp
@@ -15,7 +15,6 @@
#include "js/HeapAPI.h"
#include "xpcprivate.h"
#include "mozilla/Casting.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Unused.h"
#include "nsAutoPtr.h"
@@ -110,7 +109,6 @@ JavaScriptParent::allowMessage(JSContext* cx)
if (!xpc::CompartmentPrivate::Get(jsGlobal)->allowCPOWs) {
if (!addonId && ForbidUnsafeBrowserCPOWs() && !isSafe) {
- Telemetry::Accumulate(Telemetry::BROWSER_SHIM_USAGE_BLOCKED, 1);
JS_ReportErrorASCII(cx, "unsafe CPOW usage forbidden");
return false;
}
@@ -120,7 +118,6 @@ JavaScriptParent::allowMessage(JSContext* cx)
nsString addonIdString;
AssignJSFlatString(addonIdString, flat);
NS_ConvertUTF16toUTF8 addonIdCString(addonIdString);
- Telemetry::Accumulate(Telemetry::ADDON_FORBIDDEN_CPOW_USAGE, addonIdCString);
if (ForbidCPOWsInCompatibleAddon(addonIdCString)) {
JS_ReportErrorASCII(cx, "CPOW usage forbidden in this add-on");
diff --git a/js/public/HashTable.h b/js/public/HashTable.h
index 5d4c0665d7..8a2493b559 100644
--- a/js/public/HashTable.h
+++ b/js/public/HashTable.h
@@ -12,6 +12,7 @@
#include "mozilla/Attributes.h"
#include "mozilla/Casting.h"
#include "mozilla/HashFunctions.h"
+#include "mozilla/MemoryChecking.h"
#include "mozilla/MemoryReporting.h"
#include "mozilla/Move.h"
#include "mozilla/Opaque.h"
@@ -805,17 +806,22 @@ class HashTableEntry
void operator=(const HashTableEntry&) = delete;
~HashTableEntry() = delete;
+ void destroyStoredT() {
+ mem.addr()->~T();
+ MOZ_MAKE_MEM_UNDEFINED(mem.addr(), sizeof(*mem.addr()));
+ }
+
public:
// NB: HashTableEntry is treated as a POD: no constructor or destructor calls.
void destroyIfLive() {
if (isLive())
- mem.addr()->~T();
+ destroyStoredT();
}
void destroy() {
MOZ_ASSERT(isLive());
- mem.addr()->~T();
+ destroyStoredT();
}
void swap(HashTableEntry* other) {
@@ -835,10 +841,28 @@ class HashTableEntry
NonConstT& getMutable() { MOZ_ASSERT(isLive()); return *mem.addr(); }
bool isFree() const { return keyHash == sFreeKey; }
- void clearLive() { MOZ_ASSERT(isLive()); keyHash = sFreeKey; mem.addr()->~T(); }
- void clear() { if (isLive()) mem.addr()->~T(); keyHash = sFreeKey; }
+ void clearLive() {
+ MOZ_ASSERT(isLive());
+ keyHash = sFreeKey;
+ destroyStoredT();
+ }
+
+ void clear() {
+ if (isLive())
+ destroyStoredT();
+
+ MOZ_MAKE_MEM_UNDEFINED(this, sizeof(*this));
+ keyHash = sFreeKey;
+ }
+
bool isRemoved() const { return keyHash == sRemovedKey; }
- void removeLive() { MOZ_ASSERT(isLive()); keyHash = sRemovedKey; mem.addr()->~T(); }
+
+ void removeLive() {
+ MOZ_ASSERT(isLive());
+ keyHash = sRemovedKey;
+ destroyStoredT();
+ }
+
bool isLive() const { return isLiveHash(keyHash); }
void setCollision() { MOZ_ASSERT(isLive()); keyHash |= sCollisionBit; }
void unsetCollision() { keyHash &= ~sCollisionBit; }
@@ -1654,14 +1678,10 @@ class HashTable : private AllocPolicy
public:
void clear()
{
- if (mozilla::IsPod<Entry>::value) {
- memset(table, 0, sizeof(*table) * capacity());
- } else {
- uint32_t tableCapacity = capacity();
- Entry* end = table + tableCapacity;
- for (Entry* e = table; e < end; ++e)
- e->clear();
- }
+ Entry* end = table + capacity();
+ for (Entry* e = table; e < end; ++e)
+ e->clear();
+
removedCount = 0;
entryCount = 0;
#ifdef JS_DEBUG
diff --git a/js/public/MemoryMetrics.h b/js/public/MemoryMetrics.h
index 9b5caa24b7..b0b26631c6 100644
--- a/js/public/MemoryMetrics.h
+++ b/js/public/MemoryMetrics.h
@@ -37,7 +37,13 @@ struct TabSizes
Other
};
- TabSizes() { mozilla::PodZero(this); }
+ TabSizes()
+ : objects(0)
+ , strings(0)
+ , private_(0)
+ , other(0)
+ {
+ }
void add(Kind kind, size_t n) {
switch (kind) {
@@ -68,7 +74,15 @@ struct ServoSizes
Ignore
};
- ServoSizes() { mozilla::PodZero(this); }
+ ServoSizes()
+ : gcHeapUsed(0)
+ , gcHeapUnused(0)
+ , gcHeapAdmin(0)
+ , gcHeapDecommitted(0)
+ , mallocHeap(0)
+ , nonHeap(0)
+ {
+ }
void add(Kind kind, size_t n) {
switch (kind) {
diff --git a/js/src/builtin/AtomicsObject.cpp b/js/src/builtin/AtomicsObject.cpp
index 08777fd512..2551f3b7d2 100644
--- a/js/src/builtin/AtomicsObject.cpp
+++ b/js/src/builtin/AtomicsObject.cpp
@@ -789,7 +789,7 @@ js::atomics_wait(JSContext* cx, unsigned argc, Value* vp)
// and it provides the necessary memory fence.
AutoLockFutexAPI lock;
- SharedMem<int32_t*>(addr) = view->viewDataShared().cast<int32_t*>() + offset;
+ SharedMem<int32_t*> addr = view->viewDataShared().cast<int32_t*>() + offset;
if (jit::AtomicOperations::loadSafeWhenRacy(addr) != value) {
r.setString(cx->names().futexNotEqual);
return true;
diff --git a/js/src/gc/Barrier.h b/js/src/gc/Barrier.h
index effc9233ea..dce3b2a203 100644
--- a/js/src/gc/Barrier.h
+++ b/js/src/gc/Barrier.h
@@ -667,29 +667,15 @@ class HeapSlot : public WriteBarrieredBase<Value>
Element = 1
};
- explicit HeapSlot() = delete;
-
- explicit HeapSlot(NativeObject* obj, Kind kind, uint32_t slot, const Value& v)
- : WriteBarrieredBase<Value>(v)
- {
- post(obj, kind, slot, v);
- }
-
- explicit HeapSlot(NativeObject* obj, Kind kind, uint32_t slot, const HeapSlot& s)
- : WriteBarrieredBase<Value>(s.value)
- {
- post(obj, kind, slot, s);
- }
-
- ~HeapSlot() {
- pre();
- }
-
void init(NativeObject* owner, Kind kind, uint32_t slot, const Value& v) {
value = v;
post(owner, kind, slot, v);
}
+ void destroy() {
+ pre();
+ }
+
#ifdef DEBUG
bool preconditionForSet(NativeObject* owner, Kind kind, uint32_t slot) const;
bool preconditionForWriteBarrierPost(NativeObject* obj, Kind kind, uint32_t slot,
@@ -703,11 +689,6 @@ class HeapSlot : public WriteBarrieredBase<Value>
post(owner, kind, slot, v);
}
- /* For users who need to manually barrier the raw types. */
- static void writeBarrierPost(NativeObject* owner, Kind kind, uint32_t slot, const Value& target) {
- reinterpret_cast<HeapSlot*>(const_cast<Value*>(&target))->post(owner, kind, slot, target);
- }
-
private:
void post(NativeObject* owner, Kind kind, uint32_t slot, const Value& target) {
MOZ_ASSERT(preconditionForWriteBarrierPost(owner, kind, slot, target));
diff --git a/js/src/jit/MacroAssembler.cpp b/js/src/jit/MacroAssembler.cpp
index 9dbbe76242..f633b9b7b9 100644
--- a/js/src/jit/MacroAssembler.cpp
+++ b/js/src/jit/MacroAssembler.cpp
@@ -2214,12 +2214,6 @@ MacroAssembler::finish()
}
MacroAssemblerSpecific::finish();
-
- MOZ_RELEASE_ASSERT(size() <= MaxCodeBytesPerProcess,
- "AssemblerBuffer should ensure we don't exceed MaxCodeBytesPerProcess");
-
- if (bytesNeeded() > MaxCodeBytesPerProcess)
- setOOM();
}
void
diff --git a/js/src/jit/ProcessExecutableMemory.cpp b/js/src/jit/ProcessExecutableMemory.cpp
index 301541541e..71c2ab0dce 100644
--- a/js/src/jit/ProcessExecutableMemory.cpp
+++ b/js/src/jit/ProcessExecutableMemory.cpp
@@ -385,6 +385,14 @@ class PageBitSet
#endif
};
+// Limit on the number of bytes of executable memory to prevent JIT spraying
+// attacks.
+#if JS_BITS_PER_WORD == 32
+static const size_t MaxCodeBytesPerProcess = 128 * 1024 * 1024;
+#else
+static const size_t MaxCodeBytesPerProcess = 1 * 1024 * 1024 * 1024;
+#endif
+
// Per-process executable memory allocator. It reserves a block of memory of
// MaxCodeBytesPerProcess bytes, then allocates/deallocates pages from that.
//
diff --git a/js/src/jit/ProcessExecutableMemory.h b/js/src/jit/ProcessExecutableMemory.h
index a0e2fab985..078ce7cb75 100644
--- a/js/src/jit/ProcessExecutableMemory.h
+++ b/js/src/jit/ProcessExecutableMemory.h
@@ -17,14 +17,6 @@ namespace jit {
// alignment though.
static const size_t ExecutableCodePageSize = 64 * 1024;
-// Limit on the number of bytes of executable memory to prevent JIT spraying
-// attacks.
-#if JS_BITS_PER_WORD == 32
-static const size_t MaxCodeBytesPerProcess = 128 * 1024 * 1024;
-#else
-static const size_t MaxCodeBytesPerProcess = 1 * 1024 * 1024 * 1024;
-#endif
-
enum class ProtectionSetting {
Protected, // Not readable, writable, or executable.
Writable,
diff --git a/js/src/jit/shared/IonAssemblerBuffer.h b/js/src/jit/shared/IonAssemblerBuffer.h
index 3a65526968..cc20e26d21 100644
--- a/js/src/jit/shared/IonAssemblerBuffer.h
+++ b/js/src/jit/shared/IonAssemblerBuffer.h
@@ -181,10 +181,6 @@ class AssemblerBuffer
protected:
virtual Slice* newSlice(LifoAlloc& a) {
- if (size() > MaxCodeBytesPerProcess - sizeof(Slice)) {
- fail_oom();
- return nullptr;
- }
Slice* tmp = static_cast<Slice*>(a.alloc(sizeof(Slice)));
if (!tmp) {
fail_oom();
diff --git a/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h b/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
index fe678fc7db..8343579c81 100644
--- a/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
+++ b/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
@@ -68,33 +68,6 @@ namespace js {
namespace jit {
- // AllocPolicy for AssemblerBuffer. OOMs when trying to allocate more than
- // MaxCodeBytesPerProcess bytes. Use private inheritance to make sure we
- // explicitly have to expose SystemAllocPolicy methods.
- class AssemblerBufferAllocPolicy : private SystemAllocPolicy
- {
- public:
- using SystemAllocPolicy::checkSimulatedOOM;
- using SystemAllocPolicy::reportAllocOverflow;
- using SystemAllocPolicy::free_;
-
- template <typename T> T* pod_realloc(T* p, size_t oldSize, size_t newSize) {
- static_assert(sizeof(T) == 1,
- "AssemblerBufferAllocPolicy should only be used with byte vectors");
- MOZ_ASSERT(oldSize <= MaxCodeBytesPerProcess);
- if (MOZ_UNLIKELY(newSize > MaxCodeBytesPerProcess))
- return nullptr;
- return SystemAllocPolicy::pod_realloc<T>(p, oldSize, newSize);
- }
- template <typename T> T* pod_malloc(size_t numElems) {
- static_assert(sizeof(T) == 1,
- "AssemblerBufferAllocPolicy should only be used with byte vectors");
- if (MOZ_UNLIKELY(numElems > MaxCodeBytesPerProcess))
- return nullptr;
- return SystemAllocPolicy::pod_malloc<T>(numElems);
- }
- };
-
class AssemblerBuffer
{
template<size_t size, typename T>
@@ -120,10 +93,8 @@ namespace jit {
void ensureSpace(size_t space)
{
- // This should only be called with small |space| values to ensure
- // we don't overflow below.
- MOZ_ASSERT(space <= 16);
- if (MOZ_UNLIKELY(!m_buffer.reserve(m_buffer.length() + space)))
+ if (MOZ_UNLIKELY(m_buffer.length() > (SIZE_MAX - space) ||
+ !m_buffer.reserve(m_buffer.length() + space)))
oomDetected();
}
@@ -198,7 +169,7 @@ namespace jit {
m_buffer.clear();
}
- PageProtectingVector<unsigned char, 256, AssemblerBufferAllocPolicy> m_buffer;
+ PageProtectingVector<unsigned char, 256, SystemAllocPolicy> m_buffer;
bool m_oom;
};
diff --git a/js/src/vm/NativeObject.h b/js/src/vm/NativeObject.h
index d2c06eabc1..4dbc167ab6 100644
--- a/js/src/vm/NativeObject.h
+++ b/js/src/vm/NativeObject.h
@@ -876,7 +876,7 @@ class NativeObject : public ShapedObject
MOZ_ASSERT(end <= getDenseInitializedLength());
MOZ_ASSERT(!denseElementsAreCopyOnWrite());
for (size_t i = start; i < end; i++)
- elements_[i].HeapSlot::~HeapSlot();
+ elements_[i].destroy();
}
/*
@@ -885,7 +885,7 @@ class NativeObject : public ShapedObject
*/
void prepareSlotRangeForOverwrite(size_t start, size_t end) {
for (size_t i = start; i < end; i++)
- getSlotAddressUnchecked(i)->HeapSlot::~HeapSlot();
+ getSlotAddressUnchecked(i)->destroy();
}
public:
@@ -1085,7 +1085,8 @@ class NativeObject : public ShapedObject
for (uint32_t i = 0; i < count; ++i)
elements_[dstStart + i].set(this, HeapSlot::Element, dstStart + i, src[i]);
} else {
- memcpy(&elements_[dstStart], src, count * sizeof(HeapSlot));
+ memcpy(reinterpret_cast<Value*>(&elements_[dstStart]), src,
+ count * sizeof(Value));
elementsRangeWriteBarrierPost(dstStart, count);
}
}
@@ -1094,7 +1095,7 @@ class NativeObject : public ShapedObject
MOZ_ASSERT(dstStart + count <= getDenseCapacity());
MOZ_ASSERT(!denseElementsAreCopyOnWrite());
MOZ_ASSERT(!denseElementsAreFrozen());
- memcpy(&elements_[dstStart], src, count * sizeof(HeapSlot));
+ memcpy(reinterpret_cast<Value*>(&elements_[dstStart]), src, count * sizeof(Value));
elementsRangeWriteBarrierPost(dstStart, count);
}
@@ -1142,7 +1143,7 @@ class NativeObject : public ShapedObject
MOZ_ASSERT(!denseElementsAreCopyOnWrite());
MOZ_ASSERT(!denseElementsAreFrozen());
- memmove(elements_ + dstStart, elements_ + srcStart, count * sizeof(Value));
+ memmove(elements_ + dstStart, elements_ + srcStart, count * sizeof(HeapSlot));
elementsRangeWriteBarrierPost(dstStart, count);
}
diff --git a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp
index f352607d4c..82af645209 100644
--- a/js/xpconnect/src/XPCJSContext.cpp
+++ b/js/xpconnect/src/XPCJSContext.cpp
@@ -28,7 +28,6 @@
#include "nsPIDOMWindow.h"
#include "nsPrintfCString.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Services.h"
#include "mozilla/dom/ScriptSettings.h"
@@ -135,8 +134,6 @@ public:
{
TimeStamp start = TimeStamp::Now();
bool hadSnowWhiteObjects = nsCycleCollector_doDeferredDeletion();
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_ASYNC_SNOW_WHITE_FREEING,
- uint32_t((TimeStamp::Now() - start).ToMilliseconds()));
if (hadSnowWhiteObjects && !mContinuation) {
mContinuation = true;
if (NS_FAILED(NS_DispatchToCurrentThread(this))) {
@@ -1317,7 +1314,6 @@ XPCJSContext::InterruptCallback(JSContext* cx)
// Accumulate slow script invokation delay.
if (!chrome && !self->mTimeoutAccumulated) {
uint32_t delay = uint32_t(self->mSlowScriptActualWait.ToMilliseconds() - (limit * 1000.0));
- Telemetry::Accumulate(Telemetry::SLOW_SCRIPT_NOTIFY_DELAY, delay);
self->mTimeoutAccumulated = true;
}
@@ -2955,100 +2951,7 @@ JSSizeOfTab(JSObject* objArg, size_t* jsObjectsSize, size_t* jsStringsSize,
static void
AccumulateTelemetryCallback(int id, uint32_t sample, const char* key)
{
- switch (id) {
- case JS_TELEMETRY_GC_REASON:
- Telemetry::Accumulate(Telemetry::GC_REASON_2, sample);
- break;
- case JS_TELEMETRY_GC_IS_ZONE_GC:
- Telemetry::Accumulate(Telemetry::GC_IS_COMPARTMENTAL, sample);
- break;
- case JS_TELEMETRY_GC_MS:
- Telemetry::Accumulate(Telemetry::GC_MS, sample);
- break;
- case JS_TELEMETRY_GC_BUDGET_MS:
- Telemetry::Accumulate(Telemetry::GC_BUDGET_MS, sample);
- break;
- case JS_TELEMETRY_GC_ANIMATION_MS:
- Telemetry::Accumulate(Telemetry::GC_ANIMATION_MS, sample);
- break;
- case JS_TELEMETRY_GC_MAX_PAUSE_MS:
- Telemetry::Accumulate(Telemetry::GC_MAX_PAUSE_MS, sample);
- break;
- case JS_TELEMETRY_GC_MARK_MS:
- Telemetry::Accumulate(Telemetry::GC_MARK_MS, sample);
- break;
- case JS_TELEMETRY_GC_SWEEP_MS:
- Telemetry::Accumulate(Telemetry::GC_SWEEP_MS, sample);
- break;
- case JS_TELEMETRY_GC_COMPACT_MS:
- Telemetry::Accumulate(Telemetry::GC_COMPACT_MS, sample);
- break;
- case JS_TELEMETRY_GC_MARK_ROOTS_MS:
- Telemetry::Accumulate(Telemetry::GC_MARK_ROOTS_MS, sample);
- break;
- case JS_TELEMETRY_GC_MARK_GRAY_MS:
- Telemetry::Accumulate(Telemetry::GC_MARK_GRAY_MS, sample);
- break;
- case JS_TELEMETRY_GC_SLICE_MS:
- Telemetry::Accumulate(Telemetry::GC_SLICE_MS, sample);
- break;
- case JS_TELEMETRY_GC_SLOW_PHASE:
- Telemetry::Accumulate(Telemetry::GC_SLOW_PHASE, sample);
- break;
- case JS_TELEMETRY_GC_MMU_50:
- Telemetry::Accumulate(Telemetry::GC_MMU_50, sample);
- break;
- case JS_TELEMETRY_GC_RESET:
- Telemetry::Accumulate(Telemetry::GC_RESET, sample);
- break;
- case JS_TELEMETRY_GC_RESET_REASON:
- Telemetry::Accumulate(Telemetry::GC_RESET_REASON, sample);
- break;
- case JS_TELEMETRY_GC_INCREMENTAL_DISABLED:
- Telemetry::Accumulate(Telemetry::GC_INCREMENTAL_DISABLED, sample);
- break;
- case JS_TELEMETRY_GC_NON_INCREMENTAL:
- Telemetry::Accumulate(Telemetry::GC_NON_INCREMENTAL, sample);
- break;
- case JS_TELEMETRY_GC_NON_INCREMENTAL_REASON:
- Telemetry::Accumulate(Telemetry::GC_NON_INCREMENTAL_REASON, sample);
- break;
- case JS_TELEMETRY_GC_SCC_SWEEP_TOTAL_MS:
- Telemetry::Accumulate(Telemetry::GC_SCC_SWEEP_TOTAL_MS, sample);
- break;
- case JS_TELEMETRY_GC_SCC_SWEEP_MAX_PAUSE_MS:
- Telemetry::Accumulate(Telemetry::GC_SCC_SWEEP_MAX_PAUSE_MS, sample);
- break;
- case JS_TELEMETRY_GC_MINOR_REASON:
- Telemetry::Accumulate(Telemetry::GC_MINOR_REASON, sample);
- break;
- case JS_TELEMETRY_GC_MINOR_REASON_LONG:
- Telemetry::Accumulate(Telemetry::GC_MINOR_REASON_LONG, sample);
- break;
- case JS_TELEMETRY_GC_MINOR_US:
- Telemetry::Accumulate(Telemetry::GC_MINOR_US, sample);
- break;
- case JS_TELEMETRY_GC_NURSERY_BYTES:
- Telemetry::Accumulate(Telemetry::GC_NURSERY_BYTES, sample);
- break;
- case JS_TELEMETRY_GC_PRETENURE_COUNT:
- Telemetry::Accumulate(Telemetry::GC_PRETENURE_COUNT, sample);
- break;
- case JS_TELEMETRY_DEPRECATED_LANGUAGE_EXTENSIONS_IN_CONTENT:
- Telemetry::Accumulate(Telemetry::JS_DEPRECATED_LANGUAGE_EXTENSIONS_IN_CONTENT, sample);
- break;
- case JS_TELEMETRY_DEPRECATED_LANGUAGE_EXTENSIONS_IN_ADDONS:
- Telemetry::Accumulate(Telemetry::JS_DEPRECATED_LANGUAGE_EXTENSIONS_IN_ADDONS, sample);
- break;
- case JS_TELEMETRY_ADDON_EXCEPTIONS:
- Telemetry::Accumulate(Telemetry::JS_TELEMETRY_ADDON_EXCEPTIONS, nsDependentCString(key), sample);
- break;
- case JS_TELEMETRY_AOT_USAGE:
- Telemetry::Accumulate(Telemetry::JS_AOT_USAGE, sample);
- break;
- default:
- MOZ_ASSERT_UNREACHABLE("Unexpected JS_TELEMETRY id");
- }
+/* STUB */
}
static void
diff --git a/layout/base/nsArenaMemoryStats.h b/layout/base/nsArenaMemoryStats.h
index ba09baaa42..2a872cfe83 100644
--- a/layout/base/nsArenaMemoryStats.h
+++ b/layout/base/nsArenaMemoryStats.h
@@ -18,7 +18,12 @@ public:
Other // Everything else.
};
- nsTabSizes() { mozilla::PodZero(this); }
+ nsTabSizes()
+ : mDom(0)
+ , mStyle(0)
+ , mOther(0)
+ {
+ }
void add(Kind kind, size_t n)
{
diff --git a/layout/base/nsCSSRendering.cpp b/layout/base/nsCSSRendering.cpp
index 054632ad79..71ebfad224 100644
--- a/layout/base/nsCSSRendering.cpp
+++ b/layout/base/nsCSSRendering.cpp
@@ -2516,7 +2516,6 @@ nsCSSRendering::PaintGradient(nsPresContext* aPresContext,
PROFILER_LABEL("nsCSSRendering", "PaintGradient",
js::ProfileEntry::Category::GRAPHICS);
- Telemetry::AutoTimer<Telemetry::GRADIENT_DURATION, Telemetry::Microsecond> gradientTimer;
if (aDest.IsEmpty() || aFillArea.IsEmpty()) {
return;
}
diff --git a/layout/base/nsDisplayList.cpp b/layout/base/nsDisplayList.cpp
index cb55bb2da0..2bf20144a1 100644
--- a/layout/base/nsDisplayList.cpp
+++ b/layout/base/nsDisplayList.cpp
@@ -7491,9 +7491,6 @@ PaintTelemetry::AutoRecordPaint::~AutoRecordPaint()
double totalMs = (TimeStamp::Now() - mStart).ToMilliseconds();
- // Record the total time.
- Telemetry::Accumulate(Telemetry::CONTENT_PAINT_TIME, static_cast<uint32_t>(totalMs));
-
// If the total time was >= 16ms, then it's likely we missed a frame due to
// painting. In this case we'll gather some detailed metrics below.
if (totalMs <= 16.0) {
@@ -7504,9 +7501,6 @@ PaintTelemetry::AutoRecordPaint::~AutoRecordPaint()
MOZ_ASSERT(aDurationMs <= totalMs);
uint32_t amount = static_cast<int32_t>((aDurationMs / totalMs) * 100.0);
-
- nsDependentCString key(aKey);
- Telemetry::Accumulate(Telemetry::CONTENT_LARGE_PAINT_PHASE_WEIGHT, key, amount);
};
double dlMs = sMetrics[Metric::DisplayList];
diff --git a/layout/base/nsDocumentViewer.cpp b/layout/base/nsDocumentViewer.cpp
index 7b87349282..5478c61b00 100644
--- a/layout/base/nsDocumentViewer.cpp
+++ b/layout/base/nsDocumentViewer.cpp
@@ -1206,11 +1206,8 @@ nsDocumentViewer::PermitUnloadInternal(bool *aShouldPrompt,
nsIDocument::PageUnloadingEventTimeStamp timestamp(mDocument);
mInPermitUnload = true;
- {
- Telemetry::AutoTimer<Telemetry::HANDLE_BEFOREUNLOAD_MS> telemetryTimer;
- EventDispatcher::DispatchDOMEvent(window, nullptr, event, mPresContext,
+ EventDispatcher::DispatchDOMEvent(window, nullptr, event, mPresContext,
nullptr);
- }
mInPermitUnload = false;
}
@@ -1275,7 +1272,6 @@ nsDocumentViewer::PermitUnloadInternal(bool *aShouldPrompt,
nsAutoSyncOperation sync(mDocument);
mInPermitUnloadPrompt = true;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::ONBEFOREUNLOAD_PROMPT_COUNT, 1);
rv = prompt->ConfirmEx(title, message, buttonFlags,
leaveLabel, stayLabel, nullptr, nullptr,
&dummy, &buttonPressed);
@@ -1290,15 +1286,12 @@ nsDocumentViewer::PermitUnloadInternal(bool *aShouldPrompt,
// XXX: Are there other cases where prompts can abort? Is it ok to
// prevent unloading the page in those cases?
if (NS_FAILED(rv)) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::ONBEFOREUNLOAD_PROMPT_ACTION, 2);
*aPermitUnload = false;
return NS_OK;
}
// Button 0 == leave, button 1 == stay
*aPermitUnload = (buttonPressed == 0);
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::ONBEFOREUNLOAD_PROMPT_ACTION,
- (*aPermitUnload ? 1 : 0));
// If the user decided to go ahead, make sure not to prompt the user again
// by toggling the internal prompting bool to false:
if (*aPermitUnload) {
@@ -1393,10 +1386,7 @@ nsDocumentViewer::PageHide(bool aIsUnload)
nsIDocument::PageUnloadingEventTimeStamp timestamp(mDocument);
- {
- Telemetry::AutoTimer<Telemetry::HANDLE_UNLOAD_MS> telemetryTimer;
- EventDispatcher::Dispatch(window, mPresContext, &event, nullptr, &status);
- }
+ EventDispatcher::Dispatch(window, mPresContext, &event, nullptr, &status);
}
#ifdef MOZ_XUL
diff --git a/layout/base/nsLayoutUtils.cpp b/layout/base/nsLayoutUtils.cpp
index 062fbfe158..d0f790a0be 100644
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -3569,8 +3569,6 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram
}
builder.LeavePresShell(aFrame, &list);
- Telemetry::AccumulateTimeDelta(Telemetry::PAINT_BUILD_DISPLAYLIST_TIME,
- startBuildDisplayList);
bool profilerNeedsDisplayList = profiler_feature_active("displaylistdump");
bool consoleNeedsDisplayList = gfxUtils::DumpDisplayList() || gfxEnv::DumpPaint();
@@ -3651,8 +3649,6 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram
TimeStamp paintStart = TimeStamp::Now();
RefPtr<LayerManager> layerManager
= list.PaintRoot(&builder, aRenderingContext, flags);
- Telemetry::AccumulateTimeDelta(Telemetry::PAINT_RASTERIZE_TIME,
- paintStart);
if (gfxPrefs::GfxLoggingPaintedPixelCountEnabled()) {
TimeStamp now = TimeStamp::Now();
diff --git a/layout/base/nsPresShell.cpp b/layout/base/nsPresShell.cpp
index 3e5320c220..88539dc4a5 100644
--- a/layout/base/nsPresShell.cpp
+++ b/layout/base/nsPresShell.cpp
@@ -1114,17 +1114,6 @@ PresShell::Destroy()
if (mPresContext) {
const bool mayFlushUserFontSet = false;
gfxUserFontSet* fs = mPresContext->GetUserFontSet(mayFlushUserFontSet);
- if (fs) {
- uint32_t fontCount;
- uint64_t fontSize;
- fs->GetLoadStatistics(fontCount, fontSize);
- Telemetry::Accumulate(Telemetry::WEBFONT_PER_PAGE, fontCount);
- Telemetry::Accumulate(Telemetry::WEBFONT_SIZE_PER_PAGE,
- uint32_t(fontSize/1024));
- } else {
- Telemetry::Accumulate(Telemetry::WEBFONT_PER_PAGE, 0);
- Telemetry::Accumulate(Telemetry::WEBFONT_SIZE_PER_PAGE, 0);
- }
}
#ifdef MOZ_REFLOW_PERF
@@ -2276,8 +2265,6 @@ PresShell::ScrollPage(bool aForward)
nsIScrollableFrame* scrollFrame =
GetFrameToScrollAsScrollable(nsIPresShell::eVertical);
if (scrollFrame) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollPage);
scrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1),
nsIScrollableFrame::PAGES,
nsIScrollableFrame::SMOOTH,
@@ -2294,9 +2281,6 @@ PresShell::ScrollLine(bool aForward)
nsIScrollableFrame* scrollFrame =
GetFrameToScrollAsScrollable(nsIPresShell::eVertical);
if (scrollFrame) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollLine);
-
int32_t lineCount = Preferences::GetInt("toolkit.scrollbox.verticalScrollDistance",
NS_DEFAULT_VERTICAL_SCROLL_DISTANCE);
scrollFrame->ScrollBy(nsIntPoint(0, aForward ? lineCount : -lineCount),
@@ -2315,8 +2299,6 @@ PresShell::ScrollCharacter(bool aRight)
nsIScrollableFrame* scrollFrame =
GetFrameToScrollAsScrollable(nsIPresShell::eHorizontal);
if (scrollFrame) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollCharacter);
int32_t h = Preferences::GetInt("toolkit.scrollbox.horizontalScrollDistance",
NS_DEFAULT_HORIZONTAL_SCROLL_DISTANCE);
scrollFrame->ScrollBy(nsIntPoint(aRight ? h : -h, 0),
@@ -2335,8 +2317,6 @@ PresShell::CompleteScroll(bool aForward)
nsIScrollableFrame* scrollFrame =
GetFrameToScrollAsScrollable(nsIPresShell::eVertical);
if (scrollFrame) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadCompleteScroll);
scrollFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1),
nsIScrollableFrame::WHOLE,
nsIScrollableFrame::SMOOTH,
@@ -8231,16 +8211,6 @@ PresShell::HandleEventInternal(WidgetEvent* aEvent,
}
}
- if (Telemetry::CanRecordBase() &&
- !aEvent->mTimeStamp.IsNull() &&
- aEvent->AsInputEvent()) {
- double millis = (TimeStamp::Now() - aEvent->mTimeStamp).ToMilliseconds();
- Telemetry::Accumulate(Telemetry::INPUT_EVENT_RESPONSE_MS, millis);
- if (mDocument && mDocument->GetReadyStateEnum() != nsIDocument::READYSTATE_COMPLETE) {
- Telemetry::Accumulate(Telemetry::LOAD_INPUT_EVENT_RESPONSE_MS, millis);
- }
- }
-
return rv;
}
@@ -9522,16 +9492,6 @@ PresShell::ProcessReflowCommands(bool aInterruptible)
UnsuppressAndInvalidate();
}
- if (mDocument->GetRootElement()) {
- TimeDuration elapsed = TimeStamp::Now() - timerStart;
- int32_t intElapsed = int32_t(elapsed.ToMilliseconds());
-
- if (intElapsed > NS_LONG_REFLOW_TIME_MS) {
- Telemetry::Accumulate(Telemetry::LONG_REFLOW_INTERRUPTIBLE,
- aInterruptible ? 1 : 0);
- }
- }
-
return !interrupted;
}
diff --git a/layout/base/nsRefreshDriver.cpp b/layout/base/nsRefreshDriver.cpp
index 6676bea977..bc1a27852b 100644
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -526,10 +526,6 @@ private:
if (XRE_IsParentProcess()) {
TimeDuration vsyncLatency = TimeStamp::Now() - aVsyncTimestamp;
uint32_t sample = (uint32_t)vsyncLatency.ToMilliseconds();
- Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_CHROME_FRAME_DELAY_MS,
- sample);
- Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_SYNC_SCROLL_FRAME_DELAY_MS,
- sample);
RecordJank(sample);
} else if (mVsyncRate != TimeDuration::Forever()) {
TimeDuration contentDelay = (TimeStamp::Now() - mLastChildTick) - mVsyncRate;
@@ -539,10 +535,6 @@ private:
contentDelay = TimeDuration::FromMilliseconds(0);
}
uint32_t sample = (uint32_t)contentDelay.ToMilliseconds();
- Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_CONTENT_FRAME_DELAY_MS,
- sample);
- Telemetry::Accumulate(Telemetry::FX_REFRESH_DRIVER_SYNC_SCROLL_FRAME_DELAY_MS,
- sample);
RecordJank(sample);
} else {
// Request the vsync rate from the parent process. Might be a few vsyncs
@@ -2027,10 +2019,6 @@ nsRefreshDriver::Tick(int64_t aNowEpoch, TimeStamp aNowTime)
notifyGC = true;
}
-#ifndef ANDROID /* bug 1142079 */
- mozilla::Telemetry::AccumulateTimeDelta(mozilla::Telemetry::REFRESH_DRIVER_TICK, mTickStart);
-#endif
-
nsTObserverArray<nsAPostRefreshObserver*>::ForwardIterator iter(mPostRefreshObservers);
while (iter.HasMore()) {
nsAPostRefreshObserver* observer = iter.GetNext();
diff --git a/layout/forms/nsNumberControlFrame.cpp b/layout/forms/nsNumberControlFrame.cpp
index 74dec2bea8..9724109cb1 100644
--- a/layout/forms/nsNumberControlFrame.cpp
+++ b/layout/forms/nsNumberControlFrame.cpp
@@ -430,6 +430,8 @@ nsNumberControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
nsContentUtils::AddScriptRunner(focusJob);
}
+ SyncDisabledState();
+
if (StyleDisplay()->mAppearance == NS_THEME_TEXTFIELD) {
// The author has elected to hide the spinner by setting this
// -moz-appearance. We will reframe if it changes.
@@ -461,8 +463,6 @@ nsNumberControlFrame::CreateAnonymousContent(nsTArray<ContentInfo>& aElements)
CSSPseudoElementType::mozNumberSpinDown,
spinBoxCI.mStyleContext);
- SyncDisabledState();
-
return rv;
}
diff --git a/layout/generic/ReflowInput.cpp b/layout/generic/ReflowInput.cpp
index a8756cea2d..bbff77ad47 100644
--- a/layout/generic/ReflowInput.cpp
+++ b/layout/generic/ReflowInput.cpp
@@ -154,11 +154,6 @@ FontSizeInflationListMarginAdjustment(const nsIFrame* aFrame)
return 0;
}
-// NOTE: If we ever want to use SizeComputationInput for a flex item or a
-// grid item, we need to make it take the containing-block block-size as
-// well as the inline-size, since flex items and grid items resolve
-// block-direction percent margins and padding against the
-// containing-block block-size, rather than its inline-size.
SizeComputationInput::SizeComputationInput(nsIFrame *aFrame,
nsRenderingContext *aRenderingContext,
WritingMode aContainingBlockWritingMode,
@@ -167,16 +162,9 @@ SizeComputationInput::SizeComputationInput(nsIFrame *aFrame,
, mRenderingContext(aRenderingContext)
, mWritingMode(aFrame->GetWritingMode())
{
- MOZ_ASSERT(!aFrame->IsFlexOrGridItem(),
- "We're about to resolve percent margin & padding "
- "values against CB inline size, which is incorrect for "
- "flex/grid items. "
- "Additionally for grid items, this path doesn't handle baseline "
- "padding contribution - see SizeComputationInput::InitOffsets");
- LogicalSize cbSize(aContainingBlockWritingMode, aContainingBlockISize,
- aContainingBlockISize);
ReflowInputFlags flags;
- InitOffsets(aContainingBlockWritingMode, cbSize, mFrame->GetType(), flags);
+ InitOffsets(aContainingBlockWritingMode, aContainingBlockISize,
+ mFrame->GetType(), flags);
}
// Initialize a reflow state for a child frame's reflow. Some state
@@ -2132,27 +2120,6 @@ IsSideCaption(nsIFrame* aFrame, const nsStyleDisplay* aStyleDisplay,
captionSide == NS_STYLE_CAPTION_SIDE_RIGHT;
}
-// Flex/grid items resolve block-axis percentage margin & padding against the
-// containing block block-size (also for abs/fixed-pos child frames).
-// For everything else: the CSS21 spec requires that margin and padding
-// percentage values are calculated with respect to the inline-size of the
-// containing block, even for margin & padding in the block axis.
-static LogicalSize
-OffsetPercentBasis(const nsIFrame* aFrame,
- WritingMode aWM,
- const LogicalSize& aContainingBlockSize)
-{
- LogicalSize offsetPercentBasis = aContainingBlockSize;
- if (MOZ_LIKELY(!aFrame->GetParent() ||
- !aFrame->GetParent()->IsFlexOrGridContainer())) {
- offsetPercentBasis.BSize(aWM) = offsetPercentBasis.ISize(aWM);
- } else if (offsetPercentBasis.BSize(aWM) == NS_AUTOHEIGHT) {
- offsetPercentBasis.BSize(aWM) = 0;
- }
-
- return offsetPercentBasis;
-}
-
// XXX refactor this code to have methods for each set of properties
// we are computing: width,height,line-height; margin; offsets
@@ -2173,7 +2140,7 @@ ReflowInput::InitConstraints(nsPresContext* aPresContext,
// height equal to the available space
if (nullptr == mParentReflowInput || mFlags.mDummyParentReflowInput) {
// XXXldb This doesn't mean what it used to!
- InitOffsets(wm, OffsetPercentBasis(mFrame, wm, aContainingBlockSize),
+ InitOffsets(wm, aContainingBlockSize.ISize(wm),
aFrameType, mFlags, aBorder, aPadding);
// Override mComputedMargin since reflow roots start from the
// frame's boundary, which is inside the margin.
@@ -2230,8 +2197,7 @@ ReflowInput::InitConstraints(nsPresContext* aPresContext,
// For calculating positioning offsets, margins, borders and
// padding, we use the writing mode of the containing block
WritingMode cbwm = cbrs->GetWritingMode();
- InitOffsets(cbwm, OffsetPercentBasis(mFrame, cbwm,
- cbSize.ConvertTo(cbwm, wm)),
+ InitOffsets(cbwm, cbSize.ConvertTo(cbwm, wm).ISize(cbwm),
aFrameType, mFlags, aBorder, aPadding);
// For calculating the size of this box, we use its own writing mode
@@ -2505,7 +2471,7 @@ UpdateProp(FrameProperties& aProps,
void
SizeComputationInput::InitOffsets(WritingMode aWM,
- const LogicalSize& aPercentBasis,
+ nscoord aPercentBasis,
nsIAtom* aFrameType,
ReflowInputFlags aFlags,
const nsMargin* aBorder,
@@ -2876,7 +2842,7 @@ ReflowInput::CalcLineHeight(nsIContent* aContent,
bool
SizeComputationInput::ComputeMargin(WritingMode aWM,
- const LogicalSize& aPercentBasis)
+ nscoord aPercentBasis)
{
// SVG text frames have no margin.
if (mFrame->IsSVGText()) {
@@ -2893,17 +2859,17 @@ SizeComputationInput::ComputeMargin(WritingMode aWM,
// (http://dev.w3.org/csswg/css-writing-modes-3/#orthogonal-flows)
LogicalMargin m(aWM);
m.IStart(aWM) = nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.ISize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
styleMargin->mMargin.GetIStart(aWM));
m.IEnd(aWM) = nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.ISize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
styleMargin->mMargin.GetIEnd(aWM));
m.BStart(aWM) = nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.BSize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
styleMargin->mMargin.GetBStart(aWM));
m.BEnd(aWM) = nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.BSize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
styleMargin->mMargin.GetBEnd(aWM));
SetComputedLogicalMargin(aWM, m);
@@ -2924,7 +2890,7 @@ SizeComputationInput::ComputeMargin(WritingMode aWM,
bool
SizeComputationInput::ComputePadding(WritingMode aWM,
- const LogicalSize& aPercentBasis,
+ nscoord aPercentBasis,
nsIAtom* aFrameType)
{
// If style can provide us the padding directly, then use it.
@@ -2945,17 +2911,17 @@ SizeComputationInput::ComputePadding(WritingMode aWM,
// clamp negative calc() results to 0
LogicalMargin p(aWM);
p.IStart(aWM) = std::max(0, nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.ISize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
stylePadding->mPadding.GetIStart(aWM)));
p.IEnd(aWM) = std::max(0, nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.ISize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
stylePadding->mPadding.GetIEnd(aWM)));
p.BStart(aWM) = std::max(0, nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.BSize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
stylePadding->mPadding.GetBStart(aWM)));
p.BEnd(aWM) = std::max(0, nsLayoutUtils::
- ComputeCBDependentValue(aPercentBasis.BSize(aWM),
+ ComputeCBDependentValue(aPercentBasis,
stylePadding->mPadding.GetBEnd(aWM)));
SetComputedLogicalPadding(aWM, p);
diff --git a/layout/generic/ReflowInput.h b/layout/generic/ReflowInput.h
index 09c980b728..1d2df6af68 100644
--- a/layout/generic/ReflowInput.h
+++ b/layout/generic/ReflowInput.h
@@ -245,7 +245,7 @@ public:
static void* DisplayInitOffsetsEnter(
nsIFrame* aFrame,
SizeComputationInput* aState,
- const mozilla::LogicalSize& aPercentBasis,
+ nscoord aPercentBasis,
const nsMargin* aBorder,
const nsMargin* aPadding);
static void DisplayInitOffsetsExit(nsIFrame* aFrame,
@@ -260,19 +260,12 @@ private:
*
* @param aWM Writing mode of the containing block
* @param aPercentBasis
- * Logical size in the writing mode of the containing block to use
- * for resolving percentage margin values in the inline and block
- * axes.
- * The inline size is usually the containing block inline-size
- * (width if writing mode is horizontal, and height if vertical).
- * The block size is usually the containing block inline-size, per
- * CSS21 sec 8.3 (read in conjunction with CSS Writing Modes sec
- * 7.2), but may be the containing block block-size, e.g. in CSS3
- * Flexbox and Grid.
+ * Inline size of the containing block (in its own writing mode), to use
+ * for resolving percentage margin values in the inline and block axes.
* @return true if the margin is dependent on the containing block size.
*/
bool ComputeMargin(mozilla::WritingMode aWM,
- const mozilla::LogicalSize& aPercentBasis);
+ nscoord aPercentBasis);
/**
* Computes padding values from the specified padding style information, and
@@ -280,25 +273,18 @@ private:
*
* @param aWM Writing mode of the containing block
* @param aPercentBasis
- * Logical size in the writing mode of the containing block to use
- * for resolving percentage padding values in the inline and block
- * axes.
- * The inline size is usually the containing block inline-size
- * (width if writing mode is horizontal, and height if vertical).
- * The block size is usually the containing block inline-size, per
- * CSS21 sec 8.3 (read in conjunction with CSS Writing Modes sec
- * 7.2), but may be the containing block block-size, e.g. in CSS3
- * Flexbox and Grid.
+ * Inline size of the containing block (in its own writing mode), to use
+ * for resolving percentage padding values in the inline and block axes.
* @return true if the padding is dependent on the containing block size.
*/
bool ComputePadding(mozilla::WritingMode aWM,
- const mozilla::LogicalSize& aPercentBasis,
+ nscoord aPercentBasis,
nsIAtom* aFrameType);
protected:
void InitOffsets(mozilla::WritingMode aWM,
- const mozilla::LogicalSize& aPercentBasis,
+ nscoord aPercentBasis,
nsIAtom* aFrameType,
ReflowInputFlags aFlags,
const nsMargin* aBorder = nullptr,
diff --git a/layout/generic/nsFrame.cpp b/layout/generic/nsFrame.cpp
index 418fa16b7a..fa5b24d402 100644
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -10289,8 +10289,8 @@ DR_init_constraints_cookie::~DR_init_constraints_cookie()
DR_init_offsets_cookie::DR_init_offsets_cookie(
nsIFrame* aFrame,
- SizeComputationInput* aState,
- const LogicalSize& aPercentBasis,
+ SizeComputationInput* aState,
+ nscoord aPercentBasis,
const nsMargin* aMargin,
const nsMargin* aPadding)
: mFrame(aFrame)
@@ -11243,7 +11243,7 @@ ReflowInput::DisplayInitConstraintsExit(nsIFrame* aFrame,
/* static */ void*
SizeComputationInput::DisplayInitOffsetsEnter(nsIFrame* aFrame,
SizeComputationInput* aState,
- const LogicalSize& aPercentBasis,
+ nscoord aPercentBasis,
const nsMargin* aBorder,
const nsMargin* aPadding)
{
@@ -11258,12 +11258,10 @@ SizeComputationInput::DisplayInitOffsetsEnter(nsIFrame* aFrame,
if (treeNode && treeNode->mDisplay) {
DR_state->DisplayFrameTypeInfo(aFrame, treeNode->mIndent);
- char horizPctBasisStr[16];
- char vertPctBasisStr[16];
+ char pctBasisStr[16];
WritingMode wm = aState->GetWritingMode();
- DR_state->PrettyUC(aPercentBasis.ISize(wm), horizPctBasisStr, 16);
- DR_state->PrettyUC(aPercentBasis.BSize(wm), vertPctBasisStr, 16);
- printf("InitOffsets pct_basis=%s,%s", horizPctBasisStr, vertPctBasisStr);
+ DR_state->PrettyUC(aPercentBasis, pctBasisStr, 16);
+ printf("InitOffsets pct_basis=%s", pctBasisStr);
DR_state->PrintMargin("b", aBorder);
DR_state->PrintMargin("p", aPadding);
diff --git a/layout/generic/nsFrame.h b/layout/generic/nsFrame.h
index f996f57d71..af1c95ef29 100644
--- a/layout/generic/nsFrame.h
+++ b/layout/generic/nsFrame.h
@@ -845,7 +845,7 @@ public:
struct DR_init_offsets_cookie {
DR_init_offsets_cookie(nsIFrame* aFrame, mozilla::SizeComputationInput* aState,
- const mozilla::LogicalSize& aPercentBasis,
+ nscoord aPercentBasis,
const nsMargin* aBorder,
const nsMargin* aPadding);
~DR_init_offsets_cookie();
diff --git a/layout/generic/nsSelection.cpp b/layout/generic/nsSelection.cpp
index a2227c39c3..ec0fba3087 100644
--- a/layout/generic/nsSelection.cpp
+++ b/layout/generic/nsSelection.cpp
@@ -2201,8 +2201,6 @@ nsFrameSelection::CommonPageMove(bool aForward,
return;
// scroll one page
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollPage);
aScrollableFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1),
nsIScrollableFrame::PAGES,
nsIScrollableFrame::SMOOTH);
@@ -6202,11 +6200,6 @@ Selection::ScrollIntoView(SelectionRegion aRegion,
flags |= nsIPresShell::SCROLL_OVERFLOW_HIDDEN;
}
- if (aFlags & Selection::SCROLL_FOR_CARET_MOVE) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollCaretIntoView);
- }
-
presShell->ScrollFrameRectIntoView(frame, rect, aVertical, aHorizontal,
flags);
return NS_OK;
diff --git a/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html b/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html
index a0d9180a22..8858b4ea8f 100644
--- a/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html
+++ b/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html
@@ -62,40 +62,31 @@ b40 {
z-index: 1; position:relative;
}
-w {
- position:absolute;
- background: lime;
- border-width: 1px 0 0 3px;
- border-style: solid;
- height:48px;
- width:75px;
-}
-.v > w {
- border-width: 3px 0 0 1px;
- left:-1px; top:-3px;
- height:53px;
- width:61px;
-}
-.h.r { margin-left:19px; padding: 1px 15px 37px 30px; }
-.v .h > w {
- height:48px;
- width:45px;
-}
-.v.r > w {
- height:53px;
- width:61px;
+.h.r {
+ height: 42px;
+ width: 42px;
+ /* This margin-left is 20% of 98px-wide grid area */
+ margin-left: 19.6px;
+ /* This padding-bottom is 10% of 98px wide grid area */
+ /* This padding-left is 30% of 98px wide grid area */
+ padding: 1px 3px 9.8px 29.4px;
}
-.v .v > w {
- height:41px;
- width:45px;
+.v.r {
+ height: 42px;
+ width: 42px;
+ /* This margin-left is 20% of 54px-wide grid area */
+ margin-left: 10.8px;
+ /* This padding-bottom is 10% of 54px wide grid area */
+ /* This padding-left is 30% of 54px wide grid area */
+ padding: 1px 3px 5.4px 16.2px;
}
.r { position:relative; }
.t6 { width:46px; }
-.t8 { width:118px; }
+.t8 { width:118px; height: 102.5px; }
-xx {
+xx {
display: block;
background: lime;
padding:32px 32px 16px 32px;
@@ -114,7 +105,7 @@ xx {
<div class="grid"><span class="v"><x></x></span></div>
<div class="grid t6"><span class="v bb"><x></x></span></div>
<div class="grid"><span class="v"><x></x></span><span class="v"><x></x></span></div>
-<div class="grid t8"><span class="v r"><w></w><b40></b40></span></div>
+<div class="grid t8"><span class="v r"><b40></b40></span></div>
<div class="grid"><xx class="v"></xx></div>
<div class="grid v"><xx class="h"></xx></div>
diff --git a/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html b/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html
index 3a7f2d6bb0..4996f8b9c1 100644
--- a/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html
+++ b/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html
@@ -30,8 +30,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
}
.p { padding:2px 3px; }
.m { margin:2px 3px; }
-.c1.p,.c2.p { padding:5px 9px; }
-.c1.m,.c2.m { margin:5px 9px; }
+.c1.p,.c2.p { padding:6px 9px; }
+.c1.m,.c2.m { margin:6px 9px; }
.b { border:solid black; }
#t1 { width:50px; height: 20px; }
diff --git a/layout/reftests/css-grid/grid-item-sizing-percent-001.html b/layout/reftests/css-grid/grid-item-sizing-percent-001.html
index cc5948968c..960247592f 100644
--- a/layout/reftests/css-grid/grid-item-sizing-percent-001.html
+++ b/layout/reftests/css-grid/grid-item-sizing-percent-001.html
@@ -48,8 +48,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
box-sizing: border-box;
}
-.p { padding:10% 6%; }
-.m { margin:10% 6%; }
+.p { padding:4% 6%; }
+.m { margin:4% 6%; }
.b { border:solid black; }
</style>
diff --git a/layout/reftests/css-grid/grid-item-sizing-px-001.html b/layout/reftests/css-grid/grid-item-sizing-px-001.html
index a004365fc2..7e58d831d3 100644
--- a/layout/reftests/css-grid/grid-item-sizing-px-001.html
+++ b/layout/reftests/css-grid/grid-item-sizing-px-001.html
@@ -46,8 +46,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
.p { padding:2px 3px; }
.m { margin:2px 3px; }
-.c1.p,.c2.p { padding:5px 9px; }
-.c1.m,.c2.m { margin:5px 9px; }
+.c1.p,.c2.p { padding:6px 9px; }
+.c1.m,.c2.m { margin:6px 9px; }
.b { border:solid black; }
</style>
diff --git a/layout/reftests/css-grid/reftest.list b/layout/reftests/css-grid/reftest.list
index 093e2faee2..c2ee57c1a1 100644
--- a/layout/reftests/css-grid/reftest.list
+++ b/layout/reftests/css-grid/reftest.list
@@ -45,7 +45,7 @@ skip-if(Android) fuzzy-if(winWidget,1,32) == grid-placement-auto-implicit-001.ht
== vrl-grid-placement-auto-row-sparse-001.html vrl-grid-placement-auto-row-sparse-001-ref.html
== grid-relpos-items-001.html grid-relpos-items-001-ref.html
== grid-item-sizing-percent-001.html grid-item-sizing-percent-001-ref.html
-== grid-item-sizing-percent-002.html grid-item-sizing-percent-002-ref.html
+fails == grid-item-sizing-percent-002.html grid-item-sizing-percent-002-ref.html # bug 1434397
== grid-item-sizing-percent-003.html grid-item-sizing-percent-003-ref.html
== grid-item-sizing-percent-004.html grid-item-sizing-percent-004-ref.html
== grid-item-sizing-px-001.html grid-item-sizing-percent-001-ref.html
diff --git a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml
index 00db4823e3..beefa0abfe 100644
--- a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml
+++ b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml
@@ -4,8 +4,7 @@
http://creativecommons.org/publicdomain/zero/1.0/
-->
<!-- Reference case - identical to the testcase, but with with the flex items'
- vertical margin and padding values set to 0 by default, and then set to
- specific pixel values for the items that have a 50px percent-basis.
+ margin and padding values set to explicit pixel values.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
@@ -21,27 +20,10 @@
}
div.height50 { height: 50px; }
- .marginA { margin: 0 8% 0 4%; }
- .marginB { margin: 0 10% 0 14%; }
- .paddingA { padding: 0 6% 0 2%; }
- .paddingB { padding: 0 8% 0 12%; }
-
- div.height50 > .marginA {
- margin-top: 5px;
- margin-bottom: 3px;
- }
- div.height50 > .marginB {
- margin-top: 4px;
- margin-bottom: 6px;
- }
- div.height50 > .paddingA {
- padding-top: 4px;
- padding-bottom: 2px;
- }
- div.height50 > .paddingB {
- padding-top: 3px;
- padding-bottom: 5px;
- }
+ .marginA { margin: 20px 16px 12px 8px; }
+ .marginB { margin: 16px 20px 24px 28px; }
+ .paddingA { padding: 16px 12px 8px 4px; }
+ .paddingB { padding: 12px 16px 20px 24px; }
div.child1 {
flex: none;
diff --git a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml
index 545e54f71d..b513253fd1 100644
--- a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml
+++ b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml
@@ -3,19 +3,17 @@
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
-<!-- Testcase with percent-valued padding and/or margin on flex items. The spec
- says that percentage values on padding/margin-top and -bottom should be
- resolved against the flex container's height (not its width, as would
- be the case in a block).
+<!-- Testcase with percent-valued padding and/or margin on flex items.
+ The spec allows these to be resolved against the flex container's
+ inline size (regardless of which axis the percent padding/margin is in).
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS Test: Testing percent-valued padding and margin on flex items</title>
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"/>
- <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#layout-algorithm"/>
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#item-margins"/>
<link rel="match" href="flexbox-mbp-horiz-004-ref.xhtml"/>
<style>
- div { border: 0; }
div.flexbox {
width: 200px;
display: flex;
@@ -52,8 +50,9 @@
</style>
</head>
<body>
- <!-- Flex container is auto-height - vertical margin and padding should
- resolve to 0, since they don't have anything to resolve % against. -->
+ <!-- Flex container is auto-height - this shouldn't impact percent
+ margin/padding resolution, since they resolve against container's
+ inline-size, i.e. its width in this case. -->
<div class="flexbox"
><div class="child1 paddingA"><div class="filler"/></div
><div class="child2 paddingB"><div class="filler"/></div
@@ -61,8 +60,9 @@
><div class="child2 marginB"></div
></div>
- <!-- Flex container has height: 50px - vertical margin and padding should
- resolve % values against that. -->
+ <!-- Flex container has height: 50px - again, this shouldn't impact percent
+ margin/padding resolution, since they resolve against container's
+ inline-size, i.e. its width in this case. -->
<div class="flexbox height50"
><div class="child1 paddingA"><div class="filler"/></div
><div class="child2 paddingB"><div class="filler"/></div
diff --git a/layout/style/FontFaceSet.cpp b/layout/style/FontFaceSet.cpp
index 550a7d71a3..1645adfefe 100644
--- a/layout/style/FontFaceSet.cpp
+++ b/layout/style/FontFaceSet.cpp
@@ -1762,18 +1762,10 @@ FontFaceSet::UserFontSet::RecordFontLoadDone(uint32_t aFontSize,
{
mDownloadCount++;
mDownloadSize += aFontSize;
- Telemetry::Accumulate(Telemetry::WEBFONT_SIZE, aFontSize / 1024);
if (!mFontFaceSet) {
return;
}
-
- TimeStamp navStart = mFontFaceSet->GetNavigationStartTimeStamp();
- TimeStamp zero;
- if (navStart != zero) {
- Telemetry::AccumulateTimeDelta(Telemetry::WEBFONT_DOWNLOAD_TIME_AFTER_START,
- navStart, aDoneTime);
- }
}
/* virtual */ nsresult
diff --git a/layout/style/nsFontFaceLoader.cpp b/layout/style/nsFontFaceLoader.cpp
index f5a0a9f347..3082bbf873 100644
--- a/layout/style/nsFontFaceLoader.cpp
+++ b/layout/style/nsFontFaceLoader.cpp
@@ -205,7 +205,6 @@ nsFontFaceLoader::OnStreamComplete(nsIStreamLoader* aLoader,
TimeStamp doneTime = TimeStamp::Now();
TimeDuration downloadTime = doneTime - mStartTime;
uint32_t downloadTimeMS = uint32_t(downloadTime.ToMilliseconds());
- Telemetry::Accumulate(Telemetry::WEBFONT_DOWNLOAD_TIME, downloadTimeMS);
if (GetFontDisplay() == NS_FONT_DISPLAY_FALLBACK) {
uint32_t loadTimeout = GetFallbackDelay();
diff --git a/layout/xul/nsScrollbarButtonFrame.cpp b/layout/xul/nsScrollbarButtonFrame.cpp
index 206d9717f6..ff757a65fd 100644
--- a/layout/xul/nsScrollbarButtonFrame.cpp
+++ b/layout/xul/nsScrollbarButtonFrame.cpp
@@ -171,9 +171,6 @@ nsScrollbarButtonFrame::HandleButtonPress(nsPresContext* aPresContext,
return false;
}
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollbarButtonClick);
-
if (!m) {
sb->MoveToNewPosition();
if (!weakFrame.IsAlive()) {
diff --git a/layout/xul/nsSliderFrame.cpp b/layout/xul/nsSliderFrame.cpp
index 8e083f20ca..3c1f9ef912 100644
--- a/layout/xul/nsSliderFrame.cpp
+++ b/layout/xul/nsSliderFrame.cpp
@@ -529,9 +529,6 @@ nsSliderFrame::HandleEvent(nsPresContext* aPresContext,
return NS_OK;
}
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollbarDrag);
-
// take our current position and subtract the start location
pos -= mDragStart;
bool isMouseOutsideThumb = false;
@@ -598,9 +595,6 @@ nsSliderFrame::HandleEvent(nsPresContext* aPresContext,
nsSize thumbSize = thumbFrame->GetSize();
nscoord thumbLength = isHorizontal ? thumbSize.width : thumbSize.height;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadScrollbarTrackClick);
-
// set it
nsWeakFrame weakFrame(this);
// should aMaySnap be true here?
diff --git a/media/ffvpx/README_MCP b/media/ffvpx/README_MCP
index 4555e08da6..5ed4d8d943 100644
--- a/media/ffvpx/README_MCP
+++ b/media/ffvpx/README_MCP
@@ -7,10 +7,6 @@ Currently, we only use the vp8 and vp9 portion of the library, and only on x86
based platforms. If this changes, configuration files will most likely
need to be updated.
-AVX2 must be disabled on Linux 32 bits due to the use of yasm 1.1 on the build bots.
-Once yasm is upgraded to 1.2 or later, AVX2 code could be re-enabled.
-Add --disable-avx2 to configure on those platforms.
-
configuration files were generated as follow using the configure script:
./configure --disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm
@@ -18,13 +14,12 @@ config*:
replace: /HAVE_(MALLOC_H|ARC4RANDOM|LOCALTIME_R|MEMALIGN|POSIX_MEMALIGN)/d
config_darwin32.h:
-add to configure command: --disable-asm --disable-yasm --cc='clang -m32'
+add to configure command: --disable-asm --disable-x86asm --cc='clang -m32'
config_unix32.h:
add to configure command: --disable-asm --disable-x86asm --cc='clang -m32'
replace: s/HAVE_SYSCTL 1/HAVE_SYSCTL 0/ and s/HAVE_MEMALIGN 1/HAVE_MEMALIGN 0/ and s/HAVE_POSIX_MEMALIGN 1/HAVE_POSIX_MEMALIGN 0/
-
config_unix32.h/config_unix64.h/config_unix64.asm:
replace: s/HAVE_SYSCTL 1/HAVE_SYSCTL 0
diff --git a/media/libstagefright/binding/Index.cpp b/media/libstagefright/binding/Index.cpp
index 9d6ab5028b..eb039b5d61 100644
--- a/media/libstagefright/binding/Index.cpp
+++ b/media/libstagefright/binding/Index.cpp
@@ -143,6 +143,11 @@ already_AddRefed<MediaRawData> SampleIterator::GetNext()
writer->mCrypto.mValid = true;
writer->mCrypto.mIVSize = ivSize;
+ CencSampleEncryptionInfoEntry* sampleInfo = GetSampleEncryptionEntry();
+ if (sampleInfo) {
+ writer->mCrypto.mKeyId.AppendElements(sampleInfo->mKeyId);
+ }
+
if (!reader.ReadArray(writer->mCrypto.mIV, ivSize)) {
return nullptr;
}
@@ -170,6 +175,65 @@ already_AddRefed<MediaRawData> SampleIterator::GetNext()
return sample.forget();
}
+CencSampleEncryptionInfoEntry* SampleIterator::GetSampleEncryptionEntry()
+{
+ nsTArray<Moof>& moofs = mIndex->mMoofParser->Moofs();
+ Moof* currentMoof = &moofs[mCurrentMoof];
+ SampleToGroupEntry* sampleToGroupEntry = nullptr;
+
+ // Default to using the sample to group entries for the fragment, otherwise
+ // fall back to the sample to group entries for the track.
+ nsTArray<SampleToGroupEntry>* sampleToGroupEntries =
+ currentMoof->mFragmentSampleToGroupEntries.Length() != 0
+ ? &currentMoof->mFragmentSampleToGroupEntries
+ : &mIndex->mMoofParser->mTrackSampleToGroupEntries;
+
+ uint32_t seen = 0;
+
+ for (SampleToGroupEntry& entry : *sampleToGroupEntries) {
+ if (seen + entry.mSampleCount > mCurrentSample) {
+ sampleToGroupEntry = &entry;
+ break;
+ }
+ seen += entry.mSampleCount;
+ }
+
+ // ISO-14496-12 Section 8.9.2.3 and 8.9.4 : group description index
+ // (1) ranges from 1 to the number of sample group entries in the track
+ // level SampleGroupDescription Box, or (2) takes the value 0 to
+ // indicate that this sample is a member of no group, in this case, the
+ // sample is associated with the default values specified in
+ // TrackEncryption Box, or (3) starts at 0x10001, i.e. the index value
+ // 1, with the value 1 in the top 16 bits, to reference fragment-local
+ // SampleGroupDescription Box.
+
+ // According to the spec, ISO-14496-12, the sum of the sample counts in this
+ // box should be equal to the total number of samples, and, if less, the
+ // reader should behave as if an extra SampleToGroupEntry existed, with
+ // groupDescriptionIndex 0.
+
+ if (!sampleToGroupEntry || sampleToGroupEntry->mGroupDescriptionIndex == 0) {
+ return nullptr;
+ }
+
+ nsTArray<CencSampleEncryptionInfoEntry>* entries =
+ &mIndex->mMoofParser->mTrackSampleEncryptionInfoEntries;
+
+ uint32_t groupIndex = sampleToGroupEntry->mGroupDescriptionIndex;
+
+ // If the first bit is set to a one, then we should use the sample group
+ // descriptions from the fragment.
+ if (groupIndex > SampleToGroupEntry::kFragmentGroupDescriptionIndexBase) {
+ groupIndex -= SampleToGroupEntry::kFragmentGroupDescriptionIndexBase;
+ entries = &currentMoof->mFragmentSampleEncryptionInfoEntries;
+ }
+
+ // The group_index is one based.
+ return groupIndex > entries->Length()
+ ? nullptr
+ : &entries->ElementAt(groupIndex - 1);
+}
+
Sample* SampleIterator::Get()
{
if (!mIndex->mMoofParser) {
diff --git a/media/libstagefright/binding/MoofParser.cpp b/media/libstagefright/binding/MoofParser.cpp
index ced054282d..771be34281 100644
--- a/media/libstagefright/binding/MoofParser.cpp
+++ b/media/libstagefright/binding/MoofParser.cpp
@@ -27,6 +27,8 @@ namespace mp4_demuxer
using namespace stagefright;
using namespace mozilla;
+const uint32_t kKeyIdSize = 16;
+
bool
MoofParser::RebuildFragmentedIndex(const MediaByteRangeSet& aByteRanges)
{
@@ -330,6 +332,18 @@ MoofParser::ParseStbl(Box& aBox)
for (Box box = aBox.FirstChild(); box.IsAvailable(); box = box.Next()) {
if (box.IsType("stsd")) {
ParseStsd(box);
+ } else if (box.IsType("sgpd")) {
+ Sgpd sgpd(box);
+ if (sgpd.IsValid() && sgpd.mGroupingType == "seig") {
+ mTrackSampleEncryptionInfoEntries.Clear();
+ mTrackSampleEncryptionInfoEntries.AppendElements(sgpd.mEntries);
+ }
+ } else if (box.IsType("sbgp")) {
+ Sbgp sbgp(box);
+ if (sbgp.IsValid() && sbgp.mGroupingType == "seig") {
+ mTrackSampleToGroupEntries.Clear();
+ mTrackSampleToGroupEntries.AppendElements(sbgp.mEntries);
+ }
}
}
}
@@ -495,12 +509,25 @@ Moof::ParseTraf(Box& aBox, Trex& aTrex, Mvhd& aMvhd, Mdhd& aMdhd, Edts& aEdts, S
MOZ_ASSERT(aDecodeTime);
Tfhd tfhd(aTrex);
Tfdt tfdt;
+
for (Box box = aBox.FirstChild(); box.IsAvailable(); box = box.Next()) {
if (box.IsType("tfhd")) {
tfhd = Tfhd(box, aTrex);
} else if (!aTrex.mTrackId || tfhd.mTrackId == aTrex.mTrackId) {
if (box.IsType("tfdt")) {
tfdt = Tfdt(box);
+ } else if (box.IsType("sgpd")) {
+ Sgpd sgpd(box);
+ if (sgpd.IsValid() && sgpd.mGroupingType == "seig") {
+ mFragmentSampleEncryptionInfoEntries.Clear();
+ mFragmentSampleEncryptionInfoEntries.AppendElements(sgpd.mEntries);
+ }
+ } else if (box.IsType("sbgp")) {
+ Sbgp sbgp(box);
+ if (sbgp.IsValid() && sbgp.mGroupingType == "seig") {
+ mFragmentSampleToGroupEntries.Clear();
+ mFragmentSampleToGroupEntries.AppendElements(sbgp.mEntries);
+ }
} else if (box.IsType("saiz")) {
mSaizs.AppendElement(Saiz(box, aSinf.mDefaultEncryptionType));
} else if (box.IsType("saio")) {
@@ -550,14 +577,20 @@ Moof::ParseTrun(Box& aBox, Tfhd& aTfhd, Mvhd& aMvhd, Mdhd& aMdhd, Edts& aEdts, u
LOG(Moof, "Incomplete Box (missing flags)");
return false;
}
- uint32_t flags = reader->ReadU32();
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return false;
+ }
uint8_t version = flags >> 24;
if (!reader->CanReadType<uint32_t>()) {
LOG(Moof, "Incomplete Box (missing sampleCount)");
return false;
}
- uint32_t sampleCount = reader->ReadU32();
+ uint32_t sampleCount;
+ if (!reader->ReadU32(sampleCount)) {
+ return false;
+ }
if (sampleCount == 0) {
return true;
}
@@ -577,9 +610,21 @@ Moof::ParseTrun(Box& aBox, Tfhd& aTfhd, Mvhd& aMvhd, Mdhd& aMdhd, Edts& aEdts, u
return false;
}
- uint64_t offset = aTfhd.mBaseDataOffset + (flags & 1 ? reader->ReadU32() : 0);
- uint32_t firstSampleFlags =
- flags & 4 ? reader->ReadU32() : aTfhd.mDefaultSampleFlags;
+ uint64_t offset = aTfhd.mBaseDataOffset;
+ if (flags & 1) {
+ uint32_t baseOffset;
+ if (!reader->ReadU32(baseOffset)) {
+ return false;
+ }
+ offset += baseOffset;
+ }
+ uint32_t firstSampleFlags = aTfhd.mDefaultSampleFlags;
+ if (flags & 4) {
+ if (!reader->ReadU32(firstSampleFlags)) {
+ return false;
+ }
+ }
+
uint64_t decodeTime = *aDecodeTime;
nsTArray<Interval<Microseconds>> timeRanges;
@@ -589,16 +634,29 @@ Moof::ParseTrun(Box& aBox, Tfhd& aTfhd, Mvhd& aMvhd, Mdhd& aMdhd, Edts& aEdts, u
}
for (size_t i = 0; i < sampleCount; i++) {
- uint32_t sampleDuration =
- flags & 0x100 ? reader->ReadU32() : aTfhd.mDefaultSampleDuration;
- uint32_t sampleSize =
- flags & 0x200 ? reader->ReadU32() : aTfhd.mDefaultSampleSize;
- uint32_t sampleFlags =
- flags & 0x400 ? reader->ReadU32()
- : i ? aTfhd.mDefaultSampleFlags : firstSampleFlags;
+ uint32_t sampleDuration = aTfhd.mDefaultSampleDuration;
+ if (flags & 0x100) {
+ if (!reader->ReadU32(sampleDuration)) {
+ return false;
+ }
+ }
+ uint32_t sampleSize = aTfhd.mDefaultSampleSize;
+ if (flags & 0x200) {
+ if (!reader->ReadU32(sampleSize)) {
+ return false;
+ }
+ }
+ uint32_t sampleFlags = i ? aTfhd.mDefaultSampleFlags : firstSampleFlags;
+ if (flags & 0x400) {
+ if (!reader->ReadU32(sampleFlags)) {
+ return false;
+ }
+ }
int32_t ctsOffset = 0;
if (flags & 0x800) {
- ctsOffset = reader->Read32();
+ if (!reader->Read32(ctsOffset)) {
+ return false;
+ }
}
Sample sample;
@@ -635,7 +693,10 @@ Tkhd::Tkhd(Box& aBox)
LOG(Tkhd, "Incomplete Box (missing flags)");
return;
}
- uint32_t flags = reader->ReadU32();
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
uint8_t version = flags >> 24;
size_t need =
3*(version ? sizeof(int64_t) : sizeof(int32_t)) + 2*sizeof(int32_t);
@@ -645,19 +706,30 @@ Tkhd::Tkhd(Box& aBox)
return;
}
if (version == 0) {
- mCreationTime = reader->ReadU32();
- mModificationTime = reader->ReadU32();
- mTrackId = reader->ReadU32();
- uint32_t reserved = reader->ReadU32();
+ uint32_t createTime, modificationTime, trackId, reserved, duration;
+ if (!reader->ReadU32(createTime) ||
+ !reader->ReadU32(modificationTime) ||
+ !reader->ReadU32(trackId) ||
+ !reader->ReadU32(reserved) ||
+ !reader->ReadU32(duration)) {
+ return;
+ }
NS_ASSERTION(!reserved, "reserved should be 0");
- mDuration = reader->ReadU32();
+ mCreationTime = createTime;
+ mModificationTime = modificationTime;
+ mTrackId = trackId;
+ mDuration = duration;
} else if (version == 1) {
- mCreationTime = reader->ReadU64();
- mModificationTime = reader->ReadU64();
- mTrackId = reader->ReadU32();
- uint32_t reserved = reader->ReadU32();
+ uint32_t trackId, reserved;
+ if (!reader->ReadU64(mCreationTime) ||
+ !reader->ReadU64(mModificationTime) ||
+ !reader->ReadU32(trackId) ||
+ !reader->ReadU32(reserved) ||
+ !reader->ReadU64(mDuration)) {
+ return;
+ }
NS_ASSERTION(!reserved, "reserved should be 0");
- mDuration = reader->ReadU64();
+ mTrackId = trackId;
}
// We don't care about whatever else may be in the box.
mValid = true;
@@ -670,10 +742,13 @@ Mvhd::Mvhd(Box& aBox)
LOG(Mdhd, "Incomplete Box (missing flags)");
return;
}
- uint32_t flags = reader->ReadU32();
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
uint8_t version = flags >> 24;
size_t need =
- 3*(version ? sizeof(int64_t) : sizeof(int32_t)) + sizeof(uint32_t);
+ 3 * (version ? sizeof(int64_t) : sizeof(int32_t)) + sizeof(uint32_t);
if (reader->Remaining() < need) {
LOG(Mvhd, "Incomplete Box (have:%lld need:%lld)",
(uint64_t)reader->Remaining(), (uint64_t)need);
@@ -681,15 +756,23 @@ Mvhd::Mvhd(Box& aBox)
}
if (version == 0) {
- mCreationTime = reader->ReadU32();
- mModificationTime = reader->ReadU32();
- mTimescale = reader->ReadU32();
- mDuration = reader->ReadU32();
+ uint32_t createTime, modificationTime, duration;
+ if (!reader->ReadU32(createTime) ||
+ !reader->ReadU32(modificationTime) ||
+ !reader->ReadU32(mTimescale) ||
+ !reader->ReadU32(duration)) {
+ return;
+ }
+ mCreationTime = createTime;
+ mModificationTime = modificationTime;
+ mDuration = duration;
} else if (version == 1) {
- mCreationTime = reader->ReadU64();
- mModificationTime = reader->ReadU64();
- mTimescale = reader->ReadU32();
- mDuration = reader->ReadU64();
+ if (!reader->ReadU64(mCreationTime) ||
+ !reader->ReadU64(mModificationTime) ||
+ !reader->ReadU32(mTimescale) ||
+ !reader->ReadU64(mDuration)) {
+ return;
+ }
} else {
return;
}
@@ -707,18 +790,19 @@ Mdhd::Mdhd(Box& aBox)
Trex::Trex(Box& aBox)
{
BoxReader reader(aBox);
- if (reader->Remaining() < 6*sizeof(uint32_t)) {
+ if (reader->Remaining() < 6 * sizeof(uint32_t)) {
LOG(Trex, "Incomplete Box (have:%lld need:%lld)",
(uint64_t)reader->Remaining(), (uint64_t)6*sizeof(uint32_t));
return;
}
- mFlags = reader->ReadU32();
- mTrackId = reader->ReadU32();
- mDefaultSampleDescriptionIndex = reader->ReadU32();
- mDefaultSampleDuration = reader->ReadU32();
- mDefaultSampleSize = reader->ReadU32();
- mDefaultSampleFlags = reader->ReadU32();
- mValid = true;
+ if (!reader->ReadU32(mFlags) ||
+ !reader->ReadU32(mTrackId) ||
+ !reader->ReadU32(mDefaultSampleDescriptionIndex) ||
+ !reader->ReadU32(mDefaultSampleDuration) ||
+ !reader->ReadU32(mDefaultSampleSize) ||
+ !reader->ReadU32(mDefaultSampleFlags)) {
+ return;
+ }
}
Tfhd::Tfhd(Box& aBox, Trex& aTrex)
@@ -733,7 +817,9 @@ Tfhd::Tfhd(Box& aBox, Trex& aTrex)
LOG(Tfhd, "Incomplete Box (missing flags)");
return;
}
- mFlags = reader->ReadU32();
+ if (!reader->ReadU32(mFlags)) {
+ return;
+ }
size_t need = sizeof(uint32_t) /* trackid */;
uint8_t flag[] = { 1, 2, 8, 0x10, 0x20, 0 };
uint8_t flagSize[] = { sizeof(uint64_t), sizeof(uint32_t), sizeof(uint32_t), sizeof(uint32_t), sizeof(uint32_t) };
@@ -747,20 +833,34 @@ Tfhd::Tfhd(Box& aBox, Trex& aTrex)
(uint64_t)reader->Remaining(), (uint64_t)need);
return;
}
- mTrackId = reader->ReadU32();
- mBaseDataOffset =
- mFlags & 1 ? reader->ReadU64() : aBox.Parent()->Parent()->Offset();
+ if (!reader->ReadU32(mTrackId)) {
+ return;
+ }
+ mBaseDataOffset = aBox.Parent()->Parent()->Offset();
+ if (mFlags & 1) {
+ if (!reader->ReadU64(mBaseDataOffset)) {
+ return;
+ }
+ }
if (mFlags & 2) {
- mDefaultSampleDescriptionIndex = reader->ReadU32();
+ if (!reader->ReadU32(mDefaultSampleDescriptionIndex)) {
+ return;
+ }
}
if (mFlags & 8) {
- mDefaultSampleDuration = reader->ReadU32();
+ if (!reader->ReadU32(mDefaultSampleDuration)) {
+ return;
+ }
}
if (mFlags & 0x10) {
- mDefaultSampleSize = reader->ReadU32();
+ if (!reader->ReadU32(mDefaultSampleSize)) {
+ return;
+ }
}
if (mFlags & 0x20) {
- mDefaultSampleFlags = reader->ReadU32();
+ if (!reader->ReadU32(mDefaultSampleFlags)) {
+ return;
+ }
}
mValid = true;
}
@@ -772,7 +872,10 @@ Tfdt::Tfdt(Box& aBox)
LOG(Tfdt, "Incomplete Box (missing flags)");
return;
}
- uint32_t flags = reader->ReadU32();
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
uint8_t version = flags >> 24;
size_t need = version ? sizeof(uint64_t) : sizeof(uint32_t) ;
if (reader->Remaining() < need) {
@@ -781,9 +884,15 @@ Tfdt::Tfdt(Box& aBox)
return;
}
if (version == 0) {
- mBaseMediaDecodeTime = reader->ReadU32();
+ uint32_t baseDecodeTime;
+ if (!reader->ReadU32(baseDecodeTime)) {
+ return;
+ }
+ mBaseMediaDecodeTime = baseDecodeTime;
} else if (version == 1) {
- mBaseMediaDecodeTime = reader->ReadU64();
+ if (!reader->ReadU64(mBaseMediaDecodeTime)) {
+ return;
+ }
}
mValid = true;
}
@@ -802,7 +911,10 @@ Edts::Edts(Box& aBox)
LOG(Edts, "Incomplete Box (missing flags)");
return;
}
- uint32_t flags = reader->ReadU32();
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
uint8_t version = flags >> 24;
size_t need =
sizeof(uint32_t) + 2*(version ? sizeof(int64_t) : sizeof(uint32_t));
@@ -812,16 +924,27 @@ Edts::Edts(Box& aBox)
return;
}
bool emptyEntry = false;
- uint32_t entryCount = reader->ReadU32();
+ uint32_t entryCount;
+ if (!reader->ReadU32(entryCount)) {
+ return;
+ }
for (uint32_t i = 0; i < entryCount; i++) {
uint64_t segment_duration;
int64_t media_time;
if (version == 1) {
- segment_duration = reader->ReadU64();
- media_time = reader->Read64();
+ if (!reader->ReadU64(segment_duration) ||
+ !reader->Read64(media_time)) {
+ return;
+ }
} else {
- segment_duration = reader->ReadU32();
- media_time = reader->Read32();
+ uint32_t duration;
+ int32_t time;
+ if (!reader->ReadU32(duration) ||
+ !reader->Read32(time)) {
+ return;
+ }
+ segment_duration = duration;
+ media_time = time;
}
if (media_time == -1 && i) {
LOG(Edts, "Multiple empty edit, not handled");
@@ -834,8 +957,12 @@ Edts::Edts(Box& aBox)
} else {
mMediaStart = media_time;
}
- reader->ReadU32(); // media_rate_integer and media_rate_fraction
+ // media_rate_integer and media_rate_fraction
+ if (!reader->Skip(4)) {
+ return;
+ }
}
+ mValid = true;
}
Saiz::Saiz(Box& aBox, AtomType aDefaultType)
@@ -847,7 +974,10 @@ Saiz::Saiz(Box& aBox, AtomType aDefaultType)
LOG(Saiz, "Incomplete Box (missing flags)");
return;
}
- uint32_t flags = reader->ReadU32();
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
uint8_t version = flags >> 24;
size_t need =
((flags & 1) ? 2*sizeof(uint32_t) : 0) + sizeof(uint8_t) + sizeof(uint32_t);
@@ -857,11 +987,19 @@ Saiz::Saiz(Box& aBox, AtomType aDefaultType)
return;
}
if (flags & 1) {
- mAuxInfoType = reader->ReadU32();
- mAuxInfoTypeParameter = reader->ReadU32();
+ uint32_t auxType;
+ if (!reader->ReadU32(auxType) ||
+ !reader->ReadU32(mAuxInfoTypeParameter)) {
+ return;
+ }
+ mAuxInfoType = auxType;
+ }
+ uint8_t defaultSampleInfoSize;
+ uint32_t count;
+ if (!reader->ReadU8(defaultSampleInfoSize) ||
+ !reader->ReadU32(count)) {
+ return;
}
- uint8_t defaultSampleInfoSize = reader->ReadU8();
- uint32_t count = reader->ReadU32();
if (defaultSampleInfoSize) {
if (!mSampleInfoSize.SetLength(count, fallible)) {
LOG(Saiz, "OOM");
@@ -886,19 +1024,29 @@ Saio::Saio(Box& aBox, AtomType aDefaultType)
LOG(Saio, "Incomplete Box (missing flags)");
return;
}
- uint32_t flags = reader->ReadU32();
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
uint8_t version = flags >> 24;
- size_t need = ((flags & 1) ? (2*sizeof(uint32_t)) : 0) + sizeof(uint32_t);
+ size_t need = ((flags & 1) ? (2 * sizeof(uint32_t)) : 0) + sizeof(uint32_t);
if (reader->Remaining() < need) {
LOG(Saio, "Incomplete Box (have:%lld need:%lld)",
(uint64_t)reader->Remaining(), (uint64_t)need);
return;
}
if (flags & 1) {
- mAuxInfoType = reader->ReadU32();
- mAuxInfoTypeParameter = reader->ReadU32();
+ uint32_t auxType;
+ if (!reader->ReadU32(auxType) ||
+ !reader->ReadU32(mAuxInfoTypeParameter)) {
+ return;
+ }
+ mAuxInfoType = auxType;
+ }
+ uint32_t count;
+ if (!reader->ReadU32(count)) {
+ return;
}
- size_t count = reader->ReadU32();
need = (version ? sizeof(uint64_t) : sizeof(uint32_t)) * count;
if (reader->Remaining() < need) {
LOG(Saio, "Incomplete Box (have:%lld need:%lld)",
@@ -910,16 +1058,203 @@ Saio::Saio(Box& aBox, AtomType aDefaultType)
return;
}
if (version == 0) {
+ uint32_t offset;
for (size_t i = 0; i < count; i++) {
- MOZ_ALWAYS_TRUE(mOffsets.AppendElement(reader->ReadU32(), fallible));
+ if (!reader->ReadU32(offset)) {
+ return;
+ }
+ MOZ_ALWAYS_TRUE(mOffsets.AppendElement(offset, fallible));
}
} else {
+ uint64_t offset;
for (size_t i = 0; i < count; i++) {
- MOZ_ALWAYS_TRUE(mOffsets.AppendElement(reader->ReadU64(), fallible));
+ if (!reader->ReadU64(offset)) {
+ return;
+ }
+ MOZ_ALWAYS_TRUE(mOffsets.AppendElement(offset, fallible));
+ }
+ }
+ mValid = true;
+}
+
+Sbgp::Sbgp(Box& aBox)
+{
+ BoxReader reader(aBox);
+
+ if (!reader->CanReadType<uint32_t>()) {
+ LOG(Sbgp, "Incomplete Box (missing flags)");
+ return;
+ }
+
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
+ const uint8_t version = flags >> 24;
+ flags = flags & 0xffffff;
+
+ // Make sure we have enough bytes to read as far as the count.
+ uint32_t need = (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) * 2;
+ if (reader->Remaining() < need) {
+ LOG(Sbgp, "Incomplete Box (have:%lld, need:%lld)",
+ (uint64_t)reader->Remaining(), (uint64_t)need);
+ return;
+ }
+
+ uint32_t groupType;
+ if (!reader->ReadU32(groupType)) {
+ return;
+ }
+ mGroupingType = groupType;
+
+ if (version == 1) {
+ if (reader->ReadU32(mGroupingTypeParam)) {
+ false;
+ }
+ }
+
+ uint32_t count;
+ if (!reader->ReadU32(count)) {
+ return;
+ }
+
+ // Make sure we can read all the entries.
+ need = sizeof(uint32_t) * 2 * count;
+ if (reader->Remaining() < need) {
+ LOG(Sbgp, "Incomplete Box (have:%lld, need:%lld). Failed to read entries",
+ (uint64_t)reader->Remaining(), (uint64_t)need);
+ return;
+ }
+
+ for (uint32_t i = 0; i < count; i++) {
+ uint32_t sampleCount;
+ uint32_t groupDescriptionIndex;
+ if (!reader->ReadU32(sampleCount) ||
+ !reader->ReadU32(groupDescriptionIndex)) {
+ return;
}
+
+ SampleToGroupEntry entry(sampleCount, groupDescriptionIndex);
+ mEntries.AppendElement(entry);
}
+
mValid = true;
}
+Sgpd::Sgpd(Box& aBox)
+{
+ BoxReader reader(aBox);
+
+ if (!reader->CanReadType<uint32_t>()) {
+ LOG(Sgpd, "Incomplete Box (missing flags)");
+ return;
+ }
+
+ uint32_t flags;
+ if (!reader->ReadU32(flags)) {
+ return;
+ }
+ const uint8_t version = flags >> 24;
+ flags = flags & 0xffffff;
+
+ uint32_t need = ((flags & 1) ? sizeof(uint32_t) : 0) + sizeof(uint32_t) * 2;
+ if (reader->Remaining() < need) {
+ LOG(Sgpd, "Incomplete Box (have:%lld need:%lld)",
+ (uint64_t)reader->Remaining(), (uint64_t)need);
+ return;
+ }
+
+ uint32_t groupType;
+ if (!reader->ReadU32(groupType)) {
+ return;
+ }
+ mGroupingType = groupType;
+
+ const uint32_t entrySize = sizeof(uint32_t) + kKeyIdSize;
+ uint32_t defaultLength = 0;
+
+ if (version == 1) {
+ if (!reader->ReadU32(defaultLength)) {
+ return;
+ }
+ if (defaultLength < entrySize && defaultLength != 0) {
+ return;
+ }
+ }
+
+ uint32_t count;
+ if (!reader->ReadU32(count)) {
+ return;
+ }
+
+ // Make sure we have sufficient remaining bytes to read the entries.
+ need =
+ count * (sizeof(uint32_t) * (version == 1 && defaultLength == 0 ? 2 : 1) +
+ kKeyIdSize * sizeof(uint8_t));
+ if (reader->Remaining() < need) {
+ LOG(Sgpd, "Incomplete Box (have:%lld need:%lld). Failed to read entries",
+ (uint64_t)reader->Remaining(), (uint64_t)need);
+ return;
+ }
+ for (uint32_t i = 0; i < count; ++i) {
+ if (version == 1 && defaultLength == 0) {
+ uint32_t descriptionLength;
+ if (!reader->ReadU32(descriptionLength)) {
+ return;
+ }
+ if (descriptionLength < entrySize) {
+ return;
+ }
+ }
+
+ CencSampleEncryptionInfoEntry entry;
+ bool valid = entry.Init(reader);
+ if (!valid) {
+ return;
+ }
+ mEntries.AppendElement(entry);
+ }
+
+ mValid = true;
+}
+
+bool CencSampleEncryptionInfoEntry::Init(BoxReader& aReader)
+{
+ // Skip a reserved byte.
+ uint8_t skip;
+ if (!aReader->ReadU8(skip)) {
+ return false;
+ }
+
+ uint8_t possiblePatternInfo;
+ uint8_t flag;
+ if (!aReader->ReadU8(possiblePatternInfo) ||
+ !aReader->ReadU8(flag) ||
+ !aReader->ReadU8(mIVSize)) {
+ return false;
+ }
+
+ // Read the key id.
+ uint8_t key;
+ for (uint32_t i = 0; i < kKeyIdSize; ++i) {
+ if (!aReader->ReadU8(key)) {
+ return false;
+ }
+ mKeyId.AppendElement(key);
+ }
+
+ mIsEncrypted = flag != 0;
+
+ if (mIsEncrypted) {
+ if (mIVSize != 8 && mIVSize != 16) {
+ return false;
+ }
+ } else if (mIVSize != 0) {
+ return false;
+ }
+
+ return true;
+}
+
#undef LOG
}
diff --git a/media/libstagefright/binding/SinfParser.cpp b/media/libstagefright/binding/SinfParser.cpp
index 5cf3aa5536..5f3a2889e9 100644
--- a/media/libstagefright/binding/SinfParser.cpp
+++ b/media/libstagefright/binding/SinfParser.cpp
@@ -39,8 +39,13 @@ SinfParser::ParseSchm(Box& aBox)
return;
}
- mozilla::Unused << reader->ReadU32(); // flags -- ignore
- mSinf.mDefaultEncryptionType = reader->ReadU32();
+ uint32_t type;
+ if (!reader->Skip(4) ||
+ !reader->ReadU32(type)) {
+ NS_WARNING("Failed to parse schm data");
+ return;
+ }
+ mSinf.mDefaultEncryptionType = type;
}
void
@@ -62,11 +67,16 @@ SinfParser::ParseTenc(Box& aBox)
return;
}
- mozilla::Unused << reader->ReadU32(); // flags -- ignore
-
- uint32_t isEncrypted = reader->ReadU24();
- mSinf.mDefaultIVSize = reader->ReadU8();
- memcpy(mSinf.mDefaultKeyID, reader->Read(16), 16);
+ uint32_t isEncrypted;
+ const uint8_t* key;
+ if (!reader->Skip(4) || // flags -- ignore
+ !reader->ReadU24(isEncrypted) ||
+ !reader->ReadU8(mSinf.mDefaultIVSize) ||
+ !reader->Read(16, &key)) {
+ NS_WARNING("Failed to parse tenc data");
+ return;
+ }
+ memcpy(mSinf.mDefaultKeyID, key, 16);
}
}
diff --git a/media/libstagefright/binding/include/mp4_demuxer/Box.h b/media/libstagefright/binding/include/mp4_demuxer/Box.h
index f53404a1d4..6612f6b49e 100644
--- a/media/libstagefright/binding/include/mp4_demuxer/Box.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/Box.h
@@ -12,7 +12,7 @@
#include "MediaResource.h"
#include "mozilla/EndianUtils.h"
#include "mp4_demuxer/AtomType.h"
-#include "mp4_demuxer/ByteReader.h"
+#include "mp4_demuxer/BufferReader.h"
using namespace mozilla;
@@ -73,11 +73,11 @@ public:
, mReader(mBuffer.Elements(), mBuffer.Length())
{
}
- ByteReader* operator->() { return &mReader; }
+ BufferReader* operator->() { return &mReader; }
private:
nsTArray<uint8_t> mBuffer;
- ByteReader mReader;
+ BufferReader mReader;
};
}
diff --git a/media/libstagefright/binding/include/mp4_demuxer/BufferReader.h b/media/libstagefright/binding/include/mp4_demuxer/BufferReader.h
new file mode 100644
index 0000000000..160c97fa0d
--- /dev/null
+++ b/media/libstagefright/binding/include/mp4_demuxer/BufferReader.h
@@ -0,0 +1,225 @@
+/* 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 BUFFER_READER_H_
+#define BUFFER_READER_H_
+
+#include "mozilla/EndianUtils.h"
+#include "mozilla/Vector.h"
+#include "nsTArray.h"
+#include "MediaData.h"
+
+namespace mp4_demuxer {
+
+class MOZ_RAII BufferReader
+{
+public:
+ BufferReader() : mPtr(nullptr), mRemaining(0) {}
+ explicit BufferReader(const mozilla::Vector<uint8_t>& aData)
+ : mPtr(aData.begin()), mRemaining(aData.length()), mLength(aData.length())
+ {
+ }
+ BufferReader(const uint8_t* aData, size_t aSize)
+ : mPtr(aData), mRemaining(aSize), mLength(aSize)
+ {
+ }
+ template<size_t S>
+ explicit BufferReader(const AutoTArray<uint8_t, S>& aData)
+ : mPtr(aData.Elements()), mRemaining(aData.Length()), mLength(aData.Length())
+ {
+ }
+ explicit BufferReader(const nsTArray<uint8_t>& aData)
+ : mPtr(aData.Elements()), mRemaining(aData.Length()), mLength(aData.Length())
+ {
+ }
+ explicit BufferReader(const mozilla::MediaByteBuffer* aData)
+ : mPtr(aData->Elements()), mRemaining(aData->Length()), mLength(aData->Length())
+ {
+ }
+
+ void SetData(const nsTArray<uint8_t>& aData)
+ {
+ MOZ_ASSERT(!mPtr && !mRemaining);
+ mPtr = aData.Elements();
+ mRemaining = aData.Length();
+ mLength = mRemaining;
+ }
+
+ ~BufferReader()
+ {
+ }
+
+ size_t Offset() const
+ {
+ return mLength - mRemaining;
+ }
+
+ size_t Remaining() const { return mRemaining; }
+
+ bool CanRead8() const { return mRemaining >= 1; }
+
+ bool ReadU8(uint8_t& aU8)
+ {
+ const uint8_t* ptr;
+ if (!Read(1, &ptr)) {
+ NS_WARNING("Failed to read data");
+ return false;
+ }
+ aU8 = *ptr;
+ return true;
+ }
+
+ bool CanRead16() { return mRemaining >= 2; }
+
+ bool ReadU16(uint16_t& u16)
+ {
+ const uint8_t* ptr;
+ if (!Read(2, &ptr)) {
+ NS_WARNING("Failed to read data");
+ return false;
+ }
+ u16 = mozilla::BigEndian::readUint16(ptr);
+ return true;
+ }
+
+ bool CanRead32() { return mRemaining >= 4; }
+
+ bool ReadU32(uint32_t& u32)
+ {
+ const uint8_t* ptr;
+ if (!Read(4, &ptr)) {
+ NS_WARNING("Failed to read data");
+ return false;
+ }
+ u32 = mozilla::BigEndian::readUint32(ptr);
+ return true;
+ }
+
+ bool Read32(int32_t& i32)
+ {
+ const uint8_t* ptr;
+ if (!Read(4, &ptr)) {
+ NS_WARNING("Failed to read data");
+ return 0;
+ }
+ i32 = mozilla::BigEndian::readInt32(ptr);
+ return true;
+ }
+
+ bool ReadU64(uint64_t& u64)
+ {
+ const uint8_t* ptr;
+ if (!Read(8, &ptr)) {
+ NS_WARNING("Failed to read data");
+ return false;
+ }
+ u64 = mozilla::BigEndian::readUint64(ptr);
+ return true;
+ }
+
+ bool Read64(int64_t& i64)
+ {
+ const uint8_t* ptr;
+ if (!Read(8, &ptr)) {
+ NS_WARNING("Failed to read data");
+ return false;
+ }
+ i64 = mozilla::BigEndian::readInt64(ptr);
+ return true;
+ }
+
+ bool ReadU24(uint32_t& u32)
+ {
+ const uint8_t* ptr;
+ if (!Read(3, &ptr)) {
+ NS_WARNING("Failed to read data");
+ return false;
+ }
+ u32 = ptr[0] << 16 | ptr[1] << 8 | ptr[2];
+ return true;
+ }
+
+ bool Skip(size_t aCount)
+ {
+ const uint8_t* ptr;
+ if (!Read(aCount, &ptr)) {
+ NS_WARNING("Failed to skip data");
+ return false;
+ }
+ return true;
+ }
+
+ bool Read(size_t aCount, const uint8_t** aPtr)
+ {
+ if (aCount > mRemaining) {
+ mRemaining = 0;
+ return false;
+ }
+ mRemaining -= aCount;
+
+ *aPtr = mPtr;
+ mPtr += aCount;
+
+ return true;
+ }
+
+ uint32_t Align() const
+ {
+ return 4 - ((intptr_t)mPtr & 3);
+ }
+
+ template <typename T> bool CanReadType() const { return mRemaining >= sizeof(T); }
+
+ template <typename T> T ReadType()
+ {
+ const uint8_t* ptr;
+ if (!Read(sizeof(T), &ptr)) {
+ NS_WARNING("ReadType failed");
+ return 0;
+ }
+ return *reinterpret_cast<const T*>(ptr);
+ }
+
+ template <typename T>
+ MOZ_MUST_USE bool ReadArray(nsTArray<T>& aDest, size_t aLength)
+ {
+ const uint8_t* ptr;
+ if (!Read(aLength * sizeof(T), &ptr)) {
+ NS_WARNING("ReadArray failed");
+ return false;
+ }
+
+ aDest.Clear();
+ aDest.AppendElements(reinterpret_cast<const T*>(ptr), aLength);
+ return true;
+ }
+
+ template <typename T>
+ MOZ_MUST_USE bool ReadArray(FallibleTArray<T>& aDest, size_t aLength)
+ {
+ const uint8_t* ptr;
+ if (!Read(aLength * sizeof(T), &ptr)) {
+ NS_WARNING("ReadArray failed");
+ return false;
+ }
+
+ aDest.Clear();
+ if (!aDest.SetCapacity(aLength, mozilla::fallible)) {
+ return false;
+ }
+ MOZ_ALWAYS_TRUE(aDest.AppendElements(reinterpret_cast<const T*>(ptr),
+ aLength,
+ mozilla::fallible));
+ return true;
+ }
+
+private:
+ const uint8_t* mPtr;
+ size_t mRemaining;
+ size_t mLength;
+};
+
+} // namespace mp4_demuxer
+
+#endif
diff --git a/media/libstagefright/binding/include/mp4_demuxer/ByteReader.h b/media/libstagefright/binding/include/mp4_demuxer/ByteReader.h
index 9c7df04bd0..f316daa417 100644
--- a/media/libstagefright/binding/include/mp4_demuxer/ByteReader.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/ByteReader.h
@@ -63,7 +63,7 @@ public:
{
auto ptr = Read(1);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return *ptr;
@@ -75,7 +75,7 @@ public:
{
auto ptr = Read(2);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return mozilla::BigEndian::readUint16(ptr);
@@ -85,7 +85,7 @@ public:
{
auto ptr = Read(2);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return mozilla::LittleEndian::readInt16(ptr);
@@ -95,7 +95,7 @@ public:
{
auto ptr = Read(3);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return ptr[0] << 16 | ptr[1] << 8 | ptr[2];
@@ -110,7 +110,7 @@ public:
{
auto ptr = Read(3);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
int32_t result = int32_t(ptr[2] << 16 | ptr[1] << 8 | ptr[0]);
@@ -126,7 +126,7 @@ public:
{
auto ptr = Read(4);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return mozilla::BigEndian::readUint32(ptr);
@@ -136,7 +136,7 @@ public:
{
auto ptr = Read(4);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return mozilla::BigEndian::readInt32(ptr);
@@ -146,7 +146,7 @@ public:
{
auto ptr = Read(8);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return mozilla::BigEndian::readUint64(ptr);
@@ -156,7 +156,7 @@ public:
{
auto ptr = Read(8);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to read data");
return 0;
}
return mozilla::BigEndian::readInt64(ptr);
@@ -192,7 +192,7 @@ public:
{
auto ptr = Peek(1);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to peek data");
return 0;
}
return *ptr;
@@ -202,7 +202,7 @@ public:
{
auto ptr = Peek(2);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to peek data");
return 0;
}
return mozilla::BigEndian::readUint16(ptr);
@@ -212,7 +212,7 @@ public:
{
auto ptr = Peek(3);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to peek data");
return 0;
}
return ptr[0] << 16 | ptr[1] << 8 | ptr[2];
@@ -227,7 +227,7 @@ public:
{
auto ptr = Peek(4);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to peek data");
return 0;
}
return mozilla::BigEndian::readUint32(ptr);
@@ -237,7 +237,7 @@ public:
{
auto ptr = Peek(4);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to peek data");
return 0;
}
return mozilla::BigEndian::readInt32(ptr);
@@ -247,7 +247,7 @@ public:
{
auto ptr = Peek(8);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to peek data");
return 0;
}
return mozilla::BigEndian::readUint64(ptr);
@@ -257,7 +257,7 @@ public:
{
auto ptr = Peek(8);
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("Failed to peek data");
return 0;
}
return mozilla::BigEndian::readInt64(ptr);
@@ -274,7 +274,7 @@ public:
const uint8_t* Seek(size_t aOffset)
{
if (aOffset >= mLength) {
- MOZ_ASSERT(false);
+ NS_WARNING("Seek failed");
return nullptr;
}
@@ -301,7 +301,7 @@ public:
{
auto ptr = Read(sizeof(T));
if (!ptr) {
- MOZ_ASSERT(false);
+ NS_WARNING("ReadType failed");
return 0;
}
return *reinterpret_cast<const T*>(ptr);
@@ -312,6 +312,7 @@ public:
{
auto ptr = Read(aLength * sizeof(T));
if (!ptr) {
+ NS_WARNING("ReadArray failed");
return false;
}
@@ -325,6 +326,7 @@ public:
{
auto ptr = Read(aLength * sizeof(T));
if (!ptr) {
+ NS_WARNING("ReadArray failed");
return false;
}
diff --git a/media/libstagefright/binding/include/mp4_demuxer/Index.h b/media/libstagefright/binding/include/mp4_demuxer/Index.h
index d566c9459c..ca254f73da 100644
--- a/media/libstagefright/binding/include/mp4_demuxer/Index.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/Index.h
@@ -32,6 +32,9 @@ public:
Microseconds GetNextKeyframeTime();
private:
Sample* Get();
+
+ CencSampleEncryptionInfoEntry* GetSampleEncryptionEntry();
+
void Next();
RefPtr<Index> mIndex;
friend class Index;
diff --git a/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h b/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h
index 814f806fc2..bb895555c8 100644
--- a/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h
@@ -17,6 +17,7 @@ typedef int64_t Microseconds;
class Box;
class BoxContext;
+class BoxReader;
class Moof;
class Mvhd : public Atom
@@ -160,6 +161,53 @@ public:
FallibleTArray<uint64_t> mOffsets;
};
+struct SampleToGroupEntry
+{
+public:
+ static const uint32_t kTrackGroupDescriptionIndexBase = 0;
+ static const uint32_t kFragmentGroupDescriptionIndexBase = 0x10000;
+
+ SampleToGroupEntry(uint32_t aSampleCount, uint32_t aGroupDescriptionIndex)
+ : mSampleCount(aSampleCount)
+ , mGroupDescriptionIndex(aGroupDescriptionIndex)
+ {
+ }
+
+ uint32_t mSampleCount;
+ uint32_t mGroupDescriptionIndex;
+};
+
+class Sbgp final : public Atom // SampleToGroup box.
+{
+public:
+ explicit Sbgp(Box& aBox);
+
+ AtomType mGroupingType;
+ uint32_t mGroupingTypeParam;
+ nsTArray<SampleToGroupEntry> mEntries;
+};
+
+struct CencSampleEncryptionInfoEntry final
+{
+public:
+ CencSampleEncryptionInfoEntry() { }
+
+ bool Init(BoxReader& aReader);
+
+ bool mIsEncrypted = false;
+ uint8_t mIVSize = 0;
+ nsTArray<uint8_t> mKeyId;
+};
+
+class Sgpd final : public Atom // SampleGroupDescription box.
+{
+public:
+ explicit Sgpd(Box& aBox);
+
+ AtomType mGroupingType;
+ nsTArray<CencSampleEncryptionInfoEntry> mEntries;
+};
+
class AuxInfo {
public:
AuxInfo(int64_t aMoofOffset, Saiz& aSaiz, Saio& aSaio);
@@ -182,6 +230,9 @@ public:
Interval<Microseconds> mTimeRange;
FallibleTArray<Sample> mIndex;
+ nsTArray<CencSampleEncryptionInfoEntry> mFragmentSampleEncryptionInfoEntries;
+ nsTArray<SampleToGroupEntry> mFragmentSampleToGroupEntries;
+
nsTArray<Saiz> mSaizs;
nsTArray<Saio> mSaios;
@@ -246,6 +297,10 @@ public:
Tfdt mTfdt;
Edts mEdts;
Sinf mSinf;
+
+ nsTArray<CencSampleEncryptionInfoEntry> mTrackSampleEncryptionInfoEntries;
+ nsTArray<SampleToGroupEntry> mTrackSampleToGroupEntries;
+
nsTArray<Moof>& Moofs() { return mMoofs; }
private:
void ScanForMetadata(mozilla::MediaByteRange& aFtyp,
diff --git a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp
index e881e0262c..5667f04d87 100644
--- a/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp
+++ b/media/libstagefright/frameworks/av/media/libstagefright/MPEG4Extractor.cpp
@@ -753,7 +753,6 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {
case FOURCC('m', 'o', 'o', 'f'):
case FOURCC('t', 'r', 'a', 'f'):
case FOURCC('m', 'f', 'r', 'a'):
- case FOURCC('u', 'd', 't', 'a'):
case FOURCC('i', 'l', 's', 't'):
case FOURCC('s', 'i', 'n', 'f'):
case FOURCC('s', 'c', 'h', 'i'):
diff --git a/media/libstagefright/moz.build b/media/libstagefright/moz.build
index c6072d840f..5a8c9521a6 100644
--- a/media/libstagefright/moz.build
+++ b/media/libstagefright/moz.build
@@ -53,6 +53,7 @@ EXPORTS.mp4_demuxer += [
'binding/include/mp4_demuxer/Atom.h',
'binding/include/mp4_demuxer/AtomType.h',
'binding/include/mp4_demuxer/BitReader.h',
+ 'binding/include/mp4_demuxer/BufferReader.h',
'binding/include/mp4_demuxer/BufferStream.h',
'binding/include/mp4_demuxer/ByteReader.h',
'binding/include/mp4_demuxer/ByteWriter.h',
diff --git a/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp b/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp
index 2c57431e78..e36b8b6cf4 100755
--- a/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp
+++ b/media/webrtc/signaling/src/media-conduit/AudioConduit.cpp
@@ -706,15 +706,6 @@ WebrtcAudioConduit::GetAudioFrame(int16_t speechData[],
if (GetAVStats(&jitter_buffer_delay_ms,
&playout_buffer_delay_ms,
&avsync_offset_ms)) {
-#if !defined(MOZILLA_EXTERNAL_LINKAGE)
- if (avsync_offset_ms < 0) {
- Telemetry::Accumulate(Telemetry::WEBRTC_AVSYNC_WHEN_VIDEO_LAGS_AUDIO_MS,
- -avsync_offset_ms);
- } else {
- Telemetry::Accumulate(Telemetry::WEBRTC_AVSYNC_WHEN_AUDIO_LAGS_VIDEO_MS,
- avsync_offset_ms);
- }
-#endif
CSFLogError(logTag,
"A/V sync: sync delta: %dms, audio jitter delay %dms, playout delay %dms",
avsync_offset_ms, jitter_buffer_delay_ms, playout_buffer_delay_ms);
diff --git a/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp b/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp
index eb03c0bf80..da40a59eac 100644
--- a/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp
+++ b/media/webrtc/signaling/src/media-conduit/CodecStatistics.cpp
@@ -124,8 +124,6 @@ void VideoCodecStatistics::ReceiveStateChange(const int aChannel,
TimeDuration timeDelta = TimeStamp::Now() - mReceiveFailureTime;
CSFLogError(logTag, "Video error duration: %u ms",
static_cast<uint32_t>(timeDelta.ToMilliseconds()));
- Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_ERROR_RECOVERY_MS,
- static_cast<uint32_t>(timeDelta.ToMilliseconds()));
mRecoveredLosses++; // to calculate losses per minute
mTotalLossTime += timeDelta; // To calculate % time in recovery
@@ -147,16 +145,10 @@ void VideoCodecStatistics::EndOfCallStats()
if (callDelta.ToSeconds() != 0) {
uint32_t recovered_per_min = mRecoveredBeforeLoss/(callDelta.ToSeconds()/60);
CSFLogError(logTag, "Video recovery before error per min %u", recovered_per_min);
- Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_RECOVERY_BEFORE_ERROR_PER_MIN,
- recovered_per_min);
uint32_t err_per_min = mRecoveredLosses/(callDelta.ToSeconds()/60);
CSFLogError(logTag, "Video recovery after error per min %u", err_per_min);
- Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_RECOVERY_AFTER_ERROR_PER_MIN,
- err_per_min);
float percent = (mTotalLossTime.ToSeconds()*100)/callDelta.ToSeconds();
CSFLogError(logTag, "Video error time percentage %f%%", percent);
- Telemetry::Accumulate(Telemetry::WEBRTC_VIDEO_DECODE_ERROR_TIME_PERMILLE,
- static_cast<uint32_t>(percent*10));
}
}
#endif
diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
index 33422ed7a6..43d10ca86b 100644
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
@@ -2245,22 +2245,6 @@ PeerConnectionImpl::AddIceCandidate(const char* aCandidate, const char* aMid, un
CSFLogDebug(logTag, "AddIceCandidate: %s", aCandidate);
-#if !defined(MOZILLA_EXTERNAL_LINKAGE)
- // When remote candidates are added before our ICE ctx is up and running
- // (the transition to New is async through STS, so this is not impossible),
- // we won't record them as trickle candidates. Is this what we want?
- if(!mIceStartTime.IsNull()) {
- TimeDuration timeDelta = TimeStamp::Now() - mIceStartTime;
- if (mIceConnectionState == PCImplIceConnectionState::Failed) {
- Telemetry::Accumulate(Telemetry::WEBRTC_ICE_LATE_TRICKLE_ARRIVAL_TIME,
- timeDelta.ToMilliseconds());
- } else {
- Telemetry::Accumulate(Telemetry::WEBRTC_ICE_ON_TIME_TRICKLE_ARRIVAL_TIME,
- timeDelta.ToMilliseconds());
- }
- }
-#endif
-
nsresult res = mJsepSession->AddRemoteIceCandidate(aCandidate, aMid, aLevel);
if (NS_SUCCEEDED(res)) {
@@ -3011,49 +2995,7 @@ PeerConnectionImpl::PluginCrash(uint32_t aPluginID,
void
PeerConnectionImpl::RecordEndOfCallTelemetry() const
{
- if (!mJsepSession) {
- return;
- }
-
-#if !defined(MOZILLA_EXTERNAL_LINKAGE)
- // Bitmask used for WEBRTC/LOOP_CALL_TYPE telemetry reporting
- static const uint32_t kAudioTypeMask = 1;
- static const uint32_t kVideoTypeMask = 2;
- static const uint32_t kDataChannelTypeMask = 4;
-
- // Report end-of-call Telemetry
- if (mJsepSession->GetNegotiations() > 0) {
- Telemetry::Accumulate(Telemetry::WEBRTC_RENEGOTIATIONS,
- mJsepSession->GetNegotiations()-1);
- }
- Telemetry::Accumulate(Telemetry::WEBRTC_MAX_VIDEO_SEND_TRACK,
- mMaxSending[SdpMediaSection::MediaType::kVideo]);
- Telemetry::Accumulate(Telemetry::WEBRTC_MAX_VIDEO_RECEIVE_TRACK,
- mMaxReceiving[SdpMediaSection::MediaType::kVideo]);
- Telemetry::Accumulate(Telemetry::WEBRTC_MAX_AUDIO_SEND_TRACK,
- mMaxSending[SdpMediaSection::MediaType::kAudio]);
- Telemetry::Accumulate(Telemetry::WEBRTC_MAX_AUDIO_RECEIVE_TRACK,
- mMaxReceiving[SdpMediaSection::MediaType::kAudio]);
- // DataChannels appear in both Sending and Receiving
- Telemetry::Accumulate(Telemetry::WEBRTC_DATACHANNEL_NEGOTIATED,
- mMaxSending[SdpMediaSection::MediaType::kApplication]);
- // Enumerated/bitmask: 1 = Audio, 2 = Video, 4 = DataChannel
- // A/V = 3, A/V/D = 7, etc
- uint32_t type = 0;
- if (mMaxSending[SdpMediaSection::MediaType::kAudio] ||
- mMaxReceiving[SdpMediaSection::MediaType::kAudio]) {
- type = kAudioTypeMask;
- }
- if (mMaxSending[SdpMediaSection::MediaType::kVideo] ||
- mMaxReceiving[SdpMediaSection::MediaType::kVideo]) {
- type |= kVideoTypeMask;
- }
- if (mMaxSending[SdpMediaSection::MediaType::kApplication]) {
- type |= kDataChannelTypeMask;
- }
- Telemetry::Accumulate(Telemetry::WEBRTC_CALL_TYPE,
- type);
-#endif
+ /* STUB */
}
nsresult
@@ -3109,13 +3051,6 @@ PeerConnectionImpl::ShutdownMedia()
pair.second->RemovePrincipalChangeObserver(this);
}
}
-
- // End of call to be recorded in Telemetry
- if (!mStartTime.IsNull()){
- TimeDuration timeDelta = TimeStamp::Now() - mStartTime;
- Telemetry::Accumulate(Telemetry::WEBRTC_CALL_DURATION,
- timeDelta.ToSeconds());
- }
#endif
// Forget the reference so that we can transfer it to
@@ -3423,33 +3358,6 @@ void PeerConnectionImpl::IceConnectionStateChange(
return;
}
-#if !defined(MOZILLA_EXTERNAL_LINKAGE)
- if (!isDone(mIceConnectionState) && isDone(domState)) {
- // mIceStartTime can be null if going directly from New to Closed, in which
- // case we don't count it as a success or a failure.
- if (!mIceStartTime.IsNull()){
- TimeDuration timeDelta = TimeStamp::Now() - mIceStartTime;
- if (isSucceeded(domState)) {
- Telemetry::Accumulate(Telemetry::WEBRTC_ICE_SUCCESS_TIME,
- timeDelta.ToMilliseconds());
- } else if (isFailed(domState)) {
- Telemetry::Accumulate(Telemetry::WEBRTC_ICE_FAILURE_TIME,
- timeDelta.ToMilliseconds());
- }
- }
-
- if (isSucceeded(domState)) {
- Telemetry::Accumulate(
- Telemetry::WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_SUCCESS,
- mAddCandidateErrorCount);
- } else if (isFailed(domState)) {
- Telemetry::Accumulate(
- Telemetry::WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_FAILURE,
- mAddCandidateErrorCount);
- }
- }
-#endif
-
mIceConnectionState = domState;
if (mIceConnectionState == PCImplIceConnectionState::Connected ||
@@ -3467,10 +3375,6 @@ void PeerConnectionImpl::IceConnectionStateChange(
STAMP_TIMECARD(mTimeCard, "Ice state: new");
break;
case PCImplIceConnectionState::Checking:
-#if !defined(MOZILLA_EXTERNAL_LINKAGE)
- // For telemetry
- mIceStartTime = TimeStamp::Now();
-#endif
STAMP_TIMECARD(mTimeCard, "Ice state: checking");
break;
case PCImplIceConnectionState::Connected:
@@ -4067,16 +3971,7 @@ PeerConnectionImpl::IceStreamReady(NrIceMediaStream *aStream)
//Telemetry for when calls start
void
PeerConnectionImpl::startCallTelem() {
- if (!mStartTime.IsNull()) {
- return;
- }
-
- // Start time for calls
- mStartTime = TimeStamp::Now();
-
- // Increment session call counter
- // If we want to track Loop calls independently here, we need two histograms.
- Telemetry::Accumulate(Telemetry::WEBRTC_CALL_COUNT_2, 1);
+ /* STUB */
}
#endif
diff --git a/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp b/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp
index 96bdd5b70f..f283d61110 100644
--- a/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp
+++ b/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp
@@ -1194,18 +1194,8 @@ static void GetStatsForLongTermStorage_s(
rate_limit_bit_pattern |= 2;
}
- if (query->failed) {
- Telemetry::Accumulate(
- Telemetry::WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_FAILURE,
- rate_limit_bit_pattern);
- } else {
- Telemetry::Accumulate(
- Telemetry::WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_SUCCESS,
- rate_limit_bit_pattern);
- }
-
- // Even if Telemetry::Accumulate is threadsafe, we still need to send the
- // query back to main, since that is where it must be destroyed.
+ // We still need to send the query back to main, since that is where
+ // it must be destroyed.
NS_DispatchToMainThread(
WrapRunnableNM(
&StoreLongTermICEStatisticsImpl_m,
@@ -1216,8 +1206,6 @@ static void GetStatsForLongTermStorage_s(
void WebrtcGlobalInformation::StoreLongTermICEStatistics(
PeerConnectionImpl& aPc) {
- Telemetry::Accumulate(Telemetry::WEBRTC_ICE_FINAL_CONNECTION_STATE,
- static_cast<uint32_t>(aPc.IceConnectionState()));
if (aPc.IceConnectionState() == PCImplIceConnectionState::New) {
// ICE has not started; we won't have any remote candidates, so recording
diff --git a/mfbt/EnumSet.h b/mfbt/EnumSet.h
index 5282ab30c3..b18b5a7696 100644
--- a/mfbt/EnumSet.h
+++ b/mfbt/EnumSet.h
@@ -335,7 +335,7 @@ private:
uint32_t mBitField;
#ifdef DEBUG
- uint64_t mVersion;
+ uint64_t mVersion = 0;
#endif
};
diff --git a/mfbt/tests/TestTypeTraits.cpp b/mfbt/tests/TestTypeTraits.cpp
index f0a5651429..eb412bc54c 100644
--- a/mfbt/tests/TestTypeTraits.cpp
+++ b/mfbt/tests/TestTypeTraits.cpp
@@ -70,8 +70,8 @@ static_assert(!IsPointer<IsPointerTest>::value,
"IsPointerTest not a pointer");
static_assert(IsPointer<IsPointerTest*>::value,
"IsPointerTest* is a pointer");
-static_assert(!IsPointer<bool(IsPointerTest::*)>::value,
- "bool(IsPointerTest::*) not a pointer");
+static_assert(!IsPointer<bool(IsPointerTest::*)()>::value,
+ "bool(IsPointerTest::*)() not a pointer");
static_assert(!IsPointer<void(IsPointerTest::*)(void)>::value,
"void(IsPointerTest::*)(void) not a pointer");
diff --git a/mobile/android/.eslintrc b/mobile/android/.eslintrc
index ce106c2d11..db673a6b7d 100644
--- a/mobile/android/.eslintrc
+++ b/mobile/android/.eslintrc
@@ -24,7 +24,6 @@ globals:
strings: false
Strings: false
Task: false
- TelemetryStopwatch: false
UITelemetry: false
UserAgentOverrides: 0
XPCOMUtils: false
diff --git a/mobile/android/chrome/content/aboutLogins.js b/mobile/android/chrome/content/aboutLogins.js
index 99e2af841a..b3d0038759 100644
--- a/mobile/android/chrome/content/aboutLogins.js
+++ b/mobile/android/chrome/content/aboutLogins.js
@@ -8,7 +8,6 @@ Cu.import("resource://services-common/utils.js"); /*global: CommonUtils */
Cu.import("resource://gre/modules/Messaging.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyGetter(window, "gChromeWin", () =>
window.QueryInterface(Ci.nsIInterfaceRequestor)
diff --git a/mobile/android/components/SessionStore.js b/mobile/android/components/SessionStore.js
index 18ac6bf940..a23c52fe33 100644
--- a/mobile/android/components/SessionStore.js
+++ b/mobile/android/components/SessionStore.js
@@ -16,7 +16,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "Messaging", "resource://gre/modules/Mes
XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils", "resource://gre/modules/PrivateBrowsingUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "FormData", "resource://gre/modules/FormData.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "ScrollPosition", "resource://gre/modules/ScrollPosition.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch", "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Log", "resource://gre/modules/AndroidLog.jsm", "AndroidLog");
XPCOMUtils.defineLazyModuleGetter(this, "SharedPreferences", "resource://gre/modules/SharedPreferences.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Utils", "resource://gre/modules/sessionstore/Utils.jsm");
@@ -1053,9 +1052,7 @@ SessionStore.prototype = {
* @param aAsync boolelan used to determine the method of saving the state
*/
_writeFile: function ss_writeFile(aFile, aFileTemp, aData, aAsync) {
- TelemetryStopwatch.start("FX_SESSION_RESTORE_SERIALIZE_DATA_MS");
let state = JSON.stringify(aData);
- TelemetryStopwatch.finish("FX_SESSION_RESTORE_SERIALIZE_DATA_MS");
// Convert data string to a utf-8 encoded array buffer
let buffer = new TextEncoder().encode(state);
diff --git a/modules/libjar/nsJARChannel.cpp b/modules/libjar/nsJARChannel.cpp
index 4b6b78c6d2..ee60602dae 100644
--- a/modules/libjar/nsJARChannel.cpp
+++ b/modules/libjar/nsJARChannel.cpp
@@ -22,7 +22,6 @@
#include "nsIFileURL.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "nsITabChild.h"
#include "private/pprio.h"
#include "nsInputStreamPump.h"
@@ -791,12 +790,6 @@ nsJARChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctx)
return NS_ERROR_UNSAFE_CONTENT_TYPE;
}
- static bool reportedRemoteJAR = false;
- if (!reportedRemoteJAR) {
- reportedRemoteJAR = true;
- Telemetry::Accumulate(Telemetry::REMOTE_JAR_PROTOCOL_USED, 1);
- }
-
// kick off an async download of the base URI...
nsCOMPtr<nsIStreamListener> downloader = new MemoryDownloader(this);
uint32_t loadFlags =
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 7172a8a90a..1eee30210d 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -247,6 +247,10 @@ pref("dom.compartment_per_addon", true);
// of content viewers to cache based on the amount of available memory.
pref("browser.sessionhistory.max_total_viewers", -1);
+// Whether to store 'about:newtab' in the session history, disabled by default.
+// See https://github.com/MoonchildProductions/UXP/issues/719
+pref("browser.newtabpage.add_to_session_history", false);
+
pref("ui.use_native_colors", true);
pref("ui.click_hold_context_menus", false);
// Duration of timeout of incremental search in menus (ms). 0 means infinite.
@@ -273,6 +277,9 @@ pref("browser.display.show_image_placeholders", true);
pref("browser.display.show_loading_image_placeholder", false);
// min font device pixel size at which to turn on high quality
pref("browser.display.auto_quality_min_font_size", 20);
+// Background color for standalone images; leave empty to use default
+// all CSS colors available: named colors, rgb(..), #rrggbb, ...
+pref("browser.display.standalone_images.background_color", "");
pref("browser.anchor_color", "#0000EE");
pref("browser.active_color", "#EE0000");
pref("browser.visited_color", "#551A8B");
@@ -919,16 +926,16 @@ pref("toolkit.scrollbox.clickToScroll.scrollDelay", 150);
// Telemetry settings.
// Server to submit telemetry pings to.
-pref("toolkit.telemetry.server", "https://incoming.telemetry.mozilla.org");
+pref("toolkit.telemetry.server", "");
// Telemetry server owner. Please change if you set toolkit.telemetry.server to a different server
-pref("toolkit.telemetry.server_owner", "Mozilla");
+pref("toolkit.telemetry.server_owner", "");
// Information page about telemetry (temporary ; will be about:telemetry in the end)
-pref("toolkit.telemetry.infoURL", "https://www.mozilla.org/legal/privacy/firefox.html#telemetry");
+pref("toolkit.telemetry.infoURL", "");
// Determines whether full SQL strings are returned when they might contain sensitive info
// i.e. dynamically constructed SQL strings or SQL executed by addons against addon DBs
pref("toolkit.telemetry.debugSlowSql", false);
// Whether to use the unified telemetry behavior, requires a restart.
-pref("toolkit.telemetry.unified", true);
+pref("toolkit.telemetry.unified", false);
// Identity module
pref("toolkit.identity.enabled", false);
@@ -1435,11 +1442,7 @@ pref("network.http.response.timeout", 300);
// Limit the absolute number of http connections.
// Note: the socket transport service will clamp the number below this if the OS
// cannot allocate that many FDs
-#ifdef ANDROID
pref("network.http.max-connections", 256);
-#else
-pref("network.http.max-connections", 900);
-#endif
// If NOT connecting via a proxy, then
// a new connection will only be attempted if the number of active persistent
@@ -1487,13 +1490,13 @@ pref("network.http.redirection-limit", 20);
pref("network.http.accept-encoding", "gzip, deflate");
pref("network.http.accept-encoding.secure", "gzip, deflate, br");
-pref("network.http.pipelining" , false);
+pref("network.http.pipelining" , true);
pref("network.http.pipelining.ssl" , false); // disable pipelining over SSL
pref("network.http.pipelining.abtest", false);
pref("network.http.proxy.pipelining", false);
// Max number of requests in the pipeline
-pref("network.http.pipelining.maxrequests" , 32);
+pref("network.http.pipelining.maxrequests" , 16);
// An optimistic request is one pipelined when policy might allow a new
// connection instead
@@ -2206,6 +2209,10 @@ pref("ui.key.contentAccess", 5);
pref("ui.key.menuAccessKeyFocuses", false); // overridden below
pref("ui.key.saveLink.shift", true); // true = shift, false = meta
+// When true, overrides OS convention to lock content scrolling
+// if a contextual menu is open.
+pref("ui.menu.allow_content_scroll", false);
+
// Disable page loading activity cursor by default.
pref("ui.use_activity_cursor", false);
@@ -2837,12 +2844,7 @@ pref("dom.ipc.plugins.unloadTimeoutSecs", 30);
// Asynchronous plugin initialization is on hold.
pref("dom.ipc.plugins.asyncInit.enabled", false);
-#ifdef RELEASE_OR_BETA
-pref("dom.ipc.plugins.asyncdrawing.enabled", false);
-#else
-// Allow the AsyncDrawing mode to be used for plugins in dev channels.
pref("dom.ipc.plugins.asyncdrawing.enabled", true);
-#endif
pref("dom.ipc.processCount", 1);
@@ -4601,8 +4603,8 @@ pref("gfx.direct2d.force-enabled", false);
pref("layers.prefer-opengl", false);
pref("layers.prefer-d3d9", false);
-// Disable for now due to bug 1304360
-pref("layers.allow-d3d9-fallback", false);
+// Enable fallback if d3d11 can't be used. See bug #1262187
+pref("layers.allow-d3d9-fallback", true);
#endif
// Copy-on-write canvas
@@ -4723,7 +4725,8 @@ pref("dom.vibrator.max_vibrate_ms", 10000);
pref("dom.vibrator.max_vibrate_list_len", 128);
// Battery API
-pref("dom.battery.enabled", true);
+// Disabled by default to reduce private data exposure.
+pref("dom.battery.enabled", false);
// Push
diff --git a/modules/zlib/src/ChangeLog b/modules/zlib/src/ChangeLog
index f22aabaef5..b27cc4f0e7 100644
--- a/modules/zlib/src/ChangeLog
+++ b/modules/zlib/src/ChangeLog
@@ -1,10 +1,53 @@
ChangeLog file for zlib
+Changes in 1.2.11 (15 Jan 2017)
+- Fix deflate stored bug when pulling last block from window
+- Permit immediate deflateParams changes before any deflate input
+
+Changes in 1.2.10 (2 Jan 2017)
+- Avoid warnings on snprintf() return value
+- Fix bug in deflate_stored() for zero-length input
+- Fix bug in gzwrite.c that produced corrupt gzip files
+- Remove files to be installed before copying them in Makefile.in
+- Add warnings when compiling with assembler code
+
+Changes in 1.2.9 (31 Dec 2016)
+- Fix contrib/minizip to permit unzipping with desktop API [Zouzou]
+- Improve contrib/blast to return unused bytes
+- Assure that gzoffset() is correct when appending
+- Improve compress() and uncompress() to support large lengths
+- Fix bug in test/example.c where error code not saved
+- Remedy Coverity warning [Randers-Pehrson]
+- Improve speed of gzprintf() in transparent mode
+- Fix inflateInit2() bug when windowBits is 16 or 32
+- Change DEBUG macro to ZLIB_DEBUG
+- Avoid uninitialized access by gzclose_w()
+- Allow building zlib outside of the source directory
+- Fix bug that accepted invalid zlib header when windowBits is zero
+- Fix gzseek() problem on MinGW due to buggy _lseeki64 there
+- Loop on write() calls in gzwrite.c in case of non-blocking I/O
+- Add --warn (-w) option to ./configure for more compiler warnings
+- Reject a window size of 256 bytes if not using the zlib wrapper
+- Fix bug when level 0 used with Z_HUFFMAN or Z_RLE
+- Add --debug (-d) option to ./configure to define ZLIB_DEBUG
+- Fix bugs in creating a very large gzip header
+- Add uncompress2() function, which returns the input size used
+- Assure that deflateParams() will not switch functions mid-block
+- Dramatically speed up deflation for level 0 (storing)
+- Add gzfread(), duplicating the interface of fread()
+- Add gzfwrite(), duplicating the interface of fwrite()
+- Add deflateGetDictionary() function
+- Use snprintf() for later versions of Microsoft C
+- Fix *Init macros to use z_ prefix when requested
+- Replace as400 with os400 for OS/400 support [Monnerat]
+- Add crc32_z() and adler32_z() functions with size_t lengths
+- Update Visual Studio project files [AraHaan]
+
Changes in 1.2.8 (28 Apr 2013)
- Update contrib/minizip/iowin32.c for Windows RT [Vollant]
- Do not force Z_CONST for C++
-- Clean up contrib/vstudio [Ro§]
+- Clean up contrib/vstudio [Ro§]
- Correct spelling error in zlib.h
- Fix mixed line endings in contrib/vstudio
@@ -34,7 +77,7 @@ Changes in 1.2.7.1 (24 Mar 2013)
- Clean up the usage of z_const and respect const usage within zlib
- Clean up examples/gzlog.[ch] comparisons of different types
- Avoid shift equal to bits in type (caused endless loop)
-- Fix unintialized value bug in gzputc() introduced by const patches
+- Fix uninitialized value bug in gzputc() introduced by const patches
- Fix memory allocation error in examples/zran.c [Nor]
- Fix bug where gzopen(), gzclose() would write an empty file
- Fix bug in gzclose() when gzwrite() runs out of memory
@@ -194,7 +237,7 @@ Changes in 1.2.5.2 (17 Dec 2011)
- Add a transparent write mode to gzopen() when 'T' is in the mode
- Update python link in zlib man page
- Get inffixed.h and MAKEFIXED result to match
-- Add a ./config --solo option to make zlib subset with no libary use
+- Add a ./config --solo option to make zlib subset with no library use
- Add undocumented inflateResetKeep() function for CAB file decoding
- Add --cover option to ./configure for gcc coverage testing
- Add #define ZLIB_CONST option to use const in the z_stream interface
@@ -564,7 +607,7 @@ Changes in 1.2.3.1 (16 August 2006)
- Update make_vms.com [Zinser]
- Use -fPIC for shared build in configure [Teredesai, Nicholson]
- Use only major version number for libz.so on IRIX and OSF1 [Reinholdtsen]
-- Use fdopen() (not _fdopen()) for Interix in zutil.h [BŠck]
+- Use fdopen() (not _fdopen()) for Interix in zutil.h [BŠck]
- Add some FAQ entries about the contrib directory
- Update the MVS question in the FAQ
- Avoid extraneous reads after EOF in gzio.c [Brown]
@@ -1178,7 +1221,7 @@ Changes in 1.0.6 (19 Jan 1998)
386 asm code replacing longest_match().
contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
A C++ I/O streams interface to the zlib gz* functions
- contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no>
+ contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no>
Another C++ I/O streams interface
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
A very simple tar.gz file extractor using zlib
@@ -1267,7 +1310,7 @@ Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
- fix MSDOS medium model which was broken in 0.99
-- fix deflateParams() which could generated bad compressed data.
+- fix deflateParams() which could generate bad compressed data.
- Bytef is define'd instead of typedef'ed (work around Borland bug)
- added an INDEX file
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
diff --git a/modules/zlib/src/ChangeLog.moz b/modules/zlib/src/ChangeLog.moz
index 12755d05a2..98cd9f9c79 100644
--- a/modules/zlib/src/ChangeLog.moz
+++ b/modules/zlib/src/ChangeLog.moz
@@ -63,3 +63,7 @@ Mozilla.org changes:
(keeping '#include "mozzconf.h"' in zconf.h)
See bug #866964
+- 16 January 2017
+ Sync'ed with 1.2.11 release
+ (keeping '#include "mozzconf.h"' in zconf.h)
+ See bug #1328099
diff --git a/modules/zlib/src/README b/modules/zlib/src/README
index 5ca9d127ed..51106de475 100644
--- a/modules/zlib/src/README
+++ b/modules/zlib/src/README
@@ -1,6 +1,6 @@
ZLIB DATA COMPRESSION LIBRARY
-zlib 1.2.8 is a general purpose data compression library. All the code is
+zlib 1.2.11 is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
@@ -31,7 +31,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available at
http://marknelson.us/1997/01/01/zlib-engine/ .
-The changes made in version 1.2.8 are documented in the file ChangeLog.
+The changes made in version 1.2.11 are documented in the file ChangeLog.
Unsupported third party contributions are provided in directory contrib/ .
@@ -84,7 +84,7 @@ Acknowledgments:
Copyright notice:
- (C) 1995-2013 Jean-loup Gailly and Mark Adler
+ (C) 1995-2017 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
diff --git a/modules/zlib/src/adler32.c b/modules/zlib/src/adler32.c
index a868f073d8..d0be4380a3 100644
--- a/modules/zlib/src/adler32.c
+++ b/modules/zlib/src/adler32.c
@@ -1,5 +1,5 @@
/* adler32.c -- compute the Adler-32 checksum of a data stream
- * Copyright (C) 1995-2011 Mark Adler
+ * Copyright (C) 1995-2011, 2016 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -7,11 +7,9 @@
#include "zutil.h"
-#define local static
-
local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
-#define BASE 65521 /* largest prime smaller than 65536 */
+#define BASE 65521U /* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
@@ -62,10 +60,10 @@ local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
#endif
/* ========================================================================= */
-uLong ZEXPORT adler32(adler, buf, len)
+uLong ZEXPORT adler32_z(adler, buf, len)
uLong adler;
const Bytef *buf;
- uInt len;
+ z_size_t len;
{
unsigned long sum2;
unsigned n;
@@ -133,6 +131,15 @@ uLong ZEXPORT adler32(adler, buf, len)
}
/* ========================================================================= */
+uLong ZEXPORT adler32(adler, buf, len)
+ uLong adler;
+ const Bytef *buf;
+ uInt len;
+{
+ return adler32_z(adler, buf, len);
+}
+
+/* ========================================================================= */
local uLong adler32_combine_(adler1, adler2, len2)
uLong adler1;
uLong adler2;
@@ -156,7 +163,7 @@ local uLong adler32_combine_(adler1, adler2, len2)
sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
if (sum1 >= BASE) sum1 -= BASE;
if (sum1 >= BASE) sum1 -= BASE;
- if (sum2 >= (BASE << 1)) sum2 -= (BASE << 1);
+ if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1);
if (sum2 >= BASE) sum2 -= BASE;
return sum1 | (sum2 << 16);
}
diff --git a/modules/zlib/src/compress.c b/modules/zlib/src/compress.c
index 6e9762676a..e2db404abf 100644
--- a/modules/zlib/src/compress.c
+++ b/modules/zlib/src/compress.c
@@ -1,5 +1,5 @@
/* compress.c -- compress a memory buffer
- * Copyright (C) 1995-2005 Jean-loup Gailly.
+ * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -28,16 +28,11 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
{
z_stream stream;
int err;
+ const uInt max = (uInt)-1;
+ uLong left;
- stream.next_in = (z_const Bytef *)source;
- stream.avail_in = (uInt)sourceLen;
-#ifdef MAXSEG_64K
- /* Check for source > 64K on 16-bit machine: */
- if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
-#endif
- stream.next_out = dest;
- stream.avail_out = (uInt)*destLen;
- if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
+ left = *destLen;
+ *destLen = 0;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
@@ -46,15 +41,26 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
err = deflateInit(&stream, level);
if (err != Z_OK) return err;
- err = deflate(&stream, Z_FINISH);
- if (err != Z_STREAM_END) {
- deflateEnd(&stream);
- return err == Z_OK ? Z_BUF_ERROR : err;
- }
- *destLen = stream.total_out;
+ stream.next_out = dest;
+ stream.avail_out = 0;
+ stream.next_in = (z_const Bytef *)source;
+ stream.avail_in = 0;
+
+ do {
+ if (stream.avail_out == 0) {
+ stream.avail_out = left > (uLong)max ? max : (uInt)left;
+ left -= stream.avail_out;
+ }
+ if (stream.avail_in == 0) {
+ stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen;
+ sourceLen -= stream.avail_in;
+ }
+ err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH);
+ } while (err == Z_OK);
- err = deflateEnd(&stream);
- return err;
+ *destLen = stream.total_out;
+ deflateEnd(&stream);
+ return err == Z_STREAM_END ? Z_OK : err;
}
/* ===========================================================================
diff --git a/modules/zlib/src/crc32.c b/modules/zlib/src/crc32.c
index 979a7190a3..9580440c0e 100644
--- a/modules/zlib/src/crc32.c
+++ b/modules/zlib/src/crc32.c
@@ -1,5 +1,5 @@
/* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2006, 2010, 2011, 2012 Mark Adler
+ * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*
* Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
@@ -30,17 +30,15 @@
#include "zutil.h" /* for STDC and FAR definitions */
-#define local static
-
/* Definitions for doing the crc four data bytes at a time. */
#if !defined(NOBYFOUR) && defined(Z_U4)
# define BYFOUR
#endif
#ifdef BYFOUR
local unsigned long crc32_little OF((unsigned long,
- const unsigned char FAR *, unsigned));
+ const unsigned char FAR *, z_size_t));
local unsigned long crc32_big OF((unsigned long,
- const unsigned char FAR *, unsigned));
+ const unsigned char FAR *, z_size_t));
# define TBLS 8
#else
# define TBLS 1
@@ -201,10 +199,10 @@ const z_crc_t FAR * ZEXPORT get_crc_table()
#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
/* ========================================================================= */
-unsigned long ZEXPORT crc32(crc, buf, len)
+unsigned long ZEXPORT crc32_z(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
- uInt len;
+ z_size_t len;
{
if (buf == Z_NULL) return 0UL;
@@ -235,8 +233,29 @@ unsigned long ZEXPORT crc32(crc, buf, len)
return crc ^ 0xffffffffUL;
}
+/* ========================================================================= */
+unsigned long ZEXPORT crc32(crc, buf, len)
+ unsigned long crc;
+ const unsigned char FAR *buf;
+ uInt len;
+{
+ return crc32_z(crc, buf, len);
+}
+
#ifdef BYFOUR
+/*
+ This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
+ integer pointer type. This violates the strict aliasing rule, where a
+ compiler can assume, for optimization purposes, that two pointers to
+ fundamentally different types won't ever point to the same memory. This can
+ manifest as a problem only if one of the pointers is written to. This code
+ only reads from those pointers. So long as this code remains isolated in
+ this compilation unit, there won't be a problem. For this reason, this code
+ should not be copied and pasted into a compilation unit in which other code
+ writes to the buffer that is passed to these routines.
+ */
+
/* ========================================================================= */
#define DOLIT4 c ^= *buf4++; \
c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
@@ -247,7 +266,7 @@ unsigned long ZEXPORT crc32(crc, buf, len)
local unsigned long crc32_little(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
- unsigned len;
+ z_size_t len;
{
register z_crc_t c;
register const z_crc_t FAR *buf4;
@@ -278,7 +297,7 @@ local unsigned long crc32_little(crc, buf, len)
}
/* ========================================================================= */
-#define DOBIG4 c ^= *++buf4; \
+#define DOBIG4 c ^= *buf4++; \
c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
@@ -287,7 +306,7 @@ local unsigned long crc32_little(crc, buf, len)
local unsigned long crc32_big(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
- unsigned len;
+ z_size_t len;
{
register z_crc_t c;
register const z_crc_t FAR *buf4;
@@ -300,7 +319,6 @@ local unsigned long crc32_big(crc, buf, len)
}
buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
- buf4--;
while (len >= 32) {
DOBIG32;
len -= 32;
@@ -309,7 +327,6 @@ local unsigned long crc32_big(crc, buf, len)
DOBIG4;
len -= 4;
}
- buf4++;
buf = (const unsigned char FAR *)buf4;
if (len) do {
diff --git a/modules/zlib/src/deflate.c b/modules/zlib/src/deflate.c
index 696957705b..1ec761448d 100644
--- a/modules/zlib/src/deflate.c
+++ b/modules/zlib/src/deflate.c
@@ -1,5 +1,5 @@
/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
+ * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -52,7 +52,7 @@
#include "deflate.h"
const char deflate_copyright[] =
- " deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler ";
+ " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -73,6 +73,8 @@ typedef enum {
typedef block_state (*compress_func) OF((deflate_state *s, int flush));
/* Compression function. Returns the block state after the call. */
+local int deflateStateCheck OF((z_streamp strm));
+local void slide_hash OF((deflate_state *s));
local void fill_window OF((deflate_state *s));
local block_state deflate_stored OF((deflate_state *s, int flush));
local block_state deflate_fast OF((deflate_state *s, int flush));
@@ -84,15 +86,16 @@ local block_state deflate_huff OF((deflate_state *s, int flush));
local void lm_init OF((deflate_state *s));
local void putShortMSB OF((deflate_state *s, uInt b));
local void flush_pending OF((z_streamp strm));
-local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size));
+local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size));
#ifdef ASMV
+# pragma message("Assembler code may have bugs -- use at your own risk")
void match_init OF((void)); /* asm code initialization */
uInt longest_match OF((deflate_state *s, IPos cur_match));
#else
local uInt longest_match OF((deflate_state *s, IPos cur_match));
#endif
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
local void check_match OF((deflate_state *s, IPos start, IPos match,
int length));
#endif
@@ -148,21 +151,14 @@ local const config configuration_table[10] = {
* meaning.
*/
-#define EQUAL 0
-/* result of memcmp for equal strings */
-
-#ifndef NO_DUMMY_DECL
-struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
-#endif
-
/* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */
-#define RANK(f) (((f) << 1) - ((f) > 4 ? 9 : 0))
+#define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0))
/* ===========================================================================
* Update a hash value with the given input byte
- * IN assertion: all calls to to UPDATE_HASH are made with consecutive
- * input characters, so that a running hash key can be computed from the
- * previous key instead of complete recalculation each time.
+ * IN assertion: all calls to UPDATE_HASH are made with consecutive input
+ * characters, so that a running hash key can be computed from the previous
+ * key instead of complete recalculation each time.
*/
#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
@@ -173,9 +169,9 @@ struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
* the previous length of the hash chain.
* If this file is compiled with -DFASTEST, the compression level is forced
* to 1, and no hash chains are maintained.
- * IN assertion: all calls to to INSERT_STRING are made with consecutive
- * input characters and the first MIN_MATCH bytes of str are valid
- * (except for the last MIN_MATCH-1 bytes of the input file).
+ * IN assertion: all calls to INSERT_STRING are made with consecutive input
+ * characters and the first MIN_MATCH bytes of str are valid (except for
+ * the last MIN_MATCH-1 bytes of the input file).
*/
#ifdef FASTEST
#define INSERT_STRING(s, str, match_head) \
@@ -197,6 +193,37 @@ struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
s->head[s->hash_size-1] = NIL; \
zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
+/* ===========================================================================
+ * Slide the hash table when sliding the window down (could be avoided with 32
+ * bit values at the expense of memory usage). We slide even when level == 0 to
+ * keep the hash table consistent if we switch back to level > 0 later.
+ */
+local void slide_hash(s)
+ deflate_state *s;
+{
+ unsigned n, m;
+ Posf *p;
+ uInt wsize = s->w_size;
+
+ n = s->hash_size;
+ p = &s->head[n];
+ do {
+ m = *--p;
+ *p = (Pos)(m >= wsize ? m - wsize : NIL);
+ } while (--n);
+ n = wsize;
+#ifndef FASTEST
+ p = &s->prev[n];
+ do {
+ m = *--p;
+ *p = (Pos)(m >= wsize ? m - wsize : NIL);
+ /* If n is not on any hash chain, prev[n] is garbage but
+ * its value will never be used.
+ */
+ } while (--n);
+#endif
+}
+
/* ========================================================================= */
int ZEXPORT deflateInit_(strm, level, version, stream_size)
z_streamp strm;
@@ -270,7 +297,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
#endif
if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
- strategy < 0 || strategy > Z_FIXED) {
+ strategy < 0 || strategy > Z_FIXED || (windowBits == 8 && wrap != 1)) {
return Z_STREAM_ERROR;
}
if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */
@@ -278,14 +305,15 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
if (s == Z_NULL) return Z_MEM_ERROR;
strm->state = (struct internal_state FAR *)s;
s->strm = strm;
+ s->status = INIT_STATE; /* to pass state test in deflateReset() */
s->wrap = wrap;
s->gzhead = Z_NULL;
- s->w_bits = windowBits;
+ s->w_bits = (uInt)windowBits;
s->w_size = 1 << s->w_bits;
s->w_mask = s->w_size - 1;
- s->hash_bits = memLevel + 7;
+ s->hash_bits = (uInt)memLevel + 7;
s->hash_size = 1 << s->hash_bits;
s->hash_mask = s->hash_size - 1;
s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
@@ -319,6 +347,31 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
return deflateReset(strm);
}
+/* =========================================================================
+ * Check for a valid deflate stream state. Return 0 if ok, 1 if not.
+ */
+local int deflateStateCheck (strm)
+ z_streamp strm;
+{
+ deflate_state *s;
+ if (strm == Z_NULL ||
+ strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
+ return 1;
+ s = strm->state;
+ if (s == Z_NULL || s->strm != strm || (s->status != INIT_STATE &&
+#ifdef GZIP
+ s->status != GZIP_STATE &&
+#endif
+ s->status != EXTRA_STATE &&
+ s->status != NAME_STATE &&
+ s->status != COMMENT_STATE &&
+ s->status != HCRC_STATE &&
+ s->status != BUSY_STATE &&
+ s->status != FINISH_STATE))
+ return 1;
+ return 0;
+}
+
/* ========================================================================= */
int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
z_streamp strm;
@@ -331,7 +384,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
unsigned avail;
z_const unsigned char *next;
- if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
+ if (deflateStateCheck(strm) || dictionary == Z_NULL)
return Z_STREAM_ERROR;
s = strm->state;
wrap = s->wrap;
@@ -389,13 +442,34 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
}
/* ========================================================================= */
+int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength)
+ z_streamp strm;
+ Bytef *dictionary;
+ uInt *dictLength;
+{
+ deflate_state *s;
+ uInt len;
+
+ if (deflateStateCheck(strm))
+ return Z_STREAM_ERROR;
+ s = strm->state;
+ len = s->strstart + s->lookahead;
+ if (len > s->w_size)
+ len = s->w_size;
+ if (dictionary != Z_NULL && len)
+ zmemcpy(dictionary, s->window + s->strstart + s->lookahead - len, len);
+ if (dictLength != Z_NULL)
+ *dictLength = len;
+ return Z_OK;
+}
+
+/* ========================================================================= */
int ZEXPORT deflateResetKeep (strm)
z_streamp strm;
{
deflate_state *s;
- if (strm == Z_NULL || strm->state == Z_NULL ||
- strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) {
+ if (deflateStateCheck(strm)) {
return Z_STREAM_ERROR;
}
@@ -410,7 +484,11 @@ int ZEXPORT deflateResetKeep (strm)
if (s->wrap < 0) {
s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */
}
- s->status = s->wrap ? INIT_STATE : BUSY_STATE;
+ s->status =
+#ifdef GZIP
+ s->wrap == 2 ? GZIP_STATE :
+#endif
+ s->wrap ? INIT_STATE : BUSY_STATE;
strm->adler =
#ifdef GZIP
s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
@@ -440,8 +518,8 @@ int ZEXPORT deflateSetHeader (strm, head)
z_streamp strm;
gz_headerp head;
{
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- if (strm->state->wrap != 2) return Z_STREAM_ERROR;
+ if (deflateStateCheck(strm) || strm->state->wrap != 2)
+ return Z_STREAM_ERROR;
strm->state->gzhead = head;
return Z_OK;
}
@@ -452,7 +530,7 @@ int ZEXPORT deflatePending (strm, pending, bits)
int *bits;
z_streamp strm;
{
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
if (pending != Z_NULL)
*pending = strm->state->pending;
if (bits != Z_NULL)
@@ -469,7 +547,7 @@ int ZEXPORT deflatePrime (strm, bits, value)
deflate_state *s;
int put;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
s = strm->state;
if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
return Z_BUF_ERROR;
@@ -494,9 +572,8 @@ int ZEXPORT deflateParams(strm, level, strategy)
{
deflate_state *s;
compress_func func;
- int err = Z_OK;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
s = strm->state;
#ifdef FASTEST
@@ -510,13 +587,22 @@ int ZEXPORT deflateParams(strm, level, strategy)
func = configuration_table[s->level].func;
if ((strategy != s->strategy || func != configuration_table[level].func) &&
- strm->total_in != 0) {
+ s->high_water) {
/* Flush the last buffer: */
- err = deflate(strm, Z_BLOCK);
- if (err == Z_BUF_ERROR && s->pending == 0)
- err = Z_OK;
+ int err = deflate(strm, Z_BLOCK);
+ if (err == Z_STREAM_ERROR)
+ return err;
+ if (strm->avail_out == 0)
+ return Z_BUF_ERROR;
}
if (s->level != level) {
+ if (s->level == 0 && s->matches != 0) {
+ if (s->matches == 1)
+ slide_hash(s);
+ else
+ CLEAR_HASH(s);
+ s->matches = 0;
+ }
s->level = level;
s->max_lazy_match = configuration_table[level].max_lazy;
s->good_match = configuration_table[level].good_length;
@@ -524,7 +610,7 @@ int ZEXPORT deflateParams(strm, level, strategy)
s->max_chain_length = configuration_table[level].max_chain;
}
s->strategy = strategy;
- return err;
+ return Z_OK;
}
/* ========================================================================= */
@@ -537,12 +623,12 @@ int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
{
deflate_state *s;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
s = strm->state;
- s->good_match = good_length;
- s->max_lazy_match = max_lazy;
+ s->good_match = (uInt)good_length;
+ s->max_lazy_match = (uInt)max_lazy;
s->nice_match = nice_length;
- s->max_chain_length = max_chain;
+ s->max_chain_length = (uInt)max_chain;
return Z_OK;
}
@@ -569,14 +655,13 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
{
deflate_state *s;
uLong complen, wraplen;
- Bytef *str;
/* conservative upper bound for compressed data */
complen = sourceLen +
((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
/* if can't get parameters, return conservative bound plus zlib wrapper */
- if (strm == Z_NULL || strm->state == Z_NULL)
+ if (deflateStateCheck(strm))
return complen + 6;
/* compute wrapper length */
@@ -588,9 +673,11 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
case 1: /* zlib wrapper */
wraplen = 6 + (s->strstart ? 4 : 0);
break;
+#ifdef GZIP
case 2: /* gzip wrapper */
wraplen = 18;
if (s->gzhead != Z_NULL) { /* user-supplied gzip header */
+ Bytef *str;
if (s->gzhead->extra != Z_NULL)
wraplen += 2 + s->gzhead->extra_len;
str = s->gzhead->name;
@@ -607,6 +694,7 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
wraplen += 2;
}
break;
+#endif
default: /* for compiler happiness */
wraplen = 6;
}
@@ -634,10 +722,10 @@ local void putShortMSB (s, b)
}
/* =========================================================================
- * Flush as much pending output as possible. All deflate() output goes
- * through this function so some applications may wish to modify it
- * to avoid allocating a large strm->next_out buffer and copying into it.
- * (See also read_buf()).
+ * Flush as much pending output as possible. All deflate() output, except for
+ * some deflate_stored() output, goes through this function so some
+ * applications may wish to modify it to avoid allocating a large
+ * strm->next_out buffer and copying into it. (See also read_buf()).
*/
local void flush_pending(strm)
z_streamp strm;
@@ -654,13 +742,23 @@ local void flush_pending(strm)
strm->next_out += len;
s->pending_out += len;
strm->total_out += len;
- strm->avail_out -= len;
- s->pending -= len;
+ strm->avail_out -= len;
+ s->pending -= len;
if (s->pending == 0) {
s->pending_out = s->pending_buf;
}
}
+/* ===========================================================================
+ * Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1].
+ */
+#define HCRC_UPDATE(beg) \
+ do { \
+ if (s->gzhead->hcrc && s->pending > (beg)) \
+ strm->adler = crc32(strm->adler, s->pending_buf + (beg), \
+ s->pending - (beg)); \
+ } while (0)
+
/* ========================================================================= */
int ZEXPORT deflate (strm, flush)
z_streamp strm;
@@ -669,230 +767,229 @@ int ZEXPORT deflate (strm, flush)
int old_flush; /* value of flush param for previous deflate call */
deflate_state *s;
- if (strm == Z_NULL || strm->state == Z_NULL ||
- flush > Z_BLOCK || flush < 0) {
+ if (deflateStateCheck(strm) || flush > Z_BLOCK || flush < 0) {
return Z_STREAM_ERROR;
}
s = strm->state;
if (strm->next_out == Z_NULL ||
- (strm->next_in == Z_NULL && strm->avail_in != 0) ||
+ (strm->avail_in != 0 && strm->next_in == Z_NULL) ||
(s->status == FINISH_STATE && flush != Z_FINISH)) {
ERR_RETURN(strm, Z_STREAM_ERROR);
}
if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR);
- s->strm = strm; /* just in case */
old_flush = s->last_flush;
s->last_flush = flush;
+ /* Flush as much pending output as possible */
+ if (s->pending != 0) {
+ flush_pending(strm);
+ if (strm->avail_out == 0) {
+ /* Since avail_out is 0, deflate will be called again with
+ * more output space, but possibly with both pending and
+ * avail_in equal to zero. There won't be anything to do,
+ * but this is not an error situation so make sure we
+ * return OK instead of BUF_ERROR at next call of deflate:
+ */
+ s->last_flush = -1;
+ return Z_OK;
+ }
+
+ /* Make sure there is something to do and avoid duplicate consecutive
+ * flushes. For repeated and useless calls with Z_FINISH, we keep
+ * returning Z_STREAM_END instead of Z_BUF_ERROR.
+ */
+ } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) &&
+ flush != Z_FINISH) {
+ ERR_RETURN(strm, Z_BUF_ERROR);
+ }
+
+ /* User must not provide more input after the first FINISH: */
+ if (s->status == FINISH_STATE && strm->avail_in != 0) {
+ ERR_RETURN(strm, Z_BUF_ERROR);
+ }
+
/* Write the header */
if (s->status == INIT_STATE) {
-#ifdef GZIP
- if (s->wrap == 2) {
- strm->adler = crc32(0L, Z_NULL, 0);
- put_byte(s, 31);
- put_byte(s, 139);
- put_byte(s, 8);
- if (s->gzhead == Z_NULL) {
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, s->level == 9 ? 2 :
- (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
- 4 : 0));
- put_byte(s, OS_CODE);
- s->status = BUSY_STATE;
- }
- else {
- put_byte(s, (s->gzhead->text ? 1 : 0) +
- (s->gzhead->hcrc ? 2 : 0) +
- (s->gzhead->extra == Z_NULL ? 0 : 4) +
- (s->gzhead->name == Z_NULL ? 0 : 8) +
- (s->gzhead->comment == Z_NULL ? 0 : 16)
- );
- put_byte(s, (Byte)(s->gzhead->time & 0xff));
- put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff));
- put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff));
- put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff));
- put_byte(s, s->level == 9 ? 2 :
- (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
- 4 : 0));
- put_byte(s, s->gzhead->os & 0xff);
- if (s->gzhead->extra != Z_NULL) {
- put_byte(s, s->gzhead->extra_len & 0xff);
- put_byte(s, (s->gzhead->extra_len >> 8) & 0xff);
- }
- if (s->gzhead->hcrc)
- strm->adler = crc32(strm->adler, s->pending_buf,
- s->pending);
- s->gzindex = 0;
- s->status = EXTRA_STATE;
- }
- }
+ /* zlib header */
+ uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
+ uInt level_flags;
+
+ if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
+ level_flags = 0;
+ else if (s->level < 6)
+ level_flags = 1;
+ else if (s->level == 6)
+ level_flags = 2;
else
-#endif
- {
- uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
- uInt level_flags;
-
- if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
- level_flags = 0;
- else if (s->level < 6)
- level_flags = 1;
- else if (s->level == 6)
- level_flags = 2;
- else
- level_flags = 3;
- header |= (level_flags << 6);
- if (s->strstart != 0) header |= PRESET_DICT;
- header += 31 - (header % 31);
+ level_flags = 3;
+ header |= (level_flags << 6);
+ if (s->strstart != 0) header |= PRESET_DICT;
+ header += 31 - (header % 31);
+
+ putShortMSB(s, header);
+ /* Save the adler32 of the preset dictionary: */
+ if (s->strstart != 0) {
+ putShortMSB(s, (uInt)(strm->adler >> 16));
+ putShortMSB(s, (uInt)(strm->adler & 0xffff));
+ }
+ strm->adler = adler32(0L, Z_NULL, 0);
+ s->status = BUSY_STATE;
+
+ /* Compression must start with an empty pending buffer */
+ flush_pending(strm);
+ if (s->pending != 0) {
+ s->last_flush = -1;
+ return Z_OK;
+ }
+ }
+#ifdef GZIP
+ if (s->status == GZIP_STATE) {
+ /* gzip header */
+ strm->adler = crc32(0L, Z_NULL, 0);
+ put_byte(s, 31);
+ put_byte(s, 139);
+ put_byte(s, 8);
+ if (s->gzhead == Z_NULL) {
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, s->level == 9 ? 2 :
+ (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+ 4 : 0));
+ put_byte(s, OS_CODE);
s->status = BUSY_STATE;
- putShortMSB(s, header);
- /* Save the adler32 of the preset dictionary: */
- if (s->strstart != 0) {
- putShortMSB(s, (uInt)(strm->adler >> 16));
- putShortMSB(s, (uInt)(strm->adler & 0xffff));
+ /* Compression must start with an empty pending buffer */
+ flush_pending(strm);
+ if (s->pending != 0) {
+ s->last_flush = -1;
+ return Z_OK;
+ }
+ }
+ else {
+ put_byte(s, (s->gzhead->text ? 1 : 0) +
+ (s->gzhead->hcrc ? 2 : 0) +
+ (s->gzhead->extra == Z_NULL ? 0 : 4) +
+ (s->gzhead->name == Z_NULL ? 0 : 8) +
+ (s->gzhead->comment == Z_NULL ? 0 : 16)
+ );
+ put_byte(s, (Byte)(s->gzhead->time & 0xff));
+ put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff));
+ put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff));
+ put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff));
+ put_byte(s, s->level == 9 ? 2 :
+ (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+ 4 : 0));
+ put_byte(s, s->gzhead->os & 0xff);
+ if (s->gzhead->extra != Z_NULL) {
+ put_byte(s, s->gzhead->extra_len & 0xff);
+ put_byte(s, (s->gzhead->extra_len >> 8) & 0xff);
}
- strm->adler = adler32(0L, Z_NULL, 0);
+ if (s->gzhead->hcrc)
+ strm->adler = crc32(strm->adler, s->pending_buf,
+ s->pending);
+ s->gzindex = 0;
+ s->status = EXTRA_STATE;
}
}
-#ifdef GZIP
if (s->status == EXTRA_STATE) {
if (s->gzhead->extra != Z_NULL) {
- uInt beg = s->pending; /* start of bytes to update crc */
-
- while (s->gzindex < (s->gzhead->extra_len & 0xffff)) {
- if (s->pending == s->pending_buf_size) {
- if (s->gzhead->hcrc && s->pending > beg)
- strm->adler = crc32(strm->adler, s->pending_buf + beg,
- s->pending - beg);
- flush_pending(strm);
- beg = s->pending;
- if (s->pending == s->pending_buf_size)
- break;
+ ulg beg = s->pending; /* start of bytes to update crc */
+ uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex;
+ while (s->pending + left > s->pending_buf_size) {
+ uInt copy = s->pending_buf_size - s->pending;
+ zmemcpy(s->pending_buf + s->pending,
+ s->gzhead->extra + s->gzindex, copy);
+ s->pending = s->pending_buf_size;
+ HCRC_UPDATE(beg);
+ s->gzindex += copy;
+ flush_pending(strm);
+ if (s->pending != 0) {
+ s->last_flush = -1;
+ return Z_OK;
}
- put_byte(s, s->gzhead->extra[s->gzindex]);
- s->gzindex++;
- }
- if (s->gzhead->hcrc && s->pending > beg)
- strm->adler = crc32(strm->adler, s->pending_buf + beg,
- s->pending - beg);
- if (s->gzindex == s->gzhead->extra_len) {
- s->gzindex = 0;
- s->status = NAME_STATE;
+ beg = 0;
+ left -= copy;
}
+ zmemcpy(s->pending_buf + s->pending,
+ s->gzhead->extra + s->gzindex, left);
+ s->pending += left;
+ HCRC_UPDATE(beg);
+ s->gzindex = 0;
}
- else
- s->status = NAME_STATE;
+ s->status = NAME_STATE;
}
if (s->status == NAME_STATE) {
if (s->gzhead->name != Z_NULL) {
- uInt beg = s->pending; /* start of bytes to update crc */
+ ulg beg = s->pending; /* start of bytes to update crc */
int val;
-
do {
if (s->pending == s->pending_buf_size) {
- if (s->gzhead->hcrc && s->pending > beg)
- strm->adler = crc32(strm->adler, s->pending_buf + beg,
- s->pending - beg);
+ HCRC_UPDATE(beg);
flush_pending(strm);
- beg = s->pending;
- if (s->pending == s->pending_buf_size) {
- val = 1;
- break;
+ if (s->pending != 0) {
+ s->last_flush = -1;
+ return Z_OK;
}
+ beg = 0;
}
val = s->gzhead->name[s->gzindex++];
put_byte(s, val);
} while (val != 0);
- if (s->gzhead->hcrc && s->pending > beg)
- strm->adler = crc32(strm->adler, s->pending_buf + beg,
- s->pending - beg);
- if (val == 0) {
- s->gzindex = 0;
- s->status = COMMENT_STATE;
- }
+ HCRC_UPDATE(beg);
+ s->gzindex = 0;
}
- else
- s->status = COMMENT_STATE;
+ s->status = COMMENT_STATE;
}
if (s->status == COMMENT_STATE) {
if (s->gzhead->comment != Z_NULL) {
- uInt beg = s->pending; /* start of bytes to update crc */
+ ulg beg = s->pending; /* start of bytes to update crc */
int val;
-
do {
if (s->pending == s->pending_buf_size) {
- if (s->gzhead->hcrc && s->pending > beg)
- strm->adler = crc32(strm->adler, s->pending_buf + beg,
- s->pending - beg);
+ HCRC_UPDATE(beg);
flush_pending(strm);
- beg = s->pending;
- if (s->pending == s->pending_buf_size) {
- val = 1;
- break;
+ if (s->pending != 0) {
+ s->last_flush = -1;
+ return Z_OK;
}
+ beg = 0;
}
val = s->gzhead->comment[s->gzindex++];
put_byte(s, val);
} while (val != 0);
- if (s->gzhead->hcrc && s->pending > beg)
- strm->adler = crc32(strm->adler, s->pending_buf + beg,
- s->pending - beg);
- if (val == 0)
- s->status = HCRC_STATE;
+ HCRC_UPDATE(beg);
}
- else
- s->status = HCRC_STATE;
+ s->status = HCRC_STATE;
}
if (s->status == HCRC_STATE) {
if (s->gzhead->hcrc) {
- if (s->pending + 2 > s->pending_buf_size)
+ if (s->pending + 2 > s->pending_buf_size) {
flush_pending(strm);
- if (s->pending + 2 <= s->pending_buf_size) {
- put_byte(s, (Byte)(strm->adler & 0xff));
- put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
- strm->adler = crc32(0L, Z_NULL, 0);
- s->status = BUSY_STATE;
+ if (s->pending != 0) {
+ s->last_flush = -1;
+ return Z_OK;
+ }
}
+ put_byte(s, (Byte)(strm->adler & 0xff));
+ put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
+ strm->adler = crc32(0L, Z_NULL, 0);
}
- else
- s->status = BUSY_STATE;
- }
-#endif
+ s->status = BUSY_STATE;
- /* Flush as much pending output as possible */
- if (s->pending != 0) {
+ /* Compression must start with an empty pending buffer */
flush_pending(strm);
- if (strm->avail_out == 0) {
- /* Since avail_out is 0, deflate will be called again with
- * more output space, but possibly with both pending and
- * avail_in equal to zero. There won't be anything to do,
- * but this is not an error situation so make sure we
- * return OK instead of BUF_ERROR at next call of deflate:
- */
+ if (s->pending != 0) {
s->last_flush = -1;
return Z_OK;
}
-
- /* Make sure there is something to do and avoid duplicate consecutive
- * flushes. For repeated and useless calls with Z_FINISH, we keep
- * returning Z_STREAM_END instead of Z_BUF_ERROR.
- */
- } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) &&
- flush != Z_FINISH) {
- ERR_RETURN(strm, Z_BUF_ERROR);
- }
-
- /* User must not provide more input after the first FINISH: */
- if (s->status == FINISH_STATE && strm->avail_in != 0) {
- ERR_RETURN(strm, Z_BUF_ERROR);
}
+#endif
/* Start a new block or continue the current one.
*/
@@ -900,9 +997,10 @@ int ZEXPORT deflate (strm, flush)
(flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
block_state bstate;
- bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
- (s->strategy == Z_RLE ? deflate_rle(s, flush) :
- (*(configuration_table[s->level].func))(s, flush));
+ bstate = s->level == 0 ? deflate_stored(s, flush) :
+ s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
+ s->strategy == Z_RLE ? deflate_rle(s, flush) :
+ (*(configuration_table[s->level].func))(s, flush);
if (bstate == finish_started || bstate == finish_done) {
s->status = FINISH_STATE;
@@ -944,7 +1042,6 @@ int ZEXPORT deflate (strm, flush)
}
}
}
- Assert(strm->avail_out > 0, "bug2");
if (flush != Z_FINISH) return Z_OK;
if (s->wrap <= 0) return Z_STREAM_END;
@@ -981,18 +1078,9 @@ int ZEXPORT deflateEnd (strm)
{
int status;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
status = strm->state->status;
- if (status != INIT_STATE &&
- status != EXTRA_STATE &&
- status != NAME_STATE &&
- status != COMMENT_STATE &&
- status != HCRC_STATE &&
- status != BUSY_STATE &&
- status != FINISH_STATE) {
- return Z_STREAM_ERROR;
- }
/* Deallocate in reverse order of allocations: */
TRY_FREE(strm, strm->state->pending_buf);
@@ -1023,7 +1111,7 @@ int ZEXPORT deflateCopy (dest, source)
ushf *overlay;
- if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
+ if (deflateStateCheck(source) || dest == Z_NULL) {
return Z_STREAM_ERROR;
}
@@ -1073,7 +1161,7 @@ int ZEXPORT deflateCopy (dest, source)
* allocating a large strm->next_in buffer and copying from it.
* (See also flush_pending()).
*/
-local int read_buf(strm, buf, size)
+local unsigned read_buf(strm, buf, size)
z_streamp strm;
Bytef *buf;
unsigned size;
@@ -1097,7 +1185,7 @@ local int read_buf(strm, buf, size)
strm->next_in += len;
strm->total_in += len;
- return (int)len;
+ return len;
}
/* ===========================================================================
@@ -1151,9 +1239,9 @@ local uInt longest_match(s, cur_match)
{
unsigned chain_length = s->max_chain_length;/* max hash chain length */
register Bytef *scan = s->window + s->strstart; /* current string */
- register Bytef *match; /* matched string */
+ register Bytef *match; /* matched string */
register int len; /* length of current match */
- int best_len = s->prev_length; /* best match length so far */
+ int best_len = (int)s->prev_length; /* best match length so far */
int nice_match = s->nice_match; /* stop if match long enough */
IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
s->strstart - (IPos)MAX_DIST(s) : NIL;
@@ -1188,7 +1276,7 @@ local uInt longest_match(s, cur_match)
/* Do not look for matches beyond the end of the input. This is necessary
* to make deflate deterministic.
*/
- if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
+ if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead;
Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
@@ -1349,7 +1437,11 @@ local uInt longest_match(s, cur_match)
#endif /* FASTEST */
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
+
+#define EQUAL 0
+/* result of memcmp for equal strings */
+
/* ===========================================================================
* Check that the match at match_start is indeed a match.
*/
@@ -1375,7 +1467,7 @@ local void check_match(s, start, match, length)
}
#else
# define check_match(s, start, match, length)
-#endif /* DEBUG */
+#endif /* ZLIB_DEBUG */
/* ===========================================================================
* Fill the window when the lookahead becomes insufficient.
@@ -1390,8 +1482,7 @@ local void check_match(s, start, match, length)
local void fill_window(s)
deflate_state *s;
{
- register unsigned n, m;
- register Posf *p;
+ unsigned n;
unsigned more; /* Amount of free space at the end of the window. */
uInt wsize = s->w_size;
@@ -1418,35 +1509,11 @@ local void fill_window(s)
*/
if (s->strstart >= wsize+MAX_DIST(s)) {
- zmemcpy(s->window, s->window+wsize, (unsigned)wsize);
+ zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more);
s->match_start -= wsize;
s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
s->block_start -= (long) wsize;
-
- /* Slide the hash table (could be avoided with 32 bit values
- at the expense of memory usage). We slide even when level == 0
- to keep the hash table consistent if we switch back to level > 0
- later. (Using level 0 permanently is not an optimal usage of
- zlib, so we don't care about this pathological case.)
- */
- n = s->hash_size;
- p = &s->head[n];
- do {
- m = *--p;
- *p = (Pos)(m >= wsize ? m-wsize : NIL);
- } while (--n);
-
- n = wsize;
-#ifndef FASTEST
- p = &s->prev[n];
- do {
- m = *--p;
- *p = (Pos)(m >= wsize ? m-wsize : NIL);
- /* If n is not on any hash chain, prev[n] is garbage but
- * its value will never be used.
- */
- } while (--n);
-#endif
+ slide_hash(s);
more += wsize;
}
if (s->strm->avail_in == 0) break;
@@ -1552,70 +1619,199 @@ local void fill_window(s)
if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \
}
+/* Maximum stored block length in deflate format (not including header). */
+#define MAX_STORED 65535
+
+/* Minimum of a and b. */
+#define MIN(a, b) ((a) > (b) ? (b) : (a))
+
/* ===========================================================================
* Copy without compression as much as possible from the input stream, return
* the current block state.
- * This function does not insert new strings in the dictionary since
- * uncompressible data is probably not useful. This function is used
- * only for the level=0 compression option.
- * NOTE: this function should be optimized to avoid extra copying from
- * window to pending_buf.
+ *
+ * In case deflateParams() is used to later switch to a non-zero compression
+ * level, s->matches (otherwise unused when storing) keeps track of the number
+ * of hash table slides to perform. If s->matches is 1, then one hash table
+ * slide will be done when switching. If s->matches is 2, the maximum value
+ * allowed here, then the hash table will be cleared, since two or more slides
+ * is the same as a clear.
+ *
+ * deflate_stored() is written to minimize the number of times an input byte is
+ * copied. It is most efficient with large input and output buffers, which
+ * maximizes the opportunites to have a single copy from next_in to next_out.
*/
local block_state deflate_stored(s, flush)
deflate_state *s;
int flush;
{
- /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
- * to pending_buf_size, and each stored block has a 5 byte header:
+ /* Smallest worthy block size when not flushing or finishing. By default
+ * this is 32K. This can be as small as 507 bytes for memLevel == 1. For
+ * large input and output buffers, the stored block size will be larger.
*/
- ulg max_block_size = 0xffff;
- ulg max_start;
-
- if (max_block_size > s->pending_buf_size - 5) {
- max_block_size = s->pending_buf_size - 5;
- }
+ unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size);
- /* Copy as much as possible from input to output: */
- for (;;) {
- /* Fill the window as much as possible: */
- if (s->lookahead <= 1) {
-
- Assert(s->strstart < s->w_size+MAX_DIST(s) ||
- s->block_start >= (long)s->w_size, "slide too late");
+ /* Copy as many min_block or larger stored blocks directly to next_out as
+ * possible. If flushing, copy the remaining available input to next_out as
+ * stored blocks, if there is enough space.
+ */
+ unsigned len, left, have, last = 0;
+ unsigned used = s->strm->avail_in;
+ do {
+ /* Set len to the maximum size block that we can copy directly with the
+ * available input data and output space. Set left to how much of that
+ * would be copied from what's left in the window.
+ */
+ len = MAX_STORED; /* maximum deflate stored block length */
+ have = (s->bi_valid + 42) >> 3; /* number of header bytes */
+ if (s->strm->avail_out < have) /* need room for header */
+ break;
+ /* maximum stored block length that will fit in avail_out: */
+ have = s->strm->avail_out - have;
+ left = s->strstart - s->block_start; /* bytes left in window */
+ if (len > (ulg)left + s->strm->avail_in)
+ len = left + s->strm->avail_in; /* limit len to the input */
+ if (len > have)
+ len = have; /* limit len to the output */
+
+ /* If the stored block would be less than min_block in length, or if
+ * unable to copy all of the available input when flushing, then try
+ * copying to the window and the pending buffer instead. Also don't
+ * write an empty block when flushing -- deflate() does that.
+ */
+ if (len < min_block && ((len == 0 && flush != Z_FINISH) ||
+ flush == Z_NO_FLUSH ||
+ len != left + s->strm->avail_in))
+ break;
- fill_window(s);
- if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
+ /* Make a dummy stored block in pending to get the header bytes,
+ * including any pending bits. This also updates the debugging counts.
+ */
+ last = flush == Z_FINISH && len == left + s->strm->avail_in ? 1 : 0;
+ _tr_stored_block(s, (char *)0, 0L, last);
+
+ /* Replace the lengths in the dummy stored block with len. */
+ s->pending_buf[s->pending - 4] = len;
+ s->pending_buf[s->pending - 3] = len >> 8;
+ s->pending_buf[s->pending - 2] = ~len;
+ s->pending_buf[s->pending - 1] = ~len >> 8;
+
+ /* Write the stored block header bytes. */
+ flush_pending(s->strm);
+
+#ifdef ZLIB_DEBUG
+ /* Update debugging counts for the data about to be copied. */
+ s->compressed_len += len << 3;
+ s->bits_sent += len << 3;
+#endif
- if (s->lookahead == 0) break; /* flush the current block */
+ /* Copy uncompressed bytes from the window to next_out. */
+ if (left) {
+ if (left > len)
+ left = len;
+ zmemcpy(s->strm->next_out, s->window + s->block_start, left);
+ s->strm->next_out += left;
+ s->strm->avail_out -= left;
+ s->strm->total_out += left;
+ s->block_start += left;
+ len -= left;
}
- Assert(s->block_start >= 0L, "block gone");
-
- s->strstart += s->lookahead;
- s->lookahead = 0;
-
- /* Emit a stored block if pending_buf will be full: */
- max_start = s->block_start + max_block_size;
- if (s->strstart == 0 || (ulg)s->strstart >= max_start) {
- /* strstart == 0 is possible when wraparound on 16-bit machine */
- s->lookahead = (uInt)(s->strstart - max_start);
- s->strstart = (uInt)max_start;
- FLUSH_BLOCK(s, 0);
+
+ /* Copy uncompressed bytes directly from next_in to next_out, updating
+ * the check value.
+ */
+ if (len) {
+ read_buf(s->strm, s->strm->next_out, len);
+ s->strm->next_out += len;
+ s->strm->avail_out -= len;
+ s->strm->total_out += len;
}
- /* Flush if we may have to slide, otherwise block_start may become
- * negative and the data will be gone:
+ } while (last == 0);
+
+ /* Update the sliding window with the last s->w_size bytes of the copied
+ * data, or append all of the copied data to the existing window if less
+ * than s->w_size bytes were copied. Also update the number of bytes to
+ * insert in the hash tables, in the event that deflateParams() switches to
+ * a non-zero compression level.
+ */
+ used -= s->strm->avail_in; /* number of input bytes directly copied */
+ if (used) {
+ /* If any input was used, then no unused input remains in the window,
+ * therefore s->block_start == s->strstart.
*/
- if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {
- FLUSH_BLOCK(s, 0);
+ if (used >= s->w_size) { /* supplant the previous history */
+ s->matches = 2; /* clear hash */
+ zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
+ s->strstart = s->w_size;
}
+ else {
+ if (s->window_size - s->strstart <= used) {
+ /* Slide the window down. */
+ s->strstart -= s->w_size;
+ zmemcpy(s->window, s->window + s->w_size, s->strstart);
+ if (s->matches < 2)
+ s->matches++; /* add a pending slide_hash() */
+ }
+ zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
+ s->strstart += used;
+ }
+ s->block_start = s->strstart;
+ s->insert += MIN(used, s->w_size - s->insert);
}
- s->insert = 0;
- if (flush == Z_FINISH) {
- FLUSH_BLOCK(s, 1);
+ if (s->high_water < s->strstart)
+ s->high_water = s->strstart;
+
+ /* If the last block was written to next_out, then done. */
+ if (last)
return finish_done;
+
+ /* If flushing and all input has been consumed, then done. */
+ if (flush != Z_NO_FLUSH && flush != Z_FINISH &&
+ s->strm->avail_in == 0 && (long)s->strstart == s->block_start)
+ return block_done;
+
+ /* Fill the window with any remaining input. */
+ have = s->window_size - s->strstart - 1;
+ if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) {
+ /* Slide the window down. */
+ s->block_start -= s->w_size;
+ s->strstart -= s->w_size;
+ zmemcpy(s->window, s->window + s->w_size, s->strstart);
+ if (s->matches < 2)
+ s->matches++; /* add a pending slide_hash() */
+ have += s->w_size; /* more space now */
}
- if ((long)s->strstart > s->block_start)
- FLUSH_BLOCK(s, 0);
- return block_done;
+ if (have > s->strm->avail_in)
+ have = s->strm->avail_in;
+ if (have) {
+ read_buf(s->strm, s->window + s->strstart, have);
+ s->strstart += have;
+ }
+ if (s->high_water < s->strstart)
+ s->high_water = s->strstart;
+
+ /* There was not enough avail_out to write a complete worthy or flushed
+ * stored block to next_out. Write a stored block to pending instead, if we
+ * have enough input for a worthy block, or if flushing and there is enough
+ * room for the remaining input as a stored block in the pending buffer.
+ */
+ have = (s->bi_valid + 42) >> 3; /* number of header bytes */
+ /* maximum stored block length that will fit in pending: */
+ have = MIN(s->pending_buf_size - have, MAX_STORED);
+ min_block = MIN(have, s->w_size);
+ left = s->strstart - s->block_start;
+ if (left >= min_block ||
+ ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH &&
+ s->strm->avail_in == 0 && left <= have)) {
+ len = MIN(left, have);
+ last = flush == Z_FINISH && s->strm->avail_in == 0 &&
+ len == left ? 1 : 0;
+ _tr_stored_block(s, (charf *)s->window + s->block_start, len, last);
+ s->block_start += len;
+ flush_pending(s->strm);
+ }
+
+ /* We've done all we can with the available input and output. */
+ return last ? finish_started : need_more;
}
/* ===========================================================================
@@ -1892,7 +2088,7 @@ local block_state deflate_rle(s, flush)
prev == *++scan && prev == *++scan &&
prev == *++scan && prev == *++scan &&
scan < strend);
- s->match_length = MAX_MATCH - (int)(strend - scan);
+ s->match_length = MAX_MATCH - (uInt)(strend - scan);
if (s->match_length > s->lookahead)
s->match_length = s->lookahead;
}
diff --git a/modules/zlib/src/deflate.h b/modules/zlib/src/deflate.h
index ce0299edd1..23ecdd312b 100644
--- a/modules/zlib/src/deflate.h
+++ b/modules/zlib/src/deflate.h
@@ -1,5 +1,5 @@
/* deflate.h -- internal compression state
- * Copyright (C) 1995-2012 Jean-loup Gailly
+ * Copyright (C) 1995-2016 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -51,13 +51,16 @@
#define Buf_size 16
/* size of bit buffer in bi_buf */
-#define INIT_STATE 42
-#define EXTRA_STATE 69
-#define NAME_STATE 73
-#define COMMENT_STATE 91
-#define HCRC_STATE 103
-#define BUSY_STATE 113
-#define FINISH_STATE 666
+#define INIT_STATE 42 /* zlib header -> BUSY_STATE */
+#ifdef GZIP
+# define GZIP_STATE 57 /* gzip header -> BUSY_STATE | EXTRA_STATE */
+#endif
+#define EXTRA_STATE 69 /* gzip extra block -> NAME_STATE */
+#define NAME_STATE 73 /* gzip file name -> COMMENT_STATE */
+#define COMMENT_STATE 91 /* gzip comment -> HCRC_STATE */
+#define HCRC_STATE 103 /* gzip header CRC -> BUSY_STATE */
+#define BUSY_STATE 113 /* deflate -> FINISH_STATE */
+#define FINISH_STATE 666 /* stream complete */
/* Stream status */
@@ -83,7 +86,7 @@ typedef struct static_tree_desc_s static_tree_desc;
typedef struct tree_desc_s {
ct_data *dyn_tree; /* the dynamic tree */
int max_code; /* largest code with non zero frequency */
- static_tree_desc *stat_desc; /* the corresponding static tree */
+ const static_tree_desc *stat_desc; /* the corresponding static tree */
} FAR tree_desc;
typedef ush Pos;
@@ -100,10 +103,10 @@ typedef struct internal_state {
Bytef *pending_buf; /* output still pending */
ulg pending_buf_size; /* size of pending_buf */
Bytef *pending_out; /* next pending byte to output to the stream */
- uInt pending; /* nb of bytes in the pending buffer */
+ ulg pending; /* nb of bytes in the pending buffer */
int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
gz_headerp gzhead; /* gzip header information to write */
- uInt gzindex; /* where in extra, name, or comment */
+ ulg gzindex; /* where in extra, name, or comment */
Byte method; /* can only be DEFLATED */
int last_flush; /* value of flush param for previous deflate call */
@@ -249,7 +252,7 @@ typedef struct internal_state {
uInt matches; /* number of string matches in current block */
uInt insert; /* bytes at end of window left to insert */
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
ulg compressed_len; /* total bit length of compressed file mod 2^32 */
ulg bits_sent; /* bit length of compressed data sent mod 2^32 */
#endif
@@ -275,7 +278,7 @@ typedef struct internal_state {
/* Output a byte on the stream.
* IN assertion: there is enough room in pending_buf.
*/
-#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
+#define put_byte(s, c) {s->pending_buf[s->pending++] = (Bytef)(c);}
#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
@@ -309,7 +312,7 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
* used.
*/
-#ifndef DEBUG
+#ifndef ZLIB_DEBUG
/* Inline versions of _tr_tally for speed: */
#if defined(GEN_TREES_H) || !defined(STDC)
@@ -328,8 +331,8 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
flush = (s->last_lit == s->lit_bufsize-1); \
}
# define _tr_tally_dist(s, distance, length, flush) \
- { uch len = (length); \
- ush dist = (distance); \
+ { uch len = (uch)(length); \
+ ush dist = (ush)(distance); \
s->d_buf[s->last_lit] = dist; \
s->l_buf[s->last_lit++] = len; \
dist--; \
diff --git a/modules/zlib/src/gzguts.h b/modules/zlib/src/gzguts.h
index d87659d031..990a4d2514 100644
--- a/modules/zlib/src/gzguts.h
+++ b/modules/zlib/src/gzguts.h
@@ -1,5 +1,5 @@
/* gzguts.h -- zlib internal header definitions for gz* operations
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -25,6 +25,10 @@
# include <stdlib.h>
# include <limits.h>
#endif
+
+#ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+#endif
#include <fcntl.h>
#ifdef _WIN32
@@ -35,6 +39,10 @@
# include <io.h>
#endif
+#if defined(_WIN32) || defined(__CYGWIN__)
+# define WIDECHAR
+#endif
+
#ifdef WINAPI_FAMILY
# define open _open
# define read _read
@@ -95,18 +103,19 @@
# endif
#endif
-/* unlike snprintf (which is required in C99, yet still not supported by
- Microsoft more than a decade later!), _snprintf does not guarantee null
- termination of the result -- however this is only used in gzlib.c where
+/* unlike snprintf (which is required in C99), _snprintf does not guarantee
+ null termination of the result -- however this is only used in gzlib.c where
the result is assured to fit in the space provided */
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && _MSC_VER < 1900
# define snprintf _snprintf
#endif
#ifndef local
# define local static
#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
+/* since "static" is used to mean two completely different things in C, we
+ define "local" for the non-static meaning of "static", for readability
+ (compile with -Dlocal if your debugger can't find static symbols) */
/* gz* functions always use library allocation functions */
#ifndef STDC
@@ -170,7 +179,7 @@ typedef struct {
char *path; /* path or fd for error messages */
unsigned size; /* buffer size, zero if not allocated yet */
unsigned want; /* requested buffer size, default is GZBUFSIZE */
- unsigned char *in; /* input buffer */
+ unsigned char *in; /* input buffer (double-sized when writing) */
unsigned char *out; /* output buffer (double-sized when reading) */
int direct; /* 0 if processing gzip, 1 if transparent */
/* just for reading */
diff --git a/modules/zlib/src/gzlib.c b/modules/zlib/src/gzlib.c
index fae202ef89..4105e6aff9 100644
--- a/modules/zlib/src/gzlib.c
+++ b/modules/zlib/src/gzlib.c
@@ -1,11 +1,11 @@
/* gzlib.c -- zlib functions common to reading and writing gzip files
- * Copyright (C) 2004, 2010, 2011, 2012, 2013 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "gzguts.h"
-#if defined(_WIN32) && !defined(__BORLANDC__)
+#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__)
# define LSEEK _lseeki64
#else
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
@@ -94,7 +94,7 @@ local gzFile gz_open(path, fd, mode)
const char *mode;
{
gz_statep state;
- size_t len;
+ z_size_t len;
int oflag;
#ifdef O_CLOEXEC
int cloexec = 0;
@@ -188,10 +188,10 @@ local gzFile gz_open(path, fd, mode)
}
/* save the path name for error messages */
-#ifdef _WIN32
+#ifdef WIDECHAR
if (fd == -2) {
len = wcstombs(NULL, path, 0);
- if (len == (size_t)-1)
+ if (len == (z_size_t)-1)
len = 0;
}
else
@@ -202,7 +202,7 @@ local gzFile gz_open(path, fd, mode)
free(state);
return NULL;
}
-#ifdef _WIN32
+#ifdef WIDECHAR
if (fd == -2)
if (len)
wcstombs(state->path, path, len + 1);
@@ -211,7 +211,7 @@ local gzFile gz_open(path, fd, mode)
else
#endif
#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
- snprintf(state->path, len + 1, "%s", (const char *)path);
+ (void)snprintf(state->path, len + 1, "%s", (const char *)path);
#else
strcpy(state->path, path);
#endif
@@ -239,7 +239,7 @@ local gzFile gz_open(path, fd, mode)
/* open the file with the appropriate flags (or just use fd) */
state->fd = fd > -1 ? fd : (
-#ifdef _WIN32
+#ifdef WIDECHAR
fd == -2 ? _wopen(path, oflag, 0666) :
#endif
open((const char *)path, oflag, 0666));
@@ -248,8 +248,10 @@ local gzFile gz_open(path, fd, mode)
free(state);
return NULL;
}
- if (state->mode == GZ_APPEND)
+ if (state->mode == GZ_APPEND) {
+ LSEEK(state->fd, 0, SEEK_END); /* so gzoffset() is correct */
state->mode = GZ_WRITE; /* simplify later checks */
+ }
/* save the current position for rewinding (only if reading) */
if (state->mode == GZ_READ) {
@@ -291,7 +293,7 @@ gzFile ZEXPORT gzdopen(fd, mode)
if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL)
return NULL;
#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
- snprintf(path, 7 + 3 * sizeof(int), "<fd:%d>", fd); /* for debugging */
+ (void)snprintf(path, 7 + 3 * sizeof(int), "<fd:%d>", fd);
#else
sprintf(path, "<fd:%d>", fd); /* for debugging */
#endif
@@ -301,7 +303,7 @@ gzFile ZEXPORT gzdopen(fd, mode)
}
/* -- see zlib.h -- */
-#ifdef _WIN32
+#ifdef WIDECHAR
gzFile ZEXPORT gzopen_w(path, mode)
const wchar_t *path;
const char *mode;
@@ -329,6 +331,8 @@ int ZEXPORT gzbuffer(file, size)
return -1;
/* check and set requested size */
+ if ((size << 1) < size)
+ return -1; /* need to be able to double it */
if (size < 2)
size = 2; /* need two bytes to check magic header */
state->want = size;
@@ -604,14 +608,13 @@ void ZLIB_INTERNAL gz_error(state, err, msg)
return;
}
#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
- snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
- "%s%s%s", state->path, ": ", msg);
+ (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
+ "%s%s%s", state->path, ": ", msg);
#else
strcpy(state->msg, state->path);
strcat(state->msg, ": ");
strcat(state->msg, msg);
#endif
- return;
}
#ifndef INT_MAX
diff --git a/modules/zlib/src/gzread.c b/modules/zlib/src/gzread.c
index bf4538eb27..956b91ea7d 100644
--- a/modules/zlib/src/gzread.c
+++ b/modules/zlib/src/gzread.c
@@ -1,5 +1,5 @@
/* gzread.c -- zlib functions for reading gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -12,6 +12,7 @@ local int gz_look OF((gz_statep));
local int gz_decomp OF((gz_statep));
local int gz_fetch OF((gz_statep));
local int gz_skip OF((gz_statep, z_off64_t));
+local z_size_t gz_read OF((gz_statep, voidp, z_size_t));
/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from
state->fd, and update state->eof, state->err, and state->msg as appropriate.
@@ -24,13 +25,17 @@ local int gz_load(state, buf, len, have)
unsigned *have;
{
int ret;
+ unsigned get, max = ((unsigned)-1 >> 2) + 1;
*have = 0;
do {
- ret = read(state->fd, buf + *have, len - *have);
+ get = len - *have;
+ if (get > max)
+ get = max;
+ ret = read(state->fd, buf + *have, get);
if (ret <= 0)
break;
- *have += ret;
+ *have += (unsigned)ret;
} while (*have < len);
if (ret < 0) {
gz_error(state, Z_ERRNO, zstrerror());
@@ -94,10 +99,8 @@ local int gz_look(state)
state->in = (unsigned char *)malloc(state->want);
state->out = (unsigned char *)malloc(state->want << 1);
if (state->in == NULL || state->out == NULL) {
- if (state->out != NULL)
- free(state->out);
- if (state->in != NULL)
- free(state->in);
+ free(state->out);
+ free(state->in);
gz_error(state, Z_MEM_ERROR, "out of memory");
return -1;
}
@@ -284,33 +287,17 @@ local int gz_skip(state, len)
return 0;
}
-/* -- see zlib.h -- */
-int ZEXPORT gzread(file, buf, len)
- gzFile file;
+/* Read len bytes into buf from file, or less than len up to the end of the
+ input. Return the number of bytes read. If zero is returned, either the
+ end of file was reached, or there was an error. state->err must be
+ consulted in that case to determine which. */
+local z_size_t gz_read(state, buf, len)
+ gz_statep state;
voidp buf;
- unsigned len;
+ z_size_t len;
{
- unsigned got, n;
- gz_statep state;
- z_streamp strm;
-
- /* get internal structure */
- if (file == NULL)
- return -1;
- state = (gz_statep)file;
- strm = &(state->strm);
-
- /* check that we're reading and that there's no (serious) error */
- if (state->mode != GZ_READ ||
- (state->err != Z_OK && state->err != Z_BUF_ERROR))
- return -1;
-
- /* since an int is returned, make sure len fits in one, otherwise return
- with an error (this avoids the flaw in the interface) */
- if ((int)len < 0) {
- gz_error(state, Z_DATA_ERROR, "requested length does not fit in int");
- return -1;
- }
+ z_size_t got;
+ unsigned n;
/* if len is zero, avoid unnecessary operations */
if (len == 0)
@@ -320,32 +307,38 @@ int ZEXPORT gzread(file, buf, len)
if (state->seek) {
state->seek = 0;
if (gz_skip(state, state->skip) == -1)
- return -1;
+ return 0;
}
/* get len bytes to buf, or less than len if at the end */
got = 0;
do {
+ /* set n to the maximum amount of len that fits in an unsigned int */
+ n = -1;
+ if (n > len)
+ n = len;
+
/* first just try copying data from the output buffer */
if (state->x.have) {
- n = state->x.have > len ? len : state->x.have;
+ if (state->x.have < n)
+ n = state->x.have;
memcpy(buf, state->x.next, n);
state->x.next += n;
state->x.have -= n;
}
/* output buffer empty -- return if we're at the end of the input */
- else if (state->eof && strm->avail_in == 0) {
+ else if (state->eof && state->strm.avail_in == 0) {
state->past = 1; /* tried to read past end */
break;
}
/* need output data -- for small len or new stream load up our output
buffer */
- else if (state->how == LOOK || len < (state->size << 1)) {
+ else if (state->how == LOOK || n < (state->size << 1)) {
/* get more output, looking for header if required */
if (gz_fetch(state) == -1)
- return -1;
+ return 0;
continue; /* no progress yet -- go back to copy above */
/* the copy above assures that we will leave with space in the
output buffer, allowing at least one gzungetc() to succeed */
@@ -353,16 +346,16 @@ int ZEXPORT gzread(file, buf, len)
/* large len -- read directly into user buffer */
else if (state->how == COPY) { /* read directly */
- if (gz_load(state, (unsigned char *)buf, len, &n) == -1)
- return -1;
+ if (gz_load(state, (unsigned char *)buf, n, &n) == -1)
+ return 0;
}
/* large len -- decompress directly into user buffer */
else { /* state->how == GZIP */
- strm->avail_out = len;
- strm->next_out = (unsigned char *)buf;
+ state->strm.avail_out = n;
+ state->strm.next_out = (unsigned char *)buf;
if (gz_decomp(state) == -1)
- return -1;
+ return 0;
n = state->x.have;
state->x.have = 0;
}
@@ -374,8 +367,75 @@ int ZEXPORT gzread(file, buf, len)
state->x.pos += n;
} while (len);
- /* return number of bytes read into user buffer (will fit in int) */
- return (int)got;
+ /* return number of bytes read into user buffer */
+ return got;
+}
+
+/* -- see zlib.h -- */
+int ZEXPORT gzread(file, buf, len)
+ gzFile file;
+ voidp buf;
+ unsigned len;
+{
+ gz_statep state;
+
+ /* get internal structure */
+ if (file == NULL)
+ return -1;
+ state = (gz_statep)file;
+
+ /* check that we're reading and that there's no (serious) error */
+ if (state->mode != GZ_READ ||
+ (state->err != Z_OK && state->err != Z_BUF_ERROR))
+ return -1;
+
+ /* since an int is returned, make sure len fits in one, otherwise return
+ with an error (this avoids a flaw in the interface) */
+ if ((int)len < 0) {
+ gz_error(state, Z_STREAM_ERROR, "request does not fit in an int");
+ return -1;
+ }
+
+ /* read len or fewer bytes to buf */
+ len = gz_read(state, buf, len);
+
+ /* check for an error */
+ if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR)
+ return -1;
+
+ /* return the number of bytes read (this is assured to fit in an int) */
+ return (int)len;
+}
+
+/* -- see zlib.h -- */
+z_size_t ZEXPORT gzfread(buf, size, nitems, file)
+ voidp buf;
+ z_size_t size;
+ z_size_t nitems;
+ gzFile file;
+{
+ z_size_t len;
+ gz_statep state;
+
+ /* get internal structure */
+ if (file == NULL)
+ return 0;
+ state = (gz_statep)file;
+
+ /* check that we're reading and that there's no (serious) error */
+ if (state->mode != GZ_READ ||
+ (state->err != Z_OK && state->err != Z_BUF_ERROR))
+ return 0;
+
+ /* compute bytes to read -- error on overflow */
+ len = nitems * size;
+ if (size && len / size != nitems) {
+ gz_error(state, Z_STREAM_ERROR, "request does not fit in a size_t");
+ return 0;
+ }
+
+ /* read len or fewer bytes to buf, return the number of full items read */
+ return len ? gz_read(state, buf, len) / size : 0;
}
/* -- see zlib.h -- */
@@ -408,8 +468,8 @@ int ZEXPORT gzgetc(file)
return *(state->x.next)++;
}
- /* nothing there -- try gzread() */
- ret = gzread(file, buf, 1);
+ /* nothing there -- try gz_read() */
+ ret = gz_read(state, buf, 1);
return ret < 1 ? -1 : buf[0];
}
@@ -451,7 +511,7 @@ int ZEXPORT gzungetc(c, file)
if (state->x.have == 0) {
state->x.have = 1;
state->x.next = state->out + (state->size << 1) - 1;
- state->x.next[0] = c;
+ state->x.next[0] = (unsigned char)c;
state->x.pos--;
state->past = 0;
return c;
@@ -473,7 +533,7 @@ int ZEXPORT gzungetc(c, file)
}
state->x.have++;
state->x.next--;
- state->x.next[0] = c;
+ state->x.next[0] = (unsigned char)c;
state->x.pos--;
state->past = 0;
return c;
diff --git a/modules/zlib/src/gzwrite.c b/modules/zlib/src/gzwrite.c
index aa767fbf63..c7b5651d70 100644
--- a/modules/zlib/src/gzwrite.c
+++ b/modules/zlib/src/gzwrite.c
@@ -1,5 +1,5 @@
/* gzwrite.c -- zlib functions for writing gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,17 +9,19 @@
local int gz_init OF((gz_statep));
local int gz_comp OF((gz_statep, int));
local int gz_zero OF((gz_statep, z_off64_t));
+local z_size_t gz_write OF((gz_statep, voidpc, z_size_t));
/* Initialize state for writing a gzip file. Mark initialization by setting
- state->size to non-zero. Return -1 on failure or 0 on success. */
+ state->size to non-zero. Return -1 on a memory allocation failure, or 0 on
+ success. */
local int gz_init(state)
gz_statep state;
{
int ret;
z_streamp strm = &(state->strm);
- /* allocate input buffer */
- state->in = (unsigned char *)malloc(state->want);
+ /* allocate input buffer (double size for gzprintf) */
+ state->in = (unsigned char *)malloc(state->want << 1);
if (state->in == NULL) {
gz_error(state, Z_MEM_ERROR, "out of memory");
return -1;
@@ -47,6 +49,7 @@ local int gz_init(state)
gz_error(state, Z_MEM_ERROR, "out of memory");
return -1;
}
+ strm->next_in = NULL;
}
/* mark state as initialized */
@@ -62,17 +65,17 @@ local int gz_init(state)
}
/* Compress whatever is at avail_in and next_in and write to the output file.
- Return -1 if there is an error writing to the output file, otherwise 0.
- flush is assumed to be a valid deflate() flush value. If flush is Z_FINISH,
- then the deflate() state is reset to start a new gzip stream. If gz->direct
- is true, then simply write to the output file without compressing, and
- ignore flush. */
+ Return -1 if there is an error writing to the output file or if gz_init()
+ fails to allocate memory, otherwise 0. flush is assumed to be a valid
+ deflate() flush value. If flush is Z_FINISH, then the deflate() state is
+ reset to start a new gzip stream. If gz->direct is true, then simply write
+ to the output file without compressing, and ignore flush. */
local int gz_comp(state, flush)
gz_statep state;
int flush;
{
- int ret, got;
- unsigned have;
+ int ret, writ;
+ unsigned have, put, max = ((unsigned)-1 >> 2) + 1;
z_streamp strm = &(state->strm);
/* allocate memory if this is the first time through */
@@ -81,12 +84,16 @@ local int gz_comp(state, flush)
/* write directly if requested */
if (state->direct) {
- got = write(state->fd, strm->next_in, strm->avail_in);
- if (got < 0 || (unsigned)got != strm->avail_in) {
- gz_error(state, Z_ERRNO, zstrerror());
- return -1;
+ while (strm->avail_in) {
+ put = strm->avail_in > max ? max : strm->avail_in;
+ writ = write(state->fd, strm->next_in, put);
+ if (writ < 0) {
+ gz_error(state, Z_ERRNO, zstrerror());
+ return -1;
+ }
+ strm->avail_in -= (unsigned)writ;
+ strm->next_in += writ;
}
- strm->avail_in = 0;
return 0;
}
@@ -97,17 +104,21 @@ local int gz_comp(state, flush)
doing Z_FINISH then don't write until we get to Z_STREAM_END */
if (strm->avail_out == 0 || (flush != Z_NO_FLUSH &&
(flush != Z_FINISH || ret == Z_STREAM_END))) {
- have = (unsigned)(strm->next_out - state->x.next);
- if (have && ((got = write(state->fd, state->x.next, have)) < 0 ||
- (unsigned)got != have)) {
- gz_error(state, Z_ERRNO, zstrerror());
- return -1;
+ while (strm->next_out > state->x.next) {
+ put = strm->next_out - state->x.next > (int)max ? max :
+ (unsigned)(strm->next_out - state->x.next);
+ writ = write(state->fd, state->x.next, put);
+ if (writ < 0) {
+ gz_error(state, Z_ERRNO, zstrerror());
+ return -1;
+ }
+ state->x.next += writ;
}
if (strm->avail_out == 0) {
strm->avail_out = state->size;
strm->next_out = state->out;
+ state->x.next = state->out;
}
- state->x.next = strm->next_out;
}
/* compress */
@@ -129,7 +140,8 @@ local int gz_comp(state, flush)
return 0;
}
-/* Compress len zeros to output. Return -1 on error, 0 on success. */
+/* Compress len zeros to output. Return -1 on a write error or memory
+ allocation failure by gz_comp(), or 0 on success. */
local int gz_zero(state, len)
gz_statep state;
z_off64_t len;
@@ -161,32 +173,14 @@ local int gz_zero(state, len)
return 0;
}
-/* -- see zlib.h -- */
-int ZEXPORT gzwrite(file, buf, len)
- gzFile file;
+/* Write len bytes from buf to file. Return the number of bytes written. If
+ the returned value is less than len, then there was an error. */
+local z_size_t gz_write(state, buf, len)
+ gz_statep state;
voidpc buf;
- unsigned len;
+ z_size_t len;
{
- unsigned put = len;
- gz_statep state;
- z_streamp strm;
-
- /* get internal structure */
- if (file == NULL)
- return 0;
- state = (gz_statep)file;
- strm = &(state->strm);
-
- /* check that we're writing and that there's no error */
- if (state->mode != GZ_WRITE || state->err != Z_OK)
- return 0;
-
- /* since an int is returned, make sure len fits in one, otherwise return
- with an error (this avoids the flaw in the interface) */
- if ((int)len < 0) {
- gz_error(state, Z_DATA_ERROR, "requested length does not fit in int");
- return 0;
- }
+ z_size_t put = len;
/* if len is zero, avoid unnecessary operations */
if (len == 0)
@@ -209,14 +203,15 @@ int ZEXPORT gzwrite(file, buf, len)
do {
unsigned have, copy;
- if (strm->avail_in == 0)
- strm->next_in = state->in;
- have = (unsigned)((strm->next_in + strm->avail_in) - state->in);
+ if (state->strm.avail_in == 0)
+ state->strm.next_in = state->in;
+ have = (unsigned)((state->strm.next_in + state->strm.avail_in) -
+ state->in);
copy = state->size - have;
if (copy > len)
copy = len;
memcpy(state->in + have, buf, copy);
- strm->avail_in += copy;
+ state->strm.avail_in += copy;
state->x.pos += copy;
buf = (const char *)buf + copy;
len -= copy;
@@ -226,19 +221,83 @@ int ZEXPORT gzwrite(file, buf, len)
}
else {
/* consume whatever's left in the input buffer */
- if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1)
+ if (state->strm.avail_in && gz_comp(state, Z_NO_FLUSH) == -1)
return 0;
/* directly compress user buffer to file */
- strm->avail_in = len;
- strm->next_in = (z_const Bytef *)buf;
- state->x.pos += len;
- if (gz_comp(state, Z_NO_FLUSH) == -1)
- return 0;
+ state->strm.next_in = (z_const Bytef *)buf;
+ do {
+ unsigned n = (unsigned)-1;
+ if (n > len)
+ n = len;
+ state->strm.avail_in = n;
+ state->x.pos += n;
+ if (gz_comp(state, Z_NO_FLUSH) == -1)
+ return 0;
+ len -= n;
+ } while (len);
+ }
+
+ /* input was all buffered or compressed */
+ return put;
+}
+
+/* -- see zlib.h -- */
+int ZEXPORT gzwrite(file, buf, len)
+ gzFile file;
+ voidpc buf;
+ unsigned len;
+{
+ gz_statep state;
+
+ /* get internal structure */
+ if (file == NULL)
+ return 0;
+ state = (gz_statep)file;
+
+ /* check that we're writing and that there's no error */
+ if (state->mode != GZ_WRITE || state->err != Z_OK)
+ return 0;
+
+ /* since an int is returned, make sure len fits in one, otherwise return
+ with an error (this avoids a flaw in the interface) */
+ if ((int)len < 0) {
+ gz_error(state, Z_DATA_ERROR, "requested length does not fit in int");
+ return 0;
+ }
+
+ /* write len bytes from buf (the return value will fit in an int) */
+ return (int)gz_write(state, buf, len);
+}
+
+/* -- see zlib.h -- */
+z_size_t ZEXPORT gzfwrite(buf, size, nitems, file)
+ voidpc buf;
+ z_size_t size;
+ z_size_t nitems;
+ gzFile file;
+{
+ z_size_t len;
+ gz_statep state;
+
+ /* get internal structure */
+ if (file == NULL)
+ return 0;
+ state = (gz_statep)file;
+
+ /* check that we're writing and that there's no error */
+ if (state->mode != GZ_WRITE || state->err != Z_OK)
+ return 0;
+
+ /* compute bytes to read -- error on overflow */
+ len = nitems * size;
+ if (size && len / size != nitems) {
+ gz_error(state, Z_STREAM_ERROR, "request does not fit in a size_t");
+ return 0;
}
- /* input was all buffered or compressed (put will fit in int) */
- return (int)put;
+ /* write len bytes to buf, return the number of full items written */
+ return len ? gz_write(state, buf, len) / size : 0;
}
/* -- see zlib.h -- */
@@ -275,7 +334,7 @@ int ZEXPORT gzputc(file, c)
strm->next_in = state->in;
have = (unsigned)((strm->next_in + strm->avail_in) - state->in);
if (have < state->size) {
- state->in[have] = c;
+ state->in[have] = (unsigned char)c;
strm->avail_in++;
state->x.pos++;
return c & 0xff;
@@ -283,8 +342,8 @@ int ZEXPORT gzputc(file, c)
}
/* no room in buffer or not initialized, use gz_write() */
- buf[0] = c;
- if (gzwrite(file, buf, 1) != 1)
+ buf[0] = (unsigned char)c;
+ if (gz_write(state, buf, 1) != 1)
return -1;
return c & 0xff;
}
@@ -295,11 +354,21 @@ int ZEXPORT gzputs(file, str)
const char *str;
{
int ret;
- unsigned len;
+ z_size_t len;
+ gz_statep state;
+
+ /* get internal structure */
+ if (file == NULL)
+ return -1;
+ state = (gz_statep)file;
+
+ /* check that we're writing and that there's no error */
+ if (state->mode != GZ_WRITE || state->err != Z_OK)
+ return -1;
/* write string */
- len = (unsigned)strlen(str);
- ret = gzwrite(file, str, len);
+ len = strlen(str);
+ ret = gz_write(state, str, len);
return ret == 0 && len != 0 ? -1 : ret;
}
@@ -309,63 +378,73 @@ int ZEXPORT gzputs(file, str)
/* -- see zlib.h -- */
int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
{
- int size, len;
+ int len;
+ unsigned left;
+ char *next;
gz_statep state;
z_streamp strm;
/* get internal structure */
if (file == NULL)
- return -1;
+ return Z_STREAM_ERROR;
state = (gz_statep)file;
strm = &(state->strm);
/* check that we're writing and that there's no error */
if (state->mode != GZ_WRITE || state->err != Z_OK)
- return 0;
+ return Z_STREAM_ERROR;
/* make sure we have some buffer space */
if (state->size == 0 && gz_init(state) == -1)
- return 0;
+ return state->err;
/* check for seek request */
if (state->seek) {
state->seek = 0;
if (gz_zero(state, state->skip) == -1)
- return 0;
+ return state->err;
}
- /* consume whatever's left in the input buffer */
- if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1)
- return 0;
-
- /* do the printf() into the input buffer, put length in len */
- size = (int)(state->size);
- state->in[size - 1] = 0;
+ /* do the printf() into the input buffer, put length in len -- the input
+ buffer is double-sized just for this function, so there is guaranteed to
+ be state->size bytes available after the current contents */
+ if (strm->avail_in == 0)
+ strm->next_in = state->in;
+ next = (char *)(state->in + (strm->next_in - state->in) + strm->avail_in);
+ next[state->size - 1] = 0;
#ifdef NO_vsnprintf
# ifdef HAS_vsprintf_void
- (void)vsprintf((char *)(state->in), format, va);
- for (len = 0; len < size; len++)
- if (state->in[len] == 0) break;
+ (void)vsprintf(next, format, va);
+ for (len = 0; len < state->size; len++)
+ if (next[len] == 0) break;
# else
- len = vsprintf((char *)(state->in), format, va);
+ len = vsprintf(next, format, va);
# endif
#else
# ifdef HAS_vsnprintf_void
- (void)vsnprintf((char *)(state->in), size, format, va);
- len = strlen((char *)(state->in));
+ (void)vsnprintf(next, state->size, format, va);
+ len = strlen(next);
# else
- len = vsnprintf((char *)(state->in), size, format, va);
+ len = vsnprintf(next, state->size, format, va);
# endif
#endif
/* check that printf() results fit in buffer */
- if (len <= 0 || len >= (int)size || state->in[size - 1] != 0)
+ if (len == 0 || (unsigned)len >= state->size || next[state->size - 1] != 0)
return 0;
- /* update buffer and position, defer compression until needed */
- strm->avail_in = (unsigned)len;
- strm->next_in = state->in;
+ /* update buffer and position, compress first half if past that */
+ strm->avail_in += (unsigned)len;
state->x.pos += len;
+ if (strm->avail_in >= state->size) {
+ left = strm->avail_in - state->size;
+ strm->avail_in = state->size;
+ if (gz_comp(state, Z_NO_FLUSH) == -1)
+ return state->err;
+ memcpy(state->in, state->in + state->size, left);
+ strm->next_in = state->in;
+ strm->avail_in = left;
+ }
return len;
}
@@ -390,73 +469,82 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
{
- int size, len;
+ unsigned len, left;
+ char *next;
gz_statep state;
z_streamp strm;
/* get internal structure */
if (file == NULL)
- return -1;
+ return Z_STREAM_ERROR;
state = (gz_statep)file;
strm = &(state->strm);
/* check that can really pass pointer in ints */
if (sizeof(int) != sizeof(void *))
- return 0;
+ return Z_STREAM_ERROR;
/* check that we're writing and that there's no error */
if (state->mode != GZ_WRITE || state->err != Z_OK)
- return 0;
+ return Z_STREAM_ERROR;
/* make sure we have some buffer space */
if (state->size == 0 && gz_init(state) == -1)
- return 0;
+ return state->error;
/* check for seek request */
if (state->seek) {
state->seek = 0;
if (gz_zero(state, state->skip) == -1)
- return 0;
+ return state->error;
}
- /* consume whatever's left in the input buffer */
- if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1)
- return 0;
-
- /* do the printf() into the input buffer, put length in len */
- size = (int)(state->size);
- state->in[size - 1] = 0;
+ /* do the printf() into the input buffer, put length in len -- the input
+ buffer is double-sized just for this function, so there is guaranteed to
+ be state->size bytes available after the current contents */
+ if (strm->avail_in == 0)
+ strm->next_in = state->in;
+ next = (char *)(strm->next_in + strm->avail_in);
+ next[state->size - 1] = 0;
#ifdef NO_snprintf
# ifdef HAS_sprintf_void
- sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8,
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
+ sprintf(next, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12,
+ a13, a14, a15, a16, a17, a18, a19, a20);
for (len = 0; len < size; len++)
- if (state->in[len] == 0) break;
+ if (next[len] == 0)
+ break;
# else
- len = sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8,
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
+ len = sprintf(next, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
+ a12, a13, a14, a15, a16, a17, a18, a19, a20);
# endif
#else
# ifdef HAS_snprintf_void
- snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6, a7, a8,
- a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
- len = strlen((char *)(state->in));
+ snprintf(next, state->size, format, a1, a2, a3, a4, a5, a6, a7, a8, a9,
+ a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
+ len = strlen(next);
# else
- len = snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6,
- a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18,
- a19, a20);
+ len = snprintf(next, state->size, format, a1, a2, a3, a4, a5, a6, a7, a8,
+ a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
# endif
#endif
/* check that printf() results fit in buffer */
- if (len <= 0 || len >= (int)size || state->in[size - 1] != 0)
+ if (len == 0 || len >= state->size || next[state->size - 1] != 0)
return 0;
- /* update buffer and position, defer compression until needed */
- strm->avail_in = (unsigned)len;
- strm->next_in = state->in;
+ /* update buffer and position, compress first half if past that */
+ strm->avail_in += len;
state->x.pos += len;
- return len;
+ if (strm->avail_in >= state->size) {
+ left = strm->avail_in - state->size;
+ strm->avail_in = state->size;
+ if (gz_comp(state, Z_NO_FLUSH) == -1)
+ return state->err;
+ memcpy(state->in, state->in + state->size, left);
+ strm->next_in = state->in;
+ strm->avail_in = left;
+ }
+ return (int)len;
}
#endif
@@ -470,7 +558,7 @@ int ZEXPORT gzflush(file, flush)
/* get internal structure */
if (file == NULL)
- return -1;
+ return Z_STREAM_ERROR;
state = (gz_statep)file;
/* check that we're writing and that there's no error */
@@ -485,11 +573,11 @@ int ZEXPORT gzflush(file, flush)
if (state->seek) {
state->seek = 0;
if (gz_zero(state, state->skip) == -1)
- return -1;
+ return state->err;
}
/* compress remaining data with requested flush */
- gz_comp(state, flush);
+ (void)gz_comp(state, flush);
return state->err;
}
@@ -520,13 +608,13 @@ int ZEXPORT gzsetparams(file, level, strategy)
if (state->seek) {
state->seek = 0;
if (gz_zero(state, state->skip) == -1)
- return -1;
+ return state->err;
}
/* change compression parameters for subsequent input */
if (state->size) {
/* flush previous input with previous parameters before changing */
- if (strm->avail_in && gz_comp(state, Z_PARTIAL_FLUSH) == -1)
+ if (strm->avail_in && gz_comp(state, Z_BLOCK) == -1)
return state->err;
deflateParams(strm, level, strategy);
}
diff --git a/modules/zlib/src/infback.c b/modules/zlib/src/infback.c
index f3833c2e43..59679ecbfc 100644
--- a/modules/zlib/src/infback.c
+++ b/modules/zlib/src/infback.c
@@ -1,5 +1,5 @@
/* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2011 Mark Adler
+ * Copyright (C) 1995-2016 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -61,7 +61,7 @@ int stream_size;
Tracev((stderr, "inflate: allocated\n"));
strm->state = (struct internal_state FAR *)state;
state->dmax = 32768U;
- state->wbits = windowBits;
+ state->wbits = (uInt)windowBits;
state->wsize = 1U << windowBits;
state->window = window;
state->wnext = 0;
diff --git a/modules/zlib/src/inffast.c b/modules/zlib/src/inffast.c
index bda59ceb6a..0dbd1dbc09 100644
--- a/modules/zlib/src/inffast.c
+++ b/modules/zlib/src/inffast.c
@@ -1,5 +1,5 @@
/* inffast.c -- fast decoding
- * Copyright (C) 1995-2008, 2010, 2013 Mark Adler
+ * Copyright (C) 1995-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -8,26 +8,9 @@
#include "inflate.h"
#include "inffast.h"
-#ifndef ASMINF
-
-/* Allow machine dependent optimization for post-increment or pre-increment.
- Based on testing to date,
- Pre-increment preferred for:
- - PowerPC G3 (Adler)
- - MIPS R5000 (Randers-Pehrson)
- Post-increment preferred for:
- - none
- No measurable difference:
- - Pentium III (Anderson)
- - M68060 (Nikl)
- */
-#ifdef POSTINC
-# define OFF 0
-# define PUP(a) *(a)++
+#ifdef ASMINF
+# pragma message("Assembler code may have bugs -- use at your own risk")
#else
-# define OFF 1
-# define PUP(a) *++(a)
-#endif
/*
Decode literal, length, and distance codes and write out the resulting
@@ -96,9 +79,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
/* copy state to local variables */
state = (struct inflate_state FAR *)strm->state;
- in = strm->next_in - OFF;
+ in = strm->next_in;
last = in + (strm->avail_in - 5);
- out = strm->next_out - OFF;
+ out = strm->next_out;
beg = out - (start - strm->avail_out);
end = out + (strm->avail_out - 257);
#ifdef INFLATE_STRICT
@@ -119,9 +102,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
input data or output space */
do {
if (bits < 15) {
- hold += (unsigned long)(PUP(in)) << bits;
+ hold += (unsigned long)(*in++) << bits;
bits += 8;
- hold += (unsigned long)(PUP(in)) << bits;
+ hold += (unsigned long)(*in++) << bits;
bits += 8;
}
here = lcode[hold & lmask];
@@ -134,14 +117,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
"inflate: literal '%c'\n" :
"inflate: literal 0x%02x\n", here.val));
- PUP(out) = (unsigned char)(here.val);
+ *out++ = (unsigned char)(here.val);
}
else if (op & 16) { /* length base */
len = (unsigned)(here.val);
op &= 15; /* number of extra bits */
if (op) {
if (bits < op) {
- hold += (unsigned long)(PUP(in)) << bits;
+ hold += (unsigned long)(*in++) << bits;
bits += 8;
}
len += (unsigned)hold & ((1U << op) - 1);
@@ -150,9 +133,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
Tracevv((stderr, "inflate: length %u\n", len));
if (bits < 15) {
- hold += (unsigned long)(PUP(in)) << bits;
+ hold += (unsigned long)(*in++) << bits;
bits += 8;
- hold += (unsigned long)(PUP(in)) << bits;
+ hold += (unsigned long)(*in++) << bits;
bits += 8;
}
here = dcode[hold & dmask];
@@ -165,10 +148,10 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
dist = (unsigned)(here.val);
op &= 15; /* number of extra bits */
if (bits < op) {
- hold += (unsigned long)(PUP(in)) << bits;
+ hold += (unsigned long)(*in++) << bits;
bits += 8;
if (bits < op) {
- hold += (unsigned long)(PUP(in)) << bits;
+ hold += (unsigned long)(*in++) << bits;
bits += 8;
}
}
@@ -196,30 +179,30 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
if (len <= op - whave) {
do {
- PUP(out) = 0;
+ *out++ = 0;
} while (--len);
continue;
}
len -= op - whave;
do {
- PUP(out) = 0;
+ *out++ = 0;
} while (--op > whave);
if (op == 0) {
from = out - dist;
do {
- PUP(out) = PUP(from);
+ *out++ = *from++;
} while (--len);
continue;
}
#endif
}
- from = window - OFF;
+ from = window;
if (wnext == 0) { /* very common case */
from += wsize - op;
if (op < len) { /* some from window */
len -= op;
do {
- PUP(out) = PUP(from);
+ *out++ = *from++;
} while (--op);
from = out - dist; /* rest from output */
}
@@ -230,14 +213,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
if (op < len) { /* some from end of window */
len -= op;
do {
- PUP(out) = PUP(from);
+ *out++ = *from++;
} while (--op);
- from = window - OFF;
+ from = window;
if (wnext < len) { /* some from start of window */
op = wnext;
len -= op;
do {
- PUP(out) = PUP(from);
+ *out++ = *from++;
} while (--op);
from = out - dist; /* rest from output */
}
@@ -248,35 +231,35 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
if (op < len) { /* some from window */
len -= op;
do {
- PUP(out) = PUP(from);
+ *out++ = *from++;
} while (--op);
from = out - dist; /* rest from output */
}
}
while (len > 2) {
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
+ *out++ = *from++;
+ *out++ = *from++;
+ *out++ = *from++;
len -= 3;
}
if (len) {
- PUP(out) = PUP(from);
+ *out++ = *from++;
if (len > 1)
- PUP(out) = PUP(from);
+ *out++ = *from++;
}
}
else {
from = out - dist; /* copy direct from output */
do { /* minimum length is three */
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
+ *out++ = *from++;
+ *out++ = *from++;
+ *out++ = *from++;
len -= 3;
} while (len > 2);
if (len) {
- PUP(out) = PUP(from);
+ *out++ = *from++;
if (len > 1)
- PUP(out) = PUP(from);
+ *out++ = *from++;
}
}
}
@@ -313,8 +296,8 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
hold &= (1U << bits) - 1;
/* update state and return */
- strm->next_in = in + OFF;
- strm->next_out = out + OFF;
+ strm->next_in = in;
+ strm->next_out = out;
strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
strm->avail_out = (unsigned)(out < end ?
257 + (end - out) : 257 - (out - end));
diff --git a/modules/zlib/src/inflate.c b/modules/zlib/src/inflate.c
index 4fd3f3c180..ac333e8c2e 100644
--- a/modules/zlib/src/inflate.c
+++ b/modules/zlib/src/inflate.c
@@ -1,5 +1,5 @@
/* inflate.c -- zlib decompression
- * Copyright (C) 1995-2012 Mark Adler
+ * Copyright (C) 1995-2016 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -92,6 +92,7 @@
#endif
/* function prototypes */
+local int inflateStateCheck OF((z_streamp strm));
local void fixedtables OF((struct inflate_state FAR *state));
local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
unsigned copy));
@@ -101,12 +102,26 @@ local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,
unsigned len));
+local int inflateStateCheck(strm)
+z_streamp strm;
+{
+ struct inflate_state FAR *state;
+ if (strm == Z_NULL ||
+ strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
+ return 1;
+ state = (struct inflate_state FAR *)strm->state;
+ if (state == Z_NULL || state->strm != strm ||
+ state->mode < HEAD || state->mode > SYNC)
+ return 1;
+ return 0;
+}
+
int ZEXPORT inflateResetKeep(strm)
z_streamp strm;
{
struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
strm->total_in = strm->total_out = state->total = 0;
strm->msg = Z_NULL;
@@ -131,7 +146,7 @@ z_streamp strm;
{
struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
state->wsize = 0;
state->whave = 0;
@@ -147,7 +162,7 @@ int windowBits;
struct inflate_state FAR *state;
/* get the state */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
/* extract wrap request from windowBits parameter */
@@ -156,7 +171,7 @@ int windowBits;
windowBits = -windowBits;
}
else {
- wrap = (windowBits >> 4) + 1;
+ wrap = (windowBits >> 4) + 5;
#ifdef GUNZIP
if (windowBits < 48)
windowBits &= 15;
@@ -210,7 +225,9 @@ int stream_size;
if (state == Z_NULL) return Z_MEM_ERROR;
Tracev((stderr, "inflate: allocated\n"));
strm->state = (struct internal_state FAR *)state;
+ state->strm = strm;
state->window = Z_NULL;
+ state->mode = HEAD; /* to pass state test in inflateReset2() */
ret = inflateReset2(strm, windowBits);
if (ret != Z_OK) {
ZFREE(strm, state);
@@ -234,17 +251,17 @@ int value;
{
struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
if (bits < 0) {
state->hold = 0;
state->bits = 0;
return Z_OK;
}
- if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
+ if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR;
value &= (1L << bits) - 1;
- state->hold += value << state->bits;
- state->bits += bits;
+ state->hold += (unsigned)value << state->bits;
+ state->bits += (uInt)bits;
return Z_OK;
}
@@ -625,7 +642,7 @@ int flush;
static const unsigned short order[19] = /* permutation of code lengths */
{16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
- if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL ||
+ if (inflateStateCheck(strm) || strm->next_out == Z_NULL ||
(strm->next_in == Z_NULL && strm->avail_in != 0))
return Z_STREAM_ERROR;
@@ -645,6 +662,8 @@ int flush;
NEEDBITS(16);
#ifdef GUNZIP
if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */
+ if (state->wbits == 0)
+ state->wbits = 15;
state->check = crc32(0L, Z_NULL, 0);
CRC2(state->check, hold);
INITBITS();
@@ -672,7 +691,7 @@ int flush;
len = BITS(4) + 8;
if (state->wbits == 0)
state->wbits = len;
- else if (len > state->wbits) {
+ if (len > 15 || len > state->wbits) {
strm->msg = (char *)"invalid window size";
state->mode = BAD;
break;
@@ -699,14 +718,16 @@ int flush;
}
if (state->head != Z_NULL)
state->head->text = (int)((hold >> 8) & 1);
- if (state->flags & 0x0200) CRC2(state->check, hold);
+ if ((state->flags & 0x0200) && (state->wrap & 4))
+ CRC2(state->check, hold);
INITBITS();
state->mode = TIME;
case TIME:
NEEDBITS(32);
if (state->head != Z_NULL)
state->head->time = hold;
- if (state->flags & 0x0200) CRC4(state->check, hold);
+ if ((state->flags & 0x0200) && (state->wrap & 4))
+ CRC4(state->check, hold);
INITBITS();
state->mode = OS;
case OS:
@@ -715,7 +736,8 @@ int flush;
state->head->xflags = (int)(hold & 0xff);
state->head->os = (int)(hold >> 8);
}
- if (state->flags & 0x0200) CRC2(state->check, hold);
+ if ((state->flags & 0x0200) && (state->wrap & 4))
+ CRC2(state->check, hold);
INITBITS();
state->mode = EXLEN;
case EXLEN:
@@ -724,7 +746,8 @@ int flush;
state->length = (unsigned)(hold);
if (state->head != Z_NULL)
state->head->extra_len = (unsigned)hold;
- if (state->flags & 0x0200) CRC2(state->check, hold);
+ if ((state->flags & 0x0200) && (state->wrap & 4))
+ CRC2(state->check, hold);
INITBITS();
}
else if (state->head != Z_NULL)
@@ -742,7 +765,7 @@ int flush;
len + copy > state->head->extra_max ?
state->head->extra_max - len : copy);
}
- if (state->flags & 0x0200)
+ if ((state->flags & 0x0200) && (state->wrap & 4))
state->check = crc32(state->check, next, copy);
have -= copy;
next += copy;
@@ -761,9 +784,9 @@ int flush;
if (state->head != Z_NULL &&
state->head->name != Z_NULL &&
state->length < state->head->name_max)
- state->head->name[state->length++] = len;
+ state->head->name[state->length++] = (Bytef)len;
} while (len && copy < have);
- if (state->flags & 0x0200)
+ if ((state->flags & 0x0200) && (state->wrap & 4))
state->check = crc32(state->check, next, copy);
have -= copy;
next += copy;
@@ -782,9 +805,9 @@ int flush;
if (state->head != Z_NULL &&
state->head->comment != Z_NULL &&
state->length < state->head->comm_max)
- state->head->comment[state->length++] = len;
+ state->head->comment[state->length++] = (Bytef)len;
} while (len && copy < have);
- if (state->flags & 0x0200)
+ if ((state->flags & 0x0200) && (state->wrap & 4))
state->check = crc32(state->check, next, copy);
have -= copy;
next += copy;
@@ -796,7 +819,7 @@ int flush;
case HCRC:
if (state->flags & 0x0200) {
NEEDBITS(16);
- if (hold != (state->check & 0xffff)) {
+ if ((state->wrap & 4) && hold != (state->check & 0xffff)) {
strm->msg = (char *)"header crc mismatch";
state->mode = BAD;
break;
@@ -1177,11 +1200,11 @@ int flush;
out -= left;
strm->total_out += out;
state->total += out;
- if (out)
+ if ((state->wrap & 4) && out)
strm->adler = state->check =
UPDATE(state->check, put - out, out);
out = left;
- if ((
+ if ((state->wrap & 4) && (
#ifdef GUNZIP
state->flags ? hold :
#endif
@@ -1240,10 +1263,10 @@ int flush;
strm->total_in += in;
strm->total_out += out;
state->total += out;
- if (state->wrap && out)
+ if ((state->wrap & 4) && out)
strm->adler = state->check =
UPDATE(state->check, strm->next_out - out, out);
- strm->data_type = state->bits + (state->last ? 64 : 0) +
+ strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
(state->mode == TYPE ? 128 : 0) +
(state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
@@ -1255,7 +1278,7 @@ int ZEXPORT inflateEnd(strm)
z_streamp strm;
{
struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
+ if (inflateStateCheck(strm))
return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
if (state->window != Z_NULL) ZFREE(strm, state->window);
@@ -1273,7 +1296,7 @@ uInt *dictLength;
struct inflate_state FAR *state;
/* check state */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
/* copy dictionary */
@@ -1298,7 +1321,7 @@ uInt dictLength;
int ret;
/* check state */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
if (state->wrap != 0 && state->mode != DICT)
return Z_STREAM_ERROR;
@@ -1330,7 +1353,7 @@ gz_headerp head;
struct inflate_state FAR *state;
/* check state */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
if ((state->wrap & 2) == 0) return Z_STREAM_ERROR;
@@ -1383,7 +1406,7 @@ z_streamp strm;
struct inflate_state FAR *state;
/* check parameters */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR;
@@ -1430,7 +1453,7 @@ z_streamp strm;
{
struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
return state->mode == STORED && state->bits == 0;
}
@@ -1445,8 +1468,7 @@ z_streamp source;
unsigned wsize;
/* check input */
- if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL ||
- source->zalloc == (alloc_func)0 || source->zfree == (free_func)0)
+ if (inflateStateCheck(source) || dest == Z_NULL)
return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)source->state;
@@ -1467,6 +1489,7 @@ z_streamp source;
/* copy state */
zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream));
zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state));
+ copy->strm = dest;
if (state->lencode >= state->codes &&
state->lencode <= state->codes + ENOUGH - 1) {
copy->lencode = copy->codes + (state->lencode - state->codes);
@@ -1488,26 +1511,51 @@ int subvert;
{
struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
- state->sane = !subvert;
#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+ state->sane = !subvert;
return Z_OK;
#else
+ (void)subvert;
state->sane = 1;
return Z_DATA_ERROR;
#endif
}
+int ZEXPORT inflateValidate(strm, check)
+z_streamp strm;
+int check;
+{
+ struct inflate_state FAR *state;
+
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
+ state = (struct inflate_state FAR *)strm->state;
+ if (check)
+ state->wrap |= 4;
+ else
+ state->wrap &= ~4;
+ return Z_OK;
+}
+
long ZEXPORT inflateMark(strm)
z_streamp strm;
{
struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL)
- return (long)(((unsigned long)0 - 1) << 16);
+ if (inflateStateCheck(strm))
+ return -(1L << 16);
state = (struct inflate_state FAR *)strm->state;
return (long)(((unsigned long)((long)state->back)) << 16) +
(state->mode == COPY ? state->length :
(state->mode == MATCH ? state->was - state->length : 0));
}
+
+unsigned long ZEXPORT inflateCodesUsed(strm)
+z_streamp strm;
+{
+ struct inflate_state FAR *state;
+ if (inflateStateCheck(strm)) return (unsigned long)-1;
+ state = (struct inflate_state FAR *)strm->state;
+ return (unsigned long)(state->next - state->codes);
+}
diff --git a/modules/zlib/src/inflate.h b/modules/zlib/src/inflate.h
index 95f4986d40..a46cce6b6d 100644
--- a/modules/zlib/src/inflate.h
+++ b/modules/zlib/src/inflate.h
@@ -1,5 +1,5 @@
/* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2009 Mark Adler
+ * Copyright (C) 1995-2016 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -18,7 +18,7 @@
/* Possible inflate modes between inflate() calls */
typedef enum {
- HEAD, /* i: waiting for magic header */
+ HEAD = 16180, /* i: waiting for magic header */
FLAGS, /* i: waiting for method and flags (gzip) */
TIME, /* i: waiting for modification time (gzip) */
OS, /* i: waiting for extra flags and operating system (gzip) */
@@ -77,11 +77,14 @@ typedef enum {
CHECK -> LENGTH -> DONE
*/
-/* state maintained between inflate() calls. Approximately 10K bytes. */
+/* State maintained between inflate() calls -- approximately 7K bytes, not
+ including the allocated sliding window, which is up to 32K bytes. */
struct inflate_state {
+ z_streamp strm; /* pointer back to this zlib stream */
inflate_mode mode; /* current inflate mode */
int last; /* true if processing last block */
- int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
+ int wrap; /* bit 0 true for zlib, bit 1 true for gzip,
+ bit 2 true to validate check value */
int havedict; /* true if dictionary provided */
int flags; /* gzip header method and flags (0 if zlib) */
unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
diff --git a/modules/zlib/src/inftrees.c b/modules/zlib/src/inftrees.c
index 44d89cf24e..2ea08fc13e 100644
--- a/modules/zlib/src/inftrees.c
+++ b/modules/zlib/src/inftrees.c
@@ -1,5 +1,5 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2013 Mark Adler
+ * Copyright (C) 1995-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate_copyright[] =
- " inflate 1.2.8 Copyright 1995-2013 Mark Adler ";
+ " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -54,7 +54,7 @@ unsigned short FAR *work;
code FAR *next; /* next available space in table */
const unsigned short FAR *base; /* base value table to use */
const unsigned short FAR *extra; /* extra bits table to use */
- int end; /* use base and extra for symbol > end */
+ unsigned match; /* use base and extra for symbol >= match */
unsigned short count[MAXBITS+1]; /* number of codes of each length */
unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
static const unsigned short lbase[31] = { /* Length codes 257..285 base */
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
@@ -181,19 +181,17 @@ unsigned short FAR *work;
switch (type) {
case CODES:
base = extra = work; /* dummy value--not used */
- end = 19;
+ match = 20;
break;
case LENS:
base = lbase;
- base -= 257;
extra = lext;
- extra -= 257;
- end = 256;
+ match = 257;
break;
- default: /* DISTS */
+ default: /* DISTS */
base = dbase;
extra = dext;
- end = -1;
+ match = 0;
}
/* initialize state for loop */
@@ -216,13 +214,13 @@ unsigned short FAR *work;
for (;;) {
/* create table entry */
here.bits = (unsigned char)(len - drop);
- if ((int)(work[sym]) < end) {
+ if (work[sym] + 1U < match) {
here.op = (unsigned char)0;
here.val = work[sym];
}
- else if ((int)(work[sym]) > end) {
- here.op = (unsigned char)(extra[work[sym]]);
- here.val = base[work[sym]];
+ else if (work[sym] >= match) {
+ here.op = (unsigned char)(extra[work[sym] - match]);
+ here.val = base[work[sym] - match];
}
else {
here.op = (unsigned char)(32 + 64); /* end of block */
diff --git a/modules/zlib/src/mozzconf.h b/modules/zlib/src/mozzconf.h
index f1da5ae28f..9521297eab 100644
--- a/modules/zlib/src/mozzconf.h
+++ b/modules/zlib/src/mozzconf.h
@@ -44,7 +44,6 @@
#define gzputs MOZ_Z_gzputs
#define gzgets MOZ_Z_gzgets
#define gzputc MOZ_Z_gzputc
-#define gzgetc MOZ_Z_gzgetc
#define gzungetc MOZ_Z_gzungetc
#define gzflush MOZ_Z_gzflush
#define gzseek MOZ_Z_gzseek
@@ -126,4 +125,45 @@
#define gzvprintf MOZ_Z_gzvprintf
#define inflateGetDictionary MOZ_Z_inflateGetDictionary
+/* New as of zlib-1.2.11 */
+#define adler32_combine_ MOZ_Z_adler32_combine_
+#define crc32_combine_ MOZ_Z_crc32_combine_
+#define deflate_fast MOZ_Z_deflate_fast
+#define deflate_slow MOZ_Z_deflate_slow
+#define deflateStateCheck MOZ_Z_deflateStateCheck
+#define deflate_stored MOZ_Z_deflate_stored
+#define fill_window MOZ_Z_fill_window
+#define flush_pending MOZ_Z_flush_pending
+#define longest_match MOZ_Z_longest_match
+#define read_buf MOZ_Z_read_buf
+#define slide_hash MOZ_Z_slide_hash
+#define gz_open MOZ_Z_gz_open
+#define gz_reset MOZ_Z_gz_reset
+#define gz_avail MOZ_Z_gz_avail
+#define gz_fetch MOZ_Z_gz_fetch
+#define gz_decomp MOZ_Z_gz_decomp
+#define gz_write MOZ_Z_gz_write
+#define gz_comp MOZ_Z_gz_comp
+#define gz_init MOZ_Z_gz_init
+#define gz_write MOZ_Z_gz_write
+#define gz_zero MOZ_Z_gz_zero
+#define gz_load MOZ_Z_gz_load
+#define gz_look MOZ_Z_gz_look
+#define gz_read MOZ_Z_gz_read
+#define gz_skip MOZ_Z_gz_skip
+#define syncsearch MOZ_Z_syncsearch
+#define updatewindow MOZ_Z_updatewindow
+#define inflateStateCheck MOZ_Z_inflateStateCheck
+#define bi_flush MOZ_Z_bi_flush
+#define bi_windup MOZ_Z_bi_windup
+#define bl_order MOZ_Z_bl_order
+#define build_tree MOZ_Z_build_tree
+#define compress_block MOZ_Z_compress_block
+#define init_block MOZ_Z_init_block
+#define pqdownheap MOZ_Z_pqdownheap
+#define scan_tree MOZ_Z_scan_tree
+#define send_tree MOZ_Z_send_tree
+#define slide_hash MOZ_Z_slide_hash
+#define uncompress2 MOZ_Z_uncompress2
+
#endif
diff --git a/modules/zlib/src/trees.c b/modules/zlib/src/trees.c
index 1fd7759ef0..50cf4b4571 100644
--- a/modules/zlib/src/trees.c
+++ b/modules/zlib/src/trees.c
@@ -1,5 +1,5 @@
/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2012 Jean-loup Gailly
+ * Copyright (C) 1995-2017 Jean-loup Gailly
* detect_data_type() function provided freely by Cosmin Truta, 2006
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -36,7 +36,7 @@
#include "deflate.h"
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
# include <ctype.h>
#endif
@@ -122,13 +122,13 @@ struct static_tree_desc_s {
int max_length; /* max bit length for the codes */
};
-local static_tree_desc static_l_desc =
+local const static_tree_desc static_l_desc =
{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
-local static_tree_desc static_d_desc =
+local const static_tree_desc static_d_desc =
{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS};
-local static_tree_desc static_bl_desc =
+local const static_tree_desc static_bl_desc =
{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS};
/* ===========================================================================
@@ -152,18 +152,16 @@ local int detect_data_type OF((deflate_state *s));
local unsigned bi_reverse OF((unsigned value, int length));
local void bi_windup OF((deflate_state *s));
local void bi_flush OF((deflate_state *s));
-local void copy_block OF((deflate_state *s, charf *buf, unsigned len,
- int header));
#ifdef GEN_TREES_H
local void gen_trees_header OF((void));
#endif
-#ifndef DEBUG
+#ifndef ZLIB_DEBUG
# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len)
/* Send a code of the given tree. c and tree must not have side effects */
-#else /* DEBUG */
+#else /* !ZLIB_DEBUG */
# define send_code(s, c, tree) \
{ if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \
send_bits(s, tree[c].Code, tree[c].Len); }
@@ -182,7 +180,7 @@ local void gen_trees_header OF((void));
* Send a value on a given number of bits.
* IN assertion: length <= 16 and value fits in length bits.
*/
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
local void send_bits OF((deflate_state *s, int value, int length));
local void send_bits(s, value, length)
@@ -208,12 +206,12 @@ local void send_bits(s, value, length)
s->bi_valid += length;
}
}
-#else /* !DEBUG */
+#else /* !ZLIB_DEBUG */
#define send_bits(s, value, length) \
{ int len = length;\
if (s->bi_valid > (int)Buf_size - len) {\
- int val = value;\
+ int val = (int)value;\
s->bi_buf |= (ush)val << s->bi_valid;\
put_short(s, s->bi_buf);\
s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
@@ -223,7 +221,7 @@ local void send_bits(s, value, length)
s->bi_valid += len;\
}\
}
-#endif /* DEBUG */
+#endif /* ZLIB_DEBUG */
/* the arguments must not have side effects */
@@ -317,7 +315,7 @@ local void tr_static_init()
* Genererate the file trees.h describing the static trees.
*/
#ifdef GEN_TREES_H
-# ifndef DEBUG
+# ifndef ZLIB_DEBUG
# include <stdio.h>
# endif
@@ -394,7 +392,7 @@ void ZLIB_INTERNAL _tr_init(s)
s->bi_buf = 0;
s->bi_valid = 0;
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
s->compressed_len = 0L;
s->bits_sent = 0L;
#endif
@@ -522,12 +520,12 @@ local void gen_bitlen(s, desc)
xbits = 0;
if (n >= base) xbits = extra[n-base];
f = tree[n].Freq;
- s->opt_len += (ulg)f * (bits + xbits);
- if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);
+ s->opt_len += (ulg)f * (unsigned)(bits + xbits);
+ if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits);
}
if (overflow == 0) return;
- Trace((stderr,"\nbit length overflow\n"));
+ Tracev((stderr,"\nbit length overflow\n"));
/* This happens for example on obj2 and pic of the Calgary corpus */
/* Find the first bit length which could increase: */
@@ -554,9 +552,8 @@ local void gen_bitlen(s, desc)
m = s->heap[--h];
if (m > max_code) continue;
if ((unsigned) tree[m].Len != (unsigned) bits) {
- Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
- s->opt_len += ((long)bits - (long)tree[m].Len)
- *(long)tree[m].Freq;
+ Tracev((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+ s->opt_len += ((ulg)bits - tree[m].Len) * tree[m].Freq;
tree[m].Len = (ush)bits;
}
n--;
@@ -578,7 +575,7 @@ local void gen_codes (tree, max_code, bl_count)
ushf *bl_count; /* number of codes at each bit length */
{
ush next_code[MAX_BITS+1]; /* next code value for each bit length */
- ush code = 0; /* running code value */
+ unsigned code = 0; /* running code value */
int bits; /* bit index */
int n; /* code index */
@@ -586,7 +583,8 @@ local void gen_codes (tree, max_code, bl_count)
* without bit reversal.
*/
for (bits = 1; bits <= MAX_BITS; bits++) {
- next_code[bits] = code = (code + bl_count[bits-1]) << 1;
+ code = (code + bl_count[bits-1]) << 1;
+ next_code[bits] = (ush)code;
}
/* Check that the bit counts in bl_count are consistent. The last code
* must be all ones.
@@ -599,7 +597,7 @@ local void gen_codes (tree, max_code, bl_count)
int len = tree[n].Len;
if (len == 0) continue;
/* Now reverse the bits */
- tree[n].Code = bi_reverse(next_code[len]++, len);
+ tree[n].Code = (ush)bi_reverse(next_code[len]++, len);
Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
@@ -821,7 +819,7 @@ local int build_bl_tree(s)
if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
}
/* Update opt_len to include the bit length tree and counts */
- s->opt_len += 3*(max_blindex+1) + 5+5+4;
+ s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4;
Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
s->opt_len, s->static_len));
@@ -869,11 +867,17 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
int last; /* one if this is the last block for a file */
{
send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */
-#ifdef DEBUG
+ bi_windup(s); /* align on byte boundary */
+ put_short(s, (ush)stored_len);
+ put_short(s, (ush)~stored_len);
+ zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
+ s->pending += stored_len;
+#ifdef ZLIB_DEBUG
s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
s->compressed_len += (stored_len + 4) << 3;
+ s->bits_sent += 2*16;
+ s->bits_sent += stored_len<<3;
#endif
- copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
}
/* ===========================================================================
@@ -894,7 +898,7 @@ void ZLIB_INTERNAL _tr_align(s)
{
send_bits(s, STATIC_TREES<<1, 3);
send_code(s, END_BLOCK, static_ltree);
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
#endif
bi_flush(s);
@@ -902,7 +906,7 @@ void ZLIB_INTERNAL _tr_align(s)
/* ===========================================================================
* Determine the best encoding for the current block: dynamic trees, static
- * trees or store, and output the encoded block to the zip file.
+ * trees or store, and write out the encoded block.
*/
void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
deflate_state *s;
@@ -974,7 +978,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
send_bits(s, (STATIC_TREES<<1)+last, 3);
compress_block(s, (const ct_data *)static_ltree,
(const ct_data *)static_dtree);
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
s->compressed_len += 3 + s->static_len;
#endif
} else {
@@ -983,7 +987,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
max_blindex+1);
compress_block(s, (const ct_data *)s->dyn_ltree,
(const ct_data *)s->dyn_dtree);
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
s->compressed_len += 3 + s->opt_len;
#endif
}
@@ -995,7 +999,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
if (last) {
bi_windup(s);
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
s->compressed_len += 7; /* align on byte boundary */
#endif
}
@@ -1090,7 +1094,7 @@ local void compress_block(s, ltree, dtree)
send_code(s, code, dtree); /* send the distance code */
extra = extra_dbits[code];
if (extra != 0) {
- dist -= base_dist[code];
+ dist -= (unsigned)base_dist[code];
send_bits(s, dist, extra); /* send the extra distance bits */
}
} /* literal or match pair ? */
@@ -1193,34 +1197,7 @@ local void bi_windup(s)
}
s->bi_buf = 0;
s->bi_valid = 0;
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
s->bits_sent = (s->bits_sent+7) & ~7;
#endif
}
-
-/* ===========================================================================
- * Copy a stored block, storing first the length and its
- * one's complement if requested.
- */
-local void copy_block(s, buf, len, header)
- deflate_state *s;
- charf *buf; /* the input data */
- unsigned len; /* its length */
- int header; /* true if block header must be written */
-{
- bi_windup(s); /* align on byte boundary */
-
- if (header) {
- put_short(s, (ush)len);
- put_short(s, (ush)~len);
-#ifdef DEBUG
- s->bits_sent += 2*16;
-#endif
- }
-#ifdef DEBUG
- s->bits_sent += (ulg)len<<3;
-#endif
- while (len--) {
- put_byte(s, *buf++);
- }
-}
diff --git a/modules/zlib/src/uncompr.c b/modules/zlib/src/uncompr.c
index 242e9493df..f03a1a865e 100644
--- a/modules/zlib/src/uncompr.c
+++ b/modules/zlib/src/uncompr.c
@@ -1,5 +1,5 @@
/* uncompr.c -- decompress a memory buffer
- * Copyright (C) 1995-2003, 2010 Jean-loup Gailly.
+ * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,51 +9,85 @@
#include "zlib.h"
/* ===========================================================================
- Decompresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total
- size of the destination buffer, which must be large enough to hold the
- entire uncompressed data. (The size of the uncompressed data must have
- been saved previously by the compressor and transmitted to the decompressor
- by some mechanism outside the scope of this compression library.)
- Upon exit, destLen is the actual size of the compressed buffer.
-
- uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer, or Z_DATA_ERROR if the input data was corrupted.
+ Decompresses the source buffer into the destination buffer. *sourceLen is
+ the byte length of the source buffer. Upon entry, *destLen is the total size
+ of the destination buffer, which must be large enough to hold the entire
+ uncompressed data. (The size of the uncompressed data must have been saved
+ previously by the compressor and transmitted to the decompressor by some
+ mechanism outside the scope of this compression library.) Upon exit,
+ *destLen is the size of the decompressed data and *sourceLen is the number
+ of source bytes consumed. Upon return, source + *sourceLen points to the
+ first unused input byte.
+
+ uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough
+ memory, Z_BUF_ERROR if there was not enough room in the output buffer, or
+ Z_DATA_ERROR if the input data was corrupted, including if the input data is
+ an incomplete zlib stream.
*/
-int ZEXPORT uncompress (dest, destLen, source, sourceLen)
+int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
Bytef *dest;
uLongf *destLen;
const Bytef *source;
- uLong sourceLen;
+ uLong *sourceLen;
{
z_stream stream;
int err;
+ const uInt max = (uInt)-1;
+ uLong len, left;
+ Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */
- stream.next_in = (z_const Bytef *)source;
- stream.avail_in = (uInt)sourceLen;
- /* Check for source > 64K on 16-bit machine: */
- if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
-
- stream.next_out = dest;
- stream.avail_out = (uInt)*destLen;
- if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
+ len = *sourceLen;
+ if (*destLen) {
+ left = *destLen;
+ *destLen = 0;
+ }
+ else {
+ left = 1;
+ dest = buf;
+ }
+ stream.next_in = (z_const Bytef *)source;
+ stream.avail_in = 0;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
+ stream.opaque = (voidpf)0;
err = inflateInit(&stream);
if (err != Z_OK) return err;
- err = inflate(&stream, Z_FINISH);
- if (err != Z_STREAM_END) {
- inflateEnd(&stream);
- if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
- return Z_DATA_ERROR;
- return err;
- }
- *destLen = stream.total_out;
+ stream.next_out = dest;
+ stream.avail_out = 0;
- err = inflateEnd(&stream);
- return err;
+ do {
+ if (stream.avail_out == 0) {
+ stream.avail_out = left > (uLong)max ? max : (uInt)left;
+ left -= stream.avail_out;
+ }
+ if (stream.avail_in == 0) {
+ stream.avail_in = len > (uLong)max ? max : (uInt)len;
+ len -= stream.avail_in;
+ }
+ err = inflate(&stream, Z_NO_FLUSH);
+ } while (err == Z_OK);
+
+ *sourceLen -= len + stream.avail_in;
+ if (dest != buf)
+ *destLen = stream.total_out;
+ else if (stream.total_out && err == Z_BUF_ERROR)
+ left = 1;
+
+ inflateEnd(&stream);
+ return err == Z_STREAM_END ? Z_OK :
+ err == Z_NEED_DICT ? Z_DATA_ERROR :
+ err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR :
+ err;
+}
+
+int ZEXPORT uncompress (dest, destLen, source, sourceLen)
+ Bytef *dest;
+ uLongf *destLen;
+ const Bytef *source;
+ uLong sourceLen;
+{
+ return uncompress2(dest, destLen, source, &sourceLen);
}
diff --git a/modules/zlib/src/zconf.h b/modules/zlib/src/zconf.h
index fa0950b9de..8e2c0a3e41 100644
--- a/modules/zlib/src/zconf.h
+++ b/modules/zlib/src/zconf.h
@@ -1,5 +1,5 @@
/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2013 Jean-loup Gailly.
+ * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -20,7 +20,7 @@
#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */
# define Z_PREFIX_SET
-/* all linked symbols */
+/* all linked symbols and init macros */
# define _dist_code z__dist_code
# define _length_code z__length_code
# define _tr_align z__tr_align
@@ -32,6 +32,7 @@
# define adler32 z_adler32
# define adler32_combine z_adler32_combine
# define adler32_combine64 z_adler32_combine64
+# define adler32_z z_adler32_z
# ifndef Z_SOLO
# define compress z_compress
# define compress2 z_compress2
@@ -40,10 +41,14 @@
# define crc32 z_crc32
# define crc32_combine z_crc32_combine
# define crc32_combine64 z_crc32_combine64
+# define crc32_z z_crc32_z
# define deflate z_deflate
# define deflateBound z_deflateBound
# define deflateCopy z_deflateCopy
# define deflateEnd z_deflateEnd
+# define deflateGetDictionary z_deflateGetDictionary
+# define deflateInit z_deflateInit
+# define deflateInit2 z_deflateInit2
# define deflateInit2_ z_deflateInit2_
# define deflateInit_ z_deflateInit_
# define deflateParams z_deflateParams
@@ -70,6 +75,8 @@
# define gzeof z_gzeof
# define gzerror z_gzerror
# define gzflush z_gzflush
+# define gzfread z_gzfread
+# define gzfwrite z_gzfwrite
# define gzgetc z_gzgetc
# define gzgetc_ z_gzgetc_
# define gzgets z_gzgets
@@ -81,7 +88,6 @@
# define gzopen_w z_gzopen_w
# endif
# define gzprintf z_gzprintf
-# define gzvprintf z_gzvprintf
# define gzputc z_gzputc
# define gzputs z_gzputs
# define gzread z_gzread
@@ -92,32 +98,39 @@
# define gztell z_gztell
# define gztell64 z_gztell64
# define gzungetc z_gzungetc
+# define gzvprintf z_gzvprintf
# define gzwrite z_gzwrite
# endif
# define inflate z_inflate
# define inflateBack z_inflateBack
# define inflateBackEnd z_inflateBackEnd
+# define inflateBackInit z_inflateBackInit
# define inflateBackInit_ z_inflateBackInit_
+# define inflateCodesUsed z_inflateCodesUsed
# define inflateCopy z_inflateCopy
# define inflateEnd z_inflateEnd
+# define inflateGetDictionary z_inflateGetDictionary
# define inflateGetHeader z_inflateGetHeader
+# define inflateInit z_inflateInit
+# define inflateInit2 z_inflateInit2
# define inflateInit2_ z_inflateInit2_
# define inflateInit_ z_inflateInit_
# define inflateMark z_inflateMark
# define inflatePrime z_inflatePrime
# define inflateReset z_inflateReset
# define inflateReset2 z_inflateReset2
+# define inflateResetKeep z_inflateResetKeep
# define inflateSetDictionary z_inflateSetDictionary
-# define inflateGetDictionary z_inflateGetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateUndermine z_inflateUndermine
-# define inflateResetKeep z_inflateResetKeep
+# define inflateValidate z_inflateValidate
# define inflate_copyright z_inflate_copyright
# define inflate_fast z_inflate_fast
# define inflate_table z_inflate_table
# ifndef Z_SOLO
# define uncompress z_uncompress
+# define uncompress2 z_uncompress2
# endif
# define zError z_zError
# ifndef Z_SOLO
@@ -227,9 +240,19 @@
# define z_const
#endif
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-# define NO_DUMMY_DECL
+#ifdef Z_SOLO
+ typedef unsigned long z_size_t;
+#else
+# define z_longlong long long
+# if defined(NO_SIZE_T)
+ typedef unsigned NO_SIZE_T z_size_t;
+# elif defined(STDC)
+# include <stddef.h>
+ typedef size_t z_size_t;
+# else
+ typedef unsigned long z_size_t;
+# endif
+# undef z_longlong
#endif
/* Maximum value for memLevel in deflateInit2 */
@@ -259,7 +282,7 @@
Of course this will generally degrade compression (there's no free lunch).
The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
+ that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
for small objects.
*/
@@ -341,7 +364,7 @@
# endif
#endif
-#if defined (__BEOS__) || (defined(__OS2__) && defined(__declspec))
+#if defined (__BEOS__)
# ifdef ZLIB_DLL
# ifdef ZLIB_INTERNAL
# define ZEXPORT __declspec(dllexport)
diff --git a/modules/zlib/src/zlib.h b/modules/zlib/src/zlib.h
index b6ce7f1b09..f09cdaf1e0 100644
--- a/modules/zlib/src/zlib.h
+++ b/modules/zlib/src/zlib.h
@@ -1,7 +1,7 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.8, April 28th, 2013
+ version 1.2.11, January 15th, 2017
- Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.2.8"
-#define ZLIB_VERNUM 0x1280
+#define ZLIB_VERSION "1.2.11"
+#define ZLIB_VERNUM 0x12b0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 8
+#define ZLIB_VER_REVISION 11
#define ZLIB_VER_SUBREVISION 0
/*
@@ -65,7 +65,8 @@ extern "C" {
with "gz". The gzip format is different from the zlib format. gzip is a
gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
- This library can optionally read and write gzip streams in memory as well.
+ This library can optionally read and write gzip and raw deflate streams in
+ memory as well.
The zlib format was designed to be compact and fast for use in memory
and on communications channels. The gzip format was designed for single-
@@ -74,7 +75,7 @@ extern "C" {
The library does not install any signal handler. The decoder checks
the consistency of the compressed data, so the library should never crash
- even in case of corrupted input.
+ even in the case of corrupted input.
*/
typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
@@ -87,7 +88,7 @@ typedef struct z_stream_s {
uInt avail_in; /* number of bytes available at next_in */
uLong total_in; /* total number of input bytes read so far */
- Bytef *next_out; /* next output byte should be put there */
+ Bytef *next_out; /* next output byte will go here */
uInt avail_out; /* remaining free space at next_out */
uLong total_out; /* total number of bytes output so far */
@@ -98,8 +99,9 @@ typedef struct z_stream_s {
free_func zfree; /* used to free the internal state */
voidpf opaque; /* private data object passed to zalloc and zfree */
- int data_type; /* best guess about the data type: binary or text */
- uLong adler; /* adler32 value of the uncompressed data */
+ int data_type; /* best guess about the data type: binary or text
+ for deflate, or the decoding state for inflate */
+ uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */
uLong reserved; /* reserved for future use */
} z_stream;
@@ -142,7 +144,9 @@ typedef gz_header FAR *gz_headerp;
zalloc must return Z_NULL if there is not enough memory for the object.
If zlib is used in a multi-threaded application, zalloc and zfree must be
- thread safe.
+ thread safe. In that case, zlib is thread-safe. When zalloc and zfree are
+ Z_NULL on entry to the initialization function, they are set to internal
+ routines that use the standard library functions malloc() and free().
On 16-bit systems, the functions zalloc and zfree must be able to allocate
exactly 65536 bytes, but will not be required to allocate more than this if
@@ -155,7 +159,7 @@ typedef gz_header FAR *gz_headerp;
The fields total_in and total_out can be used for statistics or progress
reports. After compression, total_in holds the total size of the
- uncompressed data and may be saved for use in the decompressor (particularly
+ uncompressed data and may be saved for use by the decompressor (particularly
if the decompressor wants to decompress everything in a single step).
*/
@@ -200,7 +204,7 @@ typedef gz_header FAR *gz_headerp;
#define Z_TEXT 1
#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */
#define Z_UNKNOWN 2
-/* Possible values of the data_type field (though see inflate()) */
+/* Possible values of the data_type field for deflate() */
#define Z_DEFLATED 8
/* The deflate compression method (the only one supported in this version) */
@@ -258,11 +262,11 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
enough room in the output buffer), next_in and avail_in are updated and
processing will resume at this point for the next call of deflate().
- - Provide more output starting at next_out and update next_out and avail_out
+ - Generate more output starting at next_out and update next_out and avail_out
accordingly. This action is forced if the parameter flush is non zero.
Forcing flush frequently degrades the compression ratio, so this parameter
- should be set only when necessary (in interactive applications). Some
- output may be provided even if flush is not set.
+ should be set only when necessary. Some output may be provided even if
+ flush is zero.
Before the call of deflate(), the application should ensure that at least
one of the actions is possible, by providing more input and/or consuming more
@@ -271,7 +275,9 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
output when it wants, for example when the output buffer is full (avail_out
== 0), or after each call of deflate(). If deflate returns Z_OK and with
zero avail_out, it must be called again after making room in the output
- buffer because there might be more output pending.
+ buffer because there might be more output pending. See deflatePending(),
+ which can be used if desired to determine whether or not there is more ouput
+ in that case.
Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
decide how much data to accumulate before producing output, in order to
@@ -292,8 +298,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
input data so far will be available to the decompressor, as for Z_SYNC_FLUSH.
This completes the current deflate block and follows it with an empty fixed
codes block that is 10 bits long. This assures that enough bytes are output
- in order for the decompressor to finish the block before the empty fixed code
- block.
+ in order for the decompressor to finish the block before the empty fixed
+ codes block.
If flush is set to Z_BLOCK, a deflate block is completed and emitted, as
for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to
@@ -319,34 +325,38 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
If the parameter flush is set to Z_FINISH, pending input is processed,
pending output is flushed and deflate returns with Z_STREAM_END if there was
- enough output space; if deflate returns with Z_OK, this function must be
- called again with Z_FINISH and more output space (updated avail_out) but no
- more input data, until it returns with Z_STREAM_END or an error. After
- deflate has returned Z_STREAM_END, the only possible operations on the stream
- are deflateReset or deflateEnd.
-
- Z_FINISH can be used immediately after deflateInit if all the compression
- is to be done in a single step. In this case, avail_out must be at least the
- value returned by deflateBound (see below). Then deflate is guaranteed to
- return Z_STREAM_END. If not enough output space is provided, deflate will
- not return Z_STREAM_END, and it must be called again as described above.
-
- deflate() sets strm->adler to the adler32 checksum of all input read
- so far (that is, total_in bytes).
+ enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this
+ function must be called again with Z_FINISH and more output space (updated
+ avail_out) but no more input data, until it returns with Z_STREAM_END or an
+ error. After deflate has returned Z_STREAM_END, the only possible operations
+ on the stream are deflateReset or deflateEnd.
+
+ Z_FINISH can be used in the first deflate call after deflateInit if all the
+ compression is to be done in a single step. In order to complete in one
+ call, avail_out must be at least the value returned by deflateBound (see
+ below). Then deflate is guaranteed to return Z_STREAM_END. If not enough
+ output space is provided, deflate will not return Z_STREAM_END, and it must
+ be called again as described above.
+
+ deflate() sets strm->adler to the Adler-32 checksum of all input read
+ so far (that is, total_in bytes). If a gzip stream is being generated, then
+ strm->adler will be the CRC-32 checksum of the input read so far. (See
+ deflateInit2 below.)
deflate() may update strm->data_type if it can make a good guess about
- the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
- binary. This field is only for information purposes and does not affect the
- compression algorithm in any manner.
+ the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is
+ considered binary. This field is only for information purposes and does not
+ affect the compression algorithm in any manner.
deflate() returns Z_OK if some progress has been made (more input
processed or more output produced), Z_STREAM_END if all input has been
consumed and all output has been produced (only when flush is set to
Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
- if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible
- (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
- fatal, and deflate() can be called again with more input and more output
- space to continue compressing.
+ if next_in or next_out was Z_NULL or the state was inadvertently written over
+ by the application), or Z_BUF_ERROR if no progress is possible (for example
+ avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and
+ deflate() can be called again with more input and more output space to
+ continue compressing.
*/
@@ -369,23 +379,21 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
Initializes the internal stream state for decompression. The fields
next_in, avail_in, zalloc, zfree and opaque must be initialized before by
- the caller. If next_in is not Z_NULL and avail_in is large enough (the
- exact value depends on the compression method), inflateInit determines the
- compression method from the zlib header and allocates all data structures
- accordingly; otherwise the allocation will be deferred to the first call of
- inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
- use default allocation functions.
+ the caller. In the current version of inflate, the provided input is not
+ read or consumed. The allocation of a sliding window will be deferred to
+ the first call of inflate (if the decompression does not complete on the
+ first call). If zalloc and zfree are set to Z_NULL, inflateInit updates
+ them to use default allocation functions.
inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
version assumed by the caller, or Z_STREAM_ERROR if the parameters are
invalid, such as a null pointer to the structure. msg is set to null if
- there is no error message. inflateInit does not perform any decompression
- apart from possibly reading the zlib header if present: actual decompression
- will be done by inflate(). (So next_in and avail_in may be modified, but
- next_out and avail_out are unused and unchanged.) The current implementation
- of inflateInit() does not process any header information -- that is deferred
- until inflate() is called.
+ there is no error message. inflateInit does not perform any decompression.
+ Actual decompression will be done by inflate(). So next_in, and avail_in,
+ next_out, and avail_out are unused and unchanged. The current
+ implementation of inflateInit() does not process any header information --
+ that is deferred until inflate() is called.
*/
@@ -401,17 +409,20 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
- Decompress more input starting at next_in and update next_in and avail_in
accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in is updated and processing will
- resume at this point for the next call of inflate().
+ enough room in the output buffer), then next_in and avail_in are updated
+ accordingly, and processing will resume at this point for the next call of
+ inflate().
- - Provide more output starting at next_out and update next_out and avail_out
+ - Generate more output starting at next_out and update next_out and avail_out
accordingly. inflate() provides as much output as possible, until there is
no more input data or no more space in the output buffer (see below about
the flush parameter).
Before the call of inflate(), the application should ensure that at least
one of the actions is possible, by providing more input and/or consuming more
- output, and updating the next_* and avail_* values accordingly. The
+ output, and updating the next_* and avail_* values accordingly. If the
+ caller of inflate() does not provide both available input and available
+ output space, it is possible that there will be no progress made. The
application can consume the uncompressed output when it wants, for example
when the output buffer is full (avail_out == 0), or after each call of
inflate(). If inflate returns Z_OK and with zero avail_out, it must be
@@ -428,7 +439,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
gets to the end of that block, or when it runs out of data.
The Z_BLOCK option assists in appending to or combining deflate streams.
- Also to assist in this, on return inflate() will set strm->data_type to the
+ To assist in this, on return inflate() always sets strm->data_type to the
number of unused bits in the last byte taken from strm->next_in, plus 64 if
inflate() is currently decoding the last block in the deflate stream, plus
128 if inflate() returned immediately after decoding an end-of-block code or
@@ -454,7 +465,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
this case all pending input is processed and all pending output is flushed;
avail_out must be large enough to hold all of the uncompressed data for the
operation to complete. (The size of the uncompressed data may have been
- saved by the compressor for this purpose.) The use of Z_FINISH is not
+ saved by the compressor for this purpose.) The use of Z_FINISH is not
required to perform an inflation in one step. However it may be used to
inform inflate that a faster approach can be used for the single inflate()
call. Z_FINISH also informs inflate to not maintain a sliding window if the
@@ -476,32 +487,33 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
strm->adler to the Adler-32 checksum of all output produced so far (that is,
total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
- below. At the end of the stream, inflate() checks that its computed adler32
+ below. At the end of the stream, inflate() checks that its computed Adler-32
checksum is equal to that saved by the compressor and returns Z_STREAM_END
only if the checksum is correct.
inflate() can decompress and check either zlib-wrapped or gzip-wrapped
deflate data. The header type is detected automatically, if requested when
initializing with inflateInit2(). Any information contained in the gzip
- header is not retained, so applications that need that information should
- instead use raw inflate, see inflateInit2() below, or inflateBack() and
- perform their own processing of the gzip header and trailer. When processing
+ header is not retained unless inflateGetHeader() is used. When processing
gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
- producted so far. The CRC-32 is checked against the gzip trailer.
+ produced so far. The CRC-32 is checked against the gzip trailer, as is the
+ uncompressed length, modulo 2^32.
inflate() returns Z_OK if some progress has been made (more input processed
or more output produced), Z_STREAM_END if the end of the compressed data has
been reached and all uncompressed output has been produced, Z_NEED_DICT if a
preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
corrupted (input stream not conforming to the zlib format or incorrect check
- value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
- next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory,
- Z_BUF_ERROR if no progress is possible or if there was not enough room in the
- output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
+ value, in which case strm->msg points to a string with a more specific
+ error), Z_STREAM_ERROR if the stream structure was inconsistent (for example
+ next_in or next_out was Z_NULL, or the state was inadvertently written over
+ by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR
+ if no progress was possible or if there was not enough room in the output
+ buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
inflate() can be called again with more input and more output space to
continue decompressing. If Z_DATA_ERROR is returned, the application may
then call inflateSync() to look for a good compression block if a partial
- recovery of the data is desired.
+ recovery of the data is to be attempted.
*/
@@ -511,9 +523,8 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
This function discards any unprocessed input and does not flush any pending
output.
- inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
- was inconsistent. In the error case, msg may be set but then points to a
- static string (which must not be deallocated).
+ inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state
+ was inconsistent.
*/
@@ -544,16 +555,29 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
compression at the expense of memory usage. The default value is 15 if
deflateInit is used instead.
+ For the current implementation of deflate(), a windowBits value of 8 (a
+ window size of 256 bytes) is not supported. As a result, a request for 8
+ will result in 9 (a 512-byte window). In that case, providing 8 to
+ inflateInit2() will result in an error when the zlib header with 9 is
+ checked against the initialization of inflate(). The remedy is to not use 8
+ with deflateInit2() with this initialization, or at least in that case use 9
+ with inflateInit2().
+
windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
determines the window size. deflate() will then generate raw deflate data
- with no zlib header or trailer, and will not compute an adler32 check value.
+ with no zlib header or trailer, and will not compute a check value.
windowBits can also be greater than 15 for optional gzip encoding. Add
16 to windowBits to write a simple gzip header and trailer around the
compressed data instead of a zlib wrapper. The gzip header will have no
file name, no extra data, no comment, no modification time (set to zero), no
- header crc, and the operating system will be set to 255 (unknown). If a
- gzip stream is being written, strm->adler is a crc32 instead of an adler32.
+ header crc, and the operating system will be set to the appropriate value,
+ if the operating system was determined at compile time. If a gzip stream is
+ being written, strm->adler is a CRC-32 instead of an Adler-32.
+
+ For raw deflate or gzip encoding, a request for a 256-byte window is
+ rejected as invalid, since only the zlib header provides a means of
+ transmitting the window size to the decompressor.
The memLevel parameter specifies how much memory should be allocated
for the internal compression state. memLevel=1 uses minimum memory but is
@@ -614,12 +638,12 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
addition, the current implementation of deflate will use at most the window
size minus 262 bytes of the provided dictionary.
- Upon return of this function, strm->adler is set to the adler32 value
+ Upon return of this function, strm->adler is set to the Adler-32 value
of the dictionary; the decompressor may later use this value to determine
- which dictionary has been used by the compressor. (The adler32 value
+ which dictionary has been used by the compressor. (The Adler-32 value
applies to the whole dictionary even if only a subset of the dictionary is
actually used by the compressor.) If a raw deflate was requested, then the
- adler32 value is not computed and strm->adler is not set.
+ Adler-32 value is not computed and strm->adler is not set.
deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is
@@ -628,6 +652,28 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
not perform any compression: this will be done by deflate().
*/
+ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
+ Bytef *dictionary,
+ uInt *dictLength));
+/*
+ Returns the sliding dictionary being maintained by deflate. dictLength is
+ set to the number of bytes in the dictionary, and that many bytes are copied
+ to dictionary. dictionary must have enough space, where 32768 bytes is
+ always enough. If deflateGetDictionary() is called with dictionary equal to
+ Z_NULL, then only the dictionary length is returned, and nothing is copied.
+ Similary, if dictLength is Z_NULL, then it is not set.
+
+ deflateGetDictionary() may return a length less than the window size, even
+ when more than the window size in input has been provided. It may return up
+ to 258 bytes less in that case, due to how zlib's implementation of deflate
+ manages the sliding window and lookahead for matches, where matches can be
+ up to 258 bytes long. If the application needs the last window-size bytes of
+ input, then that would need to be saved by the application outside of zlib.
+
+ deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
+ stream state is inconsistent.
+*/
+
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
z_streamp source));
/*
@@ -648,10 +694,10 @@ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
/*
- This function is equivalent to deflateEnd followed by deflateInit,
- but does not free and reallocate all the internal compression state. The
- stream will keep the same compression level and any other attributes that
- may have been set by deflateInit2.
+ This function is equivalent to deflateEnd followed by deflateInit, but
+ does not free and reallocate the internal compression state. The stream
+ will leave the compression level and any other attributes that may have been
+ set unchanged.
deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
stream state was inconsistent (such as zalloc or state being Z_NULL).
@@ -662,20 +708,36 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
int strategy));
/*
Dynamically update the compression level and compression strategy. The
- interpretation of level and strategy is as in deflateInit2. This can be
+ interpretation of level and strategy is as in deflateInit2(). This can be
used to switch between compression and straight copy of the input data, or
to switch to a different kind of input data requiring a different strategy.
- If the compression level is changed, the input available so far is
- compressed with the old level (and may be flushed); the new level will take
- effect only at the next call of deflate().
-
- Before the call of deflateParams, the stream state must be set as for
- a call of deflate(), since the currently available input may have to be
- compressed and flushed. In particular, strm->avail_out must be non-zero.
-
- deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
- stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if
- strm->avail_out was zero.
+ If the compression approach (which is a function of the level) or the
+ strategy is changed, and if any input has been consumed in a previous
+ deflate() call, then the input available so far is compressed with the old
+ level and strategy using deflate(strm, Z_BLOCK). There are three approaches
+ for the compression levels 0, 1..3, and 4..9 respectively. The new level
+ and strategy will take effect at the next call of deflate().
+
+ If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
+ not have enough output space to complete, then the parameter change will not
+ take effect. In this case, deflateParams() can be called again with the
+ same parameters and more output space to try again.
+
+ In order to assure a change in the parameters on the first try, the
+ deflate stream should be flushed using deflate() with Z_BLOCK or other flush
+ request until strm.avail_out is not zero, before calling deflateParams().
+ Then no more input data should be provided before the deflateParams() call.
+ If this is done, the old level and strategy will be applied to the data
+ compressed before deflateParams(), and the new level and strategy will be
+ applied to the the data compressed after deflateParams().
+
+ deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream
+ state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if
+ there was not enough output space to complete the compression of the
+ available input data before a change in the strategy or approach. Note that
+ in the case of a Z_BUF_ERROR, the parameters are not changed. A return
+ value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be
+ retried with more output space.
*/
ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
@@ -793,7 +855,7 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
is for use with other formats that use the deflate compressed data format
such as zip. Those formats provide their own check values. If a custom
format is developed using the raw deflate format for compressed data, it is
- recommended that a check value such as an adler32 or a crc32 be applied to
+ recommended that a check value such as an Adler-32 or a CRC-32 be applied to
the uncompressed data as is done in the zlib, gzip, and zip formats. For
most applications, the zlib format should be used as is. Note that comments
above on the use in deflateInit2() applies to the magnitude of windowBits.
@@ -802,7 +864,10 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
32 to windowBits to enable zlib and gzip decoding with automatic header
detection, or add 16 to decode only the gzip format (the zlib format will
return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
- crc32 instead of an adler32.
+ CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
+ below), inflate() will not automatically decode concatenated gzip streams.
+ inflate() will return Z_STREAM_END at the end of the gzip stream. The state
+ would need to be reset to continue decoding a subsequent gzip stream.
inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -823,7 +888,7 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
Initializes the decompression dictionary from the given uncompressed byte
sequence. This function must be called immediately after a call of inflate,
if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
- can be determined from the adler32 value returned by that call of inflate.
+ can be determined from the Adler-32 value returned by that call of inflate.
The compressor and decompressor must use exactly the same dictionary (see
deflateSetDictionary). For raw inflate, this function can be called at any
time to set the dictionary. If the provided dictionary is smaller than the
@@ -834,7 +899,7 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is
inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
- expected one (incorrect adler32 value). inflateSetDictionary does not
+ expected one (incorrect Adler-32 value). inflateSetDictionary does not
perform any decompression: this will be done by subsequent calls of
inflate().
*/
@@ -892,7 +957,7 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
/*
This function is equivalent to inflateEnd followed by inflateInit,
- but does not free and reallocate all the internal decompression state. The
+ but does not free and reallocate the internal decompression state. The
stream will keep attributes that may have been set by inflateInit2.
inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
@@ -904,7 +969,9 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
/*
This function is the same as inflateReset, but it also permits changing
the wrap and window size requests. The windowBits parameter is interpreted
- the same as it is for inflateInit2.
+ the same as it is for inflateInit2. If the window size is changed, then the
+ memory allocated for the window is freed, and the window will be reallocated
+ by inflate() if needed.
inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source
stream state was inconsistent (such as zalloc or state being Z_NULL), or if
@@ -956,7 +1023,7 @@ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
location in the input stream can be determined from avail_in and data_type
as noted in the description for the Z_BLOCK flush parameter for inflate.
- inflateMark returns the value noted above or -1 << 16 if the provided
+ inflateMark returns the value noted above, or -65536 if the provided
source stream state was inconsistent.
*/
@@ -1048,9 +1115,9 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
This routine would normally be used in a utility that reads zip or gzip
files and writes out uncompressed files. The utility would decode the
header and process the trailer on its own, hence this routine expects only
- the raw deflate stream to decompress. This is different from the normal
- behavior of inflate(), which expects either a zlib or gzip header and
- trailer around the deflate stream.
+ the raw deflate stream to decompress. This is different from the default
+ behavior of inflate(), which expects a zlib header and trailer around the
+ deflate stream.
inflateBack() uses two subroutines supplied by the caller that are then
called by inflateBack() for input and output. inflateBack() calls those
@@ -1059,12 +1126,12 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
parameters and return types are defined above in the in_func and out_func
typedefs. inflateBack() will call in(in_desc, &buf) which should return the
number of bytes of provided input, and a pointer to that input in buf. If
- there is no input available, in() must return zero--buf is ignored in that
- case--and inflateBack() will return a buffer error. inflateBack() will call
- out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out()
- should return zero on success, or non-zero on failure. If out() returns
- non-zero, inflateBack() will return with an error. Neither in() nor out()
- are permitted to change the contents of the window provided to
+ there is no input available, in() must return zero -- buf is ignored in that
+ case -- and inflateBack() will return a buffer error. inflateBack() will
+ call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].
+ out() should return zero on success, or non-zero on failure. If out()
+ returns non-zero, inflateBack() will return with an error. Neither in() nor
+ out() are permitted to change the contents of the window provided to
inflateBackInit(), which is also the buffer that out() uses to write from.
The length written by out() will be at most the window size. Any non-zero
amount of input may be provided by in().
@@ -1092,7 +1159,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
using strm->next_in which will be Z_NULL only if in() returned an error. If
strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
non-zero. (in() will always be called before out(), so strm->next_in is
- assured to be defined if out() returns non-zero.) Note that inflateBack()
+ assured to be defined if out() returns non-zero.) Note that inflateBack()
cannot return Z_OK.
*/
@@ -1114,7 +1181,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
7.6: size of z_off_t
Compiler, assembler, and debug options:
- 8: DEBUG
+ 8: ZLIB_DEBUG
9: ASMV or ASMINF -- use ASM code
10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
11: 0 (reserved)
@@ -1164,7 +1231,8 @@ ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
the byte length of the source buffer. Upon entry, destLen is the total size
of the destination buffer, which must be at least the value returned by
compressBound(sourceLen). Upon exit, destLen is the actual size of the
- compressed buffer.
+ compressed data. compress() is equivalent to compress2() with a level
+ parameter of Z_DEFAULT_COMPRESSION.
compress returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if there was not enough room in the output
@@ -1180,7 +1248,7 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
length of the source buffer. Upon entry, destLen is the total size of the
destination buffer, which must be at least the value returned by
compressBound(sourceLen). Upon exit, destLen is the actual size of the
- compressed buffer.
+ compressed data.
compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
@@ -1203,7 +1271,7 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
uncompressed data. (The size of the uncompressed data must have been saved
previously by the compressor and transmitted to the decompressor by some
mechanism outside the scope of this compression library.) Upon exit, destLen
- is the actual size of the uncompressed buffer.
+ is the actual size of the uncompressed data.
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if there was not enough room in the output
@@ -1212,6 +1280,14 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
buffer with the uncompressed data up to that point.
*/
+ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen,
+ const Bytef *source, uLong *sourceLen));
+/*
+ Same as uncompress, except that sourceLen is a pointer, where the
+ length of the source is *sourceLen. On return, *sourceLen is the number of
+ source bytes consumed.
+*/
+
/* gzip file access functions */
/*
@@ -1290,10 +1366,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
default buffer size is 8192 bytes. This function must be called after
gzopen() or gzdopen(), and before any other calls that read or write the
file. The buffer memory allocation is always deferred to the first read or
- write. Two buffers are allocated, either both of the specified size when
- writing, or one of the specified size and the other twice that size when
- reading. A larger buffer size of, for example, 64K or 128K bytes will
- noticeably increase the speed of decompression (reading).
+ write. Three times that size in buffer space is allocated. A larger buffer
+ size of, for example, 64K or 128K bytes will noticeably increase the speed
+ of decompression (reading).
The new buffer size also affects the maximum length for gzprintf().
@@ -1304,10 +1379,12 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
/*
Dynamically update the compression level or strategy. See the description
- of deflateInit2 for the meaning of these parameters.
+ of deflateInit2 for the meaning of these parameters. Previously provided
+ data is flushed before the parameter change.
- gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
- opened for writing.
+ gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not
+ opened for writing, Z_ERRNO if there is an error writing the flushed data,
+ or Z_MEM_ERROR if there is a memory allocation error.
*/
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
@@ -1335,7 +1412,35 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
case.
gzread returns the number of uncompressed bytes actually read, less than
- len for end of file, or -1 for error.
+ len for end of file, or -1 for error. If len is too large to fit in an int,
+ then nothing is read, -1 is returned, and the error state is set to
+ Z_STREAM_ERROR.
+*/
+
+ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
+ gzFile file));
+/*
+ Read up to nitems items of size size from file to buf, otherwise operating
+ as gzread() does. This duplicates the interface of stdio's fread(), with
+ size_t request and return types. If the library defines size_t, then
+ z_size_t is identical to size_t. If not, then z_size_t is an unsigned
+ integer type that can contain a pointer.
+
+ gzfread() returns the number of full items read of size size, or zero if
+ the end of the file was reached and a full item could not be read, or if
+ there was an error. gzerror() must be consulted if zero is returned in
+ order to determine if there was an error. If the multiplication of size and
+ nitems overflows, i.e. the product does not fit in a z_size_t, then nothing
+ is read, zero is returned, and the error state is set to Z_STREAM_ERROR.
+
+ In the event that the end of file is reached and only a partial item is
+ available at the end, i.e. the remaining uncompressed data length is not a
+ multiple of size, then the final partial item is nevetheless read into buf
+ and the end-of-file flag is set. The length of the partial item read is not
+ provided, but could be inferred from the result of gztell(). This behavior
+ is the same as the behavior of fread() implementations in common libraries,
+ but it prevents the direct use of gzfread() to read a concurrently written
+ file, reseting and retrying on end-of-file, when size is not 1.
*/
ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
@@ -1346,19 +1451,33 @@ ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
error.
*/
+ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
+ z_size_t nitems, gzFile file));
+/*
+ gzfwrite() writes nitems items of size size from buf to file, duplicating
+ the interface of stdio's fwrite(), with size_t request and return types. If
+ the library defines size_t, then z_size_t is identical to size_t. If not,
+ then z_size_t is an unsigned integer type that can contain a pointer.
+
+ gzfwrite() returns the number of full items written of size size, or zero
+ if there was an error. If the multiplication of size and nitems overflows,
+ i.e. the product does not fit in a z_size_t, then nothing is written, zero
+ is returned, and the error state is set to Z_STREAM_ERROR.
+*/
+
ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
/*
Converts, formats, and writes the arguments to the compressed file under
control of the format string, as in fprintf. gzprintf returns the number of
- uncompressed bytes actually written, or 0 in case of error. The number of
- uncompressed bytes written is limited to 8191, or one less than the buffer
- size given to gzbuffer(). The caller should assure that this limit is not
- exceeded. If it is exceeded, then gzprintf() will return an error (0) with
- nothing written. In this case, there may also be a buffer overflow with
- unpredictable consequences, which is possible only if zlib was compiled with
- the insecure functions sprintf() or vsprintf() because the secure snprintf()
- or vsnprintf() functions were not available. This can be determined using
- zlibCompileFlags().
+ uncompressed bytes actually written, or a negative zlib error code in case
+ of error. The number of uncompressed bytes written is limited to 8191, or
+ one less than the buffer size given to gzbuffer(). The caller should assure
+ that this limit is not exceeded. If it is exceeded, then gzprintf() will
+ return an error (0) with nothing written. In this case, there may also be a
+ buffer overflow with unpredictable consequences, which is possible only if
+ zlib was compiled with the insecure functions sprintf() or vsprintf()
+ because the secure snprintf() or vsnprintf() functions were not available.
+ This can be determined using zlibCompileFlags().
*/
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
@@ -1418,7 +1537,7 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
If the flush parameter is Z_FINISH, the remaining data is written and the
gzip stream is completed in the output. If gzwrite() is called again, a new
gzip stream will be started in the output. gzread() is able to read such
- concatented gzip streams.
+ concatenated gzip streams.
gzflush should be called only when strictly necessary because it will
degrade compression if called too often.
@@ -1572,7 +1691,7 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
return the updated checksum. If buf is Z_NULL, this function returns the
required initial value for the checksum.
- An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+ An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
much faster.
Usage example:
@@ -1585,6 +1704,12 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
if (adler != original_adler) error();
*/
+ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf,
+ z_size_t len));
+/*
+ Same as adler32(), but with a size_t length.
+*/
+
/*
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
z_off_t len2));
@@ -1614,6 +1739,12 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
if (crc != original_crc) error();
*/
+ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
+ z_size_t len));
+/*
+ Same as crc32(), but with a size_t length.
+*/
+
/*
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
@@ -1644,19 +1775,35 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
unsigned char FAR *window,
const char *version,
int stream_size));
-#define deflateInit(strm, level) \
- deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit(strm) \
- inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
- deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
- (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
- inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
- (int)sizeof(z_stream))
-#define inflateBackInit(strm, windowBits, window) \
- inflateBackInit_((strm), (windowBits), (window), \
- ZLIB_VERSION, (int)sizeof(z_stream))
+#ifdef Z_PREFIX_SET
+# define z_deflateInit(strm, level) \
+ deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
+# define z_inflateInit(strm) \
+ inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
+# define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
+ deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
+ (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
+# define z_inflateInit2(strm, windowBits) \
+ inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
+ (int)sizeof(z_stream))
+# define z_inflateBackInit(strm, windowBits, window) \
+ inflateBackInit_((strm), (windowBits), (window), \
+ ZLIB_VERSION, (int)sizeof(z_stream))
+#else
+# define deflateInit(strm, level) \
+ deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
+# define inflateInit(strm) \
+ inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
+# define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
+ deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
+ (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
+# define inflateInit2(strm, windowBits) \
+ inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
+ (int)sizeof(z_stream))
+# define inflateBackInit(strm, windowBits, window) \
+ inflateBackInit_((strm), (windowBits), (window), \
+ ZLIB_VERSION, (int)sizeof(z_stream))
+#endif
#ifndef Z_SOLO
@@ -1676,11 +1823,10 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
#ifdef Z_PREFIX_SET
# undef z_gzgetc
# define z_gzgetc(g) \
- ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
+ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g))
#else
-# undef gzgetc
# define gzgetc(g) \
- ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
+ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g))
#endif
/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
@@ -1738,19 +1884,16 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
#endif /* !Z_SOLO */
-/* hack for buggy compilers */
-#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
- struct internal_state {int dummy;};
-#endif
-
/* undocumented functions */
ZEXTERN const char * ZEXPORT zError OF((int));
ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void));
ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
+ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
+ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp));
ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
-#if defined(_WIN32) && !defined(Z_SOLO)
+#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
const char *mode));
#endif
diff --git a/modules/zlib/src/zutil.c b/modules/zlib/src/zutil.c
index 23d2ebef00..a76c6b0c7e 100644
--- a/modules/zlib/src/zutil.c
+++ b/modules/zlib/src/zutil.c
@@ -1,5 +1,5 @@
/* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly.
+ * Copyright (C) 1995-2017 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -10,21 +10,18 @@
# include "gzguts.h"
#endif
-#ifndef NO_DUMMY_DECL
-struct internal_state {int dummy;}; /* for buggy compilers */
-#endif
-
z_const char * const z_errmsg[10] = {
-"need dictionary", /* Z_NEED_DICT 2 */
-"stream end", /* Z_STREAM_END 1 */
-"", /* Z_OK 0 */
-"file error", /* Z_ERRNO (-1) */
-"stream error", /* Z_STREAM_ERROR (-2) */
-"data error", /* Z_DATA_ERROR (-3) */
-"insufficient memory", /* Z_MEM_ERROR (-4) */
-"buffer error", /* Z_BUF_ERROR (-5) */
-"incompatible version",/* Z_VERSION_ERROR (-6) */
-""};
+ (z_const char *)"need dictionary", /* Z_NEED_DICT 2 */
+ (z_const char *)"stream end", /* Z_STREAM_END 1 */
+ (z_const char *)"", /* Z_OK 0 */
+ (z_const char *)"file error", /* Z_ERRNO (-1) */
+ (z_const char *)"stream error", /* Z_STREAM_ERROR (-2) */
+ (z_const char *)"data error", /* Z_DATA_ERROR (-3) */
+ (z_const char *)"insufficient memory", /* Z_MEM_ERROR (-4) */
+ (z_const char *)"buffer error", /* Z_BUF_ERROR (-5) */
+ (z_const char *)"incompatible version",/* Z_VERSION_ERROR (-6) */
+ (z_const char *)""
+};
const char * ZEXPORT zlibVersion()
@@ -61,7 +58,7 @@ uLong ZEXPORT zlibCompileFlags()
case 8: flags += 2 << 6; break;
default: flags += 3 << 6;
}
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
flags += 1 << 8;
#endif
#if defined(ASMV) || defined(ASMINF)
@@ -115,8 +112,8 @@ uLong ZEXPORT zlibCompileFlags()
return flags;
}
-#ifdef DEBUG
-
+#ifdef ZLIB_DEBUG
+#include <stdlib.h>
# ifndef verbose
# define verbose 0
# endif
@@ -219,9 +216,11 @@ local ptr_table table[MAX_PTR];
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
{
- voidpf buf = opaque; /* just to make some compilers happy */
+ voidpf buf;
ulg bsize = (ulg)items*size;
+ (void)opaque;
+
/* If we allocate less than 65520 bytes, we assume that farmalloc
* will return a usable pointer which doesn't have to be normalized.
*/
@@ -244,6 +243,9 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
{
int n;
+
+ (void)opaque;
+
if (*(ush*)&ptr != 0) { /* object < 64K */
farfree(ptr);
return;
@@ -259,7 +261,6 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
next_ptr--;
return;
}
- ptr = opaque; /* just to make some compilers happy */
Assert(0, "zcfree: ptr not found");
}
@@ -278,13 +279,13 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
{
- if (opaque) opaque = 0; /* to make compiler happy */
+ (void)opaque;
return _halloc((long)items, size);
}
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
{
- if (opaque) opaque = 0; /* to make compiler happy */
+ (void)opaque;
_hfree(ptr);
}
@@ -306,7 +307,7 @@ voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
unsigned items;
unsigned size;
{
- if (opaque) items += size - size; /* make compiler happy */
+ (void)opaque;
return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
(voidpf)calloc(items, size);
}
@@ -315,8 +316,8 @@ void ZLIB_INTERNAL zcfree (opaque, ptr)
voidpf opaque;
voidpf ptr;
{
+ (void)opaque;
free(ptr);
- if (opaque) return; /* make compiler happy */
}
#endif /* MY_ZCALLOC */
diff --git a/modules/zlib/src/zutil.h b/modules/zlib/src/zutil.h
index 18fbef2aa4..b079ea6a80 100644
--- a/modules/zlib/src/zutil.h
+++ b/modules/zlib/src/zutil.h
@@ -1,5 +1,5 @@
/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2013 Jean-loup Gailly.
+ * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -36,7 +36,9 @@
#ifndef local
# define local static
#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
+/* since "static" is used to mean two completely different things in C, we
+ define "local" for the non-static meaning of "static", for readability
+ (compile with -Dlocal if your debugger can't find static symbols) */
typedef unsigned char uch;
typedef uch FAR uchf;
@@ -98,28 +100,38 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#endif
#ifdef AMIGA
-# define OS_CODE 0x01
+# define OS_CODE 1
#endif
#if defined(VAXC) || defined(VMS)
-# define OS_CODE 0x02
+# define OS_CODE 2
# define F_OPEN(name, mode) \
fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
#endif
+#ifdef __370__
+# if __TARGET_LIB__ < 0x20000000
+# define OS_CODE 4
+# elif __TARGET_LIB__ < 0x40000000
+# define OS_CODE 11
+# else
+# define OS_CODE 8
+# endif
+#endif
+
#if defined(ATARI) || defined(atarist)
-# define OS_CODE 0x05
+# define OS_CODE 5
#endif
#ifdef OS2
-# define OS_CODE 0x06
+# define OS_CODE 6
# if defined(M_I86) && !defined(Z_SOLO)
# include <malloc.h>
# endif
#endif
#if defined(MACOS) || defined(TARGET_OS_MAC)
-# define OS_CODE 0x07
+# define OS_CODE 7
# ifndef Z_SOLO
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
# include <unix.h> /* for fdopen */
@@ -131,18 +143,24 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
# endif
#endif
-#ifdef TOPS20
-# define OS_CODE 0x0a
+#ifdef __acorn
+# define OS_CODE 13
#endif
-#ifdef WIN32
-# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */
-# define OS_CODE 0x0b
-# endif
+#if defined(WIN32) && !defined(__CYGWIN__)
+# define OS_CODE 10
#endif
-#ifdef __50SERIES /* Prime/PRIMOS */
-# define OS_CODE 0x0f
+#ifdef _BEOS_
+# define OS_CODE 16
+#endif
+
+#ifdef __TOS_OS400__
+# define OS_CODE 18
+#endif
+
+#ifdef __APPLE__
+# define OS_CODE 19
#endif
#if defined(_BEOS_) || defined(RISCOS)
@@ -177,7 +195,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* common defaults */
#ifndef OS_CODE
-# define OS_CODE 0x03 /* assume Unix */
+# define OS_CODE 3 /* assume Unix */
#endif
#ifndef F_OPEN
@@ -215,13 +233,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
#endif
-/* Ignore the Mozilla build env's DEBUG unless ZLIB_DEBUG is also set. */
-#ifndef ZLIB_DEBUG
-#undef DEBUG
-#endif
-
/* Diagnostic functions */
-#ifdef DEBUG
+#ifdef ZLIB_DEBUG
# include <stdio.h>
extern int ZLIB_INTERNAL z_verbose;
extern void ZLIB_INTERNAL z_error OF((char *m));
diff --git a/netwerk/base/BackgroundFileSaver.cpp b/netwerk/base/BackgroundFileSaver.cpp
index e4bc058262..cfe94e35ba 100644
--- a/netwerk/base/BackgroundFileSaver.cpp
+++ b/netwerk/base/BackgroundFileSaver.cpp
@@ -798,8 +798,6 @@ BackgroundFileSaver::NotifySaveComplete()
// during the session in a telemetry histogram, and we reset the maximum
// thread counter for the next download session
if (sThreadCount == 0) {
- Telemetry::Accumulate(Telemetry::BACKGROUNDFILESAVER_THREAD_COUNT,
- sTelemetryMaxThreadCount);
sTelemetryMaxThreadCount = 0;
}
diff --git a/netwerk/base/Predictor.cpp b/netwerk/base/Predictor.cpp
index e97b11d162..12e4eb4155 100644
--- a/netwerk/base/Predictor.cpp
+++ b/netwerk/base/Predictor.cpp
@@ -294,26 +294,9 @@ Predictor::Action::OnCacheEntryAvailable(nsICacheEntry *entry, bool isNew,
"Aborting.", this, result));
return NS_OK;
}
- Telemetry::AccumulateTimeDelta(Telemetry::PREDICTOR_WAIT_TIME,
- mStartTime);
- if (mPredict) {
- bool predicted = mPredictor->PredictInternal(mPredictReason, entry, isNew,
- mFullUri, mTargetURI,
- mVerifier, mStackCount);
- Telemetry::AccumulateTimeDelta(
- Telemetry::PREDICTOR_PREDICT_WORK_TIME, mStartTime);
- if (predicted) {
- Telemetry::AccumulateTimeDelta(
- Telemetry::PREDICTOR_PREDICT_TIME_TO_ACTION, mStartTime);
- } else {
- Telemetry::AccumulateTimeDelta(
- Telemetry::PREDICTOR_PREDICT_TIME_TO_INACTION, mStartTime);
- }
- } else {
+ if (!mPredict) {
mPredictor->LearnInternal(mLearnReason, entry, isNew, mFullUri, mTargetURI,
mSourceURI);
- Telemetry::AccumulateTimeDelta(
- Telemetry::PREDICTOR_LEARN_WORK_TIME, mStartTime);
}
return NS_OK;
@@ -1073,8 +1056,6 @@ Predictor::CalculateGlobalDegradation(uint32_t lastLoad)
globalDegradation = mPageDegradationMax;
}
- Telemetry::Accumulate(Telemetry::PREDICTOR_GLOBAL_DEGRADATION,
- globalDegradation);
return globalDegradation;
}
@@ -1139,10 +1120,6 @@ Predictor::CalculateConfidence(uint32_t hitCount, uint32_t hitsPossible,
confidence = std::max(confidence, 0);
confidence = std::min(confidence, maxConfidence);
- Telemetry::Accumulate(Telemetry::PREDICTOR_BASE_CONFIDENCE, baseConfidence);
- Telemetry::Accumulate(Telemetry::PREDICTOR_SUBRESOURCE_DEGRADATION,
- confidenceDegradation);
- Telemetry::Accumulate(Telemetry::PREDICTOR_CONFIDENCE, confidence);
return confidence;
}
@@ -2335,7 +2312,6 @@ Predictor::PrefetchListener::OnStopRequest(nsIRequest *aRequest,
if (NS_FAILED(aStatusCode)) {
return aStatusCode;
}
- Telemetry::AccumulateTimeDelta(Telemetry::PREDICTOR_PREFETCH_TIME, mStartTime);
nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(aRequest);
if (!httpChannel) {
diff --git a/netwerk/base/TLSServerSocket.cpp b/netwerk/base/TLSServerSocket.cpp
index 257a7f5da5..97c7f54231 100644
--- a/netwerk/base/TLSServerSocket.cpp
+++ b/netwerk/base/TLSServerSocket.cpp
@@ -52,12 +52,12 @@ TLSServerSocket::SetSocketDefaults()
SSL_OptionSet(mFD, SSL_SECURITY, true);
SSL_OptionSet(mFD, SSL_HANDSHAKE_AS_CLIENT, false);
SSL_OptionSet(mFD, SSL_HANDSHAKE_AS_SERVER, true);
-
+ SSL_OptionSet(mFD, SSL_NO_CACHE, true);
+
// We don't currently notify the server API consumer of renegotiation events
// (to revalidate peer certs, etc.), so disable it for now.
SSL_OptionSet(mFD, SSL_ENABLE_RENEGOTIATION, SSL_RENEGOTIATE_NEVER);
- SetSessionCache(true);
SetSessionTickets(true);
SetRequestClientCertificate(REQUEST_NEVER);
@@ -172,18 +172,6 @@ TLSServerSocket::SetServerCert(nsIX509Cert* aCert)
}
NS_IMETHODIMP
-TLSServerSocket::SetSessionCache(bool aEnabled)
-{
- // If AsyncListen was already called (and set mListener), it's too late to set
- // this.
- if (NS_WARN_IF(mListener)) {
- return NS_ERROR_IN_PROGRESS;
- }
- SSL_OptionSet(mFD, SSL_NO_CACHE, !aEnabled);
- return NS_OK;
-}
-
-NS_IMETHODIMP
TLSServerSocket::SetSessionTickets(bool aEnabled)
{
// If AsyncListen was already called (and set mListener), it's too late to set
diff --git a/netwerk/base/nsITLSServerSocket.idl b/netwerk/base/nsITLSServerSocket.idl
index 57485357f5..dce54ffe74 100644
--- a/netwerk/base/nsITLSServerSocket.idl
+++ b/netwerk/base/nsITLSServerSocket.idl
@@ -20,15 +20,6 @@ interface nsITLSServerSocket : nsIServerSocket
attribute nsIX509Cert serverCert;
/**
- * setSessionCache
- *
- * Whether the server should use a session cache. Defaults to true. This
- * should be set before calling |asyncListen| if you wish to change the
- * default.
- */
- void setSessionCache(in boolean aSessionCache);
-
- /**
* setSessionTickets
*
* Whether the server should support session tickets. Defaults to true. This
diff --git a/netwerk/base/nsLoadGroup.cpp b/netwerk/base/nsLoadGroup.cpp
index 51d5a9ca7e..9981bd6989 100644
--- a/netwerk/base/nsLoadGroup.cpp
+++ b/netwerk/base/nsLoadGroup.cpp
@@ -14,7 +14,6 @@
#include "mozilla/Logging.h"
#include "nsString.h"
#include "nsTArray.h"
-#include "mozilla/Telemetry.h"
#include "nsITimedChannel.h"
#include "nsIInterfaceRequestor.h"
#include "nsIRequestObserver.h"
@@ -574,40 +573,6 @@ nsLoadGroup::RemoveRequest(nsIRequest *request, nsISupports* ctxt,
mRequests.RemoveEntry(entry);
- // Collect telemetry stats only when default request is a timed channel.
- // Don't include failed requests in the timing statistics.
- if (mDefaultLoadIsTimed && NS_SUCCEEDED(aStatus)) {
- nsCOMPtr<nsITimedChannel> timedChannel = do_QueryInterface(request);
- if (timedChannel) {
- // Figure out if this request was served from the cache
- ++mTimedRequests;
- TimeStamp timeStamp;
- rv = timedChannel->GetCacheReadStart(&timeStamp);
- if (NS_SUCCEEDED(rv) && !timeStamp.IsNull()) {
- ++mCachedRequests;
- }
- else {
- mTimedNonCachedRequestsUntilOnEndPageLoad++;
- }
-
- rv = timedChannel->GetAsyncOpen(&timeStamp);
- if (NS_SUCCEEDED(rv) && !timeStamp.IsNull()) {
- Telemetry::AccumulateTimeDelta(
- Telemetry::HTTP_SUBITEM_OPEN_LATENCY_TIME,
- mDefaultRequestCreationTime, timeStamp);
- }
-
- rv = timedChannel->GetResponseStart(&timeStamp);
- if (NS_SUCCEEDED(rv) && !timeStamp.IsNull()) {
- Telemetry::AccumulateTimeDelta(
- Telemetry::HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME,
- mDefaultRequestCreationTime, timeStamp);
- }
-
- TelemetryReportChannel(timedChannel, false);
- }
- }
-
if (mRequests.EntryCount() == 0) {
TelemetryReport();
}
@@ -815,19 +780,7 @@ nsLoadGroup::SetDefaultLoadFlags(uint32_t aFlags)
void
nsLoadGroup::TelemetryReport()
{
- if (mDefaultLoadIsTimed) {
- Telemetry::Accumulate(Telemetry::HTTP_REQUEST_PER_PAGE, mTimedRequests);
- if (mTimedRequests) {
- Telemetry::Accumulate(Telemetry::HTTP_REQUEST_PER_PAGE_FROM_CACHE,
- mCachedRequests * 100 / mTimedRequests);
- }
-
- nsCOMPtr<nsITimedChannel> timedChannel =
- do_QueryInterface(mDefaultLoadRequest);
- if (timedChannel)
- TelemetryReportChannel(timedChannel, true);
- }
-
+ /* STUB */
mTimedRequests = 0;
mCachedRequests = 0;
mDefaultLoadIsTimed = false;
@@ -898,116 +851,6 @@ nsLoadGroup::TelemetryReportChannel(nsITimedChannel *aTimedChannel,
rv = aTimedChannel->GetResponseEnd(&responseEnd);
if (NS_FAILED(rv))
return;
-
-#define HTTP_REQUEST_HISTOGRAMS(prefix) \
- if (!domainLookupStart.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_DNS_ISSUE_TIME, \
- asyncOpen, domainLookupStart); \
- } \
- \
- if (!domainLookupStart.IsNull() && !domainLookupEnd.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_DNS_LOOKUP_TIME, \
- domainLookupStart, domainLookupEnd); \
- } \
- \
- if (!secureConnectionStart.IsNull() && !connectEnd.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_TLS_HANDSHAKE, \
- secureConnectionStart, connectEnd); \
- } \
- \
- if (!connectStart.IsNull() && !connectEnd.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_TCP_CONNECTION_2, \
- connectStart, connectEnd); \
- } \
- \
- \
- if (!requestStart.IsNull() && !responseEnd.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_SENT, \
- asyncOpen, requestStart); \
- \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_FIRST_SENT_TO_LAST_RECEIVED, \
- requestStart, responseEnd); \
- \
- if (cacheReadStart.IsNull() && !responseStart.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_RECEIVED, \
- asyncOpen, responseStart); \
- } \
- } \
- \
- if (!cacheReadStart.IsNull() && !cacheReadEnd.IsNull()) { \
- if (!CacheObserver::UseNewCache()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_FROM_CACHE, \
- asyncOpen, cacheReadStart); \
- } else { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_OPEN_TO_FIRST_FROM_CACHE_V2, \
- asyncOpen, cacheReadStart); \
- } \
- \
- if (!CacheObserver::UseNewCache()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_CACHE_READ_TIME, \
- cacheReadStart, cacheReadEnd); \
- } else { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_CACHE_READ_TIME_V2, \
- cacheReadStart, cacheReadEnd); \
- } \
- \
- if (!requestStart.IsNull() && !responseEnd.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_REVALIDATION, \
- requestStart, responseEnd); \
- } \
- } \
- \
- if (!cacheReadEnd.IsNull()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_COMPLETE_LOAD, \
- asyncOpen, cacheReadEnd); \
- \
- if (!CacheObserver::UseNewCache()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_COMPLETE_LOAD_CACHED, \
- asyncOpen, cacheReadEnd); \
- } else { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_COMPLETE_LOAD_CACHED_V2, \
- asyncOpen, cacheReadEnd); \
- } \
- } \
- else if (!responseEnd.IsNull()) { \
- if (!CacheObserver::UseNewCache()) { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_COMPLETE_LOAD, \
- asyncOpen, responseEnd); \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_COMPLETE_LOAD_NET, \
- asyncOpen, responseEnd); \
- } else { \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_COMPLETE_LOAD_V2, \
- asyncOpen, responseEnd); \
- Telemetry::AccumulateTimeDelta( \
- Telemetry::HTTP_##prefix##_COMPLETE_LOAD_NET_V2, \
- asyncOpen, responseEnd); \
- } \
- }
-
- if (aDefaultRequest) {
- HTTP_REQUEST_HISTOGRAMS(PAGE)
- } else {
- HTTP_REQUEST_HISTOGRAMS(SUB)
- }
-#undef HTTP_REQUEST_HISTOGRAMS
}
nsresult nsLoadGroup::MergeLoadFlags(nsIRequest *aRequest,
diff --git a/netwerk/base/nsNetUtil.cpp b/netwerk/base/nsNetUtil.cpp
index d60c909c52..653a9003ee 100644
--- a/netwerk/base/nsNetUtil.cpp
+++ b/netwerk/base/nsNetUtil.cpp
@@ -2262,7 +2262,6 @@ NS_ShouldSecureUpgrade(nsIURI* aURI,
nsIScriptError::warningFlag, "CSP",
innerWindowId);
- Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 4);
aShouldUpgrade = true;
return NS_OK;
}
@@ -2285,17 +2284,10 @@ NS_ShouldSecureUpgrade(nsIURI* aURI,
if (isStsHost) {
LOG(("nsHttpChannel::Connect() STS permissions found\n"));
if (aAllowSTS) {
- Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 3);
aShouldUpgrade = true;
return NS_OK;
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 2);
}
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 1);
}
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_SCHEME_UPGRADE, 0);
}
aShouldUpgrade = false;
return NS_OK;
diff --git a/netwerk/base/nsSocketTransport2.cpp b/netwerk/base/nsSocketTransport2.cpp
index 184757d33c..f9b55ead4d 100644
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -1596,17 +1596,6 @@ nsSocketTransport::RecoverFromError()
bool tryAgain = false;
- if ((mState == STATE_CONNECTING) && mDNSRecord &&
- mSocketTransportService->IsTelemetryEnabledAndNotSleepPhase()) {
- if (mNetAddr.raw.family == AF_INET) {
- Telemetry::Accumulate(Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY,
- UNSUCCESSFUL_CONNECTING_TO_IPV4_ADDRESS);
- } else if (mNetAddr.raw.family == AF_INET6) {
- Telemetry::Accumulate(Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY,
- UNSUCCESSFUL_CONNECTING_TO_IPV6_ADDRESS);
- }
- }
-
if (mConnectionFlags & (DISABLE_IPV6 | DISABLE_IPV4) &&
mCondition == NS_ERROR_UNKNOWN_HOST &&
mState == STATE_RESOLVING &&
@@ -1996,18 +1985,6 @@ nsSocketTransport::OnSocketReady(PRFileDesc *fd, int16_t outFlags)
// we are connected!
//
OnSocketConnected();
-
- if (mSocketTransportService->IsTelemetryEnabledAndNotSleepPhase()) {
- if (mNetAddr.raw.family == AF_INET) {
- Telemetry::Accumulate(
- Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY,
- SUCCESSFUL_CONNECTING_TO_IPV4_ADDRESS);
- } else if (mNetAddr.raw.family == AF_INET6) {
- Telemetry::Accumulate(
- Telemetry::IPV4_AND_IPV6_ADDRESS_CONNECTIVITY,
- SUCCESSFUL_CONNECTING_TO_IPV6_ADDRESS);
- }
- }
}
else {
PRErrorCode code = PR_GetError();
@@ -3201,28 +3178,7 @@ nsSocketTransport::SendPRBlockingTelemetry(PRIntervalTime aStart,
Telemetry::ID aIDLinkChange,
Telemetry::ID aIDOffline)
{
- PRIntervalTime now = PR_IntervalNow();
- if (gIOService->IsNetTearingDown()) {
- Telemetry::Accumulate(aIDShutdown,
- PR_IntervalToMilliseconds(now - aStart));
-
- } else if (PR_IntervalToSeconds(now - gIOService->LastConnectivityChange())
- < 60) {
- Telemetry::Accumulate(aIDConnectivityChange,
- PR_IntervalToMilliseconds(now - aStart));
- } else if (PR_IntervalToSeconds(now - gIOService->LastNetworkLinkChange())
- < 60) {
- Telemetry::Accumulate(aIDLinkChange,
- PR_IntervalToMilliseconds(now - aStart));
-
- } else if (PR_IntervalToSeconds(now - gIOService->LastOfflineStateChange())
- < 60) {
- Telemetry::Accumulate(aIDOffline,
- PR_IntervalToMilliseconds(now - aStart));
- } else {
- Telemetry::Accumulate(aIDNormal,
- PR_IntervalToMilliseconds(now - aStart));
- }
+ /* STUB */
}
} // namespace net
diff --git a/netwerk/base/nsSocketTransportService2.cpp b/netwerk/base/nsSocketTransportService2.cpp
index 068bf0eca9..72afdc9e19 100644
--- a/netwerk/base/nsSocketTransportService2.cpp
+++ b/netwerk/base/nsSocketTransportService2.cpp
@@ -219,7 +219,6 @@ nsSocketTransportService::CanAttachSocket()
if (mTelemetryEnabledPref &&
(((total >= 900) || !rv) && !reported900FDLimit)) {
reported900FDLimit = true;
- Telemetry::Accumulate(Telemetry::NETWORK_SESSION_AT_900FD, true);
}
return rv;
@@ -898,16 +897,6 @@ nsSocketTransportService::Run()
DoPollIteration(&singlePollDuration);
- if (mTelemetryEnabledPref && !pollCycleStart.IsNull()) {
- Telemetry::Accumulate(Telemetry::STS_POLL_BLOCK_TIME,
- singlePollDuration.ToMilliseconds());
- Telemetry::AccumulateTimeDelta(
- Telemetry::STS_POLL_CYCLE,
- pollCycleStart + singlePollDuration,
- TimeStamp::NowLoRes());
- pollDuration += singlePollDuration;
- }
-
mRawThread->HasPendingEvents(&pendingEvents);
if (pendingEvents) {
if (!mServingPendingQueue) {
@@ -940,22 +929,6 @@ nsSocketTransportService::Run()
((TimeStamp::NowLoRes() -
eventQueueStart).ToMilliseconds() <
mMaxTimePerPollIter));
-
- if (mTelemetryEnabledPref && !mServingPendingQueue &&
- !startOfIteration.IsNull()) {
- Telemetry::AccumulateTimeDelta(
- Telemetry::STS_POLL_AND_EVENTS_CYCLE,
- startOfIteration + pollDuration,
- TimeStamp::NowLoRes());
-
- Telemetry::Accumulate(
- Telemetry::STS_NUMBER_OF_PENDING_EVENTS,
- numberOfPendingEvents);
-
- numberOfPendingEventsLastCycle += numberOfPendingEvents;
- numberOfPendingEvents = 0;
- pollDuration = 0;
- }
}
} while (pendingEvents);
@@ -964,16 +937,6 @@ nsSocketTransportService::Run()
{
MutexAutoLock lock(mLock);
if (mShuttingDown) {
- if (mTelemetryEnabledPref &&
- !startOfCycleForLastCycleCalc.IsNull()) {
- Telemetry::Accumulate(
- Telemetry::STS_NUMBER_OF_PENDING_EVENTS_IN_THE_LAST_CYCLE,
- numberOfPendingEventsLastCycle);
- Telemetry::AccumulateTimeDelta(
- Telemetry::STS_POLL_AND_EVENT_THE_LAST_CYCLE,
- startOfCycleForLastCycleCalc,
- TimeStamp::NowLoRes());
- }
break;
}
if (mGoingOffline) {
@@ -1142,11 +1105,6 @@ nsSocketTransportService::DoPollIteration(TimeDuration *pollDuration)
}
}
}
- if (mTelemetryEnabledPref) {
- Telemetry::Accumulate(
- Telemetry::STS_NUMBER_OF_ONSOCKETREADY_CALLS,
- numberOfOnSocketReadyCalls);
- }
//
// check for "dead" sockets and remove them (need to do this in
@@ -1465,7 +1423,6 @@ nsSocketTransportService::ProbeMaxCount()
if (pfd[index].fd)
PR_Close(pfd[index].fd);
- Telemetry::Accumulate(Telemetry::NETWORK_PROBE_MAXCOUNT, gMaxCount);
SOCKET_LOG(("Socket Limit Test max was confirmed at %d\n", gMaxCount));
}
#endif // windows
diff --git a/netwerk/base/nsUDPSocket.cpp b/netwerk/base/nsUDPSocket.cpp
index 5973a205d4..24f3954cb5 100644
--- a/netwerk/base/nsUDPSocket.cpp
+++ b/netwerk/base/nsUDPSocket.cpp
@@ -777,33 +777,6 @@ nsUDPSocket::CloseSocket()
}
PR_Close(mFD);
-
- if (gSocketTransportService->IsTelemetryEnabledAndNotSleepPhase()) {
- PRIntervalTime now = PR_IntervalNow();
- if (gIOService->IsNetTearingDown()) {
- Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_SHUTDOWN,
- PR_IntervalToMilliseconds(now - closeStarted));
-
- } else if (PR_IntervalToSeconds(now - gIOService->LastConnectivityChange())
- < 60) {
- Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_CONNECTIVITY_CHANGE,
- PR_IntervalToMilliseconds(now - closeStarted));
-
- } else if (PR_IntervalToSeconds(now - gIOService->LastNetworkLinkChange())
- < 60) {
- Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_LINK_CHANGE,
- PR_IntervalToMilliseconds(now - closeStarted));
-
- } else if (PR_IntervalToSeconds(now - gIOService->LastOfflineStateChange())
- < 60) {
- Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_OFFLINE,
- PR_IntervalToMilliseconds(now - closeStarted));
-
- } else {
- Telemetry::Accumulate(Telemetry::PRCLOSE_UDP_BLOCKING_TIME_NORMAL,
- PR_IntervalToMilliseconds(now - closeStarted));
- }
- }
}
mFD = nullptr;
}
diff --git a/netwerk/base/security-prefs.js b/netwerk/base/security-prefs.js
index cfbbf4a457..7d63267a65 100644
--- a/netwerk/base/security-prefs.js
+++ b/netwerk/base/security-prefs.js
@@ -42,6 +42,8 @@ pref("security.ssl3.dhe_rsa_aes_128_sha", false);
pref("security.ssl3.rsa_aes_128_gcm_sha256", false);
pref("security.ssl3.rsa_aes_128_sha256", false);
pref("security.ssl3.rsa_des_ede3_sha", false);
+pref("security.ssl3.rsa_rc4_128_sha", false);
+pref("security.ssl3.rsa_rc4_128_md5", false);
pref("security.content.signature.root_hash",
"97:E8:BA:9C:F1:2F:B3:DE:53:CC:42:A4:E6:57:7E:D6:4D:F4:93:C2:47:B4:14:FE:A0:36:81:8D:38:23:56:0E");
diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp
index bab67e1040..97b1a71c80 100644
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
@@ -1184,7 +1184,6 @@ nsCacheService::Shutdown()
}
nsCOMPtr<nsIThread> cacheIOThread;
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_SHUTDOWN> totalTimer;
bool shouldSanitize = false;
nsCOMPtr<nsIFile> parentDir;
@@ -1261,10 +1260,8 @@ nsCacheService::Shutdown()
if (NS_SUCCEEDED(parentDir->Exists(&exists)) && exists)
nsDeleteDir::DeleteDir(parentDir, false);
}
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_SHUTDOWN_CLEAR_PRIVATE> timer;
nsDeleteDir::Shutdown(shouldSanitize);
} else {
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_DELETEDIR_SHUTDOWN> timer;
nsDeleteDir::Shutdown(shouldSanitize);
}
}
@@ -2175,7 +2172,6 @@ nsCacheService::ActivateEntry(nsCacheRequest * request,
nsCacheEntry *
nsCacheService::SearchCacheDevices(nsCString * key, nsCacheStoragePolicy policy, bool *collision)
{
- Telemetry::AutoTimer<Telemetry::CACHE_DEVICE_SEARCH_2> timer;
nsCacheEntry * entry = nullptr;
CACHE_LOG_DEBUG(("mMemoryDevice: 0x%p\n", mMemoryDevice));
@@ -2655,18 +2651,7 @@ nsCacheService::Lock(mozilla::Telemetry::ID mainThreadLockerID)
generalID = mozilla::Telemetry::CACHE_SERVICE_LOCK_WAIT_2;
}
- TimeStamp start(TimeStamp::Now());
-
nsCacheService::Lock();
-
- TimeStamp stop(TimeStamp::Now());
-
- // Telemetry isn't thread safe on its own, but this is OK because we're
- // protecting it with the cache lock.
- if (lockerID != mozilla::Telemetry::HistogramCount) {
- mozilla::Telemetry::AccumulateTimeDelta(lockerID, start, stop);
- }
- mozilla::Telemetry::AccumulateTimeDelta(generalID, start, stop);
}
void
diff --git a/netwerk/cache/nsDeleteDir.cpp b/netwerk/cache/nsDeleteDir.cpp
index 1f3f3934e9..8c4edf8126 100644
--- a/netwerk/cache/nsDeleteDir.cpp
+++ b/netwerk/cache/nsDeleteDir.cpp
@@ -155,7 +155,6 @@ nsDeleteDir::DestroyThread()
void
nsDeleteDir::TimerCallback(nsITimer *aTimer, void *arg)
{
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_DELETEDIR> timer;
{
MutexAutoLock lock(gInstance->mLock);
@@ -193,8 +192,6 @@ nsDeleteDir::TimerCallback(nsITimer *aTimer, void *arg)
nsresult
nsDeleteDir::DeleteDir(nsIFile *dirIn, bool moveToTrash, uint32_t delay)
{
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_TRASHRENAME> timer;
-
if (!gInstance)
return NS_ERROR_NOT_INITIALIZED;
diff --git a/netwerk/cache/nsDiskCacheDevice.cpp b/netwerk/cache/nsDiskCacheDevice.cpp
index ac91534ff6..09089bfb62 100644
--- a/netwerk/cache/nsDiskCacheDevice.cpp
+++ b/netwerk/cache/nsDiskCacheDevice.cpp
@@ -457,7 +457,6 @@ nsDiskCacheDevice::GetDeviceID()
nsCacheEntry *
nsDiskCacheDevice::FindEntry(nsCString * key, bool *collision)
{
- Telemetry::AutoTimer<Telemetry::CACHE_DISK_SEARCH_2> timer;
if (!Initialized()) return nullptr; // NS_ERROR_NOT_INITIALIZED
if (mClearingDiskCache) return nullptr;
nsDiskCacheRecord record;
@@ -955,7 +954,6 @@ nsDiskCacheDevice::EvictEntries(const char * clientID)
nsresult
nsDiskCacheDevice::OpenDiskCache()
{
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_OPEN> timer;
// if we don't have a cache directory, create one and open it
bool exists;
nsresult rv = mCacheDirectory->Exists(&exists);
diff --git a/netwerk/cache/nsDiskCacheDeviceSQL.cpp b/netwerk/cache/nsDiskCacheDeviceSQL.cpp
index 56ece58870..f4b1d72c98 100644
--- a/netwerk/cache/nsDiskCacheDeviceSQL.cpp
+++ b/netwerk/cache/nsDiskCacheDeviceSQL.cpp
@@ -1523,7 +1523,6 @@ nsOfflineCacheDevice::FindEntry(nsCString *fullKey, bool *collision)
{
NS_ENSURE_TRUE(Initialized(), nullptr);
- mozilla::Telemetry::AutoTimer<mozilla::Telemetry::CACHE_OFFLINE_SEARCH_2> timer;
LOG(("nsOfflineCacheDevice::FindEntry [key=%s]\n", fullKey->get()));
// SELECT * FROM moz_cache WHERE key = ?
diff --git a/netwerk/cache/nsDiskCacheEntry.h b/netwerk/cache/nsDiskCacheEntry.h
index 3bec330536..506886cb7c 100644
--- a/netwerk/cache/nsDiskCacheEntry.h
+++ b/netwerk/cache/nsDiskCacheEntry.h
@@ -32,7 +32,7 @@ struct nsDiskCacheEntry {
mKeySize + mMetaDataSize;
}
- char* Key() { return reinterpret_cast<char*const>(this) +
+ char* Key() { return reinterpret_cast<char*>(this) +
sizeof(nsDiskCacheEntry);
}
diff --git a/netwerk/cache/nsDiskCacheMap.cpp b/netwerk/cache/nsDiskCacheMap.cpp
index d7ce13a35a..d3ec1e714b 100644
--- a/netwerk/cache/nsDiskCacheMap.cpp
+++ b/netwerk/cache/nsDiskCacheMap.cpp
@@ -19,7 +19,6 @@
#include "mozilla/MemoryReporting.h"
#include "mozilla/Sprintf.h"
-#include "mozilla/Telemetry.h"
#include <algorithm>
using namespace mozilla;
@@ -181,9 +180,6 @@ nsDiskCacheMap::Open(nsIFile * cacheDirectory,
goto error_exit;
}
- Telemetry::Accumulate(Telemetry::HTTP_DISK_CACHE_OVERHEAD,
- (uint32_t)SizeOfExcludingThis(moz_malloc_size_of));
-
*corruptInfo = nsDiskCache::kNotCorrupt;
return NS_OK;
diff --git a/netwerk/cache/nsMemoryCacheDevice.cpp b/netwerk/cache/nsMemoryCacheDevice.cpp
index 042e860224..eb69e8ea87 100644
--- a/netwerk/cache/nsMemoryCacheDevice.cpp
+++ b/netwerk/cache/nsMemoryCacheDevice.cpp
@@ -113,7 +113,6 @@ nsMemoryCacheDevice::GetDeviceID()
nsCacheEntry *
nsMemoryCacheDevice::FindEntry(nsCString * key, bool *collision)
{
- mozilla::Telemetry::AutoTimer<mozilla::Telemetry::CACHE_MEMORY_SEARCH_2> timer;
nsCacheEntry * entry = mMemCacheEntries.GetEntry(key);
if (!entry) return nullptr;
diff --git a/netwerk/cache2/CacheFile.cpp b/netwerk/cache2/CacheFile.cpp
index fa0a893823..ce771c754c 100644
--- a/netwerk/cache2/CacheFile.cpp
+++ b/netwerk/cache2/CacheFile.cpp
@@ -14,7 +14,6 @@
#include <algorithm>
#include "nsComponentManagerUtils.h"
#include "nsProxyRelease.h"
-#include "mozilla/Telemetry.h"
// When CACHE_CHUNKS is defined we always cache unused chunks in mCacheChunks.
// When it is not defined, we always release the chunks ASAP, i.e. we cache
@@ -1914,9 +1913,6 @@ CacheFile::RemoveInput(CacheFileInputStream *aInput, nsresult aStatus)
// chunks that won't be used anymore.
CleanUpCachedChunks();
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_V2_INPUT_STREAM_STATUS,
- StatusToTelemetryEnum(aStatus));
-
return NS_OK;
}
@@ -1952,9 +1948,6 @@ CacheFile::RemoveOutput(CacheFileOutputStream *aOutput, nsresult aStatus)
// Notify close listener as the last action
aOutput->NotifyCloseListener();
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS,
- StatusToTelemetryEnum(aStatus));
-
return NS_OK;
}
diff --git a/netwerk/cache2/CacheFileIOManager.cpp b/netwerk/cache2/CacheFileIOManager.cpp
index 1d0d576355..f6b499e47e 100644
--- a/netwerk/cache2/CacheFileIOManager.cpp
+++ b/netwerk/cache2/CacheFileIOManager.cpp
@@ -21,7 +21,6 @@
#include "nsIObserverService.h"
#include "nsICacheStorageVisitor.h"
#include "nsISizeOf.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/DebugOnly.h"
#include "mozilla/Services.h"
#include "nsDirectoryServiceUtils.h"
@@ -1173,8 +1172,6 @@ CacheFileIOManager::Shutdown()
return NS_ERROR_NOT_INITIALIZED;
}
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE_SHUTDOWN_V2> shutdownTimer;
-
CacheIndex::PreShutdown();
ShutdownMetadataWriteScheduling();
@@ -1192,7 +1189,6 @@ CacheFileIOManager::Shutdown()
CacheIndex::Shutdown();
if (CacheObserver::ClearCacheOnShutdown()) {
- Telemetry::AutoTimer<Telemetry::NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE> totalTimer;
gInstance->SyncRemoveAllCacheFiles();
}
@@ -3861,7 +3857,6 @@ CacheFileIOManager::CreateCacheTree()
}
#endif
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_FS_TYPE, fsType);
CacheObserver::SetCacheFSReported();
}
@@ -3917,8 +3912,6 @@ CacheFileIOManager::OpenNSPRHandle(CacheFileHandle *aHandle, bool aCreate)
uint32_t cacheUsage;
if (NS_SUCCEEDED(CacheIndex::GetCacheSize(&cacheUsage))) {
cacheUsage >>= 10;
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_SIZE_FULL_FAT,
- cacheUsage);
sSizeReported = true;
}
}
diff --git a/netwerk/cache2/CacheFileMetadata.cpp b/netwerk/cache2/CacheFileMetadata.cpp
index 3814b4c878..86fc089aaf 100644
--- a/netwerk/cache2/CacheFileMetadata.cpp
+++ b/netwerk/cache2/CacheFileMetadata.cpp
@@ -14,7 +14,6 @@
#include "nsICacheEntry.h" // for nsICacheEntryMetaDataVisitor
#include "../cache/nsCacheUtils.h"
#include "nsIFile.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/DebugOnly.h"
#include "prnetdb.h"
@@ -687,16 +686,6 @@ CacheFileMetadata::OnDataRead(CacheFileHandle *aHandle, char *aBuf,
return NS_OK;
}
- if (mFirstRead) {
- Telemetry::AccumulateTimeDelta(
- Telemetry::NETWORK_CACHE_METADATA_FIRST_READ_TIME_MS, mReadStart);
- Telemetry::Accumulate(
- Telemetry::NETWORK_CACHE_METADATA_FIRST_READ_SIZE, mBufSize);
- } else {
- Telemetry::AccumulateTimeDelta(
- Telemetry::NETWORK_CACHE_METADATA_SECOND_READ_TIME_MS, mReadStart);
- }
-
// check whether we have read all necessary data
uint32_t realOffset = NetworkEndian::readUint32(mBuf + mBufSize -
sizeof(uint32_t));
@@ -776,9 +765,6 @@ CacheFileMetadata::OnDataRead(CacheFileHandle *aHandle, char *aBuf,
return NS_OK;
}
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_METADATA_SIZE,
- size - realOffset);
-
// We have all data according to offset information at the end of the entry.
// Try to parse it.
rv = ParseMetadata(realOffset, realOffset - usedOffset, true);
diff --git a/netwerk/cache2/CacheFileUtils.cpp b/netwerk/cache2/CacheFileUtils.cpp
index d43e958bff..fe1a53b3d4 100644
--- a/netwerk/cache2/CacheFileUtils.cpp
+++ b/netwerk/cache2/CacheFileUtils.cpp
@@ -7,7 +7,6 @@
#include "CacheFileUtils.h"
#include "LoadContextInfo.h"
#include "mozilla/Tokenizer.h"
-#include "mozilla/Telemetry.h"
#include "nsCOMPtr.h"
#include "nsAutoPtr.h"
#include "nsString.h"
@@ -474,19 +473,6 @@ DetailedCacheHitTelemetry::AddRecord(ERecType aType, TimeStamp aLoadStart)
StaticMutexAutoLock lock(sLock);
- if (aType == MISS) {
- mozilla::Telemetry::AccumulateTimeDelta(
- mozilla::Telemetry::NETWORK_CACHE_V2_MISS_TIME_MS,
- aLoadStart);
- } else {
- mozilla::Telemetry::AccumulateTimeDelta(
- mozilla::Telemetry::NETWORK_CACHE_V2_HIT_TIME_MS,
- aLoadStart);
- }
-
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_HIT_MISS_STAT_PER_CACHE_SIZE,
- hitMissValue);
-
sHRStats[rangeIdx].AddRecord(aType);
++sRecordCnt;
@@ -505,8 +491,6 @@ DetailedCacheHitTelemetry::AddRecord(ERecType aType, TimeStamp aLoadStart)
uint32_t bucketOffset = sHRStats[i].GetHitRateBucket(kHitRateBuckets) *
kNumOfRanges;
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_HIT_RATE_PER_CACHE_SIZE,
- bucketOffset + i);
sHRStats[i].Reset();
}
}
diff --git a/netwerk/cache2/CacheFileUtils.h b/netwerk/cache2/CacheFileUtils.h
index 3371c3eb56..13acfd71dc 100644
--- a/netwerk/cache2/CacheFileUtils.h
+++ b/netwerk/cache2/CacheFileUtils.h
@@ -138,7 +138,7 @@ private:
// 10-%15%, ...
static const uint32_t kHitRateBuckets = 20;
- // Protects sRecordCnt, sHitStats and Telemetry::Accumulated() calls.
+ // Protects sRecordCnt and sHitStats calls.
static StaticMutex sLock;
// Counter of samples that is compared against kTotalSamplesReportLimit.
diff --git a/netwerk/cache2/CacheIOThread.cpp b/netwerk/cache2/CacheIOThread.cpp
index b96f03216c..d51f61b0f5 100644
--- a/netwerk/cache2/CacheIOThread.cpp
+++ b/netwerk/cache2/CacheIOThread.cpp
@@ -62,8 +62,6 @@ void CacheIOTelemetry::Report(uint32_t aLevel, CacheIOTelemetry::size_type aLeng
// 10 is number of buckets we have in each probe
aLength = std::min<size_type>(aLength, 10);
-
- Telemetry::Accumulate(telemetryID[aLevel], aLength - 1); // counted from 0
}
} // anon
diff --git a/netwerk/cache2/CacheIndex.cpp b/netwerk/cache2/CacheIndex.cpp
index 4525bbe6d6..1009aeaf8a 100644
--- a/netwerk/cache2/CacheIndex.cpp
+++ b/netwerk/cache2/CacheIndex.cpp
@@ -3757,7 +3757,6 @@ ReportHashSizeMatch(const SHA1Sum::Hash *aHash1, const SHA1Sum::Hash *aHash2)
bitsDiff++;
uint8_t hashSizeMatch = debruijn32[bitsDiff*0x076be629>>27] + (i<<5);
- Telemetry::Accumulate(Telemetry::NETWORK_CACHE_HASH_STATS, hashSizeMatch);
return;
}
diff --git a/netwerk/cache2/CacheStorageService.cpp b/netwerk/cache2/CacheStorageService.cpp
index 67ef4c5267..85f364e4e4 100644
--- a/netwerk/cache2/CacheStorageService.cpp
+++ b/netwerk/cache2/CacheStorageService.cpp
@@ -2084,8 +2084,6 @@ CacheStorageService::TelemetryRecordEntryCreation(CacheEntry const* entry)
mPurgeTimeStamps.Remove(key);
- Telemetry::AccumulateTimeDelta(Telemetry::HTTP_CACHE_ENTRY_RELOAD_TIME,
- timeStamp, TimeStamp::NowLoRes());
}
void
@@ -2112,9 +2110,6 @@ CacheStorageService::TelemetryRecordEntryRemoval(CacheEntry const* entry)
TelemetryPrune(now);
mPurgeTimeStamps.Put(key, now);
- Telemetry::Accumulate(Telemetry::HTTP_CACHE_ENTRY_REUSE_COUNT, entry->UseCount());
- Telemetry::AccumulateTimeDelta(Telemetry::HTTP_CACHE_ENTRY_ALIVE_TIME,
- entry->LoadStart(), TimeStamp::NowLoRes());
}
// nsIMemoryReporter
diff --git a/netwerk/cache2/OldWrappers.cpp b/netwerk/cache2/OldWrappers.cpp
index 81df88df0e..76a4fa6c19 100644
--- a/netwerk/cache2/OldWrappers.cpp
+++ b/netwerk/cache2/OldWrappers.cpp
@@ -21,7 +21,6 @@
#include "nsNetCID.h"
#include "nsNetUtil.h"
#include "nsProxyRelease.h"
-#include "mozilla/Telemetry.h"
static NS_DEFINE_CID(kStreamTransportServiceCID,
NS_STREAMTRANSPORTSERVICE_CID);
@@ -793,24 +792,6 @@ _OldCacheLoad::Run()
return NS_OK;
}
- if (NS_SUCCEEDED(mStatus)) {
- if (mFlags & nsICacheStorage::OPEN_TRUNCATE) {
- mozilla::Telemetry::AccumulateTimeDelta(
- mozilla::Telemetry::NETWORK_CACHE_V1_TRUNCATE_TIME_MS,
- mLoadStart);
- }
- else if (mNew) {
- mozilla::Telemetry::AccumulateTimeDelta(
- mozilla::Telemetry::NETWORK_CACHE_V1_MISS_TIME_MS,
- mLoadStart);
- }
- else {
- mozilla::Telemetry::AccumulateTimeDelta(
- mozilla::Telemetry::NETWORK_CACHE_V1_HIT_TIME_MS,
- mLoadStart);
- }
- }
-
if (!(mFlags & CHECK_MULTITHREADED))
Check();
diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp
index 1c4e5e7409..ea54dbd611 100644
--- a/netwerk/cookie/nsCookieService.cpp
+++ b/netwerk/cookie/nsCookieService.cpp
@@ -954,19 +954,14 @@ nsCookieService::TryInitDB(bool aRecreateDB)
NS_ENSURE_SUCCESS(rv, RESULT_FAILURE);
}
- // This block provides scope for the Telemetry AutoTimer
- {
- Telemetry::AutoTimer<Telemetry::MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS>
- telemetry;
- ReadAheadFile(mDefaultDBState->cookieFile);
-
- // open a connection to the cookie database, and only cache our connection
- // and statements upon success. The connection is opened unshared to eliminate
- // cache contention between the main and background threads.
- rv = mStorageService->OpenUnsharedDatabase(mDefaultDBState->cookieFile,
- getter_AddRefs(mDefaultDBState->dbConn));
- NS_ENSURE_SUCCESS(rv, RESULT_RETRY);
- }
+ ReadAheadFile(mDefaultDBState->cookieFile);
+
+ // open a connection to the cookie database, and only cache our connection
+ // and statements upon success. The connection is opened unshared to eliminate
+ // cache contention between the main and background threads.
+ rv = mStorageService->OpenUnsharedDatabase(mDefaultDBState->cookieFile,
+ getter_AddRefs(mDefaultDBState->dbConn));
+ NS_ENSURE_SUCCESS(rv, RESULT_RETRY);
// Set up our listeners.
mDefaultDBState->insertListener = new InsertCookieDBListener(mDefaultDBState);
@@ -3325,11 +3320,6 @@ nsCookieService::SetCookieInternal(nsIURI *aHostURI,
// 3 = secure and "https:"
bool isHTTPS;
nsresult rv = aHostURI->SchemeIs("https", &isHTTPS);
- if (NS_SUCCEEDED(rv)) {
- Telemetry::Accumulate(Telemetry::COOKIE_SCHEME_SECURITY,
- ((cookieAttributes.isSecure)? 0x02 : 0x00) |
- ((isHTTPS)? 0x01 : 0x00));
- }
int64_t currentTimeInUsec = PR_Now();
@@ -3480,8 +3470,6 @@ nsCookieService::AddInternal(const nsCookieKey &aKey,
if (mLeaveSecureAlone && aCookie->IsSecure() && !isSecure) {
COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, aCookieHeader,
"non-https cookie can't set secure flag");
- Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE,
- BLOCKED_SECURE_SET_FROM_HTTP);
return;
}
nsListIter exactIter;
@@ -3502,14 +3490,7 @@ nsCookieService::AddInternal(const nsCookieKey &aKey,
if (!isSecure) {
COOKIE_LOGFAILURE(SET_COOKIE, aHostURI, aCookieHeader,
"cookie can't save because older cookie is secure cookie but newer cookie is non-secure cookie");
- Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE,
- BLOCKED_DOWNGRADE_SECURE);
return;
- } else {
- // A secure site is allowed to downgrade a secure cookie
- // but we want to measure anyway
- Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE,
- DOWNGRADE_SECURE_FROM_SECURE);
}
}
}
@@ -3609,8 +3590,6 @@ nsCookieService::AddInternal(const nsCookieKey &aKey,
// It's valid to evict a secure cookie for another secure cookie.
oldestCookieTime = FindStaleCookie(entry, currentTime, aHostURI, Some(true), iter);
} else {
- Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE,
- EVICTING_SECURE_BLOCKED);
COOKIE_LOGEVICTED(aCookie,
"Too many cookies for this domain and the new cookie is not a secure cookie");
return;
@@ -4651,19 +4630,7 @@ void
nsCookieService::TelemetryForEvictingStaleCookie(nsCookie *aEvicted,
int64_t oldestCookieTime)
{
- // We need to record the evicting cookie to telemetry.
- if (!aEvicted->IsSecure()) {
- if (aEvicted->LastAccessed() > oldestCookieTime) {
- Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE,
- EVICTED_NEWER_INSECURE);
- } else {
- Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE,
- EVICTED_OLDEST_COOKIE);
- }
- } else {
- Telemetry::Accumulate(Telemetry::COOKIE_LEAVE_SECURE_ALONE,
- EVICTED_PREFERRED_COOKIE);
- }
+ /* STUB */
}
// count the number of cookies stored by a particular host. this is provided by the
diff --git a/netwerk/dns/nsHostResolver.cpp b/netwerk/dns/nsHostResolver.cpp
index f2e26cadd4..c4883ab299 100644
--- a/netwerk/dns/nsHostResolver.cpp
+++ b/netwerk/dns/nsHostResolver.cpp
@@ -225,7 +225,6 @@ nsHostRecord::CopyExpirationTimesAndFlagsFrom(const nsHostRecord *aFromHostRecor
nsHostRecord::~nsHostRecord()
{
- Telemetry::Accumulate(Telemetry::DNS_BLACKLIST_COUNT, mBlacklistedCount);
delete addr_info;
delete addr;
}
@@ -775,7 +774,6 @@ nsHostResolver::ResolveHost(const char *host,
LOG_HOST(host, netInterface)));
// put reference to host record on stack...
result = he->rec;
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2, METHOD_HIT);
// For entries that are in the grace period
// or all cached negative entries, use the cache but start a new
@@ -785,8 +783,6 @@ nsHostResolver::ResolveHost(const char *host,
if (he->rec->negative) {
LOG((" Negative cache entry for host [%s%s%s].\n",
LOG_HOST(host, netInterface)));
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_NEGATIVE_HIT);
status = NS_ERROR_UNKNOWN_HOST;
}
}
@@ -794,8 +790,6 @@ nsHostResolver::ResolveHost(const char *host,
// go ahead and use it.
else if (he->rec->addr) {
LOG((" Using cached address for IP Literal [%s].\n", host));
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_LITERAL);
result = he->rec;
}
// try parsing the host name as an IP address literal to short
@@ -808,8 +802,6 @@ nsHostResolver::ResolveHost(const char *host,
he->rec->addr = new NetAddr();
PRNetAddrToNetAddr(&tempAddr, he->rec->addr);
// put reference to host record on stack...
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_LITERAL);
result = he->rec;
}
else if (mPendingCount >= MAX_NON_PRIORITY_REQUESTS &&
@@ -819,8 +811,6 @@ nsHostResolver::ResolveHost(const char *host,
"host [%s%s%s].\n",
IsMediumPriority(flags) ? "medium" : "low",
LOG_HOST(host, netInterface)));
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_OVERFLOW);
// This is a lower priority request and we are swamped, so refuse it.
rv = NS_ERROR_DNS_LOOKUP_QUEUE_FULL;
}
@@ -885,8 +875,6 @@ nsHostResolver::ResolveHost(const char *host,
if (he->rec->negative) {
status = NS_ERROR_UNKNOWN_HOST;
}
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_HIT);
ConditionallyRefreshRecord(he->rec, host);
}
// For AF_INET6, a new lookup means another AF_UNSPEC
@@ -900,8 +888,6 @@ nsHostResolver::ResolveHost(const char *host,
result = he->rec;
he->rec->negative = true;
status = NS_ERROR_UNKNOWN_HOST;
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_NEGATIVE_HIT);
}
}
}
@@ -915,8 +901,6 @@ nsHostResolver::ResolveHost(const char *host,
PR_APPEND_LINK(callback, &he->rec->callbacks);
he->rec->flags = flags;
rv = IssueLookup(he->rec);
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_NETWORK_FIRST);
if (NS_FAILED(rv)) {
PR_REMOVE_AND_INIT_LINK(callback);
}
@@ -933,8 +917,6 @@ nsHostResolver::ResolveHost(const char *host,
PR_APPEND_LINK(callback, &he->rec->callbacks);
if (he->rec->onQueue) {
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_NETWORK_SHARED);
// Consider the case where we are on a pending queue of
// lower priority than the request is being made at.
@@ -1085,13 +1067,6 @@ nsHostResolver::ConditionallyRefreshRecord(nsHostRecord *rec, const char *host)
LOG((" Using %s cache entry for host [%s] but starting async renewal.",
rec->negative ? "negative" :"positive", host));
IssueLookup(rec);
-
- if (!rec->negative) {
- // negative entries are constantly being refreshed, only
- // track positive grace period induced renewals
- Telemetry::Accumulate(Telemetry::DNS_LOOKUP_METHOD2,
- METHOD_RENEWAL);
- }
}
return NS_OK;
}
@@ -1326,13 +1301,6 @@ nsHostResolver::OnLookupComplete(nsHostRecord* rec, nsresult status, AddrInfo* n
PR_REMOVE_AND_INIT_LINK(head);
mDB.Remove((nsHostKey *) head);
- if (!head->negative) {
- // record the age of the entry upon eviction.
- TimeDuration age = TimeStamp::NowLoRes() - head->mValidStart;
- Telemetry::Accumulate(Telemetry::DNS_CLEANUP_AGE,
- static_cast<uint32_t>(age.ToSeconds() / 60));
- }
-
// release reference to rec owned by mEvictionQ
NS_RELEASE(head);
}
@@ -1467,32 +1435,6 @@ nsHostResolver::ThreadFunc(void *arg)
}
#endif
- { // obtain lock to check shutdown and manage inter-module telemetry
- MutexAutoLock lock(resolver->mLock);
-
- if (!resolver->mShutdown) {
- TimeDuration elapsed = TimeStamp::Now() - startTime;
- uint32_t millis = static_cast<uint32_t>(elapsed.ToMilliseconds());
-
- if (NS_SUCCEEDED(status)) {
- Telemetry::ID histogramID;
- if (!rec->addr_info_gencnt) {
- // Time for initial lookup.
- histogramID = Telemetry::DNS_LOOKUP_TIME;
- } else if (!getTtl) {
- // Time for renewal; categorized by expiration strategy.
- histogramID = Telemetry::DNS_RENEWAL_TIME;
- } else {
- // Time to get TTL; categorized by expiration strategy.
- histogramID = Telemetry::DNS_RENEWAL_TIME_FOR_TTL;
- }
- Telemetry::Accumulate(histogramID, millis);
- } else {
- Telemetry::Accumulate(Telemetry::DNS_FAILED_LOOKUP_TIME, millis);
- }
- }
- }
-
// OnLookupComplete may release "rec", long before we lose it.
LOG(("DNS lookup thread - lookup completed for host [%s%s%s]: %s.\n",
LOG_HOST(rec->host, rec->netInterface),
diff --git a/netwerk/protocol/http/ASpdySession.cpp b/netwerk/protocol/http/ASpdySession.cpp
index f22c326d1a..d5d98804d0 100644
--- a/netwerk/protocol/http/ASpdySession.cpp
+++ b/netwerk/protocol/http/ASpdySession.cpp
@@ -45,8 +45,6 @@ ASpdySession::NewSpdySession(uint32_t version,
// from a list provided in the SERVER HELLO filtered by our acceptable
// versions, so there is no risk of the server ignoring our prefs.
- Telemetry::Accumulate(Telemetry::SPDY_VERSION2, version);
-
return new Http2Session(aTransport, version, attemptingEarlyData);
}
diff --git a/netwerk/protocol/http/Http2Compression.cpp b/netwerk/protocol/http/Http2Compression.cpp
index 1b4603e1af..64fd05a170 100644
--- a/netwerk/protocol/http/Http2Compression.cpp
+++ b/netwerk/protocol/http/Http2Compression.cpp
@@ -292,12 +292,6 @@ Http2BaseCompressor::Http2BaseCompressor()
Http2BaseCompressor::~Http2BaseCompressor()
{
- if (mPeakSize) {
- Telemetry::Accumulate(mPeakSizeID, mPeakSize);
- }
- if (mPeakCount) {
- Telemetry::Accumulate(mPeakCountID, mPeakCount);
- }
UnregisterStrongMemoryReporter(mDynamicReporter);
mDynamicReporter->mCompressor = nullptr;
mDynamicReporter = nullptr;
@@ -336,16 +330,6 @@ Http2BaseCompressor::MakeRoom(uint32_t amount, const char *direction)
bytesEvicted += mHeaderTable[index]->Size();
mHeaderTable.RemoveElement();
}
-
- if (!strcmp(direction, "decompressor")) {
- Telemetry::Accumulate(Telemetry::HPACK_ELEMENTS_EVICTED_DECOMPRESSOR, countEvicted);
- Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_DECOMPRESSOR, bytesEvicted);
- Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_RATIO_DECOMPRESSOR, (uint32_t)((100.0 * (double)bytesEvicted) / (double)amount));
- } else {
- Telemetry::Accumulate(Telemetry::HPACK_ELEMENTS_EVICTED_COMPRESSOR, countEvicted);
- Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_COMPRESSOR, bytesEvicted);
- Telemetry::Accumulate(Telemetry::HPACK_BYTES_EVICTED_RATIO_COMPRESSOR, (uint32_t)((100.0 * (double)bytesEvicted) / (double)amount));
- }
}
void
diff --git a/netwerk/protocol/http/Http2Session.cpp b/netwerk/protocol/http/Http2Session.cpp
index 4f350af83b..4a178f0910 100644
--- a/netwerk/protocol/http/Http2Session.cpp
+++ b/netwerk/protocol/http/Http2Session.cpp
@@ -168,13 +168,6 @@ Http2Session::~Http2Session()
this, mDownstreamState));
Shutdown();
-
- Telemetry::Accumulate(Telemetry::SPDY_PARALLEL_STREAMS, mConcurrentHighWater);
- Telemetry::Accumulate(Telemetry::SPDY_REQUEST_PER_CONN, (mNextStreamID - 1) / 2);
- Telemetry::Accumulate(Telemetry::SPDY_SERVER_INITIATED_STREAMS,
- mServerPushedResources);
- Telemetry::Accumulate(Telemetry::SPDY_GOAWAY_LOCAL, mClientGoAwayReason);
- Telemetry::Accumulate(Telemetry::SPDY_GOAWAY_PEER, mPeerGoAwayReason);
}
void
@@ -1508,13 +1501,11 @@ Http2Session::RecvSettings(Http2Session *self)
case SETTINGS_TYPE_MAX_CONCURRENT:
self->mMaxConcurrent = value;
- Telemetry::Accumulate(Telemetry::SPDY_SETTINGS_MAX_STREAMS, value);
self->ProcessPending();
break;
case SETTINGS_TYPE_INITIAL_WINDOW:
{
- Telemetry::Accumulate(Telemetry::SPDY_SETTINGS_IW, value >> 10);
int32_t delta = value - self->mServerInitialStreamWindow;
self->mServerInitialStreamWindow = value;
@@ -2494,8 +2485,6 @@ Http2Session::ReadyToProcessDataFrame(enum internalStateType newState)
newState == DISCARDING_DATA_FRAME_PADDING);
ChangeDownstreamState(newState);
- Telemetry::Accumulate(Telemetry::SPDY_CHUNK_RECVD,
- mInputFrameDataSize >> 10);
mLastDataReadEpoch = mLastReadEpoch;
if (!mInputFrameID) {
diff --git a/netwerk/protocol/http/Http2Stream.cpp b/netwerk/protocol/http/Http2Stream.cpp
index 7a8f968550..3471985dd4 100644
--- a/netwerk/protocol/http/Http2Stream.cpp
+++ b/netwerk/protocol/http/Http2Stream.cpp
@@ -21,7 +21,6 @@
#include "Http2Push.h"
#include "TunnelUtils.h"
-#include "mozilla/Telemetry.h"
#include "nsAlgorithm.h"
#include "nsHttp.h"
#include "nsHttpHandler.h"
@@ -658,8 +657,6 @@ Http2Stream::GenerateOpen()
outputOffset += frameLen;
}
- Telemetry::Accumulate(Telemetry::SPDY_SYN_SIZE, compressedData.Length());
-
// The size of the input headers is approximate
uint32_t ratio =
compressedData.Length() * 100 /
@@ -667,7 +664,6 @@ Http2Stream::GenerateOpen()
mFlatHttpRequestHeaders.Length());
mFlatHttpRequestHeaders.Truncate();
- Telemetry::Accumulate(Telemetry::SPDY_SYN_RATIO, ratio);
return NS_OK;
}
@@ -1025,13 +1021,6 @@ Http2Stream::ConvertResponseHeaders(Http2Decompressor *decompressor,
return NS_ERROR_ILLEGAL_VALUE;
}
- if (aHeadersIn.Length() && aHeadersOut.Length()) {
- Telemetry::Accumulate(Telemetry::SPDY_SYN_REPLY_SIZE, aHeadersIn.Length());
- uint32_t ratio =
- aHeadersIn.Length() * 100 / aHeadersOut.Length();
- Telemetry::Accumulate(Telemetry::SPDY_SYN_REPLY_RATIO, ratio);
- }
-
// The decoding went ok. Now we can customize and clean up.
aHeadersIn.Truncate();
diff --git a/netwerk/protocol/http/HttpBaseChannel.cpp b/netwerk/protocol/http/HttpBaseChannel.cpp
index d161f9a432..c4e764d26d 100644
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -49,7 +49,6 @@
#include "LoadInfo.h"
#include "nsNullPrincipal.h"
#include "nsISSLSocketControl.h"
-#include "mozilla/Telemetry.h"
#include "nsIURL.h"
#include "nsIConsoleService.h"
#include "mozilla/BinarySearch.h"
@@ -1006,7 +1005,6 @@ HttpBaseChannel::DoApplyContentConversions(nsIStreamListener* aNextListener,
} else if (from.Equals("br")) {
mode = 3;
}
- Telemetry::Accumulate(Telemetry::HTTP_CONTENT_ENCODING, mode);
}
nextListener = converter;
}
diff --git a/netwerk/protocol/http/nsCORSListenerProxy.cpp b/netwerk/protocol/http/nsCORSListenerProxy.cpp
index c2a6243305..b9355c82bf 100644
--- a/netwerk/protocol/http/nsCORSListenerProxy.cpp
+++ b/netwerk/protocol/http/nsCORSListenerProxy.cpp
@@ -577,7 +577,7 @@ nsCORSListenerProxy::CheckRequestApproved(nsIRequest* aRequest)
// check for duplicate headers
rv = http->VisitOriginalResponseHeaders(visitor);
if (NS_FAILED(rv)) {
- LogBlockedRequest(aRequest, "CORSAllowOriginNotMatchingOrigin", nullptr);
+ LogBlockedRequest(aRequest, "CORSMultipleAllowOriginNotAllowed", nullptr);
return rv;
}
diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
index ac855b478f..bb0b3ca774 100644
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -133,18 +133,7 @@ enum CacheDisposition {
void
AccumulateCacheHitTelemetry(CacheDisposition hitOrMiss)
{
- if (!CacheObserver::UseNewCache()) {
- Telemetry::Accumulate(Telemetry::HTTP_CACHE_DISPOSITION_2, hitOrMiss);
- }
- else {
- Telemetry::Accumulate(Telemetry::HTTP_CACHE_DISPOSITION_2_V2, hitOrMiss);
-
- int32_t experiment = CacheObserver::HalfLifeExperiment();
- if (experiment > 0 && hitOrMiss == kCacheMissed) {
- Telemetry::Accumulate(Telemetry::HTTP_CACHE_MISS_HALFLIFE_EXPERIMENT_2,
- experiment - 1);
- }
- }
+ /* STUB */
}
// Computes and returns a SHA1 hash of the input buffer. The input buffer
@@ -1141,26 +1130,21 @@ EnsureMIMEOfScript(nsIURI* aURI, nsHttpResponseHead* aResponseHead, nsILoadInfo*
if (nsContentUtils::IsJavascriptMIMEType(typeString)) {
// script load has type script
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 1);
return NS_OK;
}
bool block = false;
if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("image/"))) {
// script load has type image
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 2);
block = true;
} else if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("audio/"))) {
// script load has type audio
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 3);
block = true;
} else if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("video/"))) {
// script load has type video
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 4);
block = true;
} else if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/csv"))) {
// script load has type text/csv
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 6);
block = true;
}
@@ -1186,42 +1170,35 @@ EnsureMIMEOfScript(nsIURI* aURI, nsHttpResponseHead* aResponseHead, nsILoadInfo*
if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/plain"))) {
// script load has type text/plain
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 5);
return NS_OK;
}
if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/xml"))) {
// script load has type text/xml
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 7);
return NS_OK;
}
if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("application/octet-stream"))) {
// script load has type application/octet-stream
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 8);
return NS_OK;
}
if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("application/xml"))) {
// script load has type application/xml
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 9);
return NS_OK;
}
if (StringBeginsWith(contentType, NS_LITERAL_CSTRING("text/html"))) {
// script load has type text/html
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 10);
return NS_OK;
}
if (contentType.IsEmpty()) {
// script load has no type
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 11);
return NS_OK;
}
// script load has unknown type
- Telemetry::Accumulate(Telemetry::SCRIPT_BLOCK_INCORRECT_MIME, 0);
return NS_OK;
}
@@ -1867,65 +1844,6 @@ nsHttpChannel::ProcessResponse()
LOG(("nsHttpChannel::ProcessResponse [this=%p httpStatus=%u]\n",
this, httpStatus));
- // do some telemetry
- if (gHttpHandler->IsTelemetryEnabled()) {
- // Gather data on whether the transaction and page (if this is
- // the initial page load) is being loaded with SSL.
- Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_IS_SSL,
- mConnectionInfo->EndToEndSSL());
- if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI) {
- Telemetry::Accumulate(Telemetry::HTTP_PAGELOAD_IS_SSL,
- mConnectionInfo->EndToEndSSL());
- }
-
- // how often do we see something like Alternate-Protocol: "443:quic,p=1"
- nsAutoCString alt_protocol;
- mResponseHead->GetHeader(nsHttp::Alternate_Protocol, alt_protocol);
- bool saw_quic = (!alt_protocol.IsEmpty() &&
- PL_strstr(alt_protocol.get(), "quic")) ? 1 : 0;
- Telemetry::Accumulate(Telemetry::HTTP_SAW_QUIC_ALT_PROTOCOL, saw_quic);
-
- // Gather data on how many URLS get redirected
- switch (httpStatus) {
- case 200:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 0);
- break;
- case 301:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 1);
- break;
- case 302:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 2);
- break;
- case 304:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 3);
- break;
- case 307:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 4);
- break;
- case 308:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 5);
- break;
- case 400:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 6);
- break;
- case 401:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 7);
- break;
- case 403:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 8);
- break;
- case 404:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 9);
- break;
- case 500:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 10);
- break;
- default:
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_STATUS_CODE, 11);
- break;
- }
- }
-
// Let the predictor know whether this was a cacheable response or not so
// that it knows whether or not to possibly prefetch this resource in the
// future.
@@ -2204,9 +2122,6 @@ nsHttpChannel::ContinueProcessResponse2(nsresult rv)
}
AccumulateCacheHitTelemetry(cacheDisposition);
- Telemetry::Accumulate(Telemetry::HTTP_RESPONSE_VERSION,
- mResponseHead->Version());
-
if (mResponseHead->Version() == NS_HTTP_VERSION_0_9) {
// DefaultPortTopLevel = 0, DefaultPortSubResource = 1,
// NonDefaultPortTopLevel = 2, NonDefaultPortSubResource = 3
@@ -2217,7 +2132,6 @@ nsHttpChannel::ContinueProcessResponse2(nsresult rv)
if (mConnectionInfo->OriginPort() != mConnectionInfo->DefaultPort()) {
v09Info += 2;
}
- Telemetry::Accumulate(Telemetry::HTTP_09_INFO, v09Info);
}
}
return rv;
@@ -3212,7 +3126,6 @@ nsHttpChannel::ProcessNotModified()
PipelineFeedbackInfo(mConnectionInfo,
nsHttpConnectionMgr::RedCorruptedContent,
nullptr, 0);
- Telemetry::Accumulate(Telemetry::CACHE_LM_INCONSISTENT, true);
}
// merge any new headers with the cached response headers
@@ -3372,10 +3285,6 @@ nsHttpChannel::ContinueProcessFallback(nsresult rv)
}
NS_ENSURE_SUCCESS(rv, rv);
- if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI) {
- MaybeWarnAboutAppCache();
- }
-
// close down this channel
Cancel(NS_BINDING_REDIRECTED);
@@ -4226,11 +4135,6 @@ nsHttpChannel::OnNormalCacheEntryAvailable(nsICacheEntry *aEntry,
if (NS_SUCCEEDED(aEntryStatus)) {
mCacheEntry = aEntry;
mCacheEntryIsWriteOnly = aNew;
-
- if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI) {
- Telemetry::Accumulate(Telemetry::HTTP_OFFLINE_CACHE_DOCUMENT_LOAD,
- false);
- }
}
return NS_OK;
@@ -4261,10 +4165,6 @@ nsHttpChannel::OnOfflineCacheEntryAvailable(nsICacheEntry *aEntry,
mCacheEntry = aEntry;
mCacheEntryIsWriteOnly = false;
- if (mLoadFlags & LOAD_INITIAL_DOCUMENT_URI && !mApplicationCacheForWrite) {
- MaybeWarnAboutAppCache();
- }
-
return NS_OK;
}
@@ -5905,17 +5805,13 @@ nsHttpChannel::BeginConnect()
LOG(("nsHttpChannel %p Using connection info from altsvc mapping", this));
mapping->GetConnectionInfo(getter_AddRefs(mConnectionInfo), proxyInfo, originAttributes);
- Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC, true);
- Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC_OE, !isHttps);
} else if (mConnectionInfo) {
LOG(("nsHttpChannel %p Using channel supplied connection info", this));
- Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC, false);
} else {
LOG(("nsHttpChannel %p Using default connection info", this));
mConnectionInfo = new nsHttpConnectionInfo(host, port, EmptyCString(), mUsername, proxyInfo,
originAttributes, isHttps);
- Telemetry::Accumulate(Telemetry::HTTP_TRANSACTION_USE_ALTSVC, false);
}
// Set network interface id only when it's not empty to avoid
@@ -6837,7 +6733,6 @@ nsHttpChannel::OnStopRequest(nsIRequest *request, nsISupports *ctxt, nsresult st
chanDisposition = static_cast<ChannelDisposition>(chanDisposition + kHttpsCanceled);
}
LOG((" nsHttpChannel::OnStopRequest ChannelDisposition %d\n", chanDisposition));
- Telemetry::Accumulate(Telemetry::HTTP_CHANNEL_DISPOSITION, chanDisposition);
// if needed, check cache entry has all data we expect
if (mCacheEntry && mCachePump &&
@@ -8187,21 +8082,6 @@ nsHttpChannel::ResumeInternal()
}
void
-nsHttpChannel::MaybeWarnAboutAppCache()
-{
- // First, accumulate a telemetry ping about appcache usage.
- Telemetry::Accumulate(Telemetry::HTTP_OFFLINE_CACHE_DOCUMENT_LOAD,
- true);
-
- // Then, issue a deprecation warning.
- nsCOMPtr<nsIDeprecationWarner> warner;
- GetCallback(warner);
- if (warner) {
- warner->IssueWarning(nsIDocument::eAppCache, false);
- }
-}
-
-void
nsHttpChannel::SetDoNotTrack()
{
/**
@@ -8223,129 +8103,7 @@ nsHttpChannel::SetDoNotTrack()
void
nsHttpChannel::ReportNetVSCacheTelemetry()
{
- nsresult rv;
- if (!mCacheEntry) {
- return;
- }
-
- // We only report telemetry if the entry is persistent (on disk)
- bool persistent;
- rv = mCacheEntry->GetPersistent(&persistent);
- if (NS_FAILED(rv) || !persistent) {
- return;
- }
-
- nsXPIDLCString tmpStr;
- rv = mCacheEntry->GetMetaDataElement("net-response-time-onstart",
- getter_Copies(tmpStr));
- if (NS_FAILED(rv)) {
- return;
- }
- uint64_t onStartNetTime = tmpStr.ToInteger64(&rv);
- if (NS_FAILED(rv)) {
- return;
- }
-
- tmpStr.Truncate();
- rv = mCacheEntry->GetMetaDataElement("net-response-time-onstop",
- getter_Copies(tmpStr));
- if (NS_FAILED(rv)) {
- return;
- }
- uint64_t onStopNetTime = tmpStr.ToInteger64(&rv);
- if (NS_FAILED(rv)) {
- return;
- }
-
- uint64_t onStartCacheTime = (mOnStartRequestTimestamp - mAsyncOpenTime).ToMilliseconds();
- int64_t onStartDiff = onStartNetTime - onStartCacheTime;
- onStartDiff += 500; // We offset the difference by 500 ms to report positive values in telemetry
-
- uint64_t onStopCacheTime = (mCacheReadEnd - mAsyncOpenTime).ToMilliseconds();
- int64_t onStopDiff = onStopNetTime - onStopCacheTime;
- onStopDiff += 500; // We offset the difference by 500 ms
-
- if (mDidReval) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_REVALIDATED, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_REVALIDATED, onStopDiff);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_NOTREVALIDATED, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_NOTREVALIDATED, onStopDiff);
- }
-
- if (mDidReval) {
- // We don't report revalidated probes as the data would be skewed.
- return;
- }
-
- uint32_t diskStorageSizeK = 0;
- rv = mCacheEntry->GetDiskStorageSizeInKB(&diskStorageSizeK);
- if (NS_FAILED(rv)) {
- return;
- }
-
- nsAutoCString contentType;
- if (mResponseHead && mResponseHead->HasContentType()) {
- mResponseHead->ContentType(contentType);
- }
- bool isImage = StringBeginsWith(contentType, NS_LITERAL_CSTRING("image/"));
- if (isImage) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_ISIMG, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_ISIMG, onStopDiff);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_NOTIMG, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_NOTIMG, onStopDiff);
- }
-
- if (mCacheOpenWithPriority) {
- if (mCacheQueueSizeWhenOpen < 5) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QSMALL_HIGHPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QSMALL_HIGHPRI, onStopDiff);
- } else if (mCacheQueueSizeWhenOpen < 10) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QMED_HIGHPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QMED_HIGHPRI, onStopDiff);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QBIG_HIGHPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QBIG_HIGHPRI, onStopDiff);
- }
- } else { // The limits are higher for normal priority cache queues
- if (mCacheQueueSizeWhenOpen < 10) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QSMALL_NORMALPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QSMALL_NORMALPRI, onStopDiff);
- } else if (mCacheQueueSizeWhenOpen < 50) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QMED_NORMALPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QMED_NORMALPRI, onStopDiff);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_QBIG_NORMALPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_QBIG_NORMALPRI, onStopDiff);
- }
- }
-
- if (diskStorageSizeK < 32) {
- if (mCacheOpenWithPriority) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_SMALL_HIGHPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_SMALL_HIGHPRI, onStopDiff);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_SMALL_NORMALPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_SMALL_NORMALPRI, onStopDiff);
- }
- } else if (diskStorageSizeK < 256) {
- if (mCacheOpenWithPriority) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_MED_HIGHPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_MED_HIGHPRI, onStopDiff);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_MED_NORMALPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_MED_NORMALPRI, onStopDiff);
- }
- } else {
- if (mCacheOpenWithPriority) {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_LARGE_HIGHPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_LARGE_HIGHPRI, onStopDiff);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTART_LARGE_NORMALPRI, onStartDiff);
- Telemetry::Accumulate(Telemetry::HTTP_NET_VS_CACHE_ONSTOP_LARGE_NORMALPRI, onStopDiff);
- }
- }
+ /* STUB */
}
} // namespace net
diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h
index 3a322e8e2b..2e24d6e81c 100644
--- a/netwerk/protocol/http/nsHttpChannel.h
+++ b/netwerk/protocol/http/nsHttpChannel.h
@@ -452,8 +452,6 @@ private:
void SetPushedStream(Http2PushedStream *stream);
- void MaybeWarnAboutAppCache();
-
void SetDoNotTrack();
private:
diff --git a/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp b/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
index d04f47ddc8..0e7eb55c3b 100644
--- a/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
+++ b/netwerk/protocol/http/nsHttpChannelAuthProvider.cpp
@@ -867,24 +867,6 @@ nsHttpChannelAuthProvider::GetCredentialsForChallenge(const char *challenge,
else if (authFlags & nsIHttpAuthenticator::IDENTITY_ENCRYPTED)
level = nsIAuthPrompt2::LEVEL_PW_ENCRYPTED;
- // Collect statistics on how frequently the various types of HTTP
- // authentication are used over SSL and non-SSL connections.
- if (gHttpHandler->IsTelemetryEnabled()) {
- if (NS_LITERAL_CSTRING("basic").LowerCaseEqualsASCII(authType)) {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS,
- UsingSSL() ? HTTP_AUTH_BASIC_SECURE : HTTP_AUTH_BASIC_INSECURE);
- } else if (NS_LITERAL_CSTRING("digest").LowerCaseEqualsASCII(authType)) {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS,
- UsingSSL() ? HTTP_AUTH_DIGEST_SECURE : HTTP_AUTH_DIGEST_INSECURE);
- } else if (NS_LITERAL_CSTRING("ntlm").LowerCaseEqualsASCII(authType)) {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS,
- UsingSSL() ? HTTP_AUTH_NTLM_SECURE : HTTP_AUTH_NTLM_INSECURE);
- } else if (NS_LITERAL_CSTRING("negotiate").LowerCaseEqualsASCII(authType)) {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_TYPE_STATS,
- UsingSSL() ? HTTP_AUTH_NEGOTIATE_SECURE : HTTP_AUTH_NEGOTIATE_INSECURE);
- }
- }
-
// Depending on the pref setting, the authentication dialog may be
// blocked for all sub-resources, blocked for cross-origin
// sub-resources, or always allowed for sub-resources.
@@ -991,22 +973,6 @@ nsHttpChannelAuthProvider::BlockPrompt()
}
}
- if (gHttpHandler->IsTelemetryEnabled()) {
- if (topDoc) {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS,
- HTTP_AUTH_DIALOG_TOP_LEVEL_DOC);
- } else if (xhr) {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS,
- HTTP_AUTH_DIALOG_XHR);
- } else if (!mCrossOrigin) {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS,
- HTTP_AUTH_DIALOG_SAME_ORIGIN_SUBRESOURCE);
- } else {
- Telemetry::Accumulate(Telemetry::HTTP_AUTH_DIALOG_STATS,
- HTTP_AUTH_DIALOG_CROSS_ORIGIN_SUBRESOURCE);
- }
- }
-
switch (sAuthAllowPref) {
case SUBRESOURCE_AUTH_DIALOG_DISALLOW_ALL:
// Do not open the http-authentication credentials dialog for
diff --git a/netwerk/protocol/http/nsHttpConnection.cpp b/netwerk/protocol/http/nsHttpConnection.cpp
index c4564cd8bc..8ccba76e2c 100644
--- a/netwerk/protocol/http/nsHttpConnection.cpp
+++ b/netwerk/protocol/http/nsHttpConnection.cpp
@@ -19,7 +19,6 @@
#include "ASpdySession.h"
#include "mozilla/ChaosMode.h"
-#include "mozilla/Telemetry.h"
#include "nsHttpConnection.h"
#include "nsHttpHandler.h"
#include "nsHttpPipeline.h"
@@ -105,18 +104,12 @@ nsHttpConnection::~nsHttpConnection()
if (!mEverUsedSpdy) {
LOG(("nsHttpConnection %p performed %d HTTP/1.x transactions\n",
this, mHttp1xTransactionCount));
- Telemetry::Accumulate(Telemetry::HTTP_REQUEST_PER_CONN,
- mHttp1xTransactionCount);
}
if (mTotalBytesRead) {
uint32_t totalKBRead = static_cast<uint32_t>(mTotalBytesRead >> 10);
LOG(("nsHttpConnection %p read %dkb on connection spdy=%d\n",
this, totalKBRead, mEverUsedSpdy));
- Telemetry::Accumulate(mEverUsedSpdy ?
- Telemetry::SPDY_KBREAD_PER_CONN :
- Telemetry::HTTP_KBREAD_PER_CONN,
- totalKBRead);
}
if (mForceSendTimer) {
mForceSendTimer->Cancel();
@@ -482,21 +475,6 @@ nsHttpConnection::EnsureNPNComplete(nsresult &aOut0RTTWriteHandshakeValue,
int16_t tlsVersion;
ssl->GetSSLVersionUsed(&tlsVersion);
- // Send the 0RTT telemetry only for tls1.3
- if (tlsVersion > nsISSLSocketControl::TLS_VERSION_1_2) {
- Telemetry::Accumulate(Telemetry::TLS_EARLY_DATA_NEGOTIATED,
- (!mEarlyDataNegotiated) ? TLS_EARLY_DATA_NOT_AVAILABLE
- : ((mWaitingFor0RTTResponse) ? TLS_EARLY_DATA_AVAILABLE_AND_USED
- : TLS_EARLY_DATA_AVAILABLE_BUT_NOT_USED));
- if (mWaitingFor0RTTResponse) {
- Telemetry::Accumulate(Telemetry::TLS_EARLY_DATA_ACCEPTED,
- earlyDataAccepted);
- }
- if (earlyDataAccepted) {
- Telemetry::Accumulate(Telemetry::TLS_EARLY_DATA_BYTES_WRITTEN,
- mContentBytesWritten0RTT);
- }
- }
mWaitingFor0RTTResponse = false;
if (!earlyDataAccepted) {
@@ -518,8 +496,6 @@ nsHttpConnection::EnsureNPNComplete(nsresult &aOut0RTTWriteHandshakeValue,
StartSpdy(mSpdySession->SpdyVersion());
}
}
-
- Telemetry::Accumulate(Telemetry::SPDY_NPN_CONNECT, UsingSpdy());
}
npnComplete:
diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.cpp b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
index 9271b49af4..731cdff394 100644
--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
@@ -23,7 +23,6 @@
#include "mozilla/net/DNS.h"
#include "nsISocketTransport.h"
#include "nsISSLSocketControl.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/net/DashboardTypes.h"
#include "NullHttpTransaction.h"
#include "nsIDNSRecord.h"
@@ -847,7 +846,6 @@ nsHttpConnectionMgr::GetSpdyPreferredEnt(nsConnectionEntry *aOriginalEntry)
"with %s connections. rv=%x isJoined=%d",
preferred->mConnInfo->Origin(), aOriginalEntry->mConnInfo->Origin(),
rv, isJoined));
- Telemetry::Accumulate(Telemetry::SPDY_NPN_JOIN, false);
return nullptr;
}
@@ -857,7 +855,6 @@ nsHttpConnectionMgr::GetSpdyPreferredEnt(nsConnectionEntry *aOriginalEntry)
"so %s will be coalesced with %s",
preferred->mConnInfo->Origin(), aOriginalEntry->mConnInfo->Origin(),
aOriginalEntry->mConnInfo->Origin(), preferred->mConnInfo->Origin()));
- Telemetry::Accumulate(Telemetry::SPDY_NPN_JOIN, true);
return preferred;
}
@@ -1835,16 +1832,7 @@ nsHttpConnectionMgr::BuildPipeline(nsConnectionEntry *ent,
void
nsHttpConnectionMgr::ReportProxyTelemetry(nsConnectionEntry *ent)
{
- enum { PROXY_NONE = 1, PROXY_HTTP = 2, PROXY_SOCKS = 3, PROXY_HTTPS = 4 };
-
- if (!ent->mConnInfo->UsingProxy())
- Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_NONE);
- else if (ent->mConnInfo->UsingHttpsProxy())
- Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_HTTPS);
- else if (ent->mConnInfo->UsingHttpProxy())
- Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_HTTP);
- else
- Telemetry::Accumulate(Telemetry::HTTP_PROXY_TYPE, PROXY_SOCKS);
+ /* STUB */
}
nsresult
@@ -3107,8 +3095,6 @@ nsHalfOpenSocket::SetupStreams(nsISocketTransport **transport,
rv = socketTransport->SetSecurityCallbacks(this);
NS_ENSURE_SUCCESS(rv, rv);
- Telemetry::Accumulate(Telemetry::HTTP_CONNECTION_ENTRY_CACHE_HIT_1,
- mEnt->mUsedForConnection);
mEnt->mUsedForConnection = true;
nsCOMPtr<nsIOutputStream> sout;
diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp
index f9bcc391db..6d58a7004e 100644
--- a/netwerk/protocol/http/nsHttpHandler.cpp
+++ b/netwerk/protocol/http/nsHttpHandler.cpp
@@ -58,7 +58,6 @@
#include "mozilla/net/NeckoChild.h"
#include "mozilla/net/NeckoParent.h"
#include "mozilla/ipc/URIUtils.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Unused.h"
#include "mozilla/BasePrincipal.h"
@@ -203,6 +202,7 @@ nsHttpHandler::nsHttpHandler()
, mCompatFirefoxEnabled(false)
, mCompatFirefoxVersion("52.9")
, mUserAgentIsDirty(true)
+ , mAcceptLanguagesIsDirty(true)
, mPromptTempRedirect(true)
, mEnablePersistentHttpsCaching(false)
, mDoNotTrackEnabled(false)
@@ -419,6 +419,7 @@ nsHttpHandler::Init()
obsService->AddObserver(this, "browser:purge-session-history", true);
obsService->AddObserver(this, NS_NETWORK_LINK_TOPIC, true);
obsService->AddObserver(this, "application-background", true);
+ obsService->AddObserver(this, "string-bundles-have-flushed", true);
}
MakeNewRequestTokenBucket();
@@ -489,8 +490,13 @@ nsHttpHandler::AddStandardRequestHeaders(nsHttpRequestHead *request, bool isSecu
// Add the "Accept-Language" header. This header is also exposed to the
// service worker.
+ if (mAcceptLanguagesIsDirty) {
+ rv = SetAcceptLanguages();
+ MOZ_ASSERT(NS_SUCCEEDED(rv));
+ }
+
+ // Add the "Accept-Language" header
if (!mAcceptLanguages.IsEmpty()) {
- // Add the "Accept-Language" header
rv = request->SetHeader(nsHttp::Accept_Language, mAcceptLanguages,
false,
nsHttpHeaderArray::eVarietyRequestOverride);
@@ -1511,16 +1517,10 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
//
if (PREF_CHANGED(INTL_ACCEPT_LANGUAGES)) {
- nsCOMPtr<nsIPrefLocalizedString> pls;
- prefs->GetComplexValue(INTL_ACCEPT_LANGUAGES,
- NS_GET_IID(nsIPrefLocalizedString),
- getter_AddRefs(pls));
- if (pls) {
- nsXPIDLString uval;
- pls->ToString(getter_Copies(uval));
- if (uval)
- SetAcceptLanguages(NS_ConvertUTF16toUTF8(uval).get());
- }
+ // We don't want to set the new accept languages here since
+ // this pref is a complex type and it may be racy with flushing
+ // string resources.
+ mAcceptLanguagesIsDirty = true;
}
//
@@ -1897,12 +1897,18 @@ PrepareAcceptLanguages(const char *i_AcceptLanguages, nsACString &o_AcceptLangua
}
nsresult
-nsHttpHandler::SetAcceptLanguages(const char *aAcceptLanguages)
+nsHttpHandler::SetAcceptLanguages()
{
+ mAcceptLanguagesIsDirty = false;
+
+ const nsAdoptingCString& acceptLanguages =
+ Preferences::GetLocalizedCString(INTL_ACCEPT_LANGUAGES);
+
nsAutoCString buf;
- nsresult rv = PrepareAcceptLanguages(aAcceptLanguages, buf);
- if (NS_SUCCEEDED(rv))
+ nsresult rv = PrepareAcceptLanguages(acceptLanguages.get(), buf);
+ if (NS_SUCCEEDED(rv)) {
mAcceptLanguages.Assign(buf);
+ }
return rv;
}
@@ -2175,11 +2181,6 @@ nsHttpHandler::Observe(nsISupports *subject,
// depend on this value.
mSessionStartTime = NowInSeconds();
- if (!mDoNotTrackEnabled) {
- Telemetry::Accumulate(Telemetry::DNT_USAGE, 2);
- } else {
- Telemetry::Accumulate(Telemetry::DNT_USAGE, 1);
- }
} else if (!strcmp(topic, "profile-change-net-restore")) {
// initialize connection manager
InitConnectionMgr();
@@ -2233,6 +2234,8 @@ nsHttpHandler::Observe(nsISupports *subject,
if (mConnMgr) {
mConnMgr->DoShiftReloadConnectionCleanup(nullptr);
}
+ } else if (!strcmp(topic, "string-bundles-have-flushed")) {
+ mAcceptLanguagesIsDirty = true;
}
return NS_OK;
diff --git a/netwerk/protocol/http/nsHttpHandler.h b/netwerk/protocol/http/nsHttpHandler.h
index 0904af8939..848dd25b1e 100644
--- a/netwerk/protocol/http/nsHttpHandler.h
+++ b/netwerk/protocol/http/nsHttpHandler.h
@@ -384,7 +384,7 @@ private:
void PrefsChanged(nsIPrefBranch *prefs, const char *pref);
nsresult SetAccept(const char *);
- nsresult SetAcceptLanguages(const char *);
+ nsresult SetAcceptLanguages();
nsresult SetAcceptEncodings(const char *, bool mIsSecure);
nsresult InitConnectionMgr();
@@ -491,6 +491,7 @@ private:
nsCString mUserAgent;
nsXPIDLCString mUserAgentOverride;
bool mUserAgentIsDirty; // true if mUserAgent should be rebuilt
+ bool mAcceptLanguagesIsDirty;
bool mPromptTempRedirect;
diff --git a/netwerk/protocol/websocket/WebSocketChannel.cpp b/netwerk/protocol/websocket/WebSocketChannel.cpp
index c6dc8d3280..1bcdbcacca 100644
--- a/netwerk/protocol/websocket/WebSocketChannel.cpp
+++ b/netwerk/protocol/websocket/WebSocketChannel.cpp
@@ -55,7 +55,6 @@
#include "nsNetUtil.h"
#include "nsINode.h"
#include "mozilla/StaticMutex.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/TimeStamp.h"
#include "nsSocketTransportService2.h"
@@ -2989,7 +2988,6 @@ WebSocketChannel::ReportConnectionTelemetry()
(didProxy ? (1 << 0) : 0);
LOG(("WebSocketChannel::ReportConnectionTelemetry() %p %d", this, value));
- Telemetry::Accumulate(Telemetry::WEBSOCKETS_HANDSHAKE_TYPE, value);
}
// nsIDNSListener
diff --git a/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp b/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp
index 4fc36928ac..b9f912d1d4 100644
--- a/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp
+++ b/netwerk/system/linux/nsNotifyAddrListener_Linux.cpp
@@ -24,7 +24,6 @@
#include "mozilla/Services.h"
#include "mozilla/SHA1.h"
#include "mozilla/Sprintf.h"
-#include "mozilla/Telemetry.h"
/* a shorter name that better explains what it does */
#define EINTR_RETRY(x) MOZ_TEMP_FAILURE_RETRY(x)
@@ -176,12 +175,10 @@ void nsNotifyAddrListener::calculateNetworkId(void)
LOG(("networkid: id %s\n", output.get()));
if (mNetworkId != output) {
// new id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 1);
mNetworkId = output;
}
else {
// same id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 2);
}
found = true;
break;
@@ -195,7 +192,6 @@ void nsNotifyAddrListener::calculateNetworkId(void)
} /* if (froute) */
if (!found) {
// no id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 0);
}
}
diff --git a/netwerk/system/mac/nsNetworkLinkService.mm b/netwerk/system/mac/nsNetworkLinkService.mm
index ac6a015fbe..5b2d7575ac 100644
--- a/netwerk/system/mac/nsNetworkLinkService.mm
+++ b/netwerk/system/mac/nsNetworkLinkService.mm
@@ -24,7 +24,6 @@
#include "mozilla/Preferences.h"
#include "mozilla/SHA1.h"
#include "mozilla/Base64.h"
-#include "mozilla/Telemetry.h"
#include "nsNetworkLinkService.h"
#import <Cocoa/Cocoa.h>
@@ -274,19 +273,16 @@ void nsNetworkLinkService::calculateNetworkId(void)
LOG(("networkid: id %s\n", output.get()));
if (mNetworkId != output) {
// new id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 1);
mNetworkId = output;
}
else {
// same id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 2);
}
found = true;
}
}
if (!found) {
// no id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 0);
}
}
diff --git a/netwerk/system/win32/nsNotifyAddrListener.cpp b/netwerk/system/win32/nsNotifyAddrListener.cpp
index 5d1ec3a61f..58f4345ef8 100644
--- a/netwerk/system/win32/nsNotifyAddrListener.cpp
+++ b/netwerk/system/win32/nsNotifyAddrListener.cpp
@@ -35,7 +35,6 @@
#include "mozilla/Preferences.h"
#include "mozilla/SHA1.h"
#include "mozilla/Base64.h"
-#include "mozilla/Telemetry.h"
#include <iptypes.h>
#include <iphlpapi.h>
@@ -218,12 +217,10 @@ bool nsNotifyAddrListener::findMac(char *gateway)
LOG(("networkid: id %s\n", output.get()));
if (mNetworkId != output) {
// new id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 1);
mNetworkId = output;
}
else {
// same id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 2);
}
found = true;
break;
@@ -290,7 +287,6 @@ void nsNotifyAddrListener::calculateNetworkId(void)
}
if (!found) {
// no id
- Telemetry::Accumulate(Telemetry::NETWORK_ID, 0);
}
}
diff --git a/netwerk/test/unit/test_be_conservative.js b/netwerk/test/unit/test_be_conservative.js
index 2c6ac46ad5..36b6d3b90f 100644
--- a/netwerk/test/unit/test_be_conservative.js
+++ b/netwerk/test/unit/test_be_conservative.js
@@ -140,7 +140,6 @@ function startServer(cert, minServerVersion, maxServerVersion) {
tlsServer.init(-1, true, -1);
tlsServer.serverCert = cert;
tlsServer.setVersionRange(minServerVersion, maxServerVersion);
- tlsServer.setSessionCache(false);
tlsServer.setSessionTickets(false);
tlsServer.asyncListen(new ServerSocketListener());
return tlsServer;
diff --git a/netwerk/test/unit/test_tls_server.js b/netwerk/test/unit/test_tls_server.js
index d805359c7b..12154a27fe 100644
--- a/netwerk/test/unit/test_tls_server.js
+++ b/netwerk/test/unit/test_tls_server.js
@@ -90,7 +90,6 @@ function startServer(cert, expectingPeerCert, clientCertificateConfig,
onStopListening: function() {}
};
- tlsServer.setSessionCache(false);
tlsServer.setSessionTickets(false);
tlsServer.setRequestClientCertificate(clientCertificateConfig);
diff --git a/netwerk/test/unit/test_tls_server_multiple_clients.js b/netwerk/test/unit/test_tls_server_multiple_clients.js
index b63c0189bd..74b814e9cf 100644
--- a/netwerk/test/unit/test_tls_server_multiple_clients.js
+++ b/netwerk/test/unit/test_tls_server_multiple_clients.js
@@ -67,7 +67,6 @@ function startServer(cert) {
onStopListening: function() {}
};
- tlsServer.setSessionCache(true);
tlsServer.setSessionTickets(false);
tlsServer.asyncListen(listener);
diff --git a/old-configure.in b/old-configure.in
index a95b307f21..96bb934e12 100644
--- a/old-configure.in
+++ b/old-configure.in
@@ -2044,7 +2044,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
_USE_SYSTEM_NSS=1 )
if test -n "$_USE_SYSTEM_NSS"; then
- AM_PATH_NSS(3.36.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+ AM_PATH_NSS(3.38, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
fi
if test -z "$MOZ_SYSTEM_NSS"; then
@@ -3542,11 +3542,15 @@ dnl = FFmpeg's ffvpx configuration
dnl ========================================================
MOZ_FFVPX=
-case "$CPU_ARCH" in
- x86)
+
+dnl Build ffvpx on 32-bit Windows and all supported 64-bit platforms.
+dnl 32-bit *nix has performance issues due to not supporting assembly decoder.
+
+case "$OS_ARCH:$CPU_ARCH" in
+ WINNT:x86)
MOZ_FFVPX=1
;;
- x86_64)
+ *:x86_64)
MOZ_FFVPX=1
;;
esac
@@ -4568,10 +4572,10 @@ AC_SUBST(MOZ_DEVTOOLS_SERVER)
dnl ========================================================
dnl = Disable Mozilla Developer Tools (client)
dnl ========================================================
-MOZ_ARG_DISABLE_BOOL(devtools,
-[ --disable-devtools Disable Mozilla Developer Tools (client)],
- MOZ_DEVTOOLS=,
- MOZ_DEVTOOLS=1)
+MOZ_ARG_ENABLE_BOOL(devtools,
+[ --enable-devtools Enable Mozilla Developer Tools (client)],
+ MOZ_DEVTOOLS=1,
+ MOZ_DEVTOOLS=)
if test -n "$MOZ_DEVTOOLS"; then
if test ! -n "$MOZ_DEVTOOLS_SERVER"; then
diff --git a/parser/html/nsHtml5AtomTable.cpp b/parser/html/nsHtml5AtomTable.cpp
index d523f58b01..ae35791f3f 100644
--- a/parser/html/nsHtml5AtomTable.cpp
+++ b/parser/html/nsHtml5AtomTable.cpp
@@ -24,6 +24,7 @@ nsHtml5AtomEntry::~nsHtml5AtomEntry()
}
nsHtml5AtomTable::nsHtml5AtomTable()
+ : mRecentlyUsedParserAtoms{}
{
#ifdef DEBUG
NS_GetMainThread(getter_AddRefs(mPermittedLookupThread));
@@ -44,13 +45,23 @@ nsHtml5AtomTable::GetAtom(const nsAString& aKey)
NS_ASSERTION(mPermittedLookupThread == currentThread, "Wrong thread!");
}
#endif
+
+ uint32_t index = mozilla::HashString(aKey) % RECENTLY_USED_PARSER_ATOMS_SIZE;
+ nsIAtom* cachedAtom = mRecentlyUsedParserAtoms[index];
+ if (cachedAtom && cachedAtom->Equals(aKey)) {
+ return cachedAtom;
+ }
+
nsIAtom* atom = NS_GetStaticAtom(aKey);
if (atom) {
+ mRecentlyUsedParserAtoms[index] = atom;
return atom;
}
nsHtml5AtomEntry* entry = mTable.PutEntry(aKey);
if (!entry) {
return nullptr;
}
+
+ mRecentlyUsedParserAtoms[index] = entry->GetAtom();
return entry->GetAtom();
}
diff --git a/parser/html/nsHtml5AtomTable.h b/parser/html/nsHtml5AtomTable.h
index 43f9b5f2f2..b0dc2f678e 100644
--- a/parser/html/nsHtml5AtomTable.h
+++ b/parser/html/nsHtml5AtomTable.h
@@ -11,6 +11,8 @@
#include "nsIAtom.h"
#include "nsIThread.h"
+#define RECENTLY_USED_PARSER_ATOMS_SIZE 31
+
class nsHtml5Atom;
class nsHtml5AtomEntry : public nsStringHashKey
@@ -87,6 +89,9 @@ class nsHtml5AtomTable
*/
void Clear()
{
+ for (uint32_t i = 0; i < RECENTLY_USED_PARSER_ATOMS_SIZE; ++i) {
+ mRecentlyUsedParserAtoms[i] = nullptr;
+ }
mTable.Clear();
}
@@ -99,6 +104,7 @@ class nsHtml5AtomTable
private:
nsTHashtable<nsHtml5AtomEntry> mTable;
+ nsIAtom* mRecentlyUsedParserAtoms[RECENTLY_USED_PARSER_ATOMS_SIZE];
#ifdef DEBUG
nsCOMPtr<nsIThread> mPermittedLookupThread;
#endif
diff --git a/python/mozbuild/mozbuild/action/dump_env.py b/python/mozbuild/mozbuild/action/dump_env.py
index a6fa19f3a3..83e420d682 100644
--- a/python/mozbuild/mozbuild/action/dump_env.py
+++ b/python/mozbuild/mozbuild/action/dump_env.py
@@ -6,5 +6,11 @@
# native paths printed on Windows so that these paths can be incorporated
# into Python configure's environment.
import os
+import sys
+
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+
+from shellutil import quote
+
for key, value in os.environ.items():
- print('%s=%s' % (key, value))
+ print('%s=%s' % (key, quote(value)))
diff --git a/security/certverifier/ExtendedValidation.cpp b/security/certverifier/ExtendedValidation.cpp
index 8ac5828de8..37c028c540 100644
--- a/security/certverifier/ExtendedValidation.cpp
+++ b/security/certverifier/ExtendedValidation.cpp
@@ -1285,15 +1285,7 @@ LoadExtendedValidationInfo()
UniqueCERTCertificate cert(CERT_FindCertByIssuerAndSN(nullptr, &ias));
- // If an entry is missing in the NSS root database, it may be because the
- // root database is out of sync with what we expect (e.g. a different
- // version of system NSS is installed).
- if (!cert) {
- // The entries for the debug EV roots are at indices 0 through
- // NUM_TEST_EV_ROOTS - 1. Since they're not built-in, they probably
- // haven't been loaded yet.
- MOZ_ASSERT(iEV < NUM_TEST_EV_ROOTS, "Could not find built-in EV root");
- } else {
+ if (cert) {
unsigned char certFingerprint[SHA256_LENGTH];
srv = PK11_HashBuf(SEC_OID_SHA256, certFingerprint, cert->derCert.data,
AssertedCast<int32_t>(cert->derCert.len));
diff --git a/security/manager/locales/en-US/chrome/pipnss/pipnss.properties b/security/manager/locales/en-US/chrome/pipnss/pipnss.properties
index 9c732ce9de..23d7a323ca 100755
--- a/security/manager/locales/en-US/chrome/pipnss/pipnss.properties
+++ b/security/manager/locales/en-US/chrome/pipnss/pipnss.properties
@@ -279,8 +279,7 @@ certErrorExpiredNow=The certificate expired on %1$S. The current time is %2$S.
# LOCALIZATION NOTE (certErrorNotYetValidNow): Do not translate %1$S (date+time certificate will become valid) or %2$S (current date+time)
certErrorNotYetValidNow=The certificate will not be valid until %1$S. The current time is %2$S.
-# LOCALIZATION NOTE (certErrorCodePrefix2): Do not translate <a id="errorCode" title="%1$S">%1$S</a>
-certErrorCodePrefix2=Error code: <a id="errorCode" title="%1$S">%1$S</a>
+certErrorCodePrefix=(Error code: %S)
P12DefaultNickname=Imported Certificate
CertUnknown=Unknown
diff --git a/security/manager/ssl/DataStorage.cpp b/security/manager/ssl/DataStorage.cpp
index 2d9dbf5c43..c765fed00a 100644
--- a/security/manager/ssl/DataStorage.cpp
+++ b/security/manager/ssl/DataStorage.cpp
@@ -276,9 +276,6 @@ DataStorage::Reader::Run()
}
}
} while (true);
-
- Telemetry::Accumulate(Telemetry::DATA_STORAGE_ENTRIES,
- mDataStorage->mPersistentDataTable.Count());
}
return NS_OK;
diff --git a/security/manager/ssl/SSLServerCertVerification.cpp b/security/manager/ssl/SSLServerCertVerification.cpp
index 4ef79f54a5..757534955d 100644
--- a/security/manager/ssl/SSLServerCertVerification.cpp
+++ b/security/manager/ssl/SSLServerCertVerification.cpp
@@ -567,15 +567,12 @@ CertErrorRunnable::CheckCertOverrides()
// want a ballpark answer, we don't care.
if (mErrorCodeTrust != 0) {
uint32_t probeValue = MapOverridableErrorToProbeValue(mErrorCodeTrust);
- Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, probeValue);
}
if (mErrorCodeMismatch != 0) {
uint32_t probeValue = MapOverridableErrorToProbeValue(mErrorCodeMismatch);
- Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, probeValue);
}
if (mErrorCodeTime != 0) {
uint32_t probeValue = MapOverridableErrorToProbeValue(mErrorCodeTime);
- Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, probeValue);
}
// all errors are covered by override rules, so let's accept the cert
@@ -660,7 +657,6 @@ CreateCertErrorRunnable(CertVerifier& certVerifier,
MOZ_ASSERT(cert);
uint32_t probeValue = MapCertErrorToProbeValue(defaultErrorCodeToReport);
- Telemetry::Accumulate(Telemetry::SSL_CERT_VERIFICATION_ERRORS, probeValue);
uint32_t collected_errors = 0;
PRErrorCode errorCodeTrust = 0;
@@ -869,19 +865,11 @@ void
AccumulateSubjectCommonNameTelemetry(const char* commonName,
bool commonNameInSubjectAltNames)
{
- if (!commonName) {
- // 1 means no common name present
- Telemetry::Accumulate(Telemetry::BR_9_2_2_SUBJECT_COMMON_NAME, 1);
- } else if (!commonNameInSubjectAltNames) {
+ if (!commonNameInSubjectAltNames) {
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,
("BR telemetry: common name '%s' not in subject alt. names "
"(or the subject alt. names extension is not present)\n",
commonName));
- // 2 means the common name is not present in subject alt names
- Telemetry::Accumulate(Telemetry::BR_9_2_2_SUBJECT_COMMON_NAME, 2);
- } else {
- // 0 means the common name is present in subject alt names
- Telemetry::Accumulate(Telemetry::BR_9_2_2_SUBJECT_COMMON_NAME, 0);
}
}
@@ -947,8 +935,6 @@ GatherBaselineRequirementsTelemetry(const UniqueCERTCertList& certList)
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,
("BR telemetry: no subject alt names extension for '%s'\n",
commonName.get()));
- // 1 means there is no subject alt names extension
- Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 1);
AccumulateSubjectCommonNameTelemetry(commonName.get(), false);
return;
}
@@ -960,8 +946,6 @@ GatherBaselineRequirementsTelemetry(const UniqueCERTCertList& certList)
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,
("BR telemetry: could not decode subject alt names for '%s'\n",
commonName.get()));
- // 2 means the subject alt names extension could not be decoded
- Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 2);
AccumulateSubjectCommonNameTelemetry(commonName.get(), false);
return;
}
@@ -1044,24 +1028,6 @@ GatherBaselineRequirementsTelemetry(const UniqueCERTCertList& certList)
currentName = CERT_GetNextGeneralName(currentName);
} while (currentName && currentName != subjectAltNames);
- if (nonDNSNameOrIPAddressPresent) {
- // 3 means there's an entry that isn't an ip address or dns name
- Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 3);
- }
- if (malformedDNSNameOrIPAddressPresent) {
- // 4 means there's a malformed ip address or dns name entry
- Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 4);
- }
- if (nonFQDNPresent) {
- // 5 means there's a DNS name entry with a non-fully-qualified domain name
- Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 5);
- }
- if (!nonDNSNameOrIPAddressPresent && !malformedDNSNameOrIPAddressPresent &&
- !nonFQDNPresent) {
- // 0 means the extension is acceptable
- Telemetry::Accumulate(Telemetry::BR_9_2_1_SUBJECT_ALT_NAMES, 0);
- }
-
AccumulateSubjectCommonNameTelemetry(commonName.get(),
commonNameInSubjectAltNames);
}
@@ -1111,7 +1077,6 @@ GatherEKUTelemetry(const UniqueCERTCertList& certList)
}
if (!foundEKU) {
- Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 0);
return;
}
@@ -1133,18 +1098,6 @@ GatherEKUTelemetry(const UniqueCERTCertList& certList)
foundOther = true;
}
}
-
- // Cases 3 is included only for completeness. It should never
- // appear in these statistics, because CheckExtendedKeyUsage()
- // should require the EKU extension, if present, to contain the
- // value id_kp_serverAuth.
- if (foundServerAuth && !foundOther) {
- Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 1);
- } else if (foundServerAuth && foundOther) {
- Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 2);
- } else if (!foundServerAuth) {
- Telemetry::Accumulate(Telemetry::SSL_SERVER_AUTH_EKU, 3);
- }
}
// Gathers telemetry on which CA is the root of a given cert chain.
@@ -1210,9 +1163,6 @@ GatherEndEntityTelemetry(const UniqueCERTCertList& certList)
if (durationInWeeks > (2 * ONE_YEAR_IN_WEEKS)) {
durationInWeeks = (2 * ONE_YEAR_IN_WEEKS) + 1;
}
-
- Telemetry::Accumulate(Telemetry::SSL_OBSERVED_END_ENTITY_CERTIFICATE_LIFETIME,
- durationInWeeks);
}
// There are various things that we want to measure about certificate
@@ -1229,75 +1179,14 @@ GatherSuccessfulValidationTelemetry(const UniqueCERTCertList& certList)
void
GatherTelemetryForSingleSCT(const ct::SignedCertificateTimestamp& sct)
{
- // See SSL_SCTS_ORIGIN in Histograms.json.
- uint32_t origin = 0;
- switch (sct.origin) {
- case ct::SignedCertificateTimestamp::Origin::Embedded:
- origin = 1;
- break;
- case ct::SignedCertificateTimestamp::Origin::TLSExtension:
- origin = 2;
- break;
- case ct::SignedCertificateTimestamp::Origin::OCSPResponse:
- origin = 3;
- break;
- default:
- MOZ_ASSERT_UNREACHABLE("Unexpected SCT::Origin type");
- }
- Telemetry::Accumulate(Telemetry::SSL_SCTS_ORIGIN, origin);
-
- // See SSL_SCTS_VERIFICATION_STATUS in Histograms.json.
- uint32_t verificationStatus = 0;
- switch (sct.verificationStatus) {
- case ct::SignedCertificateTimestamp::VerificationStatus::OK:
- verificationStatus = 1;
- break;
- case ct::SignedCertificateTimestamp::VerificationStatus::UnknownLog:
- verificationStatus = 2;
- break;
- case ct::SignedCertificateTimestamp::VerificationStatus::InvalidSignature:
- verificationStatus = 3;
- break;
- case ct::SignedCertificateTimestamp::VerificationStatus::InvalidTimestamp:
- verificationStatus = 4;
- break;
- default:
- MOZ_ASSERT_UNREACHABLE("Unexpected SCT::VerificationStatus type");
- }
- Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS,
- verificationStatus);
+/* STUB */
}
void
GatherCertificateTransparencyTelemetry(const UniqueCERTCertList& certList,
const CertificateTransparencyInfo& info)
{
- if (!info.enabled) {
- // No telemetry is gathered when CT is disabled.
- return;
- }
-
- if (!info.processedSCTs) {
- // We didn't receive any SCT data for this connection.
- Telemetry::Accumulate(Telemetry::SSL_SCTS_PER_CONNECTION, 0);
- return;
- }
-
- for (const ct::SignedCertificateTimestamp& sct : info.verifyResult.scts) {
- GatherTelemetryForSingleSCT(sct);
- }
-
- // Decoding errors are reported to the 0th bucket
- // of the SSL_SCTS_VERIFICATION_STATUS enumerated probe.
- for (size_t i = 0; i < info.verifyResult.decodingErrors; ++i) {
- Telemetry::Accumulate(Telemetry::SSL_SCTS_VERIFICATION_STATUS, 0);
- }
-
- // Handle the histogram of SCTs counts.
- uint32_t sctsCount = static_cast<uint32_t>(info.verifyResult.scts.length());
- // Note that sctsCount can be 0 in case we've received SCT binary data,
- // but it failed to parse (e.g. due to unsupported CT protocol version).
- Telemetry::Accumulate(Telemetry::SSL_SCTS_PER_CONNECTION, sctsCount);
+/* STUB */
}
// Note: Takes ownership of |peerCertChain| if SECSuccess is not returned.
@@ -1350,29 +1239,6 @@ AuthCertificate(CertVerifier& certVerifier,
uint32_t evStatus = (rv != Success) ? 0 // 0 = Failure
: (evOidPolicy == SEC_OID_UNKNOWN) ? 1 // 1 = DV
: 2; // 2 = EV
- Telemetry::Accumulate(Telemetry::CERT_EV_STATUS, evStatus);
-
- if (ocspStaplingStatus != CertVerifier::OCSP_STAPLING_NEVER_CHECKED) {
- Telemetry::Accumulate(Telemetry::SSL_OCSP_STAPLING, ocspStaplingStatus);
- }
- if (keySizeStatus != KeySizeStatus::NeverChecked) {
- Telemetry::Accumulate(Telemetry::CERT_CHAIN_KEY_SIZE_STATUS,
- static_cast<uint32_t>(keySizeStatus));
- }
- if (sha1ModeResult != SHA1ModeResult::NeverChecked) {
- Telemetry::Accumulate(Telemetry::CERT_CHAIN_SHA1_POLICY_STATUS,
- static_cast<uint32_t>(sha1ModeResult));
- }
-
- if (pinningTelemetryInfo.accumulateForRoot) {
- Telemetry::Accumulate(Telemetry::CERT_PINNING_FAILURES_BY_CA,
- pinningTelemetryInfo.rootBucket);
- }
-
- if (pinningTelemetryInfo.accumulateResult) {
- Telemetry::Accumulate(pinningTelemetryInfo.certPinningResultHistogram,
- pinningTelemetryInfo.certPinningResultBucket);
- }
if (rv == Success) {
// Certificate verification succeeded. Delete any potential record of
@@ -1517,7 +1383,6 @@ SSLServerCertVerificationJob::Run()
new SSLServerCertVerificationResult(mInfoObject, 0,
successTelemetry, interval));
restart->Dispatch();
- Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, 1);
return NS_OK;
}
@@ -1527,7 +1392,6 @@ SSLServerCertVerificationJob::Run()
{
TimeStamp now = TimeStamp::Now();
MutexAutoLock telemetryMutex(*gSSLVerificationTelemetryMutex);
- Telemetry::AccumulateTimeDelta(failureTelemetry, mJobStartTime, now);
}
if (error != 0) {
RefPtr<CertErrorRunnable> runnable(
@@ -1694,7 +1558,6 @@ AuthCertificateHook(void* arg, PRFileDesc* fd, PRBool checkSig, PRBool isServer)
MOZ_ASSERT(peerCertChain || rv != SECSuccess,
"AuthCertificate() should take ownership of chain on failure");
if (rv == SECSuccess) {
- Telemetry::Accumulate(Telemetry::SSL_CERT_ERROR_OVERRIDES, 1);
return SECSuccess;
}
@@ -1782,10 +1645,6 @@ SSLServerCertVerificationResult::Dispatch()
NS_IMETHODIMP
SSLServerCertVerificationResult::Run()
{
- // TODO: Assert that we're on the socket transport thread
- if (mTelemetryID != Telemetry::HistogramCount) {
- Telemetry::Accumulate(mTelemetryID, mTelemetryValue);
- }
// XXX: This cast will be removed by the next patch
((nsNSSSocketInfo*) mInfoObject.get())
->SetCertVerificationResult(mErrorCode, mErrorMessageType);
diff --git a/security/manager/ssl/TransportSecurityInfo.cpp b/security/manager/ssl/TransportSecurityInfo.cpp
index fe39f40171..0e2238ad02 100644
--- a/security/manager/ssl/TransportSecurityInfo.cpp
+++ b/security/manager/ssl/TransportSecurityInfo.cpp
@@ -854,7 +854,7 @@ AppendErrorTextCode(PRErrorCode errorCodeToReport,
nsString formattedString;
nsresult rv;
- rv = component->PIPBundleFormatStringFromName("certErrorCodePrefix2",
+ rv = component->PIPBundleFormatStringFromName("certErrorCodePrefix",
params, 1,
formattedString);
if (NS_SUCCEEDED(rv)) {
diff --git a/security/manager/ssl/nsKeygenHandler.cpp b/security/manager/ssl/nsKeygenHandler.cpp
index c4529f8775..9196e200c0 100644
--- a/security/manager/ssl/nsKeygenHandler.cpp
+++ b/security/manager/ssl/nsKeygenHandler.cpp
@@ -399,48 +399,7 @@ loser:
void
GatherKeygenTelemetry(uint32_t keyGenMechanism, int keysize, char* curve)
{
- if (keyGenMechanism == CKM_RSA_PKCS_KEY_PAIR_GEN) {
- if (keysize > 8196 || keysize < 0) {
- return;
- }
-
- nsCString telemetryValue("rsa");
- telemetryValue.AppendPrintf("%d", keysize);
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, telemetryValue);
- } else if (keyGenMechanism == CKM_EC_KEY_PAIR_GEN) {
- nsCString secp384r1 = NS_LITERAL_CSTRING("secp384r1");
- nsCString secp256r1 = NS_LITERAL_CSTRING("secp256r1");
-
- mozilla::UniqueSECItem decoded = DecodeECParams(curve);
- if (!decoded) {
- switch (keysize) {
- case 2048:
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp384r1);
- break;
- case 1024:
- case 512:
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp256r1);
- break;
- }
- } else {
- if (secp384r1.EqualsIgnoreCase(curve, secp384r1.Length())) {
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp384r1);
- } else if (secp256r1.EqualsIgnoreCase(curve, secp256r1.Length())) {
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, secp256r1);
- } else {
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::KEYGEN_GENERATED_KEY_TYPE, NS_LITERAL_CSTRING("other_ec"));
- }
- }
- } else {
- MOZ_CRASH("Unknown keygen algorithm");
- return;
- }
+/* STUB */
}
nsresult
diff --git a/security/manager/ssl/nsNSSCallbacks.cpp b/security/manager/ssl/nsNSSCallbacks.cpp
index 9411012651..6bac59f519 100644
--- a/security/manager/ssl/nsNSSCallbacks.cpp
+++ b/security/manager/ssl/nsNSSCallbacks.cpp
@@ -490,31 +490,6 @@ nsNSSHttpRequestSession::internal_send_receive_attempt(bool &retryable_error,
}
}
- if (!event->mStartTime.IsNull()) {
- if (request_canceled) {
- Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 0);
- Telemetry::AccumulateTimeDelta(
- Telemetry::CERT_VALIDATION_HTTP_REQUEST_CANCELED_TIME,
- event->mStartTime, TimeStamp::Now());
- }
- else if (NS_SUCCEEDED(mListener->mResultCode) &&
- mListener->mHttpResponseCode == 200) {
- Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 1);
- Telemetry::AccumulateTimeDelta(
- Telemetry::CERT_VALIDATION_HTTP_REQUEST_SUCCEEDED_TIME,
- event->mStartTime, TimeStamp::Now());
- }
- else {
- Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 2);
- Telemetry::AccumulateTimeDelta(
- Telemetry::CERT_VALIDATION_HTTP_REQUEST_FAILED_TIME,
- event->mStartTime, TimeStamp::Now());
- }
- }
- else {
- Telemetry::Accumulate(Telemetry::CERT_VALIDATION_HTTP_REQUEST_RESULT, 3);
- }
-
if (request_canceled) {
return Result::ERROR_OCSP_SERVER_ERROR;
}
@@ -996,7 +971,6 @@ PreliminaryHandshakeDone(PRFileDesc* fd)
} else {
infoObject->SetNegotiatedNPN(nullptr, 0);
}
- mozilla::Telemetry::Accumulate(Telemetry::SSL_NPN_TYPE, state);
} else {
infoObject->SetNegotiatedNPN(nullptr, 0);
}
@@ -1091,9 +1065,6 @@ CanFalseStartCallback(PRFileDesc* fd, void* client_data, PRBool *canFalseStart)
}
}
- Telemetry::Accumulate(Telemetry::SSL_REASONS_FOR_NOT_FALSE_STARTING,
- reasonsForNotFalseStarting);
-
if (reasonsForNotFalseStarting == 0) {
*canFalseStart = PR_TRUE;
infoObject->SetFalseStarted();
@@ -1118,7 +1089,6 @@ AccumulateNonECCKeySize(Telemetry::ID probe, uint32_t bits)
: bits < 8192 ? 17 : bits == 8192 ? 18
: bits < 16384 ? 19 : bits == 16384 ? 20
: 0;
- Telemetry::Accumulate(probe, value);
}
// XXX: This attempts to map a bit count to an ECC named curve identifier. In
@@ -1134,7 +1104,6 @@ AccumulateECCCurve(Telemetry::ID probe, uint32_t bits)
: bits == 384 ? 24 // P-384
: bits == 521 ? 25 // P-521
: 0; // Unknown
- Telemetry::Accumulate(probe, value);
}
static void
@@ -1197,7 +1166,6 @@ AccumulateCipherSuite(Telemetry::ID probe, const SSLChannelInfo& channelInfo)
break;
}
MOZ_ASSERT(value != 0);
- Telemetry::Accumulate(probe, value);
}
// In the case of session resumption, the AuthCertificate hook has been bypassed
@@ -1318,7 +1286,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) {
// 1=tls1, 2=tls1.1, 3=tls1.2
unsigned int versionEnum = channelInfo.protocolVersion & 0xFF;
MOZ_ASSERT(versionEnum > 0);
- Telemetry::Accumulate(Telemetry::SSL_HANDSHAKE_VERSION, versionEnum);
AccumulateCipherSuite(
infoObject->IsFullHandshake() ? Telemetry::SSL_CIPHER_SUITE_FULL
: Telemetry::SSL_CIPHER_SUITE_RESUMED,
@@ -1331,13 +1298,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) {
if (rv == SECSuccess) {
usesFallbackCipher = channelInfo.keaType == ssl_kea_dh;
- // keyExchange null=0, rsa=1, dh=2, fortezza=3, ecdh=4
- Telemetry::Accumulate(
- infoObject->IsFullHandshake()
- ? Telemetry::SSL_KEY_EXCHANGE_ALGORITHM_FULL
- : Telemetry::SSL_KEY_EXCHANGE_ALGORITHM_RESUMED,
- channelInfo.keaType);
-
MOZ_ASSERT(infoObject->GetKEAUsed() == channelInfo.keaType);
if (infoObject->IsFullHandshake()) {
@@ -1359,9 +1319,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) {
break;
}
- Telemetry::Accumulate(Telemetry::SSL_AUTH_ALGORITHM_FULL,
- channelInfo.authType);
-
// RSA key exchange doesn't use a signature for auth.
if (channelInfo.keaType != ssl_kea_rsa) {
switch (channelInfo.authType) {
@@ -1380,12 +1337,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) {
}
}
}
-
- Telemetry::Accumulate(
- infoObject->IsFullHandshake()
- ? Telemetry::SSL_SYMMETRIC_CIPHER_FULL
- : Telemetry::SSL_SYMMETRIC_CIPHER_RESUMED,
- cipherInfo.symCipher);
}
}
diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp
index 025f4bda24..4fc8c142ef 100644
--- a/security/manager/ssl/nsNSSComponent.cpp
+++ b/security/manager/ssl/nsNSSComponent.cpp
@@ -805,29 +805,22 @@ nsNSSComponent::MaybeEnableFamilySafetyCompatibility()
if (familySafetyMode > 2) {
familySafetyMode = 0;
}
- Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, familySafetyMode);
if (familySafetyMode == 0) {
return;
}
bool familySafetyEnabled;
nsresult rv = AccountHasFamilySafetyEnabled(familySafetyEnabled);
if (NS_FAILED(rv)) {
- Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 3);
return;
}
if (!familySafetyEnabled) {
- Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 4);
return;
}
- Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 5);
if (familySafetyMode == 2) {
rv = LoadFamilySafetyRoot();
if (NS_FAILED(rv)) {
- Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 6);
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,
("failed to load Family Safety root"));
- } else {
- Telemetry::Accumulate(Telemetry::FAMILY_SAFETY, 7);
}
}
#endif // XP_WIN
@@ -1376,12 +1369,18 @@ static const CipherPref sCipherPrefs[] = {
TLS_RSA_WITH_AES_256_CBC_SHA, true },
// Expensive/deprecated/weak
+// Deprecated
{ "security.ssl3.rsa_aes_128_gcm_sha256",
TLS_RSA_WITH_AES_128_GCM_SHA256, false }, // Deprecated
{ "security.ssl3.rsa_aes_128_sha256",
TLS_RSA_WITH_AES_128_CBC_SHA256, false }, // Deprecated
+// Weak/vulnerable
{ "security.ssl3.rsa_des_ede3_sha",
- TLS_RSA_WITH_3DES_EDE_CBC_SHA, false }, // Weak (3DES)
+ TLS_RSA_WITH_3DES_EDE_CBC_SHA, false, true }, // Weak (3DES)
+ { "security.ssl3.rsa_rc4_128_sha",
+ TLS_RSA_WITH_RC4_128_SHA, false, true }, // RC4
+ { "security.ssl3.rsa_rc4_128_md5",
+ TLS_RSA_WITH_RC4_128_MD5, false, true }, // RC4, HMAC-MD5
// All the rest are disabled
@@ -1391,8 +1390,8 @@ static const CipherPref sCipherPrefs[] = {
// Bit flags indicating what weak ciphers are enabled.
// The bit index will correspond to the index in sCipherPrefs.
// Wrtten by the main thread, read from any threads.
-static Atomic<uint32_t> sEnabledWeakCiphers;
-static_assert(MOZ_ARRAY_LENGTH(sCipherPrefs) - 1 <= sizeof(uint32_t) * CHAR_BIT,
+static uint64_t sEnabledWeakCiphers;
+static_assert(MOZ_ARRAY_LENGTH(sCipherPrefs) - 1 <= sizeof(uint64_t) * CHAR_BIT,
"too many cipher suites");
/*static*/ bool
@@ -1404,10 +1403,10 @@ nsNSSComponent::AreAnyWeakCiphersEnabled()
/*static*/ void
nsNSSComponent::UseWeakCiphersOnSocket(PRFileDesc* fd)
{
- const uint32_t enabledWeakCiphers = sEnabledWeakCiphers;
+ const uint64_t enabledWeakCiphers = sEnabledWeakCiphers;
const CipherPref* const cp = sCipherPrefs;
for (size_t i = 0; cp[i].pref; ++i) {
- if (enabledWeakCiphers & ((uint32_t)1 << i)) {
+ if (enabledWeakCiphers & ((uint64_t)1 << i)) {
SSL_CipherPrefSet(fd, cp[i].id, true);
}
}
@@ -1534,11 +1533,11 @@ CipherSuiteChangeObserver::Observe(nsISupports* aSubject,
// are enabled in prefs. They are only used on specific
// sockets as a part of a fallback mechanism.
// Only the main thread will change sEnabledWeakCiphers.
- uint32_t enabledWeakCiphers = sEnabledWeakCiphers;
+ uint64_t enabledWeakCiphers = sEnabledWeakCiphers;
if (cipherEnabled) {
- enabledWeakCiphers |= ((uint32_t)1 << i);
+ enabledWeakCiphers |= ((uint64_t)1 << i);
} else {
- enabledWeakCiphers &= ~((uint32_t)1 << i);
+ enabledWeakCiphers &= ~((uint64_t)1 << i);
}
sEnabledWeakCiphers = enabledWeakCiphers;
} else {
@@ -1574,13 +1573,6 @@ void nsNSSComponent::setValidationOptions(bool isInitialSetting,
bool ocspRequired = ocspEnabled &&
Preferences::GetBool("security.OCSP.require", false);
- // We measure the setting of the pref at startup only to minimize noise by
- // addons that may muck with the settings, though it probably doesn't matter.
- if (isInitialSetting) {
- Telemetry::Accumulate(Telemetry::CERT_OCSP_ENABLED, ocspEnabled);
- Telemetry::Accumulate(Telemetry::CERT_OCSP_REQUIRED, ocspRequired);
- }
-
bool ocspStaplingEnabled = Preferences::GetBool("security.ssl.enable_ocsp_stapling",
true);
PublicSSLState()->SetOCSPStaplingEnabled(ocspStaplingEnabled);
@@ -1932,20 +1924,6 @@ nsNSSComponent::InitializeNSS()
return NS_ERROR_FAILURE;
}
- // TLSServerSocket may be run with the session cache enabled. It is necessary
- // to call this once before that can happen. This specifies a maximum of 1000
- // cache entries (the default number of cache entries is 10000, which seems a
- // little excessive as there probably won't be that many clients connecting to
- // any TLSServerSockets the browser runs.)
- // Note that this must occur before any calls to SSL_ClearSessionCache
- // (otherwise memory will leak).
- if (SSL_ConfigServerSessionIDCache(1000, 0, 0, nullptr) != SECSuccess) {
-#ifdef ANDROID
- MOZ_RELEASE_ASSERT(false);
-#endif
- return NS_ERROR_FAILURE;
- }
-
// ensure the CertBlocklist is initialised
nsCOMPtr<nsICertBlocklist> certList = do_GetService(NS_CERTBLOCKLIST_CONTRACTID);
#ifdef ANDROID
@@ -1986,9 +1964,6 @@ nsNSSComponent::InitializeNSS()
return NS_ERROR_FAILURE;
}
- if (PK11_IsFIPS()) {
- Telemetry::Accumulate(Telemetry::FIPS_ENABLED, true);
- }
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("NSS Initialization done\n"));
return NS_OK;
}
@@ -2476,7 +2451,7 @@ InitializeCipherSuite()
}
// Now only set SSL/TLS ciphers we knew about at compile time
- uint32_t enabledWeakCiphers = 0;
+ uint64_t enabledWeakCiphers = 0;
const CipherPref* const cp = sCipherPrefs;
for (size_t i = 0; cp[i].pref; ++i) {
bool cipherEnabled = Preferences::GetBool(cp[i].pref,
@@ -2485,7 +2460,7 @@ InitializeCipherSuite()
// Weak ciphers are not used by default. See the comment
// in CipherSuiteChangeObserver::Observe for details.
if (cipherEnabled) {
- enabledWeakCiphers |= ((uint32_t)1 << i);
+ enabledWeakCiphers |= ((uint64_t)1 << i);
}
} else {
SSL_CipherPrefSetDefault(cp[i].id, cipherEnabled);
diff --git a/security/manager/ssl/nsNSSErrors.cpp b/security/manager/ssl/nsNSSErrors.cpp
index fc8bd3e318..1613eb4e7a 100644
--- a/security/manager/ssl/nsNSSErrors.cpp
+++ b/security/manager/ssl/nsNSSErrors.cpp
@@ -84,7 +84,7 @@ nsNSSErrors::getErrorMessageFromCode(PRErrorCode err,
params[0] = idU.get();
nsString formattedString;
- rv = component->PIPBundleFormatStringFromName("certErrorCodePrefix2",
+ rv = component->PIPBundleFormatStringFromName("certErrorCodePrefix",
params, 1,
formattedString);
if (NS_SUCCEEDED(rv)) {
diff --git a/security/manager/ssl/nsNSSIOLayer.cpp b/security/manager/ssl/nsNSSIOLayer.cpp
index 2d49540fbd..93fca396b1 100644
--- a/security/manager/ssl/nsNSSIOLayer.cpp
+++ b/security/manager/ssl/nsNSSIOLayer.cpp
@@ -237,9 +237,6 @@ nsNSSSocketInfo::NoteTimeUntilReady()
mNotedTimeUntilReady = true;
- // This will include TCP and proxy tunnel wait time
- Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_READY,
- mSocketCreationTimestamp, TimeStamp::Now());
MOZ_LOG(gPIPNSSLog, LogLevel::Debug,
("[%p] nsNSSSocketInfo::NoteTimeUntilReady\n", mFd));
}
@@ -259,16 +256,6 @@ nsNSSSocketInfo::SetHandshakeCompleted()
: mFalseStarted ? FalseStarted
: mFalseStartCallbackCalled ? ChoseNotToFalseStart
: NotAllowedToFalseStart;
-
- // This will include TCP and proxy tunnel wait time
- Telemetry::AccumulateTimeDelta(Telemetry::SSL_TIME_UNTIL_HANDSHAKE_FINISHED,
- mSocketCreationTimestamp, TimeStamp::Now());
-
- // If the handshake is completed for the first time from just 1 callback
- // that means that TLS session resumption must have been used.
- Telemetry::Accumulate(Telemetry::SSL_RESUMED_SESSION,
- handshakeType == Resumption);
- Telemetry::Accumulate(Telemetry::SSL_HANDSHAKE_TYPE, handshakeType);
}
@@ -623,11 +610,6 @@ nsNSSSocketInfo::SetCertVerificationResult(PRErrorCode errorCode,
SetCanceled(errorCode, errorMessageType);
}
- if (mPlaintextBytesRead && !errorCode) {
- Telemetry::Accumulate(Telemetry::SSL_BYTES_BEFORE_CERT_CALLBACK,
- AssertedCast<uint32_t>(mPlaintextBytesRead));
- }
-
mCertVerificationState = after_cert_verification;
}
@@ -1121,8 +1103,6 @@ retryDueToTLSIntolerance(PRErrorCode err, nsNSSSocketInfo* socketInfo)
PRErrorCode originalReason =
helpers.getIntoleranceReason(socketInfo->GetHostName(),
socketInfo->GetPort());
- Telemetry::Accumulate(Telemetry::SSL_VERSION_FALLBACK_INAPPROPRIATE,
- tlsIntoleranceTelemetryBucket(originalReason));
helpers.forgetIntolerance(socketInfo->GetHostName(),
socketInfo->GetPort());
@@ -1144,11 +1124,8 @@ retryDueToTLSIntolerance(PRErrorCode err, nsNSSSocketInfo* socketInfo)
helpers.mUnrestrictedRC4Fallback) {
if (helpers.rememberStrongCiphersFailed(socketInfo->GetHostName(),
socketInfo->GetPort(), err)) {
- Telemetry::Accumulate(Telemetry::SSL_WEAK_CIPHERS_FALLBACK,
- tlsIntoleranceTelemetryBucket(err));
return true;
}
- Telemetry::Accumulate(Telemetry::SSL_WEAK_CIPHERS_FALLBACK, 0);
}
}
@@ -1191,18 +1168,12 @@ retryDueToTLSIntolerance(PRErrorCode err, nsNSSSocketInfo* socketInfo)
return false;
}
- // The difference between _PRE and _POST represents how often we avoided
- // TLS intolerance fallback due to remembered tolerance.
- Telemetry::Accumulate(pre, reason);
-
if (!helpers.rememberIntolerantAtVersion(socketInfo->GetHostName(),
socketInfo->GetPort(),
range.min, range.max, err)) {
return false;
}
- Telemetry::Accumulate(post, reason);
-
return true;
}
@@ -1242,8 +1213,6 @@ reportHandshakeResult(int32_t bytesTransferred, bool wasReading, PRErrorCode err
} else {
bucket = 671;
}
-
- Telemetry::Accumulate(Telemetry::SSL_HANDSHAKE_RESULT, bucket);
}
int32_t
diff --git a/security/manager/ssl/nsNTLMAuthModule.cpp b/security/manager/ssl/nsNTLMAuthModule.cpp
index a0564118a3..46a4a21a03 100644
--- a/security/manager/ssl/nsNTLMAuthModule.cpp
+++ b/security/manager/ssl/nsNTLMAuthModule.cpp
@@ -1009,11 +1009,6 @@ nsNTLMAuthModule::Init(const char *serviceName,
static bool sTelemetrySent = false;
if (!sTelemetrySent) {
- mozilla::Telemetry::Accumulate(
- mozilla::Telemetry::NTLM_MODULE_USED_2,
- serviceFlags & nsIAuthModule::REQ_PROXY_AUTH
- ? NTLM_MODULE_GENERIC_PROXY
- : NTLM_MODULE_GENERIC_DIRECT);
sTelemetrySent = true;
}
diff --git a/security/manager/ssl/nsPKCS11Slot.cpp b/security/manager/ssl/nsPKCS11Slot.cpp
index 780a7c4b28..015f869011 100644
--- a/security/manager/ssl/nsPKCS11Slot.cpp
+++ b/security/manager/ssl/nsPKCS11Slot.cpp
@@ -541,10 +541,6 @@ nsPKCS11ModuleDB::ToggleFIPSMode()
return NS_ERROR_FAILURE;
}
- if (PK11_IsFIPS()) {
- Telemetry::Accumulate(Telemetry::FIPS_ENABLED, true);
- }
-
return NS_OK;
}
diff --git a/security/manager/ssl/nsSTSPreloadList.errors b/security/manager/ssl/nsSTSPreloadList.errors
index 4cfa9bd846..243fdce2cf 100644
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -1,19 +1,22 @@
0-1.party: could not connect to host
+0.me.uk: did not receive HSTS header
00001.am: max-age too low: 129600
00002.am: max-age too low: 129600
0005.com: could not connect to host
0005aa.com: could not connect to host
+0005pay.com: did not receive HSTS header
00220022.net: could not connect to host
007-preisvergleich.de: could not connect to host
007kf.com: could not connect to host
007sascha.de: did not receive HSTS header
+00880088.net: could not connect to host
00wbf.com: could not connect to host
01100010011001010111001101110100.com: could not connect to host
016298.com: did not receive HSTS header
020wifi.nl: could not connect to host
+0222.mg: did not receive HSTS header
0222aa.com: did not receive HSTS header
023838.com: did not receive HSTS header
-02607.com: could not connect to host
029inno.com: could not connect to host
02dl.net: could not connect to host
03-09-2016.wedding: could not connect to host
@@ -26,7 +29,6 @@
066928.com: could not connect to host
066938.com: could not connect to host
070709.net: could not connect to host
-09115.com: could not connect to host
0c.eu: did not receive HSTS header
0cdn.ga: could not connect to host
0day.su: could not connect to host
@@ -41,11 +43,12 @@
0w0.vc: could not connect to host
0x0a.net: could not connect to host
0x1337.eu: could not connect to host
-0x44.net: did not receive HSTS header
+0x44.net: could not connect to host
0x4b0c131e.pub: could not connect to host
0x52.org: could not connect to host
0x539.be: did not receive HSTS header
0x539.pw: did not receive HSTS header
+0x5f3759df.cf: could not connect to host
0x65.net: did not receive HSTS header
0x90.fi: could not connect to host
0x90.in: could not connect to host
@@ -54,8 +57,11 @@
0xb612.org: could not connect to host
0xcafec0.de: did not receive HSTS header
1.0.0.1: max-age too low: 0
+10000v.ru: could not connect to host
1000hats.com: did not receive HSTS header
+1000serien.com: could not connect to host
1001.best: could not connect to host
+1001firms.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
100onrainkajino.com: could not connect to host
1017scribes.com: could not connect to host
1018hosting.nl: did not receive HSTS header
@@ -64,38 +70,47 @@
10gbit.ovh: could not connect to host
10tacle.io: could not connect to host
10x.ooo: could not connect to host
+1116pay.com: did not receive HSTS header
11recruitment.com.au: did not receive HSTS header
12.net: did not receive HSTS header
120dayweightloss.com: could not connect to host
123110.com: could not connect to host
+123comparer.fr: did not receive HSTS header
+123djdrop.com: did not receive HSTS header
123movies.fyi: did not receive HSTS header
123share.org: did not receive HSTS header
+123termpapers.com: could not connect to host
123test.de: did not receive HSTS header
123test.es: did not receive HSTS header
123test.fr: did not receive HSTS header
126ium.moe: could not connect to host
127011-networks.ch: could not connect to host
+1288fc.com: could not connect to host
12vpn.org: could not connect to host
12vpnchina.com: could not connect to host
1359826938.rsc.cdn77.org: did not receive HSTS header
135vv.com: could not connect to host
13826145000.com: could not connect to host
-1396.cc: did not receive HSTS header
+1396.cc: could not connect to host
+1396.net: did not receive HSTS header
+15-10.com: did not receive HSTS header
1536.cf: could not connect to host
+160887.com: did not receive HSTS header
16164f.com: could not connect to host
163pwd.com: could not connect to host
168bet9.com: could not connect to host
+168esb.com: could not connect to host
16deza.com: did not receive HSTS header
16packets.com: could not connect to host
173vpn.cn: did not receive HSTS header
173vpns.com: could not connect to host
173vpnv.com: could not connect to host
174.net.nz: did not receive HSTS header
-174343.com: did not receive HSTS header
+174343.com: could not connect to host
188522.com: did not receive HSTS header
+18888msc.com: could not connect to host
1888zr.com: could not connect to host
188betwarriors.co.uk: could not connect to host
-188da.com: could not connect to host
188trafalgar.ca: did not receive HSTS header
1912x.com: could not connect to host
1921958389.rsc.cdn77.org: could not connect to host
@@ -107,6 +122,7 @@
1day1ac.red: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
1er-secours.ch: could not connect to host
1gsoft.com: could not connect to host
+1item.co.il: did not receive HSTS header
1k8b.com: could not connect to host
1nian.vip: could not connect to host
1pw.ca: did not receive HSTS header
@@ -114,7 +130,9 @@
1s.tn: could not connect to host
1st4abounce.co.uk: did not receive HSTS header
1stcapital.com.sg: did not receive HSTS header
+1ststop.co.uk: did not receive HSTS header
1three1.net: did not receive HSTS header
+1upinternet.com: could not connect to host
1xcess.com: did not receive HSTS header
1years.cc: did not receive HSTS header
2-cpu.de: could not connect to host
@@ -127,27 +145,29 @@
21lg.co: could not connect to host
21stnc.com: could not connect to host
2333.press: could not connect to host
-233boy.com: could not connect to host
+233ss.net: did not receive HSTS header
+247a.co.uk: could not connect to host
247quickbooks.com: did not receive HSTS header
2488.ch: did not receive HSTS header
249cq.com: could not connect to host
24hourpaint.com: could not connect to host
-24hrs.shopping: did not receive HSTS header
+24hrs.shopping: could not connect to host
24kbet.com: could not connect to host
24pcr.com: could not connect to host
24sihu.com: could not connect to host
256k.me: could not connect to host
25daysof.io: could not connect to host
+260887.com: did not receive HSTS header
2859cc.com: could not connect to host
29227.com: could not connect to host
2acbi-asso.fr: did not receive HSTS header
-2au.ru: could not connect to host
2b3b.com: could not connect to host
2bitout.com: could not connect to host
2bizi.ru: could not connect to host
2brokegirls.org: could not connect to host
2carpros.com: did not receive HSTS header
2fl.me: did not receive HSTS header
+2gen.com: could not connect to host
2intermediate.co.uk: did not receive HSTS header
2or3.tk: could not connect to host
2smart4food.com: could not connect to host
@@ -160,11 +180,13 @@
3133780x.com: did not receive HSTS header
314166.com: could not connect to host
314chan.org: could not connect to host
+31tv.ru: did not receive HSTS header
32ph.com: could not connect to host
330.net: could not connect to host
338da.com: could not connect to host
-33drugstore.com: did not receive HSTS header
-341.mg: did not receive HSTS header
+33drugstore.com: could not connect to host
+341.mg: could not connect to host
+34oztonic.eu: did not receive HSTS header
3555500.com: could not connect to host
3555aa.com: could not connect to host
35792.de: could not connect to host
@@ -175,9 +197,9 @@
368mibn.com: could not connect to host
3778xl.com: did not receive HSTS header
3839.ca: could not connect to host
-388da.com: could not connect to host
+38888msc.com: could not connect to host
+38blog.com: could not connect to host
38sihu.com: could not connect to host
-3aandl.com: did not receive HSTS header
3candy.com: could not connect to host
3chit.cf: could not connect to host
3click-loan.com: could not connect to host
@@ -187,12 +209,11 @@
3dm.audio: could not connect to host
3dproteinimaging.com: did not receive HSTS header
3fl.com: did not receive HSTS header
-3hl0.net: could not connect to host
-3lot.ru: could not connect to host
3mbo.de: did not receive HSTS header
3sreporting.com: did not receive HSTS header
3vlnaeet.cz: could not connect to host
3wecommerce.com.br: could not connect to host
+3xx.link: could not connect to host
4036aa.com: did not receive HSTS header
4036bb.com: did not receive HSTS header
4036cc.com: did not receive HSTS header
@@ -202,23 +223,37 @@
404404.info: could not connect to host
404forest.com: did not receive HSTS header
41844.de: could not connect to host
-41studio.com: could not connect to host
420dongstorm.com: could not connect to host
+4237.com: max-age too low: 86400
+42entrepreneurs.fr: did not receive HSTS header
42ms.org: could not connect to host
42t.ru: could not connect to host
439191.com: did not receive HSTS header
+440887.com: did not receive HSTS header
440hz-radio.de: did not receive HSTS header
440hz.radio: did not receive HSTS header
+442887.com: did not receive HSTS header
+443887.com: did not receive HSTS header
+444887.com: did not receive HSTS header
4455software.com: could not connect to host
+445887.com: did not receive HSTS header
44957.com: could not connect to host
+44sec.com: could not connect to host
+4500.co.il: did not receive HSTS header
4679.space: did not receive HSTS header
+4706666.com: did not receive HSTS header
+4716666.com: did not receive HSTS header
+4726666.com: did not receive HSTS header
+4756666.com: did not receive HSTS header
+4786666.com: did not receive HSTS header
+478933.com: did not receive HSTS header
47tech.com: could not connect to host
-4azino777.ru: could not connect to host
+4997777.com: could not connect to host
+4azino777.ru: did not receive HSTS header
4baby.com.br: could not connect to host
4bike.eu: did not receive HSTS header
4cclothing.com: could not connect to host
4d2.xyz: could not connect to host
-4flex.info: could not connect to host
4hvac.com: did not receive HSTS header
4loc.us: could not connect to host
4miners.net: could not connect to host
@@ -236,48 +271,62 @@
517vpn.cn: could not connect to host
518maicai.com: could not connect to host
51aifuli.com: could not connect to host
+52b9.com: could not connect to host
+52b9.net: could not connect to host
52kb.net: could not connect to host
52kb1.com: could not connect to host
52neptune.com: could not connect to host
540.co: did not receive HSTS header
+5432.cc: did not receive HSTS header
54bf.com: could not connect to host
555fl.com: max-age too low: 129600
555xl.com: could not connect to host
56877.com: could not connect to host
56ct.com: could not connect to host
57aromas.com: did not receive HSTS header
+57he.com: did not receive HSTS header
+5chat.it: could not connect to host
5piecesofadvice.com: could not connect to host
605508.cc: could not connect to host
605508.com: could not connect to host
60ych.net: did not receive HSTS header
6120.eu: did not receive HSTS header
-62755.com: could not connect to host
+62755.com: did not receive HSTS header
64616e.xyz: could not connect to host
-660011.com: max-age too low: 0
+64bitgaming.de: could not connect to host
+660011.com: could not connect to host
+6677.us: did not receive HSTS header
+668da.com: did not receive HSTS header
68277.me: could not connect to host
+688da.com: could not connect to host
692b8c32.de: could not connect to host
69mentor.com: could not connect to host
69square.com: could not connect to host
+6z3.net: could not connect to host
+7045h.com: could not connect to host
7183.org: could not connect to host
-721av.com: max-age too low: 2592000
+721av.com: could not connect to host
724go.com: could not connect to host
7261696e626f77.net: could not connect to host
72ty.com: could not connect to host
72ty.net: could not connect to host
73223.com: did not receive HSTS header
-776573.net: could not connect to host
+73info.com: did not receive HSTS header
+771122.tv: did not receive HSTS header
+776573.net: did not receive HSTS header
7777av.co: could not connect to host
77890k.com: could not connect to host
-77book.cn: did not receive HSTS header
-7bwin.com: max-age too low: 3600
+77book.cn: could not connect to host
+789zr.com: max-age too low: 86400
7f-wgg.cf: could not connect to host
7links.com.br: did not receive HSTS header
+7nw.eu: could not connect to host
7thheavenrestaurant.com: could not connect to host
8.net.co: could not connect to host
8003pay.com: could not connect to host
808.lv: did not receive HSTS header
808phone.net: could not connect to host
-81818app.com: did not receive HSTS header
+81818app.com: could not connect to host
81uc.com: could not connect to host
826468.com: could not connect to host
826498.com: could not connect to host
@@ -286,8 +335,11 @@
8522.am: could not connect to host
8522cn.com: did not receive HSTS header
8560.be: could not connect to host
+8722.com: did not receive HSTS header
87577.com: could not connect to host
88.to: could not connect to host
+887.ag: did not receive HSTS header
+8884553.com: could not connect to host
8887999.com: could not connect to host
8888av.co: could not connect to host
888azino.com: did not receive HSTS header
@@ -295,37 +347,50 @@
88d.com: could not connect to host
88laohu.cc: could not connect to host
88laohu.com: could not connect to host
+8989k3.com: could not connect to host
89955.com: could not connect to host
899699.com: did not receive HSTS header
89he.com: could not connect to host
-8azino777.ru: could not connect to host
+8azino777.ru: did not receive HSTS header
8ballbombom.uk: could not connect to host
-8dabet.com: could not connect to host
+8da2018.com: could not connect to host
8mpay.com: did not receive HSTS header
-8svn.com: could not connect to host
8t88.biz: could not connect to host
90smthng.com: could not connect to host
91-freedom.com: could not connect to host
+910kj.com: did not receive HSTS header
9118b.com: could not connect to host
911911.pw: could not connect to host
915ers.com: did not receive HSTS header
+918gd.com: could not connect to host
+918yy.com: did not receive HSTS header
+919945.com: did not receive HSTS header
91dh.cc: could not connect to host
91lt.info: could not connect to host
922.be: could not connect to host
92bmh.com: did not receive HSTS header
+9454.com: max-age too low: 86400
94cs.cn: did not receive HSTS header
95778.com: could not connect to host
960news.ca: could not connect to host
+9617818.com: could not connect to host
+9617818.net: could not connect to host
9651678.ru: could not connect to host
+9822.com: did not receive HSTS header
+987987.com: did not receive HSTS header
99511.fi: did not receive HSTS header
-9998722.com: could not connect to host
99buffets.com: could not connect to host
+9iwan.net: did not receive HSTS header
9jadirect.com: could not connect to host
9point6.com: could not connect to host
-a-intel.com: did not receive HSTS header
+9ss6.com: could not connect to host
+9vies.ca: could not connect to host
+9y.at: did not receive HSTS header
+a-intel.com: could not connect to host
a-ix.net: could not connect to host
a-plus.space: could not connect to host
a-rickroll-n.pw: could not connect to host
+a-shafaat.ir: did not receive HSTS header
a-theme.com: could not connect to host
a1-autopartsglasgow.com: could not connect to host
a1798.com: could not connect to host
@@ -333,7 +398,6 @@ a200k.xyz: did not receive HSTS header
a2c-co.net: could not connect to host
a2it.gr: did not receive HSTS header
a3workshop.swiss: could not connect to host
-a8q.org: could not connect to host
a9c.co: could not connect to host
aa7733.com: could not connect to host
aaeblog.com: did not receive HSTS header
@@ -342,18 +406,21 @@ aaeblog.org: did not receive HSTS header
aaoo.net: could not connect to host
aapp.space: could not connect to host
aariefhaafiz.com: could not connect to host
-aarkue.eu: did not receive HSTS header
aaron-gustafson.com: did not receive HSTS header
+aaronhorler.com.au: could not connect to host
aaronmcguire.me: did not receive HSTS header
aarvinproperties.com: could not connect to host
-aati.info: could not connect to host
+abandonedmines.gov: could not connect to host
abareplace.com: did not receive HSTS header
abasky.net: could not connect to host
+abcdef.be: could not connect to host
abcdentalcare.com: did not receive HSTS header
abcdobebe.com: did not receive HSTS header
abchelp.net: did not receive HSTS header
+abdullah.pw: could not connect to host
abearofsoap.com: could not connect to host
abecodes.net: could not connect to host
+abeontech.com: could not connect to host
abi-fvs.de: could not connect to host
abigailstark.com: could not connect to host
abilitylist.org: did not receive HSTS header
@@ -371,6 +438,7 @@ aboutmyip.info: did not receive HSTS header
aboutmyproperty.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
aboutyou-deals.de: could not connect to host
absinthium.ch: could not connect to host
+absolutewaterproofingsolutions.com: did not receive HSTS header
abstractbarista.com: could not connect to host
abstractbarista.net: could not connect to host
abt.de: did not receive HSTS header
@@ -387,6 +455,7 @@ acadianapatios.com: did not receive HSTS header
acai51.net: could not connect to host
acaonegocios.com.br: could not connect to host
acbc.ie: max-age too low: 0
+accbay.com: could not connect to host
accelerate.network: could not connect to host
accelerole.com: did not receive HSTS header
accelight.co.jp: did not receive HSTS header
@@ -394,11 +463,11 @@ accelight.jp: did not receive HSTS header
access-sofia.org: did not receive HSTS header
accolade.com.br: could not connect to host
accoun.technology: could not connect to host
-accountradar.com: max-age too low: 86400
accounts-p.com: could not connect to host
accountsuspended.club: could not connect to host
accwing.com: could not connect to host
aceadvisory.biz: did not receive HSTS header
+acelpb.com: could not connect to host
acg.mn: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
acg.sb: could not connect to host
acgaudio.com: could not connect to host
@@ -424,7 +493,9 @@ actiontowingroundrock.com: could not connect to host
activateplay.com: did not receive HSTS header
active-escape.com: did not receive HSTS header
activeweb.top: could not connect to host
+activistasconstructivos.org: did not receive HSTS header
activiti.alfresco.com: did not receive HSTS header
+actu-film.com: max-age too low: 0
actu-medias.com: could not connect to host
actualite-videos.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
acuve.jp: could not connect to host
@@ -435,6 +506,7 @@ adambryant.ca: could not connect to host
adamcoffee.net: could not connect to host
adamdixon.co.uk: could not connect to host
adamricheimer.com: could not connect to host
+adamsfoundationrepair.com: did not receive HSTS header
adamwk.com: did not receive HSTS header
adastra.re: could not connect to host
adblock.ovh: could not connect to host
@@ -445,28 +517,32 @@ addvocate.com: could not connect to host
adec-emsa.ae: could not connect to host
adelaides.com: did not receive HSTS header
adelevie.com: could not connect to host
-adeline.mobi: could not connect to host
adelinlydia-coach.com: did not receive HSTS header
adequatetechnology.com: could not connect to host
aderal.io: could not connect to host
adesa-asesoria.com: did not receive HSTS header
adfa-1.com: could not connect to host
-adhigamindia.com: did not receive HSTS header
+adhigamindia.com: could not connect to host
adhosting.nl: did not receive HSTS header
adhs-chaoten.net: did not receive HSTS header
adigitali.biz: did not receive HSTS header
adindexr.com: could not connect to host
+adint.net: could not connect to host
adlerweb.info: did not receive HSTS header
admin-forms.co.uk: did not receive HSTS header
+admin-numerique.com: did not receive HSTS header
admin.google.com: did not receive HSTS header (error ignored - included regardless)
admins.tech: could not connect to host
+adminwerk.com: did not receive HSTS header
adminwerk.net: did not receive HSTS header
+admirable.one: did not receive HSTS header
admiral.dp.ua: did not receive HSTS header
admitcard.co.in: could not connect to host
admsel.ec: could not connect to host
adoal.net: did not receive HSTS header
adoge.me: could not connect to host
adonairelogios.com.br: could not connect to host
+adoniscabaret.co.uk: could not connect to host
adopteunsiteflash.com: could not connect to host
adprospb.com: did not receive HSTS header
adquisitio.de: could not connect to host
@@ -475,6 +551,7 @@ adrenaline-gaming.ru: could not connect to host
adrianajewelry.my: could not connect to host
adriancohea.ninja: did not receive HSTS header
adrianseo.ro: did not receive HSTS header
+adrinet.tk: could not connect to host
adrl.ca: could not connect to host
adsfund.org: could not connect to host
aduedu.de: did not receive HSTS header
@@ -487,6 +564,7 @@ advanced-online.eu: could not connect to host
advancedplasticsurgerycenter.com: did not receive HSTS header
advancedseotool.it: did not receive HSTS header
advancedstudio.ro: could not connect to host
+advancedwriters.com: could not connect to host
advantagemechanicalinc.com: did not receive HSTS header
adventistdeploy.org: could not connect to host
adventures.is: did not receive HSTS header
@@ -495,7 +573,6 @@ advertisemant.com: could not connect to host
adviespuntklokkenluiders.nl: could not connect to host
adzie.xyz: could not connect to host
adzuna.co.uk: did not receive HSTS header
-aelurus.com: could not connect to host
aemoria.com: could not connect to host
aeon.wiki: could not connect to host
aerialmediapro.net: could not connect to host
@@ -510,20 +587,25 @@ aevpn.org: could not connect to host
aeyoun.com: did not receive HSTS header
af-fotografie.net: did not receive HSTS header
afdkompakt.de: max-age too low: 86400
+afeefzarapackages.com: did not receive HSTS header
affily.io: could not connect to host
+affinity.vc: did not receive HSTS header
affordablebouncycastle.co.uk: did not receive HSTS header
+affordablepapers.com: could not connect to host
aficotroceni.ro: did not receive HSTS header
afiru.net: could not connect to host
+aflamtorrent.com: could not connect to host
afmchandler.com: did not receive HSTS header
afp548.tk: could not connect to host
after.im: did not receive HSTS header
afterstack.net: could not connect to host
-afvallendoeje.nu: could not connect to host
+afvallendoeje.nu: did not receive HSTS header
afyou.co.kr: could not connect to host
agalaxyfarfaraway.co.uk: could not connect to host
agatheetraphael.fr: could not connect to host
agbremen.de: could not connect to host
agdalieso.com.ba: could not connect to host
+ageg.ca: could not connect to host
agelesscitizen.com: could not connect to host
agelesscitizens.com: could not connect to host
agenbettingasia.com: did not receive HSTS header
@@ -531,7 +613,9 @@ agenciagriff.com: did not receive HSTS header
agencymanager.be: could not connect to host
agentseeker.ca: could not connect to host
agevio.com: could not connect to host
+agileecommerce.com.br: could not connect to host
agingstop.net: could not connect to host
+agonswim.com: did not receive HSTS header
agoravm.tk: could not connect to host
agowa.eu: did not receive HSTS header
agowa338.de: did not receive HSTS header
@@ -541,13 +625,12 @@ agrias.com.br: did not receive HSTS header
agrikulturchic.com: could not connect to host
agrimap.com: did not receive HSTS header
agro-id.gov.ua: did not receive HSTS header
+agro.rip: did not receive HSTS header
agroglass.com.br: did not receive HSTS header
-agroline.by: could not connect to host
agtv.com.br: did not receive HSTS header
ahabingo.com: did not receive HSTS header
ahelos.tk: could not connect to host
ahlz.sk: could not connect to host
-ahmedcharles.com: could not connect to host
aholic.co: did not receive HSTS header
ahoynetwork.com: could not connect to host
ahri.ovh: could not connect to host
@@ -555,36 +638,39 @@ ahsin.online: could not connect to host
ahwah.net: could not connect to host
ahwatukeefoothillsmontessori.com: did not receive HSTS header
ai1989.com: could not connect to host
+aibaoyou.com: could not connect to host
aibsoftware.mx: could not connect to host
-aicial.co.uk: could not connect to host
aicial.com: did not receive HSTS header
aicial.com.au: could not connect to host
aid-web.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
aidanwoods.com: did not receive HSTS header
-aide-admin.com: could not connect to host
+aide-admin.com: did not receive HSTS header
aidikofflaw.com: did not receive HSTS header
aiesecarad.ro: could not connect to host
aifreeze.ru: could not connect to host
aify.eu: could not connect to host
aignermunich.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
aignermunich.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-aignermunich.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
aikenorganics.com: could not connect to host
aim-consultants.com: could not connect to host
+aimerworld.com: did not receive HSTS header
aimrom.org: could not connect to host
ainrb.com: could not connect to host
-aintevenmad.ch: could not connect to host
aioboot.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
aip-marine.com: could not connect to host
aiphyron.com: could not connect to host
aiponne.com: could not connect to host
airconsalberton.co.za: did not receive HSTS header
+airconsboksburg.co.za: did not receive HSTS header
+airconsfourways.co.za: did not receive HSTS header
+airconsmidrand.co.za: did not receive HSTS header
airedaleterrier.com.br: could not connect to host
airfax.io: could not connect to host
airlea.com: could not connect to host
airlinecheckins.com: did not receive HSTS header
airmazinginflatables.com: could not connect to host
airproto.com: did not receive HSTS header
+airsick.guide: did not receive HSTS header
airtimefranchise.com: did not receive HSTS header
aishnair.com: could not connect to host
aisle3.space: could not connect to host
@@ -604,16 +690,21 @@ akgundemirbas.com: could not connect to host
akhilindurti.com: could not connect to host
akhras.at: did not receive HSTS header
akiba-server.info: could not connect to host
+akihiro.xyz: could not connect to host
akita-stream.com: could not connect to host
akkadia.cc: could not connect to host
+akoch.net: could not connect to host
akombakom.net: could not connect to host
akoww.de: could not connect to host
-akselimedia.fi: did not receive HSTS header
+akronet.cz: did not receive HSTS header
+akropol.cz: did not receive HSTS header
+akselimedia.fi: could not connect to host
akstudentsfirst.org: could not connect to host
-aktivist.in: did not receive HSTS header
+aktan.com.br: could not connect to host
+aktivist.in: could not connect to host
+akul.co.in: could not connect to host
al-f.net: could not connect to host
al-shami.net: could not connect to host
-alamgir.works: could not connect to host
alanhuang.name: did not receive HSTS header
alanlee.net: could not connect to host
alanrickmanflipstable.com: did not receive HSTS header
@@ -626,31 +717,36 @@ alauda-home.de: could not connect to host
alaundeil.xyz: could not connect to host
albanien.guide: could not connect to host
alberguecimballa.es: could not connect to host
-albertbogdanowicz.pl: did not receive HSTS header
albertify.xyz: could not connect to host
+albertonplumber24-7.co.za: did not receive HSTS header
albertopimienta.com: did not receive HSTS header
alcantarafleuriste.com: did not receive HSTS header
alcatraz.online: could not connect to host
alcazaar.com: could not connect to host
alchemia.co.il: did not receive HSTS header
alcorao.org: could not connect to host
+aldes.co.za: did not receive HSTS header
aleax.me: could not connect to host
alecvannoten.be: did not receive HSTS header
-aleksejjocic.tk: could not connect to host
alenan.org: could not connect to host
aleph.land: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
alertaenlinea.gov: did not receive HSTS header
alessandro.pw: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+alessandroz.ddns.net: could not connect to host
alessandroz.pro: could not connect to host
alethearose.com: did not receive HSTS header
alexandernorth.ch: could not connect to host
alexandre.sh: did not receive HSTS header
-alexbaker.org: did not receive HSTS header
alexdodge.ca: did not receive HSTS header
alexei.su: could not connect to host
alexfisherhealth.com.au: did not receive HSTS header
alexhaydock.co.uk: did not receive HSTS header
+alexischaussy.xyz: could not connect to host
+alexismeza.com: could not connect to host
+alexismeza.com.mx: could not connect to host
alexismeza.dk: could not connect to host
+alexismeza.es: could not connect to host
+alexismeza.nl: could not connect to host
alexkidd.de: did not receive HSTS header
alexmak.net: did not receive HSTS header
alexmol.tk: could not connect to host
@@ -662,9 +758,11 @@ alfirous.com: could not connect to host
alfredxing.com: did not receive HSTS header
algarmatic-automatismos.pt: could not connect to host
algebraaec.com: did not receive HSTS header
-alghaib.com: did not receive HSTS header
-alghanimcatering.com: did not receive HSTS header
+alghaib.com: could not connect to host
alibababee.com: did not receive HSTS header
+alicialab.org: could not connect to host
+alien.bz: did not receive HSTS header
+alikulov.me: did not receive HSTS header
alilialili.ga: could not connect to host
alinemaciel.adm.br: could not connect to host
alistairpialek.com: max-age too low: 86400
@@ -674,9 +772,11 @@ aljammaz.holdings: did not receive HSTS header
aljmz.com: did not receive HSTS header
alkami.com: max-age too low: 0
alkamitech.com: max-age too low: 0
+alkel.info: could not connect to host
all-subtitles.com: could not connect to host
all.tf: could not connect to host
all4os.com: did not receive HSTS header
+allaboutbelgaum.com: did not receive HSTS header
allangirvan.net: could not connect to host
alldaymonitoring.com: could not connect to host
alldm.ru: could not connect to host
@@ -690,8 +790,10 @@ alliance-compacts.com: did not receive HSTS header
allinnote.com: could not connect to host
allinonecyprus.com: did not receive HSTS header
allkindzabeats.com: did not receive HSTS header
+allladyboys.com: could not connect to host
allmbw.com: could not connect to host
allmystery.de: did not receive HSTS header
+allo-symo.fr: did not receive HSTS header
allods-zone.ru: did not receive HSTS header
alloffice.com.ua: did not receive HSTS header
alloinformatique.net: could not connect to host
@@ -699,7 +801,9 @@ alloutatl.com: could not connect to host
allpropertyservices.com: did not receive HSTS header
allprorisk.com: did not receive HSTS header
allrealty.co.za: could not connect to host
+allroundpvp.net: did not receive HSTS header
allscammers.exposed: could not connect to host
+allseasons-cleaning.co.uk: could not connect to host
allsortscastles.co.uk: could not connect to host
allstarswithus.com: could not connect to host
allstorebrasil.com.br: could not connect to host
@@ -707,7 +811,7 @@ alltheducks.com: max-age too low: 43200
allthingsfpl.com: could not connect to host
allvips.ru: could not connect to host
almagalla.com: could not connect to host
-almatinki.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+almatinki.com: could not connect to host
aloalabs.com: did not receive HSTS header
alocato.com: could not connect to host
alparque.com: did not receive HSTS header
@@ -717,6 +821,7 @@ alphabuild.io: could not connect to host
alphagamers.net: did not receive HSTS header
alphahunks.com: could not connect to host
alphalabs.xyz: could not connect to host
+alqassam.net: did not receive HSTS header
als-hardware.co.za: did not receive HSTS header
alspolska.pl: max-age too low: 2592000
alt-tab-design.com: did not receive HSTS header
@@ -724,25 +829,32 @@ alt33c3.org: could not connect to host
altahrim.net: could not connect to host
altaide.com: did not receive HSTS header
altailife.ru: did not receive HSTS header
-altamarea.se: could not connect to host
+altamarea.se: did not receive HSTS header
+altbinaries.com: could not connect to host
alteqnia.com: could not connect to host
altercpa.ru: did not receive HSTS header
+altered.network: could not connect to host
altfire.ca: could not connect to host
altiacaselight.com: could not connect to host
altitudemoversdenver.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-altmv.com: max-age too low: 7776000
+altoneum.com: could not connect to host
altporn.xyz: could not connect to host
aluminium-scaffolding.co.uk: could not connect to host
alunjam.es: did not receive HSTS header
alunonaescola.com.br: could not connect to host
-aluoblog.top: did not receive HSTS header
+aluoblog.pw: could not connect to host
+aluoblog.top: could not connect to host
alusta.co: could not connect to host
am8888.top: could not connect to host
-amaderelectronics.com: could not connect to host
+amaderelectronics.com: max-age too low: 2592000
+amadilo.de: did not receive HSTS header
+amadoraslindas.com: could not connect to host
amaforums.org: did not receive HSTS header
amagical.net: did not receive HSTS header
amandaonishi.com: could not connect to host
amaranthus.com.ph: could not connect to host
+amartinz.at: could not connect to host
+amateri.com: could not connect to host
amatzen.dk: did not receive HSTS header
amavis.org: did not receive HSTS header
amazing-gaming.fr: could not connect to host
@@ -763,17 +875,24 @@ americansforcommunitydevelopment.org: did not receive HSTS header
americansportsinstitute.org: did not receive HSTS header
americanworkwear.nl: did not receive HSTS header
amethystcards.co.uk: could not connect to host
+ameza.co.uk: could not connect to host
+ameza.com.mx: could not connect to host
+ameza.io: could not connect to host
+ameza.me: could not connect to host
+ameza.net: could not connect to host
amicsdelbus.com: did not receive HSTS header
amigogeek.net: could not connect to host
amihub.com: could not connect to host
amilum.org: could not connect to host
amilx.com: could not connect to host
amilx.org: could not connect to host
-amimoto-ami.com: max-age too low: 3153600
+amimoto-ami.com: did not receive HSTS header
+amin.ga: did not receive HSTS header
+amin.one: could not connect to host
amishsecurity.com: could not connect to host
amitse.com: did not receive HSTS header
amitube.com: did not receive HSTS header
-amleeds.co.uk: did not receive HSTS header
+amleeds.co.uk: could not connect to host
amlvfs.net: could not connect to host
ammoulianiapartments.com: did not receive HSTS header
amo-entreprise-et-commerce.fr: could not connect to host
@@ -789,15 +908,18 @@ amunoz.org: could not connect to host
amv-crm.ru: could not connect to host
anabol.nl: could not connect to host
anacruz.es: did not receive HSTS header
+anadoluefessk.org: did not receive HSTS header
anadoluefessporkulubu.org: could not connect to host
anagra.ms: could not connect to host
-anaisypirueta.es: did not receive HSTS header
anakros.me: could not connect to host
+analangelsteen.com: could not connect to host
analpantyhose.org: could not connect to host
+analteengirls.net: could not connect to host
analytic-s.ml: could not connect to host
analytics-shop.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
analyticsinmotion.net: could not connect to host
analyzemyfriends.com: could not connect to host
+anastasiafond.com: did not receive HSTS header
ancarda.net: could not connect to host
anchorgrounds.com: did not receive HSTS header
anchorinmarinainc.com: did not receive HSTS header
@@ -807,21 +929,20 @@ ancientkarma.com: could not connect to host
andbraiz.com: did not receive HSTS header
andere-gedanken.net: max-age too low: 10
anderslind.dk: could not connect to host
-andre-ballensiefen.de: could not connect to host
andreagobetti.com: did not receive HSTS header
andreas-kluge.eu: could not connect to host
andreasanti.net: did not receive HSTS header
+andreasbasurto.com: could not connect to host
andreasbreitenlohner.de: max-age too low: 600000
andreasfritz-fotografie.de: could not connect to host
andreaskluge.eu: could not connect to host
andreastoneman.com: could not connect to host
andrei-coman.com: could not connect to host
-andrei-nakov.org: did not receive HSTS header
andreigec.net: did not receive HSTS header
andrerose.ca: did not receive HSTS header
andrew.fi: did not receive HSTS header
-andrew.london: did not receive HSTS header
andrewbroekman.com: did not receive HSTS header
+andrewdavidwong.com: did not receive HSTS header
andrewdaws.co: could not connect to host
andrewdaws.info: could not connect to host
andrewdaws.me: could not connect to host
@@ -829,10 +950,9 @@ andrewdaws.tv: could not connect to host
andrewmichaud.beer: could not connect to host
andrewrdaws.com: could not connect to host
andrewregan.me: could not connect to host
-andrewtebert.com: could not connect to host
+andrewtebert.com: did not receive HSTS header
andrewthelott.net: could not connect to host
andrewvoce.com: did not receive HSTS header
-andrewx.net: could not connect to host
andrewyg.net: could not connect to host
andreypopp.com: could not connect to host
android: could not connect to host
@@ -853,21 +973,24 @@ anfenglish.com: did not receive HSTS header
anfsanchezo.co: could not connect to host
anfsanchezo.me: could not connect to host
angelic47.com: could not connect to host
+angelicare.co.uk: did not receive HSTS header
angeloroberto.ch: did not receive HSTS header
angeloventuri.com: did not receive HSTS header
angervillelorcher.fr: did not receive HSTS header
anghami.com: did not receive HSTS header
anglictinatabor.cz: could not connect to host
+angrut.com: did not receive HSTS header
angry-monk.com: could not connect to host
angrydragonproductions.com: could not connect to host
angrylab.com: did not receive HSTS header
angryroute.com: could not connect to host
-animal-nature-human.com: could not connect to host
animalnet.de: max-age too low: 7776000
animalstropic.com: could not connect to host
+anime1.top: could not connect to host
anime1video.tk: could not connect to host
animeday.ml: could not connect to host
animesfusion.com.br: could not connect to host
+animorphsfanforum.com: did not receive HSTS header
animurecs.com: could not connect to host
aniplus.cf: could not connect to host
aniplus.gq: could not connect to host
@@ -876,42 +999,47 @@ anisekai.com: max-age too low: 2592000
anita-mukorom.hu: did not receive HSTS header
anitklib.ml: could not connect to host
anitube-nocookie.ch: could not connect to host
-anivar.net: could not connect to host
+anivar.net: did not receive HSTS header
ankakaak.com: could not connect to host
ankaraprofesyonelnakliyat.com: did not receive HSTS header
ankaraprofesyonelnakliyat.com.tr: did not receive HSTS header
ankitha.in: max-age too low: 0
annabellaw.com: did not receive HSTS header
annahmeschluss.de: did not receive HSTS header
-annarbor.group: could not connect to host
+annarbor.group: did not receive HSTS header
annetaan.fi: could not connect to host
annevankesteren.com: could not connect to host
annevankesteren.org: could not connect to host
annsbouncycastles.com: could not connect to host
anomaly.ws: did not receive HSTS header
anonboards.com: could not connect to host
+anoneko.com: could not connect to host
+anonrea.ch: could not connect to host
+anonym-surfen.de: could not connect to host
anonymo.co.uk: could not connect to host
anonymo.uk: could not connect to host
anonymousstatecollegelulzsec.com: could not connect to host
anothermilan.net: could not connect to host
-anoxinon.de: max-age too low: 2628000
ansdell.info: could not connect to host
anseo.ninja: could not connect to host
ansermfg.com: max-age too low: 0
ansgar.tk: could not connect to host
-anshuman-chatterjee.com: could not connect to host
+anshuman-chatterjee.com: did not receive HSTS header
anshumanbiswas.com: could not connect to host
-ansibeast.net: could not connect to host
answers-online.ru: could not connect to host
ant.land: could not connect to host
+antecim.fr: could not connect to host
antenasmundosat.com.br: did not receive HSTS header
anthenor.co.uk: could not connect to host
+anthony-rouanet.com: could not connect to host
anthonyavon.com: could not connect to host
anthonyloop.com: did not receive HSTS header
anthro.id: did not receive HSTS header
+antifraud.net.ru: could not connect to host
antimatiere.space: could not connect to host
antimine.kr: could not connect to host
antipa.ch: could not connect to host
+antirayapmalang.com: did not receive HSTS header
antoine-roux.fr: did not receive HSTS header
antoinebetas.be: max-age too low: 0
antoined.fr: did not receive HSTS header
@@ -933,21 +1061,25 @@ aojao.cn: could not connect to host
aojf.fr: could not connect to host
aolabs.nz: did not receive HSTS header
aomberg.com: did not receive HSTS header
+aomonk.com: did not receive HSTS header
aooobo.com: could not connect to host
aov.io: could not connect to host
aovcentrum.nl: did not receive HSTS header
aozora.moe: could not connect to host
-apac-tech.com: did not receive HSTS header
apachelounge.com: did not receive HSTS header
apadrinaunolivo.org: did not receive HSTS header
apaginastore.com.br: could not connect to host
apeasternpower.com: could not connect to host
+aperim.com: max-age too low: 43200
aperture-laboratories.science: did not receive HSTS header
api.mega.co.nz: could not connect to host
apibot.de: could not connect to host
apience.com: did not receive HSTS header
+apis.blue: could not connect to host
apis.google.com: did not receive HSTS header (error ignored - included regardless)
apis.world: could not connect to host
+apivia.fr: did not receive HSTS header
+apkdv.com: could not connect to host
apkoyunlar.club: could not connect to host
apkriver.com: did not receive HSTS header
apl2bits.net: did not receive HSTS header
@@ -955,7 +1087,6 @@ apm.com.tw: did not receive HSTS header
apmg-certified.com: did not receive HSTS header
apmg-cyber.com: did not receive HSTS header
apnakliyat.com: did not receive HSTS header
-apogeephoto.com: did not receive HSTS header
apolloyl.com: could not connect to host
aponkral.site: could not connect to host
aponkralsunucu.com: could not connect to host
@@ -970,14 +1101,18 @@ appdrinks.com: could not connect to host
appeldorn.me: did not receive HSTS header
appengine.google.com: did not receive HSTS header (error ignored - included regardless)
appimlab.it: could not connect to host
-apple-watch-zubehoer.de: did not receive HSTS header
+apple-watch-zubehoer.de: could not connect to host
apple.ax: could not connect to host
applejacks-bouncy-castles.co.uk: could not connect to host
applez.xyz: could not connect to host
+appliancerepairlosangeles.com: did not receive HSTS header
applic8.com: did not receive HSTS header
+apply55gx.com: could not connect to host
appointed.at: did not receive HSTS header
appraisal-comps.com: could not connect to host
appreciationkards.com: did not receive HSTS header
+apprenticeship.gov: did not receive HSTS header
+apprenticeships.gov: did not receive HSTS header
approlys.fr: did not receive HSTS header
apps-for-fishing.com: could not connect to host
apps4all.sytes.net: could not connect to host
@@ -985,19 +1120,20 @@ appsbystudio.co.uk: did not receive HSTS header
appsdash.io: could not connect to host
apptoutou.com: could not connect to host
appuro.com: did not receive HSTS header
+appxcrypto.com: did not receive HSTS header
aprpullmanportermuseum.org: did not receive HSTS header
aptitude9.com: could not connect to host
-aqilacademy.com.au: could not connect to host
aqqrate.com: could not connect to host
-aquariumaccessories.shop: did not receive HSTS header
+aquariumaccessories.shop: could not connect to host
+aquaundine.net: could not connect to host
aquilaguild.com: could not connect to host
aquilalab.com: could not connect to host
-aquireceitas.com: could not connect to host
+aquireceitas.com: did not receive HSTS header
ar.al: did not receive HSTS header
arabdigitalexpression.org: did not receive HSTS header
+arabsexi.info: could not connect to host
aradulconteaza.ro: could not connect to host
aran.me.uk: could not connect to host
-arawaza.info: could not connect to host
arboineuropa.nl: did not receive HSTS header
arbu.eu: max-age too low: 2419200
arcadiaeng.com: did not receive HSTS header
@@ -1011,9 +1147,6 @@ ardao.me: could not connect to host
ardorlabs.se: could not connect to host
area3.org: could not connect to host
areallyneatwebsite.com: could not connect to host
-arenlor.com: could not connect to host
-arenlor.info: could not connect to host
-arenns.com: could not connect to host
arent.kz: could not connect to host
arenzanaphotography.com: could not connect to host
arewedubstepyet.com: did not receive HSTS header
@@ -1021,7 +1154,6 @@ areyouever.me: could not connect to host
argama-nature.com: did not receive HSTS header
argennon.xyz: could not connect to host
argh.io: could not connect to host
-argovpay.com: did not receive HSTS header
arguggi.co.uk: could not connect to host
ariacreations.net: did not receive HSTS header
arifburhan.online: could not connect to host
@@ -1033,6 +1165,8 @@ arka.gq: did not receive HSTS header
arknodejs.com: could not connect to host
arlen.io: could not connect to host
arlen.se: could not connect to host
+arlingtonwine.net: could not connect to host
+arm-host.com: did not receive HSTS header
armazemdaminiatura.com.br: could not connect to host
armenians.online: could not connect to host
armingrodon.de: did not receive HSTS header
@@ -1042,7 +1176,7 @@ armored.ninja: did not receive HSTS header
armory.consulting: could not connect to host
armory.supplies: could not connect to host
armsday.com: could not connect to host
-armyofbane.com: did not receive HSTS header
+armyofbane.com: could not connect to host
armytricka.cz: did not receive HSTS header
arne-petersen.net: did not receive HSTS header
arnesolutions.com: could not connect to host
@@ -1052,7 +1186,6 @@ aroundme.org: did not receive HSTS header
arpa.ph: did not receive HSTS header
arpr.co: did not receive HSTS header
arrayify.com: could not connect to host
-arresttracker.com: could not connect to host
arrivedconsulting.com: could not connect to host
arrow-cloud.nl: could not connect to host
arrowfunction.com: could not connect to host
@@ -1072,6 +1205,7 @@ arthan.me: could not connect to host
articaexports.com: could not connect to host
artifex21.com: did not receive HSTS header
artifex21.fr: did not receive HSTS header
+artificial.army: could not connect to host
artiming.com: could not connect to host
artisanhd.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
artisavotins.com: could not connect to host
@@ -1079,10 +1213,11 @@ artisense.de: could not connect to host
artisphere.ch: did not receive HSTS header
artisticedgegranite.net: could not connect to host
artistnetwork.nl: did not receive HSTS header
+artnims.com: could not connect to host
arto.bg: did not receive HSTS header
artofeyes.nl: could not connect to host
artsinthevalley.net.au: did not receive HSTS header
-arturkohut.com: could not connect to host
+artstopinc.com: did not receive HSTS header
artyland.ru: could not connect to host
arvamus.eu: could not connect to host
arzaroth.com: did not receive HSTS header
@@ -1093,9 +1228,7 @@ asahikoji.net: could not connect to host
asana.studio: did not receive HSTS header
asasuou.pw: could not connect to host
asc16.com: could not connect to host
-ascamso.com: could not connect to host
aschaefer.net: could not connect to host
-ascii.moe: could not connect to host
asciitable.tips: could not connect to host
asdpress.cn: could not connect to host
asepms.com: max-age too low: 7776000
@@ -1104,16 +1237,16 @@ ashleakunowski.com: could not connect to host
ashleyadum.com: could not connect to host
ashleyfoley.photography: could not connect to host
ashleymedway.com: could not connect to host
-ashutoshmishra.org: did not receive HSTS header
+asian-archi.com.tw: did not receive HSTS header
asianbet77.co: did not receive HSTS header
-asianbet77.net: could not connect to host
+asianbet77.net: did not receive HSTS header
+asiesvenezuela.com: did not receive HSTS header
asisee.co.il: could not connect to host
-ask.fedoraproject.org: did not receive HSTS header
-ask.stg.fedoraproject.org: could not connect to host
+ask.pe: could not connect to host
askfit.cz: did not receive HSTS header
askmagicconch.com: could not connect to host
-asm-x.com: did not receive HSTS header
-asmm.cc: did not receive HSTS header
+asm-x.com: could not connect to host
+asmik-armenie.com: did not receive HSTS header
asmui.ga: could not connect to host
asmui.ml: could not connect to host
asoftwareco.com: did not receive HSTS header
@@ -1126,11 +1259,11 @@ assadrivesloirecher.com: could not connect to host
assdecoeur.org: could not connect to host
assekuranzjobs.de: could not connect to host
asset-alive.com: did not receive HSTS header
-asset-alive.net: did not receive HSTS header
+asset-alive.net: could not connect to host
assetsupervision.com: could not connect to host
assindia.nl: could not connect to host
assurancesmons.be: did not receive HSTS header
-astaninki.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+astaninki.com: could not connect to host
asthon.cn: could not connect to host
astraalivankila.net: could not connect to host
astral.gq: did not receive HSTS header
@@ -1139,13 +1272,14 @@ astrea-voetbal-groningen.nl: could not connect to host
astrolpost.com: could not connect to host
astromelody.com: did not receive HSTS header
astronomie-fulda.de: did not receive HSTS header
-astural.org: did not receive HSTS header
+astrosnail.pt.eu.org: could not connect to host
astutr.co: could not connect to host
asuhe.cc: could not connect to host
asuhe.win: did not receive HSTS header
asuhe.xyz: could not connect to host
async.be: could not connect to host
at1.co: could not connect to host
+atacadodesandalias.com.br: could not connect to host
atacadooptico.com.br: could not connect to host
atavio.at: could not connect to host
atavio.ch: could not connect to host
@@ -1156,15 +1290,15 @@ atelier-rk.com: did not receive HSTS header
atelier-viennois-cannes.fr: did not receive HSTS header
ateliernihongo.ch: did not receive HSTS header
ateliersantgervasi.com: did not receive HSTS header
-atencionbimbo.com: max-age too low: 86400
athaliasoft.com: could not connect to host
athenelive.com: could not connect to host
-athensbusinessresources.us: did not receive HSTS header
+athensbusinessresources.us: could not connect to host
athi.pl: did not receive HSTS header
athul.xyz: could not connect to host
atkdesign.pt: did not receive HSTS header
atlas-5.site: could not connect to host
atlas-staging.ml: could not connect to host
+atlas.co: did not receive HSTS header
atlassian.net: did not receive HSTS header
atlayo.com: did not receive HSTS header
atlex.nl: did not receive HSTS header
@@ -1173,8 +1307,8 @@ atomic.menu: could not connect to host
atomik.pro: did not receive HSTS header
atop.io: could not connect to host
atracaosexshop.com.br: could not connect to host
+atrevillot.com: could not connect to host
attic118.com: could not connect to host
-attilagyorffy.com: could not connect to host
attimidesigns.com: did not receive HSTS header
attogproductions.com: did not receive HSTS header
au-pair24.de: did not receive HSTS header
@@ -1185,6 +1319,8 @@ audiense.com: did not receive HSTS header
audiovisualdevices.com.au: did not receive HSTS header
audividi.shop: did not receive HSTS header
aufmerksamkeitsstudie.com: could not connect to host
+aufprise.de: did not receive HSTS header
+augaware.org: could not connect to host
augenblicke-blog.de: could not connect to host
augias.org: could not connect to host
augix.net: could not connect to host
@@ -1201,10 +1337,9 @@ auroratownshipfd.org: could not connect to host
aurugs.com: did not receive HSTS header
ausec.ch: could not connect to host
auskunftsbegehren.at: did not receive HSTS header
-auslandsjahr-usa.de: did not receive HSTS header
+auslandsjahr-usa.de: could not connect to host
ausnah.me: could not connect to host
-ausschreibungen-suedtirol.it: did not receive HSTS header
-aussiecable.org: did not receive HSTS header
+aussiecable.org: could not connect to host
aussiehq.com.au: did not receive HSTS header
aussiewebmarketing.com.au: did not receive HSTS header
austinmobilemechanics.net: did not receive HSTS header
@@ -1212,6 +1347,7 @@ austinstore.com.br: could not connect to host
austinsutphin.com: could not connect to host
australiancattle.dog: could not connect to host
australianfreebets.com.au: did not receive HSTS header
+australianimmigrationadvisors.com.au: could not connect to host
auth.mail.ru: did not receive HSTS header
authenitech.com: did not receive HSTS header
authentication.io: could not connect to host
@@ -1219,6 +1355,7 @@ authint.com: could not connect to host
authland.com: could not connect to host
author24.ru: did not receive HSTS header
authoritynutrition.com: did not receive HSTS header
+authorsguild.in: did not receive HSTS header
authsrv.nl.eu.org: could not connect to host
auto-serwis.zgorzelec.pl: could not connect to host
auto3d.cn: could not connect to host
@@ -1228,32 +1365,30 @@ autobedrijfschalkoort.nl: did not receive HSTS header
autocarparts.ro: could not connect to host
autodeploy.it: could not connect to host
autoecolebudget.ch: did not receive HSTS header
-autoecoledumontblanc.com: did not receive HSTS header
+autoecoledumontblanc.com: could not connect to host
autoeet.cz: did not receive HSTS header
autojuhos.sk: could not connect to host
automobiles5.com: could not connect to host
autos-retro-plaisir.com: did not receive HSTS header
-autosearch.me: could not connect to host
+autosearch.me: did not receive HSTS header
autosiero.nl: did not receive HSTS header
autostock.me: could not connect to host
autostop-occasions.be: could not connect to host
autotsum.com: could not connect to host
autoxy.it: did not receive HSTS header
-autozane.com: could not connect to host
autumnwindsagility.com: could not connect to host
auverbox.ovh: could not connect to host
-auvernet.org: could not connect to host
auvious.com: did not receive HSTS header
auxetek.se: could not connect to host
auxiliumincrementum.co.uk: could not connect to host
av.de: did not receive HSTS header
+av01.tv: could not connect to host
av163.cc: could not connect to host
avadatravel.com: did not receive HSTS header
-avalon-island.ru: could not connect to host
avantmfg.com: did not receive HSTS header
avaq.fr: did not receive HSTS header
avastantivirus.ro: did not receive HSTS header
-avdelivers.com: could not connect to host
+avdelivers.com: did not receive HSTS header
avdh.top: could not connect to host
avec-ou-sans-ordonnance.fr: could not connect to host
aveling-adventure.co.uk: did not receive HSTS header
@@ -1262,7 +1397,10 @@ avi9526.pp.ua: could not connect to host
aviacao.pt: did not receive HSTS header
avidcruiser.com: did not receive HSTS header
aviodeals.com: could not connect to host
+avitres.com: could not connect to host
+avmemo.com: could not connect to host
avmo.pw: could not connect to host
+avmoo.com: could not connect to host
avonlearningcampus.com: could not connect to host
avso.pw: could not connect to host
avspot.net: could not connect to host
@@ -1270,12 +1408,14 @@ avus-automobile.com: did not receive HSTS header
avxo.pw: could not connect to host
awan.tech: could not connect to host
awanderlustadventure.com: did not receive HSTS header
+awccanadianpharmacy.com: could not connect to host
awei.pub: could not connect to host
awf0.xyz: could not connect to host
awg-mode.de: did not receive HSTS header
aww.moe: did not receive HSTS header
awxg.eu.org: could not connect to host
awxg.org: could not connect to host
+axa-middleeast.com: could not connect to host
axado.com.br: could not connect to host
axel-fischer.net: could not connect to host
axel-fischer.science: could not connect to host
@@ -1286,42 +1426,53 @@ axfr.it: did not receive HSTS header
axg.io: did not receive HSTS header
axialsports.com: did not receive HSTS header
axiumacademy.com: did not receive HSTS header
+axolotlfarm.org: could not connect to host
axolsoft.com: max-age too low: 10540800
+axtudo.com: did not receive HSTS header
+axtux.tk: could not connect to host
axxial.tk: could not connect to host
ayahuascaadvisor.com: could not connect to host
ayatk.com: did not receive HSTS header
-aymerick.fr: did not receive HSTS header
+aymericlagier.com: could not connect to host
ayor.jp: could not connect to host
ayor.tech: could not connect to host
ayuru.info: could not connect to host
-az-moga.bg: could not connect to host
az-vinyl-boden.de: could not connect to host
-azabani.com: did not receive HSTS header
azamra.com: did not receive HSTS header
+azia.info: could not connect to host
azino777.ru: could not connect to host
azirevpn.com: did not receive HSTS header
azlo.com: did not receive HSTS header
azprep.us: could not connect to host
-b-boom.nl: could not connect to host
+azun.pl: did not receive HSTS header
+azuxul.fr: could not connect to host
b-entropy.com: could not connect to host
b-pi.duckdns.org: could not connect to host
b-rickroll-e.pw: could not connect to host
-b-space.de: did not receive HSTS header
+b-space.de: could not connect to host
b1236.com: could not connect to host
+b2and.com: could not connect to host
b2b-nestle.com.br: could not connect to host
b2bpromoteit.com: did not receive HSTS header
b3orion.com: could not connect to host
+b61688.com: could not connect to host
b8a.me: could not connect to host
b9520.com: could not connect to host
b9568.com: could not connect to host
b96899.com: could not connect to host
+b9886.com: could not connect to host
b98886.com: could not connect to host
b9930.com: could not connect to host
+b99520.com: could not connect to host
b9970.com: could not connect to host
b9980.com: could not connect to host
+b99881.com: could not connect to host
+b99882.com: could not connect to host
+b99883.com: could not connect to host
+b99885.com: could not connect to host
b9winner.com: could not connect to host
babelfisch.eu: could not connect to host
-babursahvizeofisi.com: did not receive HSTS header
+babursahvizeofisi.com: could not connect to host
baby-click.de: could not connect to host
babybee.ie: could not connect to host
babybic.hu: could not connect to host
@@ -1330,7 +1481,7 @@ babyhouse.xyz: could not connect to host
babyliss-pro.com: could not connect to host
babyliss-pro.net: did not receive HSTS header
babysaying.me: could not connect to host
-babystep.tv: could not connect to host
+babystep.tv: did not receive HSTS header
bacchanallia.com: could not connect to host
bacimg.com: did not receive HSTS header
back-bone.nl: did not receive HSTS header
@@ -1338,7 +1489,9 @@ backenmachtgluecklich.de: max-age too low: 2592000
backgroundchecks.online: did not receive HSTS header
backgroundz.net: could not connect to host
backintomotionphysiotherapy.com: did not receive HSTS header
+backlogapp.io: could not connect to host
backscattering.de: did not receive HSTS header
+backupsinop.com.br: did not receive HSTS header
backyardbbqbash.com: did not receive HSTS header
baconate.com: did not receive HSTS header
bad.show: could not connect to host
@@ -1346,6 +1499,7 @@ badai.at: could not connect to host
badbee.cc: could not connect to host
badcronjob.com: could not connect to host
badenhard.eu: could not connect to host
+badgirlsbible.com: could not connect to host
badkamergigant.com: could not connect to host
badlink.org: could not connect to host
baff.lu: could not connect to host
@@ -1366,13 +1520,15 @@ balatoni-nyar.hu: did not receive HSTS header
balcan-underground.net: could not connect to host
baldwinkoo.com: could not connect to host
baleares.party: could not connect to host
-balidesignshop.com.br: could not connect to host
+balenciaspa.com: did not receive HSTS header
balihai.com: did not receive HSTS header
+balilingo.ooo: did not receive HSTS header
+ballbusting-cbt.com: could not connect to host
balloonphp.com: could not connect to host
-ballparkbuns.com: max-age too low: 86400
balnearionaturaspa.com: did not receive HSTS header
balonmano.co: could not connect to host
bals.org: did not receive HSTS header
+balticer.de: did not receive HSTS header
bambambaby.com.br: could not connect to host
bamtoki.com: could not connect to host
bamtoki.se: could not connect to host
@@ -1383,28 +1539,37 @@ banbanchs.com: could not connect to host
banchethai.com: could not connect to host
bandally.net: could not connect to host
bandar303.cc: did not receive HSTS header
+bandar303.id: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+bandar303.win: did not receive HSTS header
bandarifamily.com: could not connect to host
-bandb.xyz: could not connect to host
-bandrcrafts.com: did not receive HSTS header
+bandb.xyz: did not receive HSTS header
+bandrcrafts.com: could not connect to host
banduhn.com: did not receive HSTS header
+bangdream.ga: could not connect to host
bangzafran.com: did not receive HSTS header
bank: could not connect to host
bankcircle.co.in: could not connect to host
+bankersonline.com: did not receive HSTS header
+bankitt.network: could not connect to host
bankmilhas.com.br: did not receive HSTS header
bankofrealty.review: could not connect to host
banksaround.com: did not receive HSTS header
bannisbierblog.de: could not connect to host
banqingdiao.com: could not connect to host
banri.me: could not connect to host
+banxehoi.com: did not receive HSTS header
baosuckhoedoisong.net: could not connect to host
+baptistboard.com: did not receive HSTS header
baptiste-destombes.fr: did not receive HSTS header
baraxolka.ru: could not connect to host
-barbershop-harmony.org: could not connect to host
-barcel.com.mx: max-age too low: 86400
+barcouniforms.com: did not receive HSTS header
+bardiel.de: max-age too low: 0
bardiharborow.com: did not receive HSTS header
barely.sexy: could not connect to host
bargainmovingcompany.com: could not connect to host
bariller.fr: did not receive HSTS header
+barisi.me: could not connect to host
+barnrats.com: could not connect to host
baropkamp.be: did not receive HSTS header
barprive.com: could not connect to host
barqo.co: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -1415,20 +1580,25 @@ barrut.me: did not receive HSTS header
barshout.co.uk: could not connect to host
barss.io: could not connect to host
bartbania.com: did not receive HSTS header
+bartelldrugs.com: did not receive HSTS header
barunisystems.com: could not connect to host
+bascht.com: did not receive HSTS header
basculasconfiables.com: could not connect to host
bashc.at: could not connect to host
bashcode.ninja: could not connect to host
basicsolutionsus.com: could not connect to host
basilisk.io: could not connect to host
+basilm.co: could not connect to host
baskettemple.com: did not receive HSTS header
basnieuwenhuizen.nl: did not receive HSTS header
bassh.net: did not receive HSTS header
batfoundry.com: could not connect to host
+batten.eu.org: could not connect to host
baud.ninja: could not connect to host
baudairenergyservices.com: could not connect to host
baum.ga: did not receive HSTS header
baumstark.ca: could not connect to host
+bayerstefan.eu: could not connect to host
bayinstruments.com: could not connect to host
bayrisch-fuer-anfaenger.de: did not receive HSTS header
baysse.eu: did not receive HSTS header
@@ -1437,10 +1607,10 @@ bazisszoftver.hu: could not connect to host
bb-shiokaze.jp: did not receive HSTS header
bbb1991.me: could not connect to host
bbdos.ru: could not connect to host
+bbj.io: did not receive HSTS header
bbkanews.com: did not receive HSTS header
bblovess.cn: could not connect to host
bbrinck.eu: could not connect to host
-bbuio.com: max-age too low: 86400
bbw-wrestling.com: could not connect to host
bbwdom.xyz: could not connect to host
bbwf.de: did not receive HSTS header
@@ -1454,16 +1624,19 @@ bccx.com: could not connect to host
bcheng.cf: did not receive HSTS header
bckp.de: could not connect to host
bcm.com.au: did not receive HSTS header
-bcnet.hk: did not receive HSTS header
+bcnet.hk: could not connect to host
+bcodeur.com: did not receive HSTS header
bcradio.org: could not connect to host
bcsytv.com: could not connect to host
bcweightlifting.ca: could not connect to host
+bdata.cl: did not receive HSTS header
bddemir.com: could not connect to host
bde-epitech.fr: could not connect to host
bdenzer.com: did not receive HSTS header
bdenzer.xyz: could not connect to host
bdsmxxxpics.com: could not connect to host
be-real.life: did not receive HSTS header
+be9966.com: could not connect to host
beach-inspector.com: did not receive HSTS header
beachi.es: could not connect to host
beaglewatch.com: could not connect to host
@@ -1471,22 +1644,26 @@ beagreenbean.co.uk: could not connect to host
beamitapp.com: could not connect to host
beanbot.party: could not connect to host
beanworks.ca: did not receive HSTS header
-bearden.io: did not receive HSTS header
+bearden.io: could not connect to host
beardydave.com: did not receive HSTS header
beasel.biz: could not connect to host
beastlog.tk: could not connect to host
beastowner.com: did not receive HSTS header
+beautyconcept.co: did not receive HSTS header
beavers.io: could not connect to host
bebeefy.uk: could not connect to host
bebesurdoue.com: could not connect to host
beccajoshwedding.com: could not connect to host
-becklove.cn: did not receive HSTS header
+becklove.cn: could not connect to host
becubed.co: could not connect to host
bedabox.com: did not receive HSTS header
bedeta.de: could not connect to host
+bedouille.com: could not connect to host
bedreid.dk: did not receive HSTS header
bedrijvenadministratie.nl: could not connect to host
+beelen.fr: could not connect to host
beerboutique.com.br: could not connect to host
+beermedlar.com: could not connect to host
beersandco.ch: could not connect to host
beetgroup.id: could not connect to host
beetleroadstories.com: could not connect to host
@@ -1512,10 +1689,15 @@ bemcorp.de: did not receive HSTS header
bemvindoaolar.com.br: did not receive HSTS header
bemyvictim.com: max-age too low: 2678400
bendechrai.com: did not receive HSTS header
+benedikt-tuchen.de: did not receive HSTS header
benediktdichgans.de: did not receive HSTS header
beneffy.com: did not receive HSTS header
benevisim.com: could not connect to host
+benevita.life: could not connect to host
+benevita.live: could not connect to host
+benevita.organic: could not connect to host
benfairclough.com: could not connect to host
+benhchuyenkhoa.net: could not connect to host
benjakesjohnson.com: could not connect to host
benjamin-horvath.com: could not connect to host
benjamin-suess.de: could not connect to host
@@ -1529,21 +1711,21 @@ benzkosmetik.de: did not receive HSTS header
benzou-space.com: could not connect to host
beourvictim.com: max-age too low: 2678400
bep.gov: did not receive HSTS header
-bep362.vn: did not receive HSTS header
+bep362.vn: could not connect to host
beraru.tk: could not connect to host
+beraten-entwickeln-steuern.de: could not connect to host
berdu.id: did not receive HSTS header
berduri.com: could not connect to host
berger.work: could not connect to host
+bergfex.at: did not receive HSTS header
bergland-seefeld.at: did not receive HSTS header
+bergstoneware.com: could not connect to host
berhampore-gateway.tk: could not connect to host
berlatih.com: did not receive HSTS header
-berliancom.com: did not receive HSTS header
berlin-kohlefrei.de: could not connect to host
berlinleaks.com: could not connect to host
bermytraq.bm: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
bernexskiclub.ch: did not receive HSTS header
-berr.yt: could not connect to host
-berry.cat: could not connect to host
berrymark.be: did not receive HSTS header
berseb.se: could not connect to host
berthelier.me: could not connect to host
@@ -1556,7 +1738,7 @@ besixdouze.world: could not connect to host
beslider.com: could not connect to host
besnik.de: could not connect to host
besola.de: could not connect to host
-best-wedding-quotes.com: did not receive HSTS header
+best-wedding-quotes.com: could not connect to host
bestattorney.com: did not receive HSTS header
bestbeards.ca: could not connect to host
bestbestbitcoin.com: could not connect to host
@@ -1570,11 +1752,13 @@ bestof1001.de: could not connect to host
bestorangeseo.com: could not connect to host
bestpaintings.nl: did not receive HSTS header
bestschools.top: did not receive HSTS header
+bestwarezone.com: could not connect to host
+bet990.com: could not connect to host
betaclean.fr: did not receive HSTS header
betafive.net: could not connect to host
betakah.net: could not connect to host
betamint.org: did not receive HSTS header
-betcafearena.ro: could not connect to host
+betcafearena.ro: did not receive HSTS header
betformular.com: could not connect to host
bethditto.com: did not receive HSTS header
betkoo.com: could not connect to host
@@ -1583,20 +1767,22 @@ betonmoney.com: could not connect to host
betplanning.it: did not receive HSTS header
bets.de: did not receive HSTS header
bets.gg: did not receive HSTS header
+betshoot.com: could not connect to host
betsonlinefree.com.au: could not connect to host
betterlifemakers.com: max-age too low: 200
-bettertest.it: could not connect to host
bettween.com: did not receive HSTS header
betz.ro: could not connect to host
beulahtabernacle.com: could not connect to host
bevapehappy.com: did not receive HSTS header
bewerbungsfibel.de: did not receive HSTS header
+bewertet.de: could not connect to host
bexit-hosting.nl: could not connect to host
bexit-security.eu: could not connect to host
bexit-security.nl: could not connect to host
bey.io: could not connect to host
beylikduzum.com: did not receive HSTS header
beyond-edge.com: could not connect to host
+beyond-rational.com: did not receive HSTS header
beyuna.co.uk: did not receive HSTS header
beyuna.eu: did not receive HSTS header
beyuna.nl: did not receive HSTS header
@@ -1613,6 +1799,8 @@ bffm.biz: could not connect to host
bfrailwayclub.cf: could not connect to host
bgcparkstad.nl: did not receive HSTS header
bgdaddy.com: did not receive HSTS header
+bgenlisted.com: could not connect to host
+bgfashion.net: could not connect to host
bgneuesheim.de: did not receive HSTS header
bhatia.at: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
bianinapiccanovias.com: could not connect to host
@@ -1620,9 +1808,12 @@ biaoqingfuhao.net: did not receive HSTS header
biaoqingfuhao.org: did not receive HSTS header
biapinheiro.com.br: max-age too low: 5184000
biblerhymes.com: did not receive HSTS header
+bibliafeminina.com.br: could not connect to host
+bichines.es: did not receive HSTS header
bichonfrise.com.br: could not connect to host
bichonmaltes.com.br: could not connect to host
bidon.ca: did not receive HSTS header
+bidorbuy.co.ke: did not receive HSTS header
bieberium.de: could not connect to host
biego.cn: did not receive HSTS header
bielsa.me: did not receive HSTS header
@@ -1630,17 +1821,18 @@ bienenblog.cc: could not connect to host
bier.jp: did not receive HSTS header
bierbringer.at: could not connect to host
bierochs.org: could not connect to host
-biftin.net: could not connect to host
big-black.de: did not receive HSTS header
bigbbqbrush.bid: could not connect to host
bigbounceentertainment.co.uk: could not connect to host
bigbrownpromotions.com.au: did not receive HSTS header
bigcorporateevents.com: could not connect to host
bigerbio.com: could not connect to host
+bigfunbouncycastles.com: could not connect to host
biglagoonrentals.com: did not receive HSTS header
biglou.com: max-age too low: 3153600
bigshinylock.minazo.net: could not connect to host
biguixhe.net: could not connect to host
+bijoux.com.br: could not connect to host
bijouxdegriffe.com.br: could not connect to host
bijugeral.com.br: could not connect to host
bikelifetvkidsquads.co.uk: could not connect to host
@@ -1652,19 +1844,17 @@ biletua.de: could not connect to host
biletyplus.com: could not connect to host
biletyplus.ru: did not receive HSTS header
bill-nye-the.science: did not receive HSTS header
+billaud.eu.org: could not connect to host
billdestler.com: did not receive HSTS header
billigssl.dk: did not receive HSTS header
-billin.net: did not receive HSTS header
billkiss.com: could not connect to host
billninja.com: did not receive HSTS header
billrobinson.io: could not connect to host
billrusling.com: could not connect to host
-bimbo.com: max-age too low: 86400
-bimbo.com.ar: max-age too low: 86400
-bimbobakeriesusa.com: max-age too low: 86400
binam.center: could not connect to host
+binarization.net: could not connect to host
+binarization.org: did not receive HSTS header
binaryabstraction.com: could not connect to host
-binaryevolved.com: did not receive HSTS header
binaryfigments.com: max-age too low: 86400
binderapp.net: could not connect to host
bingcheung.com: could not connect to host
@@ -1672,17 +1862,22 @@ bingcheung.org: could not connect to host
bingo-wear.com: could not connect to host
bingo9.net: could not connect to host
bingofriends.com: could not connect to host
+bingostars.com: did not receive HSTS header
binimo.com: could not connect to host
+binsp.net: could not connect to host
biocrafting.net: could not connect to host
bioespuna.eu: did not receive HSTS header
biofam.ru: did not receive HSTS header
-bioknowme.com: did not receive HSTS header
biologis.ch: could not connect to host
+biomax-mep.com.br: did not receive HSTS header
bionicspirit.com: did not receive HSTS header
biophysik-ssl.de: did not receive HSTS header
+biopreferred.gov: could not connect to host
biou.me: could not connect to host
biovalue.eu: could not connect to host
bip.gov.sa: could not connect to host
+birdandbranchnyc.com: max-age too low: 43200
+birkengarten.ch: could not connect to host
birkman.com: did not receive HSTS header
bischoff-mathey.family: could not connect to host
biscuits-rec.com: could not connect to host
@@ -1690,7 +1885,7 @@ biscuits-shop.com: could not connect to host
bismarck.moe: did not receive HSTS header
bisterfeldt.com: did not receive HSTS header
biswas.me: could not connect to host
-bit.biz.tr: could not connect to host
+bitace.com: did not receive HSTS header
bitbit.org: did not receive HSTS header
bitbr.net: did not receive HSTS header
bitcantor.com: did not receive HSTS header
@@ -1698,12 +1893,15 @@ bitchan.it: could not connect to host
bitcoin-casino-no-deposit-bonus.com: max-age too low: 0
bitcoin-class.com: could not connect to host
bitcoin-daijin.com: could not connect to host
+bitcoin.com: did not receive HSTS header
bitcoinec.info: could not connect to host
+bitcoinfo.jp: did not receive HSTS header
bitcoinhk.org: did not receive HSTS header
bitcoinjpn.com: could not connect to host
-bitcoinprivacy.net: did not receive HSTS header
-bitcoinworld.me: did not receive HSTS header
+bitcoinprivacy.net: could not connect to host
+bitcoinworld.me: could not connect to host
bitconcepts.co.uk: could not connect to host
+bitedge.com: did not receive HSTS header
bitenose.net: could not connect to host
bitenose.org: could not connect to host
biteoftech.com: did not receive HSTS header
@@ -1713,29 +1911,33 @@ bitfarm-archiv.com: did not receive HSTS header
bitfarm-archiv.de: did not receive HSTS header
bitheus.com: could not connect to host
bithosting.io: did not receive HSTS header
-bitk.co: could not connect to host
-bitk.co.uk: could not connect to host
-bitk.eu: could not connect to host
bitmain.com.ua: could not connect to host
bitmaincare.com.ua: could not connect to host
bitmaincare.ru: could not connect to host
+bitmainwarranty.com.ua: could not connect to host
+bitmainwarranty.ru: could not connect to host
+bitmex.com: did not receive HSTS header
bitmexin.com: could not connect to host
-bitmoe.com: did not receive HSTS header
+bitmon.net: did not receive HSTS header
bitnet.io: did not receive HSTS header
bitplay.space: could not connect to host
bitpod.de: could not connect to host
+bitpoll.de: could not connect to host
+bitpoll.org: could not connect to host
bitrage.de: could not connect to host
bitraum.io: could not connect to host
+bitroll.com: could not connect to host
bitsafe.systems: did not receive HSTS header
bitsensor.io: did not receive HSTS header
-bitskins.co: did not receive HSTS header
bitstep.ca: could not connect to host
bittervault.xyz: could not connect to host
+bituptick.com: did not receive HSTS header
+bitvegas.com: did not receive HSTS header
bitvigor.com: could not connect to host
bitwrought.net: could not connect to host
bityes.org: could not connect to host
bivsi.com: could not connect to host
-bizcms.com: did not receive HSTS header
+bizcms.com: could not connect to host
bizon.sk: did not receive HSTS header
bizpare.com: did not receive HSTS header
bizzartech.com: did not receive HSTS header
@@ -1746,26 +1948,27 @@ bkb-skandal.ch: could not connect to host
black-armada.com: could not connect to host
black-armada.com.pl: could not connect to host
black-armada.pl: could not connect to host
+black-gay-porn.biz: could not connect to host
black-octopus.ru: could not connect to host
-black-pool.net: did not receive HSTS header
blackberrycentral.com: could not connect to host
blackburn.link: could not connect to host
blackdiam.net: did not receive HSTS header
+blackilli.de: could not connect to host
+blackkeg.ca: could not connect to host
blacklane.com: did not receive HSTS header
blacklightparty.be: could not connect to host
blackly.uk: max-age too low: 0
-blackmagic.sk: did not receive HSTS header
+blackmagic.sk: could not connect to host
blackmirror.com.au: did not receive HSTS header
-blackmonday.gr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+blacknova.io: could not connect to host
blackpayment.ru: did not receive HSTS header
blackphantom.de: could not connect to host
blackscreen.me: could not connect to host
blackunicorn.wtf: could not connect to host
bladesmith.io: did not receive HSTS header
blakerandall.xyz: could not connect to host
-blameomar.com: could not connect to host
blantik.net: could not connect to host
-blarg.co: could not connect to host
+blarg.co: did not receive HSTS header
blauwwit.be: did not receive HSTS header
blazeit.io: could not connect to host
bleep.zone: could not connect to host
@@ -1773,12 +1976,12 @@ blendlecdn.com: could not connect to host
blenheimchalcot.com: did not receive HSTS header
blessnet.jp: did not receive HSTS header
blha303.com.au: could not connect to host
-bliesekow.net: could not connect to host
blindaryproduction.tk: could not connect to host
blindsexdate.nl: did not receive HSTS header
blinkenlight.co.uk: could not connect to host
blinkenlight.com.au: could not connect to host
blmiller.com: did not receive HSTS header
+blockchainced.com: could not connect to host
blocksatz-medien.de: could not connect to host
blockshopauto.com: could not connect to host
blog-ritaline.com: could not connect to host
@@ -1787,11 +1990,10 @@ blog.cyveillance.com: did not receive HSTS header
blog.gparent.org: could not connect to host
blog.torproject.org: max-age too low: 1000
blogabout.ru: could not connect to host
-blogarts.net: did not receive HSTS header
blogdieconomia.it: did not receive HSTS header
blogdimoda.com: did not receive HSTS header
blogdimotori.it: did not receive HSTS header
-bloglife-bb.com: did not receive HSTS header
+bloglife-bb.com: could not connect to host
bloglikepro.com: could not connect to host
blognone.com: did not receive HSTS header
blognr.com: could not connect to host
@@ -1805,18 +2007,21 @@ blowjs.com: could not connect to host
bls-fiduciaire.be: did not receive HSTS header
bltc.co: could not connect to host
blubbablasen.de: could not connect to host
+blubberladen.de: did not receive HSTS header
blucas.org: did not receive HSTS header
blue17.co.uk: did not receive HSTS header
bluebill.net: did not receive HSTS header
bluecon.eu: did not receive HSTS header
+bluefinger.nl: did not receive HSTS header
blueglobalmedia.com: could not connect to host
bluehawk.cloud: did not receive HSTS header
blueliv.com: did not receive HSTS header
-bluemosh.com: could not connect to host
-blueoakart.com: could not connect to host
+bluemoonroleplaying.com: could not connect to host
bluepoint.foundation: could not connect to host
bluepoint.institute: could not connect to host
+blueridgesecuritycameras.com: did not receive HSTS header
bluescloud.xyz: could not connect to host
+bluesecure.com.br: did not receive HSTS header
bluetenmeer.com: did not receive HSTS header
bluezonehealth.co.uk: did not receive HSTS header
bluketing.com: did not receive HSTS header
@@ -1834,14 +2039,17 @@ bm-immo.ch: could not connect to host
bm-trading.nl: did not receive HSTS header
bmet.de: did not receive HSTS header
bmoattachments.org: did not receive HSTS header
+bn4t.me: could not connect to host
bngsecure.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
bnhlibrary.com: did not receive HSTS header
board-buy.ru: could not connect to host
bobaobei.net: could not connect to host
bobaobei.org: could not connect to host
+bobep.ru: could not connect to host
bobiji.com: did not receive HSTS header
+boboates.com: did not receive HSTS header
bodo-wolff.de: could not connect to host
-bodrumfarm.com: did not receive HSTS header
+bodrumfarm.com: could not connect to host
bodyblog.nl: did not receive HSTS header
bodybuilding-legends.com: could not connect to host
bodybuilding.events: could not connect to host
@@ -1855,7 +2063,9 @@ bohyn.cz: could not connect to host
boiadeirodeberna.com: could not connect to host
boilesen.com: did not receive HSTS header
bokeyy.com: could not connect to host
+bokutake.com: could not connect to host
bolainfoasia.com: did not receive HSTS header
+bolivarfm.com.ve: did not receive HSTS header
boltdata.io: could not connect to host
boltn.uk: did not receive HSTS header
bolwerk.com.br: did not receive HSTS header
@@ -1863,8 +2073,9 @@ bomberus.de: could not connect to host
bombsquad.studio: could not connect to host
bonamihome.ro: could not connect to host
bonapp.restaurant: could not connect to host
+bondagefetishstore.com: could not connect to host
bondtofte.dk: did not receive HSTS header
-boneko.de: could not connect to host
+boneko.de: did not receive HSTS header
bonigo.de: did not receive HSTS header
bonitabrazilian.co.nz: did not receive HSTS header
bonnin.fr: did not receive HSTS header
@@ -1880,29 +2091,33 @@ bookingentertainment.com: did not receive HSTS header
bookmakersfreebets.com.au: could not connect to host
bookofraonlinecasinos.com: could not connect to host
bookreport.ga: could not connect to host
+bookwitty.social: could not connect to host
boomerang.com: did not receive HSTS header
boomsaki.com: did not receive HSTS header
boomsakis.com: did not receive HSTS header
boosterlearnpro.com: did not receive HSTS header
-boostgame.win: could not connect to host
boote.wien: did not receive HSTS header
booter.es: could not connect to host
booth.in.th: could not connect to host
bootikexpress.fr: did not receive HSTS header
boozinyan.com: could not connect to host
bopera.co.uk: could not connect to host
+borchers-media.de: could not connect to host
+borchers.ninja: did not receive HSTS header
borderlinegroup.com: could not connect to host
boringsecurity.net: could not connect to host
-boris.one: did not receive HSTS header
+boris.one: could not connect to host
borisavstankovic.rs: could not connect to host
borisbesemer.com: could not connect to host
born-to-learn.com: did not receive HSTS header
borrelioz.com: did not receive HSTS header
borscheid-wenig.com: did not receive HSTS header
boschee.net: could not connect to host
+botmanager.pl: could not connect to host
botox.bz: did not receive HSTS header
boueki.jp: did not receive HSTS header
boueki.org: did not receive HSTS header
+bouk.co: could not connect to host
bounce-r-us.co.uk: did not receive HSTS header
bounceboxspc.com: did not receive HSTS header
bouncecoffee.com: did not receive HSTS header
@@ -1925,12 +2140,13 @@ boxlitepackaging.com: did not receive HSTS header
boxview.com: could not connect to host
boyan.in: could not connect to host
boyfriendhusband.men: did not receive HSTS header
-bozemancarpetcleaningservices.com: could not connect to host
+boypoint.de: could not connect to host
+bozemancarpetcleaningservices.com: did not receive HSTS header
bp-wahl.at: did not receive HSTS header
bpadvisors.eu: could not connect to host
bqcp.net: could not connect to host
bqtoolbox.com: could not connect to host
-bracoitaliano.com.br: did not receive HSTS header
+braemer-it-consulting.de: could not connect to host
bragasoft.com.br: did not receive HSTS header
bragaweb.com.br: could not connect to host
brainbuxa.com: did not receive HSTS header
@@ -1947,7 +2163,6 @@ brainvation.de: did not receive HSTS header
brakstad.org: could not connect to host
bran.cc: could not connect to host
bran.soy: could not connect to host
-branchtrack.com: did not receive HSTS header
branchzero.com: did not receive HSTS header
brand-foo.com: did not receive HSTS header
brand-foo.jp: did not receive HSTS header
@@ -1960,12 +2175,10 @@ brandred.net: could not connect to host
brandspray.com: could not connect to host
brasilien.guide: could not connect to host
brasilmorar.com: did not receive HSTS header
-bratteng.xyz: did not receive HSTS header
bravz.de: could not connect to host
brb.city: did not receive HSTS header
breatheav.com: did not receive HSTS header
breatheproduction.com: did not receive HSTS header
-breest.net: could not connect to host
breeswish.org: did not receive HSTS header
brenden.net.au: could not connect to host
bress.cloud: could not connect to host
@@ -1976,7 +2189,6 @@ brianpcurran.com: did not receive HSTS header
brickoo.com: could not connect to host
brickwerks.io: could not connect to host
brickyardbuffalo.com: did not receive HSTS header
-brideandgroomdirect.ie: could not connect to host
bridgeout.com: could not connect to host
bridholm.se: could not connect to host
brightfuturemadebyme.com: could not connect to host
@@ -1986,30 +2198,35 @@ brightstarkids.net: did not receive HSTS header
brightstarkids.sg: did not receive HSTS header
brilliantbuilders.co.uk: did not receive HSTS header
brimspark.com: could not connect to host
+brinkhu.is: could not connect to host
brinkmann.one: could not connect to host
+brinquedoseducativos.art.br: did not receive HSTS header
brio-ukraine.store: could not connect to host
+britishmeat.com: could not connect to host
britzer-toner.de: did not receive HSTS header
brivadois.ovh: did not receive HSTS header
brix.ninja: did not receive HSTS header
brks.xyz: could not connect to host
brmascots.com: could not connect to host
-brmsalescommunity.com: could not connect to host
broerweb.nl: could not connect to host
broken-oak.com: could not connect to host
brookechase.com: did not receive HSTS header
brookframework.org: could not connect to host
+brossman.it: could not connect to host
brownlawoffice.us: did not receive HSTS header
browserid.org: could not connect to host
brplusdigital.com: could not connect to host
brrd.io: could not connect to host
brrr.fr: could not connect to host
-brunix.net: did not receive HSTS header
+brunix.net: could not connect to host
brunoonline.co.uk: could not connect to host
+brunoramos.com: could not connect to host
+brunoramos.org: could not connect to host
bryancastillo.site: could not connect to host
bryanshearer.accountant: did not receive HSTS header
bryn.xyz: could not connect to host
brynnan.nl: could not connect to host
-brztec.com: did not receive HSTS header
+brztec.com: could not connect to host
bsagan.fr: did not receive HSTS header
bsalyzer.com: could not connect to host
bsc01.dyndns.org: could not connect to host
@@ -2021,7 +2238,7 @@ bsohoekvanholland.nl: could not connect to host
bsuess.de: could not connect to host
btc-e.com: did not receive HSTS header
btcdlc.com: could not connect to host
-btcgo.nl: could not connect to host
+btcgo.nl: did not receive HSTS header
btcp.space: could not connect to host
btcpot.ltd: did not receive HSTS header
btku.org: could not connect to host
@@ -2034,7 +2251,7 @@ buchheld.at: could not connect to host
buchverlag-scholz.de: did not receive HSTS header
bucket.tk: could not connect to host
buckmulligans.com: did not receive HSTS header
-buddhistische-weisheiten.org: did not receive HSTS header
+buddhistische-weisheiten.org: could not connect to host
budgetenergievriendenvoordeel.nl: could not connect to host
budgetthostels.nl: did not receive HSTS header
budskap.eu: did not receive HSTS header
@@ -2042,6 +2259,7 @@ buenosairesestetica.com.ar: could not connect to host
buenotour.ru: did not receive HSTS header
buettgens.net: max-age too low: 2592000
buffalodrinkinggame.beer: did not receive HSTS header
+bugtrack.co.uk: did not receive HSTS header
bugtrack.io: could not connect to host
bugwie.com: did not receive HSTS header
buhler.pro: did not receive HSTS header
@@ -2063,6 +2281,7 @@ buldogueingles.com.br: could not connect to host
bulgarien.guide: could not connect to host
bulkbuy.tech: could not connect to host
bullbits.com: max-age too low: 0
+bulldoghire.co.uk: did not receive HSTS header
bulletbabu.com: could not connect to host
bulletpoint.cz: could not connect to host
bullterrier.me: could not connect to host
@@ -2072,9 +2291,9 @@ bumshow.ru: did not receive HSTS header
bunadarbankinn.is: could not connect to host
bunaken.asia: could not connect to host
bunbomenu.de: could not connect to host
+bundaberg.com: did not receive HSTS header
bunsenlabs.org: max-age too low: 2592000
-buonventosbt.eu: could not connect to host
-bupu.ml: did not receive HSTS header
+buonventosbt.eu: did not receive HSTS header
burckardtnet.de: did not receive HSTS header
bureaubolster.nl: did not receive HSTS header
bureaugravity.com: did not receive HSTS header
@@ -2082,6 +2301,7 @@ burian-server.cz: could not connect to host
burlesquemakeup.com: did not receive HSTS header
burningcrash.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
burpsuite.site: could not connect to host
+burroughsid.com: could not connect to host
burrow.ovh: could not connect to host
burrowingsec.com: could not connect to host
burtrum.top: could not connect to host
@@ -2098,21 +2318,24 @@ businessloanconnection.org: did not receive HSTS header
businessmodeler.se: could not connect to host
bustabit.com: could not connect to host
bustimes.org.uk: did not receive HSTS header
-busybee360.com: did not receive HSTS header
+busybee360.com: could not connect to host
butchersworkshop.com: did not receive HSTS header
butian518.com: did not receive HSTS header
butt.repair: could not connect to host
buttercoin.com: could not connect to host
butterfieldstraining.com: could not connect to host
buturyu.org: did not receive HSTS header
-buvinghausen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+buvinghausen.com: max-age too low: 86400
buybaby.eu: could not connect to host
+buybike.shop: could not connect to host
buydesired.com: did not receive HSTS header
+buyessay.org: could not connect to host
+buyessays.net: could not connect to host
buyfox.de: did not receive HSTS header
buyharpoon.com: could not connect to host
-buyhealth.shop: could not connect to host
buyingsellingflorida.com: could not connect to host
buynowdepot.com: did not receive HSTS header
+buyplussize.shop: could not connect to host
buyshoe.org: could not connect to host
buywood.shop: could not connect to host
buzzconcert.com: did not receive HSTS header
@@ -2127,16 +2350,11 @@ bxdev.me: could not connect to host
by1896.com: could not connect to host
by1898.com: could not connect to host
by1899.com: could not connect to host
-by2230.com: max-age too low: 3600
-by2238.com: max-age too low: 3600
-by2239.com: max-age too low: 3600
-by2251.com: max-age too low: 3600
-by2253.com: max-age too low: 3600
-by2254.com: max-age too low: 3600
by4cqb.cn: could not connect to host
by77.com: could not connect to host
by777.com: did not receive HSTS header
byji.com: could not connect to host
+byken.cn: did not receive HSTS header
bynet.cz: could not connect to host
bypass.kr: could not connect to host
bypassed.bid: could not connect to host
@@ -2158,9 +2376,12 @@ bypassed.today: could not connect to host
bypassed.works: could not connect to host
bypassed.world: could not connect to host
bypro.xyz: could not connect to host
+byronwade.com: could not connect to host
byte.chat: did not receive HSTS header
byte.wtf: did not receive HSTS header
bytelog.org: could not connect to host
+bytema.re: could not connect to host
+bytepen.com: could not connect to host
bytesatwork.eu: could not connect to host
byteshift.ca: could not connect to host
bytesofcode.de: could not connect to host
@@ -2179,40 +2400,46 @@ c3b.info: could not connect to host
c3bbs.com: could not connect to host
c3ie.com: did not receive HSTS header
c4.hk: could not connect to host
-cabaladada.org: could not connect to host
cabsites.com: could not connect to host
cabusar.fr: could not connect to host
+cachethq.io: did not receive HSTS header
caconnect.org: could not connect to host
cadao.me: did not receive HSTS header
cadburymovies.in.net: could not connect to host
cadenadg.gr: did not receive HSTS header
caerostris.com: could not connect to host
caesreon.com: could not connect to host
-cafe-murr.de: could not connect to host
+cafe-murr.de: did not receive HSTS header
cafe-scientifique.org.ec: could not connect to host
cafechesscourt.com: could not connect to host
+cafefresco.pe: did not receive HSTS header
caferagazzi.de: did not receive HSTS header
cafesg.net: could not connect to host
+caibi.io: could not connect to host
caim.cz: did not receive HSTS header
caipai.fm: could not connect to host
cairnterrier.com.br: could not connect to host
-cais.de: could not connect to host
+cais.de: did not receive HSTS header
cajapopcorn.com: did not receive HSTS header
+cake-time.co.uk: could not connect to host
cake.care: could not connect to host
cal.goip.de: could not connect to host
calcularpagerank.com.br: could not connect to host
calculatoaresecondhand.xyz: could not connect to host
+calebmorris.com: did not receive HSTS header
calgaryconstructionjobs.com: did not receive HSTS header
callabs.net: could not connect to host
+callanbryant.co.uk: did not receive HSTS header
calleveryday.com: could not connect to host
callision.com: did not receive HSTS header
callmereda.com: did not receive HSTS header
callsigns.ca: could not connect to host
calltrackingreports.com: could not connect to host
+calomel.org: max-age too low: 2764800
calories.org: could not connect to host
caltonnutrition.com: did not receive HSTS header
calvin.me: did not receive HSTS header
-calvinallen.net: could not connect to host
+calypso-tour.net: could not connect to host
calypsogames.net: could not connect to host
calyxinstitute.org: could not connect to host
camashop.de: did not receive HSTS header
@@ -2223,7 +2450,6 @@ camda.online: could not connect to host
camisadotorcedor.com.br: could not connect to host
camjackson.net: did not receive HSTS header
cammarkets.com: could not connect to host
-camolist.com: could not connect to host
campaignelves.com: did not receive HSTS header
campbellsoftware.co.uk: could not connect to host
campfire.co.il: did not receive HSTS header
@@ -2231,9 +2457,8 @@ campfourpaws.com: did not receive HSTS header
campingcarlovers.com: could not connect to host
campingdreams.com: did not receive HSTS header
campus-cybersecurity.team: did not receive HSTS header
-campusportalng.com: did not receive HSTS header
camsanalytics.com: could not connect to host
-canadabread.com: max-age too low: 86400
+camshowhub.com: could not connect to host
canadiangamblingchoice.com: did not receive HSTS header
canarianlegalalliance.com: did not receive HSTS header
cancelmyprofile.com: could not connect to host
@@ -2243,27 +2468,28 @@ candratech.com: could not connect to host
candygirl.shop: could not connect to host
candykidsentertainment.co.uk: did not receive HSTS header
canifis.net: did not receive HSTS header
-canterbury.ws: did not receive HSTS header
+canterbury.ws: could not connect to host
canyonshoa.com: did not receive HSTS header
caodecristachines.com.br: could not connect to host
caoyu.info: did not receive HSTS header
+capacitacionyautoempleo.com: did not receive HSTS header
capecycles.co.za: did not receive HSTS header
capeyorkfire.com.au: did not receive HSTS header
-capitalonecardservice.com: did not receive HSTS header
-caps.is: could not connect to host
+capitalonecardservice.com: could not connect to host
+captainark.net: could not connect to host
captchatheprize.com: could not connect to host
captianseb.de: could not connect to host
captivatedbytabrett.com: could not connect to host
captivationscience.com: could not connect to host
captivationtheory.com: could not connect to host
+capturethepen.co.uk: could not connect to host
car-navi.ph: did not receive HSTS header
-car-rental24.com: could not connect to host
+car-rental24.com: did not receive HSTS header
car-shop.top: did not receive HSTS header
carano-service.de: did not receive HSTS header
caraudio69.cz: could not connect to host
-carboneselectricosnettosl.info: did not receive HSTS header
card-cashing.com: max-age too low: 0
-card-toka.jp: did not receive HSTS header
+card-toka.jp: could not connect to host
cardloan-manual.net: could not connect to host
cardoni.net: did not receive HSTS header
cardstream.com: did not receive HSTS header
@@ -2271,26 +2497,28 @@ cardurl.com: did not receive HSTS header
careeraid.in: could not connect to host
careerstuds.com: could not connect to host
careplasticsurgery.com: did not receive HSTS header
-carey.bio: could not connect to host
+carey.bio: did not receive HSTS header
carif-idf.net: did not receive HSTS header
carif-idf.org: did not receive HSTS header
carlgo11.com: did not receive HSTS header
carlo.mx: did not receive HSTS header
carlolly.co.uk: could not connect to host
carlosalves.info: could not connect to host
-carloshmm.com: could not connect to host
carloshmm.stream: could not connect to host
carlovanwyk.com: could not connect to host
carlsbouncycastlesandhottubs.co.uk: did not receive HSTS header
carlscatering.com: did not receive HSTS header
-carpliyz.com: could not connect to host
+caroli.biz: could not connect to host
+carpliyz.com: did not receive HSTS header
carrando.de: could not connect to host
carredejardin.com: could not connect to host
carroarmato0.be: did not receive HSTS header
carsforbackpackers.com: could not connect to host
+carsten.pw: could not connect to host
carstenfeuls.de: did not receive HSTS header
carterorland.com: could not connect to host
cartesunicef.be: did not receive HSTS header
+carun.us: did not receive HSTS header
carwashvapeur.be: could not connect to host
casajardininsecticidas.com: did not receive HSTS header
casamorelli.com.br: did not receive HSTS header
@@ -2303,11 +2531,11 @@ cashfortulsahouses.com: could not connect to host
cashless.fr: did not receive HSTS header
cashmyphone.ch: could not connect to host
cashsector.ga: could not connect to host
-casinolegal.pt: did not receive HSTS header
+casinolistings.com: could not connect to host
+casinoluck.com: could not connect to host
casinoreal.com: could not connect to host
casinostest.com: could not connect to host
casioshop.eu: did not receive HSTS header
-casjay.cloud: did not receive HSTS header
casjay.us: could not connect to host
casjaygames.com: could not connect to host
casovi.cf: could not connect to host
@@ -2316,28 +2544,26 @@ castagnonavocats.com: did not receive HSTS header
cata.ga: could not connect to host
catalin.pw: did not receive HSTS header
catarsisvr.com: could not connect to host
-catchers.cc: did not receive HSTS header
catcontent.cloud: could not connect to host
+catdecor.ru: could not connect to host
caterkids.com: did not receive HSTS header
-catfooddispensersreviews.com: did not receive HSTS header
+catgirl.me: could not connect to host
catgirl.pics: could not connect to host
catharisme.org: could not connect to host
catherinesarasin.com: did not receive HSTS header
-catinmay.com: could not connect to host
+catinmay.com: did not receive HSTS header
catnapstudios.com: could not connect to host
catnmeow.com: could not connect to host
catsmagic.pp.ua: could not connect to host
-caughtredhanded.co.nz: could not connect to host
causae-fincas.es: did not receive HSTS header
causae.es: did not receive HSTS header
-cav.ac: could not connect to host
cavaleria.ro: did not receive HSTS header
cavalierkingcharlesspaniel.com.br: could not connect to host
caveclan.org: did not receive HSTS header
cavedevs.de: could not connect to host
cavedroid.xyz: could not connect to host
cavern.tv: did not receive HSTS header
-cayafashion.de: did not receive HSTS header
+cayafashion.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
cayounglab.co.jp: did not receive HSTS header
cbamo.org: did not receive HSTS header
cbengineeringinc.com: max-age too low: 86400
@@ -2349,9 +2575,9 @@ ccl-sti.ch: could not connect to host
ccretreatandfarm.com: did not receive HSTS header
cctech.ph: could not connect to host
cctld.com: could not connect to host
+ccv.eu: did not receive HSTS header
cd0.us: could not connect to host
cdcpartners.gov: could not connect to host
-cdeck.net: could not connect to host
cdkeyworld.de: did not receive HSTS header
cdmhp.org.nz: could not connect to host
cdmon.tech: could not connect to host
@@ -2364,21 +2590,23 @@ cdt.org: did not receive HSTS header
ce-agentur.de: did not receive HSTS header
cecilwalker.com.au: did not receive HSTS header
cee.io: could not connect to host
-cefak.org.br: could not connect to host
+cefak.org.br: did not receive HSTS header
cegfw.com: could not connect to host
ceilingpac.org: could not connect to host
+cekaja.com: did not receive HSTS header
celebphotos.blog: could not connect to host
-celebrityhealthcritic.com: did not receive HSTS header
celec.gob.ec: could not connect to host
celeirorural.com.br: did not receive HSTS header
celigo.com: did not receive HSTS header
celina-reads.de: could not connect to host
+cellartracker.com: could not connect to host
cellsites.nz: could not connect to host
cencalvia.org: could not connect to host
centennialrewards.com: did not receive HSTS header
centerforpolicy.org: could not connect to host
+centerpereezd.ru: could not connect to host
centos.pub: could not connect to host
-central4.me: did not receive HSTS header
+central4.me: could not connect to host
centralcountiesservices.org: did not receive HSTS header
centralfor.me: did not receive HSTS header
centrallead.net: could not connect to host
@@ -2390,6 +2618,7 @@ centrolavoro.org: did not receive HSTS header
centsforchange.net: could not connect to host
ceoimon.com: did not receive HSTS header
cercevelet.com: did not receive HSTS header
+ceres1.space: did not receive HSTS header
ceresia.ch: could not connect to host
ceritamalam.net: could not connect to host
cerize.love: could not connect to host
@@ -2402,15 +2631,18 @@ certifix.eu: did not receive HSTS header
certly.io: could not connect to host
certmgr.org: could not connect to host
ceruleanmainbeach.com.au: did not receive HSTS header
+cervejista.com: could not connect to host
cesal.net: could not connect to host
cesidianroot.eu: could not connect to host
cevrimici.com: could not connect to host
+ceyizlikelisleri.com: could not connect to host
+cf11.de: did not receive HSTS header
cfcnexus.org: could not connect to host
cfcproperties.com: did not receive HSTS header
-cfda.gov: could not connect to host
cfetengineering.com: could not connect to host
cfneia.org: could not connect to host
cfoitplaybook.com: could not connect to host
+cfsh.tk: could not connect to host
cganx.org: could not connect to host
cgerstner.eu: did not receive HSTS header
cgsshelper.tk: could not connect to host
@@ -2419,6 +2651,7 @@ chadklass.com: could not connect to host
chahub.com: could not connect to host
chainmonitor.com: could not connect to host
challengeskins.com: could not connect to host
+chameleon-ents.co.uk: could not connect to host
chameth.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
chamilo.org: did not receive HSTS header
champ.dog: did not receive HSTS header
@@ -2436,15 +2669,16 @@ chaos.fail: could not connect to host
chaospott.de: did not receive HSTS header
chaoswebs.net: did not receive HSTS header
chaouby.com: could not connect to host
+charakato.com: could not connect to host
charge.co: could not connect to host
chargejuice.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
charityclear.com: could not connect to host
charitystreet.co.uk: could not connect to host
-charlenevondell.com: could not connect to host
charlestonsecuritysystems.net: did not receive HSTS header
charliemcneive.com: could not connect to host
charlimarie.com: did not receive HSTS header
charlipopkids.com.au: could not connect to host
+charmyadesara.com: could not connect to host
charnleyhouse.co.uk: did not receive HSTS header
charonsecurity.com: could not connect to host
charp.eu: could not connect to host
@@ -2456,24 +2690,27 @@ chasse-et-plaisir.com: did not receive HSTS header
chat-porc.eu: did not receive HSTS header
chatbot.me: did not receive HSTS header
chatbots.email: could not connect to host
+chateau-belvoir.com: did not receive HSTS header
chateauconstellation.ch: did not receive HSTS header
chateaudevaugrigneuse.com: did not receive HSTS header
chatint.com: did not receive HSTS header
chatnbook.com: could not connect to host
chatup.cf: could not connect to host
+chatxp.com: could not connect to host
chaulootz.com: did not receive HSTS header
+chaverde.org: could not connect to host
chcemvediet.sk: max-age too low: 1555200
cheah.xyz: could not connect to host
cheapdns.org: could not connect to host
-cheapwritingservice.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+cheapssl.com.tr: could not connect to host
+cheapwritingservice.com: could not connect to host
cheazey.net: did not receive HSTS header
chebedara.com: could not connect to host
chebwebb.com: could not connect to host
checkhost.org: could not connect to host
-checkmatewebsolutions.com: did not receive HSTS header
+checkmatewebsolutions.com: max-age too low: 0
checkout.google.com: could not connect to host (error ignored - included regardless)
-checkrente.nl: did not receive HSTS header
-checkyourmeds.com: did not receive HSTS header
+checkyourmeds.com: could not connect to host
cheekylittlerascals.co.uk: did not receive HSTS header
cheerflow.com: could not connect to host
cheesetart.my: could not connect to host
@@ -2494,14 +2731,16 @@ cherrydropscandycarts.co.uk: did not receive HSTS header
cherylsoleway.com: did not receive HSTS header
chessreporter.nl: did not receive HSTS header
chesterbrass.uk: did not receive HSTS header
-chestnut.cf: could not connect to host
chiamata-aiuto.ch: could not connect to host
chib.chat: could not connect to host
chicorycom.net: could not connect to host
chihiro.xyz: could not connect to host
chijiokeindustries.co.uk: could not connect to host
+chikatomo-ryugaku.com: did not receive HSTS header
+chikory.com: could not connect to host
childcaresolutionscny.org: did not receive HSTS header
childrendeservebetter.org: did not receive HSTS header
+chilli943.info: could not connect to host
chimparoo.ca: did not receive HSTS header
china-dhl.org: could not connect to host
china-line.org: could not connect to host
@@ -2510,14 +2749,18 @@ chiphell.com: did not receive HSTS header
chirgui.eu: could not connect to host
chloca.jp: did not receive HSTS header
chloe.re: did not receive HSTS header
+chloeallison.co.uk: could not connect to host
+chloehorler.com: could not connect to host
chlouis.net: could not connect to host
chm.vn: did not receive HSTS header
chocolat-suisse.ch: could not connect to host
chodobien.com: could not connect to host
+chodocu.com: did not receive HSTS header
+choe.fi: could not connect to host
choiralberta.ca: did not receive HSTS header
chontalpa.pw: could not connect to host
chopperforums.com: could not connect to host
-chordso.com: could not connect to host
+chordso.com: did not receive HSTS header
chorkley.me: could not connect to host
choruscrowd.com: could not connect to host
chotu.net: could not connect to host
@@ -2525,13 +2768,11 @@ chris-web.info: could not connect to host
chrisandsarahinasia.com: could not connect to host
chrisbrakebill.com: did not receive HSTS header
chrisbrown.id.au: could not connect to host
-chriscowley.me.uk: did not receive HSTS header
chrisebert.net: could not connect to host
chrisfaber.com: could not connect to host
chrisfinazzo.com: did not receive HSTS header
chriskirchner.de: did not receive HSTS header
chriskyrouac.com: could not connect to host
-chrisnicholas.io: did not receive HSTS header
chrisopperwall.com: did not receive HSTS header
chrisself.xyz: could not connect to host
christiaandruif.nl: could not connect to host
@@ -2539,7 +2780,8 @@ christianbro.gq: could not connect to host
christianhoffmann.info: could not connect to host
christianhospitaltank.org: did not receive HSTS header
christiansayswords.com: could not connect to host
-christina-quast.de: could not connect to host
+christianscholz.eu: could not connect to host
+christina-quast.de: did not receive HSTS header
christophebarbezat.ch: could not connect to host
christophercolumbusfoundation.gov: could not connect to host
christophersole.com: could not connect to host
@@ -2555,25 +2797,33 @@ chrome.google.com: did not receive HSTS header (error ignored - included regardl
chronogram.me: did not receive HSTS header
chronoproject.com: did not receive HSTS header
chrst.ph: could not connect to host
-chs.us: max-age too low: 0
+chs.us: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
chsh.moe: could not connect to host
chua.cf: could not connect to host
+chua.family: could not connect to host
chuckame.fr: did not receive HSTS header
chulado.com: did not receive HSTS header
chundelac.com: could not connect to host
churchux.co: did not receive HSTS header
+churchwebcanada.ca: did not receive HSTS header
+churchwebsupport.com: did not receive HSTS header
churrasqueirafacil.com.br: could not connect to host
ci-labo.com.tw: max-age too low: 7889238
cianmawhinney.xyz: could not connect to host
+cidadedopoker.com.br: did not receive HSTS header
+ciderclub.com: could not connect to host
cidr.ml: could not connect to host
+cielly.com: could not connect to host
cienbeaute-lidl.fr: could not connect to host
cigarblogs.net: could not connect to host
+cigarterminal.com: could not connect to host
cigi.site: could not connect to host
ciicutini.ro: did not receive HSTS header
cim2b.de: could not connect to host
cimalando.eu: could not connect to host
cinartelorgu.com: did not receive HSTS header
cinefilia.tk: could not connect to host
+cinema5.ru: did not receive HSTS header
cinemaclub.co: could not connect to host
cinerama.com.br: did not receive HSTS header
cintdirect.com: could not connect to host
@@ -2582,33 +2832,34 @@ cipher.co.th: did not receive HSTS header
cipher.land: could not connect to host
cipherli.st: did not receive HSTS header
ciplanutrition.com: could not connect to host
+cipriano.nl: did not receive HSTS header
cira.email: could not connect to host
circ-logic.com: did not receive HSTS header
circlebox.rocks: could not connect to host
-cirrohost.com: did not receive HSTS header
+cirrohost.com: could not connect to host
ciscohomeanalytics.com: could not connect to host
ciscommerce.net: could not connect to host
citiagent.cz: could not connect to host
citra-emu.org: did not receive HSTS header
+citroner.blog: could not connect to host
citybusexpress.com: did not receive HSTS header
cityoflaurel.org: did not receive HSTS header
citywalkr.com: could not connect to host
ciuciucadou.ro: could not connect to host
cium.ru: could not connect to host
-ciurcasdan.eu: did not receive HSTS header
+civicunicorn.com: could not connect to host
+civicunicorn.us: could not connect to host
cjcaron.org: could not connect to host
-cjdpenterprises.com: could not connect to host
-cjdpenterprises.com.au: could not connect to host
cjessett.com: max-age too low: 0
cjtkfan.club: could not connect to host
ckcameron.net: could not connect to host
ckp.io: could not connect to host
claimit.ml: could not connect to host
clan-ww.com: did not receive HSTS header
-clapping-rhymes.com: did not receive HSTS header
+clapping-rhymes.com: could not connect to host
clara-baumert.de: could not connect to host
claralabs.com: did not receive HSTS header
-claretandbanter.uk: did not receive HSTS header
+claretandbanter.uk: could not connect to host
clarity-c2ced.appspot.com: did not receive HSTS header
claritysrv.com: did not receive HSTS header
clarksgaragedoorrepair.com: did not receive HSTS header
@@ -2630,7 +2881,7 @@ cleanstar.org: could not connect to host
clear.ml: could not connect to host
clearc.tk: could not connect to host
clearchatsandbox.com: could not connect to host
-clearsky.me: did not receive HSTS header
+clearsky.me: could not connect to host
clearviewwealthprojector.com.au: could not connect to host
clemovementlaw.com: could not connect to host
clerkendweller.uk: could not connect to host
@@ -2644,6 +2895,7 @@ clickandgo.com: did not receive HSTS header
clickandshoot.nl: could not connect to host
clickclickphish.com: did not receive HSTS header
clickgram.biz: could not connect to host
+clickomobile.com: did not receive HSTS header
clicks.co.za: max-age too low: 1800
clicktenisdemesa.com.br: did not receive HSTS header
clicn.bio: could not connect to host
@@ -2657,7 +2909,9 @@ clintonbloodworth.com: could not connect to host
clintonbloodworth.io: could not connect to host
clintwilson.technology: max-age too low: 2592000
clipped4u.com: could not connect to host
+clod-hacking.com: could not connect to host
cloghercastles.co.uk: did not receive HSTS header
+clorik.com: could not connect to host
closient.com: did not receive HSTS header
closingholding.com: could not connect to host
cloud-crowd.com.au: did not receive HSTS header
@@ -2665,18 +2919,23 @@ cloud-project.com: could not connect to host
cloud.wtf: could not connect to host
cloud2go.de: did not receive HSTS header
cloudapi.vc: could not connect to host
-cloudbased.info: could not connect to host
+cloudbased.info: did not receive HSTS header
cloudbasedsite.com: did not receive HSTS header
cloudberlin.goip.de: could not connect to host
cloudbleed.info: could not connect to host
+cloudbolin.es: could not connect to host
cloudcert.org: did not receive HSTS header
cloudcy.net: could not connect to host
clouddesktop.co.nz: could not connect to host
cloudfren.com: did not receive HSTS header
cloudimag.es: could not connect to host
+cloudimprovedtest.com: could not connect to host
cloudlink.club: could not connect to host
+cloudmigrator365.com: did not receive HSTS header
cloudns.com.au: could not connect to host
cloudopt.net: did not receive HSTS header
+cloudpagesforwork.com: did not receive HSTS header
+cloudpebble.net: did not receive HSTS header
clouds.webcam: could not connect to host
cloudspotterapp.com: did not receive HSTS header
cloudstoragemaus.com: could not connect to host
@@ -2693,22 +2952,25 @@ clownish.co.il: could not connect to host
clsimplex.com: did not receive HSTS header
clubcall.com: did not receive HSTS header
clubdeslecteurs.net: could not connect to host
+clubmate.rocks: could not connect to host
clubmix.co.kr: could not connect to host
+cluefulca.com: could not connect to host
+cluefulca.net: could not connect to host
+cluefulca.org: could not connect to host
cluj.apartments: could not connect to host
-cluster.biz.tr: could not connect to host
cluster.id: could not connect to host
clvrwebdesign.com: did not receive HSTS header
clvs7.com: did not receive HSTS header
clycat.ru: could not connect to host
clywedogmaths.co.uk: could not connect to host
-cmangos.net: could not connect to host
+cmangos.net: did not receive HSTS header
cmc-versand.de: did not receive HSTS header
cmcc.network: could not connect to host
cmci.dk: did not receive HSTS header
cmdtelecom.net.br: did not receive HSTS header
cmitao.com: could not connect to host
cmpr.es: could not connect to host
-cmrss.com: did not receive HSTS header
+cmrss.com: could not connect to host
cms-weble.jp: did not receive HSTS header
cmsbattle.com: could not connect to host
cmscafe.ru: did not receive HSTS header
@@ -2719,16 +2981,19 @@ cnaprograms.online: could not connect to host
cncfraises.fr: did not receive HSTS header
cncn.us: did not receive HSTS header
cnetw.xyz: could not connect to host
-cnitdog.com: did not receive HSTS header
+cnitdog.com: could not connect to host
cnlic.com: could not connect to host
cnrd.me: did not receive HSTS header
cnsyear.com: did not receive HSTS header
cnwage.com: could not connect to host
cnwarn.com: could not connect to host
-co-driversphoto.se: could not connect to host
+co-driversphoto.se: did not receive HSTS header
co-yutaka.com: could not connect to host
-coach-sportif.paris: did not receive HSTS header
+coach-sportif.paris: could not connect to host
coachingconsultancy.com: did not receive HSTS header
+coathangerstrangla.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+coathangerstrangler.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+coatl-industries.com: could not connect to host
cobaltlp.com: could not connect to host
cobrax.net: could not connect to host
coccinellaskitchen.com: could not connect to host
@@ -2740,6 +3005,7 @@ cockerspanielamericano.com.br: could not connect to host
cockerspanielingles.com.br: could not connect to host
cocktailfuture.fr: could not connect to host
coco-cool.fr: could not connect to host
+cocodemy.com: did not receive HSTS header
cocolovesdaddy.com: could not connect to host
codabix.com: did not receive HSTS header
codabix.de: could not connect to host
@@ -2753,12 +3019,11 @@ codeco.pw: could not connect to host
codecontrollers.de: could not connect to host
codedelarouteenligne.fr: did not receive HSTS header
codeforce.io: could not connect to host
-codeforhakodate.org: did not receive HSTS header
-codejunkie.de: did not receive HSTS header
+codeforhakodate.org: could not connect to host
codelayer.ca: could not connect to host
codelitmus.com: did not receive HSTS header
codeloop.pw: could not connect to host
-codelove.de: could not connect to host
+codelove.de: did not receive HSTS header
codemonkeyrawks.net: did not receive HSTS header
codemperium.com: could not connect to host
codenlife.xyz: could not connect to host
@@ -2767,6 +3032,7 @@ codeplay.org: could not connect to host
codepoet.de: did not receive HSTS header
codeproxy.ddns.net: could not connect to host
codepx.com: did not receive HSTS header
+coderhangout.com: could not connect to host
codewiththepros.org: could not connect to host
codewiz.xyz: could not connect to host
codigosddd.com.br: did not receive HSTS header
@@ -2775,12 +3041,11 @@ coffeedino.com: did not receive HSTS header
coffeeetc.co.uk: could not connect to host
coffeestrategies.com: max-age too low: 5184000
cogniflex.com: did not receive HSTS header
-cogsquad.house: could not connect to host
cogumelosmagicos.org: could not connect to host
cohesive.io: did not receive HSTS header
+coimmvest.com: could not connect to host
coin-exchange.cz: could not connect to host
coindam.com: could not connect to host
-coins2001.ru: could not connect to host
colarelli.ch: could not connect to host
coldlostsick.net: could not connect to host
coldwatericecream.com: did not receive HSTS header
@@ -2788,7 +3053,7 @@ colearnr.com: could not connect to host
collablynk.com: could not connect to host
collabra.email: did not receive HSTS header
collard.tk: could not connect to host
-collectiblebeans.com: could not connect to host
+collbox.co: did not receive HSTS header
collectosaurus.com: did not receive HSTS header
colleencornez.com: could not connect to host
collegepulse.org: could not connect to host
@@ -2802,14 +3067,19 @@ colmexpro.com: did not receive HSTS header
colognegaming.net: could not connect to host
coloradocomputernetworking.net: could not connect to host
colorcentertoner.com.br: did not receive HSTS header
+coloringnotebook.com: could not connect to host
colorlib.com: did not receive HSTS header
+colorlifesupport.com: max-age too low: 0
colorunhas.com.br: did not receive HSTS header
coltonrb.com: could not connect to host
com.cc: could not connect to host
combatshield.cz: did not receive HSTS header
+comchezmeme.com: could not connect to host
+comdotgame.com: could not connect to host
comefollowme2016.com: did not receive HSTS header
comeoncolleen.com: did not receive HSTS header
comercialtrading.eu: could not connect to host
+cometrueunlimited.com: could not connect to host
comfortdom.ua: did not receive HSTS header
comfortticket.de: did not receive HSTS header
comfy.cafe: could not connect to host
@@ -2821,20 +3091,20 @@ comicspines.com: could not connect to host
comiq.io: could not connect to host
comitesaustria.at: could not connect to host
comiteshopping.com: could not connect to host
-commania.co.kr: could not connect to host
commencepayments.com: did not receive HSTS header
-commerciallocker.com: did not receive HSTS header
+commerciallocker.com: could not connect to host
commercialplanet.eu: could not connect to host
commune-preuilly.fr: did not receive HSTS header
community-cupboard.org: did not receive HSTS header
-communityflow.info: could not connect to host
comocurarlagastritis24.online: did not receive HSTS header
comocurarlashemorroides.org: could not connect to host
comocurarlashemorroidesya.com: did not receive HSTS header
+comoimportar.net: did not receive HSTS header
+comosecarabarriga.net: did not receive HSTS header
+comoseduzir.net: did not receive HSTS header
comotalk.com: could not connect to host
compalytics.com: could not connect to host
comparamejor.com: did not receive HSTS header
-compareandrecycle.co.uk: did not receive HSTS header
comparejewelleryprices.co.uk: could not connect to host
comparetravelinsurance.com.au: did not receive HSTS header
compassionate-biology.com: could not connect to host
@@ -2847,8 +3117,10 @@ compliance-systeme.de: could not connect to host
complt.xyz: could not connect to host
complymd.com: did not receive HSTS header
compredietlight.com.br: did not receive HSTS header
-comprefitasadere.com.br: did not receive HSTS header
+comprefitasadere.com.br: could not connect to host
comprehensiveihc.com: could not connect to host
+compromised.com: could not connect to host
+compsmag.com: did not receive HSTS header
comptrollerofthecurrency.gov: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
compucorner.com.mx: could not connect to host
computeremergency.com.au: did not receive HSTS header
@@ -2861,22 +3133,20 @@ concerts-metal.ch: did not receive HSTS header
conclave.global: could not connect to host
concord-group.co.jp: did not receive HSTS header
concretehermit.com: did not receive HSTS header
-conectalmeria.com: could not connect to host
+conectalmeria.com: did not receive HSTS header
confirm365.com: could not connect to host
conformal.com: could not connect to host
-confucio.cl: could not connect to host
congz.me: could not connect to host
+conkret.ch: could not connect to host
conkret.co.uk: could not connect to host
conkret.eu: could not connect to host
conkret.in: did not receive HSTS header
-connaitre-les-astres.com: could not connect to host
-connect-me.com: did not receive HSTS header
+connaitre-les-astres.com: did not receive HSTS header
connect.ua: could not connect to host
connected-verhuurservice.nl: did not receive HSTS header
connectfss.com: could not connect to host
connectingconcepts.com: did not receive HSTS header
conrad.am: could not connect to host
-conrail.blue: could not connect to host
consciousandglamorous.com: could not connect to host
consciousbrand.org.au: could not connect to host
consciousbranding.org.au: could not connect to host
@@ -2884,8 +3154,8 @@ consciousbrands.net.au: could not connect to host
consejosdehogar.com: did not receive HSTS header
console.python.org: did not receive HSTS header
console.support: did not receive HSTS header
+construct-trust.com: could not connect to host
constructive.men: could not connect to host
-consultation.biz.tr: could not connect to host
consultcelerity.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
consultingroupitaly.com: did not receive HSTS header
consultorcr.net: did not receive HSTS header
@@ -2900,7 +3170,6 @@ continuation.io: could not connect to host
continuumgaming.com: could not connect to host
contraout.com: could not connect to host
controlcenter.gigahost.dk: did not receive HSTS header
-controleer-maar-een-ander.nl: did not receive HSTS header
convergemagazine.com: did not receive HSTS header
convertimg.com: could not connect to host
convoitises.com: did not receive HSTS header
@@ -2914,8 +3183,9 @@ cooljs.me: could not connect to host
coolkidsbouncycastles.co.uk: did not receive HSTS header
coolvox.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
coonelnel.net: did not receive HSTS header
-cooxa.com: did not receive HSTS header
+cooxa.com: could not connect to host
copshop.com.br: could not connect to host
+coptic-treasures.com: max-age too low: 2592000
copycaught.com: could not connect to host
cor-ser.es: could not connect to host
coralproject.net: did not receive HSTS header
@@ -2929,10 +3199,11 @@ coreapm.com: could not connect to host
corecdn.org: could not connect to host
coreinfrastructure.org: did not receive HSTS header
corenetworking.de: could not connect to host
+coresos.com: could not connect to host
corex.io: could not connect to host
corgicloud.com: could not connect to host
corinnanese.de: could not connect to host
-coriver.me: could not connect to host
+coriver.me: did not receive HSTS header
corkyoga.site: could not connect to host
cormactagging.ie: could not connect to host
cormilu.com.br: did not receive HSTS header
@@ -2950,7 +3221,7 @@ corruption-mc.net: could not connect to host
corruption-rsps.net: could not connect to host
corruption-server.net: could not connect to host
corzntin.fr: could not connect to host
-cosmeticosnet.com.br: could not connect to host
+cosmeticosnet.com.br: did not receive HSTS header
cosmiatria.pe: could not connect to host
cosmoluziluminacion.com: did not receive HSTS header
cosmoss-departure.com: did not receive HSTS header
@@ -2969,6 +3240,7 @@ course.pp.ua: did not receive HSTS header
course.rs: could not connect to host
coursella.com: did not receive HSTS header
courses.nl: could not connect to host
+courseworkbank.info: could not connect to host
cove.sh: could not connect to host
covenantbank.net: could not connect to host
coverdat.com: could not connect to host
@@ -2979,10 +3251,10 @@ cozy.io: did not receive HSTS header
cozycloud.cc: did not receive HSTS header
cpaneltips.com: could not connect to host
cpbanq.com: could not connect to host
-cpu.biz.tr: could not connect to host
cpuvinf.eu.org: could not connect to host
+cqchome.com: did not receive HSTS header
cracking.org: did not receive HSTS header
-crackingking.com: did not receive HSTS header
+crackingking.com: could not connect to host
crackpfer.de: could not connect to host
crackslut.eu: could not connect to host
craftbeerbarn.co.uk: could not connect to host
@@ -2991,12 +3263,12 @@ craftination.net: could not connect to host
craftmain.eu: could not connect to host
craftmine.cz: could not connect to host
craftngo.hu: could not connect to host
+craftwmcp.xyz: could not connect to host
craftydev.design: could not connect to host
-craigsimpson.scot: did not receive HSTS header
cranems.com.ua: could not connect to host
cranesafe.com: max-age too low: 7889238
cranioschule.com: did not receive HSTS header
-crashsec.com: could not connect to host
+crashsec.com: did not receive HSTS header
crate.io: did not receive HSTS header
cravelyrics.com: could not connect to host
crazifyngers.com: could not connect to host
@@ -3004,27 +3276,31 @@ crazy-crawler.de: did not receive HSTS header
crazycen.com: did not receive HSTS header
crazycraftland.de: did not receive HSTS header
crazycraftland.net: did not receive HSTS header
+crazyfamily11.de: did not receive HSTS header
crazyhotseeds.com: did not receive HSTS header
crazyker.com: did not receive HSTS header
crbug.com: did not receive HSTS header (error ignored - included regardless)
creaescola.com: did not receive HSTS header
-crealogix-online.com: could not connect to host
creamybuild.com: could not connect to host
+create-ls.jp: could not connect to host
create-test-publish.co.uk: could not connect to host
+creative-coder.de: did not receive HSTS header
creativeapple.ltd: did not receive HSTS header
creativeartifice.com: did not receive HSTS header
creativecommonscatpictures.com: could not connect to host
-creativeink.de: could not connect to host
creativephysics.ml: could not connect to host
creativeplayuk.com: did not receive HSTS header
creato.top: could not connect to host
+crecips.com: could not connect to host
crecket.me: could not connect to host
credia.jp: did not receive HSTS header
creditclear.com.au: did not receive HSTS header
-creditreporttips.net: could not connect to host
+creditreporttips.net: did not receive HSTS header
crendontech.com: did not receive HSTS header
+creorin.com: did not receive HSTS header
crestoncottage.com: could not connect to host
crewplanner.eu: did not receive HSTS header
+crge.eu: max-age too low: 0
crimewatch.net.za: could not connect to host
crisissurvivalspecialists.com: could not connect to host
cristianhares.com: could not connect to host
@@ -3035,7 +3311,7 @@ crmdemo.website: did not receive HSTS header
crockett.io: did not receive HSTS header
croco.vision: did not receive HSTS header
croeder.net: could not connect to host
-cronix.cc: could not connect to host
+croisieres.discount: did not receive HSTS header
croods-mt2.fr: did not receive HSTS header
croome.no-ip.org: could not connect to host
crop-alert.com: could not connect to host
@@ -3050,23 +3326,28 @@ crownbouncycastlehire.co.uk: did not receive HSTS header
crownruler.com: did not receive HSTS header
crox.co: could not connect to host
crrev.com: did not receive HSTS header (error ignored - included regardless)
+crt.cloud: could not connect to host
crtvmgmt.com: could not connect to host
crudysql.com: could not connect to host
crufad.org: did not receive HSTS header
-cruikshank.com.au: could not connect to host
+cruikshank.com.au: did not receive HSTS header
crushroom.com: max-age too low: 43200
cruzeiropedia.org: did not receive HSTS header
cruzr.xyz: could not connect to host
crypalert.com: could not connect to host
crypt.guru: did not receive HSTS header
cryptify.eu: could not connect to host
+cryptobells.com: did not receive HSTS header
cryptobin.org: could not connect to host
cryptocaseproject.com: could not connect to host
cryptodash.net: could not connect to host
+cryptoegg.ca: could not connect to host
+cryptofrog.co: could not connect to host
+cryptoisnotacrime.org: could not connect to host
cryptojar.io: could not connect to host
+cryptojourney.com: did not receive HSTS header
cryptolab.pro: could not connect to host
cryptolab.tk: could not connect to host
-cryptolosophy.io: could not connect to host
cryptoparty.dk: could not connect to host
cryptopartyatx.org: could not connect to host
cryptopartynewcastle.org: could not connect to host
@@ -3082,34 +3363,38 @@ csawctf.poly.edu: could not connect to host
cscau.com: did not receive HSTS header
csehnyelv.hu: could not connect to host
cselzer.com: did not receive HSTS header
-cser.me: did not receive HSTS header
+cser.me: could not connect to host
+csfcloud.com: did not receive HSTS header
csfs.org.uk: could not connect to host
csgf.ru: did not receive HSTS header
csgo.help: could not connect to host
csgo77.com: could not connect to host
-csgodicegame.com: did not receive HSTS header
+csgodicegame.com: could not connect to host
csgoelemental.com: could not connect to host
+csgogamers.com: could not connect to host
+csgohandouts.com: did not receive HSTS header
csgokings.eu: could not connect to host
csgoshifter.com: could not connect to host
csilies.de: could not connect to host
csinfo.us: could not connect to host
-csinterstargeneve.ch: could not connect to host
csohack.tk: could not connect to host
-cspbuilder.info: could not connect to host
-cspeti.hu: could not connect to host
+cspbuilder.info: did not receive HSTS header
cssps.org: could not connect to host
cssu.in: did not receive HSTS header
csvape.com: did not receive HSTS header
+cswarzone.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
ct-status.org: could not connect to host
ct-watches.dk: did not receive HSTS header
ctrl.blog: did not receive HSTS header
+ctyi.me: did not receive HSTS header
cuanhua3s.com: did not receive HSTS header
cubecart.net: could not connect to host
+cubecraftstore.com: could not connect to host
+cubecraftstore.net: could not connect to host
cubela.tech: could not connect to host
cubeserver.eu: could not connect to host
cubewano.com: could not connect to host
cubix.host: did not receive HSTS header
-cublick.com: did not receive HSTS header
cucc.date: could not connect to host
cuecamania.com.br: could not connect to host
cujanovic.com: did not receive HSTS header
@@ -3118,19 +3403,20 @@ culinae.nl: could not connect to host
culture-school.top: did not receive HSTS header
cumparama.com: did not receive HSTS header
cumshots-video.ru: could not connect to host
-cuni-cuni-club.com: could not connect to host
+cunha.be: could not connect to host
+cuni-cuni-club.com: did not receive HSTS header
cuni-rec.com: could not connect to host
-cuntflaps.me: could not connect to host
cuongquach.com: did not receive HSTS header
cuongthach.com: did not receive HSTS header
cuonic.com: could not connect to host
cupcake.io: did not receive HSTS header
cupcake.is: did not receive HSTS header
+cupofarchitects.net: could not connect to host
curacao-license.com: could not connect to host
curarnosensalud.com: could not connect to host
-curatedgeek.com: did not receive HSTS header
curiouscat.me: max-age too low: 2592000
curlyroots.com: did not receive HSTS header
+current.com: did not receive HSTS header
curroapp.com: could not connect to host
cursosdnc.cl: did not receive HSTS header
curveweb.co.uk: did not receive HSTS header
@@ -3139,17 +3425,21 @@ custe.rs: could not connect to host
customadesign.com: did not receive HSTS header
customd.com: did not receive HSTS header
customfilmworks.com: could not connect to host
+customizeyourshower.com: could not connect to host
+custompapers.com: could not connect to host
+customromlist.com: could not connect to host
+customwritings.com: could not connect to host
cutelariafiveladeouro.com.br: did not receive HSTS header
cutorrent.com: could not connect to host
cuvva.insure: did not receive HSTS header
cvjm-memmingen.de: did not receive HSTS header
-cvsoftub.com: could not connect to host
+cvsoftub.com: did not receive HSTS header
cvtparking.co.uk: did not receive HSTS header
cw-bw.de: could not connect to host
cwage.com: could not connect to host
-cwarren.is: could not connect to host
cwbw.network: could not connect to host
cwilson.ga: could not connect to host
+cwningen.cymru: could not connect to host
cy.technology: did not receive HSTS header
cyanogenmod.xxx: could not connect to host
cybbh.space: could not connect to host
@@ -3162,53 +3452,54 @@ cyberdos.de: did not receive HSTS header
cyberlab.kiev.ua: did not receive HSTS header
cyberlab.team: did not receive HSTS header
cyberpeace.nl: could not connect to host
-cyberpioneer.net: could not connect to host
cyberprey.com: did not receive HSTS header
cyberpunk.ca: could not connect to host
-cybersafesolutions.com: did not receive HSTS header
cyberscan.io: did not receive HSTS header
+cyberserver.org: could not connect to host
cybershambles.com: could not connect to host
cyberspace.today: could not connect to host
-cyberxpert.nl: could not connect to host
+cybit.io: did not receive HSTS header
cyclehackluxembourgcity.lu: could not connect to host
cyclingjunkies.com: could not connect to host
cydia-search.io: could not connect to host
cyelint.com: could not connect to host
+cygu.ch: did not receive HSTS header
cymtech.net: could not connect to host
cynoshair.com: could not connect to host
cyoda.com: did not receive HSTS header
-cypherpunk.com: could not connect to host
+cype.dedyn.io: could not connect to host
cypherpunk.ws: could not connect to host
cyphertite.com: could not connect to host
+cypressinheritancesaga.com: could not connect to host
cytadel.fr: did not receive HSTS header
+cytegic-update-packages.com: could not connect to host
czaw.org: did not receive HSTS header
czirnich.org: did not receive HSTS header
czlx.co: could not connect to host
d-academia.com: did not receive HSTS header
+d-macindustries.com: did not receive HSTS header
d-rickroll-e.pw: could not connect to host
d00r.de: did not receive HSTS header
d0xq.net: could not connect to host
d1ves.io: did not receive HSTS header
d3x.pw: could not connect to host
-d4rkdeagle.tk: could not connect to host
+d4wson.com: could not connect to host
d8studio.net: could not connect to host
da8.cc: could not connect to host
dabblegoat.com: could not connect to host
dabbot.org: did not receive HSTS header
dad256.tk: could not connect to host
dadtheimpaler.com: could not connect to host
-daemon.xin: did not receive HSTS header
dah5.com: did not receive HSTS header
dahl-pind.dk: did not receive HSTS header
dai-rin.co.jp: could not connect to host
-dailybunda.com: could not connect to host
+dailybunda.com: did not receive HSTS header
dailystormerpodcasts.com: could not connect to host
dailytopix.com: could not connect to host
daimadi.com: could not connect to host
daisuki.pw: could not connect to host
-daiwai.de: could not connect to host
daiyuu.jp: could not connect to host
-dakerealestate.com: could not connect to host
+dakerealestate.com: did not receive HSTS header
dakl-shop.de: did not receive HSTS header
dakotasilencer.com: did not receive HSTS header
dakrib.net: could not connect to host
@@ -3221,9 +3512,12 @@ damedrogy.cz: could not connect to host
damianuv-blog.cz: did not receive HSTS header
damjanovic.work: could not connect to host
danbarrett.com.au: could not connect to host
+dancebuzz.co.uk: did not receive HSTS header
dancerdates.net: did not receive HSTS header
+dandenongroadapartments.com.au: did not receive HSTS header
dandymrsb.com: could not connect to host
dane-bre.net: max-age too low: 172800
+dango.in: could not connect to host
daniel-mosquera.com: could not connect to host
daniel-seifert.com: max-age too low: 600000
daniel-stahl.net: could not connect to host
@@ -3233,6 +3527,7 @@ danieldk.eu: did not receive HSTS header
danielgraziano.ca: could not connect to host
danieliancu.com: could not connect to host
danielkratz.com: max-age too low: 172800
+danielsteiner.net: could not connect to host
danielverlaan.nl: could not connect to host
danielworthy.com: did not receive HSTS header
danielzuzevich.com: could not connect to host
@@ -3242,6 +3537,7 @@ dankeblog.com: could not connect to host
danmark.guide: did not receive HSTS header
dannycrichton.com: did not receive HSTS header
danrl.de: could not connect to host
+dansa.com.co: did not receive HSTS header
danskringsporta.be: did not receive HSTS header
danwillenberg.com: did not receive HSTS header
daolerp.xyz: could not connect to host
@@ -3249,10 +3545,10 @@ dargasia.is: could not connect to host
dario.im: did not receive HSTS header
dariosirangelo.me: did not receive HSTS header
dark-x.cf: could not connect to host
-darkanzali.pl: max-age too low: 0
+darkanzali.pl: could not connect to host
darkdestiny.ch: could not connect to host
darkfriday.ddns.net: could not connect to host
-darkhole.cn: did not receive HSTS header
+darkhole.cn: could not connect to host
darkishgreen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
darkkeepers.dk: max-age too low: 172800
darknebula.space: could not connect to host
@@ -3263,7 +3559,6 @@ darkstance.org: could not connect to host
darktree.in: could not connect to host
darlastudio66.com: did not receive HSTS header
darlo.co.uk: could not connect to host
-daropia.org: could not connect to host
darrenellis.xyz: could not connect to host
darrenm.net: could not connect to host
das-tyrol.at: did not receive HSTS header
@@ -3278,24 +3573,29 @@ data.haus: could not connect to host
data.qld.gov.au: did not receive HSTS header
datacave.is: could not connect to host
datacubed.com: did not receive HSTS header
+datafd.com: could not connect to host
+datafd.net: could not connect to host
datahoarder.download: could not connect to host
-datahoarder.xyz: could not connect to host
+datahoarderschool.club: did not receive HSTS header
dataisme.com: did not receive HSTS header
datajapan.co.jp: did not receive HSTS header
datamatic.ru: could not connect to host
dataretention.solutions: could not connect to host
+datasharesystem.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
datasnitch.co.uk: could not connect to host
datatekniikka.com: could not connect to host
datedeposit.com: could not connect to host
datengrab.ws: could not connect to host
+datenlast.de: could not connect to host
datenreiter.cf: could not connect to host
datenreiter.gq: could not connect to host
datenreiter.ml: could not connect to host
datenreiter.tk: could not connect to host
-datenschutzhelden.org: did not receive HSTS header
+datenschutzhelden.org: could not connect to host
datine.com.br: could not connect to host
datorb.com: could not connect to host
datortipsen.se: did not receive HSTS header
+datsound.ru: could not connect to host
datsumou-q.com: did not receive HSTS header
daverandom.com: could not connect to host
davidandkailey.com: could not connect to host
@@ -3304,32 +3604,36 @@ davidglidden.eu: did not receive HSTS header
davidgrudl.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
davidhunter.scot: did not receive HSTS header
davidletellier.com: did not receive HSTS header
+davidlillo.com: could not connect to host
davidnoren.com: did not receive HSTS header
davidreinhardt.de: could not connect to host
davidscherzer.at: could not connect to host
davros.eu: could not connect to host
davros.ru: could not connect to host
+daw.nz: could not connect to host
dawnofeden.org: did not receive HSTS header
dawnson.is: could not connect to host
+dawnsonb.com: could not connect to host
day.vip: did not receive HSTS header
daylightcompany.com: did not receive HSTS header
days.one: could not connect to host
daytonaseaside.com: did not receive HSTS header
db.gy: could not connect to host
+dbjc.duckdns.org: did not receive HSTS header
dblx.io: could not connect to host
dbox.ga: could not connect to host
dbpmedia.se: did not receive HSTS header
-dbx.ovh: could not connect to host
+dbx.ovh: did not receive HSTS header
dbyz.co.uk: max-age too low: 43200
dcaracing.nl: could not connect to host
-dcc.moe: did not receive HSTS header
+dcc.moe: could not connect to host
dccode.gov: could not connect to host
dccoffeeproducts.com: did not receive HSTS header
dccraft.net: could not connect to host
-dclaisse.fr: could not connect to host
dctxf.com: did not receive HSTS header
dcuofriends.net: could not connect to host
dcw.io: did not receive HSTS header
+dd.art.pl: could not connect to host
ddatsh.com: did not receive HSTS header
dden.website: could not connect to host
dden.xyz: could not connect to host
@@ -3339,20 +3643,23 @@ ddocu.me: did not receive HSTS header
ddos-mitigation.co.uk: could not connect to host
ddos-mitigation.info: could not connect to host
de-servers.de: could not connect to host
+de-spil.be: could not connect to host
deadmann.com: could not connect to host
-deadsoul.net: max-age too low: 0
+deadsoul.net: could not connect to host
+deanjerkovich.com: could not connect to host
debank.tv: did not receive HSTS header
debatch.se: could not connect to host
debian-vhost.de: could not connect to host
debiton.dk: could not connect to host
debitoutil.com: did not receive HSTS header
+debitpaie.com: did not receive HSTS header
deborahmarinelli.eu: could not connect to host
debtkit.co.uk: did not receive HSTS header
debtprotectionreporting.com: did not receive HSTS header
decafu.co: could not connect to host
decentralizedweb.net: did not receive HSTS header
decesus.com: could not connect to host
-decibelios.li: could not connect to host
+decibelios.li: max-age too low: 0
decloverly.com: did not receive HSTS header
deco.me: could not connect to host
decoboutique.com: did not receive HSTS header
@@ -3367,10 +3674,10 @@ decoyrouting.com: could not connect to host
dedeo.tk: did not receive HSTS header
dedicatutiempo.es: could not connect to host
dedietrich-asia.com: could not connect to host
+deep.club: could not connect to host
deepcovelabs.net: could not connect to host
deepcreampie.com: could not connect to host
deepearth.uk: could not connect to host
-deephill.com: could not connect to host
deeprecce.com: could not connect to host
deeprecce.link: could not connect to host
deeprecce.tech: could not connect to host
@@ -3380,6 +3687,7 @@ deepvalley.tech: could not connect to host
deepvision.com.ua: did not receive HSTS header
deetz.nl: did not receive HSTS header
deetzen.de: did not receive HSTS header
+def-pos.ru: could not connect to host
defi-metier.com: did not receive HSTS header
defi-metier.fr: did not receive HSTS header
defi-metier.org: could not connect to host
@@ -3391,7 +3699,7 @@ defimetier.fr: could not connect to host
defimetier.org: did not receive HSTS header
defimetiers.com: did not receive HSTS header
defimetiers.fr: did not receive HSTS header
-degroetenvanrosaline.nl: did not receive HSTS header
+degroetenvanrosaline.nl: could not connect to host
deight.co: could not connect to host
deight.in: could not connect to host
dekasan.ru: could not connect to host
@@ -3401,10 +3709,10 @@ deliberatedigital.com: [Exception... "Component returned failure code: 0x8000400
deliver.moe: did not receive HSTS header
deliverance.co.uk: could not connect to host
deloittequant.com: could not connect to host
-deltaconcepts.de: did not receive HSTS header
+deltaconcepts.de: could not connect to host
delvj.org: could not connect to host
-demandware.com: could not connect to host
-demarche-expresse.com: could not connect to host
+demandware.com: did not receive HSTS header
+demarche-expresse.com: did not receive HSTS header
demdis.org: could not connect to host
demilitarized.ninja: could not connect to host
demo-server.us: could not connect to host
@@ -3413,8 +3721,6 @@ democracy.io: did not receive HSTS header
democraticdifference.com: did not receive HSTS header
demomanca.com: did not receive HSTS header
demotops.com: could not connect to host
-dempsters.ca: max-age too low: 86400
-dengchangdong.com: could not connect to host
denh.am: did not receive HSTS header
denisjean.fr: could not connect to host
dennispotter.eu: did not receive HSTS header
@@ -3431,12 +3737,14 @@ depedtayo.ph: could not connect to host
depijl-mz.nl: did not receive HSTS header
depixion.agency: could not connect to host
depo.space: could not connect to host
+deprobe.pro: could not connect to host
+depth-co.jp: could not connect to host
dequehablamos.es: could not connect to host
derbyshiredotnet.co.uk: did not receive HSTS header
derchris.me: could not connect to host
derekseaman.com: did not receive HSTS header
derekseaman.studio: did not receive HSTS header
-derevtsov.com: did not receive HSTS header
+derevtsov.com: could not connect to host
derivativeshub.pro: could not connect to host
derive.cc: could not connect to host
dermacarecomplex.com: could not connect to host
@@ -3463,31 +3771,38 @@ detecte-fuite.ch: could not connect to host
detecte.ch: could not connect to host
detectefuite.ch: could not connect to host
detector.exposed: could not connect to host
-detest.org: could not connect to host
+detest.org: did not receive HSTS header
dethikiemtra.com: did not receive HSTS header
+detroitrocs.org: did not receive HSTS header
detteflies.com: max-age too low: 7889238
detutorial.com: max-age too low: 36000
+deuchnord.fr: could not connect to host
deusu.de: could not connect to host
deusu.org: could not connect to host
+deux.solutions: could not connect to host
+deuxsol.co: could not connect to host
+deuxsol.com: could not connect to host
+deuxsolutions.com: could not connect to host
deuxvia.com: could not connect to host
dev: could not connect to host
dev-aegon.azurewebsites.net: did not receive HSTS header
dev-bluep.pantheonsite.io: did not receive HSTS header
dev-talk.eu: did not receive HSTS header
-dev-talk.net: could not connect to host
+dev-talk.net: did not receive HSTS header
devafterdark.com: could not connect to host
devdesco.com: could not connect to host
+devdom.io: max-age too low: 172800
develop.fitness: could not connect to host
+developermail.io: did not receive HSTS header
developersclub.website: could not connect to host
developyourelement.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
devh.de: could not connect to host
deviltraxxx.de: could not connect to host
devin-balimuhac.de: did not receive HSTS header
devincrow.me: could not connect to host
-devinpacker.com: did not receive HSTS header
+devinpacker.com: could not connect to host
devisonline.ch: could not connect to host
devistravaux.org: did not receive HSTS header
-devkit.cc: could not connect to host
devlux.ch: did not receive HSTS header
devmsg.com: did not receive HSTS header
devnsec.com: could not connect to host
@@ -3495,15 +3810,16 @@ devnull.team: could not connect to host
devopps.me: did not receive HSTS header
devops.moe: could not connect to host
devopsconnected.com: could not connect to host
-devpsy.info: could not connect to host
devtestfan1.gov: could not connect to host
devtub.com: could not connect to host
devuan.org: did not receive HSTS header
dewebwerf.nl: did not receive HSTS header
dewin.io: could not connect to host
dfixit.com: could not connect to host
+dfl.mn: could not connect to host
dfrance.com.br: did not receive HSTS header
dfviana.com.br: max-age too low: 2592000
+dgby.org: did not receive HSTS header
dggwp.de: did not receive HSTS header
dharamkot.com: could not connect to host
dharma.ai: did not receive HSTS header
@@ -3515,10 +3831,10 @@ dhub.xyz: could not connect to host
dhxxls.com: could not connect to host
diablotine.rocks: could not connect to host
diabolic.chat: could not connect to host
-diagnocentro.cl: could not connect to host
diagnosia.com: did not receive HSTS header
diagonale-deco.fr: did not receive HSTS header
-diamondcare.com.br: could not connect to host
+dialoegue.com: did not receive HSTS header
+diamondcare.com.br: did not receive HSTS header
diamondpkg.org: could not connect to host
diamondt.us: did not receive HSTS header
dianlujitao.com: did not receive HSTS header
@@ -3534,13 +3850,14 @@ dicio.com.br: did not receive HSTS header
dicionariofinanceiro.com: did not receive HSTS header
dicionariopopular.com: did not receive HSTS header
dick.red: could not connect to host
-didierlaumen.be: could not connect to host
-die-besten-weisheiten.de: did not receive HSTS header
+dickpics.ru: could not connect to host
+didierlaumen.be: did not receive HSTS header
+die-besten-weisheiten.de: could not connect to host
die-gruenen-teufel.de: could not connect to host
dieb.photo: could not connect to host
-diegobarrosmaia.com.br: could not connect to host
diejanssens.net: did not receive HSTS header
diemogebhardt.com: could not connect to host
+dierencompleet.nl: did not receive HSTS header
dierenkruiden.nl: did not receive HSTS header
dieser.me: could not connect to host
dietagespresse.com: did not receive HSTS header
@@ -3551,12 +3868,15 @@ diggable.co: max-age too low: 2592000
digihyp.ch: could not connect to host
digikol.net: could not connect to host
diginota.com: did not receive HSTS header
+digioccumss.ddns.net: could not connect to host
digired.xyz: could not connect to host
+digital1world.com: did not receive HSTS header
digitalbank.kz: could not connect to host
digitalcloud.ovh: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
digitalcraftmarketing.co.uk: did not receive HSTS header
digitaldaddy.net: did not receive HSTS header
digitalero.rip: did not receive HSTS header
+digitalewelten.de: could not connect to host
digitalexhale.com: did not receive HSTS header
digitalhurricane.io: did not receive HSTS header
digitalimpostor.co.uk: could not connect to host
@@ -3572,7 +3892,7 @@ digiworks.se: did not receive HSTS header
diguass.us: could not connect to host
dijks.com: could not connect to host
dikshant.net: could not connect to host
-diletec.com.br: did not receive HSTS header
+diletec.com.br: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
dillynbarber.com: did not receive HSTS header
dim.lighting: could not connect to host
dimes.com.tr: did not receive HSTS header
@@ -3580,10 +3900,11 @@ dimitrisotiropoulosbooks.com: max-age too low: 7889238
din-tools.com: did not receive HSTS header
dinamoelektrik.com: could not connect to host
dingcc.com: could not connect to host
-dingcc.me: could not connect to host
-dingcc.org: did not receive HSTS header
+dingcc.org: could not connect to host
dingcc.xyz: could not connect to host
+dingelbob-schuhcreme.gq: could not connect to host
dingss.com: could not connect to host
+dinheirolucrar.com: did not receive HSTS header
dinkum.online: could not connect to host
dinotv.at: could not connect to host
dintillat.fr: could not connect to host
@@ -3592,6 +3913,7 @@ dionysus.se: could not connect to host
dipconsultants.com: could not connect to host
direct2uk.com: could not connect to host
directhskincream.com: could not connect to host
+directinsure.in: did not receive HSTS header
directorinegocis.cat: could not connect to host
directtwo.solutions: could not connect to host
directtwosolutions.org: could not connect to host
@@ -3599,9 +3921,10 @@ directwatertanks.co.uk: did not receive HSTS header
direnv.net: did not receive HSTS header
direwolfsoftware.ca: could not connect to host
dirk-weise.de: could not connect to host
+dirkwolf.de: could not connect to host
dirtycat.ru: could not connect to host
disadattamentolavorativo.it: could not connect to host
-disclosure.io: could not connect to host
+disclosure.io: did not receive HSTS header
disco-crazy-world.de: could not connect to host
discord-chan.net: could not connect to host
discountmania.eu: did not receive HSTS header
@@ -3612,13 +3935,13 @@ discoverrsv.com: did not receive HSTS header
discoverwellness.center: did not receive HSTS header
discovery.lookout.com: did not receive HSTS header
discoveryballoon.org: could not connect to host
-discoveryottawa.ca: did not receive HSTS header
disking.co.uk: did not receive HSTS header
dislocated.de: did not receive HSTS header
+dismail.de: did not receive HSTS header
disorderboutique.com: did not receive HSTS header
-displayideas.gr: max-age too low: 0
disruptivelabs.net: could not connect to host
disruptivelabs.org: could not connect to host
+dissieux.com: did not receive HSTS header
dissimulo.me: could not connect to host
distinctivephotography.com.au: could not connect to host
distinguishedwindows.co.uk: did not receive HSTS header
@@ -3630,35 +3953,34 @@ dittvertshus.no: could not connect to host
diva-ey.com: could not connect to host
divegearexpress.com.cn: did not receive HSTS header
diversity-spielzeug.de: did not receive HSTS header
-divingwithnic.com: could not connect to host
divvi.co.nz: did not receive HSTS header
-divvymonkey.com: did not receive HSTS header
divvyradio.com: did not receive HSTS header
diwei.vip: did not receive HSTS header
dixiediner.com: did not receive HSTS header
dixmag.com: could not connect to host
-diz.in.ua: could not connect to host
+diz.in.ua: did not receive HSTS header
dizihocasi.com: could not connect to host
dizorg.net: could not connect to host
dj4et.de: could not connect to host
-djieno.com: could not connect to host
djul.net: could not connect to host
djxmmx.net: did not receive HSTS header
-djz4music.com: did not receive HSTS header
dkniss.de: could not connect to host
dko-steiermark.ml: did not receive HSTS header
dl.google.com: did not receive HSTS header (error ignored - included regardless)
-dlbouncers.co.uk: did not receive HSTS header
+dlbouncers.co.uk: could not connect to host
dlc.viasinc.com: could not connect to host
dlemper.de: did not receive HSTS header
+dlouwrink.nl: could not connect to host
dlyl888.com: could not connect to host
dmarketer.com: did not receive HSTS header
dmcglobaltravel.com.mx: did not receive HSTS header
dmcibulldog.com: did not receive HSTS header
dmdre.com: did not receive HSTS header
dmenergy.ru: did not receive HSTS header
+dmfd.net: could not connect to host
dmix.ca: could not connect to host
dmlogic.com: could not connect to host
+dmmkenya.co.ke: could not connect to host
dmtry.me: did not receive HSTS header
dmwall.cn: could not connect to host
dmz.ninja: could not connect to host
@@ -3666,19 +3988,21 @@ dnmaze.com: could not connect to host
dns.google.com: did not receive HSTS header (error ignored - included regardless)
dnsbird.net: could not connect to host
dnsbird.org: could not connect to host
-dnscrypt.org: could not connect to host
+dnscrypt.nl: could not connect to host
+dnscrypt.org: max-age too low: 0
dnsknowledge.com: did not receive HSTS header
dnsql.io: could not connect to host
do-do.tk: could not connect to host
doak.io: did not receive HSTS header
dobet.in: could not connect to host
-doc-justice.com: could not connect to host
+dobsnet.net: could not connect to host
+doc-justice.com: did not receive HSTS header
docid.io: could not connect to host
+dockerturkiye.com: could not connect to host
docket.news: could not connect to host
-doclot.io: did not receive HSTS header
+doclot.io: could not connect to host
docplexus.in: did not receive HSTS header
docset.io: could not connect to host
-doctorsonmaps.com: could not connect to host
docufiel.com: could not connect to host
doculus.io: did not receive HSTS header
documentations-sociales.com: could not connect to host
@@ -3691,6 +4015,7 @@ dogespeed.ga: could not connect to host
doggieholic.net: could not connect to host
dognlife.com: could not connect to host
dogoodbehappyllc.com: did not receive HSTS header
+dogprograms.net: could not connect to host
dohosting.ru: could not connect to host
dojifish.space: could not connect to host
dojin.nagoya: could not connect to host
@@ -3702,8 +4027,9 @@ dollarstore24.com: could not connect to host
dollywiki.co.uk: could not connect to host
dolphin-cloud.com: could not connect to host
dolphin-hosting.com: could not connect to host
-dolphincorp.co.uk: did not receive HSTS header
+dolphincorp.co.uk: could not connect to host
dolphinswithlasers.com: could not connect to host
+dolt.xyz: did not receive HSTS header
domaine-aigoual-cevennes.com: did not receive HSTS header
domainelaremejeanne.com: did not receive HSTS header
domaris.de: did not receive HSTS header
@@ -3713,17 +4039,18 @@ domenicocatelli.com: did not receive HSTS header
domfee.com: could not connect to host
dominikanskarepubliken.guide: could not connect to host
dominioanimal.com: could not connect to host
-dominique-mueller.de: did not receive HSTS header
+dominique-mueller.de: could not connect to host
don.yokohama: could not connect to host
donateway.com: did not receive HSTS header
dong8.top: could not connect to host
donhoward.org: did not receive HSTS header
donmez.uk: could not connect to host
donmez.ws: could not connect to host
+donnoval.ru: could not connect to host
donotcall.gov: did not receive HSTS header
donotspampls.me: could not connect to host
donotspellitgav.in: did not receive HSTS header
-donsbach-edv.de: did not receive HSTS header
+donpaginasweb.com: did not receive HSTS header
donthedragonwilson.com: could not connect to host
dontpayfull.com: did not receive HSTS header
donttrustrobots.nl: could not connect to host
@@ -3735,22 +4062,20 @@ dooku.cz: could not connect to host
doomleika.com: did not receive HSTS header
doooonoooob.com: could not connect to host
dopost.it: could not connect to host
-dorfbaeck.at: did not receive HSTS header
-doridian.com: could not connect to host
-doridian.de: could not connect to host
-doridian.org: could not connect to host
doriginal.es: did not receive HSTS header
dorkfarm.com: did not receive HSTS header
dormebebe.com.br: could not connect to host
dosipe.com: could not connect to host
doska.kz: could not connect to host
dostavkakurierom.ru: could not connect to host
-dot42.no: could not connect to host
+dotacni-parazit.cz: could not connect to host
dotadata.me: could not connect to host
+dotb.dn.ua: did not receive HSTS header
dotbrick.co.th: did not receive HSTS header
dotkod.com: could not connect to host
dotnetsandbox.ca: could not connect to host
dotspaperie.com: could not connect to host
+doubleaste.com: did not receive HSTS header
doublethink.online: could not connect to host
doubleyummy.uk: did not receive HSTS header
dougferris.id.au: could not connect to host
@@ -3766,14 +4091,15 @@ download.jitsi.org: did not receive HSTS header
downsouthweddings.com.au: did not receive HSTS header
doyoulyft.com: could not connect to host
dpangerl.de: did not receive HSTS header
-dpg.no: could not connect to host
dps.srl: did not receive HSTS header
dpsart.it: did not receive HSTS header
+dr-knirr.de: could not connect to host
dr2dr.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-drabim.org: did not receive HSTS header
+drabbin.com: could not connect to host
draghive.club: did not receive HSTS header
draghive.net: could not connect to host
draghive.photos: did not receive HSTS header
+dragoncityhack.tips: could not connect to host
dragonisles.net: could not connect to host
dragons-of-highlands.cz: did not receive HSTS header
dragonsmoke.cloud: could not connect to host
@@ -3789,7 +4115,7 @@ drastosasports.com.br: could not connect to host
drawvesly.ovh: did not receive HSTS header
drdevil.ru: could not connect to host
dreadbyte.com: could not connect to host
-dreadd.org: did not receive HSTS header
+dreadd.org: could not connect to host
dreamaholic.club: could not connect to host
dreamcatcherblog.de: could not connect to host
dreaming.solutions: could not connect to host
@@ -3797,7 +4123,7 @@ dreamlighteyeserum.com: could not connect to host
dreamof.net: could not connect to host
dreamsforabetterworld.com.au: did not receive HSTS header
dredgepress.com: did not receive HSTS header
-dreischneidiger.de: did not receive HSTS header
+dreischneidiger.de: could not connect to host
dreizwosechs.de: could not connect to host
drewgle.net: could not connect to host
drhopeson.com: could not connect to host
@@ -3831,7 +4157,7 @@ droomhuis-in-zeeland-kopen.nl: could not connect to host
droomhuis-in-zuid-holland-kopen.nl: could not connect to host
droomhuisindestadverkopen.nl: could not connect to host
droomhuisophetplattelandverkopen.nl: could not connect to host
-dropcam.com: did not receive HSTS header
+dropcam.com: could not connect to host
drostschocolates.com: did not receive HSTS header
drpure.pw: did not receive HSTS header
drtroyhendrickson.com: could not connect to host
@@ -3839,7 +4165,6 @@ drtti.io: could not connect to host
drturner.com.au: did not receive HSTS header
drugagodba.si: did not receive HSTS header
drumbandesperanto.nl: could not connect to host
-drummondframing.com: could not connect to host
drupal123.com: could not connect to host
druznek.rocks: could not connect to host
druznek.xyz: could not connect to host
@@ -3849,8 +4174,11 @@ drybasementkansas.com: did not receive HSTS header
drycreekapiary.com: could not connect to host
ds-christiansen.de: could not connect to host
dshiv.io: could not connect to host
+dsouzamusic.com: could not connect to host
+dsuinnovation.com: could not connect to host
+dsyunmall.com: could not connect to host
+dtp-mstdn.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
dtub.co: could not connect to host
-dtx.sk: could not connect to host
duan.li: could not connect to host
dubik.su: did not receive HSTS header
duckyubuntu.tk: could not connect to host
@@ -3858,8 +4186,8 @@ ducohosting.com: did not receive HSTS header
dudesunderwear.com.br: could not connect to host
duelsow.eu: could not connect to host
duelysthub.com: could not connect to host
-duerls.de: did not receive HSTS header
-duesee.org: could not connect to host
+duerls.de: could not connect to host
+dugnet.tech: could not connect to host
dujsq.com: could not connect to host
dujsq.top: could not connect to host
dukec.me: did not receive HSTS header
@@ -3867,42 +4195,47 @@ dukefox.com: could not connect to host
duks.com.br: did not receive HSTS header
dullsir.com: did not receive HSTS header
dunashoes.com: could not connect to host
-dune.io: could not connect to host
+dundalkdonnie.com: could not connect to host
+dune.io: did not receive HSTS header
dunea.nl: did not receive HSTS header
dung-massage.fr: did not receive HSTS header
-dungi.org: did not receive HSTS header
+dunklau.fr: could not connect to host
duo.money: could not connect to host
duole30.com: could not connect to host
-duoluodeyu.com: could not connect to host
duongpho.com: did not receive HSTS header
durangoenergyllc.com: could not connect to host
dushu.cat: could not connect to host
duskopy.top: could not connect to host
+dutchessuganda.com: did not receive HSTS header
dutchrank.com: did not receive HSTS header
dutyfreeonboard.com: did not receive HSTS header
duuu.ch: could not connect to host
duyao.de: max-age too low: 86400
-dv189.com: did not receive HSTS header
dvotx.org: did not receive HSTS header
dwellstudio.com: did not receive HSTS header
dwhd.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
dwnld.me: could not connect to host
dycem-ns.com: did not receive HSTS header
+dycoa.com: did not receive HSTS header
dycontrol.de: could not connect to host
dylanscott.com.au: did not receive HSTS header
dynamic-innovations.net: could not connect to host
dynamic-networks.be: could not connect to host
+dynamictostatic.com: could not connect to host
dynamize.solutions: did not receive HSTS header
+dyncdn.me: could not connect to host
dynts.pro: could not connect to host
+dyz.pw: did not receive HSTS header
dziekonski.com: could not connect to host
dzimejl.sk: did not receive HSTS header
dzlibs.io: could not connect to host
+dzsibi.com: could not connect to host
dzytdl.com: did not receive HSTS header
e-aut.net: could not connect to host
-e-baraxolka.ru: could not connect to host
e-deca2.org: did not receive HSTS header
e-isfa.eu: did not receive HSTS header
e-mak.eu: could not connect to host
+e-migration.ch: could not connect to host
e-newshub.com: could not connect to host
e-pokupki.eu: did not receive HSTS header
e-rickroll-r.pw: could not connect to host
@@ -3917,6 +4250,7 @@ e3amn2l.com: could not connect to host
e3kids.com: did not receive HSTS header
e3q.de: could not connect to host
e505.net: did not receive HSTS header
+e51888.com: could not connect to host
eagle-aluminum.com: did not receive HSTS header
eagle-yard.de: could not connect to host
eagleridgecampground.com: could not connect to host
@@ -3927,6 +4261,7 @@ earlybirdsnacks.com: could not connect to host
earth-people.org: could not connect to host
earthrise16.com: could not connect to host
easew.com: could not connect to host
+eastcoastinflatables.co.uk: did not receive HSTS header
easthokkaido-5airport.jp: did not receive HSTS header
eastmidlandsstargazers.org.uk: did not receive HSTS header
eastmontgroup.com: did not receive HSTS header
@@ -3934,9 +4269,10 @@ easy-factures.fr: could not connect to host
easychiller.org: could not connect to host
easykonto.de: could not connect to host
easyplane.it: did not receive HSTS header
-easysimplecrm.com: did not receive HSTS header
-eat-mine.ml: max-age too low: 0
+easyreal.ru: could not connect to host
+easysimplecrm.com: could not connect to host
eat-the-world.ch: could not connect to host
+eat4happiness.com: did not receive HSTS header
eatfitoutlet.com.br: could not connect to host
eatlowcarb.de: did not receive HSTS header
eattherich.us: did not receive HSTS header
@@ -3960,9 +4296,11 @@ eccux.com: could not connect to host
ecfs.link: could not connect to host
ecg.fr: could not connect to host
echipstore.com: did not receive HSTS header
-echomanchester.net: did not receive HSTS header
+echo.cc: could not connect to host
+echomanchester.net: could not connect to host
echoteen.com: did not receive HSTS header
eckro.com: did not receive HSTS header
+ecodedi.com: did not receive HSTS header
ecole-en-danger.fr: could not connect to host
ecole-iaf.fr: could not connect to host
ecole-maternelle-saint-joseph.be: could not connect to host
@@ -3972,13 +4310,13 @@ ecomlane.com: could not connect to host
ecomparemo.com: did not receive HSTS header
econativa.pt: could not connect to host
economy.st: did not receive HSTS header
+economycarrentalscyprus.com: could not connect to host
ecorus.eu: did not receive HSTS header
+ecosoftconsult.com: could not connect to host
ecotruck-pooling.com: did not receive HSTS header
-ecpannualmeeting.com: could not connect to host
ecrimex.net: did not receive HSTS header
ectora.com: could not connect to host
ed-matters.org: did not receive HSTS header
-edanni.io: could not connect to host
edati.lv: could not connect to host
edcphenix.tk: could not connect to host
eddmixpanel.com: could not connect to host
@@ -3989,30 +4327,33 @@ eden-noel.at: could not connect to host
edenaya.com: could not connect to host
edenmal.net: did not receive HSTS header
edenvaleplumber24-7.co.za: did not receive HSTS header
+edenvalerubbleremovals.co.za: did not receive HSTS header
edgecustomersportal.com: could not connect to host
edgereinvent.com: did not receive HSTS header
+edh.email: did not receive HSTS header
edhrealtor.com: did not receive HSTS header
edilservizi.it: did not receive HSTS header
edilservizivco.it: did not receive HSTS header
-ediscomp.sk: did not receive HSTS header
+edisonchee.com: could not connect to host
edissecurity.sk: did not receive HSTS header
edition-pommern.com: did not receive HSTS header
editoraacademiacrista.com.br: could not connect to host
edix.ru: could not connect to host
edk.com.tr: did not receive HSTS header
-edpubs.gov: could not connect to host
edsh.de: did not receive HSTS header
+eduardnikolenko.com: could not connect to host
+eduardnikolenko.ru: could not connect to host
educaid.be: did not receive HSTS header
educatio.tech: could not connect to host
educatoys.com.br: could not connect to host
educatweb.de: did not receive HSTS header
educnum.fr: did not receive HSTS header
educourse.ga: could not connect to host
-eductf.org: could not connect to host
eduif.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
eduvance.in: did not receive HSTS header
+edvgarbe.de: could not connect to host
ee-terminals.com: could not connect to host
-eeb98.com: did not receive HSTS header
+eeb98.com: could not connect to host
eeetrust.org: could not connect to host
eenekorea.com: could not connect to host
eengezinswoning-in-alphen-aan-den-rijn-kopen.nl: could not connect to host
@@ -4028,12 +4369,16 @@ eengezinswoning-in-zuidplas-kopen.nl: could not connect to host
eengezinswoning-in-zwartewaterland-kopen.nl: could not connect to host
eengezinswoningverkopen.nl: could not connect to host
eenhoorn.ga: could not connect to host
+eeqj.com: did not receive HSTS header
eesistumine2017.ee: could not connect to host
eez.ee: could not connect to host
effectiveosgi.com: could not connect to host
+effectivepapers.com: could not connect to host
efficienthealth.com: did not receive HSTS header
effortlesshr.com: did not receive HSTS header
+efinity.io: did not receive HSTS header
eftcorp.biz: max-age too low: 0
+egfl.org.uk: did not receive HSTS header
egge.com: max-age too low: 0
egit.co: could not connect to host
ego-world.org: did not receive HSTS header
@@ -4047,12 +4392,17 @@ ehuber.info: could not connect to host
eicfood.com: could not connect to host
eidolonhost.com: did not receive HSTS header
eifelindex.de: did not receive HSTS header
+eiga-movie.com: max-age too low: 0
eigenbubi.de: could not connect to host
+eightyfour.ca: could not connect to host
eigo.work: could not connect to host
-eimanavicius.lt: did not receive HSTS header
+eimanavicius.lt: could not connect to host
einfachmaldiefressehalten.de: could not connect to host
einhorn.space: could not connect to host
+einmonolog.de: could not connect to host
einsatzstiefel.info: could not connect to host
+einsit.com: could not connect to host
+einsitapis.com: could not connect to host
ejgconsultancy.co.uk: did not receive HSTS header
ejusu.com: did not receive HSTS header
ekbanden.nl: could not connect to host
@@ -4067,13 +4417,15 @@ elanguest.ro: could not connect to host
elanguest.ru: could not connect to host
elaxy-online.de: could not connect to host
elblein.de: did not receive HSTS header
+elderoost.com: could not connect to host
elearningpilot.com: did not receive HSTS header
-electicofficial.com: could not connect to host
+electicofficial.com: did not receive HSTS header
electricalcontrolpanels.co.uk: could not connect to host
electricant.com: did not receive HSTS header
electricant.nl: did not receive HSTS header
electriccitysf.com: could not connect to host
-electrician-umhlanga.co.za: could not connect to host
+electricfencealberton.co.za: did not receive HSTS header
+electrician-umhlanga.co.za: did not receive HSTS header
electricianforum.co.uk: did not receive HSTS header
electricianumhlangarocks.co.za: did not receive HSTS header
electricoperaduo.com: did not receive HSTS header
@@ -4082,7 +4434,7 @@ eled.io: could not connect to host
elektronring.com: could not connect to host
element-43.com: did not receive HSTS header
elementalict.com: did not receive HSTS header
-elementalrobotics.com: did not receive HSTS header
+elementalrobotics.com: could not connect to host
elemenx.com: did not receive HSTS header
elemprendedor.com.ve: could not connect to host
elena-baykova.ru: did not receive HSTS header
@@ -4094,29 +4446,30 @@ eleonorengland.com: did not receive HSTS header
eletesstilus.hu: could not connect to host
elevateandprosper.com: could not connect to host
elgacien.de: could not connect to host
-elglobo.com.mx: max-age too low: 86400
elguillatun.cl: did not receive HSTS header
elhall.pro: did not receive HSTS header
elhall.ru: did not receive HSTS header
+elia.cloud: could not connect to host
elias-nicolas.com: could not connect to host
eliasojala.me: did not receive HSTS header
elimdengelen.com: did not receive HSTS header
eliott.be: could not connect to host
-elistor6100.xyz: did not receive HSTS header
elite-box.com: did not receive HSTS header
elite-box.org: did not receive HSTS header
+elite-porno.ru: could not connect to host
elitecovering.fr: did not receive HSTS header
elitefishtank.com: could not connect to host
-elitesensual.com.br: did not receive HSTS header
-ellegaard.dk: could not connect to host
+elitesensual.com.br: could not connect to host
ellen-skye.de: max-age too low: 604800
elliotgluck.com: did not receive HSTS header
+elliquiy.com: could not connect to host
elmar-kraamzorg.nl: did not receive HSTS header
elna-service.com.ua: did not receive HSTS header
elnutricionista.es: could not connect to host
elohna.ch: did not receive HSTS header
elonbase.com: could not connect to host
elpay.kz: did not receive HSTS header
+elpo.net: could not connect to host
elpo.xyz: could not connect to host
elsamakhin.com: could not connect to host
elsemanario.com: did not receive HSTS header
@@ -4124,16 +4477,21 @@ elsensohn.ch: did not receive HSTS header
elsitar.com: could not connect to host
elsword.moe: could not connect to host
eltransportquevolem.org: could not connect to host
+eltrox.me: could not connect to host
+elyisus.info: could not connect to host
elytronsecurity.com: could not connect to host
email.lookout.com: could not connect to host
email2rss.net: could not connect to host
emanatepixels.com: could not connect to host
emanga.su: did not receive HSTS header
-emavok.eu: did not receive HSTS header
+emanuelduss.ch: did not receive HSTS header
+emavok.eu: could not connect to host
embellir-aroma.com: could not connect to host
embellir-kyujin.com: could not connect to host
embracethedarkness.co.uk: could not connect to host
embroidered-stuff.com: could not connect to host
+embudospro.net: did not receive HSTS header
+emedworld.com: did not receive HSTS header
emeldi-commerce.com: max-age too low: 0
emergencymedicinefoundations.com: did not receive HSTS header
emergentvisiontec.com: did not receive HSTS header
@@ -4146,6 +4504,7 @@ eminovic.me: could not connect to host
emjainteractive.com: did not receive HSTS header
emjimadhu.com: could not connect to host
emmable.com: could not connect to host
+emmaliddell.com: did not receive HSTS header
emmanuelle-et-julien.ch: could not connect to host
emmdy.com: did not receive HSTS header
emmehair.com: could not connect to host
@@ -4162,11 +4521,14 @@ employeestore.org: did not receive HSTS header
emporiovinareal.com.br: could not connect to host
empty-r.com: could not connect to host
emptypath.com: did not receive HSTS header
+emyself.info: could not connect to host
en4u.org: could not connect to host
enaia.fr: did not receive HSTS header
+encadrer-mon-enfant.com: did not receive HSTS header
encode.space: could not connect to host
encode.uk.com: did not receive HSTS header
encoder.pw: could not connect to host
+encoderx.uk: could not connect to host
encontrebarato.com.br: did not receive HSTS header
encrypted.google.com: did not receive HSTS header (error ignored - included regardless)
encryptedaudience.com: could not connect to host
@@ -4184,24 +4546,31 @@ endohaus.us: could not connect to host
endspamwith.us: could not connect to host
enecoshop.nl: did not receive HSTS header
enefan.jp: could not connect to host
+energethik-tulln.at: did not receive HSTS header
+enersaveapp.org: could not connect to host
+enersec.co.uk: could not connect to host
+enfoqueseguro.com: did not receive HSTS header
enginsight.com: did not receive HSTS header
+enginx.cn: could not connect to host
englerts.de: did not receive HSTS header
+englishclub.com: did not receive HSTS header
englishdirectory.de: could not connect to host
englishyamal.ru: did not receive HSTS header
enigmacpt.com: did not receive HSTS header
enigmail.net: did not receive HSTS header
-enixgaming.com: could not connect to host
enjen.net: did not receive HSTS header
enjoymayfield.com: max-age too low: 0
-enlighten10x.ga: max-age too low: 0
+enjoystudio.ro: did not receive HSTS header
+enlatte.com: did not receive HSTS header
+enlightened.si: could not connect to host
enoou.com: could not connect to host
-enpalmademallorca.info: did not receive HSTS header
+enpalmademallorca.info: could not connect to host
ensemble-vos-idees.fr: could not connect to host
entaurus.com: could not connect to host
enteente.club: could not connect to host
+enteente.com: could not connect to host
enteente.space: could not connect to host
enteente.xyz: could not connect to host
-entercenter.ru: could not connect to host
enterdev.co: did not receive HSTS header
enterprisecarclub.co.uk: did not receive HSTS header
enterprivacy.com: did not receive HSTS header
@@ -4211,22 +4580,46 @@ entrepreneur.or.id: could not connect to host
enum.eu.org: could not connect to host
enumify.com: could not connect to host
envelope.co.nz: could not connect to host
+enviam.de: did not receive HSTS header
enviapresentes.com.br: could not connect to host
enviatufoto.com: max-age too low: 604800
+environment.ai: could not connect to host
+envoyworld.com: did not receive HSTS header
envygeeks.com: could not connect to host
eol34.com: could not connect to host
eoldb.org: could not connect to host
eolme.ml: could not connect to host
epanurse.com: could not connect to host
epaygateway.net: could not connect to host
-epdeveloperchallenge.com: did not receive HSTS header
+ephe.be: could not connect to host
ephry.com: could not connect to host
epicmc.games: could not connect to host
epitesz.co: did not receive HSTS header
+epos-distributor.co.uk: could not connect to host
+eposbirmingham.co.uk: could not connect to host
+eposbrighton.co.uk: could not connect to host
+eposbristol.co.uk: could not connect to host
+eposcardiff.co.uk: could not connect to host
eposcloud.net: could not connect to host
+eposkent.co.uk: could not connect to host
+eposleeds.co.uk: could not connect to host
+eposleicester.co.uk: could not connect to host
+eposliverpool.co.uk: could not connect to host
+eposlondon.co.uk: could not connect to host
+eposmidlands.co.uk: could not connect to host
+eposnewport.co.uk: could not connect to host
+eposnottingham.co.uk: could not connect to host
+eposreading.co.uk: could not connect to host
+eposreview.co.uk: could not connect to host
+epossheffield.co.uk: could not connect to host
+epossurrey.co.uk: could not connect to host
+epossussex.co.uk: could not connect to host
+eposswansea.co.uk: could not connect to host
+epossystems.co.uk: could not connect to host
+eposwales.co.uk: could not connect to host
+eposyork.co.uk: could not connect to host
epoxate.com: could not connect to host
eprofitacademy.com: did not receive HSTS header
-epsilon.dk: could not connect to host
eq8.net.au: could not connect to host
eqib.nl: did not receive HSTS header
eqim.me: could not connect to host
@@ -4250,55 +4643,71 @@ ericloud.tk: could not connect to host
ericorporation.com: did not receive HSTS header
ericyl.com: did not receive HSTS header
eriel.com.br: could not connect to host
-eriser.fr: did not receive HSTS header
+erikwagner.de: did not receive HSTS header
+erinlin.com: did not receive HSTS header
+eriser.fr: could not connect to host
ernaehrungsberatung-rapperswil.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
ernaehrungsberatung-zurich.ch: could not connect to host
ernesto.at: could not connect to host
eroimatome.com: could not connect to host
eromixx.com: could not connect to host
+eroskines.com: did not receive HSTS header
erotalia.es: could not connect to host
erotic4me.ch: did not receive HSTS header
-eroticforce.com: could not connect to host
erotische-aanbiedingen.nl: could not connect to host
+erotpo.cz: could not connect to host
errolz.com: did not receive HSTS header
errors.zenpayroll.com: could not connect to host
erspro.net: could not connect to host
eru.me: did not receive HSTS header
erwinvanlonden.net: did not receive HSTS header
+es8888.net: could not connect to host
es888999.com: could not connect to host
-esaborit.ddns.net: could not connect to host
esafar.cz: did not receive HSTS header
esb111.com: could not connect to host
esb111.net: could not connect to host
esb112.com: could not connect to host
esb112.net: could not connect to host
+esb1668.com: could not connect to host
esb16888.com: could not connect to host
+esb17888.com: could not connect to host
esb222.net: could not connect to host
esb555.com: could not connect to host
+esb556.com: could not connect to host
esb666.com: could not connect to host
esb666.net: could not connect to host
esb66666.com: could not connect to host
esb688.com: could not connect to host
esb68888.com: could not connect to host
+esb777.cc: could not connect to host
+esb777.com: could not connect to host
+esb777.net: could not connect to host
esb777.us: could not connect to host
esb9588.info: did not receive HSTS header
esb999.biz: could not connect to host
+esb999.com: could not connect to host
+esb999.info: could not connect to host
esb999.us: could not connect to host
+esba11.cc: could not connect to host
+esba11.net: could not connect to host
esba11.us: could not connect to host
esball.in: could not connect to host
+esball888.com: could not connect to host
+esball888.net: could not connect to host
esbuilders.co.nz: did not receive HSTS header
-escael.org: did not receive HSTS header
escalate.eu: could not connect to host
escapees.com: did not receive HSTS header
escolaengenharia.com.br: did not receive HSTS header
escort-fashion.com: could not connect to host
escortdisplay.com: could not connect to host
-escortshotsexy.com: max-age too low: 2592000
+escortshotsexy.com: could not connect to host
escotour.com: did not receive HSTS header
escueladewordpress.com: did not receive HSTS header
esec.rs: did not receive HSTS header
eseth.de: did not receive HSTS header
esh.ink: could not connect to host
+eshepperd.com: did not receive HSTS header
+eshtapay.com: could not connect to host
esko.bar: could not connect to host
esln.org: did not receive HSTS header
esn-ypci.com: did not receive HSTS header
@@ -4311,9 +4720,14 @@ espacemontmorency.com: did not receive HSTS header
especificosba.com.mx: could not connect to host
espo.com.ua: did not receive HSTS header
espra.com: could not connect to host
-espressivo.com.br: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+espressivo.com.br: did not receive HSTS header
+esprit-cloture.fr: did not receive HSTS header
esquonic.com: could not connect to host
esrs.gov: could not connect to host
+essayforum.com: could not connect to host
+essaylib.com: could not connect to host
+essayscam.org: could not connect to host
+essayshark.com: could not connect to host
essenceofvitalitydetox.com: could not connect to host
essential12.com: could not connect to host
essentialoilsimports.com: could not connect to host
@@ -4323,11 +4737,13 @@ esseriumani.com: could not connect to host
essexghosthunters.co.uk: did not receive HSTS header
essplusmed.org: could not connect to host
estaciona.guru: could not connect to host
+estaleiro.org: could not connect to host
estebanborges.com: did not receive HSTS header
estespr.com: did not receive HSTS header
estilosapeca.com: could not connect to host
estland.guide: could not connect to host
-estoic.net: could not connect to host
+estoqueinformatica.com.br: could not connect to host
+estudioamazonico.com: could not connect to host
et-buchholz.de: could not connect to host
et180.com: could not connect to host
etangs-magazine.com: could not connect to host
@@ -4348,20 +4764,20 @@ ethicall.org.uk: did not receive HSTS header
ethil-faer.fr: could not connect to host
ethiobaba.com: could not connect to host
etidni.help: did not receive HSTS header
-etincelle.ml: could not connect to host
etk2000.com: did not receive HSTS header
etmirror.top: could not connect to host
etmirror.xyz: could not connect to host
etoto.pl: did not receive HSTS header
etproxy.tech: could not connect to host
ets2mp.de: did not receive HSTS header
+etskinner.com: did not receive HSTS header
+etskinner.net: could not connect to host
etsysecure.com: could not connect to host
-ettebiz.com: did not receive HSTS header
+ettebiz.com: max-age too low: 0
etula.ga: could not connect to host
etula.me: could not connect to host
etys.no: did not receive HSTS header
euanbaines.com: did not receive HSTS header
-eucl3d.com: could not connect to host
euclideanpostulates.xyz: could not connect to host
eucollegetours.com: could not connect to host
euexia.fr: could not connect to host
@@ -4373,35 +4789,38 @@ eung.ga: could not connect to host
eupbor.com: could not connect to host
euph.eu: could not connect to host
eupho.me: could not connect to host
-eupresidency2018.com: did not receive HSTS header
+eupresidency2018.com: could not connect to host
euren.se: could not connect to host
eurocamping.se: could not connect to host
euroescortguide.com: could not connect to host
-europeancupinline.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
euroshop24.net: could not connect to host
+euroskano.nl: did not receive HSTS header
eurospecautowerks.com: did not receive HSTS header
eurostrategy.vn.ua: could not connect to host
-eurotime.ua: could not connect to host
evanhandgraaf.nl: did not receive HSTS header
evankurniawan.com: did not receive HSTS header
+evapp.org: could not connect to host
evasion-energie.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
evasioncreole.com: could not connect to host
evdenevenakliyatankara.pw: could not connect to host
evecalm.com: did not receive HSTS header
evedanjailbreak.com: could not connect to host
-evegalaxy.net: did not receive HSTS header
+evegalaxy.net: could not connect to host
+evenstar-gaming.com: could not connect to host
event64.ru: did not receive HSTS header
eventmake.es: could not connect to host
+eventplace.me: did not receive HSTS header
events12.com: did not receive HSTS header
-eventsafrica.net: did not receive HSTS header
+eventsafrica.net: could not connect to host
everyarti.st: could not connect to host
everybooks.com: could not connect to host
+everyday.eu.org: could not connect to host
everydaytherich.com: max-age too low: 7776000
-everygayporn.com: could not connect to host
+everydaywot.com: could not connect to host
everygayporn.xyz: could not connect to host
everylab.org: could not connect to host
everymove.org: could not connect to host
-everything.place: did not receive HSTS header
+everything.place: could not connect to host
everytruckjob.com: did not receive HSTS header
eveseat.net: could not connect to host
eveshaiwu.com: could not connect to host
@@ -4419,37 +4838,40 @@ evowl.com: could not connect to host
ewallet-optimizer.com: did not receive HSTS header
ewex.org: could not connect to host
eworksmedia.com: could not connect to host
+exampleessays.com: could not connect to host
excelgum.ca: did not receive HSTS header
exceptionalbits.com: did not receive HSTS header
-exceptionalservers.com: did not receive HSTS header
exceptionalservices.us: could not connect to host
exchangecoordinator.com: could not connect to host
-execution.biz.tr: could not connect to host
exembit.com: did not receive HSTS header
exfiles.cz: did not receive HSTS header
+exgaywatch.com: could not connect to host
exgravitus.com: could not connect to host
exno.co: could not connect to host
exo.do: could not connect to host
+exoticads.com: could not connect to host
exousiakaidunamis.xyz: could not connect to host
expanddigital.media: did not receive HSTS header
expatads.com: could not connect to host
+expatriate.pl: did not receive HSTS header
+expecting.com.br: could not connect to host
experticon.com: did not receive HSTS header
-expertmile.com: could not connect to host
+expertmile.com: did not receive HSTS header
explodie.org: could not connect to host
explodingcamera.com: did not receive HSTS header
exploit-db.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
exploit.cz: did not receive HSTS header
-expo-designers.com: did not receive HSTS header
-expo-larionov.org: did not receive HSTS header
+expo-designers.com: could not connect to host
+expokohler.com: could not connect to host
expoort.com.br: could not connect to host
expoundite.net: could not connect to host
expowerhps.com: did not receive HSTS header
+expressemotion.net: could not connect to host
expressfinance.co.za: did not receive HSTS header
-extensibility.biz.tr: could not connect to host
exteriorservices.io: could not connect to host
extramoney.cash: did not receive HSTS header
extrathemeshowcase.net: could not connect to host
-extratorrent.cool: did not receive HSTS header
+extratorrent.cool: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
extratorrent.fyi: could not connect to host
extratorrent.red: could not connect to host
extratorrent.world: could not connect to host
@@ -4458,15 +4880,18 @@ extratorrents.tech: could not connect to host
extreemhost.nl: did not receive HSTS header
extremenetworking.net: could not connect to host
exy.pw: could not connect to host
+eyasc.nl: did not receive HSTS header
eyedarts.com: did not receive HSTS header
eyeglassuniverse.com: did not receive HSTS header
eyenote.gov: did not receive HSTS header
eyes-of-universe.eu: did not receive HSTS header
eyesoccer-didikh.rhcloud.com: could not connect to host
+eyps.net: did not receive HSTS header
eytosh.net: could not connect to host
ez.fi: could not connect to host
ezimoeko.net: could not connect to host
ezmod.org: could not connect to host
+eznfe.com: could not connect to host
ezorgportaal.nl: could not connect to host
ezrefurb.co.uk: did not receive HSTS header
eztv.ch: did not receive HSTS header
@@ -4476,11 +4901,13 @@ f00.ca: did not receive HSTS header
f1bigpicture.com: could not connect to host
f2f.cash: could not connect to host
f42.net: could not connect to host
+f5movies.top: could not connect to host
f8842.com: could not connect to host
f9digital.com: did not receive HSTS header
faber.io: could not connect to host
faberusa.com: did not receive HSTS header
fabhub.io: could not connect to host
+fabian-fingerle.de: could not connect to host
fabian-kluge.de: could not connect to host
fabianfischer.de: did not receive HSTS header
fabianmunoz.com: did not receive HSTS header
@@ -4489,6 +4916,7 @@ fabled.com: did not receive HSTS header
fabriko.fr: did not receive HSTS header
fabulouslyyouthfulskin.com: could not connect to host
fabulouslyyouthfulskineyeserum.com: could not connect to host
+facebattle.com: could not connect to host
facebook.ax: could not connect to host
facebooktsukaikata.net: did not receive HSTS header
facesnf.com: could not connect to host
@@ -4506,27 +4934,25 @@ fafatiger.com: could not connect to host
fag.wtf: could not connect to host
fahmed.de: did not receive HSTS header
faidanoi.it: did not receive HSTS header
-fail4free.de: did not receive HSTS header
failproof.be: max-age too low: 604800
faircom.co.za: did not receive HSTS header
fairkey.dk: did not receive HSTS header
fairlyoddtreasures.com: did not receive HSTS header
faisalshuvo.com: did not receive HSTS header
-faithindemocracy.eu: did not receive HSTS header
faizan.net: did not receive HSTS header
faizan.xyz: did not receive HSTS header
-fakeletters.org: did not receive HSTS header
+fakeletters.org: could not connect to host
faktura.pl: did not receive HSTS header
falcibiosystems.org: did not receive HSTS header
falconwiz.com: did not receive HSTS header
-falkhusemann.de: could not connect to host
falkp.no: did not receive HSTS header
falkus.net: could not connect to host
+falldennismarketing.com: max-age too low: 2592000
fallenangeldrinks.eu: could not connect to host
fallenangelspirits.uk: could not connect to host
fallingapart.de: could not connect to host
faluninfo.ba: did not receive HSTS header
-fam-weyer.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+fam-weyer.de: could not connect to host
fame-agency.net: could not connect to host
famep.gov: could not connect to host
famer.me: could not connect to host
@@ -4537,26 +4963,31 @@ familie-zimmermann.at: could not connect to host
famio.cn: did not receive HSTS header
fan.gov: could not connect to host
fanflow.com: did not receive HSTS header
+fansmade.art: could not connect to host
fant.dk: did not receive HSTS header
fantasticgardenersmelbourne.com.au: did not receive HSTS header
fantasticpestcontrolmelbourne.com.au: did not receive HSTS header
fantasyfootballpundit.com: did not receive HSTS header
fanyl.cn: could not connect to host
faq.lookout.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+faradome.ws: could not connect to host
faraonplay5.com: could not connect to host
faraonplay7.com: could not connect to host
faraonplay8.com: could not connect to host
faraslot8.net: could not connect to host
farces.com: could not connect to host
faretravel.co.uk: could not connect to host
+farhood.org: could not connect to host
farkas.bz: did not receive HSTS header
farm24.co.uk: could not connect to host
farmacia.pt: did not receive HSTS header
farmaciaformula.com.br: could not connect to host
farmaciamedicom.com.br: could not connect to host
-fascia.fit: max-age too low: 2592000
fashion.net: did not receive HSTS header
fashioncare.cz: did not receive HSTS header
+fashiondays.bg: max-age too low: 0
+fashiondays.hu: max-age too low: 0
+fashiondays.ro: max-age too low: 0
fashionholic.my: did not receive HSTS header
fashionoutfits24.com: did not receive HSTS header
fasset.jp: could not connect to host
@@ -4578,32 +5009,39 @@ fatzebra.com.au: max-age too low: 0
favorit.club: did not receive HSTS header
fawkex.me: could not connect to host
faxreader.net: could not connect to host
+fayntic.com: did not receive HSTS header
fayolle.info: did not receive HSTS header
-fbook.top: did not receive HSTS header
+fbi.pw: did not receive HSTS header
+fbook.top: could not connect to host
fbox.li: could not connect to host
fcapartsdb.com: could not connect to host
+fcp.cn: could not connect to host
fdj.im: could not connect to host
+fdos.me: could not connect to host
fdt.name: did not receive HSTS header
feard.space: could not connect to host
-fed51.com: did not receive HSTS header
+fed51.com: could not connect to host
fedbizopps.gov: could not connect to host
fedemo.top: did not receive HSTS header
federalregister.gov: did not receive HSTS header
-federalreserveconsumerhelp.gov: could not connect to host
fedn.it: could not connect to host
fedo.moe: could not connect to host
-fedpartnership.gov: could not connect to host
feedstringer.com: could not connect to host
feedthebot.com: did not receive HSTS header
+fefelovalex.ru: could not connect to host
fefore.com: did not receive HSTS header
fegans.org.uk: did not receive HSTS header
feirlane.org: could not connect to host
+feisbed.com: could not connect to host
+feist.io: could not connect to host
feitobrasilcosmeticos.com.br: did not receive HSTS header
-felett.es: could not connect to host
felger-times.fr: could not connect to host
feliwyn.fr: did not receive HSTS header
+felixhefner.de: did not receive HSTS header
+felixqu.com: did not receive HSTS header
felixrr.pro: could not connect to host
femaledom.xyz: could not connect to host
+femdombbw.com: could not connect to host
feminists.co: could not connect to host
fengyadi.com: could not connect to host
fenixhost.com.br: could not connect to host
@@ -4625,10 +5063,13 @@ festival.house: did not receive HSTS header
festrip.com: could not connect to host
fetch.co.uk: did not receive HSTS header
fetclips.se: could not connect to host
+fetlife.com: could not connect to host
fettbrot.tk: did not receive HSTS header
feudaltactics.com: could not connect to host
feuerwehr-dachaufsetzer.de: could not connect to host
fexmen.com: could not connect to host
+ff-bg.xyz: could not connect to host
+ffb.gov: could not connect to host
ffh.me: could not connect to host
ffl123.com: did not receive HSTS header
fgequipamentos.com.br: did not receive HSTS header
@@ -4650,26 +5091,31 @@ fiftyshadesofluca.ml: could not connect to host
fig.co: did not receive HSTS header
fig.ms: could not connect to host
fightr.co: could not connect to host
+figura.cz: did not receive HSTS header
figura.im: did not receive HSTS header
figuurzagers.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
fiksel.info: could not connect to host
fikt.space: could not connect to host
-file-cloud.eu: could not connect to host
+filebox.moe: could not connect to host
filebox.space: did not receive HSTS header
filedir.com: did not receive HSTS header
fileio.io: could not connect to host
fileon.com: could not connect to host
filesense.com: could not connect to host
+filewall.de: could not connect to host
filey.co.uk: did not receive HSTS header
filhomes.ph: could not connect to host
fillitupchallenge.eu: did not receive HSTS header
fillmysuitca.se: did not receive HSTS header
+film.photography: did not receive HSTS header
+film.photos: did not receive HSTS header
+filmatiporno.xxx: could not connect to host
filme-online.eu.com: did not receive HSTS header
filmesubtitrate2017.online: could not connect to host
filo.xyz: did not receive HSTS header
filoitoupediou.gr: did not receive HSTS header
finalgear.com: could not connect to host
-finalvpn.com: could not connect to host
+finalvpn.com: did not receive HSTS header
financier.io: did not receive HSTS header
financieringsportaal.nl: did not receive HSTS header
finanzkontor.net: could not connect to host
@@ -4680,35 +5126,38 @@ findthere.net: could not connect to host
findtutorsnearme.com: did not receive HSTS header
findyour.diet: could not connect to host
finer04.pw: did not receive HSTS header
+finewineonline.com: could not connect to host
fingent.com: did not receive HSTS header
fingerscrossed.style: could not connect to host
finiteheap.com: did not receive HSTS header
finn.io: did not receive HSTS header
-finpt.com: did not receive HSTS header
finstererlebnis.de: could not connect to host
finsterlebnis.de: did not receive HSTS header
fiodental.com.br: did not receive HSTS header
-fiork.com: could not connect to host
+fiork.com: did not receive HSTS header
fire-wolf.com: could not connect to host
fireandelectrical.co.uk: did not receive HSTS header
firebaseio-demo.com: could not connect to host
firebaseio.com: could not connect to host (error ignored - included regardless)
-firebird.io: could not connect to host
+firebird.io: did not receive HSTS header
firefall.rocks: could not connect to host
firehost.com: could not connect to host
fireinthedeep.com: could not connect to host
firemail.io: could not connect to host
firenza.org: did not receive HSTS header
fireorbit.de: did not receive HSTS header
+firepeak.ru: could not connect to host
fireworkcoaching.com: did not receive HSTS header
firexarxa.de: could not connect to host
-firmenverzeichnis.nu: could not connect to host
+firmenverzeichnis.nu: did not receive HSTS header
first-time-offender.com: could not connect to host
firstchoicepool.com: did not receive HSTS header
firstdogonthemoon.com.au: did not receive HSTS header
firstforex.co.uk: did not receive HSTS header
firstlook.org: did not receive HSTS header
+fischers.it: could not connect to host
fiscoeconti.it: did not receive HSTS header
+fishfinders.info: did not receive HSTS header
fiskestang.com: did not receive HSTS header
fit4medien.de: did not receive HSTS header
fitbylo.com: could not connect to host
@@ -4718,6 +5167,7 @@ fitnesswerk.de: could not connect to host
fitqbe.com: did not receive HSTS header
fitshop.com.br: could not connect to host
fitsw.com: did not receive HSTS header
+fiuxy.org: could not connect to host
five.vn: did not receive HSTS header
fivestarsitters.com: did not receive HSTS header
fivestepfunnels.com: could not connect to host
@@ -4734,8 +5184,7 @@ fixmyglitch.com: could not connect to host
fixtectools.co.za: could not connect to host
fixthetimeline.com: could not connect to host
fixthetimeline.org: could not connect to host
-fixvoltage.ru: did not receive HSTS header
-fjruiz.es: did not receive HSTS header
+fjruiz.es: could not connect to host
fkcovering.be: could not connect to host
fl0000.com: max-age too low: 129600
fl010.com: max-age too low: 129600
@@ -4747,7 +5196,7 @@ fl0666.com: did not receive HSTS header
fl0777.com: did not receive HSTS header
fl0888.com: did not receive HSTS header
fl0999.com: did not receive HSTS header
-flagfic.com: did not receive HSTS header
+flagfic.com: could not connect to host
flags.ninja: could not connect to host
flair.co: max-age too low: 7889238
flairbros.at: could not connect to host
@@ -4756,6 +5205,7 @@ flam.io: could not connect to host
flamewall.net: could not connect to host
flamingcow.tv: could not connect to host
flamingkeys.com.au: could not connect to host
+flangaapis.com: did not receive HSTS header
flareon.net: could not connect to host
flaretechnologies.io: could not connect to host
flashbaggie.com: could not connect to host
@@ -4764,18 +5214,20 @@ flawcheck.com: could not connect to host
flc111.com: did not receive HSTS header
flc999.com: max-age too low: 129600
flemingtonaudiparts.com: could not connect to host
+fleurette.me: could not connect to host
fleursdesoleil.fr: did not receive HSTS header
flexdrukker.nl: could not connect to host
flexinvesting.fi: could not connect to host
fliexer.com: could not connect to host
flightschoolusa.com: did not receive HSTS header
+fling.dating: could not connect to host
flipagram.com: did not receive HSTS header
-flipbell.com: did not receive HSTS header
+flipbell.com: could not connect to host
flipkey.com: did not receive HSTS header
-flirchi.com: could not connect to host
+flirchi.com: did not receive HSTS header
flixtor.net: could not connect to host
+flkrpxl.com: could not connect to host
floless.co.uk: did not receive HSTS header
-flomeyer.de: could not connect to host
floorball-haunwoehr.de: did not receive HSTS header
flopy.club: could not connect to host
florafiora.com.br: did not receive HSTS header
@@ -4787,6 +5239,7 @@ floridaescapes.co.uk: did not receive HSTS header
florinapp.com: could not connect to host
florispoort.nl: did not receive HSTS header
floro.me: did not receive HSTS header
+flosserver.de: could not connect to host
floth.at: could not connect to host
flouartistique.ch: could not connect to host
flow.pe: could not connect to host
@@ -4800,8 +5253,9 @@ flugstadplasticsurgery.com: did not receive HSTS header
fluidojobs.com: could not connect to host
fluitbeurt.nl: could not connect to host
flukethoughts.com: did not receive HSTS header
-flurrybridge.com: did not receive HSTS header
+flurrybridge.com: could not connect to host
flushstudios.com: did not receive HSTS header
+fluxi.fi: could not connect to host
flyaces.com: could not connect to host
flybunnyfly.dk: did not receive HSTS header
flygpost.com: did not receive HSTS header
@@ -4809,12 +5263,12 @@ flyingdoggy.net: could not connect to host
flyp.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
flyspace.ga: did not receive HSTS header
flyss.net: could not connect to host
-flyssh.net: could not connect to host
fm83.nl: could not connect to host
fm992.com: could not connect to host
fmovies.life: could not connect to host
+fnfpt.co.uk: could not connect to host
fniephaus.com: did not receive HSTS header
-fnncat.com: did not receive HSTS header
+fnncat.com: could not connect to host
fnvsecurity.com: could not connect to host
fobc-usa.org: did not receive HSTS header
focalforest.com: could not connect to host
@@ -4824,19 +5278,21 @@ fohome.ca: could not connect to host
fokan.ch: did not receive HSTS header
foliekonsulenten.dk: did not receive HSTS header
folioapp.io: did not receive HSTS header
+fondanastasia.ru: did not receive HSTS header
fondy.ru: did not receive HSTS header
foneo.com: could not connect to host
fonetiq.io: could not connect to host
-fonseguin.ca: did not receive HSTS header
fontawesome.com: did not receive HSTS header
foo: could not connect to host
food4health.guide: could not connect to host
+foodacademy.capetown: could not connect to host
foodbuddy.ch: could not connect to host
foodiebox.no: did not receive HSTS header
foodies.my: did not receive HSTS header
foodievenues.com: could not connect to host
foodplantengineering.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
foodsafetyworkinggroup.gov: could not connect to host
+foodserve.in: did not receive HSTS header
footballmapped.com: could not connect to host
footlegende.fr: did not receive HSTS header
forafifty.co.za: could not connect to host
@@ -4845,33 +5301,32 @@ forbid.life: could not connect to host
forbiddenhistory.info: could not connect to host
forbook.net: did not receive HSTS header
forcamp.ga: could not connect to host
-force-des-maths.com: could not connect to host
+force-des-maths.com: did not receive HSTS header
fordbydesign.com: could not connect to host
fordshop.by: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
foreignexchangeresource.com: did not receive HSTS header
forestfinance.fr: did not receive HSTS header
foreveralone.io: could not connect to host
foreveryoung.pt: did not receive HSTS header
-forewordreviews.com: did not receive HSTS header
forex-dan.com: did not receive HSTS header
+forexsignals7.com: could not connect to host
forgix.com: could not connect to host
forlagetmarx.dk: did not receive HSTS header
-formadmin.com: could not connect to host
-formaliteo.com: could not connect to host
+formadmin.com: did not receive HSTS header
+formaliteo.com: did not receive HSTS header
formazioneopen.it: could not connect to host
formersessalaries.com: did not receive HSTS header
formula.cf: could not connect to host
forplanetsake.com: could not connect to host
forplayers.pl: could not connect to host
-forschbach-janssen.de: could not connect to host
forsyththeatre.com: could not connect to host
fortricks.in: did not receive HSTS header
fortuna-loessnitz.de: could not connect to host
fortuna-s.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
fortworth.ch: did not receive HSTS header
-forty-two.nl: did not receive HSTS header
forty2.eu: did not receive HSTS header
forum.linode.com: did not receive HSTS header
+forumjuridico.org: did not receive HSTS header
forus.be: could not connect to host
foryoucosmeticos.com.br: could not connect to host
fossewayflowers.co.uk: could not connect to host
@@ -4883,29 +5338,35 @@ fotoallerlei.com: did not receive HSTS header
fotocerita.net: could not connect to host
fotogiraffe.ru: did not receive HSTS header
fotografosexpertos.com: did not receive HSTS header
+fotonjan.com: could not connect to host
fotopasja.info: could not connect to host
+fotostravestisbr.com: could not connect to host
fourchin.net: could not connect to host
fourwheelpartloanssimple.com: did not receive HSTS header
-foxdev.io: could not connect to host
+foxdev.io: did not receive HSTS header
foxelbox.com: did not receive HSTS header
-foxes.no: could not connect to host
foxley-farm.co.uk: did not receive HSTS header
foxley-seeds.co.uk: did not receive HSTS header
foxleyseeds.co.uk: could not connect to host
foxmay.co.uk: could not connect to host
foxtrot.pw: could not connect to host
foxyslut.com: could not connect to host
+foyale.io: could not connect to host
+fpki.sh: could not connect to host
+fptravelling.com: could not connect to host
fr0zenbits.io: could not connect to host
fr33d0m.link: could not connect to host
fragilesolar.cf: could not connect to host
fragnic.com: did not receive HSTS header
fralef.me: did not receive HSTS header
+francesca-and-lucas.com: did not receive HSTS header
francevpn.xyz: could not connect to host
francois-vidit.com: did not receive HSTS header
frangor.info: did not receive HSTS header
-frank.fyi: could not connect to host
+frankedier.com: did not receive HSTS header
+frankl.in: did not receive HSTS header
franklinhua.com: could not connect to host
-frankwei.xyz: could not connect to host
+franksiler.com: could not connect to host
franta.biz: did not receive HSTS header
franta.email: did not receive HSTS header
franzt.de: could not connect to host
@@ -4923,7 +5384,6 @@ freakyawesome.ca: could not connect to host
freakyawesome.club: could not connect to host
freakyawesome.co: could not connect to host
freakyawesome.co.uk: could not connect to host
-freakyawesome.com: could not connect to host
freakyawesome.company: could not connect to host
freakyawesome.email: could not connect to host
freakyawesome.events: could not connect to host
@@ -4982,18 +5442,22 @@ freakyawesometeam.com: could not connect to host
freakyawesometheme.com: could not connect to host
freakyawesomethemes.com: could not connect to host
freakyawesomewp.com: could not connect to host
-freddieonfire.tk: could not connect to host
freddythechick.uk: did not receive HSTS header
fredliang.cn: could not connect to host
+fredtec.ru: could not connect to host
free8.xyz: could not connect to host
freeasinlliure.org: did not receive HSTS header
-freeassangenow.org: could not connect to host
freeben666.fr: could not connect to host
+freeblog.me: could not connect to host
freebookmakerbets.com.au: did not receive HSTS header
freebus.org: could not connect to host
+freecam2cam.site: could not connect to host
+freecookies.nl: did not receive HSTS header
freedomrealtyoftexas.com: did not receive HSTS header
freedomvote.nl: could not connect to host
+freeexampapers.com: could not connect to host
freeflow.tv: could not connect to host
+freehao123.cn: could not connect to host
freejidi.com: could not connect to host
freekdevries.nl: did not receive HSTS header
freelanced.co.za: could not connect to host
@@ -5006,9 +5470,10 @@ freesoftwaredriver.com: could not connect to host
freesounding.com: did not receive HSTS header
freesounding.ru: did not receive HSTS header
freesourcestl.org: did not receive HSTS header
+freesquare.net: did not receive HSTS header
freethought.org.au: could not connect to host
freeutopia.org: did not receive HSTS header
-freezion.com: could not connect to host
+frenzel.dk: could not connect to host
freqlabs.com: did not receive HSTS header
freshfind.xyz: could not connect to host
freshlymind.com: did not receive HSTS header
@@ -5021,36 +5486,44 @@ fridolinka.cz: did not receive HSTS header
friedhelm-wolf.de: could not connect to host
friendica.ch: could not connect to host
friendlyfiregameshow.com: could not connect to host
+frieslandrail.nl: did not receive HSTS header
frimons.com: max-age too low: 7889238
fringeintravel.com: did not receive HSTS header
frodriguez.xyz: could not connect to host
+froehlich.it: did not receive HSTS header
froggstack.de: could not connect to host
frolov.net: could not connect to host
+from-the-net.com: could not connect to host
fromix.de: could not connect to host
fromlemaytoz.com: could not connect to host
front-end.dog: could not connect to host
frontisme.nl: did not receive HSTS header
frontline.cloud: did not receive HSTS header
frontline6.com: did not receive HSTS header
+frontlinemessenger.com: did not receive HSTS header
frontmin.com: did not receive HSTS header
frost-ci.xyz: could not connect to host
-frostbytes.net: did not receive HSTS header
+frostbytes.net: could not connect to host
+frosthall.com: max-age too low: 2592000
frosty-gaming.xyz: could not connect to host
frp-roleplay.de: could not connect to host
+frprn.com: could not connect to host
+frprn.xxx: could not connect to host
frsis2017.com: could not connect to host
fruitusers.com: could not connect to host
frumious.fyi: could not connect to host
frusky.net: could not connect to host
fs-gamenet.de: could not connect to host
-fsapubs.gov: could not connect to host
fsf.moe: did not receive HSTS header
fsfi.is: could not connect to host
fsinf.at: did not receive HSTS header
+fsk.fo: did not receive HSTS header
fspphoto.com: could not connect to host
fsradio.eu: did not receive HSTS header
fsrs.gov: could not connect to host
fstatic.io: could not connect to host
fstfy.de: could not connect to host
+fsvoboda.cz: could not connect to host
ftc.gov: did not receive HSTS header
ftctele.com: could not connect to host
fteproxy.org: did not receive HSTS header
@@ -5065,13 +5538,16 @@ fudanshi.org: could not connect to host
fuelministry.com: did not receive HSTS header
fugle.de: could not connect to host
fuitedeau.ch: could not connect to host
+fujianshipbuilding.com: could not connect to host
fukuko.biz: could not connect to host
fukuko.xyz: could not connect to host
fukuoka-cityliner.jp: did not receive HSTS header
fukushima-web.com: did not receive HSTS header
fuli.am: max-age too low: 129600
fulilingyu.info: could not connect to host
-fuliydys.com: did not receive HSTS header
+fuliydys.com: could not connect to host
+fullpackage.co.uk: did not receive HSTS header
+fulltxt.ml: could not connect to host
fullytrained.co.uk: could not connect to host
fumiware.com: could not connect to host
fun9.cc: could not connect to host
@@ -5079,17 +5555,19 @@ fun99.cc: could not connect to host
funarena.com.ua: did not receive HSTS header
fundacionfranciscofiasco.org: could not connect to host
fundacionhijosdelsol.org: could not connect to host
+fundayltd.com: could not connect to host
funderburg.me: did not receive HSTS header
fungame.eu: did not receive HSTS header
+funi4u.com: could not connect to host
funideas.org: could not connect to host
funkes-ferien.de: did not receive HSTS header
-funkner.ru: could not connect to host
funkyweddingideas.com.au: could not connect to host
funny-joke-pictures.com: did not receive HSTS header
funnyang.com: could not connect to host
funrun.com: did not receive HSTS header
funtastic-event-hire.co.uk: did not receive HSTS header
funtastic.ie: could not connect to host
+funtimebourne.co.uk: could not connect to host
fuorifuocogenova.it: did not receive HSTS header
furi.ga: could not connect to host
furiffic.com: did not receive HSTS header
@@ -5100,9 +5578,12 @@ furtivelook.com: did not receive HSTS header
fusa-miyamoto.jp: could not connect to host
fusedrops.com: did not receive HSTS header
fusionmate.com: could not connect to host
+fuskator.com: could not connect to host
+fussell.io: could not connect to host
futbol11.com: did not receive HSTS header
futbolvivo.tv: did not receive HSTS header
futos.de: could not connect to host
+futurefire.de: could not connect to host
futuresonline.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
futurestarsusa.org: did not receive HSTS header
futuretechnologi.es: could not connect to host
@@ -5111,15 +5592,15 @@ futuristarchitecture.com: did not receive HSTS header
fuvpn.com: could not connect to host
fuxwerk.de: could not connect to host
fuzoku-sodan.com: could not connect to host
+fuzoku.jp: could not connect to host
fwei.tk: did not receive HSTS header
fws.gov: did not receive HSTS header
+fwww7.com: did not receive HSTS header
fxgame.online: could not connect to host
fxpig-ib.com: could not connect to host
fxwebstudio.com.au: max-age too low: 0
-fyfywka.com: max-age too low: 86400
fyodorpi.com: did not receive HSTS header
fyol.pw: could not connect to host
-fyol.xyz: did not receive HSTS header
fysiohaenraets.nl: did not receive HSTS header
fzn.io: did not receive HSTS header
fzslm.me: did not receive HSTS header
@@ -5146,7 +5627,10 @@ gaelleetarnaud.com: did not receive HSTS header
gafachi.com: could not connect to host
gaichanh.com: did not receive HSTS header
gainesvillegoneaustin.org: did not receive HSTS header
+gaiserik.com: did not receive HSTS header
gaite.me: did not receive HSTS header
+gajas18.com: could not connect to host
+gakkainavi-epsilon.jp: could not connect to host
gakkainavi4.com: could not connect to host
galardi.org: could not connect to host
galena.io: could not connect to host
@@ -5155,19 +5639,18 @@ galeriadobimba.com.br: could not connect to host
galgoafegao.com.br: could not connect to host
galgoingles.com.br: could not connect to host
gali.review: did not receive HSTS header
-gallerify.eu: did not receive HSTS header
+galileomtz.com: did not receive HSTS header
gallery44.org: did not receive HSTS header
-galletasgabi.com.mx: max-age too low: 86400
galoisvpn.xyz: could not connect to host
gam3rs.de: could not connect to host
gambitcloud.net: could not connect to host
+game-files.net: did not receive HSTS header
game-gentle.com: could not connect to host
game.yt: could not connect to host
gamebits.net: did not receive HSTS header
gamecave.de: could not connect to host
gamecdn.com: could not connect to host
gamechasm.com: could not connect to host
-gameclue.jp: did not receive HSTS header
gamefund.me: could not connect to host
gamehacks.me: could not connect to host
gameink.net: did not receive HSTS header
@@ -5180,11 +5663,11 @@ gamepader.com: could not connect to host
gameparade.de: could not connect to host
gameparagon.info: could not connect to host
gamepiece.com: did not receive HSTS header
-gamereader.de: could not connect to host
gamerpoets.com: did not receive HSTS header
gamers-life.fr: could not connect to host
gamerslair.org: did not receive HSTS header
gamerz-point.de: could not connect to host
+gamerz-stream.com: did not receive HSTS header
gamesdepartment.co.uk: could not connect to host
gameserver-sponsor.de: did not receive HSTS header
gamesurferapp.com: could not connect to host
@@ -5192,14 +5675,17 @@ gameswitchers.uk: could not connect to host
gametium.com: could not connect to host
gametium.es: could not connect to host
gamhealth.net: could not connect to host
-gamingmedia.eu: did not receive HSTS header
+gamingmedia.eu: could not connect to host
gamingreinvented.com: did not receive HSTS header
gamoice.com: did not receive HSTS header
gampenhof.de: could not connect to host
gangnam-club.com: could not connect to host
gangnam-karaoke.com: could not connect to host
ganhonet.com.br: did not receive HSTS header
+ganzgraph.de: did not receive HSTS header
+gaon.network: could not connect to host
gaphag.ddns.net: could not connect to host
+garage-abri-chalet.fr: did not receive HSTS header
garage-door.pro: could not connect to host
garageon.net: did not receive HSTS header
garciamartin.me: could not connect to host
@@ -5207,7 +5693,6 @@ garcinia--cambogia.com: could not connect to host
garciniacambogiareviewed.co: did not receive HSTS header
garden.trade: could not connect to host
gardencarezone.com: did not receive HSTS header
-garethkirk.com: did not receive HSTS header
garfieldairlines.net: did not receive HSTS header
garten-bau.ch: did not receive HSTS header
garten-diy.de: could not connect to host
@@ -5215,42 +5700,49 @@ gasbarkenora.com: could not connect to host
gasnews.net: could not connect to host
gasser-daniel.ch: did not receive HSTS header
gastauftritt.net: did not receive HSTS header
+gastritisolucion.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
gatapro.net: could not connect to host
+gatemotorsumhlanga.co.za: could not connect to host
gatemoves.com: could not connect to host
gateworld.fr: did not receive HSTS header
+gatilagata.com.br: could not connect to host
gatomix.net: could not connect to host
gatorsa.es: could not connect to host
gaussorgues.me: could not connect to host
gautham.pro: could not connect to host
gavick.com: did not receive HSTS header
+gay-sissies.com: could not connect to host
gaycc.cc: could not connect to host
gaygeeks.de: could not connect to host
+gaysfisting.com: could not connect to host
+gaytorrent.ru: could not connect to host
+gayxsite.com: could not connect to host
gazflynn.com: did not receive HSTS header
-gc-mc.de: did not receive HSTS header
+gbit.xyz: could not connect to host
gc.net: could not connect to host
gchoic.com: max-age too low: 7889238
gchp.ie: did not receive HSTS header
gdegem.org: did not receive HSTS header
gdevpenze.ru: could not connect to host
-gdhzcgs.com: could not connect to host
gdprhallofshame.com: could not connect to host
+gdutnic.com: could not connect to host
gdz-otvety.com: could not connect to host
gdz.tv: could not connect to host
gear-acquisition-syndrome.community: could not connect to host
+geaskb.nl: could not connect to host
geblitzt.de: did not receive HSTS header
gedankenbude.info: could not connect to host
-gee.is: could not connect to host
geekbaba.com: could not connect to host
geekcast.co.uk: did not receive HSTS header
+geekchimp.com: could not connect to host
geekdt.com: could not connect to host
geekmind.org: max-age too low: 172800
-geeks.berlin: did not receive HSTS header
+geeks.berlin: could not connect to host
geeks.lgbt: could not connect to host
-geeks.one: did not receive HSTS header
+geekseries.fr: did not receive HSTS header
geektimes.com: did not receive HSTS header
+geeky.software: could not connect to host
geemo.top: could not connect to host
-geertdegraaf.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-gehaowu.com: did not receive HSTS header
gehrke.nrw: could not connect to host
geigr.de: could not connect to host
geiser.io: did not receive HSTS header
@@ -5262,16 +5754,18 @@ gemuplay.com: could not connect to host
genemesservwparts.com: could not connect to host
generalpants.com.au: did not receive HSTS header
generationnext.pl: could not connect to host
-genesischangelog.com: did not receive HSTS header
+genesischangelog.com: could not connect to host
geneve.guide: could not connect to host
genia-life.de: could not connect to host
+genie-seiner-generation.de: could not connect to host
genneve.com: did not receive HSTS header
genoog.com: could not connect to host
genossen.ru: could not connect to host
genshiken.org: could not connect to host
+gentooblog.de: could not connect to host
genuu.com: could not connect to host
genuxation.com: could not connect to host
-genxbeats.com: could not connect to host
+genxbeats.com: did not receive HSTS header
genyaa.com: could not connect to host
genyhitch.com: did not receive HSTS header
geoffanderinmyers.com: did not receive HSTS header
@@ -5288,10 +5782,12 @@ gereon.ch: could not connect to host
geri.be: could not connect to host
germanticz.de: could not connect to host
gers-authentique.com: could not connect to host
+gerum.dynv6.net: did not receive HSTS header
geschenkly.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
geschmackspiloten.de: did not receive HSTS header
gesiwista.net: did not receive HSTS header
gesunde-smoothies.de: did not receive HSTS header
+gesundes-im-napf.de: did not receive HSTS header
get-asterisk.ru: could not connect to host
get-cctv.com: could not connect to host
get-it-live.de: could not connect to host
@@ -5335,6 +5831,7 @@ getremembrall.com: could not connect to host
getronics.care: could not connect to host
getsello.com: could not connect to host
getserum.xyz: could not connect to host
+getsetupfile.com: did not receive HSTS header
getshifter.io: did not receive HSTS header
getspeaker.com: did not receive HSTS header
getspire.com: could not connect to host
@@ -5343,35 +5840,39 @@ getwashdaddy.com: could not connect to host
getyourphix.tk: could not connect to host
gevaulug.fr: could not connect to host
gfbouncycastles.co.uk: did not receive HSTS header
+gfe.li: did not receive HSTS header
gfhgiro.nl: did not receive HSTS header
gfm.tech: could not connect to host
gfoss.gr: could not connect to host
-gfw.moe: did not receive HSTS header
+gfournier.ca: could not connect to host
+gfw.moe: could not connect to host
gfwsb.ml: could not connect to host
gglks.com: could not connect to host
+ggobbo.com: could not connect to host
ggrks-asano.com: could not connect to host
ggss.cf: could not connect to host
ggss.ml: could not connect to host
gh16.com.ar: could not connect to host
-ghaglund.se: could not connect to host
ghcif.de: could not connect to host
gheorghe-sarcov.ga: could not connect to host
gheorghesarcov.ga: could not connect to host
gheorghesarcov.tk: could not connect to host
ghi.gov: could not connect to host
ghibli.studio: did not receive HSTS header
-ghid-pitesti.ro: did not receive HSTS header
ghkim.net: could not connect to host
+ghuntley.com: max-age too low: 0
giakki.eu: could not connect to host
gianlucapartengo.photography: did not receive HSTS header
giant-powerfit.co.uk: did not receive HSTS header
gibraltar-firma.com: did not receive HSTS header
gidea.nu: could not connect to host
-giegler.software: did not receive HSTS header
giftgofers.com: max-age too low: 2592000
+giftservices.nl: did not receive HSTS header
gifzilla.net: could not connect to host
-gigacloud.org: did not receive HSTS header
+gigacloud.org: could not connect to host
+gigawattz.com: could not connect to host
gigiscloud.servebeer.com: could not connect to host
+gigolodavid.be: could not connect to host
gilcloud.com: could not connect to host
gilgaz.com: did not receive HSTS header
gillet-cros.fr: could not connect to host
@@ -5379,6 +5880,7 @@ gilly.berlin: did not receive HSTS header
gilroywestwood.org: did not receive HSTS header
gincher.net: did not receive HSTS header
gingali.de: did not receive HSTS header
+ginie.de: did not receive HSTS header
ginijony.com: did not receive HSTS header
ginkel.com: did not receive HSTS header
gintenreiter-photography.com: did not receive HSTS header
@@ -5394,7 +5896,9 @@ gisac.org: did not receive HSTS header
gistfy.com: could not connect to host
git-stuff.tk: could not connect to host
git.co: could not connect to host
-github.party: did not receive HSTS header
+gitar.io: could not connect to host
+github.party: could not connect to host
+gittr.ch: did not receive HSTS header
givemyanswer.com: could not connect to host
giverang.biz: could not connect to host
giverang.com: could not connect to host
@@ -5404,13 +5908,13 @@ gixtools.uk: could not connect to host
gizzo.sk: could not connect to host
glabiatoren-kst.de: could not connect to host
gladystudio.com: did not receive HSTS header
+glahcks.com: could not connect to host
glass.google.com: did not receive HSTS header (error ignored - included regardless)
glasslikes.com: did not receive HSTS header
glbg.eu: did not receive HSTS header
gle: could not connect to host
glenavy.tk: could not connect to host
glentakahashi.com: could not connect to host
-glicerina.online: could not connect to host
glittersjabloon.nl: did not receive HSTS header
glitzmirror.com: could not connect to host
glnpo.gov: could not connect to host
@@ -5429,41 +5933,40 @@ globalsites.nl: did not receive HSTS header
globaltennis.ca: could not connect to host
globalvisions-events.ch: could not connect to host
globalvisions-events.com: could not connect to host
-globuli-info.de: did not receive HSTS header
+globuli-info.de: could not connect to host
gloomyspark.com: could not connect to host
-glossopnorthendafc.co.uk: could not connect to host
glotter.com: did not receive HSTS header
gloucesterphotographer.com: did not receive HSTS header
glubbforum.de: did not receive HSTS header
glutenfreiheit.at: did not receive HSTS header
glws.org: did not receive HSTS header
glyph.ws: could not connect to host
-gm-assicurazioni.it: did not receive HSTS header
+gm-assicurazioni.it: could not connect to host
gmail.com: did not receive HSTS header (error ignored - included regardless)
gmanukyan.com: could not connect to host
gmat.ovh: could not connect to host
gmoes.at: could not connect to host
-gn00.com: could not connect to host
+gmw-hannover.de: could not connect to host
gnaptracker.tk: could not connect to host
gnom.me: could not connect to host
gnosticjade.net: did not receive HSTS header
go.ax: did not receive HSTS header
go2sh.de: did not receive HSTS header
-go4it.solutions: did not receive HSTS header
+go4it.solutions: could not connect to host
goabonga.com: could not connect to host
goalsetup.com: did not receive HSTS header
goaltree.ch: did not receive HSTS header
-goapunks.net: could not connect to host
+goapunks.net: did not receive HSTS header
goarmy.eu: could not connect to host
goat.chat: did not receive HSTS header
goat.xyz: could not connect to host
goben.ch: could not connect to host
goblins.net: did not receive HSTS header
goblinsatwork.com: could not connect to host
+gocardless.com: did not receive HSTS header
godrealms.com: could not connect to host
goedeke.ml: could not connect to host
goerner.me: did not receive HSTS header
-goerres2014.de: could not connect to host
goge.site: could not connect to host
gogenenglish.com: could not connect to host
gogetssl.com: did not receive HSTS header
@@ -5472,16 +5975,18 @@ gogold-g.com: could not connect to host
goguel.org: could not connect to host
goiaspropaganda.com.br: could not connect to host
gold24.in: could not connect to host
+goldclubcasino.com: could not connect to host
goldendata.io: could not connect to host
goldfelt.com: could not connect to host
goldminer.ga: could not connect to host
goldpros.com: did not receive HSTS header
+goldsky.com.au: did not receive HSTS header
goldwater.gov: could not connect to host
goldwaterfoundation.gov: could not connect to host
goldwaterscholarship.gov: could not connect to host
golearn.gov: could not connect to host
+golfburn.com: could not connect to host
golocal-media.de: could not connect to host
-gomiblog.com: did not receive HSTS header
gong8.win: could not connect to host
gonzalosanchez.mx: did not receive HSTS header
goodeats.nyc: did not receive HSTS header
@@ -5490,6 +5995,7 @@ goodmengroup.de: did not receive HSTS header
goods-memo.net: did not receive HSTS header
goodsex4all.com.br: could not connect to host
goodtech.com.br: could not connect to host
+goodvibesblog.com: could not connect to host
goodwin43.ru: could not connect to host
goodyearsotn.co.uk: could not connect to host
google: could not connect to host (error ignored - included regardless)
@@ -5501,17 +6007,17 @@ gootax.pro: did not receive HSTS header
goozz.nl: did not receive HSTS header
gopay.cz: did not receive HSTS header
gopokego.cz: could not connect to host
+gorakukai.jp: max-age too low: 0
goranrango.ch: could not connect to host
-gorf.chat: could not connect to host
-gorf.club: could not connect to host
+gordonobrecht.com: did not receive HSTS header
gorgiaxx.com: could not connect to host
gorilla-gym.site: could not connect to host
gorillow.com: could not connect to host
gorognyelv.hu: could not connect to host
gosharewood.com: did not receive HSTS header
goshop.cz: did not receive HSTS header
-gospelofmark.ch: could not connect to host
-gostream.asia: did not receive HSTS header
+goshow.tv: could not connect to host
+gostream.asia: could not connect to host
gotgenes.com: could not connect to host
goto.google.com: did not receive HSTS header (error ignored - included regardless)
gotobrno.cz: did not receive HSTS header
@@ -5520,37 +6026,41 @@ gotspot.com: could not connect to host
gottfridsberg.org: could not connect to host
gottfriedfeyen.com: did not receive HSTS header
goubi.me: did not receive HSTS header
+goujianwen.com: did not receive HSTS header
+goukon.ru: could not connect to host
gourmettia.com: did not receive HSTS header
-gouthro-goteborg.se: could not connect to host
+gouthro-goteborg.se: did not receive HSTS header
gouv.ovh: did not receive HSTS header
gov.ax: could not connect to host
goverage.org: could not connect to host
govillemo.ca: did not receive HSTS header
gozadentro.com: could not connect to host
gozel.com.tr: did not receive HSTS header
+gpalabs.com: could not connect to host
gparent.org: did not receive HSTS header
gpga.cf: could not connect to host
-gpio.gq: could not connect to host
+gplintegratedit.com: could not connect to host
gpo.gov: did not receive HSTS header
gpstuner.com: did not receive HSTS header
graavaapi.elasticbeanstalk.com: could not connect to host
-gracebaking.com: max-age too low: 86400
+grabi.ga: could not connect to host
gracechurchpc.net: could not connect to host
-graceful-project.eu: could not connect to host
+graceful-project.eu: did not receive HSTS header
gracesofgrief.com: could not connect to host
grachtenpandverkopen.nl: could not connect to host
grademymac.com: did not receive HSTS header
grademypc.com: did not receive HSTS header
+gradenotify.com: could not connect to host
grads360.org: could not connect to host
gradsm-ci.net: could not connect to host
grafitec.ru: did not receive HSTS header
graftworld.pw: could not connect to host
-grana.com: did not receive HSTS header
grandchamproofing.com: did not receive HSTS header
grande.coffee: could not connect to host
grandlinecsk.ru: did not receive HSTS header
grandmascookieblog.com: did not receive HSTS header
-graniteind.com: did not receive HSTS header
+grandmasfridge.org: did not receive HSTS header
+grandwailea.com: did not receive HSTS header
grantedby.me: max-age too low: 0
granth.io: could not connect to host
graph.no: did not receive HSTS header
@@ -5560,13 +6070,13 @@ gratis-app.com: did not receive HSTS header
gratisonlinesex.com: could not connect to host
gravitation.pro: did not receive HSTS header
gravito.nl: did not receive HSTS header
-gravity-dev.de: could not connect to host
gravity-net.de: could not connect to host
graycell.net: could not connect to host
grazetech.com: did not receive HSTS header
grcnode.co.uk: could not connect to host
great.nagoya: could not connect to host
-greatfire.kr: did not receive HSTS header
+greatergoodoffers.com: did not receive HSTS header
+greatfire.kr: could not connect to host
greatideahub.com: did not receive HSTS header
greatnet.de: did not receive HSTS header
greatsong.net: did not receive HSTS header
@@ -5575,18 +6085,20 @@ green-light.ga: could not connect to host
green-light.gq: could not connect to host
green-light.ml: could not connect to host
greencardtalent.com: could not connect to host
+greenenergysolution.uk: did not receive HSTS header
greenesting.ch: could not connect to host
greenesting.com: could not connect to host
greengov.gov: could not connect to host
greenhillantiques.co.uk: did not receive HSTS header
greenitpark.net: could not connect to host
-greenpeace.berlin: could not connect to host
greensolid.biz: could not connect to host
greenvines.com.tw: did not receive HSTS header
greenvpn.ltd: could not connect to host
greenvpn.pro: did not receive HSTS header
greggsfoundation.org.uk: could not connect to host
gregmartyn.com: could not connect to host
+gregmilton.com: could not connect to host
+gregmilton.org: could not connect to host
gregorytlee.me: could not connect to host
grekland.guide: could not connect to host
gremots.com: could not connect to host
@@ -5598,7 +6110,6 @@ greuel.online: could not connect to host
greve.xyz: could not connect to host
grevesgarten.de: could not connect to host
greyline.se: could not connect to host
-greysky.me: max-age too low: 300
grian-bam.at: did not receive HSTS header
gribani.com: could not connect to host
grid2osm.org: could not connect to host
@@ -5617,15 +6128,18 @@ groentefruitzeep.nl: could not connect to host
groetzner.net: did not receive HSTS header
groseb.net: did not receive HSTS header
grossberger-ge.org: could not connect to host
+grossell.ru: could not connect to host
grossmann.gr: could not connect to host
grossmisconduct.news: could not connect to host
groupe-cassous.com: did not receive HSTS header
+grouphomes.com.au: did not receive HSTS header
groups.google.com: did not receive HSTS header (error ignored - included regardless)
grow-shop.ee: could not connect to host
grow-shop.lt: could not connect to host
grow-shop.lv: could not connect to host
growingmetrics.com: could not connect to host
grozip.com: did not receive HSTS header
+grozter.se: did not receive HSTS header
gruenderwoche-dresden.de: did not receive HSTS header
grunex.com: did not receive HSTS header
grupopgn.com.br: could not connect to host
@@ -5637,6 +6151,7 @@ gs-net.at: could not connect to host
gsm-map.com: could not connect to host
gsmkungen.com: could not connect to host
gsnort.com: did not receive HSTS header
+gsoc.se: could not connect to host
gtamodshop.org: could not connect to host
gtanda.tk: could not connect to host
gtech.work: did not receive HSTS header
@@ -5645,6 +6160,8 @@ gtraxapp.com: could not connect to host
gts-schulsoftware.de: did not receive HSTS header
guarajubaimoveis.com.br: did not receive HSTS header
guava.studio: did not receive HSTS header
+gudangpangan.id: could not connect to host
+gudrun.ml: could not connect to host
guelphhydropool.com: could not connect to host
guendra.dedyn.io: could not connect to host
guentherhouse.com: did not receive HSTS header
@@ -5654,9 +6171,9 @@ gugaltika-ipb.org: could not connect to host
guge.gq: could not connect to host
gugga.dk: could not connect to host
guguke.net: did not receive HSTS header
+guhei.net: could not connect to host
guidechecking.com: could not connect to host
-guideline.gov: could not connect to host
-guidelines.gov: could not connect to host
+guides-et-admin.com: did not receive HSTS header
guilde-vindicta.fr: could not connect to host
guildgearscore.cf: could not connect to host
guillaume-leduc.fr: did not receive HSTS header
@@ -5680,6 +6197,7 @@ guntbert.net: could not connect to host
guoqiang.info: did not receive HSTS header
gurochan.ch: could not connect to host
gurom.lv: could not connect to host
+gurubetng.com: did not receive HSTS header
gurusupe.com: could not connect to host
gus.moe: could not connect to host
guso.gq: could not connect to host
@@ -5687,10 +6205,13 @@ guso.ml: could not connect to host
guso.site: could not connect to host
guso.tech: could not connect to host
gussi.is: did not receive HSTS header
-guthabenkarten-billiger.de: did not receive HSTS header
+guthabenkarten-billiger.de: could not connect to host
guts.me: did not receive HSTS header
guts.moe: did not receive HSTS header
+guyot-tech.com: did not receive HSTS header
gvchannel.xyz: could not connect to host
+gvi.be: did not receive HSTS header
+gvm.io: could not connect to host
gvpt.sk: did not receive HSTS header
gvt2.com: could not connect to host (error ignored - included regardless)
gvt3.com: could not connect to host (error ignored - included regardless)
@@ -5715,21 +6236,20 @@ h2check.org: did not receive HSTS header
h3x.jp: could not connect to host
haarkliniek.com: did not receive HSTS header
habbixed.tk: could not connect to host
-habbo.life: could not connect to host
+habbo.life: did not receive HSTS header
habbotalk.nl: could not connect to host
habeo.si: could not connect to host
hablemosdetecnologia.com.ve: could not connect to host
hac30.com: could not connect to host
-hack.cz: could not connect to host
+hack.club: could not connect to host
hack.li: could not connect to host
hackbubble.me: could not connect to host
+hacker.club: could not connect to host
hacker.deals: could not connect to host
hacker8.cn: could not connect to host
-hackercat.ninja: did not receive HSTS header
-hackerchai.com: could not connect to host
+hackercat.ninja: max-age too low: 2592000
hackerforever.com: could not connect to host
hackerone-ext-adroll.com: could not connect to host
-hackerpoints.com: could not connect to host
hackerspace-ntnu.no: did not receive HSTS header
hackest.org: did not receive HSTS header
hackingsafe.com: could not connect to host
@@ -5737,7 +6257,7 @@ hackit.im: could not connect to host
hackmeplz.com: could not connect to host
hackroyale.xyz: could not connect to host
hacksnack.io: could not connect to host
-hackworx.com: could not connect to host
+hackyourfaceoff.com: could not connect to host
hadaf.pro: could not connect to host
hadzic.co: could not connect to host
haeckdesign.com: did not receive HSTS header
@@ -5746,7 +6266,9 @@ haehnlein.at: could not connect to host
haemmerle.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
haf.gr: could not connect to host
hafoda.com: did not receive HSTS header
+haggeluring.su: could not connect to host
hahayidu.org: could not connect to host
+hail2u.net: did not receive HSTS header
hainoni.com: did not receive HSTS header
hairlossstop.net: did not receive HSTS header
haitschi.com: could not connect to host
@@ -5754,7 +6276,6 @@ haitschi.de: did not receive HSTS header
haitschi.net: could not connect to host
haitschi.org: could not connect to host
hajnzic.at: could not connect to host
-hakase.pw: could not connect to host
haktec.de: did not receive HSTS header
haku.moe: could not connect to host
hakugin.me: could not connect to host
@@ -5763,12 +6284,12 @@ hakurei.moe: could not connect to host
halcyonsbastion.com: could not connect to host
half-logic.eu.org: could not connect to host
halfwaythere.eu: could not connect to host
-hallettxn.com: could not connect to host
halo.red: could not connect to host
halta.info: could not connect to host
halyul.cc: did not receive HSTS header
halyul.com: did not receive HSTS header
haman.nl: could not connect to host
+hamish.ca: did not receive HSTS header
hamking.tk: could not connect to host
hammamsayad.com: could not connect to host
hamon.cc: did not receive HSTS header
@@ -5777,8 +6298,10 @@ hancatemc.com: did not receive HSTS header
hancc.net: could not connect to host
handenafvanhetmedischdossier.nl: could not connect to host
handicapindeles.nl: did not receive HSTS header
-handinhandfoundation.org.uk: could not connect to host
+handinhandfoundation.org.uk: did not receive HSTS header
handiworker.com: could not connect to host
+handmadegobelin.com: did not receive HSTS header
+handmadeshoes.pe: did not receive HSTS header
handmadetutorials.ro: could not connect to host
handsandall.com: did not receive HSTS header
hanfu.la: could not connect to host
@@ -5798,6 +6321,7 @@ haobo5555.com: could not connect to host
haobo6666.com: could not connect to host
haobo7777.com: could not connect to host
haomwei.com: could not connect to host
+haoqi.men: could not connect to host
haoyugao.com: could not connect to host
happist.com: did not receive HSTS header
happix.nl: did not receive HSTS header
@@ -5807,16 +6331,19 @@ happyheartsabode.com: did not receive HSTS header
happytiger.eu: could not connect to host
hapsfordmill.co.uk: could not connect to host
hapvm.com: could not connect to host
-haqaza.com.br: could not connect to host
+haqaza.com.br: did not receive HSTS header
harambe.site: could not connect to host
harbourweb.net: did not receive HSTS header
-hardergayporn.com: could not connect to host
+hardeman.nu: could not connect to host
hardline.xyz: could not connect to host
+hardtime.ru: could not connect to host
hardyboyplant.com: did not receive HSTS header
haribosupermix.com: could not connect to host
hariome.com: did not receive HSTS header
+haritsa.co.id: did not receive HSTS header
harlentimberproducts.co.uk: did not receive HSTS header
harmonycosmetic.com: max-age too low: 300
+harrisonsdirect.co.uk: did not receive HSTS header
harristony.com: could not connect to host
harryharrison.co: did not receive HSTS header
harrypottereditor.com: could not connect to host
@@ -5829,6 +6356,7 @@ harz.cloud: could not connect to host
has.vision: could not connect to host
hasabig.wang: could not connect to host
hasalittle.wang: could not connect to host
+haschrebellen.de: could not connect to host
hash-list.com: could not connect to host
hashiconf.com: did not receive HSTS header
hashidays.com: did not receive HSTS header
@@ -5842,6 +6370,8 @@ hatoko.net: could not connect to host
haufschild.de: could not connect to host
haurumcraft.net: could not connect to host
hausarzt-stader-str.de: did not receive HSTS header
+hausarztpraxis-linn.de: could not connect to host
+hauswarteam.com: could not connect to host
hav.com: could not connect to host
haveeruexaminer.com: could not connect to host
haven-staging.cloud: could not connect to host
@@ -5850,7 +6380,7 @@ havenmoon.com: could not connect to host
havenswift-hosting.co.uk: did not receive HSTS header
hawk-la.com: could not connect to host
hawthornharpist.com: could not connect to host
-haxoff.com: could not connect to host
+haxoff.com: did not receive HSTS header
haxon.me: could not connect to host
haxx.hu: did not receive HSTS header
haydenhill.us: could not connect to host
@@ -5876,6 +6406,7 @@ hbvip07.com: could not connect to host
hbvip08.com: could not connect to host
hcfhomelottery.ca: did not receive HSTS header
hcie.pl: did not receive HSTS header
+hcoe.fi: did not receive HSTS header
hcr.io: did not receive HSTS header
hcs-company.com: did not receive HSTS header
hcs-company.nl: did not receive HSTS header
@@ -5887,31 +6418,38 @@ hdritalyphotos.com: did not receive HSTS header
hdserver.info: did not receive HSTS header
hdsmigrationtool.com: could not connect to host
hduin.xyz: could not connect to host
+hdwallpapers.net: could not connect to host
hdy.nz: could not connect to host
head-shop.lt: could not connect to host
head-shop.lv: could not connect to host
headmates.xyz: could not connect to host
+healthcare6.com: did not receive HSTS header
healthjoy.com: did not receive HSTS header
healthyandnaturalliving.com: could not connect to host
healthycod.in: could not connect to host
healtious.com: could not connect to host
hearingshofar.com: could not connect to host
-heart.ge: could not connect to host
+heart.ge: did not receive HSTS header
heartlandrentals.com: did not receive HSTS header
+hearty.cf: did not receive HSTS header
hearty.ink: could not connect to host
hearty.space: could not connect to host
hearty.tech: could not connect to host
hearty.tw: did not receive HSTS header
+heartyapp.com: could not connect to host
heartyme.net: could not connect to host
heathmanners.com: could not connect to host
heavenlyseals.com: could not connect to host
heavenlysmokenc.com: could not connect to host
heavystresser.com: could not connect to host
hebaus.com: could not connect to host
+hectorj.net: could not connect to host
+hedgeschool.ie: could not connect to host
+hedweb.com: could not connect to host
heidilein.info: did not receive HSTS header
heimnetze.org: could not connect to host
-heinemeier.dk: could not connect to host
heisenberg.co: could not connect to host
+hejahanif.se: could not connect to host
hejsupport.se: could not connect to host
hekeki.com: could not connect to host
hele.cz: did not receive HSTS header
@@ -5923,7 +6461,7 @@ hellenicaward.com: did not receive HSTS header
hello-nestor.com: did not receive HSTS header
helloanselm.com: did not receive HSTS header
hellofilters.com: could not connect to host
-hellomouse.cf: did not receive HSTS header
+hellomouse.cf: could not connect to host
hellomouse.tk: could not connect to host
hellotandem.com: could not connect to host
hellothought.net: could not connect to host
@@ -5931,7 +6469,11 @@ helloworldhost.com: did not receive HSTS header
hellscanyonraft.com: did not receive HSTS header
helpadmin.net: could not connect to host
helpantiaging.com: could not connect to host
+helpdebit.com: did not receive HSTS header
helpekwendenihospital.com: could not connect to host
+helpfacile.com: did not receive HSTS header
+helpfixe.com: did not receive HSTS header
+helpflux.com: did not receive HSTS header
helpfute.com: did not receive HSTS header
helpgerer.com: did not receive HSTS header
helpium.de: could not connect to host
@@ -5944,42 +6486,50 @@ hemlockhillscabinrentals.com: did not receive HSTS header
hencagon.com: could not connect to host
hendersonrealestatepros.com: did not receive HSTS header
hendric.us: did not receive HSTS header
+henhenlu.com: could not connect to host
+henkbrink.com: could not connect to host
henningkerstan.org: did not receive HSTS header
henriknoerr.com: could not connect to host
-hentai.design: could not connect to host
+hentai.design: did not receive HSTS header
hentaimaster.net: could not connect to host
+hentaiz.net: could not connect to host
hepteract.us: could not connect to host
heptner24.de: could not connect to host
her25.com: did not receive HSTS header
herbertmouwen.nl: could not connect to host
here.ml: could not connect to host
here4funpartysolutions.ie: did not receive HSTS header
-herecsrymy.cz: could not connect to host
-heribe-maruo.com: could not connect to host
-heritagedentistry.ca: could not connect to host
+heribe-maruo.com: did not receive HSTS header
+heritagedentistry.ca: did not receive HSTS header
hermes-servizi.it: could not connect to host
heroin.org.uk: could not connect to host
-herpaderp.net: could not connect to host
+herpaderp.net: did not receive HSTS header
herramientasbazarot.com: did not receive HSTS header
herrenfahrt.com: did not receive HSTS header
+hesa.com: max-age too low: 0
hetmeisjeachterpauw.nl: could not connect to host
hetmer.com: did not receive HSTS header
hetmer.net: did not receive HSTS header
heutger.net: did not receive HSTS header
hex2013.com: did not receive HSTS header
hexacon.io: could not connect to host
-hexadecimal.tech: did not receive HSTS header
+hexadecimal.tech: could not connect to host
hexe.net: did not receive HSTS header
hexhu.com: could not connect to host
+hexo.io: did not receive HSTS header
hexobind.com: could not connect to host
heyguevara.com: did not receive HSTS header
heywoodtown.co.uk: did not receive HSTS header
hfbg.nl: did not receive HSTS header
hfcbank.com.gh: could not connect to host
hfi.me: did not receive HSTS header
+hflsdev.org: could not connect to host
hfu.io: could not connect to host
+hg525.com: max-age too low: 86400
hg71839.com: could not connect to host
hg881.com: could not connect to host
+hgfa.fi: could not connect to host
+hh-wolke.dedyn.io: did not receive HSTS header
hi808.net: did not receive HSTS header
hialatv.com: could not connect to host
hibilog.com: could not connect to host
@@ -5998,6 +6548,7 @@ highlandparkcog.org: did not receive HSTS header
highseer.com: did not receive HSTS header
highsurf-miyazaki.com: could not connect to host
hightechgadgets.net: could not connect to host
+hightimes.com: could not connect to host
hightower.eu: could not connect to host
highvelocitydesign.com: could not connect to host
higp.de: did not receive HSTS header
@@ -6007,7 +6558,6 @@ hijoan.com: could not connect to host
hik-cloud.com: did not receive HSTS header
hikagestudios.com: did not receive HSTS header
hikariempire.com: could not connect to host
-hikarukujo.com: could not connect to host
hikinggearlab.com: did not receive HSTS header
hilaolu.com: could not connect to host
hilinemerchandising.com: did not receive HSTS header
@@ -6021,42 +6571,43 @@ hingle.me: could not connect to host
hinkel-sohn.de: did not receive HSTS header
hinrich.de: did not receive HSTS header
hintergedanken.com: could not connect to host
-hintermeier-rae.at: could not connect to host
+hintermeier-rae.at: did not receive HSTS header
hipercultura.com: did not receive HSTS header
hiphop.ren: could not connect to host
hiphopconvention.nl: could not connect to host
hipnos.net: did not receive HSTS header
hipnoseinstitute.org: did not receive HSTS header
-hiqhub.co.uk: could not connect to host
hiraku.me: did not receive HSTS header
+hireprofs.com: could not connect to host
hiresuccessstaffing.com: did not receive HSTS header
+hirevets.gov: did not receive HSTS header
hirokilog.com: could not connect to host
hisingenrunt.se: did not receive HSTS header
histoire-theatre.com: did not receive HSTS header
history.pe: could not connect to host
hitchunion.org: could not connect to host
hitoy.org: did not receive HSTS header
-hitrek.ml: could not connect to host
hittipps.com: could not connect to host
hjes.com.ve: could not connect to host
+hjf-immobilien.de: did not receive HSTS header
+hjkhs.cn: did not receive HSTS header
hknet.at: did not receive HSTS header
hlacosedora.com: max-age too low: 7889238
-hloe0xff.ru: could not connect to host
hlpublicidad.com: could not connect to host
hlyue.com: did not receive HSTS header
hm1ch.com: could not connect to host
hm1ch.ovh: could not connect to host
-hm773.net: did not receive HSTS header
hmksq.ae: max-age too low: 7776000
hmm.nyc: could not connect to host
hoast.xyz: could not connect to host
hobaugh.social: could not connect to host
hobby-gamerz-community.de: did not receive HSTS header
-hochhaus.us: could not connect to host
+hocassian.cn: did not receive HSTS header
hochzeitshelferlein.de: did not receive HSTS header
hodamakade.com: could not connect to host
hodne.io: could not connect to host
hoekwoningverkopen.nl: could not connect to host
+hoelty.network: could not connect to host
hoerbuecher-und-hoerspiele.de: could not connect to host
hoeveiligismijn.nl: did not receive HSTS header
hoffens.se: could not connect to host
@@ -6065,37 +6616,39 @@ hogar123.es: could not connect to host
hoiku-map.tokyo: could not connect to host
hoiku-navi.com: did not receive HSTS header
hoikuen-now.top: did not receive HSTS header
+hokepon.com: did not receive HSTS header
hokioisecurity.com: did not receive HSTS header
holgerlehner.com: could not connect to host
holidayincotswolds.co.uk: could not connect to host
holifestival-freyung.de: could not connect to host
holisticdrbright.com: max-age too low: 300
hollandguns.com: did not receive HSTS header
+hollerau.de: could not connect to host
holowaty.me: could not connect to host
+holy-hi.com: did not receive HSTS header
holymoly.lu: could not connect to host
-holytransaction.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
homa.website: could not connect to host
homads.com: did not receive HSTS header
home-cloud.online: could not connect to host
home-coaching.be: did not receive HSTS header
home-craft.de: could not connect to host
-home-v.ind.in: could not connect to host
+home-work-jobs.com: did not receive HSTS header
homeandyarddetailing.com: could not connect to host
homeclouding.de: could not connect to host
+homecoming.city: could not connect to host
homedna.com: did not receive HSTS header
homeexx.com: did not receive HSTS header
-homefacialpro.com: did not receive HSTS header
homegreenmark.com: did not receive HSTS header
homeownersassociationmanagementla.com: did not receive HSTS header
homeremodelingcontractorsca.com: did not receive HSTS header
-homesandal.com: could not connect to host
+homesandal.com: did not receive HSTS header
homeseller.co.uk: could not connect to host
homesfordinner.ca: could not connect to host
homeyantra.com: did not receive HSTS header
homezhi.com.tw: could not connect to host
homoglyph.net: could not connect to host
+honeybeard.co.uk: did not receive HSTS header
honeytracks.com: could not connect to host
-hong.io: could not connect to host
hongyd.online: could not connect to host
hongzhaxiaofendui.com: could not connect to host
hongzu.cc: could not connect to host
@@ -6109,11 +6662,13 @@ hoodoo.tech: could not connect to host
hookandloom.com: did not receive HSTS header
hookbin.com: could not connect to host
hoopsacademyusa.com: could not connect to host
+hooray.beer: could not connect to host
hoovism.com: did not receive HSTS header
-hoowhen.cn: could not connect to host
+hopesb.org: did not receive HSTS header
hopewellproperties.co.uk: did not receive HSTS header
hopglass.eu: could not connect to host
hopglass.net: could not connect to host
+hopzone.net: could not connect to host
horace.li: did not receive HSTS header
horisonttimedia.fi: did not receive HSTS header
horizonmoto.fr: did not receive HSTS header
@@ -6142,13 +6697,14 @@ hotartup.com: could not connect to host
hotchillibox.co.za: could not connect to host
hotchoc.io: could not connect to host
hotel-huberhof.at: did not receive HSTS header
-hotel-rosner.at: did not receive HSTS header
hotel-tongruben.de: max-age too low: 0
hotelaustria-wien.at: did not receive HSTS header
hotelmadhuwanvihar.com: could not connect to host
hotelvictoriaoax-mailing.com: did not receive HSTS header
hotelvillahermosa-mailing.com: did not receive HSTS header
hotelvue.nl: could not connect to host
+hotjuice.com: could not connect to host
+hotornot.com: could not connect to host
hotpoint-training.com: did not receive HSTS header
hottestwebcamgirls.org: could not connect to host
houkago-step.com: did not receive HSTS header
@@ -6163,18 +6719,22 @@ howtocuremysciatica.com: could not connect to host
howtofreelance.com: did not receive HSTS header
hozinga.de: could not connect to host
hpctecnologias.com: did not receive HSTS header
+hpeditor.tk: could not connect to host
hpepub.asia: did not receive HSTS header
+hpepub.com: did not receive HSTS header
hpepub.org: could not connect to host
hppub.info: could not connect to host
hppub.org: could not connect to host
hppub.site: could not connect to host
hqhost.net: did not receive HSTS header
+hqq.tv: could not connect to host
+hquest.pro.br: could not connect to host
+hqy.moe: did not receive HSTS header
hr-intranet.com: could not connect to host
hr-tech.store: could not connect to host
hr98.tk: could not connect to host
hrackydomino.cz: did not receive HSTS header
hrfhomelottery.com: did not receive HSTS header
-hrk.io: could not connect to host
hrtech.store: could not connect to host
hrtraining.com.au: did not receive HSTS header
hschen.top: could not connect to host
@@ -6192,24 +6752,24 @@ http418.xyz: could not connect to host
httphacker.com: could not connect to host
https-rulesets.org: could not connect to host
https.ps: could not connect to host
+https.ren: could not connect to host
httpstatuscode418.xyz: could not connect to host
httptest.net: could not connect to host
+huang-haitao.com: could not connect to host
huang.nu: could not connect to host
huangguancq.com: could not connect to host
huangh.com: could not connect to host
-huangzenghao.cn: could not connect to host
huangzenghao.com: could not connect to host
huarongdao.com: did not receive HSTS header
hubert.systems: did not receive HSTS header
-hubertmoszka.pl: could not connect to host
+hubertmoszka.pl: max-age too low: 0
hudhaifahgoga.co.za: could not connect to host
hudingyuan.cn: could not connect to host
hugocollignon.fr: could not connect to host
-hugofs.com: did not receive HSTS header
huiser.nl: could not connect to host
hukaloh.com: could not connect to host
hukkatavara.com: could not connect to host
-humanexperiments.com: did not receive HSTS header
+humanexperiments.com: could not connect to host
humankode.com: did not receive HSTS header
humblefinances.com: could not connect to host
humeurs.net: could not connect to host
@@ -6218,12 +6778,15 @@ hump.dk: could not connect to host
humpi.at: could not connect to host
humpteedumptee.in: did not receive HSTS header
hunger.im: could not connect to host
+hunqz.com: could not connect to host
huntshomeinspections.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
huodongweb.com: could not connect to host
huongquynh.com: could not connect to host
hup.blue: did not receive HSTS header
huskybutt.dog: could not connect to host
huskyduvercors.com: did not receive HSTS header
+hustle.com: did not receive HSTS header
+hustle.life: did not receive HSTS header
huwjones.me: could not connect to host
huzu.com: did not receive HSTS header
huzurmetal.net: could not connect to host
@@ -6231,12 +6794,14 @@ hwcine.com: did not receive HSTS header
hwpkasse.de: max-age too low: 2592000
hyakumachi.com: did not receive HSTS header
hyatt.com: did not receive HSTS header
+hybridiyhdistys.fi: could not connect to host
+hybridklubben.fi: could not connect to host
hybula.nl: could not connect to host
hydai.co: could not connect to host
hydra.ws: could not connect to host
hydra.zone: could not connect to host
+hydrabit.nl: did not receive HSTS header
hydrante.ch: could not connect to host
-hydrocloud.net: could not connect to host
hydrodipcenter.nl: did not receive HSTS header
hydronium.cf: could not connect to host
hydronium.ga: could not connect to host
@@ -6244,11 +6809,15 @@ hydronium.me: could not connect to host
hydronium.ml: could not connect to host
hydronium.tk: could not connect to host
hydronyx.me: could not connect to host
+hydrosight.com: did not receive HSTS header
+hyeok.org: did not receive HSTS header
hymerscollege.co.uk: max-age too low: 43200
hypa.net.au: did not receive HSTS header
hyper-matrix.org: could not connect to host
hyper69.com: could not connect to host
hyperactive.am: could not connect to host
+hyperporn.net: could not connect to host
+hyperreal.info: could not connect to host
hypnoresults.com.au: did not receive HSTS header
hypnos.hu: did not receive HSTS header
hypotheques24.ch: could not connect to host
@@ -6257,12 +6826,12 @@ hyvive.com: could not connect to host
hzh.pub: did not receive HSTS header
hztgzz.com: could not connect to host
i--b.com: did not receive HSTS header
-i-aloks.ru: could not connect to host
i-jp.net: could not connect to host
-i-partners.sk: did not receive HSTS header
+i-partners.sk: could not connect to host
i-rickroll-n.pw: could not connect to host
i-stats.net: could not connect to host
i10z.com: could not connect to host
+i28s.com: did not receive HSTS header
i496.eu: could not connect to host
i4m1k0su.com: could not connect to host
i95.me: could not connect to host
@@ -6270,10 +6839,11 @@ i9multiequipamentos.com.br: did not receive HSTS header
iacono.com.br: did not receive HSTS header
iadttaveras.com: could not connect to host
iain.tech: did not receive HSTS header
+iamle.com: max-age too low: 0
iamokay.nl: did not receive HSTS header
iamreubin.co.uk: did not receive HSTS header
iamsoareyou.se: could not connect to host
-iamveto.com: could not connect to host
+iamveto.com: did not receive HSTS header
iapws.com: did not receive HSTS header
iban.is: could not connect to host
ibarf.nl: did not receive HSTS header
@@ -6283,17 +6853,16 @@ ibestreview.com: did not receive HSTS header
ibizatopcharter.com: did not receive HSTS header
ibna.online: could not connect to host
ibnuwebhost.com: could not connect to host
-ibox.ovh: could not connect to host
+ibox.ovh: did not receive HSTS header
ibps.blog: did not receive HSTS header
+ibpsrecruitment.co.in: could not connect to host
ibron.co: could not connect to host
ibsafrica.co.za: could not connect to host
ibsglobal.co.za: could not connect to host
-ibwin.com: max-age too low: 3600
icabanken.se: did not receive HSTS header
icaforsakring.se: did not receive HSTS header
icasnetwork.com: did not receive HSTS header
-iccpublisher.com: could not connect to host
-ice.xyz: could not connect to host
+ice.xyz: did not receive HSTS header
ice.yt: could not connect to host
icebat.dyndns.org: could not connect to host
icebound.cc: did not receive HSTS header
@@ -6312,6 +6881,8 @@ icity.ly: did not receive HSTS header
icloud.net: could not connect to host
icnsoft.ga: did not receive HSTS header
icntorrent.download: could not connect to host
+ico500.com: did not receive HSTS header
+icondoom.nl: did not receive HSTS header
icpc.pp.ua: could not connect to host
icpc2016.in.th: could not connect to host
icreative.nl: did not receive HSTS header
@@ -6320,8 +6891,7 @@ icusignature.com: could not connect to host
icys2017.com: did not receive HSTS header
id-co.in: could not connect to host
id-conf.com: did not receive HSTS header
-id.fedoraproject.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-idblab.tk: did not receive HSTS header
+idblab.tk: could not connect to host
idcrane.com: could not connect to host
iddconnect.com: could not connect to host
iddconnect.org: could not connect to host
@@ -6329,7 +6899,7 @@ ideadozz.hu: could not connect to host
ideal-envelopes.co.uk: did not receive HSTS header
idealmoto.com: did not receive HSTS header
idealmykonos.com: did not receive HSTS header
-idealvenir.com: could not connect to host
+idealvenir.com: did not receive HSTS header
ideapaisajistas.es: did not receive HSTS header
ideaplus.me: could not connect to host
ideasenfoto.com: max-age too low: 604800
@@ -6341,16 +6911,19 @@ identity-hash.online: could not connect to host
identitylabs.uk: could not connect to host
identitysandbox.gov: could not connect to host
idgsupply.com: did not receive HSTS header
+idid.tk: could not connect to host
idinby.dk: did not receive HSTS header
idiopolis.org: could not connect to host
+idiotentruppe.de: could not connect to host
idisplay.es: could not connect to host
idlekernel.com: could not connect to host
idol-bikes.ru: could not connect to host
-idontexist.me: could not connect to host
+idontexist.me: did not receive HSTS header
idsafe.co.za: could not connect to host
idsoccer.com: did not receive HSTS header
-idtheft.gov: could not connect to host
+iec.pe: could not connect to host
iemb.cf: could not connect to host
+iemb.tk: could not connect to host
ierna.com: did not receive HSTS header
ies.id.lv: could not connect to host
ievgenialehner.com: did not receive HSTS header
@@ -6360,21 +6933,22 @@ ifad.org: did not receive HSTS header
ifan.ch: could not connect to host
ifastuniversity.com: did not receive HSTS header
ifcfg.me: could not connect to host
+ifconfig.co: did not receive HSTS header
ifleurs.com: could not connect to host
-ifreetion.cn: did not receive HSTS header
ifx.ee: could not connect to host
ifxnet.com: could not connect to host
ifxor.com: could not connect to host
iga-semi.jp: could not connect to host
igamingforums.com: could not connect to host
-igd.chat: could not connect to host
+igd.chat: did not receive HSTS header
igforums.com: could not connect to host
igi.codes: did not receive HSTS header
igiftcards.nl: did not receive HSTS header
+ignace72.eu: could not connect to host
ignatisd.gr: did not receive HSTS header
ignatovich.by: could not connect to host
+igshpa.org: max-age too low: 0
igule.net: could not connect to host
-ihoey.com: could not connect to host
ihongzu.com: could not connect to host
ihotel.io: did not receive HSTS header
ihrlotto.de: could not connect to host
@@ -6384,12 +6958,11 @@ ihsbsd.tk: could not connect to host
ihzys.com: could not connect to host
iide.co: did not receive HSTS header
iideaz.org: could not connect to host
-iilin.com: could not connect to host
-iiong.com: did not receive HSTS header
iispeed.com: did not receive HSTS header
ijn-dd.nl: could not connect to host
ijoda.com: could not connect to host
ik-life.com: did not receive HSTS header
+ike.io: did not receive HSTS header
ikenmeyer.com: could not connect to host
ikenmeyer.eu: could not connect to host
ikocik.sk: could not connect to host
@@ -6401,17 +6974,19 @@ ilbuongiorno.it: did not receive HSTS header
ildomani.it: did not receive HSTS header
ileat.com: could not connect to host
ilgi.work: could not connect to host
-ilhansubasi.com: did not receive HSTS header
-ilii.me: did not receive HSTS header
+ilii.me: could not connect to host
ilikerainbows.co: could not connect to host
ilikerainbows.co.uk: could not connect to host
ilikfreshweedstores.com: did not receive HSTS header
ilmconpm.de: could not connect to host
iloilofit.org: did not receive HSTS header
ilona.graphics: did not receive HSTS header
+iltec-prom.ru: could not connect to host
iluvscotland.co.uk: did not receive HSTS header
im-design.com.ua: did not receive HSTS header
image.tf: could not connect to host
+imagecurl.com: could not connect to host
+imagecurl.org: could not connect to host
imaginarymakings.me: could not connect to host
imakepoems.net: could not connect to host
imanhearts.com: did not receive HSTS header
@@ -6426,11 +7001,10 @@ imfromthefuture.com: did not receive HSTS header
img.ovh: could not connect to host
imgencrypt.com: could not connect to host
imgul.net: could not connect to host
-imgup.co: did not receive HSTS header
+imguoguo.com: could not connect to host
imim.pw: could not connect to host
imjiangtao.com: did not receive HSTS header
imlinan.cn: could not connect to host
-imlinan.com: could not connect to host
imlinan.info: could not connect to host
imlinan.net: could not connect to host
immanuel60.hu: did not receive HSTS header
@@ -6441,7 +7015,7 @@ immortals-co.com: did not receive HSTS header
immoverkauf24.at: did not receive HSTS header
immoverkauf24.de: did not receive HSTS header
immunicity.cc: could not connect to host
-immunicity.date: did not receive HSTS header
+immunicity.date: could not connect to host
immunicity.eu: did not receive HSTS header
immunicity.host: could not connect to host
immunicity.info: could not connect to host
@@ -6449,33 +7023,36 @@ immunicity.online: could not connect to host
immunicity.press: could not connect to host
immunicity.rocks: could not connect to host
immunicity.st: did not receive HSTS header
-immunicity.today: max-age too low: 0
+immunicity.today: could not connect to host
immunicity.top: could not connect to host
immunicity.win: could not connect to host
immunicity.works: could not connect to host
immunicity.world: could not connect to host
imoe.ac.cn: did not receive HSTS header
imolug.org: did not receive HSTS header
+imoner.com: could not connect to host
imoner.ga: could not connect to host
imoni-blog.net: could not connect to host
imoto.me: could not connect to host
imperdintechnologies.com: could not connect to host
imperialonlinestore.com: did not receive HSTS header
imperialwebsolutions.com: did not receive HSTS header
-implicitdenial.com: could not connect to host
+implicitdenial.com: did not receive HSTS header
+imprenta-es.com: did not receive HSTS header
improvingwp.com: could not connect to host
impulse-clan.de: could not connect to host
imrejonk.nl: could not connect to host
imu.li: did not receive HSTS header
imusic.dk: did not receive HSTS header
imy.life: could not connect to host
+imyrs.cn: could not connect to host
inandeyes.com: did not receive HSTS header
inb4.us: could not connect to host
inbox.li: did not receive HSTS header
inboxen.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
incendiary-arts.com: could not connect to host
inceptionradionetwork.com: could not connect to host
-inche-ali.com: did not receive HSTS header
+inche-ali.com: could not connect to host
inchomatic.com: did not receive HSTS header
increasetestosteronelevels.org: could not connect to host
inderagamono.net: could not connect to host
@@ -6485,17 +7062,18 @@ indieethos.com: did not receive HSTS header
indiemods.com: could not connect to host
indien.guide: could not connect to host
indilens.com: did not receive HSTS header
+indiroyunu.com: did not receive HSTS header
indoorskiassen.nl: did not receive HSTS header
+indostar303.com: did not receive HSTS header
indredouglas.me: could not connect to host
industreiler.com: could not connect to host
industreiler.com.br: could not connect to host
+industriasrenova.com: could not connect to host
industrybazar.com: max-age too low: 2592000
ineed.com.mt: could not connect to host
-inetpub.cn: could not connect to host
inexlog.fr: could not connect to host
inexpensivecomputers.net: could not connect to host
-infcof.com: could not connect to host
-inference.biz.tr: could not connect to host
+infcof.com: did not receive HSTS header
infilock.com: could not connect to host
infinether.net: could not connect to host
infinitiofmarinparts.com: could not connect to host
@@ -6506,12 +7084,14 @@ infinitusgaming.eu: could not connect to host
infinity-freedom.com: could not connect to host
infinity-freedom.de: could not connect to host
infinity-lifestyle.de: could not connect to host
+infinitybas.com: could not connect to host
+infinityepos.co.uk: could not connect to host
inflate-a-bubbles.co.uk: did not receive HSTS header
inflation.ml: could not connect to host
-influo.com: did not receive HSTS header
influxus.com: could not connect to host
info-bay.com: could not connect to host
info-sys.tk: could not connect to host
+infoamin.com: could not connect to host
infoduv.fr: did not receive HSTS header
infopagina.es: did not receive HSTS header
inforichjapan.com: did not receive HSTS header
@@ -6524,13 +7104,15 @@ infosoph.org: could not connect to host
infotics.es: did not receive HSTS header
infovae-idf.com: did not receive HSTS header
infoworm.org: could not connect to host
-infranium.info: did not receive HSTS header
+infranium.info: could not connect to host
infranix.eu: max-age too low: 7360000
+infrarank.com: could not connect to host
infruction.com: could not connect to host
infura.co.th: could not connect to host
ingalabs.hu: could not connect to host
+ingalls.run: could not connect to host
ingesol.fr: did not receive HSTS header
-ingresscode.cn: could not connect to host
+ingresscode.cn: did not receive HSTS header
inhelix.com: could not connect to host
inhive.group: did not receive HSTS header
iniiter.com: could not connect to host
@@ -6544,6 +7126,7 @@ injust.gq: could not connect to host
injust.me: could not connect to host
injust.ml: could not connect to host
injust.tk: could not connect to host
+inkbunny.net: could not connect to host
inked-guy.de: could not connect to host
inkedguy.de: could not connect to host
inkstory.gr: did not receive HSTS header
@@ -6551,13 +7134,16 @@ inksupply.com: did not receive HSTS header
inku.ovh: did not receive HSTS header
inkvisual.tk: could not connect to host
inleaked.com: could not connect to host
+innerform.com: could not connect to host
innit.be: could not connect to host
innophate-security.nl: could not connect to host
innovamag.ca: did not receive HSTS header
innovativebuildingsolutions.co.za: could not connect to host
innovativeideaz.org: could not connect to host
-inobun.jp: could not connect to host
+innoventure.de: did not receive HSTS header
+innovum.cz: did not receive HSTS header
inondation.ch: could not connect to host
+inorder.website: could not connect to host
inox.io: did not receive HSTS header
inoxio.com: did not receive HSTS header
inoxio.de: did not receive HSTS header
@@ -6568,6 +7154,7 @@ insane.zone: could not connect to host
inschrijfformulier.com: could not connect to host
inscript.pl: did not receive HSTS header
insideofgaming.de: could not connect to host
+insidethefirewall.tk: could not connect to host
insite-feedback.com: could not connect to host
insouciant.org: could not connect to host
inspirationconcepts.nl: did not receive HSTS header
@@ -6576,12 +7163,17 @@ inspiroinc.com: could not connect to host
inst.mobi: did not receive HSTS header
instacart.com: did not receive HSTS header
instant-hack.com: did not receive HSTS header
+instant-hack.io: could not connect to host
instantdev.io: could not connect to host
+instantsubs.de: did not receive HSTS header
+instaquiz.ru: could not connect to host
instasex.ch: could not connect to host
+institutmaupertuis.hopto.org: could not connect to host
institutoflordelavida.com: could not connect to host
institutulcultural.ro: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
instruktor.io: could not connect to host
insurance: could not connect to host
+insurethebox.tk: could not connect to host
int-ext-design.fr: could not connect to host
integrationinc.com: did not receive HSTS header
integrityingovernmentidaho.com: could not connect to host
@@ -6592,33 +7184,36 @@ intelbet.ro: did not receive HSTS header
intelldynamics.com: could not connect to host
intelliance.eu: could not connect to host
interboursegeneva.ch: did not receive HSTS header
-interference.io: could not connect to host
+interference.io: did not receive HSTS header
+interfug.de: did not receive HSTS header
intergenx.co.uk: could not connect to host
intergenx.com: could not connect to host
intergenx.org: could not connect to host
intergenx.org.uk: could not connect to host
interhosts.co.za: could not connect to host
interim-cto.de: could not connect to host
+interiorcheapo.com: could not connect to host
interiorprofesional.com.ar: max-age too low: 604800
interleucina.org: did not receive HSTS header
interlocal.co.uk: could not connect to host
interlun.com: could not connect to host
intermezzo-emmerich.de: did not receive HSTS header
intermezzo-emmerich.nl: did not receive HSTS header
+internacao.com: did not receive HSTS header
internaldh.com: could not connect to host
-internet-aukcion.info: could not connect to host
+internaut.co.za: did not receive HSTS header
internet-pornografie.de: did not receive HSTS header
internetbugbounty.org: did not receive HSTS header
internetcasinos.de: could not connect to host
internetcensus.org: could not connect to host
internetdentalalliance.com: did not receive HSTS header
internetradiocharts.de: did not receive HSTS header
-internetstaff.com: could not connect to host
internshipandwork.com: did not receive HSTS header
internshipandwork.ru: did not receive HSTS header
interociter-enterprises.com: could not connect to host
intersectraven.net: did not receive HSTS header
interspot.nl: could not connect to host
+interstellarhyperdrive.com: did not receive HSTS header
interviewpipeline.co.uk: could not connect to host
intervisteperstrada.com: could not connect to host
intexplore.org: could not connect to host
@@ -6626,12 +7221,9 @@ intim-uslugi-kazan.net: could not connect to host
intimateperrierjouet.com: could not connect to host
intimici.com.br: could not connect to host
intimtoy.com.ua: could not connect to host
-intocities.de: did not receive HSTS header
intranetsec.fr: could not connect to host
introvertedtravel.space: max-age too low: 0
-intrp.net: did not receive HSTS header
-intune.life: could not connect to host
-intxt.net: could not connect to host
+intrp.net: could not connect to host
invenio.software: could not connect to host
inverselink.com: could not connect to host
investcountry.com: could not connect to host
@@ -6641,6 +7233,7 @@ investnext.com: max-age too low: 43200
invictusmc.uk: could not connect to host
invinsec.cloud: did not receive HSTS header
invinsec.com: max-age too low: 86400
+invis.net: could not connect to host
invite24.pro: could not connect to host
invuelto.com: did not receive HSTS header
iodice.org: did not receive HSTS header
@@ -6649,12 +7242,11 @@ ioiart.eu: could not connect to host
iolife.dk: could not connect to host
ionas-law.ro: did not receive HSTS header
ionc.ca: could not connect to host
-ionote.me: could not connect to host
iop.intuit.com: max-age too low: 86400
iora.fr: could not connect to host
iosmods.com: did not receive HSTS header
-iossifovlab.com: could not connect to host
iostips.ru: could not connect to host
+iotfen.com: could not connect to host
iotsms.io: could not connect to host
ip-life.net: did not receive HSTS header
ip.or.at: could not connect to host
@@ -6663,6 +7255,7 @@ ipbill.org.uk: could not connect to host
ipcfg.me: could not connect to host
ipfp.pl: did not receive HSTS header
iphonechina.net: could not connect to host
+iplantom.com: could not connect to host
iplife.cn: could not connect to host
iplog.info: could not connect to host
ipmimagazine.com: did not receive HSTS header
@@ -6670,6 +7263,7 @@ ipmotion.ca: could not connect to host
ipnetworking.net: could not connect to host
ipo-times.com: did not receive HSTS header
ipop.gr: did not receive HSTS header
+iposm.net: could not connect to host
iprice.co.id: did not receive HSTS header
iprice.hk: did not receive HSTS header
iprice.my: did not receive HSTS header
@@ -6677,6 +7271,7 @@ iprice.ph: did not receive HSTS header
iprice.sg: did not receive HSTS header
iprice.vn: did not receive HSTS header
ipricethailand.com: did not receive HSTS header
+iprody.com: could not connect to host
ipsilon-project.org: did not receive HSTS header
iptel.ro: could not connect to host
ipuservicedesign.com: could not connect to host
@@ -6690,20 +7285,19 @@ ir-saitama.com: could not connect to host
iran-poll.org: could not connect to host
iranianlawschool.com: could not connect to host
iraqidinar.org: did not receive HSTS header
-irazimina.ru: did not receive HSTS header
+irazimina.ru: could not connect to host
irccloud.com: did not receive HSTS header
-ircmett.de: could not connect to host
-ireef.tv: could not connect to host
irelandesign.com: could not connect to host
irinkeby.nu: could not connect to host
-irische-segenswuensche.info: did not receive HSTS header
+irische-segenswuensche.info: could not connect to host
irisdina.de: could not connect to host
irishmusic.nu: could not connect to host
irland.guide: could not connect to host
irmag.ru: did not receive HSTS header
irmtrudjurke.de: did not receive HSTS header
irodorinet.com: max-age too low: 0
-iron-guard.net: could not connect to host
+iron-guard.net: did not receive HSTS header
+ironhide.de: did not receive HSTS header
irstaxforumsonline.com: did not receive HSTS header
irugs.ch: did not receive HSTS header
irugs.co.uk: did not receive HSTS header
@@ -6720,13 +7314,13 @@ isaackabel.tk: could not connect to host
ischool.co.jp: did not receive HSTS header
isdf.me: could not connect to host
isdown.cz: could not connect to host
-isef-eg.com: could not connect to host
+isef-eg.com: did not receive HSTS header
iserv.fr: did not receive HSTS header
iseulde.com: did not receive HSTS header
-isfriday.com: could not connect to host
ishadowsocks.ltd: could not connect to host
ishillaryclintoninprisonyet.com: could not connect to host
ishome.org: could not connect to host
+isidom.fr: did not receive HSTS header
isipulsa.web.id: did not receive HSTS header
isisfighters.info: could not connect to host
isitamor.pm: could not connect to host
@@ -6735,36 +7329,39 @@ iskai.net: did not receive HSTS header
islandinthenet.com: did not receive HSTS header
islandoilsupply.com: max-age too low: 300
islandpumpandtank.com: did not receive HSTS header
-islandzero.net: could not connect to host
+islandzero.net: did not receive HSTS header
+islief.com: could not connect to host
isntall.us: did not receive HSTS header
isocom.eu: could not connect to host
isoface33.fr: did not receive HSTS header
isogen5.com: could not connect to host
-isognattori.com: could not connect to host
isogram.nl: did not receive HSTS header
isoroc-nidzica.pl: could not connect to host
ispringcloud.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
issala.org: did not receive HSTS header
isscouncil.com: could not connect to host
isslshop.com: could not connect to host
-issue.watch: could not connect to host
-istanbul.systems: did not receive HSTS header
+istanbul.systems: could not connect to host
istanbultravelguide.info: could not connect to host
istaspirtslietas.lv: did not receive HSTS header
-istgame.com: could not connect to host
+istgame.com: did not receive HSTS header
+istheapplestoredown.com: did not receive HSTS header
isthefieldcontrolsystemdown.com: could not connect to host
istherrienstillcoach.com: could not connect to host
it-cave.com: could not connect to host
it-go.net: did not receive HSTS header
+it-kron.de: did not receive HSTS header
it-labor.info: did not receive HSTS header
it-schwerin.de: could not connect to host
itad.top: could not connect to host
itchimes.com: did not receive HSTS header
+itchy.nl: could not connect to host
itechgeek.com: max-age too low: 0
items.lv: did not receive HSTS header
itemton.com: could not connect to host
itfaq.nl: did not receive HSTS header
itfensi.net: max-age too low: 6307200
+itforcc.com: did not receive HSTS header
itinsight.hu: did not receive HSTS header
itisjustnot.cricket: could not connect to host
itmanie.cz: could not connect to host
@@ -6772,6 +7369,7 @@ itos.asia: did not receive HSTS header
itos.pl: did not receive HSTS header
itpol.dk: did not receive HSTS header
itpro-mg.de: could not connect to host
+itproject.guru: did not receive HSTS header
itriskltd.com: did not receive HSTS header
its-schindler.de: could not connect to host
its-v.de: could not connect to host
@@ -6779,11 +7377,12 @@ itsadog.co.uk: did not receive HSTS header
itsagadget.com: did not receive HSTS header
itsamurai.ru: max-age too low: 2592000
itsatrap.nl: could not connect to host
+itsblue.de: could not connect to host
itsecurityassurance.pw: could not connect to host
itsg-faq.de: could not connect to host
+itshka.rv.ua: max-age too low: 604800
itshost.ru: could not connect to host
itsmejohn.org: could not connect to host
-itspawned.com: max-age too low: 200
itsupport-luzern.ch: could not connect to host
itu2015.de: could not connect to host
ius.io: did not receive HSTS header
@@ -6796,7 +7395,6 @@ ivi.es: max-age too low: 0
ivk.website: could not connect to host
ivklombard.ru: did not receive HSTS header
ivyshop.com.br: could not connect to host
-ivystech.com: could not connect to host
iwannarefill.com: could not connect to host
iwex.swiss: could not connect to host
iwilcox.me.uk: could not connect to host
@@ -6817,32 +7415,36 @@ j-lsolutions.com: could not connect to host
j-rickroll-a.pw: could not connect to host
j0ng.xyz: could not connect to host
j15t98j.co.uk: did not receive HSTS header
-ja-publications.agency: did not receive HSTS header
ja-publications.com: did not receive HSTS header
jaan.su: could not connect to host
-jaaxypro.com: did not receive HSTS header
-jabbas.eu: could not connect to host
+jaaxypro.com: could not connect to host
jackalworks.com: could not connect to host
jackdoan.com: did not receive HSTS header
jackfahnestock.com: could not connect to host
jackops.com: could not connect to host
jackyyf.com: could not connect to host
-jacobparry.ca: could not connect to host
+jacobparry.ca: max-age too low: 0
jacobsenarquitetura.com: max-age too low: 5184000
+jadopado.com: could not connect to host
jaepinformatica.com: did not receive HSTS header
jagido.de: did not receive HSTS header
jahliveradio.com: could not connect to host
jaimechanaga.com: could not connect to host
jaion.ml: could not connect to host
+jak-na-les.cz: could not connect to host
+jakenbake.com: could not connect to host
jakewalker.xyz: could not connect to host
jakincode.army: could not connect to host
jaksel.id: could not connect to host
jaksi.io: did not receive HSTS header
+jakubtopic.cz: could not connect to host
jamanji.com.ng: could not connect to host
+jamaware.org: did not receive HSTS header
james-parker.com: did not receive HSTS header
james.je: could not connect to host
jamesandanneke.com: did not receive HSTS header
jamesandpame.la: could not connect to host
+jamesbradach.com: did not receive HSTS header
jamesburton.london: could not connect to host
jamesbywater.co.uk: could not connect to host
jamesbywater.com: could not connect to host
@@ -6850,7 +7452,7 @@ jamesbywater.me: could not connect to host
jamesbywater.me.uk: could not connect to host
jamesbywater.uk: could not connect to host
jamesconroyfinn.com: did not receive HSTS header
-jamescostian.com: did not receive HSTS header
+jamescostian.com: max-age too low: 0
jamesdoell.com: could not connect to host
jamesdoylephoto.com: did not receive HSTS header
jamesevans.is: could not connect to host
@@ -6858,15 +7460,16 @@ jamesf.xyz: could not connect to host
jamesforman.co.nz: did not receive HSTS header
jameshale.me: did not receive HSTS header
jamesheald.com: could not connect to host
+jamesl.ml: could not connect to host
jamesmaurer.com: did not receive HSTS header
+jamesrains.com: could not connect to host
jameswarp.com: could not connect to host
-jami.am: did not receive HSTS header
+jami.am: max-age too low: 0
jamourtney.com: could not connect to host
jamyeprice.com: did not receive HSTS header
jan-cermak.cz: did not receive HSTS header
jan-daniels.de: did not receive HSTS header
jan27.org: did not receive HSTS header
-janada.cz: could not connect to host
janario.me: could not connect to host
jangho.me: could not connect to host
jangocloud.tk: could not connect to host
@@ -6878,6 +7481,8 @@ janmg.com: could not connect to host
janosh.com: did not receive HSTS header
janssen.fm: could not connect to host
janus-engineering.de: did not receive HSTS header
+janvari.com: could not connect to host
+janvaribalint.com: could not connect to host
janverlaan.nl: did not receive HSTS header
jap-nope.de: did not receive HSTS header
japan4you.org: could not connect to host
@@ -6885,22 +7490,24 @@ japanbaths.com: could not connect to host
japaneseemoticons.org: did not receive HSTS header
japanesenames.biz: did not receive HSTS header
japangids.nl: could not connect to host
+japanphilosophy.com: did not receive HSTS header
+japansm.com: could not connect to host
japanwide.net: could not connect to host
japaripark.com: could not connect to host
japlex.com: could not connect to host
jaqen.ch: could not connect to host
jardins-utopie.net: could not connect to host
jaredbates.net: did not receive HSTS header
-jarivisual.com: did not receive HSTS header
jarnail.ca: could not connect to host
-jaroslavc.eu: did not receive HSTS header
jaroslavtrsek.cz: did not receive HSTS header
+jarrodcastaing.com: did not receive HSTS header
+jarrodcastaing.com.au: did not receive HSTS header
jarsater.com: could not connect to host
jartza.org: could not connect to host
jasmineconseil.com: did not receive HSTS header
jasoncosper.com: did not receive HSTS header
jasonradin.com: did not receive HSTS header
-jasonrobinson.me: max-age too low: 60
+jasonrobinson.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
jasonroe.me: did not receive HSTS header
jasonwindholz.com: could not connect to host
jastoria.pl: did not receive HSTS header
@@ -6911,12 +7518,14 @@ javachip.win: could not connect to host
javan.ga: could not connect to host
javascriptlab.fr: could not connect to host
javelinsms.com: could not connect to host
+javfree.me: could not connect to host
javiermixdjs.com: did not receive HSTS header
javilacat.info: could not connect to host
jawn.ca: could not connect to host
jawnelodzkie.org.pl: could not connect to host
jaxageto.de: did not receive HSTS header
jayblock.com: did not receive HSTS header
+jayf.de: could not connect to host
jayharris.ca: could not connect to host
jaylen.com.ar: did not receive HSTS header
jayna.design: did not receive HSTS header
@@ -6931,6 +7540,7 @@ jbfp.dk: could not connect to host
jbj.co.uk: did not receive HSTS header
jbn.mx: could not connect to host
jbrowndesign.me: did not receive HSTS header
+jcaicedo.tk: could not connect to host
jccars-occasions.be: could not connect to host
jcch.de: could not connect to host
jccrew.org: could not connect to host
@@ -6939,9 +7549,8 @@ jcolideles.com: could not connect to host
jcom-communication-system.biz: could not connect to host
jcor.me: could not connect to host
jcoscia.com: could not connect to host
-jcraft.us: did not receive HSTS header
+jcraft.us: could not connect to host
jctf.io: could not connect to host
-jcyz.cf: could not connect to host
jdav-leipzig.de: could not connect to host
jdcdirectsales.com.ph: could not connect to host
jdfk.net: could not connect to host
@@ -6953,7 +7562,6 @@ jebengotai.com: did not receive HSTS header
jecho.cn: could not connect to host
jeff.is: did not receive HSTS header
jeff393.com: could not connect to host
-jeffanderson.me: could not connect to host
jeffersonregan.org: could not connect to host
jeffhuxley.com: could not connect to host
jeffreymagee.com: did not receive HSTS header
@@ -6964,10 +7572,12 @@ jellow.nl: did not receive HSTS header
jemoticons.com: did not receive HSTS header
jenjoit.de: could not connect to host
jennifercherniack.com: did not receive HSTS header
+jennybeaned.com: did not receive HSTS header
jens-prangenberg.de: did not receive HSTS header
jens.hk: could not connect to host
jensenbanden.no: could not connect to host
jenssen.org: did not receive HSTS header
+jeremyc.ca: could not connect to host
jeremye77.com: did not receive HSTS header
jeremymade.com: did not receive HSTS header
jeremywagner.me: did not receive HSTS header
@@ -6975,6 +7585,7 @@ jermann.biz: did not receive HSTS header
jeroldirvin.com: did not receive HSTS header
jerrypau.ca: could not connect to host
jesorsenville.com: did not receive HSTS header
+jessevictors.com: could not connect to host
jessicah.org: could not connect to host
jesuisformidable.nl: could not connect to host
jesuslucas.com: did not receive HSTS header
@@ -6983,7 +7594,7 @@ jetlagphotography.com: could not connect to host
jeton.com: did not receive HSTS header
jetsetcharge.com: could not connect to host
jetsetpay.com: could not connect to host
-jettravel.com.mt: did not receive HSTS header
+jettravel.com.mt: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
jettshome.org: could not connect to host
jetzt-elektromobil.de: could not connect to host
jevisite.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -6999,10 +7610,10 @@ jhburton.uk: could not connect to host
jhcommunitysports.co.uk: could not connect to host
jhejderup.me: could not connect to host
jhermsmeier.de: could not connect to host
+jhollandtranslations.com: could not connect to host
jia1hao.com: could not connect to host
jiaidu.com: could not connect to host
jiangzequn.com: could not connect to host
-jiangzm.com: did not receive HSTS header
jianjiantv.com: could not connect to host
jiaqiang.vip: could not connect to host
jichi.me: could not connect to host
@@ -7015,17 +7626,16 @@ jimas.eu: did not receive HSTS header
jimenacocina.com: did not receive HSTS header
jimgao.tk: did not receive HSTS header
jimmehcai.com: could not connect to host
-jinancy.fr: could not connect to host
jingyuesi.com: could not connect to host
+jinliming.ml: could not connect to host
jinmaguoji.com: could not connect to host
-jinshavip.com: could not connect to host
+jinshavip.com: did not receive HSTS header
jiosongs.com: did not receive HSTS header
jira.com: did not receive HSTS header
jirav.io: could not connect to host
-jiripudil.cz: could not connect to host
jisaku-homepage.com: did not receive HSTS header
+jitlab.org: could not connect to host
jitsi.org: did not receive HSTS header
-jixun.moe: did not receive HSTS header
jiyue.com: did not receive HSTS header
jiyuu-ni.com: could not connect to host
jiyuu-ni.net: could not connect to host
@@ -7035,28 +7645,29 @@ jkb.pics: could not connect to host
jkbuster.com: could not connect to host
jkng.eu: could not connect to host
jko.works: could not connect to host
-jkyuan.tk: did not receive HSTS header
jlhmedia.com: did not receive HSTS header
jm06.com: did not receive HSTS header
jm22.com: could not connect to host
jmb.lc: could not connect to host
jmdekker.it: could not connect to host
-jmvbmx.ch: did not receive HSTS header
+jmvbmx.ch: could not connect to host
jn1.me: did not receive HSTS header
+jncde.de: could not connect to host
+jncie.de: could not connect to host
+jncip.de: could not connect to host
joacimeldre.com: did not receive HSTS header
joakimalgroy.com: could not connect to host
joaquimgoliveira.pt: could not connect to host
-job-offer.de: could not connect to host
-job.biz.tr: could not connect to host
jobers.ch: did not receive HSTS header
jobers.pt: did not receive HSTS header
jobflyapp.com: could not connect to host
jobmedic.com: could not connect to host
jobshq.com: did not receive HSTS header
+jobss.co.uk: could not connect to host
jobtestprep.de: max-age too low: 0
jobtestprep.dk: max-age too low: 0
jobtestprep.fr: max-age too low: 0
-jobtestprep.it: could not connect to host
+jobtestprep.it: did not receive HSTS header
jobtestprep.nl: max-age too low: 0
jobtestprep.se: max-age too low: 0
jodel.ninja: could not connect to host
@@ -7070,7 +7681,7 @@ joetyson.io: could not connect to host
johannaojanen.com: could not connect to host
johannes-bugenhagen.de: did not receive HSTS header
johannes-sprink.de: could not connect to host
-johannesen.tv: could not connect to host
+johansf.tech: could not connect to host
johnbrownphotography.ch: did not receive HSTS header
johncardell.com: did not receive HSTS header
johners.me: could not connect to host
@@ -7078,7 +7689,7 @@ johngaltgroup.com: did not receive HSTS header
johnhgaunt.com: did not receive HSTS header
johnrom.com: could not connect to host
johnsanchez.io: could not connect to host
-johnsonho.net: did not receive HSTS header
+johnsiu.com: could not connect to host
johntomasowa.com: could not connect to host
johnverkerk.com: could not connect to host
jointoweb.com: could not connect to host
@@ -7098,7 +7709,9 @@ jonsno.ws: could not connect to host
joostbovee.nl: did not receive HSTS header
jooto.com: did not receive HSTS header
jopl.org: did not receive HSTS header
+jordankirby.co.uk: could not connect to host
jordanp.engineer: could not connect to host
+jordanscorporatelaw.com: could not connect to host
jordanstrustcompany.cn: could not connect to host
jordanstrustcompany.ru: could not connect to host
jordikroon.nl: could not connect to host
@@ -7108,6 +7721,7 @@ jornadasciberdefensa2016.es: could not connect to host
jorovik.com: did not receive HSTS header
jorrit.info: max-age too low: 0
josahrens.me: could not connect to host
+josc.com.au: could not connect to host
joseaveleira.es: did not receive HSTS header
josecage.com: could not connect to host
josefottosson.se: max-age too low: 2592000
@@ -7119,6 +7733,7 @@ joto.de: did not receive HSTS header
jotpics.com: could not connect to host
jottit.com: could not connect to host
journalof.tech: could not connect to host
+joworld.net: could not connect to host
joyceclerkx.com: could not connect to host
joyjohnston.ca: did not receive HSTS header
joyqi.com: did not receive HSTS header
@@ -7126,7 +7741,7 @@ jpaglier.com: could not connect to host
jpbike.cz: did not receive HSTS header
jpcrochetapparel.com: could not connect to host
jpeaches.xyz: could not connect to host
-jpod.cc: could not connect to host
+jpgangbang.com: could not connect to host
jproxx.com: did not receive HSTS header
jptun.com: could not connect to host
jrgold.me: could not connect to host
@@ -7138,6 +7753,7 @@ jsbentertainment.nl: could not connect to host
jsbevents.nl: could not connect to host
jsblights.nl: could not connect to host
jsc7776.com: did not receive HSTS header
+jschoi.org: did not receive HSTS header
jsg-technologies.de: did not receive HSTS header
jsjyhzy.cc: could not connect to host
json-viewer.com: did not receive HSTS header
@@ -7147,11 +7763,14 @@ ju1ro.de: did not receive HSTS header
jualautoclave.com: did not receive HSTS header
jualssh.com: could not connect to host
juandesouza.com: did not receive HSTS header
+juanhub.com: did not receive HSTS header
juchheim-methode.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+judge2020.com: did not receive HSTS header
juiced.gs: did not receive HSTS header
juka.pp.ua: could not connect to host
juku-info.top: did not receive HSTS header
julegoerke.de: did not receive HSTS header
+julenlanda.com: could not connect to host
juliamweber.de: could not connect to host
julian-kipka.de: did not receive HSTS header
julian-witusch.de: could not connect to host
@@ -7171,52 +7790,52 @@ junaos.com: did not receive HSTS header
junaos.xyz: did not receive HSTS header
jundimax.com.br: could not connect to host
junge-selbsthilfe.info: could not connect to host
+jungleculture.co.za: could not connect to host
junglegoat.xyz: did not receive HSTS header
juniwalk.cz: could not connect to host
junjung.me: could not connect to host
junqtion.com: could not connect to host
-jupp0r.de: did not receive HSTS header
-juridiqueo.com: could not connect to host
-juristas.com.br: did not receive HSTS header
-juristeo.com: could not connect to host
+jupp0r.de: could not connect to host
+juridiqueo.com: did not receive HSTS header
+juristeo.com: did not receive HSTS header
jurke.com: did not receive HSTS header
jurko.cz: could not connect to host
just-pools.co.za: could not connect to host
just2trade.com: did not receive HSTS header
-justanothercompany.name: could not connect to host
justiceforfathers.com: did not receive HSTS header
-justiceo.org: could not connect to host
-justin-tech.com: could not connect to host
+justiceo.org: did not receive HSTS header
justinlemay.com: could not connect to host
justinrudio.com: did not receive HSTS header
justlikethat.hosting: did not receive HSTS header
justmy.website: did not receive HSTS header
justnaw.co.uk: could not connect to host
justonce.net: could not connect to host
+justsome.info: did not receive HSTS header
justudin.com: did not receive HSTS header
justwood.cz: did not receive HSTS header
justzz.xyz: could not connect to host
jutella.de: did not receive HSTS header
juul.xyz: could not connect to host
+juventusclublugano.ch: could not connect to host
juventusmania1897.com: could not connect to host
juwairen.cn: could not connect to host
jvn.com: did not receive HSTS header
jvoice.net: could not connect to host
jwilsson.me: could not connect to host
jwolt-lx.com: could not connect to host
+jxir.de: could not connect to host
jxm.in: could not connect to host
-jysperm.me: did not receive HSTS header
+jysperm.me: could not connect to host
jznet.org: could not connect to host
k-dev.de: could not connect to host
k-rickroll-g.pw: could not connect to host
-k-wallet.com: did not receive HSTS header
+k-wallet.com: could not connect to host
k1cp.com: could not connect to host
k38.cc: max-age too low: 3600
ka-clan.com: could not connect to host
kaanduman.com: could not connect to host
-kaasbesteld.nl: did not receive HSTS header
kaasbijwijn.nl: did not receive HSTS header
-kabinapp.com: could not connect to host
+kabinapp.com: did not receive HSTS header
kabuabc.com: could not connect to host
kackscharf.de: could not connect to host
kadioglumakina.com.tr: did not receive HSTS header
@@ -7226,6 +7845,7 @@ kahopoon.net: could not connect to host
kai.cool: did not receive HSTS header
kaika-facilitymanagement.de: could not connect to host
kaika-hms.de: did not receive HSTS header
+kainetsoft.com: could not connect to host
kainz.bayern: could not connect to host
kainz.be: could not connect to host
kaisers.de: did not receive HSTS header
@@ -7239,7 +7859,6 @@ kaleidoskop-freiburg.de: did not receive HSTS header
kalender.goip.de: could not connect to host
kalilinux.tech: could not connect to host
kaloix.de: could not connect to host
-kamagra-comprare.it: max-age too low: 600
kamalame.co: could not connect to host
kambodja.guide: could not connect to host
kamcvicit.sk: could not connect to host
@@ -7258,10 +7877,12 @@ kanganer.com: could not connect to host
kangzaber.com: could not connect to host
kaniklani.co.za: did not receive HSTS header
kanmitao.com: could not connect to host
+kanotijd.nl: could not connect to host
kanr.in: could not connect to host
kanscooking.org: could not connect to host
kantorad.io: could not connect to host
-kanuvu.de: could not connect to host
+kantv1.com: could not connect to host
+kanuvu.de: did not receive HSTS header
kanzlei-wirtschaftsrecht.berlin: max-age too low: 600000
kaohub.com: could not connect to host
kaomojis.net: did not receive HSTS header
@@ -7272,7 +7893,6 @@ kappit.dk: could not connect to host
kapucini.si: max-age too low: 0
kaputt.com: could not connect to host
kapverde.guide: could not connect to host
-karaface.com: could not connect to host
karamna.com: could not connect to host
karaoketonight.com: could not connect to host
karatekit.co.uk: did not receive HSTS header
@@ -7280,14 +7900,17 @@ karatorian.org: did not receive HSTS header
karjala-ski.ru: could not connect to host
karloskontana.tk: could not connect to host
karlproctor.co.uk: could not connect to host
+karlstabo.se: max-age too low: 86400
karmaflux.com: did not receive HSTS header
+karmic.com: max-age too low: 0
+karpanhellas.com: could not connect to host
+kars.ooo: could not connect to host
karting34.com: did not receive HSTS header
karuneshjohri.com: could not connect to host
kashdash.ca: could not connect to host
kashis.com.au: max-age too low: 0
-kat.al: could not connect to host
+kat.al: max-age too low: 0
katalogakci.cz: did not receive HSTS header
-kateduggan.net: could not connect to host
kati0.com: could not connect to host
katiaetdavid.fr: could not connect to host
katja-nikolic-design.de: could not connect to host
@@ -7300,11 +7923,13 @@ katproxy.top: could not connect to host
katrinjanke.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
kattenfun.be: did not receive HSTS header
kattenfun.nl: did not receive HSTS header
+katthewaffle.fr: could not connect to host
katzen.me: could not connect to host
kaufkraftkiel.de: could not connect to host
kauperwood.ovh: could not connect to host
kauplusprofesional.com: did not receive HSTS header
kausch.at: could not connect to host
+kausta.me: could not connect to host
kavinvin.me: could not connect to host
kawaiii.link: did not receive HSTS header
kawaiiku.com: could not connect to host
@@ -7312,10 +7937,11 @@ kawaiiku.de: could not connect to host
kaydan.io: could not connect to host
kayipmurekkep.com: could not connect to host
kayon.cf: could not connect to host
-kayscs.com: could not connect to host
kazanasolutions.de: could not connect to host
kazenojiyu.fr: did not receive HSTS header
+kbfl.org: could not connect to host
kcluster.io: could not connect to host
+kcore.org: max-age too low: 0
kd-plus.pp.ua: could not connect to host
kdata.it: did not receive HSTS header
kdbx.online: could not connect to host
@@ -7334,22 +7960,24 @@ keepmanager.org: could not connect to host
keeprubyweird.com: did not receive HSTS header
kefaloniatoday.com: did not receive HSTS header
keihin-chaplin.jp: did not receive HSTS header
+kein-fidget-spinner-werden.de: could not connect to host
kejibot.com: could not connect to host
kekehouse.net: could not connect to host
kellyandantony.com: could not connect to host
kelm.me: could not connect to host
+kelp.agency: did not receive HSTS header
ken-electric.com.br: could not connect to host
kenc.dk: max-age too low: 2592000
kenchristensen.dk: max-age too low: 2592000
kenderbeton-magyarorszag.hu: did not receive HSTS header
kenderbetonmagyarorszag.hu: did not receive HSTS header
kenderhaz-magyarorszag.hu: did not receive HSTS header
+kenderhazmagyarorszag.hu: did not receive HSTS header
kenkoelectric.com: did not receive HSTS header
kenman.dk: max-age too low: 2592000
kennynet.co.uk: could not connect to host
kensparkesphotography.com: did not receive HSTS header
kentacademiestrust.org.uk: did not receive HSTS header
-kenyons.info: could not connect to host
kepler-seminar.de: did not receive HSTS header
kerangalam.com: did not receive HSTS header
kerksanders.nl: could not connect to host
@@ -7358,26 +7986,30 @@ kermadec.com: did not receive HSTS header
kermadec.net: could not connect to host
kernelmode.io: did not receive HSTS header
kernl.us: did not receive HSTS header
+kerus.net: could not connect to host
keshausconsulting.com: could not connect to host
keskeces.com: did not receive HSTS header
kesteren.com: could not connect to host
-kevinbowers.me: could not connect to host
kevindekoninck.com: could not connect to host
-kevinpirnie.com: did not receive HSTS header
+kevinfoley.cc: could not connect to host
+kevinfoley.org: could not connect to host
+kevinmoreland.com: could not connect to host
+kevinmorssink.nl: could not connect to host
kevinroebert.de: did not receive HSTS header
kevlar.pw: did not receive HSTS header
+kewego.co.uk: could not connect to host
keymaster.lookout.com: did not receive HSTS header
keys.jp: could not connect to host
keyserver.sexy: could not connect to host
kfbrussels.be: could not connect to host
kg-rating.com: could not connect to host
kgb.us: could not connect to host
-kgregorczyk.pl: could not connect to host
kgxtech.com: max-age too low: 2592000
khaganat.net: did not receive HSTS header
+khaledgarbaya.net: did not receive HSTS header
khosla.uk: could not connect to host
ki-on.net: did not receive HSTS header
-kiaka.co: did not receive HSTS header
+kiaka.co: could not connect to host
kialo.com: did not receive HSTS header
kickass-proxies.org: could not connect to host
kickass.al: could not connect to host
@@ -7391,17 +8023,16 @@ kiel-media.de: did not receive HSTS header
kielderweather.org.uk: did not receive HSTS header
kienlen.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
kieranweightman.me: could not connect to host
+kiesuwcursus.nl: did not receive HSTS header
kievradio.com: could not connect to host
kikuzuki.org: could not connect to host
kiladera.be: did not receive HSTS header
kill-paff.com: did not receive HSTS header
-kilobyte22.de: did not receive HSTS header
kimana.pe: could not connect to host
kimberg.co.uk: did not receive HSTS header
kimberlybeautysoapcompany.com: did not receive HSTS header
kimpost.org: could not connect to host
kimscrazeecastles.co.uk: did not receive HSTS header
-kin.life: could not connect to host
kina.guide: could not connect to host
kinderbuecher-kostenlos.de: did not receive HSTS header
kinderjugendfreizeitverein.de: could not connect to host
@@ -7421,7 +8052,6 @@ kinmunity.com: could not connect to host
kinnon.enterprises: could not connect to host
kinow.com: did not receive HSTS header
kinsmenhomelottery.com: did not receive HSTS header
-kintawifi.com: could not connect to host
kintoandar.com: max-age too low: 0
kintrip.com: did not receive HSTS header
kintzingerfilm.de: did not receive HSTS header
@@ -7429,15 +8059,17 @@ kionetworks.com: did not receive HSTS header
kipin.fr: did not receive HSTS header
kipira.com: could not connect to host
kiraboshi.xyz: could not connect to host
+kirainmoe.com: did not receive HSTS header
kirara.eu: could not connect to host
kirill.ws: could not connect to host
kirkforsenate.com: could not connect to host
kirkpatrickdavis.com: could not connect to host
-kirslis.com: could not connect to host
+kirrie.pe.kr: did not receive HSTS header
kisa.io: could not connect to host
kisalt.im: could not connect to host
kiss-register.org: could not connect to host
kissart.net: could not connect to host
+kisskiss.ch: could not connect to host
kisstyle.ru: did not receive HSTS header
kisun.co.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
kita.id: did not receive HSTS header
@@ -7455,21 +8087,21 @@ kitsta.com: could not connect to host
kiwiirc.com: max-age too low: 5256000
kiyo.space: could not connect to host
kizil.net: could not connect to host
-kj1396.net: could not connect to host
+kj1396.net: did not receive HSTS header
kjaermaxi.me: did not receive HSTS header
-kjellvn.net: could not connect to host
kjg-bachrain.de: could not connect to host
kjoglum.me: could not connect to host
-kkull.tv: did not receive HSTS header
-kkzxak47.com: could not connect to host
+kkull.tv: could not connect to host
+klantenadvies.nl: did not receive HSTS header
klas.or.id: did not receive HSTS header
klatschreime.de: did not receive HSTS header
klausimas.lt: did not receive HSTS header
klauwd.com: could not connect to host
klaxn.org: could not connect to host
+klean-ritekc.com: did not receive HSTS header
kleberstoff.xyz: could not connect to host
kleertjesvoordelig.nl: could not connect to host
-kleidertauschpartys.de: did not receive HSTS header
+kleidertauschpartys.de: could not connect to host
kleinerarchitekturfuehrer.de: could not connect to host
kleinholding.com: could not connect to host
klempnershop.eu: did not receive HSTS header
@@ -7478,15 +8110,15 @@ kletterkater.com: did not receive HSTS header
klicktojob.de: could not connect to host
klingeletest.de: could not connect to host
klingsundet.no: did not receive HSTS header
-kloentrup.de: did not receive HSTS header
+kliqsd.com: could not connect to host
+kloentrup.de: max-age too low: 604800
klunkergarten.org: could not connect to host
-klva.cz: could not connect to host
-kmdev.me: could not connect to host
knapen.io: max-age too low: 604800
knccloud.com: could not connect to host
+knetterbak.nl: did not receive HSTS header
kngk-azs.ru: could not connect to host
knigadel.com: did not receive HSTS header
-knightsblog.de: could not connect to host
+knightsbridgegroup.org: could not connect to host
knightsweep.com: could not connect to host
knnet.ch: could not connect to host
knowdebt.org: did not receive HSTS header
@@ -7494,12 +8126,12 @@ knowledgesnap.com: could not connect to host
knowledgesnapsites.com: could not connect to host
knownsec.cf: could not connect to host
kobieta.guru: could not connect to host
+kobolya.hu: did not receive HSTS header
koddsson.com: did not receive HSTS header
kodexplorer.ml: could not connect to host
kodiaklabs.org: could not connect to host
kodokushi.fr: could not connect to host
koen.io: max-age too low: 86400
-koenleemans.nl: did not receive HSTS header
koenrouwhorst.nl: did not receive HSTS header
koenvdheuvel.me: could not connect to host
koerperimpuls.ch: did not receive HSTS header
@@ -7507,10 +8139,10 @@ koez-mangal.ch: could not connect to host
koezmangal.ch: could not connect to host
koik.io: could not connect to host
koirala.net: could not connect to host
-kojipkgs.fedoraproject.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
kokenmetaanbiedingen.nl: could not connect to host
kola-entertainments.de: did not receive HSTS header
kolaykaydet.com: could not connect to host
+kolbeck.tk: could not connect to host
kollawat.me: could not connect to host
kolozsvaricsuhe.hu: did not receive HSTS header
komikito.com: could not connect to host
@@ -7534,6 +8166,7 @@ korni22.org: could not connect to host
korsanparti.org: could not connect to host
kostuumstore.nl: could not connect to host
kostya.net: did not receive HSTS header
+kotomei.moe: could not connect to host
kotonehoko.net: could not connect to host
kotorimusic.ga: could not connect to host
kotovstyle.ru: could not connect to host
@@ -7541,6 +8174,7 @@ kottur.is: could not connect to host
koukni.cz: did not receive HSTS header
kourpe.online: could not connect to host
kousaku.jp: could not connect to host
+kouten-jp.com: could not connect to host
kozmik.co: could not connect to host
kpdyer.com: did not receive HSTS header
kpebetka.net: did not receive HSTS header
@@ -7564,7 +8198,7 @@ krestanskydarek.cz: [Exception... "Component returned failure code: 0x80004005 (
kreza.de: could not connect to host
kriegskindernothilfe.de: could not connect to host
kriegt.es: did not receive HSTS header
-krist.club: could not connect to host
+krist.club: did not receive HSTS header
kristjanrang.eu: did not receive HSTS header
kristofferkoch.com: could not connect to host
krizek.cc: did not receive HSTS header
@@ -7575,10 +8209,9 @@ kroodle.nl: did not receive HSTS header
krouzkyliduska.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
kruegerrand-wert.de: did not receive HSTS header
krunut.com: did not receive HSTS header
-kryha.io: could not connect to host
+kryha.io: did not receive HSTS header
krypteia.org: could not connect to host
kryptomech.com: could not connect to host
-ksero.center: could not connect to host
ksfh-mail.de: could not connect to host
ksham.net: could not connect to host
ksk-agentur.de: did not receive HSTS header
@@ -7588,8 +8221,11 @@ kswriter.com: could not connect to host
kteen.info: could not connect to host
ktube.yt: could not connect to host
ku.io: did not receive HSTS header
+kub.hr: could not connect to host
kuba.guide: could not connect to host
+kubiwa.net: could not connect to host
kubusadvocaten.nl: could not connect to host
+kuchenfeelisa.de: did not receive HSTS header
kuchenschock.de: did not receive HSTS header
kucheryavenkovn.ru: could not connect to host
kucom.it: did not receive HSTS header
@@ -7598,6 +8234,7 @@ kuehnel.org: max-age too low: 604800
kueulangtahunanak.net: could not connect to host
kuko-crews.org: could not connect to host
kultmobil.se: did not receive HSTS header
+kum.com: could not connect to host
kummerlaender.eu: did not receive HSTS header
kundenerreichen.com: did not receive HSTS header
kundenerreichen.de: did not receive HSTS header
@@ -7616,13 +8253,15 @@ kurzonline.com.br: could not connect to host
kuwago.io: could not connect to host
kvt.berlin: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
kweddingplanning.com: could not connect to host
+kwidz.fr: did not receive HSTS header
kwikmed.eu: could not connect to host
kwipi.com: did not receive HSTS header
-kwok.tv: did not receive HSTS header
+kwok.tv: could not connect to host
kwondratsch.com: could not connect to host
kxind.cn: did not receive HSTS header
kyanite.co: could not connect to host
kyberna.xyz: could not connect to host
+kydara.com: did not receive HSTS header
kykoonn.net: did not receive HSTS header
kylapps.com: could not connect to host
kyle.place: could not connect to host
@@ -7631,7 +8270,7 @@ kylerwood.com: could not connect to host
kylling.io: could not connect to host
kymo.org: did not receive HSTS header
kyochon.fr: could not connect to host
-kyoto-mic.com: could not connect to host
+kyonagashima.com: did not receive HSTS header
kyouko.nl: could not connect to host
kyujin-office.net: could not connect to host
kzjnet.com: could not connect to host
@@ -7645,7 +8284,7 @@ la-serendipite.fr: did not receive HSTS header
labaia.info: could not connect to host
labella-umbrella.com: did not receive HSTS header
labelleza.com.br: could not connect to host
-labfox.de: could not connect to host
+labfox.de: did not receive HSTS header
labiblioafronebrulepas.com: could not connect to host
labina.com.tr: did not receive HSTS header
laboiteanem.fr: could not connect to host
@@ -7657,17 +8296,17 @@ laboutiquemarocaineduconvoyeur.ma: could not connect to host
labrador-retrievers.com.au: did not receive HSTS header
labrasaq8.com: did not receive HSTS header
labs.directory: could not connect to host
-labs.moscow: did not receive HSTS header
+labs.moscow: could not connect to host
lacarpesaintaubinoise.fr: did not receive HSTS header
lacasa.fr: could not connect to host
lacasseroy.com: could not connect to host
lacaverne.nl: could not connect to host
lacentral.com: did not receive HSTS header
lacledeslan.ninja: could not connect to host
-lacocinadelila.com: did not receive HSTS header
lacuevadechauvet.com: did not receive HSTS header
+ladadate.com: could not connect to host
ladylikeit.com: could not connect to host
-ladylucks.co.uk: did not receive HSTS header
+ladylucks.co.uk: could not connect to host
laemen.com: did not receive HSTS header
laemen.nl: could not connect to host
laf.in.net: could not connect to host
@@ -7682,20 +8321,22 @@ lainchan.org: did not receive HSTS header
laisashop.com.br: could not connect to host
lajijonencadebarbera.com: could not connect to host
lakefrontlittleelm.com: did not receive HSTS header
-lakehavasuhouserentals.com: did not receive HSTS header
+lakehavasuhouserentals.com: could not connect to host
+lakewoodcomputerservices.com: could not connect to host
lakhesis.net: could not connect to host
lalajj.com: could not connect to host
laltroweb.it: did not receive HSTS header
lamaland.ru: did not receive HSTS header
lambda-complex.org: could not connect to host
lambdafive.co.uk: could not connect to host
+lamclam.site: could not connect to host
lamomebijou.paris: did not receive HSTS header
lampl.info: could not connect to host
-lamtv.com.mx: did not receive HSTS header
-lan.biz.tr: could not connect to host
+lamtv.com.mx: could not connect to host
+lan2k.org: max-age too low: 86400
lanauzedesigns.com: did not receive HSTS header
lanboll.com: could not connect to host
-lanbyte.se: could not connect to host
+lanbyte.se: did not receive HSTS header
lancehoteis.com: did not receive HSTS header
lancehoteis.com.br: did not receive HSTS header
land-links.org: did not receive HSTS header
@@ -7703,9 +8344,7 @@ landbetweenthelakes.us: did not receive HSTS header
landell.ml: could not connect to host
landgoedverkopen.nl: could not connect to host
landhuisverkopen.nl: could not connect to host
-landinfo.no: max-age too low: 300
landscape.canonical.com: max-age too low: 2592000
-landscapelightingthousandoaks.com: could not connect to host
landscapingmedic.com: did not receive HSTS header
langenbach.rocks: could not connect to host
langendorf-ernaehrung-training.de: could not connect to host
@@ -7714,7 +8353,7 @@ langhun.me: could not connect to host
laniakean.com: did not receive HSTS header
lanonfire.com: could not connect to host
lansinoh.co.uk: did not receive HSTS header
-lanzainc.xyz: did not receive HSTS header
+lanzainc.xyz: could not connect to host
laobox.fr: could not connect to host
laohei.org: could not connect to host
laospage.com: did not receive HSTS header
@@ -7722,12 +8361,15 @@ laplaceduvillage.net: could not connect to host
laquack.com: could not connect to host
lared.ovh: did not receive HSTS header
laredsemanario.com: could not connect to host
+larsgujord.no: did not receive HSTS header
+larsmerke.de: did not receive HSTS header
lasepiataca.com: did not receive HSTS header
lasercloud.ml: could not connect to host
lashstuff.com: did not receive HSTS header
lasnaves.com: did not receive HSTS header
-lasst-uns-beten.de: did not receive HSTS header
+lasst-uns-beten.de: could not connect to host
latable-bowling-vire.fr: did not receive HSTS header
+latabledebry.be: could not connect to host
latamarissiere.eu: could not connect to host
lateliercantaldeco.fr: could not connect to host
latelierdekathy.com: could not connect to host
@@ -7736,8 +8378,10 @@ latg.com: max-age too low: 300
lathamlabs.com: could not connect to host
lathamlabs.net: could not connect to host
lathamlabs.org: could not connect to host
+lathen-wahn.de: did not receive HSTS header
latinred.com: could not connect to host
latitude42technology.com: did not receive HSTS header
+latour-managedcare.ch: could not connect to host
latus.xyz: could not connect to host
laufcampus.com: did not receive HSTS header
laufseminare-laufreisen.com: did not receive HSTS header
@@ -7755,7 +8399,7 @@ lawly.org: could not connect to host
laxatus.com: could not connect to host
laxiongames.es: did not receive HSTS header
layer8.tk: could not connect to host
-laymans911.info: could not connect to host
+lazapateriahandmade.pe: did not receive HSTS header
lazerus.net: could not connect to host
lazulu.com: could not connect to host
lazytux.de: did not receive HSTS header
@@ -7764,13 +8408,12 @@ lbrlh.tk: could not connect to host
lbrli.tk: could not connect to host
lbrls.tk: could not connect to host
lbrt.xyz: could not connect to host
-lcbizsolutions.com: did not receive HSTS header
-lcgaj.com: could not connect to host
lclarkpdx.com: could not connect to host
lcti.biz: could not connect to host
ldarby.me.uk: could not connect to host
leadbook.ru: max-age too low: 604800
leadership9.com: could not connect to host
+leadgenie.me: could not connect to host
leakedminecraft.net: could not connect to host
leakreporter.net: could not connect to host
leaks.directory: could not connect to host
@@ -7789,6 +8432,8 @@ led-tl-wereld.nl: did not receive HSTS header
leddruckalarm.de: did not receive HSTS header
ledgerscope.net: could not connect to host
ledhouse.sk: did not receive HSTS header
+ledlampor365.se: could not connect to host
+ledshop.mx: did not receive HSTS header
leebiblestudycentre.net: could not connect to host
leebiblestudycentre.org: could not connect to host
leefindlow.com: could not connect to host
@@ -7807,15 +8452,18 @@ legendary.camera: did not receive HSTS header
legitaxi.com: did not receive HSTS header
legymnase.eu: did not receive HSTS header
lehtinen.xyz: could not connect to host
-leifdreizler.com: could not connect to host
leighneithardt.com: could not connect to host
+leilautourdumon.de: did not receive HSTS header
leinir.dk: did not receive HSTS header
leitner.com.au: did not receive HSTS header
+lelehei.com: could not connect to host
lellyboi.ml: could not connect to host
lelongbank.com: did not receive HSTS header
lelubre.info: did not receive HSTS header
lemon.co: could not connect to host
lemonrockbiketours.com: did not receive HSTS header
+lemonthy.ca: could not connect to host
+lemonthy.com: could not connect to host
lemp.io: did not receive HSTS header
lenders.direct: could not connect to host
lengyelnyelvoktatas.hu: could not connect to host
@@ -7823,7 +8471,7 @@ lengyelul.hu: could not connect to host
lenkunz.me: could not connect to host
lenn1.de: did not receive HSTS header
lennarth.com: could not connect to host
-lennartheinrich.de: could not connect to host
+lennartheinrich.de: did not receive HSTS header
lennier.info: could not connect to host
lennyfaces.net: did not receive HSTS header
lenovogaming.com: could not connect to host
@@ -7832,6 +8480,7 @@ lenzw.de: did not receive HSTS header
leob.in: could not connect to host
leon-jaekel.com: could not connect to host
leonardcamacho.me: could not connect to host
+leonhooijer.nl: could not connect to host
leonmahler.consulting: did not receive HSTS header
leopold.email: could not connect to host
leopoldina.net: did not receive HSTS header
@@ -7839,11 +8488,13 @@ leopotamgroup.com: could not connect to host
leovanna.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
lepiquillo.fr: did not receive HSTS header
lepont.pl: could not connect to host
-lerasenglish.com: could not connect to host
+lerasenglish.com: max-age too low: 0
lerlivros.online: could not connect to host
-lerner.moscow: did not receive HSTS header
+lerner.moscow: could not connect to host
les-corsaires.net: could not connect to host
les-voitures-electriques.com: max-age too low: 2592000
+lesbiansslaves.com: could not connect to host
+lesbofight.com: could not connect to host
lescomptoirsdepierrot.com: could not connect to host
lesdouceursdeliyana.com: could not connect to host
lesecuadors.com: did not receive HSTS header
@@ -7853,7 +8504,10 @@ lesliekearney.com: did not receive HSTS header
lesperlesdunet.fr: could not connect to host
lesquatredauphins.fr: did not receive HSTS header
lesquerda.cat: did not receive HSTS header
+lessing.consulting: did not receive HSTS header
+letempsdunefleur.be: could not connect to host
leter.io: did not receive HSTS header
+lethbridgecoffee.com: did not receive HSTS header
letitfly.me: could not connect to host
letraba.com: could not connect to host
letras.mus.br: did not receive HSTS header
@@ -7880,13 +8534,14 @@ lezdomsm.com: could not connect to host
lfaz.org: could not connect to host
lfullerdesign.com: could not connect to host
lg21.co: could not connect to host
+lgbtqventures.com: could not connect to host
lgiswa.com.au: did not receive HSTS header
lgrs.com.au: did not receive HSTS header
lgsg.us: could not connect to host
lgts.se: could not connect to host
-lhalbert.xyz: could not connect to host
lhasaapso.com.br: could not connect to host
-lheinrich.com: did not receive HSTS header
+lheinrich.com: could not connect to host
+lheinrich.de: did not receive HSTS header
lheinrich.org: could not connect to host
lhsj28.com: could not connect to host
lhsj68.com: could not connect to host
@@ -7895,6 +8550,8 @@ liaillustr.at: did not receive HSTS header
liam-is-a-nig.ga: could not connect to host
liam-w.com: could not connect to host
liamjack.fr: could not connect to host
+liangbp.com: could not connect to host
+lianwen.kim: could not connect to host
lianye.in: could not connect to host
lianyexiuchang.in: could not connect to host
liaoshuma.com: could not connect to host
@@ -7904,7 +8561,7 @@ libanco.com: could not connect to host
libdeer.so: could not connect to host
libertas-tech.com: could not connect to host
libertins.date: did not receive HSTS header
-libertyrp.org: did not receive HSTS header
+libertyrp.org: could not connect to host
libfte.org: did not receive HSTS header
librairie-asie.com: did not receive HSTS header
library.linode.com: did not receive HSTS header
@@ -7912,25 +8569,28 @@ librechan.net: could not connect to host
libricks.fr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
librisulibri.it: did not receive HSTS header
licence-registry.com: could not connect to host
+liceo.cn: did not receive HSTS header
liceserv.com: could not connect to host
lichess4545.com: did not receive HSTS header
lichess4545.tv: did not receive HSTS header
+lickmypussy.us: could not connect to host
lidl-selection.at: did not receive HSTS header
liduan.com: could not connect to host
-liduan.net: could not connect to host
liebach.me: did not receive HSTS header
liebestarot.at: did not receive HSTS header
lied8.eu: could not connect to host
-liehuojun.com: could not connect to host
+liehuojun.com: did not receive HSTS header
liemen.net: did not receive HSTS header
lietaer.eu: did not receive HSTS header
life-time.nl: did not receive HSTS header
-lifecoachproviders.com: did not receive HSTS header
+lifecoach.tw: did not receive HSTS header
+lifecoachproviders.com: could not connect to host
lifeguard.aecom.com: did not receive HSTS header
lifeinitsownway.com: could not connect to host
-lifeinsurances.pro: could not connect to host
-lifeinsurances24.com: could not connect to host
+lifeinsurances.pro: did not receive HSTS header
+lifeinsurances24.com: did not receive HSTS header
lifemarque.co.uk: did not receive HSTS header
+lifenexto.com: could not connect to host
lifeng.us: did not receive HSTS header
lifeskillsdirect.com: did not receive HSTS header
lifestyler.me: could not connect to host
@@ -7942,7 +8602,6 @@ lightning-ashe.com: did not receive HSTS header
lightnovelsekai.com: could not connect to host
lightpaste.com: could not connect to host
lighttherapydevice.com: did not receive HSTS header
-lighttp.com: could not connect to host
lightworx.io: did not receive HSTS header
lignemalin.com: could not connect to host
lignemax.com: did not receive HSTS header
@@ -7951,26 +8610,29 @@ like.lgbt: could not connect to host
likenosis.com: could not connect to host
lila.pink: did not receive HSTS header
lilapmedia.com: could not connect to host
+liliang13.com: could not connect to host
lilismartinis.com: could not connect to host
-lillpopp.eu: did not receive HSTS header
+lillpopp.eu: max-age too low: 10
lilpwny.com: could not connect to host
lilycms.com: could not connect to host
lilygreen.co.za: did not receive HSTS header
limalama.eu: max-age too low: 1
limeyeti.com: could not connect to host
-limiteddata.co.uk: did not receive HSTS header
+limiteddata.co.uk: could not connect to host
+limitget.com: could not connect to host
limodo-shop.de: did not receive HSTS header
limpens.net: did not receive HSTS header
limpido.it: could not connect to host
+lincsbouncycastlehire.co.uk: did not receive HSTS header
lindberg.io: did not receive HSTS header
-lindholmen.club: could not connect to host
lineauniformes.com.br: could not connect to host
linext.cn: could not connect to host
lingerie.net.br: did not receive HSTS header
lingerielovers.com.br: did not receive HSTS header
-lingerieonline.com.br: did not receive HSTS header
+lingerieonline.com.br: could not connect to host
lingolia.com: did not receive HSTS header
lingros-test.tk: could not connect to host
+lingting.vip: could not connect to host
linguaquote.com: did not receive HSTS header
linguatrip.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
linhaoyi.com: could not connect to host
@@ -7984,6 +8646,7 @@ linley.de: could not connect to host
linmi.cc: did not receive HSTS header
linno.me: could not connect to host
linorman1997.me: could not connect to host
+linostassi.net: could not connect to host
linpx.com: could not connect to host
linux-admin-california.com: could not connect to host
linux-mint.cz: could not connect to host
@@ -7997,9 +8660,10 @@ linuxgeek.ro: could not connect to host
linuxmint.cz: could not connect to host
linuxmonitoring.net: could not connect to host
linvx.org: did not receive HSTS header
-lipo.lol: could not connect to host
+linxmind.eu: could not connect to host
liquid.solutions: did not receive HSTS header
liquidcomm.net: could not connect to host
+liquimoly.market: did not receive HSTS header
liquorsanthe.in: could not connect to host
lisaco.de: could not connect to host
lisbongold.com: did not receive HSTS header
@@ -8011,29 +8675,34 @@ listage.ovh: did not receive HSTS header
lists.mayfirst.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
litcc.com: could not connect to host
litcomphonors.com: could not connect to host
+literarymachin.es: could not connect to host
litespeed.io: could not connect to host
litevault.net: did not receive HSTS header
little.pw: could not connect to host
littledisney.ro: did not receive HSTS header
littlefreelibrary.org: did not receive HSTS header
littlelife.co.uk: did not receive HSTS header
-littleqiu.net: could not connect to host
+littleservice.cn: could not connect to host
liud.im: could not connect to host
liujunyang.com: did not receive HSTS header
liukang.tech: could not connect to host
-liul.in: could not connect to host
liushuyu.tk: could not connect to host
liv3ly.com: did not receive HSTS header
livechatlady.info: did not receive HSTS header
livedemo.io: could not connect to host
livej.am: could not connect to host
+livejasmin.dk: could not connect to host
liverewrite.com: could not connect to host
+livesearch-fukuoka.com: did not receive HSTS header
+livi.co: could not connect to host
liviababynet.com.br: could not connect to host
livinghealthywithchocolate.com: did not receive HSTS header
livrariahugodesaovitor.com.br: could not connect to host
lixiang.one: could not connect to host
+lixiaojiang.ga: could not connect to host
lixingcong.com: could not connect to host
liyang.pro: did not receive HSTS header
+lizzythepooch.com: did not receive HSTS header
lkiserver.com: could not connect to host
llamasweet.tech: could not connect to host
lll.st: could not connect to host
@@ -8044,6 +8713,7 @@ ln.io: could not connect to host
lnbeauty.ru: max-age too low: 0
lnoldan.com: could not connect to host
loacg.com: did not receive HSTS header
+loadingdeck.com: did not receive HSTS header
loadso.me: could not connect to host
loafbox.com: could not connect to host
loanmatch.sg: could not connect to host
@@ -8055,8 +8725,10 @@ lobosdomain.no-ip.info: could not connect to host
lobste.rs: did not receive HSTS header
locais.org: could not connect to host
localchum.com: could not connect to host
+localdata.us: did not receive HSTS header
localdrive.me: could not connect to host
localnetwork.nz: could not connect to host
+location-fichier-email.com: could not connect to host
locationvoitureautriche.com: could not connect to host
locationvoiturefinlande.com: could not connect to host
locationvoitureirlande.com: could not connect to host
@@ -8069,7 +8741,7 @@ locker3.com: could not connect to host
locksmithrandburg24-7.co.za: could not connect to host
locksport.org.nz: could not connect to host
locktheirphone.com: could not connect to host
-lockyourcomputer.pw: did not receive HSTS header
+lockyourcomputer.pw: could not connect to host
locomotive.ca: did not receive HSTS header
locomotive.net.br: could not connect to host
locvis.ru: did not receive HSTS header
@@ -8080,7 +8752,6 @@ loftboard.eu: could not connect to host
log2n.uk: could not connect to host
logario.com.br: could not connect to host
logcat.info: could not connect to host
-logfile.at: did not receive HSTS header
logfile.ch: did not receive HSTS header
logic8.ml: could not connect to host
logicaladvertising.com: could not connect to host
@@ -8098,30 +8769,32 @@ lognot.net: could not connect to host
logymedia.com: could not connect to host
loisircreatif.net: did not receive HSTS header
lojadocristaozinho.com.br: did not receive HSTS header
+lojadoprazer.com.br: could not connect to host
+lojahunamarcenaria.com.br: could not connect to host
lojashowdecozinha.com.br: could not connect to host
lojasviavento.com.br: could not connect to host
lojavalcapelli.com.br: could not connect to host
-lolhax.org: could not connect to host
loli.bz: did not receive HSTS header
loli.vip: could not connect to host
lolicon.info: could not connect to host
lolicore.ch: could not connect to host
lolidunno.com: could not connect to host
+lolis.stream: could not connect to host
lollaconcept.com.br: could not connect to host
lonbali.com: did not receive HSTS header
londoncalling.co: did not receive HSTS header
londonlanguageexchange.com: could not connect to host
+londonseedcentre.co.uk: could not connect to host
lonerwolf.com: did not receive HSTS header
longboarding-ulm.de: could not connect to host
look-at-my.site: could not connect to host
lookout.com: did not receive HSTS header
looktothestars.org: did not receive HSTS header
lookupclose.com: did not receive HSTS header
-lookyman.net: could not connect to host
looneymooney.com: could not connect to host
loongsg.xyz: could not connect to host
-loopstart.org: could not connect to host
loperetti.ch: could not connect to host
+loposchokk.com: could not connect to host
loqyu.co: could not connect to host
lordgun.com: could not connect to host
lordjevington.co.uk: did not receive HSTS header
@@ -8132,9 +8805,9 @@ lostarq.com: could not connect to host
lostg.com: did not receive HSTS header
lostinsecurity.com: could not connect to host
lostinweb.eu: could not connect to host
+loteks.de: did not receive HSTS header
lothai.re: did not receive HSTS header
lothuytinhsi.com: could not connect to host
-lotl.ru: could not connect to host
lotos-ag.ch: did not receive HSTS header
lotsencafe.de: did not receive HSTS header
lottosonline.com: did not receive HSTS header
@@ -8156,6 +8829,7 @@ lovelycorral.com: did not receive HSTS header
lovelyfriends.org: did not receive HSTS header
lovemen.cc: did not receive HSTS header
lovemysafetynet.com: did not receive HSTS header
+loveread-ec.appspot.com: did not receive HSTS header
loveto.at: could not connect to host
lovingpenguin.com: did not receive HSTS header
lowhangingfruitgrabber.com: could not connect to host
@@ -8164,10 +8838,12 @@ lowtherpavilion.co.uk: did not receive HSTS header
loxis.be: did not receive HSTS header
loyaleco.it: could not connect to host
loyaltech.ch: could not connect to host
+lpacademy.com.br: could not connect to host
lpak.nl: could not connect to host
lpgram.ga: could not connect to host
-lpm-uk.com: could not connect to host
+lpm-uk.com: did not receive HSTS header
lrhsclubs.com: could not connect to host
+lrhstsa.com: could not connect to host
ls-a.org: did not receive HSTS header
ls-reallife.de: did not receive HSTS header
ls-rp.es: did not receive HSTS header
@@ -8176,52 +8852,54 @@ lsp-sports.de: did not receive HSTS header
lstma.com: could not connect to host
lsvih.com: did not receive HSTS header
lswim.com: did not receive HSTS header
-lsys.ac: could not connect to host
lszj.com: could not connect to host
ltba.org: could not connect to host
ltbytes.com: could not connect to host
ltechnologygroup.com: did not receive HSTS header
ltransferts.com: could not connect to host
ltu.social: could not connect to host
+luan.ma: did not receive HSTS header
lubot.net: could not connect to host
lucas-garte.com: did not receive HSTS header
+lucasantarella.com: could not connect to host
+lucascantor.com: did not receive HSTS header
lucascodes.com: could not connect to host
lucasgaland.com: could not connect to host
+lucassoler.com.ar: could not connect to host
lucaterzini.com: could not connect to host
luchscheider.de: could not connect to host
lucidlogs.com: could not connect to host
+luckydog.pw: could not connect to host
+luckystarfishing.com: did not receive HSTS header
luclu7.pw: could not connect to host
-lucysan.net: could not connect to host
ludwig.click: did not receive HSTS header
-ludwigpro.net: could not connect to host
lufthansaexperts.com: max-age too low: 2592000
luis-checa.com: could not connect to host
-luisgf.es: could not connect to host
luisv.me: could not connect to host
luk.photo: could not connect to host
lukasunger.cz: could not connect to host
lukasunger.net: could not connect to host
lukaszdolan.com: did not receive HSTS header
-lukasztkacz.com: did not receive HSTS header
+lukasztkacz.com: could not connect to host
+lukem.eu: could not connect to host
lukeng.me: could not connect to host
lukonet.com: did not receive HSTS header
luludapomerania.com: could not connect to host
luma.family: could not connect to host
luma.pink: could not connect to host
lumd.me: could not connect to host
-lumer.tech: could not connect to host
lumi.do: did not receive HSTS header
luminancy.com: could not connect to host
-lunapatch.com: did not receive HSTS header
+lunapatch.com: max-age too low: 7889238
lunarift.com: could not connect to host
lunarrift.net: could not connect to host
-lunchbunch.me: could not connect to host
+lunarsoft.net: did not receive HSTS header
luneta.nearbuysystems.com: could not connect to host
lunight.ml: could not connect to host
luno.io: could not connect to host
luody.info: could not connect to host
luoe.ml: could not connect to host
-luolikong.vip: could not connect to host
+luolikong.vip: did not receive HSTS header
luom.net: could not connect to host
luoxiao.im: could not connect to host
luoxingyu.ml: could not connect to host
@@ -8230,14 +8908,11 @@ lusis.fr: did not receive HSTS header
lusis.net: could not connect to host
lustrumxi.nl: could not connect to host
luther.fi: could not connect to host
-luxcraft.eng.br: could not connect to host
luxe-it.co.uk: could not connect to host
luxinmo.com: did not receive HSTS header
-luxonetwork.com: did not receive HSTS header
-luxus-russen.de: did not receive HSTS header
+luxonetwork.com: could not connect to host
+luxus-russen.de: could not connect to host
luzeshomologadas.com.br: could not connect to host
-lv5.top: could not connect to host
-lwl.moe: could not connect to host
lycly.top: could not connect to host
lydia-und-simon.de: could not connect to host
lydiagorstein.com: could not connect to host
@@ -8247,15 +8922,15 @@ lyonl.com: did not receive HSTS header
lyscnd.com: could not connect to host
lysergion.com: could not connect to host
lyuba.fr: could not connect to host
-lyukaacom.ru: could not connect to host
+lz.sb: could not connect to host
lzahq.tech: did not receive HSTS header
-lzh.one: could not connect to host
lzkill.com: did not receive HSTS header
lzqii.cn: could not connect to host
lzzr.me: did not receive HSTS header
m-ali.xyz: did not receive HSTS header
m-generator.com: could not connect to host
m-rickroll-v.pw: could not connect to host
+m-warrior.tk: could not connect to host
m.gparent.org: could not connect to host
m.nu: did not receive HSTS header
m0wef.uk: could not connect to host
@@ -8268,9 +8943,10 @@ ma-musique.fr: could not connect to host
maarten.nyc: could not connect to host
maartenprovo.be: did not receive HSTS header
maartenterpstra.xyz: could not connect to host
+mabulledu.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
mac-torrents.me: did not receive HSTS header
-mac.biz.tr: could not connect to host
-macandtonic.com: could not connect to host
+mac-world.pl: did not receive HSTS header
+macandtonic.com: did not receive HSTS header
macbolo.com: could not connect to host
macchaberrycream.com: could not connect to host
macchedil.com: did not receive HSTS header
@@ -8278,14 +8954,18 @@ macdj.tk: could not connect to host
macedopesca.com.br: did not receive HSTS header
macgeneral.de: did not receive HSTS header
mach1club.com: did not receive HSTS header
+machinelearningjavascript.com: could not connect to host
mack.space: could not connect to host
-macleodnc.com: could not connect to host
+macleodnc.com: did not receive HSTS header
macsandcheesedreams.com: could not connect to host
+macstore.pe: did not receive HSTS header
macustar.eu: did not receive HSTS header
+madandpissedoff.com: could not connect to host
madcatdesign.de: did not receive HSTS header
maddin.ga: could not connect to host
madebyfalcon.co.uk: did not receive HSTS header
madebymagnitude.com: did not receive HSTS header
+madeglobal.com: could not connect to host
madeinorder.com: did not receive HSTS header
madeintucson.org: could not connect to host
mademoiselle-emma.be: could not connect to host
@@ -8293,6 +8973,8 @@ mademoiselle-emma.fr: could not connect to host
maderwin.com: did not receive HSTS header
madesoftware.com.br: could not connect to host
madnetwork.org: could not connect to host
+madokami.net: could not connect to host
+madpeople.net: max-age too low: 2592000
madrants.net: could not connect to host
madweb.design: did not receive HSTS header
mafamane.com: could not connect to host
@@ -8302,14 +8984,14 @@ magebankin.com: did not receive HSTS header
magenx.com: did not receive HSTS header
magia360.com: did not receive HSTS header
magicball.co: could not connect to host
+magieblanche.fr: did not receive HSTS header
magnacumlaude.co: could not connect to host
magneticanvil.com: did not receive HSTS header
magyarokegyhelyen.hu: did not receive HSTS header
mahamed91.pw: could not connect to host
mahansexcavating.com: did not receive HSTS header
mahfouzadedimeji.com: did not receive HSTS header
-mahraartisan.com: max-age too low: 7889238
-maidofhonorcleaning.net: max-age too low: 200
+mahraartisan.com: could not connect to host
maik-mahlow.de: could not connect to host
mail-settings.google.com: did not receive HSTS header (error ignored - included regardless)
mail.google.com: did not receive HSTS header (error ignored - included regardless)
@@ -8326,17 +9008,19 @@ main-unit.com: could not connect to host
maintainerheaven.ch: could not connect to host
maisalto.ind.br: could not connect to host
maitriser-son-stress.com: could not connect to host
+majkl.xyz: could not connect to host
+majkl578.cz: could not connect to host
majncloud.tk: could not connect to host
make-pizza.info: could not connect to host
makedonien.guide: could not connect to host
makeit-so.de: could not connect to host
makeitdynamic.com: could not connect to host
+makemejob.com: could not connect to host
makemyvape.co.uk: max-age too low: 7889238
makerstuff.net: did not receive HSTS header
makeshiftco.de: did not receive HSTS header
makeuplove.nl: could not connect to host
-makeyourank.com: max-age too low: 200
-makino.games: could not connect to host
+makeyourlaws.org: could not connect to host
malamutedoalasca.com.br: could not connect to host
maldiverna.guide: could not connect to host
maleexcel.com: did not receive HSTS header
@@ -8345,16 +9029,19 @@ malerversand.de: did not receive HSTS header
malesbdsm.com: could not connect to host
malfait.nl: could not connect to host
malgraph.net: could not connect to host
-malibubeachrecoverycenter.com: did not receive HSTS header
+malibubeachrecoverycenter.com: could not connect to host
maljaars-media.nl: could not connect to host
+malkaso.com.ua: could not connect to host
+mallner.me: could not connect to host
malmstroms-co.se: could not connect to host
malone.link: could not connect to host
maltes.website: could not connect to host
malvy.kiev.ua: could not connect to host
-malwaretips.com: did not receive HSTS header
malwre.io: could not connect to host
+maly.io: did not receive HSTS header
malya.fr: could not connect to host
mamacobaby.com: could not connect to host
+mamadoma.com.ua: could not connect to host
mamaison.io: could not connect to host
mamastore.eu: could not connect to host
mamaxi.org: did not receive HSTS header
@@ -8363,25 +9050,27 @@ mammothmail.net: could not connect to host
mammothmail.org: could not connect to host
mammut.space: could not connect to host
mamochka.org.ua: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+mamout.xyz: could not connect to host
+manaboutahor.se: could not connect to host
manage.zenpayroll.com: did not receive HSTS header
manage4all.com: could not connect to host
manageall.de: could not connect to host
managed-varnish.de: did not receive HSTS header
manageforall.com: could not connect to host
manageforall.de: could not connect to host
+management-ethics.com: did not receive HSTS header
managemynetsuite.com: did not receive HSTS header
-manalu.cz: did not receive HSTS header
+manalu.cz: could not connect to host
manantial.mx: could not connect to host
manav-it.de: could not connect to host
mandala-ausmalbilder.de: did not receive HSTS header
mandm.servebeer.com: could not connect to host
mandpress.com: did not receive HSTS header
-mangazuki.co: did not receive HSTS header
+mangazuki.co: could not connect to host
maniadeprazer.com.br: could not connect to host
manifestbin.com: did not receive HSTS header
manipulatedtme.com: could not connect to host
manitasicily.com: did not receive HSTS header
-manneguiden.no: did not receive HSTS header
mannford.com: could not connect to host
manningbrothers.com: did not receive HSTS header
manns-solutions.com: did not receive HSTS header
@@ -8394,9 +9083,10 @@ manshop24.com: could not connect to host
mansion-note.com: did not receive HSTS header
manududu.com.br: could not connect to host
manuelrueger.de: could not connect to host
+manufacturing.gov: could not connect to host
+manutrol.com.br: did not receive HSTS header
maomaofuli.vip: could not connect to host
maosi.xin: could not connect to host
-mapasmundi.com.br: could not connect to host
maple5.com: did not receive HSTS header
maplenorth.co: did not receive HSTS header
mapresidentielle.fr: did not receive HSTS header
@@ -8406,10 +9096,11 @@ marcberman.co: could not connect to host
marcbuehlmann.com: did not receive HSTS header
marcelmarnitz.com: could not connect to host
marcelparra.com: could not connect to host
-marcelsiegert.com: could not connect to host
+marcelwiedemeier.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
marchagen.nl: did not receive HSTS header
marche-nordic-jorat.ch: could not connect to host
marchhappy.tech: did not receive HSTS header
+marco-kretz.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
marco01809.net: could not connect to host
marcoececilia.it: did not receive HSTS header
marcofinke.de: could not connect to host
@@ -8419,9 +9110,12 @@ marcosteixeira.tk: could not connect to host
marcschlagenhauf.de: could not connect to host
marcus-scheffler.com: did not receive HSTS header
marcush.de: could not connect to host
+marcusserver.synology.me: did not receive HSTS header
mardelcupon.com: could not connect to host
mare92.cz: could not connect to host
+mareklecian.cz: did not receive HSTS header
margaretrosefashions.co.uk: could not connect to host
+mariacristinadoces.com.br: did not receive HSTS header
mariannematthew.com: could not connect to host
marianwehlus.de: did not receive HSTS header
marie-curie.fr: could not connect to host
@@ -8429,18 +9123,18 @@ marie-elisabeth.dk: did not receive HSTS header
marie-en-provence.com: did not receive HSTS header
marie.club: could not connect to host
marienschule-sundern.de: did not receive HSTS header
-marinela.com.mx: max-age too low: 86400
-marinelausa.com: max-age too low: 86400
+marin-dom.ru: could not connect to host
mariusschulte.de: did not receive HSTS header
mark-a-hydrant.com: did not receive HSTS header
mark-armstrong-gaming.com: could not connect to host
markayapilandirma.com: could not connect to host
markcp.me: could not connect to host
market.android.com: did not receive HSTS header (error ignored - included regardless)
-marketgot.com: could not connect to host
+marketgot.com: did not receive HSTS header
marketing-advertising.eu: could not connect to host
marketingdesignu.cz: could not connect to host
marketingromania.ro: did not receive HSTS header
+marklauman.ca: could not connect to host
markllego.com: could not connect to host
marko-fenster24.de: did not receive HSTS header
markorszulak.com: did not receive HSTS header
@@ -8450,13 +9144,18 @@ markrobin.de: did not receive HSTS header
marksill.com: could not connect to host
marktboten.de: did not receive HSTS header
markusabraham.com: did not receive HSTS header
+markusueberallassetmanagement.de: could not connect to host
+markusueberallconsulting.de: could not connect to host
markusweimar.de: did not receive HSTS header
marlen.cz: did not receive HSTS header
marleyresort.com: did not receive HSTS header
+marqperso.ch: could not connect to host
+marquepersonnelle.ch: could not connect to host
marriottvetcareers.com: could not connect to host
marshut.net: could not connect to host
martialc.be: could not connect to host
martiert.com: could not connect to host
+martijnvanderzande.nl: did not receive HSTS header
martijnvhoof.nl: could not connect to host
martin-arend.de: did not receive HSTS header
martin-mattel.com: could not connect to host
@@ -8465,22 +9164,22 @@ martinestyle.com: could not connect to host
martineve.com: did not receive HSTS header
martinkup.cz: did not receive HSTS header
martinp.no: could not connect to host
-martinreed.net: did not receive HSTS header
martinrogalla.com: did not receive HSTS header
martins.im: could not connect to host
-martynhare.co.uk: could not connect to host
-martynhare.uk: could not connect to host
marumagic.com: did not receive HSTS header
-marvinkeller.de: did not receive HSTS header
+marvinkeller.de: could not connect to host
marxist.party: could not connect to host
marykshoup.com: could not connect to host
masa-yoga.com: did not receive HSTS header
masa.li: could not connect to host
+masaze-hanka.cz: could not connect to host
+mashandco.it: could not connect to host
mashek.net: could not connect to host
mashnew.com: could not connect to host
masjidtawheed.net: did not receive HSTS header
maskinkultur.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
maskt.pw: could not connect to host
+massagelimaperu.com: did not receive HSTS header
massivum.de: did not receive HSTS header
massot.eu: did not receive HSTS header
mastd.fr: could not connect to host
@@ -8489,6 +9188,7 @@ masteragenasia.com: did not receive HSTS header
masterapi.ninja: did not receive HSTS header
masterhaus.bg: did not receive HSTS header
masteringtheterminal.com: did not receive HSTS header
+mastersthesiswriting.com: could not connect to host
mastichor.info: could not connect to host
mastimtibetano.com: could not connect to host
masto.io: could not connect to host
@@ -8501,12 +9201,13 @@ mastodon.expert: could not connect to host
mastodon.fun: could not connect to host
mastodon.my: could not connect to host
mastodon.org.uk: did not receive HSTS header
-mastodon.pl: could not connect to host
+mastodon.pl: did not receive HSTS header
+mastodon.top: did not receive HSTS header
mastodones.club: could not connect to host
masty.nl: could not connect to host
masumreza.tk: could not connect to host
mat99.dk: could not connect to host
-matarrosabierzo.com: did not receive HSTS header
+matarrosabierzo.com: could not connect to host
matatall.com: did not receive HSTS header
maternalsafety.org: did not receive HSTS header
mateusmeyer.com.br: could not connect to host
@@ -8533,11 +9234,10 @@ matthewprenger.com: could not connect to host
matthewtester.com: did not receive HSTS header
matthiassteen.be: could not connect to host
matthiasweiler.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-mattisam.com: could not connect to host
+mattisam.com: did not receive HSTS header
mattressinsider.com: max-age too low: 3153600
-mattwb65.com: did not receive HSTS header
+mattwb65.com: could not connect to host
matty.digital: did not receive HSTS header
-matway.net: could not connect to host
matze.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
maultrom.ml: could not connect to host
maupiknik.com: did not receive HSTS header
@@ -8546,18 +9246,20 @@ maurus-automation.de: did not receive HSTS header
mausi.co: did not receive HSTS header
mavisang.cf: could not connect to host
mawe.red: could not connect to host
+maxhoechtl.at: could not connect to host
maxhorvath.com: could not connect to host
maxibanki.ovh: could not connect to host
+maxicore.co.za: could not connect to host
maxima.at: did not receive HSTS header
maximelouet.me: did not receive HSTS header
maximov.space: did not receive HSTS header
maxkeller.io: did not receive HSTS header
maxmachine.ind.br: could not connect to host
-maxr1998.de: could not connect to host
maxserver.com: did not receive HSTS header
maya.mg: could not connect to host
maybeul.com: could not connect to host
maynardnetworks.com: could not connect to host
+mayoristassexshop.com: did not receive HSTS header
mazurlabs.tk: could not connect to host
mazyun.com: did not receive HSTS header
mazz-tech.com: could not connect to host
@@ -8578,6 +9280,7 @@ mcdanieldevelopmentservices.com: could not connect to host
mcdonalds.ru: did not receive HSTS header
mcga.media: could not connect to host
mcgavocknissanwichitaparts.com: could not connect to host
+mchan.us: did not receive HSTS header
mchopkins.net: could not connect to host
mcideas.tk: could not connect to host
mcjackk77.com: could not connect to host
@@ -8588,19 +9291,22 @@ mclist.it: could not connect to host
mcmillansedationdentistry.com: did not receive HSTS header
mcnoobs.pro: could not connect to host
mcooperlaw.com: did not receive HSTS header
+mcpart.land: could not connect to host
+mcqyy.com: could not connect to host
mcsa-usa.org: could not connect to host
-mcsniper.co: could not connect to host
mcsnovatamabayan.com: could not connect to host
+mctherealm.net: could not connect to host
mcuexchange.com: did not receive HSTS header
mcuong.tk: could not connect to host
md-student.com: did not receive HSTS header
mdfnet.se: did not receive HSTS header
-mdkr.nl: did not receive HSTS header
mdscomp.net: did not receive HSTS header
mdwftw.com: could not connect to host
-me-dc.com: could not connect to host
+me-dc.com: did not receive HSTS header
meadowfenfarm.com: could not connect to host
+meadowviewfarms.org: could not connect to host
mealz.com: did not receive HSTS header
+meanevo.com: could not connect to host
measuretwice.com: did not receive HSTS header
meat-education.com: could not connect to host
meathealth.com: could not connect to host
@@ -8610,6 +9316,7 @@ mecenat-cassous.com: did not receive HSTS header
mechok.ru: could not connect to host
medallia.io: could not connect to host
media-access.online: did not receive HSTS header
+media-courses.com: could not connect to host
mediacru.sh: could not connect to host
mediadandy.com: could not connect to host
mediafinancelab.org: could not connect to host
@@ -8623,9 +9330,10 @@ medirich.co: could not connect to host
meditek-dv.ru: could not connect to host
mediter-simplement.com: did not receive HSTS header
mediterenopmaandag.nl: did not receive HSTS header
+mediumraw.org: did not receive HSTS header
mediweed.tk: could not connect to host
medm-test.com: could not connect to host
-medmarkt24.com: did not receive HSTS header
+medpot.net: did not receive HSTS header
medstreaming.com: did not receive HSTS header
medy-me.com: could not connect to host
medzinenews.com: did not receive HSTS header
@@ -8633,12 +9341,11 @@ meedoenzaanstad.nl: did not receive HSTS header
meetfinch.com: could not connect to host
meetmibaby.co.uk: could not connect to host
meetscompany.jp: did not receive HSTS header
-mega-aukcion.ru: could not connect to host
megadrol.com: could not connect to host
megakiste.de: could not connect to host
megam.host: could not connect to host
megashur.se: did not receive HSTS header
-megauction.tk: could not connect to host
+megasystem.cl: did not receive HSTS header
meghudson.com: could not connect to host
mego.cloud: could not connect to host
meifrench.com: could not connect to host
@@ -8650,7 +9357,7 @@ meisterritter.de: did not receive HSTS header
meizufans.eu: could not connect to host
melakaltenegger.at: did not receive HSTS header
melangebrasil.com: could not connect to host
-melaniebilodeau.com: could not connect to host
+melaniebilodeau.com: did not receive HSTS header
melcher.it: did not receive HSTS header
melenchatsmelenchiens.fr: could not connect to host
melf.nl: could not connect to host
@@ -8670,6 +9377,7 @@ memdoc.org: could not connect to host
memeblast.ninja: could not connect to host
memepasmal.org: could not connect to host
memetrash.co.uk: could not connect to host
+memo-linux.com: could not connect to host
memory-plus-180.com: could not connect to host
memorygame.io: did not receive HSTS header
memorytrace.space: could not connect to host
@@ -8681,7 +9389,10 @@ mensmaximus.de: did not receive HSTS header
mentax.net: did not receive HSTS header
menthix.net: could not connect to host
menudrivetest.com: could not connect to host
+menuel.me: could not connect to host
+menuiserie-berard.com: did not receive HSTS header
menzaijia.com: could not connect to host
+meo.de: could not connect to host
meow.cloud: could not connect to host
meozcraft.com: could not connect to host
mercamaris.es: did not receive HSTS header
@@ -8690,7 +9401,7 @@ merccorp.de: max-age too low: 0
mercedes-benz-usedcars.be: could not connect to host
mercury-studio.com: did not receive HSTS header
mereckas.com: could not connect to host
-meredithkm.info: could not connect to host
+meredithkm.info: did not receive HSTS header
mergozzo.com: did not receive HSTS header
merimatka.fi: could not connect to host
meritz.rocks: could not connect to host
@@ -8717,6 +9428,7 @@ metricaid.com: did not receive HSTS header
metrix-money-ptc.com: could not connect to host
metrix.design: could not connect to host
metzgerei-birkenhof.de: could not connect to host
+meu-smartphone.com: did not receive HSTS header
meucosmetico.com.br: could not connect to host
meuemail.pro: could not connect to host
meupedido.online: could not connect to host
@@ -8733,6 +9445,7 @@ mfiles.pl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_
mfrsgb45.org: did not receive HSTS header
mft.global: could not connect to host
mfxer.com: could not connect to host
+mgcraft.net: could not connect to host
mgdigital.fr: did not receive HSTS header
mgiay.com: did not receive HSTS header
mgoessel.de: did not receive HSTS header
@@ -8745,16 +9458,16 @@ mht-travel.com: could not connect to host
mhx.pw: could not connect to host
mia.ac: could not connect to host
mia.to: could not connect to host
+miamicityballet.org: did not receive HSTS header
mianfei-vpn.com: could not connect to host
-micado-software.com: could not connect to host
michael-schilling.de: did not receive HSTS header
-michaelasawyer.com: could not connect to host
michaelcullen.name: could not connect to host
michaeldemuth.com: could not connect to host
-michaelfitzpatrickruth.com: could not connect to host
+michaelfitzpatrickruth.com: did not receive HSTS header
michaelklos.nl: could not connect to host
michaelmorpurgo.com: did not receive HSTS header
michaeln.net: did not receive HSTS header
+michaels-homepage-service.de: could not connect to host
michaelscrivo.com: did not receive HSTS header
michaelsulzer.com: did not receive HSTS header
michaelsulzer.eu: did not receive HSTS header
@@ -8773,13 +9486,14 @@ micro-dv.ru: could not connect to host
micro-rain-systems.com: could not connect to host
microblading.pe: could not connect to host
microdesic.com: could not connect to host
-micromata.de: did not receive HSTS header
-microme.ga: did not receive HSTS header
+microme.ga: could not connect to host
micropple.net: could not connect to host
microtalk.org: could not connect to host
+midgawash.com: could not connect to host
midirs.org: did not receive HSTS header
midonet.org: did not receive HSTS header
midriversmotorsllc.com: did not receive HSTS header
+midterm.us: could not connect to host
midwestwomenworkers.org: could not connect to host
miegl.cz: could not connect to host
miemie.jp: could not connect to host
@@ -8793,7 +9507,9 @@ migrantskillsregister.org.uk: could not connect to host
migrator.co: could not connect to host
miguksaram.com: could not connect to host
mijn-email.org: could not connect to host
+mijndiad.nl: did not receive HSTS header
mijnkredietpaspoort.nl: could not connect to host
+mijntransacties.nl: could not connect to host
mika.cat: could not connect to host
mikadesign.se: did not receive HSTS header
mikaela.info: did not receive HSTS header
@@ -8801,18 +9517,17 @@ mikaelemilsson.net: did not receive HSTS header
mikeburns.com: could not connect to host
mikedugan.org: did not receive HSTS header
mikeg.de: did not receive HSTS header
-mikek.work: could not connect to host
+mikek.work: did not receive HSTS header
mikeology.org: could not connect to host
mikepair.net: could not connect to host
mikes.tk: could not connect to host
-mikewillia.ms: could not connect to host
+mikeybailey.org: could not connect to host
mikeybot.com: could not connect to host
-mikhirev.ru: could not connect to host
mikii.club: could not connect to host
mikk.cz: could not connect to host
mikro-inwestycje.co.uk: did not receive HSTS header
miku.be: could not connect to host
-miku.hatsune.my: could not connect to host
+miku.hatsune.my: did not receive HSTS header
mikusinec.com: could not connect to host
milahendri.com: did not receive HSTS header
milang.xyz: could not connect to host
@@ -8822,18 +9537,16 @@ milesgeek.com: did not receive HSTS header
military-portal.cz: did not receive HSTS header
militarycarlot.com: did not receive HSTS header
militaryconsumer.gov: did not receive HSTS header
-milktea.info: could not connect to host
-millenniumweb.com: max-age too low: 86400
+millibitcoin.jp: could not connect to host
millionairessecrets.com: could not connect to host
millstep.de: did not receive HSTS header
milonga.tips: could not connect to host
mimbeim.com: did not receive HSTS header
-mimobile.website: could not connect to host
mimoderoupa.pt: could not connect to host
min.kiwi: could not connect to host
minantavla.se: could not connect to host
mind.sh: did not receive HSTS header
-mindbodycontinuum.com: did not receive HSTS header
+mindcell.no: could not connect to host
mindcraft.ga: could not connect to host
mine.world: could not connect to host
minecraft-forum.cf: could not connect to host
@@ -8852,7 +9565,7 @@ minecraftvoter.com: could not connect to host
minecrell.net: max-age too low: 172800
mineover.es: could not connect to host
minetude.com: could not connect to host
-mingming.info: did not receive HSTS header
+mingkyaa.com: could not connect to host
mingo.nl: max-age too low: 2592000
mingy.ddns.net: could not connect to host
mingyueli.com: could not connect to host
@@ -8870,12 +9583,14 @@ minnesotadata.com: could not connect to host
minor.news: could not connect to host
minora.io: could not connect to host
minoris.se: did not receive HSTS header
+mintea-noua.ro: could not connect to host
mipiaci.co.nz: did not receive HSTS header
mipiaci.com.au: did not receive HSTS header
miragrow.com: could not connect to host
mireillewendling.com.br: could not connect to host
mirgleich.dnshome.de: could not connect to host
mirindadomo.ru: did not receive HSTS header
+mirodasilva.be: could not connect to host
mironized.com: did not receive HSTS header
mirrorsedgearchive.ga: could not connect to host
mirrorx.com: did not receive HSTS header
@@ -8883,15 +9598,17 @@ miruc.co: did not receive HSTS header
mirucon.com: did not receive HSTS header
misconfigured.io: could not connect to host
miscreant.me: could not connect to host
-misericordiasegrate.org: could not connect to host
+misericordiasegrate.org: did not receive HSTS header
misgluteosperfectos.com: did not receive HSTS header
misiondelosangeles-mailing.com: did not receive HSTS header
misiru.jp: could not connect to host
+misrv.com: did not receive HSTS header
missrain.tw: could not connect to host
missycosmeticos.com.br: could not connect to host
mist.ink: could not connect to host
mister.hosting: did not receive HSTS header
misterl.net: did not receive HSTS header
+misuzu.moe: could not connect to host
mitarbeiter-pc.de: did not receive HSTS header
mitchellrenouf.ca: could not connect to host
mitior.net: could not connect to host
@@ -8913,15 +9630,20 @@ mkakh.xyz: could not connect to host
mkasu.org: could not connect to host
mkfs.be: could not connect to host
mkfs.fr: could not connect to host
+mkg-palais-hanau.de: did not receive HSTS header
+mkg-wiebelskirchen.de: could not connect to host
mkp-deutschland.de: did not receive HSTS header
mkplay.io: could not connect to host
-mktemp.org: could not connect to host
mkw.st: could not connect to host
+mlcambiental.com.br: did not receive HSTS header
mlcdn.co: could not connect to host
mlpchan.net: could not connect to host
mlpepilepsy.org: could not connect to host
mlpvc-rr.ml: did not receive HSTS header
mlrslateroofing.com.au: did not receive HSTS header
+mlsrv.de: could not connect to host
+mmaps.ddns.net: could not connect to host
+mmcc.pe: did not receive HSTS header
mmgazhomeloans.com: did not receive HSTS header
mmilog.hu: could not connect to host
mmmm.com: could not connect to host
@@ -8933,20 +9655,21 @@ mnetworkingsolutions.co.uk: could not connect to host
mnmt.no: did not receive HSTS header
mnwt.nl: could not connect to host
moar.so: did not receive HSTS header
+moas.design: could not connect to host
moas.photos: did not receive HSTS header
mobaircon.com: did not receive HSTS header
-mobifinans.ru: could not connect to host
mobile-gesundheit.org: could not connect to host
mobile.eti.br: could not connect to host
mobilebay.top: could not connect to host
mobilecoach.com: did not receive HSTS header
mobilekey.co: could not connect to host
-mobilemalin.com: could not connect to host
+mobilemalin.com: did not receive HSTS header
mobileritelushi.com: could not connect to host
mobilethreat.net: could not connect to host
mobilethreatnetwork.net: could not connect to host
mobilpass.no: could not connect to host
-mobimalin.com: could not connect to host
+mobimalin.com: did not receive HSTS header
+mobisium.com: did not receive HSTS header
mobiwalk.com: could not connect to host
mobix5.com: did not receive HSTS header
mobmp4.co: could not connect to host
@@ -8958,15 +9681,19 @@ mockmyapp.com: could not connect to host
mocloud.eu: could not connect to host
mocloud.win: could not connect to host
mocsuite.club: could not connect to host
+modalrakyat.com: could not connect to host
+modalrakyat.id: did not receive HSTS header
modaperuimport.com: could not connect to host
modded-minecraft-server-list.com: could not connect to host
moddedark.com: could not connect to host
mode-marine.com: could not connect to host
+modecaso.com: could not connect to host
model9.io: did not receive HSTS header
modelsclub.org.ua: could not connect to host
modemagazines.co.uk: could not connect to host
moderatortv.de: did not receive HSTS header
modernibytovytextil.cz: could not connect to host
+moderntld.net: could not connect to host
mododo.de: could not connect to host
modx.by: max-age too low: 31536
modx.io: could not connect to host
@@ -8978,6 +9705,7 @@ moebel-nagel.de: did not receive HSTS header
moebel-vergleichen.com: did not receive HSTS header
moefi.xyz: could not connect to host
moegirl.org: did not receive HSTS header
+moehrke.cc: could not connect to host
moellers.it: could not connect to host
moeloli.pw: did not receive HSTS header
moelord.org: could not connect to host
@@ -8992,14 +9720,17 @@ mojapraca.sk: did not receive HSTS header
mojefilmy.xyz: could not connect to host
mojizuri.jp: max-age too low: 86400
mokadev.com: did not receive HSTS header
+molokai.org: could not connect to host
mols.me: did not receive HSTS header
-momfulfilled.com: did not receive HSTS header
+momento.co.id: did not receive HSTS header
+momfulfilled.com: could not connect to host
mommel.com: could not connect to host
mommelonline.de: could not connect to host
momoka.moe: could not connect to host
mon-a-lisa.com: did not receive HSTS header
-mon-mobile.com: could not connect to host
+mon-mobile.com: did not receive HSTS header
mona.lu: could not connect to host
+monalisa.wtf: could not connect to host
monarca.systems: could not connect to host
monasterialis.eu: could not connect to host
monautoneuve.fr: did not receive HSTS header
@@ -9016,21 +9747,27 @@ monika-sokol.de: did not receive HSTS header
monitaure.io: could not connect to host
monitman.solutions: could not connect to host
monitori.ng: could not connect to host
+monkieteel.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
monochrometoys.com: could not connect to host
+monodukuri.cafe: did not receive HSTS header
+monodzukuri.cafe: did not receive HSTS header
+monokoo.com: could not connect to host
monoseis-monotica.gr: max-age too low: 300
monotsuku.com: could not connect to host
+monozukuri.cafe: did not receive HSTS header
montanacures.org: could not connect to host
montanana.com: did not receive HSTS header
monteurzimmerfrei.de: could not connect to host
montonicms.com: could not connect to host
-moo.pet: did not receive HSTS header
+moo.pet: could not connect to host
moobo.xyz: did not receive HSTS header
moodifiers.com: could not connect to host
moon.lc: could not connect to host
-moonagic.io: did not receive HSTS header
moonchart.co.uk: did not receive HSTS header
moonless.net: could not connect to host
moonloupe.com: could not connect to host
+moonrhythm.info: did not receive HSTS header
+moonrhythm.io: did not receive HSTS header
moonysbouncycastles.co.uk: could not connect to host
moosemanstudios.com: could not connect to host
moov.is: could not connect to host
@@ -9049,7 +9786,6 @@ morethanadream.lv: could not connect to host
morfitronik.pl: could not connect to host
morganestes.com: max-age too low: 0
morganino.eu: could not connect to host
-morhys.com: could not connect to host
morningcalculation.com: could not connect to host
morninglory.com: did not receive HSTS header
mornings.com: did not receive HSTS header
@@ -9057,7 +9793,7 @@ morotech.com.br: could not connect to host
morpheusx.at: could not connect to host
morpheusxaut.net: could not connect to host
morpork.xyz: could not connect to host
-morz.org: could not connect to host
+morz.org: max-age too low: 0
mosaique-lachenaie.fr: could not connect to host
moskva.guide: did not receive HSTS header
moso.io: did not receive HSTS header
@@ -9071,21 +9807,26 @@ motocyklovedily.cz: did not receive HSTS header
motomorgen.com: could not connect to host
motorbiketourhanoi.com: could not connect to host
motorcheck.ie: did not receive HSTS header
+motornomaslo.bg: did not receive HSTS header
motoroilinfo.com: did not receive HSTS header
motorsportdiesel.com: did not receive HSTS header
+motovio.de: did not receive HSTS header
motransportinfo.com: did not receive HSTS header
mottvd.com: could not connect to host
+moube.fr: could not connect to host
moudicat.com: max-age too low: 6307200
moula.com.au: did not receive HSTS header
moumaobuchiyu.com: could not connect to host
-mountainadventureseminars.com: could not connect to host
+mountain-rock.ru: could not connect to host
+mountainadventureseminars.com: did not receive HSTS header
mountainmusicpromotions.com: did not receive HSTS header
movabletype.net: max-age too low: 3600
-move.mil: did not receive HSTS header
movepin.com: could not connect to host
movie4k.fyi: could not connect to host
movie4k.life: could not connect to host
-moviedollars.com: did not receive HSTS header
+movie4kto.site: could not connect to host
+moviedollars.com: could not connect to host
+movienang.com: max-age too low: 0
moviesabout.net: could not connect to host
moviespur.info: did not receive HSTS header
moving-pixtures.de: could not connect to host
@@ -9096,17 +9837,21 @@ moy-gorod.od.ua: did not receive HSTS header
moyu.host: did not receive HSTS header
mozart-game.cz: could not connect to host
mozartgame.cz: could not connect to host
+mozgb.ru: could not connect to host
mozillians.org: did not receive HSTS header
mozoa.net: could not connect to host
mozzilla.cz: could not connect to host
mp3donusturucu.com: did not receive HSTS header
mp3donusturucu.net: did not receive HSTS header
+mp3gratuiti.com: could not connect to host
mp3juices.is: could not connect to host
mpi-sa.fr: did not receive HSTS header
-mpkossen.com: did not receive HSTS header
+mpkossen.com: could not connect to host
+mpn.poker: did not receive HSTS header
mpserver12.org: could not connect to host
mr-coffee.net: could not connect to host
mr-hosting.com: could not connect to host
+mr-nachhilfe.de: did not receive HSTS header
mrafrohead.com: could not connect to host
mrawe.com: could not connect to host
mrburtbox.com: could not connect to host
@@ -9117,24 +9862,24 @@ mrettich.org: did not receive HSTS header
mrhc.ru: could not connect to host
mrhee.com: did not receive HSTS header
mrizzio.com: could not connect to host
-mrketolocksmith.com: could not connect to host
+mrksk.com: could not connect to host
mrleonardo.com: did not receive HSTS header
mrliu.me: could not connect to host
mrnh.tk: could not connect to host
-mrning.com: could not connect to host
mrnonz.com: max-age too low: 0
mrparker.pw: did not receive HSTS header
mrpopat.in: did not receive HSTS header
-mrs-shop.com: did not receive HSTS header
-mrsbairds.com: max-age too low: 86400
+mrpropop.com: max-age too low: 0
+mrs-shop.com: could not connect to host
+mrtunnel.club: did not receive HSTS header
mruganiepodspacja.pl: could not connect to host
msc-seereisen.net: could not connect to host
msgallery.tk: could not connect to host
+msp66.de: could not connect to host
mstd.tokyo: did not receive HSTS header
mstdn-tech.jp: could not connect to host
-mstdn.io: did not receive HSTS header
-mstdn.nl: did not receive HSTS header
-mstiles92.com: max-age too low: 0
+mstdn.nl: could not connect to host
+mstiles92.com: did not receive HSTS header
msz-fotografie.de: could not connect to host
mszaki.com: did not receive HSTS header
mt.me.uk: could not connect to host
@@ -9148,18 +9893,25 @@ mtg-esport.de: did not receive HSTS header
mtg-tutor.de: could not connect to host
mtirc.co: could not connect to host
mtn.cc: could not connect to host
-mtrip.com: did not receive HSTS header
+mtrock.ru: could not connect to host
+mu3on.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+muahahahaha.co.uk: could not connect to host
+muchohentai.com: could not connect to host
+muffet.pw: could not connect to host
muga.space: could not connect to host
muj-svet.cz: could not connect to host
mujadin.se: did not receive HSTS header
mulenvo.com: did not receive HSTS header
+mulheres18.com: could not connect to host
mullen.net.au: did not receive HSTS header
multiterm.org: did not receive HSTS header
multivpn.cn.com: could not connect to host
multivpn.com.de: could not connect to host
multivpn.com.ua: could not connect to host
multivpn.fr: could not connect to host
+multiworldsoftware.com: did not receive HSTS header
mumei.space: did not receive HSTS header
+mundoadulto.com.br: did not receive HSTS header
mundoalpha.com.br: did not receive HSTS header
mundodapoesia.com: did not receive HSTS header
munecoscabezones.com: did not receive HSTS header
@@ -9180,6 +9932,7 @@ murraycolin.org: could not connect to host
murrayrun.com: did not receive HSTS header
mursu.directory: could not connect to host
murz.tv: could not connect to host
+muscleangels.com: could not connect to host
museminder2.com: did not receive HSTS header
museumstreak.com: did not receive HSTS header
musewearflipflops.com: could not connect to host
@@ -9189,18 +9942,16 @@ musi.cx: could not connect to host
musikkfondene.no: did not receive HSTS header
musikzug-bookholzberg.de: did not receive HSTS header
muslimbanter.co.za: could not connect to host
-musmann.io: did not receive HSTS header
mustika.cf: did not receive HSTS header
mutamatic.com: could not connect to host
mutuelle-obligatoire-pme.fr: did not receive HSTS header
-muusika.fun: could not connect to host
muzgra.in: did not receive HSTS header
+muzi.cz: could not connect to host
muzykaprzeszladoplay.pl: could not connect to host
mvanmarketing.nl: did not receive HSTS header
mvnet.com.br: did not receive HSTS header
mvsecurity.nl: could not connect to host
mwalz.com: could not connect to host
-mx.org.ua: could not connect to host
mxawei.cn: could not connect to host
mxlife.org: could not connect to host
my-demo.co: could not connect to host
@@ -9214,6 +9965,8 @@ myairshop.gr: could not connect to host
myandroid.tools: could not connect to host
myandroidtools.cc: could not connect to host
myandroidtools.pro: could not connect to host
+myappliancerepairhouston.com: did not receive HSTS header
+myartsway.com: did not receive HSTS header
mybudget.xyz: could not connect to host
mybuilderinlondon.co.uk: did not receive HSTS header
mybusiness.cm: did not receive HSTS header
@@ -9223,7 +9976,7 @@ myclientsplus.com: did not receive HSTS header
mycollab.net: could not connect to host
mycontrolmonitor.com: could not connect to host
mycoted.com: did not receive HSTS header
-myday.eu.com: could not connect to host
+myday.eu.com: did not receive HSTS header
mydeos.com: could not connect to host
mydigipass.com: did not receive HSTS header
mydmdi.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -9243,23 +9996,25 @@ mygov.scot: did not receive HSTS header
mygpsite.com: did not receive HSTS header
mygreatjob.eu: could not connect to host
myhair.asia: did not receive HSTS header
-myicare.org: could not connect to host
+myhostname.net: did not receive HSTS header
+myicare.org: did not receive HSTS header
myiocc.org: did not receive HSTS header
myip.tech: max-age too low: 2592000
mykolab.com: did not receive HSTS header
mykreuzfahrt.de: could not connect to host
-mylene-chandelier.me: could not connect to host
+mylene-chandelier.me: did not receive HSTS header
mylighthost.com: did not receive HSTS header
mylocalsearch.co.uk: did not receive HSTS header
-mymixtapez.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-mymp3singer.co: did not receive HSTS header
+mylotto.co.nz: could not connect to host
+mymp3singer.co: could not connect to host
mymp3singer.net: could not connect to host
-mymp3singer.site: did not receive HSTS header
+mymp3singer.site: could not connect to host
mymsr.de: did not receive HSTS header
myndcommunication.com: could not connect to host
mynetblog.com: did not receive HSTS header
+mynetworkingbuddy.com: could not connect to host
mynewleaf.co: did not receive HSTS header
-mynewselfbariatrics.com: could not connect to host
+mynewselfbariatrics.com: did not receive HSTS header
myni.io: could not connect to host
mynigma.org: did not receive HSTS header
myon.info: did not receive HSTS header
@@ -9278,7 +10033,6 @@ myptsite.com: could not connect to host
myqdu.cn: could not connect to host
myqdu.com: could not connect to host
myrig.io: could not connect to host
-myrig.net: could not connect to host
myrsa.in: did not receive HSTS header
myruststats.com: could not connect to host
mysa.is: could not connect to host
@@ -9286,28 +10040,28 @@ mysecretrewards.com: could not connect to host
myspa.asia: did not receive HSTS header
mystery-science-theater-3000.de: did not receive HSTS header
mysteryblog.de: did not receive HSTS header
+mystown.org: could not connect to host
mystudy.me: could not connect to host
mytc.fr: could not connect to host
mythlogic.com: did not receive HSTS header
mythslegendscollection.com: did not receive HSTS header
-mytraiteurs.com: could not connect to host
mytravelblog.de: could not connect to host
myweb360.de: did not receive HSTS header
-myxbox.gr: did not receive HSTS header
+myxbox.gr: max-age too low: 0
myzone.com: did not receive HSTS header
-mziulu.me: could not connect to host
mzlog.win: could not connect to host
mzorn.photography: could not connect to host
-mzzj.de: could not connect to host
+n-kanazawa.jp: max-age too low: 0
n-rickroll-e.pw: could not connect to host
n-x.info: did not receive HSTS header
n0099.cf: did not receive HSTS header
n0rm.ru: could not connect to host
n0s.de: did not receive HSTS header
-n2servers.com: could not connect to host
+n2host.eu: could not connect to host
n2x.in: could not connect to host
+n3twork.net: could not connect to host
n4l.pw: could not connect to host
-n64chan.me: did not receive HSTS header
+n64chan.me: could not connect to host
n8ch.net: could not connect to host
na.hn: did not receive HSTS header
naano.org: could not connect to host
@@ -9317,21 +10071,25 @@ nabytko.cz: could not connect to host
nacktetatsachen.at: did not receive HSTS header
nadaquenosepas.com: could not connect to host
nadia.pt: could not connect to host
+nadyaolcer.fr: could not connect to host
nagaragem.com.br: did not receive HSTS header
+nagelfam.com: could not connect to host
nagios.by: did not receive HSTS header
nagoya-kyuyo.com: could not connect to host
naiaspa.fr: did not receive HSTS header
naiharngym.com: did not receive HSTS header
-nais.me: could not connect to host
+nailedithomebuilders.com: could not connect to host
+nais.me: did not receive HSTS header
najedlo.sk: could not connect to host
+nakada4610.com: could not connect to host
nakamastreamingcommunity.com: could not connect to host
-nakanishi-paint.com: could not connect to host
nakhonidc.com: could not connect to host
-nakitbonus2.com: did not receive HSTS header
+nakitbonus2.com: could not connect to host
nakliyatsirketi.biz: could not connect to host
+nako.no: did not receive HSTS header
nakuro.de: could not connect to host
nalao-company.com: did not receive HSTS header
-nalifornia.com: did not receive HSTS header
+nalifornia.com: could not connect to host
nalinux.cz: did not receive HSTS header
nallon.com.br: could not connect to host
nalukfitness.com.br: could not connect to host
@@ -9341,15 +10099,18 @@ named.ga: could not connect to host
nameme.xyz: could not connect to host
nametaken-cloud.duckdns.org: could not connect to host
namethatbone.com: could not connect to host
+namethatporn.com: could not connect to host
namikawatetsuji.jp: could not connect to host
namorico.me: could not connect to host
nan.ci: did not receive HSTS header
nan.zone: could not connect to host
+nanami.moe: could not connect to host
nanderson.me: could not connect to host
nanfangstone.com: could not connect to host
nani.io: did not receive HSTS header
naniki.co.uk: could not connect to host
nanogeneinc.com: could not connect to host
+nanogi.ga: could not connect to host
nanokamo.com: did not receive HSTS header
nanosingularity.com: could not connect to host
nanrenba.net: could not connect to host
@@ -9363,15 +10124,14 @@ narko.space: could not connect to host
narodniki.com: did not receive HSTS header
narviz.com: did not receive HSTS header
nasarawanewsonline.com: could not connect to host
-nasmocopati.com: could not connect to host
+nasmocopati.com: did not receive HSTS header
nasralmabrooka.com: did not receive HSTS header
nastysclaw.com: could not connect to host
natalia-fadeeva.ru: could not connect to host
-natalia.io: could not connect to host
+natalia.io: did not receive HSTS header
natalieandjoshua.com: could not connect to host
natalt.org: did not receive HSTS header
natalydanilova.com: max-age too low: 300
-natanaelys.com: could not connect to host
nataniel-perissier.fr: could not connect to host
nate.sh: could not connect to host
natenom.com: max-age too low: 7200
@@ -9380,7 +10140,6 @@ natenom.name: max-age too low: 7200
nathankonopinski.com: could not connect to host
nathanmfarrugia.com: did not receive HSTS header
nationalmall.gov: could not connect to host
-nationwiderealtyinvestors.com: could not connect to host
nationwidevehiclecontracts.co.uk: did not receive HSTS header
natur-udvar.hu: could not connect to host
natural-progesterone.net: could not connect to host
@@ -9393,7 +10152,8 @@ nauck.org: did not receive HSTS header
naudles.me: could not connect to host
nav.jobs: could not connect to host
naval.tf: could not connect to host
-naviaddress.io: could not connect to host
+navdeep.ca: could not connect to host
+naviaddress.io: did not receive HSTS header
naviteq.eu: could not connect to host
navjobs.com: could not connect to host
nawroth.info: could not connect to host
@@ -9403,7 +10163,9 @@ nba2kqq.com: could not connect to host
nbb.io: could not connect to host
nbg-ha.de: could not connect to host
nbis.gov: could not connect to host
+nbl.org.tw: could not connect to host
nbrown.us: could not connect to host
+nbtparse.org: could not connect to host
nc2c.com: could not connect to host
nc99.co: could not connect to host
ncc60205.info: could not connect to host
@@ -9414,13 +10176,14 @@ ncpw.gov: did not receive HSTS header
ncrmnt.org: did not receive HSTS header
nct.org.uk: did not receive HSTS header
nctx.co.uk: did not receive HSTS header
+ndmath.club: could not connect to host
ndtblog.com: could not connect to host
ndtmarket.place: could not connect to host
ne1home.dyndns.org: did not receive HSTS header
neap.io: could not connect to host
near.st: did not receive HSTS header
nearbiwa.com: did not receive HSTS header
-nearon.nl: did not receive HSTS header
+nearon.nl: could not connect to host
neavision.de: did not receive HSTS header
nebulousenhanced.com: could not connect to host
necesitodinero.org: could not connect to host
@@ -9439,24 +10202,29 @@ neilgreen.net: did not receive HSTS header
nejnamc.org: did not receive HSTS header
neko-life.com: did not receive HSTS header
neko.li: could not connect to host
+neko.ml: could not connect to host
nekoku.io: could not connect to host
nekox.ml: could not connect to host
nellen.it: did not receive HSTS header
+nemanja.top: did not receive HSTS header
nemno.de: could not connect to host
nemovement.org: could not connect to host
neoani.me: did not receive HSTS header
neocyd.com: could not connect to host
neofelhz.space: could not connect to host
+neojames.me: could not connect to host
neonisi.com: could not connect to host
neonnuke.tech: did not receive HSTS header
neosolution.ca: did not receive HSTS header
+neotist.com: did not receive HSTS header
nercp.org.uk: did not receive HSTS header
nerd42.de: could not connect to host
+nerdbox.cc: did not receive HSTS header
nerdjokes.de: could not connect to host
nerfroute.com: could not connect to host
neris.io: could not connect to host
neriumhcp.com: did not receive HSTS header
-nerpa-club.ru: did not receive HSTS header
+nerpa-club.ru: could not connect to host
nesantuoka.lt: could not connect to host
nestone.ru: could not connect to host
net-navi.cc: did not receive HSTS header
@@ -9474,18 +10242,16 @@ netfs.pl: did not receive HSTS header
netherwind.eu: did not receive HSTS header
netlilo.com: could not connect to host
netloanusa.com: could not connect to host
-netlocal.ru: could not connect to host
netmagik.com: did not receive HSTS header
netprofile.com.au: did not receive HSTS header
netresourcedesign.com: could not connect to host
+netronome.com: did not receive HSTS header
netsafeid.biz: did not receive HSTS header
netscaler.expert: could not connect to host
netsight.org: could not connect to host
netsparkercloud.com: did not receive HSTS header
netsystems.pro: could not connect to host
-nettacompany.com.tr: did not receive HSTS header
nettefoundation.com: could not connect to host
-networx-online.de: could not connect to host
netzbit.de: could not connect to host
netzpolitik.org: max-age too low: 2592000
netztest.at: did not receive HSTS header
@@ -9497,14 +10263,17 @@ neuralgic.net: could not connect to host
neuro-plus-100.com: could not connect to host
neuronfactor.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
neutralvehicle.com: did not receive HSTS header
+neva.li: could not connect to host
nevadafiber.net: could not connect to host
never-afk.de: did not receive HSTS header
neveta.com: could not connect to host
new: could not connect to host
newantiagingcreams.com: could not connect to host
+newbieboss.com: did not receive HSTS header
newbownerton.xyz: could not connect to host
newchance.store: could not connect to host
newcityinfo.info: could not connect to host
+newdeveloper.download: could not connect to host
newedivideo.it: could not connect to host
newfacialbeautycream.com: could not connect to host
newgenerationplus.org: could not connect to host
@@ -9513,14 +10282,15 @@ newline.online: did not receive HSTS header
newlooknow.com: did not receive HSTS header
newmelalife.com: did not receive HSTS header
newparadigmventures.net: did not receive HSTS header
+newpoke.net: did not receive HSTS header
newportpropertygroup.com: could not connect to host
news4c.com: did not receive HSTS header
newsquantified.com: max-age too low: 0
newstarnootropics.com: could not connect to host
-newsyslog.org: could not connect to host
newtnote.com: could not connect to host
newtonhaus.com: could not connect to host
newtonwarp.com: could not connect to host
+nexgeneration-solutions.com: could not connect to host
nexlab.org: did not receive HSTS header
next-taxi.ru: could not connect to host
next176.sk: did not receive HSTS header
@@ -9528,23 +10298,21 @@ next47.com: did not receive HSTS header
nextcloud.li: could not connect to host
nextcloud.nerdpol.ovh: could not connect to host
nextcloud.org: could not connect to host
-nextgen.sk: could not connect to host
-nextgenthemes.com: did not receive HSTS header
nexth.de: could not connect to host
nexth.net: did not receive HSTS header
nexth.us: could not connect to host
-nexthop.co.jp: did not receive HSTS header
+nexthop.co.jp: could not connect to host
nexthop.co.th: did not receive HSTS header
nextpages.de: could not connect to host
nextproject.us: could not connect to host
nextshutter.com: did not receive HSTS header
-nexus-vienna.at: could not connect to host
nexusbyte.de: could not connect to host
nexuscorporation.in: could not connect to host
+nfhome.be: did not receive HSTS header
+nfls.io: did not receive HSTS header
nfo.so: could not connect to host
ng-firewall.com: did not receive HSTS header
ng-security.com: could not connect to host
-ngc.gov: could not connect to host
ngiemboon.net: could not connect to host
ngine.ch: did not receive HSTS header
nginxnudes.com: could not connect to host
@@ -9553,11 +10321,13 @@ nglr.org: could not connect to host
ngocuong.net: could not connect to host
ngt-service.ru: could not connect to host
ngtoys.com.br: did not receive HSTS header
+nhliberty.org: did not receive HSTS header
nhsuites.com: did not receive HSTS header
nhus.de: max-age too low: 172800
niallator.com: could not connect to host
nibiisclaim.com: could not connect to host
nicestresser.fr: could not connect to host
+nicholasperkins.io: could not connect to host
nicky.io: did not receive HSTS header
nico.one: could not connect to host
nicoborghuis.nl: could not connect to host
@@ -9574,19 +10344,22 @@ nien.chat: could not connect to host
nien.com.tw: could not connect to host
nienfun.com: could not connect to host
nieuwsoverijssel.nl: did not receive HSTS header
+niffler.software: could not connect to host
nifpnet.nl: could not connect to host
nifume.com: could not connect to host
+niggo.eu: could not connect to host
nightsnack.cf: could not connect to host
niho.jp: did not receive HSTS header
nikcub.com: could not connect to host
nikksno.io: could not connect to host
+niklas.host: could not connect to host
niklaslindblad.se: did not receive HSTS header
nikobradshaw.com: could not connect to host
nikolaichik.photo: did not receive HSTS header
nikolasbradshaw.com: could not connect to host
-nikonnps.co.uk: did not receive HSTS header
nilianwo.com: could not connect to host
niloxy.com: did not receive HSTS header
+nimidam.com: could not connect to host
ninchisho-online.com: did not receive HSTS header
ninebytes.xyz: could not connect to host
ning.so: did not receive HSTS header
@@ -9594,30 +10367,38 @@ ninhs.org: could not connect to host
ninjan.co: did not receive HSTS header
ninjaspiders.com: could not connect to host
ninofink.com: could not connect to host
-ninreiei.jp: could not connect to host
niouininon.eu: could not connect to host
nippler.org: could not connect to host
nippombashi.net: did not receive HSTS header
+nippon.fr: could not connect to host
nipponcareers.com: did not receive HSTS header
nirada.info: could not connect to host
+nirjharstudio.com: could not connect to host
nirna.io: did not receive HSTS header
+nirvanashop.com: could not connect to host
nishaswonderland.be: did not receive HSTS header
nishaswonderland.nl: did not receive HSTS header
nishikino-maki.com: could not connect to host
nishisbma.com: could not connect to host
+nitaonline.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+niva.synology.me: did not receive HSTS header
niveldron.com: could not connect to host
nixien.fr: could not connect to host
nixmag.net: could not connect to host
-nkadvertising.online: could not connect to host
+nixne.st: could not connect to host
+nkadvertising.online: did not receive HSTS header
nkautoservice.nl: did not receive HSTS header
nkb.in.th: could not connect to host
+nkp-media.de: could not connect to host
nlegall.fr: did not receive HSTS header
nll.fi: could not connect to host
nmadda.com: did not receive HSTS header
nmctest.net: could not connect to host
+nmgb.ga: could not connect to host
+nmgb.ml: could not connect to host
nmsnj.com: did not receive HSTS header
nmueller.at: could not connect to host
-nnote.net: did not receive HSTS header
+nnote.net: could not connect to host
nnya.cat: could not connect to host
no17sifangjie.cc: could not connect to host
nocallaghan.com: could not connect to host
@@ -9639,6 +10420,7 @@ noesberts-weidmoos.de: did not receive HSTS header
noexpect.org: could not connect to host
noima.com: did not receive HSTS header
noisebridge.social: could not connect to host
+nojok.es: could not connect to host
nolag.host: could not connect to host
nolatepayments.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
nolberg.net: did not receive HSTS header
@@ -9648,6 +10430,7 @@ nolte.work: could not connect to host
nomorebytes.de: could not connect to host
nonemu.ninja: could not connect to host
noodlesandwich.com: did not receive HSTS header
+noodleyum.com: did not receive HSTS header
nootropicsource.com: did not receive HSTS header
nope.website: could not connect to host
nopex.no: could not connect to host
@@ -9660,19 +10443,23 @@ nordic-survival.de: did not receive HSTS header
nordiccasinocommunity.com: did not receive HSTS header
nordlicht.photography: did not receive HSTS header
norge.guide: could not connect to host
+normalady.com: could not connect to host
normanschwaneberg.de: did not receive HSTS header
north.supply: could not connect to host
northcutt.com: did not receive HSTS header
-northernpage.com: could not connect to host
+northernmuscle.ca: could not connect to host
northpennvwparts.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
northwoodsfish.com: could not connect to host
nosbenevolesontdutalent.com: could not connect to host
nosecretshop.com: could not connect to host
nossasenhoradaconceicao.com.br: did not receive HSTS header
nostraspace.com: could not connect to host
+nosx.tk: could not connect to host
not-a.link: could not connect to host
+nota-web.com: could not connect to host
notablog.xyz: did not receive HSTS header
notadd.io: could not connect to host
+notadd.store: could not connect to host
notarankastojkovic.me: could not connect to host
notarobot.fr: did not receive HSTS header
notboring.co.uk: could not connect to host
@@ -9684,9 +10471,11 @@ notevencode.com: could not connect to host
nothing.net.nz: max-age too low: 7776000
nothing.org.uk: could not connect to host
noticia.do: did not receive HSTS header
-notjustbitchy.com: did not receive HSTS header
+notificami.com: could not connect to host
+notjustbitchy.com: could not connect to host
notonprem.com: could not connect to host
nottheonion.net: did not receive HSTS header
+nottori.com: could not connect to host
notypiesni.sk: did not receive HSTS header
nou.si: did not receive HSTS header
nouma.fr: did not receive HSTS header
@@ -9704,47 +10493,47 @@ novelabs.de: could not connect to host
novelabs.eu: could not connect to host
novelshouse.com: could not connect to host
novfishing.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-novinhabucetuda.com: did not receive HSTS header
+novinhabucetuda.com: could not connect to host
novinivo.com: did not receive HSTS header
novtest.ru: did not receive HSTS header
noworrywp.com: could not connect to host
nowprotein.com: did not receive HSTS header
-noxi.ga: could not connect to host
nozoe.jp: could not connect to host
npm.li: did not receive HSTS header
+npmg.org: max-age too low: 0
npol.de: could not connect to host
-npool.org: did not receive HSTS header
+npool.org: could not connect to host
nq7.pl: could not connect to host
+nrc-gateway.gov: could not connect to host
nrechn.de: could not connect to host
nrizzio.me: could not connect to host
nrnjn.xyz: did not receive HSTS header
nrvnastudios.com: could not connect to host
+nsa.ovh: could not connect to host
nsbfalconacademy.org: could not connect to host
nsdev.cn: could not connect to host
nsellier.fr: did not receive HSTS header
nshost.ro: did not receive HSTS header
nsmail.cn: could not connect to host
nspeaks.com: did not receive HSTS header
-nstremsdoerfer.ovh: did not receive HSTS header
nstyleintl.ca: did not receive HSTS header
nsure.us: could not connect to host
nsweb.solutions: could not connect to host
ntbs.pro: could not connect to host
ntia.gov: could not connect to host
ntse.xyz: could not connect to host
-nu-pogodi.net: could not connect to host
nu3.at: did not receive HSTS header
nu3.ch: did not receive HSTS header
nu3.co.uk: could not connect to host
-nu3.com: did not receive HSTS header
nu3.de: did not receive HSTS header
-nu3.dk: did not receive HSTS header
-nu3.fi: did not receive HSTS header
nu3.fr: did not receive HSTS header
-nu3.no: did not receive HSTS header
-nu3.se: did not receive HSTS header
nube.ninja: did not receive HSTS header
+nubeslayer.com: could not connect to host
+nuclear-crimes.com: could not connect to host
+nuclearcrimes.com: did not receive HSTS header
+nuclearcrimes1.com: did not receive HSTS header
nudel.ninja: could not connect to host
+nudestpics.com: could not connect to host
nufla.de: could not connect to host
nugetdependencies.com: did not receive HSTS header
nuiguru.me: could not connect to host
@@ -9765,9 +10554,11 @@ nupef.org.br: did not receive HSTS header
nurserybook.co: did not receive HSTS header
nurture.be: did not receive HSTS header
nusatrip-api.com: did not receive HSTS header
+nusku.biz: did not receive HSTS header
nutricuerpo.com: did not receive HSTS header
nutrieduca.com: could not connect to host
nutrienti.eu: did not receive HSTS header
+nutrifyyourself.com: could not connect to host
nutritionculture.com: could not connect to host
nutsandboltsmedia.com: did not receive HSTS header
nuttyveg.com: did not receive HSTS header
@@ -9775,21 +10566,22 @@ nuwaterglobal.com: did not receive HSTS header
nvlop.xyz: did not receive HSTS header
nwa.xyz: could not connect to host
nweb.co.nz: could not connect to host
-nwerc.party: could not connect to host
-nwk1.com: did not receive HSTS header
-nwork.media: could not connect to host
+nwork.media: did not receive HSTS header
nxt.sh: did not receive HSTS header
+nyadora.com: could not connect to host
nyanpasu.tv: could not connect to host
nyatane.com: could not connect to host
nyazeeland.guide: could not connect to host
nycroth.com: could not connect to host
-nydnxs.com: could not connect to host
nyesider.org: could not connect to host
+nylonfeetporn.com: could not connect to host
nyored.com: did not receive HSTS header
nyphox.net: could not connect to host
nysepho.pw: could not connect to host
nysifclaimcentral.com: did not receive HSTS header
nystart.no: did not receive HSTS header
+nystudio107.com: did not receive HSTS header
+nyuusannkinn.com: did not receive HSTS header
nz.search.yahoo.com: max-age too low: 172800
nzbs.io: could not connect to host
nzmk.cz: could not connect to host
@@ -9800,14 +10592,13 @@ oaksbloom.com: could not connect to host
oasis-conference.org.nz: could not connect to host
oasis.mobi: could not connect to host
oasisim.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-oatmealdome.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
obdolbacca.ru: could not connect to host
oben.pl: did not receive HSTS header
oberam.de: could not connect to host
oberhof.co: could not connect to host
oberhofjuice.com: could not connect to host
oberoi.de: max-age too low: 600000
-objectif-leger.com: could not connect to host
+objectif-leger.com: did not receive HSTS header
oblikdom.pro: did not receive HSTS header
oblikdom.ru: did not receive HSTS header
oblondata.io: did not receive HSTS header
@@ -9816,6 +10607,7 @@ obscuredfiles.com: could not connect to host
observatory.se: could not connect to host
obsydian.org: could not connect to host
oc-minecraft.com: could not connect to host
+ocad.com.au: did not receive HSTS header
ocapic.com: could not connect to host
occ.gov: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
occasion-impro.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -9828,7 +10620,7 @@ octo.im: could not connect to host
octocat.ninja: could not connect to host
octod.tk: could not connect to host
octofox.de: did not receive HSTS header
-octopus-agents.com: could not connect to host
+octothorpe.ninja: could not connect to host
oddmouse.com: could not connect to host
odin.xxx: could not connect to host
odinkapital.no: did not receive HSTS header
@@ -9839,11 +10631,11 @@ odysseyconservationtrust.com: did not receive HSTS header
oe8.bet: could not connect to host
ofcourselanguages.com: could not connect to host
ofcss.com: did not receive HSTS header
-ofda.gov: max-age too low: 604800
ofer.site: did not receive HSTS header
off-the-clock.us: could not connect to host
offenedialoge.de: max-age too low: 2592000
offersgame.com: could not connect to host
+offerstone.cl: did not receive HSTS header
offgames.pro: could not connect to host
office-ruru.com: could not connect to host
officeclub.com.mx: did not receive HSTS header
@@ -9858,19 +10650,23 @@ oganek.ie: could not connect to host
oganime.com: did not receive HSTS header
oggw.us: could not connect to host
ogkw.de: could not connect to host
+oglen.ca: could not connect to host
ogogoshop.com: could not connect to host
ogrodywstudniach.pl: did not receive HSTS header
ohayosoro.me: could not connect to host
ohm2013.org: did not receive HSTS header
-ohma.ga: could not connect to host
+ohma.ga: did not receive HSTS header
ohnemusik.com: could not connect to host
ohohrazi.com: did not receive HSTS header
+ohreally.de: could not connect to host
ohsocool.org: did not receive HSTS header
oiepoie.nl: could not connect to host
oinky.ddns.net: could not connect to host
oishioffice.com: did not receive HSTS header
ojbk.eu: could not connect to host
+ojeremy.com: could not connect to host
ojls.co: could not connect to host
+ojp.gov: could not connect to host
okad-center.de: could not connect to host
okad.de: could not connect to host
okad.eu: could not connect to host
@@ -9884,9 +10680,10 @@ okok.rent: could not connect to host
okutama.in.th: could not connect to host
olafnorge.de: did not receive HSTS header
olcso-vps-szerver.hu: could not connect to host
-oldandyounglesbians.us: did not receive HSTS header
+oldandyounglesbians.us: could not connect to host
oldschool-criminal.com: did not receive HSTS header
oldtimer-trifft-flugplatz.de: did not receive HSTS header
+olgui.net: could not connect to host
oliverdunk.com: did not receive HSTS header
ollehbizev.co.kr: could not connect to host
olswangtrainees.com: could not connect to host
@@ -9895,10 +10692,12 @@ omacostudio.com: could not connect to host
omarh.net: could not connect to host
omgaanmetidealen.com: could not connect to host
ominto.com: did not receive HSTS header
+omise.co: did not receive HSTS header
ommahpost.com: did not receive HSTS header
omnigon.network: could not connect to host
omnilab.tech: could not connect to host
omniti.com: max-age too low: 1
+omorashi.org: could not connect to host
omquote.gq: could not connect to host
omskit.ru: did not receive HSTS header
omyogarishikesh.com: did not receive HSTS header
@@ -9911,10 +10710,10 @@ onecycling.world: could not connect to host
onefour.co: could not connect to host
onehourloan.com: could not connect to host
onehourloan.sg: did not receive HSTS header
-oneidentity.me: could not connect to host
oneiros.cc: could not connect to host
-onelawsuit.com: did not receive HSTS header
+onelawsuit.com: could not connect to host
oneminutefilm.tv: did not receive HSTS header
+onemusou.com: could not connect to host
onepathnetwork.com: max-age too low: 7776000
onepluscamps.com: did not receive HSTS header
onepopstore.com: could not connect to host
@@ -9925,21 +10724,24 @@ onetly.com: could not connect to host
onetwentyseven001.com: did not receive HSTS header
onewebdev.info: could not connect to host
oneworldbank.com: did not receive HSTS header
-onewpst.com: did not receive HSTS header
+onewpst.com: could not connect to host
onguardonline.gov: did not receive HSTS header
oniichan.us: did not receive HSTS header
+onionbot.ga: could not connect to host
onioncloud.org: could not connect to host
onionsburg.com: could not connect to host
online-casino.eu: did not receive HSTS header
online-scene.com: did not receive HSTS header
online-wetten.de: did not receive HSTS header
onlinebiller.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-onlinebillingform.com: did not receive HSTS header
+onlinebillingform.com: could not connect to host
+onlinecasinobluebook.com: could not connect to host
onlinecompliance.org: did not receive HSTS header
onlinedemo.hu: could not connect to host
onlinedeposit.us: could not connect to host
onlinekasino.de: did not receive HSTS header
onlinepollsph.com: could not connect to host
+onlineporno.tv: could not connect to host
onlineschadestaat.nl: did not receive HSTS header
onlinespielothek.com: did not receive HSTS header
onlinewetten.de: could not connect to host
@@ -9947,8 +10749,10 @@ only-roses.co.uk: did not receive HSTS header
only-roses.com: max-age too low: 2592000
onlyshopstation.com: did not receive HSTS header
onlyzero.net: could not connect to host
-onmuvo.com: did not receive HSTS header
+onmuvo.com: could not connect to host
onmyoji.biz: could not connect to host
+onnee.ch: could not connect to host
+ono.es: did not receive HSTS header
ononpay.com: did not receive HSTS header
onovlena.dn.ua: could not connect to host
onpatient.com: did not receive HSTS header
@@ -9974,7 +10778,7 @@ ooooush.co.uk: could not connect to host
oopsmycase.com: could not connect to host
oopsorup.com: could not connect to host
oost.io: could not connect to host
-opatut.de: could not connect to host
+opatut.de: did not receive HSTS header
opcaobolsas.com.br: could not connect to host
open-future.be: did not receive HSTS header
open-mx.de: could not connect to host
@@ -9997,33 +10801,39 @@ opensourcehouse.net: could not connect to host
openspace.xxx: did not receive HSTS header
opensrd.com: could not connect to host
openssf.org: did not receive HSTS header
-opentexon.com: could not connect to host
+opentexon.com: did not receive HSTS header
openxmpp.com: could not connect to host
+operad.fr: could not connect to host
opiates.net: did not receive HSTS header
opic.gov: could not connect to host
opim.ca: did not receive HSTS header
opinion8td.com: did not receive HSTS header
opinionicentrifuga.it: could not connect to host
opinionipannolini.it: could not connect to host
+opioids.com: could not connect to host
+oppag.com.br: did not receive HSTS header
opperwall.net: could not connect to host
opportunitycorps.org: max-age too low: 43200
-oprbox.com: could not connect to host
+opposer.me: could not connect to host
opsafewinter.net: could not connect to host
opsbears.com: did not receive HSTS header
-opstacks.com: did not receive HSTS header
+opstacks.com: could not connect to host
optenhoefel.de: could not connect to host
optimal-e.com: did not receive HSTS header
optimista.soy: could not connect to host
+optimize-jpg.com: could not connect to host
optometriepunt.nl: did not receive HSTS header
optumrxhealthstore.com: could not connect to host
opunch.org: did not receive HSTS header
oracaodocredo.com.br: could not connect to host
orangekey.tk: could not connect to host
+orangetravel.eu: could not connect to host
oranic.com: did not receive HSTS header
orbiosales.com: could not connect to host
orbitcom.de: did not receive HSTS header
orbitdefence.co.uk: could not connect to host
orbograph-hrcm.com: could not connect to host
+orcahq.com: did not receive HSTS header
order.one: could not connect to host
ordereat.fr: could not connect to host
orderlounge.de: did not receive HSTS header
@@ -10031,31 +10841,33 @@ oref-idf.com: did not receive HSTS header
oref-idf.net: did not receive HSTS header
oref-idf.org: did not receive HSTS header
oregonmu.org: did not receive HSTS header
-oreka.online: could not connect to host
orelavtomaster.ru: did not receive HSTS header
orfeo-engineering.ch: could not connect to host
organic-superfood.net: could not connect to host
+organicae.com: did not receive HSTS header
+organisationsberatung-jacobi.de: did not receive HSTS header
+orhideous.name: did not receive HSTS header
oricejoc.com: could not connect to host
originalmockups.com: did not receive HSTS header
-originalsport.com.br: did not receive HSTS header
-originpc.com: could not connect to host
+originalsport.com.br: could not connect to host
orioncustompcs.com: could not connect to host
orionfcu.com: did not receive HSTS header
-orionfinancialservices.com: did not receive HSTS header
orionrebellion.com: did not receive HSTS header
orleika.ml: could not connect to host
oroweatorganic.com: could not connect to host
orthodoxy.lt: did not receive HSTS header
-orum.in: could not connect to host
+orui.com.br: could not connect to host
osaiyuwu.com: could not connect to host
-oscarmashauri.com: could not connect to host
+osaka-fukushi.jp: max-age too low: 0
+osaka-jusan.jp: max-age too low: 0
+oscarmashauri.com: did not receive HSTS header
oscillation-services.fr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-oscloud.com: could not connect to host
oscloud.com.ua: could not connect to host
oscreen.me: could not connect to host
oscreen.org: could not connect to host
oscsdp.cz: could not connect to host
-osdls.gov: could not connect to host
+osdls.gov: did not receive HSTS header
+osereso.tn: could not connect to host
osha-kimi.com: did not receive HSTS header
oshanko.de: could not connect to host
oshinagaki.jp: could not connect to host
@@ -10075,33 +10887,35 @@ othermedia.cc: [Exception... "Component returned failure code: 0x80004005 (NS_ER
otherstuff.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
otichi.com: did not receive HSTS header
otinane.eu: could not connect to host
+otmns.net: could not connect to host
otokonna.com: could not connect to host
otrsdemo.hu: did not receive HSTS header
ottospora.nl: could not connect to host
ourbank.com: max-age too low: 2592000
ourchoice2016.com: could not connect to host
-outdooradventures.pro: did not receive HSTS header
-outdoorproducts.com: did not receive HSTS header
+ourls.win: could not connect to host
+outdooradventures.pro: could not connect to host
+outdoorproducts.com: max-age too low: 7889238
outreachbuddy.com: could not connect to host
outsider.im: could not connect to host
outurnate.com: could not connect to host
ouvirmusica.com.br: did not receive HSTS header
ovenapp.io: did not receive HSTS header
over25tips.com: did not receive HSTS header
-overclockers.ge: could not connect to host
override.io: could not connect to host
overrustle.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
oversight.io: could not connect to host
-overstockpromote.com: did not receive HSTS header
ovuscloud.de: could not connect to host
ovwane.com: could not connect to host
owennelson.me: max-age too low: 2592000
owensmith.website: could not connect to host
owlscrap.ru: could not connect to host
owncloud.help: could not connect to host
-owngeek.com: did not receive HSTS header
+owngeek.com: could not connect to host
ownmovies.fr: could not connect to host
ownspec.com: could not connect to host
+owothisdiz.pw: could not connect to host
+oxanababy.com: could not connect to host
oxro.co: did not receive HSTS header
oxro.io: did not receive HSTS header
oxygenabsorbers.com: did not receive HSTS header
@@ -10124,25 +10938,25 @@ paavolastudio.com: did not receive HSTS header
pablocamino.tk: could not connect to host
pablofain.com: did not receive HSTS header
pablorey-art.com: did not receive HSTS header
+pachaiyappas.org: did not receive HSTS header
packair.com: did not receive HSTS header
packetapp.ru: could not connect to host
packetcrash.net: could not connect to host
packlane.com: did not receive HSTS header
-packshot-creator.com: did not receive HSTS header
pacnetwork.io: could not connect to host
pacoda.de: could not connect to host
pactf-flag-4boxdpa21ogonzkcrs9p.com: could not connect to host
pactocore.org: could not connect to host
+padeoe.com: did not receive HSTS header
pader-deko.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
paestbin.com: could not connect to host
page: could not connect to host
-pagefulloflies.io: could not connect to host
pagerate.io: could not connect to host
pages-tocaven.com: could not connect to host
pagetoimage.com: could not connect to host
paginapolitica.ro: could not connect to host
-pahlawanpulsa.com: did not receive HSTS header
-pahnid.com: did not receive HSTS header
+pagure.org: could not connect to host
+pahnid.com: could not connect to host
paigeglass.com: did not receive HSTS header
paino.cloud: could not connect to host
painosso.org: could not connect to host
@@ -10150,21 +10964,25 @@ paintingat.com: could not connect to host
paio2-rec.com: could not connect to host
paio2.com: did not receive HSTS header
paisaone.com: could not connect to host
+paizinhovirgula.com: did not receive HSTS header
pajonzeck.de: could not connect to host
paket.io: could not connect to host
-paket.ml: could not connect to host
+paket.ml: did not receive HSTS header
+paketkreditsuzuki.com: could not connect to host
paku.me: could not connect to host
palariviera.com: could not connect to host
palationtrade.com: could not connect to host
+palawan.jp: could not connect to host
palazzotalamo.it: did not receive HSTS header
+paleolowcarb.de: did not receive HSTS header
paleosquawk.com: could not connect to host
-pallet.io: could not connect to host
+pallet.io: did not receive HSTS header
palmer.im: could not connect to host
pammbook.com: did not receive HSTS header
pamplona.tv: could not connect to host
pan.tips: could not connect to host
panaceallc.net: could not connect to host
-panama-gbs.com: could not connect to host
+panama-gbs.com: did not receive HSTS header
panamaequity.com: did not receive HSTS header
panamateakforestry.com: did not receive HSTS header
panascais.io: could not connect to host
@@ -10176,28 +10994,31 @@ panni.me: could not connect to host
panoranordic.net: could not connect to host
panos.io: did not receive HSTS header
pansu.space: could not connect to host
-pants-off.xyz: could not connect to host
pantsu.cat: did not receive HSTS header
+paolo565.org: did not receive HSTS header
papalytics.com: could not connect to host
papatest24.de: could not connect to host
papeda.net: could not connect to host
papelariadante.com.br: could not connect to host
papercard.co.uk: did not receive HSTS header
papercrunch.io: could not connect to host
+paperhaven.com.au: max-age too low: 7889238
+papermasters.com: could not connect to host
+papersmart.net: could not connect to host
papierniak.net: could not connect to host
papygeek.com: could not connect to host
-parabhairavayoga.com: max-age too low: 0
+parabhairavayoga.com: did not receive HSTS header
paradiesgirls.ch: could not connect to host
paradise-engineers.com: could not connect to host
paragon.edu: did not receive HSTS header
parakranov.ru: did not receive HSTS header
paranormalweirdo.com: could not connect to host
+parav.xyz: did not receive HSTS header
pardnoy.com: could not connect to host
parent5446.us: could not connect to host
parentmail.co.uk: did not receive HSTS header
-parfum-baza.ru: did not receive HSTS header
+parfum-baza.ru: could not connect to host
paris-cyber.fr: did not receive HSTS header
-parisbloom.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
parisdimanche.com: did not receive HSTS header
parishome.jp: could not connect to host
parisvox.info: did not receive HSTS header
@@ -10213,25 +11034,27 @@ parpaing-paillette.net: could not connect to host
particonpsplus.it: could not connect to host
partiono.com: did not receive HSTS header
partirkyoto.jp: did not receive HSTS header
-partnercardservices.com: did not receive HSTS header
+partnercardservices.com: could not connect to host
partnerwerk.de: did not receive HSTS header
partyhaus.ovh: could not connect to host
partyhireformby.co.uk: did not receive HSTS header
+partyschnaps.com: could not connect to host
partyspecialists.com: did not receive HSTS header
partyvan.eu: could not connect to host
partyvan.it: could not connect to host
partyvan.moe: could not connect to host
partyvan.nl: could not connect to host
partyvan.se: could not connect to host
-parvaneh.fr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
pascalchristen.ch: did not receive HSTS header
+pasportaservo.org: did not receive HSTS header
passpilot.co.uk: did not receive HSTS header
passumpsicbank.com: did not receive HSTS header
passwd.io: did not receive HSTS header
-password.codes: did not receive HSTS header
+password.codes: could not connect to host
passwordbox.com: did not receive HSTS header
passwordrevelator.net: did not receive HSTS header
passwordscon.com: could not connect to host
+pasta-factory.co.il: could not connect to host
pastaf.com: could not connect to host
pastdream.xyz: could not connect to host
paste.linode.com: could not connect to host
@@ -10241,9 +11064,8 @@ paster.li: did not receive HSTS header
pasteros.io: could not connect to host
pastie.se: could not connect to host
pastorcanadense.com.br: could not connect to host
-patadanabouca.pw: could not connect to host
pataua.kiwi: did not receive HSTS header
-patbatesremodeling.com: could not connect to host
+patentfamily.de: could not connect to host
paternitydnatest.com: could not connect to host
patfs.com: did not receive HSTS header
pathwaytofaith.com: could not connect to host
@@ -10252,25 +11074,30 @@ patriaco.net: did not receive HSTS header
patrick.dark.name: could not connect to host
patrickbusch.net: could not connect to host
patrickneuro.de: could not connect to host
+patrickquinn.ca: did not receive HSTS header
patt.us: did not receive HSTS header
patterson.mp: could not connect to host
paul-kerebel.pro: could not connect to host
+paul-schmidt.de: max-age too low: 0
paulbunyanmls.com: did not receive HSTS header
paulchen.at: did not receive HSTS header
-paulerhof.com: did not receive HSTS header
paulproell.at: did not receive HSTS header
paulrudge.codes: could not connect to host
paulshir.com: could not connect to host
paulshir.is: could not connect to host
+paultibbetts.uk: could not connect to host
paulyang.cn: did not receive HSTS header
paveljanda.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
pavelkahouseforcisco.com: did not receive HSTS header
+pavelstriz.cz: could not connect to host
+pawsru.org: could not connect to host
paxdei.com.br: could not connect to host
paxwinkel.nl: could not connect to host
pay.gigahost.dk: did not receive HSTS header
pay.ubuntu.com: could not connect to host
payclixpayments.com: did not receive HSTS header
payfreez.com: could not connect to host
+paykings.com: did not receive HSTS header
payload.tech: could not connect to host
payments-reference.org: could not connect to host
payments.google.com: did not receive HSTS header (error ignored - included regardless)
@@ -10279,17 +11106,14 @@ paypod.org: could not connect to host
payroll.ch: could not connect to host
paytwopay.com: could not connect to host
pb-design.ch: could not connect to host
-pb.ax: did not receive HSTS header
pbapp.net: did not receive HSTS header
pbbr.com: did not receive HSTS header
pbcknd.ml: could not connect to host
pbcomp.com.au: did not receive HSTS header
pbprint.ru: did not receive HSTS header
-pbqs.site: could not connect to host
pbscreens.com: could not connect to host
pbytes.com: could not connect to host
pc-nf.de: did not receive HSTS header
-pc-servis-brno.com: did not receive HSTS header
pc-tweak.de: did not receive HSTS header
pcat.io: could not connect to host
pcfun.net: did not receive HSTS header
@@ -10299,25 +11123,27 @@ pcvirusclear.com: could not connect to host
pdamsidoarjo.co.id: could not connect to host
pdevio.com: could not connect to host
pdf.yt: could not connect to host
+pdomo.me: did not receive HSTS header
pe-bank.co.jp: max-age too low: 604800
pe-kyousai.jp: did not receive HSTS header
peaceandwool.com: did not receive HSTS header
peakapp.nl: could not connect to host
pebblesdemo.com: could not connect to host
pecot.fr: did not receive HSTS header
-peddy.dyndns.org: could not connect to host
-pedrosaurus.com: did not receive HSTS header
peekops.com: could not connect to host
peerherrmann.de: could not connect to host
peerless.ae: could not connect to host
+peinard.net: did not receive HSTS header
peirong.me: could not connect to host
peissen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
pekkapikkarainen.fi: did not receive HSTS header
pekkarik.ru: could not connect to host
peliculasaudiolatinoonline.com: could not connect to host
+peliseries24.com: could not connect to host
pemagrid.org: could not connect to host
pemberton.at: did not receive HSTS header
penablog.com: did not receive HSTS header
+penfold.fr: could not connect to host
pengisatelier.net: could not connect to host
pengui.uk: could not connect to host
penguinclientsystem.com: did not receive HSTS header
@@ -10325,7 +11151,7 @@ pengumuman.id: did not receive HSTS header
pennyapp.io: did not receive HSTS header
pennylane.me.uk: did not receive HSTS header
pensanisso.com: did not receive HSTS header
-penser-electronique.com: could not connect to host
+penser-electronique.com: did not receive HSTS header
pension-waldesruh.de: did not receive HSTS header
pensiunealido.ro: could not connect to host
pentagram.me: max-age too low: 2592000
@@ -10341,18 +11167,20 @@ perdel.cn: could not connect to host
pereuda.com: could not connect to host
perfect-radiant-wrinkles.com: could not connect to host
perfectionis.me: could not connect to host
-perfectionunite.com: did not receive HSTS header
+perfectionunite.com: could not connect to host
perfectseourl.com: did not receive HSTS header
+performaride.com.au: did not receive HSTS header
performaterm.ro: could not connect to host
performous.org: did not receive HSTS header
perfumista.vn: did not receive HSTS header
+periodismoactual.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
periscopeliveweb.com: could not connect to host
perlwork.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
pernatie.ru: could not connect to host
peromsik.com: did not receive HSTS header
perplex.nl: did not receive HSTS header
perrone.co: could not connect to host
-perroud.pro: could not connect to host
+perroud.pro: did not receive HSTS header
persjrp.ca: could not connect to host
persoform.ch: could not connect to host
personalcommunicationsecurity.com: could not connect to host
@@ -10364,13 +11192,14 @@ persson.im: could not connect to host
perthdevicelab.com: did not receive HSTS header
pestalozzishop.com.br: could not connect to host
pesto.video: could not connect to host
-pesyun.cn: did not receive HSTS header
pet-life.top: did not receive HSTS header
pet-nsk.ru: could not connect to host
+petangen.se: could not connect to host
petbooking.it: did not receive HSTS header
petchart.net: could not connect to host
-peterboers.info: could not connect to host
+peterfolta.net: could not connect to host
peterkshultz.com: did not receive HSTS header
+petermazur.com: did not receive HSTS header
peternagy.ie: did not receive HSTS header
petersmark.com: did not receive HSTS header
pethelpers.org: did not receive HSTS header
@@ -10378,16 +11207,19 @@ pethub.com: did not receive HSTS header
petit.site: could not connect to host
petlife.od.ua: could not connect to host
petplum.com: could not connect to host
+petrachuk.ru: could not connect to host
+petravdbos.nl: could not connect to host
petrkrapek.cz: did not receive HSTS header
petrolplus.ru: max-age too low: 7776000
petrovsky.pro: could not connect to host
petsittersservices.com: could not connect to host
-pettsy.com: could not connect to host
+pettsy.com: did not receive HSTS header
peuf.shop: could not connect to host
peuterspeelzaalhoekvanholland.nl: could not connect to host
pewboards.com: could not connect to host
pexieapp.com: did not receive HSTS header
peykezamin.ir: did not receive HSTS header
+peyote.org: could not connect to host
peytonfarrar.com: could not connect to host
pferdeeinstreu-kaufen.com: did not receive HSTS header
pfgshop.com.br: could not connect to host
@@ -10395,12 +11227,10 @@ pflegedienst-gratia.de: max-age too low: 300
pfolta.net: could not connect to host
pgcpbc.com: could not connect to host
pgmsource.com: could not connect to host
-pgnetwork.net: could not connect to host
pgpm.io: could not connect to host
pgregg.com: did not receive HSTS header
pgtb.be: could not connect to host
phalconist.com: could not connect to host
-pharmaboard.org: could not connect to host
pharmgkb.org: could not connect to host
phcmembers.com: did not receive HSTS header
phcnetworks.net: did not receive HSTS header
@@ -10416,17 +11246,18 @@ philadelphiadancefoundation.org: could not connect to host
philipmordue.co.uk: could not connect to host
philippa.cool: could not connect to host
phillippi.me: could not connect to host
+phillipsuk.com: max-age too low: 0
phillmoore.com: did not receive HSTS header
phillprice.com: did not receive HSTS header
philonas.net: did not receive HSTS header
philpropertygroup.com: could not connect to host
+phippsreporting.com: did not receive HSTS header
phoebe.co.nz: did not receive HSTS header
phoenicis.com.ua: did not receive HSTS header
phoenix.dj: did not receive HSTS header
-phoenixlogan.com: could not connect to host
phonenumberinfo.co.uk: could not connect to host
phongmay24h.com: could not connect to host
-phood.be: did not receive HSTS header
+phood.be: could not connect to host
photoblogverona.com: could not connect to host
photoboothpartyhire.co.uk: did not receive HSTS header
photographyforchange.com: could not connect to host
@@ -10439,7 +11270,6 @@ phperformances.fr: did not receive HSTS header
phpfashion.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
phrasing.me: could not connect to host
phuong.faith: could not connect to host
-physicaltherapist.com: did not receive HSTS header
pi-eng.fr: did not receive HSTS header
pianetaottica.eu: could not connect to host
pianetaottica.info: could not connect to host
@@ -10447,6 +11277,7 @@ pianetaottica.net: could not connect to host
pianetaottica.org: could not connect to host
pias-button.net: did not receive HSTS header
piasto.com.cy: could not connect to host
+piatanoua.md: could not connect to host
picallo.es: could not connect to host
picardiascr.com: could not connect to host
pickr.co: could not connect to host
@@ -10457,10 +11288,12 @@ picscare.co.uk: did not receive HSTS header
picshare.nz: could not connect to host
pidatacenters.com: did not receive HSTS header
pidomex.com: did not receive HSTS header
+piedfeed.com: did not receive HSTS header
piekacz.co.uk: could not connect to host
pierrejeansuau.fr: could not connect to host
pieterjangeeroms.me: could not connect to host
piggott.me.uk: did not receive HSTS header
+piils.fr: did not receive HSTS header
pikmy.com: could not connect to host
pilgermaske.org: did not receive HSTS header
piligrimname.com: could not connect to host
@@ -10471,10 +11304,13 @@ pims.global: did not receive HSTS header
pimspage.nl: could not connect to host
pin.net.au: did not receive HSTS header
pinebaylibrary.org: could not connect to host
+pinesandneedles.com: max-age too low: 7889238
pinkfis.ch: did not receive HSTS header
pinkhq.com: did not receive HSTS header
pinkinked.com: could not connect to host
-pinoyonlinetv.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+pinkyf.com: did not receive HSTS header
+pinoylinux.org: did not receive HSTS header
+pintoselectrician.co.za: did not receive HSTS header
pioche.ovh: did not receive HSTS header
pipenny.net: could not connect to host
pippen.io: could not connect to host
@@ -10488,7 +11324,7 @@ piratedot.com: could not connect to host
piratelist.online: could not connect to host
piratenlogin.de: could not connect to host
piratepay.io: could not connect to host
-piratepay.ir: could not connect to host
+piratepay.ir: did not receive HSTS header
pirateproxy.pe: could not connect to host
pirateproxy.sx: did not receive HSTS header
pirateproxy.vip: could not connect to host
@@ -10501,15 +11337,14 @@ pisidia.de: could not connect to host
pitchup.com: did not receive HSTS header
pitonarms.com: could not connect to host
pitsstop.nu: could not connect to host
-pittaya.com: could not connect to host
+pittaya.com: did not receive HSTS header
pittonpreschool.com: did not receive HSTS header
-piwko.co: could not connect to host
pix-geeks.com: max-age too low: 2592000
pixdigital.net: did not receive HSTS header
pixeame.com: did not receive HSTS header
pixel.google.com: did not receive HSTS header (error ignored - included regardless)
pixelcode.com.au: could not connect to host
-pixelcubed.com: could not connect to host
+pixelesque.uk: could not connect to host
pixelgliders.de: could not connect to host
pixelhero.co.uk: did not receive HSTS header
pixi.chat: could not connect to host
@@ -10518,9 +11353,11 @@ pixlfox.com: could not connect to host
pizzadoc.ch: could not connect to host
pj83.duckdns.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
pj881988.com: could not connect to host
-pjbet.mg: did not receive HSTS header
+pjbet.mg: could not connect to host
+pjsec.tk: could not connect to host
pkautodesign.com: did not receive HSTS header
pkschat.com: could not connect to host
+pksps.com: could not connect to host
plaasprodukte.com: could not connect to host
placefade.com: could not connect to host
placehold.co: did not receive HSTS header
@@ -10529,13 +11366,12 @@ plaettliaktion.ch: did not receive HSTS header
plagiarismcheck.org: max-age too low: 604800
plakbak.nl: could not connect to host
planbox.info: could not connect to host
-planespotterblog.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
planete-secu.com: could not connect to host
+planetromeo.com: could not connect to host
planktonholland.com: did not receive HSTS header
planpharmacy.com: could not connect to host
plant.ml: could not connect to host
-plantastique.com: did not receive HSTS header
-plantroon.com: could not connect to host
+plantroon.com: did not receive HSTS header
plass.hamburg: could not connect to host
plasvilledescartaveis.com.br: could not connect to host
platform.lookout.com: could not connect to host
@@ -10548,10 +11384,12 @@ playflick.com: did not receive HSTS header
playmaker.io: did not receive HSTS header
playmaza.live: did not receive HSTS header
playmfe.com: could not connect to host
-playnation.io: could not connect to host
+playsoundevents.be: could not connect to host
playsource.co: could not connect to host
playwhyyza.com: could not connect to host
+playyou.be: could not connect to host
please-deny.me: did not receive HSTS header
+pleaseuseansnisupportedbrowser.ml: could not connect to host
pleasure-science.com: could not connect to host
pleasure.forsale: could not connect to host
plen.io: could not connect to host
@@ -10570,12 +11408,12 @@ ploup.net: could not connect to host
pluff.nl: did not receive HSTS header
plugboard.xyz: could not connect to host
pluggedhead.com: did not receive HSTS header
+plumbingman.com.au: did not receive HSTS header
plus-digital.net: did not receive HSTS header
plus-u.com.au: did not receive HSTS header
plus.sandbox.google.com: did not receive HSTS header (error ignored - included regardless)
plus1s.tk: could not connect to host
plussizereviews.com: could not connect to host
-plustech.id: did not receive HSTS header
plut.org: did not receive HSTS header
plymouthsoftplay.co.uk: could not connect to host
pm13-media.cz: could not connect to host
@@ -10590,13 +11428,14 @@ pnukee.com: did not receive HSTS header
po.gl: could not connect to host
pocakdrops.com: did not receive HSTS header
pocket-lint.com: did not receive HSTS header
-pocketinsure.com: could not connect to host
+pocketfullofapps.com: did not receive HSTS header
pocketmemories.net: could not connect to host
pocketsix.com: could not connect to host
pocloud.homelinux.net: could not connect to host
pocobelli.ch: did not receive HSTS header
podcast.style: could not connect to host
podiumsdiskussion.org: did not receive HSTS header
+pogoswine.com: could not connect to host
pogs.us: could not connect to host
poiema.com.sg: did not receive HSTS header
poinsot.beer: could not connect to host
@@ -10610,6 +11449,7 @@ pol-expo.ru: could not connect to host
pol.in.th: could not connect to host
polandb2b.directory: could not connect to host
polarityschule.com: did not receive HSTS header
+pole.net.nz: did not receive HSTS header
poleartschool.com: could not connect to host
polen.guide: could not connect to host
policeiwitness.sg: could not connect to host
@@ -10621,28 +11461,29 @@ politically-incorrect.xyz: could not connect to host
politiewervingshop.nl: did not receive HSTS header
politologos.org: could not connect to host
pollpodium.nl: could not connect to host
-polly.spdns.org: could not connect to host
polsport.live: did not receive HSTS header
polycoise.com: could not connect to host
polycrypt.us: could not connect to host
polymorph.rs: could not connect to host
polypho.nyc: could not connect to host
polysage.org: could not connect to host
+polytechecosystem.vc: could not connect to host
pomfe.co: could not connect to host
pompefunebrilariviera.it: could not connect to host
pompompoes.com: did not receive HSTS header
pondof.fish: could not connect to host
-poneytelecom.org: did not receive HSTS header
+poneytelecom.org: could not connect to host
ponteencima.com: could not connect to host
ponteus.com: could not connect to host
pontodogame.com.br: could not connect to host
pontokay.com.br: could not connect to host
pontualcomp.com: could not connect to host
-pony.today: did not receive HSTS header
+pony.today: could not connect to host
ponythread.com: did not receive HSTS header
poolinstallers.co.za: could not connect to host
poolsandstuff.com: did not receive HSTS header
poon.tech: could not connect to host
+popcultureshack.com: could not connect to host
popi.se: did not receive HSTS header
popkins.cf: could not connect to host
popkins.ga: could not connect to host
@@ -10651,30 +11492,40 @@ popkins.ml: could not connect to host
popkins.tk: could not connect to host
popupsoftplay.com: could not connect to host
poris.web.id: could not connect to host
+porn77.info: could not connect to host
+pornbay.org: could not connect to host
pornblog.org: could not connect to host
+porncandi.com: could not connect to host
+porno-gif.ru: could not connect to host
+pornohub.su: could not connect to host
+pornolab-net.appspot.com: could not connect to host
+pornoserver.eu: could not connect to host
pornstars.me: did not receive HSTS header
porschen.fr: could not connect to host
port.social: could not connect to host
-portailevangelique.ca: did not receive HSTS header
+portale-randkowe.pl: did not receive HSTS header
+portalhubnuti.cz: did not receive HSTS header
portalisapres.cl: could not connect to host
portalm.tk: could not connect to host
portalmundo.xyz: could not connect to host
portalplatform.net: could not connect to host
-portaluniversalista.org: could not connect to host
+portaluniversalista.org: did not receive HSTS header
portefeuillesignalen.nl: did not receive HSTS header
-portofrotterdam.com: could not connect to host
+posbank.co.uk: could not connect to host
poshpak.com: max-age too low: 86400
-positivenames.net: could not connect to host
+positivesobrietyinstitute.com: did not receive HSTS header
post4me.at: could not connect to host
postback.io: did not receive HSTS header
postcardpayment.com: could not connect to host
postcodegarant.nl: could not connect to host
+postcodewise.co.uk: could not connect to host
posters.win: could not connect to host
postscheduler.org: could not connect to host
posylka.de: did not receive HSTS header
potatoheads.net: could not connect to host
potbar.com: could not connect to host
potbox.com: could not connect to host
+potenzmittelblog.info: could not connect to host
potlytics.com: could not connect to host
potomania.cz: could not connect to host
potpourrifestival.de: did not receive HSTS header
@@ -10695,7 +11546,6 @@ powerb.ch: did not receive HSTS header
powerentertainment.tv: could not connect to host
poweroff.win: could not connect to host
powerplannerapp.com: could not connect to host
-powersergthisisthewebsitefuckyouscott.com: did not receive HSTS header
powersergunited.com: could not connect to host
powersergunited.org: could not connect to host
powershellmagic.com: could not connect to host
@@ -10706,7 +11556,7 @@ pozniak.at: did not receive HSTS header
pozyczka-bez-zaswiadczen.pl: did not receive HSTS header
pozytywnyplan.pl: could not connect to host
pozzo-balbi.com: did not receive HSTS header
-ppoozl.com: could not connect to host
+ppembed.com: did not receive HSTS header
pppo.gov: could not connect to host
ppr-truby.ru: could not connect to host
ppuu.org: did not receive HSTS header
@@ -10719,7 +11569,7 @@ praxis-research.info: did not receive HSTS header
precedecaritas.com.br: could not connect to host
precisionaeroimaging.com: did not receive HSTS header
prediksisydney.com: could not connect to host
-preexport.com: could not connect to host
+preexport.com: did not receive HSTS header
preezzie.com: could not connect to host
prefis.com: did not receive HSTS header
prefontaine.name: could not connect to host
@@ -10729,19 +11579,22 @@ preisser.it: did not receive HSTS header
preissler.co.uk: could not connect to host
prekladysanca.cz: could not connect to host
prelist.org: did not receive HSTS header
+premaritalsex.info: could not connect to host
premioambiente.it: did not receive HSTS header
premiumzweirad.de: max-age too low: 7776000
+prepaidgirl.com: could not connect to host
prepandgo-euro.com: could not connect to host
-preposted.com: did not receive HSTS header
-preppertactics.com: did not receive HSTS header
+preposted.com: could not connect to host
+preppertactics.com: could not connect to host
preprodfan.gov: could not connect to host
+prescriptionrex.com: did not receive HSTS header
presidentials2016.com: could not connect to host
press-anime-nenkan.com: did not receive HSTS header
press-presse.ca: did not receive HSTS header
pressenews.net: did not receive HSTS header
pressfreedomfoundation.org: did not receive HSTS header
prestigeeventshire.co.uk: could not connect to host
-prestonapp.com: did not receive HSTS header
+prestonapp.com: could not connect to host
prettygrouse.com: did not receive HSTS header
prettyphotoart.de: did not receive HSTS header
prettytunesapp.com: could not connect to host
@@ -10749,13 +11602,15 @@ pretzlaff.info: did not receive HSTS header
preworkout.me: could not connect to host
prgslab.net: could not connect to host
priceholic.com: could not connect to host
+priceremoval.net: could not connect to host
+pridetechdesign.com: did not receive HSTS header
pridoc.se: did not receive HSTS header
prifo.se: could not connect to host
prijsvergelijken.ml: could not connect to host
prilock.com: did not receive HSTS header
primecaplending.com: could not connect to host
+primordialsnooze.com: could not connect to host
primotiles.co.uk: did not receive HSTS header
-primotilesandbathrooms.co.uk: did not receive HSTS header
prinbanat.ngo: did not receive HSTS header
princeofwhales.com: did not receive HSTS header
princessbackpack.de: could not connect to host
@@ -10765,15 +11620,16 @@ printerest.io: could not connect to host
printersonline.be: did not receive HSTS header
printery.be: could not connect to host
printfn.com: did not receive HSTS header
+printler.com: did not receive HSTS header
priolkar.com: could not connect to host
prism-communication.com: could not connect to host
-prismacloud.xyz: did not receive HSTS header
pristineevents.co.uk: did not receive HSTS header
pritchett.xyz: could not connect to host
privacylabs.io: did not receive HSTS header
privacymanatee.com: could not connect to host
privacynow.eu: did not receive HSTS header
privacyrup.net: could not connect to host
+privategiant.com: could not connect to host
privatstunden.express: could not connect to host
privcloud.org: could not connect to host
privilegevisa.fr: could not connect to host
@@ -10795,16 +11651,19 @@ profloorstl.com: did not receive HSTS header
profpay.com: could not connect to host
profundr.com: could not connect to host
profusion.io: could not connect to host
-progblog.net: could not connect to host
+progblog.net: max-age too low: 0
progolfjourney.com: could not connect to host
program-and.work: could not connect to host
+programmaticmagic.com: could not connect to host
programmingstudent.com: could not connect to host
progress-technologies.com: could not connect to host
progressivecfo.co.nz: could not connect to host
prohostonline.fi: could not connect to host
proitconsulting.com.au: could not connect to host
proj.org.cn: could not connect to host
+project-rune.tech: could not connect to host
project-sparks.eu: did not receive HSTS header
+project-splash.com: could not connect to host
project-stats.com: could not connect to host
projectascension.io: could not connect to host
projectasterk.com: could not connect to host
@@ -10817,9 +11676,9 @@ projectvault.ovh: did not receive HSTS header
projectx.top: did not receive HSTS header
projekt-umbriel.de: could not connect to host
projektik.cz: did not receive HSTS header
+projektzentrisch.de: could not connect to host
projetoresecia.com: could not connect to host
prokop.ovh: could not connect to host
-prolan.pw: did not receive HSTS header
promarketer.net: did not receive HSTS header
promecon-gmbh.de: did not receive HSTS header
promedicalapplications.com: did not receive HSTS header
@@ -10839,17 +11698,20 @@ proslimdiets.com: could not connect to host
prosocialmachines.com: could not connect to host
prosoft.sk: did not receive HSTS header
prosperident.com: did not receive HSTS header
+prostoporno.net: could not connect to host
proteapower.co.za: could not connect to host
protecciondelconsumidor.gov: did not receive HSTS header
+protech.ge: did not receive HSTS header
proteinnuts.cz: could not connect to host
proteinnuts.sk: could not connect to host
protonmail.ch: did not receive HSTS header
protoyou.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-provisionaldriving.com: could not connect to host
-provitacare.com: could not connect to host
+provisionaldriving.com: did not receive HSTS header
+provisionircd.tk: could not connect to host
+provitacare.com: did not receive HSTS header
proweser.de: did not receive HSTS header
prowhisky.de: did not receive HSTS header
-proxbox.net: could not connect to host
+proxbox.net: did not receive HSTS header
proxi.cf: could not connect to host
proximato.com: could not connect to host
proxybay.al: could not connect to host
@@ -10871,7 +11733,7 @@ prxio.site: could not connect to host
ps-qa.com: could not connect to host
ps-x.ru: could not connect to host
pscleaningsolutions.co.uk: could not connect to host
-pshostpk.com: did not receive HSTS header
+pseudo.coffee: could not connect to host
psicologia.co.ve: could not connect to host
psicologoforensebarcelona.com: did not receive HSTS header
psicosalud.online: could not connect to host
@@ -10880,23 +11742,22 @@ psncardplus.com: could not connect to host
psncardplus.dk: could not connect to host
psncardplus.nl: could not connect to host
psncardplus.se: could not connect to host
-pstrozniak.com: could not connect to host
pstudio.me: max-age too low: 0
psw.academy: could not connect to host
psw.consulting: could not connect to host
psychiatrie-betreuung.ch: did not receive HSTS header
psychoco.net: could not connect to host
-psychologie-hofner.at: could not connect to host
psynapse.net.au: could not connect to host
ptn.moscow: could not connect to host
ptonet.com: could not connect to host
-ptrbrs.nl: could not connect to host
ptrujillo.com: did not receive HSTS header
+pub-online.ro: could not connect to host
pubkey.is: could not connect to host
publications.qld.gov.au: did not receive HSTS header
publicidadnovagrass.com.mx: could not connect to host
publicspeakingcamps.com: could not connect to host
publimepa.it: could not connect to host
+publishingshack.com: did not receive HSTS header
puchunguis.com: did not receive HSTS header
puentes.info: did not receive HSTS header
puetter.eu: could not connect to host
@@ -10917,6 +11778,7 @@ punkdns.top: could not connect to host
puppydns.com: did not receive HSTS header
purahealthyliving.com: could not connect to host
purbd.com: did not receive HSTS header
+pureholisticliving.me: could not connect to host
purewebmasters.com: could not connect to host
purplehippie.in: did not receive HSTS header
purplez.pw: did not receive HSTS header
@@ -10952,17 +11814,18 @@ q-rickroll-u.pw: could not connect to host
q2.si: did not receive HSTS header
q8mp3.me: did not receive HSTS header
qadmium.tk: could not connect to host
-qaz.cloud: did not receive HSTS header
+qamrulhaque.com: could not connect to host
qazcloud.com: could not connect to host
qbik.de: did not receive HSTS header
qbin.io: did not receive HSTS header
qbnt.ca: could not connect to host
qccqld.org.au: could not connect to host
qe2homelottery.com: did not receive HSTS header
+qensio.com: did not receive HSTS header
qforum.org: could not connect to host
qi0.de: did not receive HSTS header
qiannews.net: could not connect to host
-qikan.net: could not connect to host
+qifu.org.cn: could not connect to host
qimiao.io: did not receive HSTS header
qingxuan.info: could not connect to host
qinxi1992.com: could not connect to host
@@ -10970,9 +11833,7 @@ qionglu.pw: could not connect to host
qipp.com: did not receive HSTS header
qirinus.com: did not receive HSTS header
qixxit.de: did not receive HSTS header
-qkmortgage.com: could not connect to host
qldconservation.org: could not connect to host
-qledtech.com: did not receive HSTS header
qnatek.org: could not connect to host
qonqa.de: did not receive HSTS header
qoohoot.com: did not receive HSTS header
@@ -10981,25 +11842,28 @@ qoqo.us: did not receive HSTS header
qorm.co.uk: could not connect to host
qqj.net: could not connect to host
qqq.gg: could not connect to host
+qqvips.com: could not connect to host
+qqvrsmart.cn: could not connect to host
qrara.net: did not receive HSTS header
qredo.com: did not receive HSTS header
qrforex.com: did not receive HSTS header
qrlending.com: could not connect to host
qrlfinancial.com: could not connect to host
qswoo.org: did not receive HSTS header
+qto.com: could not connect to host
qto.org: could not connect to host
quail.solutions: could not connect to host
quakerlens.com: did not receive HSTS header
quality1.com.br: did not receive HSTS header
qualityology.com: did not receive HSTS header
quanglepro.com: could not connect to host
-quangngaimedia.com: did not receive HSTS header
-quanjinlong.cn: could not connect to host
+quangngaimedia.com: could not connect to host
+quanjinlong.cn: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
quantacloud.ch: could not connect to host
quantenteranik.eu: could not connect to host
quantor.dk: did not receive HSTS header
quantum-cloud.xyz: could not connect to host
-quantum-ethics.com: did not receive HSTS header
+quantum-ethics.com: could not connect to host
quantum-lviv.pp.ua: could not connect to host
quantumcore.cn: could not connect to host
quantumcourse.org: did not receive HSTS header
@@ -11011,6 +11875,7 @@ quelmandataire.fr: did not receive HSTS header
queroreceitasoberana.com.br: did not receive HSTS header
queryplayground.com: could not connect to host
questions-admin.com: did not receive HSTS header
+questionyu.com: did not receive HSTS header
questsandrewards.com: could not connect to host
quic.fr: did not receive HSTS header
quickandroid.tools: could not connect to host
@@ -11024,38 +11889,38 @@ quizmemes.org: could not connect to host
quotehex.com: could not connect to host
quotemaster.co.za: could not connect to host
quranserver.net: could not connect to host
+qwallet.ca: did not receive HSTS header
+qwaser.fr: could not connect to host
qwilink.me: did not receive HSTS header
-qybot.cc: did not receive HSTS header
+qybot.cc: could not connect to host
r-ay.club: did not receive HSTS header
-r-ay.cn: could not connect to host
r-core.org: could not connect to host
r-core.ru: could not connect to host
r-cut.fr: could not connect to host
r-rickroll-u.pw: could not connect to host
+r0t.co: could not connect to host
r10n.com: did not receive HSTS header
r15.me: did not receive HSTS header
r18.moe: did not receive HSTS header
-r3bl.me: did not receive HSTS header
-ra-schaal.de: did not receive HSTS header
raajheshkannaa.com: could not connect to host
rabbitvcactus.eu: did not receive HSTS header
rabota-x.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
racasdecachorro.org: could not connect to host
rackblue.com: could not connect to host
racktear.com: did not receive HSTS header
-rad-route.de: did not receive HSTS header
+rad-route.de: could not connect to host
raddavarden.nu: could not connect to host
radicaleducation.net: could not connect to host
radioheteroglossia.com: did not receive HSTS header
-radiosendungen.com: did not receive HSTS header
+radiorsvp.com: did not receive HSTS header
rafaelcz.de: could not connect to host
ragingserenity.com: did not receive HSTS header
ragnaroktop.com.br: could not connect to host
rahadiana.com: could not connect to host
rahamasin.eu: could not connect to host
+rai-co.net: did not receive HSTS header
raiblockscommunity.net: could not connect to host
raidstone.com: could not connect to host
-raidstone.net: could not connect to host
raidstone.rocks: could not connect to host
railgun.com.cn: could not connect to host
rainbin.com: could not connect to host
@@ -11065,7 +11930,9 @@ raisecorp.com: could not connect to host
raitza.de: could not connect to host
rajkapoordas.com: could not connect to host
ramarka.de: could not connect to host
-ramitmittal.com: could not connect to host
+ramatola.uk: could not connect to host
+ramblingrf.tech: could not connect to host
+ramezanloo.com: did not receive HSTS header
ramon-c.nl: could not connect to host
ramonj.nl: could not connect to host
randomcage.com: did not receive HSTS header
@@ -11075,22 +11942,20 @@ randomwinpicker.de: could not connect to host
randy.pw: could not connect to host
ranegroup.hosting: could not connect to host
rankthespot.com: could not connect to host
-ranktopay.com: did not receive HSTS header
rannseier.org: did not receive HSTS header
ranos.org: could not connect to host
rany.duckdns.org: could not connect to host
rany.io: could not connect to host
rany.pw: could not connect to host
-rapidemobile.com: could not connect to host
+rapidemobile.com: did not receive HSTS header
rapidflow.io: could not connect to host
rapido.nu: could not connect to host
rapidresearch.me: could not connect to host
rapidthunder.io: could not connect to host
-rasing.me: did not receive HSTS header
+rasing.me: could not connect to host
raspass.me: did not receive HSTS header
raspberry.us: could not connect to host
raspberryultradrops.com: did not receive HSTS header
-raspii.tech: could not connect to host
rastreador.com.es: did not receive HSTS header
ratajczak.fr: could not connect to host
rate-esport.de: could not connect to host
@@ -11107,13 +11972,14 @@ raven.lipetsk.ru: could not connect to host
ravengergaming.ga: could not connect to host
ravengergaming.net: could not connect to host
ravenx.me: could not connect to host
-ravkr.duckdns.org: max-age too low: 360000
+ravkr.duckdns.org: could not connect to host
ravse.dk: could not connect to host
raw-diets.com: did not receive HSTS header
rawet.se: could not connect to host
rawoil.com: could not connect to host
rawr.sexy: could not connect to host
rawstorieslondon.com: could not connect to host
+rayanitco.com: did not receive HSTS header
raycarruthersphotography.co.uk: could not connect to host
raydan.space: could not connect to host
raydobe.me: could not connect to host
@@ -11127,8 +11993,8 @@ rbqcloud.com: could not connect to host
rbti.me: could not connect to host
rbxcatalog.com: could not connect to host
rc4.io: could not connect to host
+rc7.ch: could not connect to host
rcafox.com: could not connect to host
-rcmlinx.com: could not connect to host
rcoliveira.com: could not connect to host
rcpcbd.com: could not connect to host
rcvd.io: did not receive HSTS header
@@ -11137,7 +12003,7 @@ rdfz.tech: could not connect to host
rdh.asia: did not receive HSTS header
rdns.im: did not receive HSTS header
rdyrda.fr: could not connect to host
-re-customer.net: did not receive HSTS header
+re-customer.net: could not connect to host
re-wilding.com: could not connect to host
reachr.com: could not connect to host
reactdatepicker.com: did not receive HSTS header
@@ -11147,6 +12013,7 @@ readism.io: could not connect to host
readityourself.net: did not receive HSTS header
readmeeatmedrinkme.com: did not receive HSTS header
readr.pw: could not connect to host
+readtldr.com: could not connect to host
readydok.com: did not receive HSTS header
reagir43.fr: did not receive HSTS header
reaiaer.com: could not connect to host
@@ -11154,13 +12021,15 @@ reakyaweso.me: could not connect to host
real-bits.com: could not connect to host
real-compare.com: did not receive HSTS header
realcli.com: could not connect to host
+realfamilyincest.com: could not connect to host
realhost.name: could not connect to host
really.io: could not connect to host
reallyreally.io: did not receive HSTS header
realmic.net: could not connect to host
realmofespionage.com: could not connect to host
realnewhomes.com: could not connect to host
-realwoo.com: could not connect to host
+realraghavgupta.com: could not connect to host
+realwoo.com: did not receive HSTS header
reapdrive.net: did not receive HSTS header
reaper.rip: could not connect to host
reardenporn.com: could not connect to host
@@ -11168,10 +12037,11 @@ rebekaesgabor.online: could not connect to host
rebootmc.com: could not connect to host
receitas-de-bolos.pt: did not receive HSTS header
receitasdebacalhau.pt: could not connect to host
-recetasdecocinaideal.com: did not receive HSTS header
recetasfacilesdehacer.com: did not receive HSTS header
rechat.com: did not receive HSTS header
rechenwerk.net: could not connect to host
+recht-freundlich.de: did not receive HSTS header
+rechtenliteratuurleiden.nl: could not connect to host
recompiled.org: max-age too low: 7776000
recruitsecuritytraining.co.uk: could not connect to host
recruitsecuritytraining.com: could not connect to host
@@ -11184,7 +12054,8 @@ reddiseals.com: [Exception... "Component returned failure code: 0x80004005 (NS_E
reddit.com: did not receive HSTS header
rede.ca: did not receive HSTS header
redeemingbeautyminerals.com: max-age too low: 0
-redhorsemountainranch.com: could not connect to host
+redgatesoftware.co.uk: could not connect to host
+redhorsemountainranch.com: did not receive HSTS header
redicabo.de: could not connect to host
redirectman.com: could not connect to host
redizoo.com: did not receive HSTS header
@@ -11193,9 +12064,10 @@ redmbk.com: did not receive HSTS header
redneck-gaming.de: did not receive HSTS header
redner.cc: did not receive HSTS header
rednertv.de: did not receive HSTS header
-rednoseday.com: did not receive HSTS header
+rednoseday.com: could not connect to host
redoakmedia.net: did not receive HSTS header
redperegrine.com: did not receive HSTS header
+redporno.cz: could not connect to host
redports.org: could not connect to host
redra.ws: did not receive HSTS header
redstarsurf.com: did not receive HSTS header
@@ -11208,8 +12080,11 @@ reeson.org: could not connect to host
ref1oct.nl: could not connect to host
refactor.zone: did not receive HSTS header
referenten.org: did not receive HSTS header
+refficience.com: could not connect to host
refitplanner.com: did not receive HSTS header
reflecton.io: could not connect to host
+reforesttheplanet.com: could not connect to host
+reformatreality.com: could not connect to host
refreshingserum.com: could not connect to host
reg.ru: did not receive HSTS header
regaloaks.com: did not receive HSTS header
@@ -11221,6 +12096,7 @@ reggae-cdmx.com: could not connect to host
reginagroffy.com: could not connect to host
regio-salland.nl: could not connect to host
regionale.org: did not receive HSTS header
+register.gov.uk: did not receive HSTS header
registertovoteflorida.gov: did not receive HSTS header
regoul.com: did not receive HSTS header
regsec.com: could not connect to host
@@ -11231,32 +12107,29 @@ reidascuecas.com.br: could not connect to host
reignsphere.net: could not connect to host
reikiqueen.uk: could not connect to host
reinaertvandecruys.me: could not connect to host
+reineberthe.ch: could not connect to host
reismil.ch: could not connect to host
reisyukaku.org: did not receive HSTS header
reithguard-it.de: did not receive HSTS header
rejo.in: could not connect to host
rejuvemedspa.com: did not receive HSTS header
-rekyou.com: could not connect to host
relatic.net: could not connect to host
relayawards.com: could not connect to host
reldoc.com.mx: did not receive HSTS header
reliable-mail.de: could not connect to host
+religiousforums.com: did not receive HSTS header
relisten.nl: did not receive HSTS header
relsak.cz: could not connect to host
rem.pe: did not receive HSTS header
rema.site: did not receive HSTS header
-remaimodern.org: did not receive HSTS header
remain.london: could not connect to host
-remedica.fr: did not receive HSTS header
-remedioskaseros.com: did not receive HSTS header
+remedica.fr: could not connect to host
remedium.de: could not connect to host
remedyrehab.com: did not receive HSTS header
rememberthis.co.za: could not connect to host
-remitatm.com: could not connect to host
remodela.com.ve: could not connect to host
remodelwithlegacy.com: did not receive HSTS header
remonttitekniikka.fi: could not connect to host
-remoteham.com: could not connect to host
remotestance.com: did not receive HSTS header
rencaijia.com: did not receive HSTS header
rencontres-erotiques.com: did not receive HSTS header
@@ -11264,15 +12137,17 @@ rengarenkblog.com: could not connect to host
renideo.fr: could not connect to host
renkhosting.com: could not connect to host
renlong.org: did not receive HSTS header
+rennfire.org: could not connect to host
renrenss.com: could not connect to host
-rentacarcluj.xyz: did not receive HSTS header
+rentacarcluj.xyz: could not connect to host
rentbrowser.com: could not connect to host
rentbrowsertrain.me: could not connect to host
rentcarassist.com: could not connect to host
renteater.com: could not connect to host
rentex.com: did not receive HSTS header
renxinge.cn: did not receive HSTS header
-repex.co.il: did not receive HSTS header
+reparo.pe: did not receive HSTS header
+repex.co.il: could not connect to host
replaceits.me: could not connect to host
replacemychina.com: could not connect to host
repo.ml: did not receive HSTS header
@@ -11288,15 +12163,17 @@ reporturi.io: did not receive HSTS header
reporturl.com: did not receive HSTS header
reporturl.io: did not receive HSTS header
reposaarenkuva.fi: could not connect to host
-reprolife.co.uk: could not connect to host
-reputationweaver.com: could not connect to host
+reprolife.co.uk: did not receive HSTS header
+reptilauksjonen.no: did not receive HSTS header
+repustate.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
reqognize.com: could not connect to host
+request-trent.com: did not receive HSTS header
res-rheingau.de: did not receive HSTS header
res42.com: could not connect to host
-resc.la: could not connect to host
research.md: could not connect to host
reseponline.info: did not receive HSTS header
reserve-online.net: did not receive HSTS header
+reservoirtp.fr: did not receive HSTS header
residentsinsurance.co.uk: did not receive HSTS header
resl20.servehttp.com: could not connect to host
resoundpro.ca: could not connect to host
@@ -11314,11 +12191,12 @@ restoreresearchstudy.com: did not receive HSTS header
resultsdate.news: could not connect to host
retcor.net: could not connect to host
reth.ch: could not connect to host
-retronet.nl: did not receive HSTS header
+retogroup.com: could not connect to host
+retrojar.top: could not connect to host
retropage.co: did not receive HSTS header
retrowave.eu: could not connect to host
rets.org.br: did not receive HSTS header
-retube.ga: could not connect to host
+retube.ga: did not receive HSTS header
returnofwar.com: could not connect to host
revapost.ch: could not connect to host
revealdata.com: did not receive HSTS header
@@ -11329,14 +12207,15 @@ review.info: did not receive HSTS header
reviewbestseller.com: did not receive HSTS header
reviewjust.com: did not receive HSTS header
revistapequenosolhares.com.br: could not connect to host
-revlect.com: did not receive HSTS header
revolutionhive.com: could not connect to host
revtut.net: could not connect to host
rewopit.net: could not connect to host
rex.st: could not connect to host
+rexhockingkelpies.com.au: did not receive HSTS header
reykjavik.guide: could not connect to host
rezun.cloud: did not receive HSTS header
rf.tn: could not connect to host
+rgservers.com: did not receive HSTS header
rhapsodhy.hu: could not connect to host
rhdigital.pro: could not connect to host
rhering.de: could not connect to host
@@ -11351,26 +12230,27 @@ richardb.me: could not connect to host
richeza.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
richiemail.net: could not connect to host
richmondsunlight.com: did not receive HSTS header
-richsiciliano.com: could not connect to host
+richmtdriver.com: could not connect to host
+richsiciliano.com: did not receive HSTS header
richterphilipp.com: could not connect to host
rickmartensen.nl: did not receive HSTS header
+ricknox.com: did not receive HSTS header
rid-wan.com: could not connect to host
+riddims.co: did not receive HSTS header
rideaudiscount.com: did not receive HSTS header
rideforwade.com: could not connect to host
rideforwade.net: could not connect to host
rideforwade.org: could not connect to host
-rideworks.com: did not receive HSTS header
+rideworks.com: could not connect to host
ridingoklahoma.com: could not connect to host
ridwan.co: could not connect to host
rienasemettre.fr: did not receive HSTS header
-riesenmagnete.de: did not receive HSTS header
+riesenmagnete.de: could not connect to host
rievo.net: did not receive HSTS header
right-to-love.name: did not receive HSTS header
right2.org: could not connect to host
righteousendeavour.com: could not connect to host
righttoknow.ie: did not receive HSTS header
-rigolitch.fr: could not connect to host
-rigsalesaustralia.com: did not receive HSTS header
rijndael.xyz: could not connect to host
rijnmondeg.nl: did not receive HSTS header
rika.me: could not connect to host
@@ -11378,16 +12258,19 @@ ring0.xyz: did not receive HSTS header
ringh.am: could not connect to host
rinj.se: could not connect to host
rionewyork.com.br: could not connect to host
+rioshop.com.br: could not connect to host
ripa.io: did not receive HSTS header
rippleunion.com: could not connect to host
+risi-china.com: could not connect to host
risingsun.red: could not connect to host
riskmgt.com.au: could not connect to host
+rissato.com.br: could not connect to host
ristorantefattoamano.eu: could not connect to host
rithm.ch: could not connect to host
rittis.ru: did not receive HSTS header
rivagecare.it: did not receive HSTS header
rivercruiseadvisor.com: did not receive HSTS header
-rivermendhealthcenters.com: did not receive HSTS header
+rivermendhealthcenters.com: could not connect to host
riversideauto.net: did not receive HSTS header
riverstyxgame.com: could not connect to host
rivlo.com: could not connect to host
@@ -11396,14 +12279,18 @@ rjnutrition.consulting: did not receive HSTS header
rk6.cz: could not connect to host
rkc-hygrotherm.de: could not connect to host
rkmantpur.org: did not receive HSTS header
+rkmedia.no: could not connect to host
rmaqequipamentos.com.br: could not connect to host
rmdlingerie.com.br: did not receive HSTS header
rme.li: did not receive HSTS header
+rmk.si: could not connect to host
+rmsides.com: did not receive HSTS header
roadfeast.com: could not connect to host
roan24.pl: did not receive HSTS header
+robert-flynn.de: could not connect to host
robertabittle.com: could not connect to host
-robertglastra.com: could not connect to host
roberto-webhosting.nl: did not receive HSTS header
+robertocasares.no-ip.biz: could not connect to host
robi-net.it: could not connect to host
robigalia.org: did not receive HSTS header
robinvdmarkt.nl: could not connect to host
@@ -11413,7 +12300,8 @@ robtex.com: did not receive HSTS header
robtex.net: did not receive HSTS header
robtex.org: did not receive HSTS header
robust.ga: could not connect to host
-rochman.id: could not connect to host
+roc.net.au: could not connect to host
+rochman.id: did not receive HSTS header
rocketnet.ml: could not connect to host
rockeyscrivo.com: did not receive HSTS header
rocksberg.net: could not connect to host
@@ -11429,21 +12317,22 @@ roesemann.email: could not connect to host
rofrank.space: could not connect to host
rogeiro.net: could not connect to host
rogerdat.ovh: could not connect to host
+roguefortgame.com: could not connect to host
+rohanbassett.com: could not connect to host
rohankrishnadev.in: could not connect to host
-rohlik.cz: did not receive HSTS header
roketix.co.uk: did not receive HSTS header
rolandinsh.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
rolandkolodziej.com: max-age too low: 86400
+rolandreed.cn: did not receive HSTS header
rolandslate.com: did not receive HSTS header
rolemaster.net: could not connect to host
-roleplayhome.com: could not connect to host
rolroer.co.za: could not connect to host
romaimperator.com: did not receive HSTS header
romainmuller.xyz: did not receive HSTS header
romans-place.me.uk: could not connect to host
romanticschemermovie.com: could not connect to host
-romanticvillas.com.au: could not connect to host
romeoferraris.com: did not receive HSTS header
+roms.fun: could not connect to host
romulusapp.com: could not connect to host
ron2k.za.net: could not connect to host
rondoniatec.com.br: did not receive HSTS header
@@ -11454,13 +12343,14 @@ ronwo.de: max-age too low: 1
roo.ie: could not connect to host
rool.me: did not receive HSTS header
roolevoi.ru: could not connect to host
-room-checkin24.de: could not connect to host
+room-checkin24.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+roosteroriginals.com: could not connect to host
rootbsd.at: could not connect to host
rootforum.org: did not receive HSTS header
-rootrelativity.com: did not receive HSTS header
+rootrelativity.com: could not connect to host
rootservice.org: did not receive HSTS header
rootwpn.com: could not connect to host
-rop.io: could not connect to host
+rop.io: did not receive HSTS header
roquecenter.org: did not receive HSTS header
roromendut.online: could not connect to host
rorymcdaniel.com: did not receive HSTS header
@@ -11470,11 +12360,14 @@ rospa100.com: did not receive HSTS header
rossclark.com: did not receive HSTS header
rossen.be: did not receive HSTS header
rossiworld.com: did not receive HSTS header
+rosslug.org.uk: could not connect to host
rotex1840.de: did not receive HSTS header
rotozen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
rotter-dam.nl: did not receive HSTS header
rotterdamjazz.info: could not connect to host
+rotzonline.com: could not connect to host
rough.nu: could not connect to host
+roundaboutweb.info: did not receive HSTS header
roundtheme.com: did not receive HSTS header
rous.se: could not connect to host
rouvray.org: could not connect to host
@@ -11486,6 +12379,7 @@ royalsignaturecruise.com: could not connect to host
roychan.org: max-age too low: 0
royzez.com: could not connect to host
rozalisbengal.ro: could not connect to host
+rozalynne-dawn.ga: could not connect to host
rozeapp.nl: could not connect to host
rpasafrica.com: could not connect to host
rr.in.th: could not connect to host
@@ -11494,30 +12388,30 @@ rrom.me: did not receive HSTS header
rs-devdemo.host: could not connect to host
rsajeey.info: could not connect to host
rsampaio.info: did not receive HSTS header
-rsblake.net: could not connect to host
rsf.io: could not connect to host
rsi.im: did not receive HSTS header
rskuipers.com: did not receive HSTS header
rsmaps.org: could not connect to host
-rstraining.co.uk: could not connect to host
+rsships.com: could not connect to host
+rstraining.co.uk: did not receive HSTS header
rstsecuritygroup.co.uk: could not connect to host
rtc.fun: could not connect to host
-rte.eu: could not connect to host
rtho.me: did not receive HSTS header
rtvi.com: did not receive HSTS header
+ru-music.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
rubbereggs.ca: could not connect to host
rubbix.net: could not connect to host
rubecodeberg.com: could not connect to host
-ruben.am: did not receive HSTS header
rubendv.be: did not receive HSTS header
+rubens.cloud: did not receive HSTS header
rubenschulz.nl: could not connect to host
rubi-ka.net: max-age too low: 0
ruborr.se: did not receive HSTS header
rubysecurity.org: did not receive HSTS header
-rubyshop.nl: did not receive HSTS header
+rubyshop.nl: could not connect to host
rudeotter.com: did not receive HSTS header
rue-de-la-vieille.fr: max-age too low: 0
-rueg.eu: could not connect to host
+ruedigervoigt.de: could not connect to host
ruflay.ru: could not connect to host
rugirlfriend.com: could not connect to host
rugs.ca: did not receive HSTS header
@@ -11527,27 +12421,29 @@ ruig.jp: could not connect to host
ruitershoponline.nl: did not receive HSTS header
ruja.dk: did not receive HSTS header
rukhaiyar.com: could not connect to host
+rullzer.com: did not receive HSTS header
+rumlager.de: max-age too low: 600000
rummel-platz.de: could not connect to host
rumoterra.com.br: could not connect to host
run-forrest.run: could not connect to host
runawebinar.nl: could not connect to host
runcarina.com: could not connect to host
rundumcolumn.xyz: could not connect to host
-runementors.com: could not connect to host
runhardt.eu: did not receive HSTS header
runtl.com: did not receive HSTS header
runtondev.com: did not receive HSTS header
-ruobiyi.com: could not connect to host
ruqu.nl: could not connect to host
rusadmin.biz: did not receive HSTS header
+rushball.net: could not connect to host
rusl.me: could not connect to host
-rusmolotok.ru: could not connect to host
russmarshall.com: could not connect to host
rustbyexample.com: did not receive HSTS header
rustfanatic.com: did not receive HSTS header
ruurdboomsma.nl: could not connect to host
ruxit.com: did not receive HSTS header
rvg.zone: could not connect to host
+rvoigt.eu: could not connect to host
+rvolve.net: could not connect to host
rw-solutions.tech: could not connect to host
rwanderlust.com: did not receive HSTS header
rxprep.com: did not receive HSTS header
@@ -11561,24 +12457,22 @@ rylore.com: could not connect to host
ryssland.guide: could not connect to host
rzegroup.com: did not receive HSTS header
s-d-v.ch: could not connect to host
-s-ip-media.de: could not connect to host
s-on.li: could not connect to host
s-rickroll-p.pw: could not connect to host
s.how: could not connect to host
s0923.com: could not connect to host
s0laris.co.uk: could not connect to host
-s13d.fr: could not connect to host
s1mplescripts.de: could not connect to host
+s1ris.org: did not receive HSTS header
+s3cases.com: did not receive HSTS header
s3n.se: could not connect to host
saabwa.org: did not receive HSTS header
sabatek.pl: did not receive HSTS header
-sabine-forschbach.de: could not connect to host
-sabineforschbach.de: could not connect to host
-sabtunes.com: did not receive HSTS header
+sac-shop.com: did not receive HSTS header
saco-ceso.com: could not connect to host
sadiejanehair.com: could not connect to host
+sadsu.com: did not receive HSTS header
safari-afrique.com: did not receive HSTS header
-safe.moe: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
safedevice.net: did not receive HSTS header
safelist.eu: did not receive HSTS header
safemovescheme.co.uk: could not connect to host
@@ -11589,7 +12483,7 @@ safersurfing.eu: did not receive HSTS header
safesecret.info: did not receive HSTS header
safetyrisk.net: did not receive HSTS header
safewings-nh.nl: could not connect to host
-safing.me: did not receive HSTS header
+safing.me: could not connect to host
safnah.com: did not receive HSTS header
sagarhandicraft.com: could not connect to host
sageth.com: could not connect to host
@@ -11597,16 +12491,22 @@ sah3.net: could not connect to host
sail-nyc.com: did not receive HSTS header
saint-astier-triathlon.com: did not receive HSTS header
saintjohnlutheran.church: did not receive HSTS header
+saintw.com: could not connect to host
sairai.bid: could not connect to host
sakaserver.com: did not receive HSTS header
sakib.ninja: did not receive HSTS header
sakurabuff.com: could not connect to host
+sakuraplay.com: did not receive HSTS header
salaervergleich.com: did not receive HSTS header
sale.sh: could not connect to host
salearnership.co.za: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
saleslift.pl: did not receive HSTS header
+salishseawhalewatching.ca: could not connect to host
sallysubs.com: could not connect to host
+salmo23.com.br: could not connect to host
+salon-claudia.ch: could not connect to host
salonestella.it: could not connect to host
+salrosadohimalaia.com: did not receive HSTS header
salserocafe.com: did not receive HSTS header
salserototal.com: could not connect to host
saltedskies.com: could not connect to host
@@ -11618,10 +12518,8 @@ samanthahumphreysstudio.com: did not receive HSTS header
samaritan.tech: could not connect to host
samaritansnet.org: did not receive HSTS header
sametovymesic.cz: could not connect to host
-samkelleher.com: could not connect to host
saml2.com: could not connect to host
-samlamac.com: did not receive HSTS header
-samm.com.au: did not receive HSTS header
+samlamac.com: could not connect to host
sammyjohnson.com: could not connect to host
samp.im: could not connect to host
sampcup.com: could not connect to host
@@ -11631,49 +12529,56 @@ samsen.club: could not connect to host
samsonova.de: could not connect to host
samsungxoa.com: could not connect to host
samvanderkris.com: did not receive HSTS header
-samwu.tw: could not connect to host
+samvanderkris.xyz: did not receive HSTS header
sanael.net: could not connect to host
+sanandreasstories.com: did not receive HSTS header
sanasalud.org: could not connect to host
sanatfilan.com: did not receive HSTS header
sanatrans.com: could not connect to host
+sand-islets.de: did not receive HSTS header
+sanderknape.com: did not receive HSTS header
+sandhaufen.tk: could not connect to host
+sandtonplumber24-7.co.za: did not receive HSTS header
sandviks.com: did not receive HSTS header
sanguoxiu.com: could not connect to host
sanhei.ch: did not receive HSTS header
-sanik.my: could not connect to host
-sanissimo.com.mx: max-age too low: 86400
-sannesfotklinikk.no: did not receive HSTS header
+sanik.my: did not receive HSTS header
sanradon.by: did not receive HSTS header
sansage.com.br: could not connect to host
sansdev.com: could not connect to host
sansemea.com: did not receive HSTS header
-santanderideas.com: could not connect to host
santi.eu: did not receive HSTS header
+santing.net: could not connect to host
santmark.com: could not connect to host
santmark.eu: could not connect to host
santmark.fi: could not connect to host
santmark.info: could not connect to host
santmark.net: could not connect to host
santmark.org: could not connect to host
-santodomingocg.org: did not receive HSTS header
+santodomingocg.org: could not connect to host
santorinibbs.com: did not receive HSTS header
santouri.be: could not connect to host
saotn.org: did not receive HSTS header
sapereaude.com.pl: did not receive HSTS header
+sapporobeer.com: could not connect to host
sapuncheta.com: could not connect to host
+saq.com: could not connect to host
sarah-beckett-harpist.com: did not receive HSTS header
+sarahdoyley.com: could not connect to host
+sarahlouisesearle.com: could not connect to host
sarahsweetlife.com: could not connect to host
sarahsweger.com: could not connect to host
sarakas.com: could not connect to host
-saraleebread.com: max-age too low: 86400
sarangsemutbandung.com: could not connect to host
sarindia.com: could not connect to host
sarindia.de: could not connect to host
sarisonproductions.com: did not receive HSTS header
+sarkarikhoj.com: could not connect to host
sarkarischeme.in: could not connect to host
sarkisozleri.us: could not connect to host
sarndipity.com: could not connect to host
+saro.me: did not receive HSTS header
saruwebshop.co.za: could not connect to host
-sash.pw: could not connect to host
sat.rent: did not receive HSTS header
sat7a-riyadh.com: did not receive HSTS header
satanichia.moe: could not connect to host
@@ -11683,14 +12588,14 @@ satoshicrypt.com: did not receive HSTS header
satragreen.com: did not receive HSTS header
satrent.com: did not receive HSTS header
satrent.se: did not receive HSTS header
-satriyowibowo.my.id: did not receive HSTS header
+satriyowibowo.my.id: could not connect to host
satsang-uwe.de: did not receive HSTS header
satsukii.moe: did not receive HSTS header
+sattamatkadpboss.mobi: could not connect to host
saturne.tk: could not connect to host
saturngames.co.uk: could not connect to host
saucyfox.net: did not receive HSTS header
saudeeconforto.com.br: did not receive HSTS header
-sauenytt.no: could not connect to host
saumon.io: did not receive HSTS header
saumon.xyz: could not connect to host
saunasandstuff.ca: did not receive HSTS header
@@ -11701,23 +12606,26 @@ saveaward.gov: could not connect to host
savecashindia.com: did not receive HSTS header
savekorea.net: max-age too low: 0
savemoneyonenergy.com: did not receive HSTS header
+saveora.shop: could not connect to host
savethedogfishfoundation.org: could not connect to host
saveyour.biz: could not connect to host
-savingbytes.com: could not connect to host
+savingbytes.com: did not receive HSTS header
savinggoliath.com: could not connect to host
savvysuit.com: did not receive HSTS header
saxol-group.com: could not connect to host
+saxotex.de: did not receive HSTS header
say-hanabi.com: could not connect to host
sayhanabi.com: could not connect to host
sazima.ru: did not receive HSTS header
-sbirecruitment.co.in: could not connect to host
sbm.cloud: could not connect to host
sbobetfun.com: did not receive HSTS header
sbox-archives.com: could not connect to host
sby.de: did not receive HSTS header
sc4le.com: could not connect to host
+scaffoldhireeastrand.co.za: did not receive HSTS header
scaffoldhirefourways.co.za: did not receive HSTS header
scaffoldhirerandburg.co.za: did not receive HSTS header
+scaffoldhiresandton.co.za: did not receive HSTS header
scala.click: did not receive HSTS header
scannabi.com: could not connect to host
sch44r0n.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -11729,10 +12637,12 @@ schau-rein.co.at: did not receive HSTS header
schauer.so: could not connect to host
schd.io: did not receive HSTS header
schermreparatierotterdam.nl: did not receive HSTS header
+schil.li: could not connect to host
schlabbi.com: did not receive HSTS header
schmidttulskie.de: could not connect to host
schmitt.ovh: could not connect to host
schmitt.ws: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+schneider-electric.tg: could not connect to host
schnell-abnehmen.tips: did not receive HSTS header
schnell-gold.com: did not receive HSTS header
scholl.io: could not connect to host
@@ -11740,6 +12650,7 @@ schooli.io: could not connect to host
schooltrends.co.uk: did not receive HSTS header
schoolze.com: did not receive HSTS header
schoop.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+schorel.ovh: could not connect to host
schraebanowicz.net: did not receive HSTS header
schreiber-netzwerk.eu: did not receive HSTS header
schreibnacht.de: did not receive HSTS header
@@ -11749,7 +12660,9 @@ schrodinger.io: could not connect to host
schroepfglas-versand.de: did not receive HSTS header
schroettle.com: did not receive HSTS header
schulterglatzen-altenwalde.de: could not connect to host
+schur-it.de: could not connect to host
schwarzkopfforyou.de: did not receive HSTS header
+schwarzwaldcon.de: could not connect to host
schweiz.guide: could not connect to host
schweizerbolzonello.net: could not connect to host
schwetz.net: could not connect to host
@@ -11758,8 +12671,9 @@ scib.tk: could not connect to host
scicasts.com: max-age too low: 7776000
science-anatomie.com: did not receive HSTS header
scienceathome.org: did not receive HSTS header
-sciencebase.gov: did not receive HSTS header
sciencemonster.co.uk: could not connect to host
+scientific.boston: could not connect to host
+scifi.fyi: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
scintillating.stream: could not connect to host
scionasset.com: did not receive HSTS header
scivillage.com: did not receive HSTS header
@@ -11769,6 +12683,7 @@ scooshonline.co.uk: did not receive HSTS header
scopea.fr: max-age too low: 0
score-savers.com: max-age too low: 10540800
scores4schools.com: could not connect to host
+scorobudem.ru: could not connect to host
scotbirchfield.com: did not receive HSTS header
scottainslie.me.uk: could not connect to host
scottdial.com: did not receive HSTS header
@@ -11785,7 +12700,7 @@ scrambler.in: could not connect to host
scrapings.net: could not connect to host
screencaster.io: did not receive HSTS header
screenresolution.space: could not connect to host
-screensaversplanet.com: could not connect to host
+screensaversplanet.com: did not receive HSTS header
scribbleserver.com: could not connect to host
scribe.systems: could not connect to host
scrion.com: could not connect to host
@@ -11796,6 +12711,7 @@ scriptict.nl: could not connect to host
scriptjunkie.us: could not connect to host
scrollstory.com: did not receive HSTS header
scruffymen.com: could not connect to host
+scrumplex.net: did not receive HSTS header
sctm.at: could not connect to host
sdhmanagementgroup.com: could not connect to host
sdia.ru: could not connect to host
@@ -11803,13 +12719,16 @@ sdl-corporatesite-staging.azurewebsites.net: did not receive HSTS header
sdmoscow.ru: could not connect to host
sdrobs.com: did not receive HSTS header
sdsl-speedtest.de: could not connect to host
+se-theories.org: could not connect to host
se7ensins.com: did not receive HSTS header
+seadus.ee: could not connect to host
seanationals.org: did not receive HSTS header
seanchaidh.org: could not connect to host
seans.cc: did not receive HSTS header
seanstrout.com: did not receive HSTS header
seansyardservice.com: did not receive HSTS header
searchgov.gov.il: did not receive HSTS header
+searchshops.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
searx.pw: could not connect to host
seatshare.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
sebastian-bair.de: could not connect to host
@@ -11819,10 +12738,16 @@ sebastianpedersen.com: did not receive HSTS header
sebastiensenechal.com: did not receive HSTS header
sebi.cf: could not connect to host
sebster.com: did not receive HSTS header
+sec44.com: could not connect to host
+sec44.net: could not connect to host
+sec44.org: could not connect to host
secandtech.com: could not connect to host
+secanje.nl: did not receive HSTS header
seccomp.ru: did not receive HSTS header
seceye.cn: could not connect to host
+secitem.at: did not receive HSTS header
secitem.de: could not connect to host
+secitem.eu: did not receive HSTS header
secnet.ga: could not connect to host
secondary-survivor.com: could not connect to host
secondary-survivor.help: could not connect to host
@@ -11836,7 +12761,7 @@ secondpay.nl: could not connect to host
secondspace.ca: could not connect to host
secretnation.net: did not receive HSTS header
secretofanah.com: could not connect to host
-secretsanta.fr: could not connect to host
+secretpanties.com: could not connect to host
sectest.ml: could not connect to host
sectia22.ro: did not receive HSTS header
secur3.us: did not receive HSTS header
@@ -11850,10 +12775,8 @@ securedevelop.net: could not connect to host
securefuture.nl: did not receive HSTS header
secureideas.com: did not receive HSTS header
secureindia.co: could not connect to host
-securejabber.me: could not connect to host
secureradio.net: could not connect to host
securesuisse.ch: could not connect to host
-securetronic.ch: could not connect to host
securita.eu: did not receive HSTS header
security-carpet.com: could not connect to host
security-thoughts.org: could not connect to host
@@ -11862,7 +12785,6 @@ security.xn--q9jyb4c: could not connect to host
securityarena.com: could not connect to host
securitybsides.pl: did not receive HSTS header
securityglance.com: could not connect to host
-securityheaders.io: did not receive HSTS header
securityinet.biz: did not receive HSTS header
securityinet.net: did not receive HSTS header
securityinet.org.il: could not connect to host
@@ -11879,7 +12801,6 @@ sedrubal.de: could not connect to host
sedziapilkarski.pl: did not receive HSTS header
seedalpha.com: could not connect to host
seedboxers.net: could not connect to host
-seednode.co: could not connect to host
seefirm.com: could not connect to host
seefunk.net: did not receive HSTS header
seehimnaked.com: could not connect to host
@@ -11889,7 +12810,7 @@ seele.ca: could not connect to host
seen.life: could not connect to host
sehenderson.com: did not receive HSTS header
seida.at: could not connect to host
-seiko-dojo.com: could not connect to host
+seiko-dojo.com: did not receive HSTS header
seiler-bad.de: did not receive HSTS header
seizoushokoyuubangou.com: did not receive HSTS header
sektor.team: could not connect to host
@@ -11899,11 +12820,10 @@ selectary.com: could not connect to host
selectcertifiedautos.com: did not receive HSTS header
selectruckscalltrackingreports.com: could not connect to host
seleondar.ru: did not receive HSTS header
-self-injury.net: did not receive HSTS header
+self.nu: could not connect to host
selfdefenserx.com: did not receive HSTS header
selfhosters.com: could not connect to host
selfie-france.fr: could not connect to host
-selfmade4u.de: did not receive HSTS header
selfserverx.com: could not connect to host
selitysvideot.fi: did not receive HSTS header
selldorado.com: could not connect to host
@@ -11913,21 +12833,22 @@ sellservs.co.za: could not connect to host
semantheme.fr: did not receive HSTS header
semen3325.xyz: could not connect to host
semenkovich.com: did not receive HSTS header
-semenov.su: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
sementes.gratis: could not connect to host
semps-servers.de: could not connect to host
sendash.com: did not receive HSTS header
sendmeback.de: did not receive HSTS header
senedirect.com: could not connect to host
senmonsyoku.top: did not receive HSTS header
-sens2lavie.com: max-age too low: 0
+sens2lavie.com: did not receive HSTS header
senseofnumber.co.uk: did not receive HSTS header
senseye.io: did not receive HSTS header
sensiblemn.org: could not connect to host
sensibus.com: did not receive HSTS header
sensoft-int.com: could not connect to host
-sentinel.gov: did not receive HSTS header
+sensualism.com: could not connect to host
+sentic.info: did not receive HSTS header
seo-lagniappe.com: did not receive HSTS header
+seoarchive.org: could not connect to host
seobot.com.au: could not connect to host
seohochschule.de: could not connect to host
seomarketingdeals.com: did not receive HSTS header
@@ -11939,8 +12860,10 @@ seosec.xyz: could not connect to host
seotronix.net: did not receive HSTS header
seowarp.net: did not receive HSTS header
sep23.ru: could not connect to host
+sepakbola.win: could not connect to host
sephr.com: did not receive HSTS header
sepie.gob.es: did not receive HSTS header
+seproco.com: could not connect to host
seq.tf: did not receive HSTS header
serafin.tech: could not connect to host
serathius.ovh: could not connect to host
@@ -11948,7 +12871,7 @@ serbien.guide: could not connect to host
serenitycreams.com: did not receive HSTS header
serfdom.io: did not receive HSTS header
serized.pw: could not connect to host
-serkaneles.com: could not connect to host
+serkaneles.com: did not receive HSTS header
servecrypt.com: could not connect to host
servecrypt.net: could not connect to host
servecrypt.ru: could not connect to host
@@ -11961,27 +12884,35 @@ servergno.me: did not receive HSTS header
serverlauget.no: could not connect to host
servermonkey.nl: could not connect to host
servfefe.com: could not connect to host
+service.gov.uk: could not connect to host
servicevie.com: did not receive HSTS header
-servious.org: could not connect to host
+servpanel.de: could not connect to host
servu.de: did not receive HSTS header
+servx.ru: did not receive HSTS header
+serwusik.pl: did not receive HSTS header
seryo.moe: could not connect to host
seryo.net: could not connect to host
seryovpn.com: could not connect to host
-sesha.co.za: did not receive HSTS header
-setkit.net: did not receive HSTS header
+sesha.co.za: could not connect to host
+setkit.net: could not connect to host
setuid.de: could not connect to host
setuid.io: did not receive HSTS header
-setuid0.kr: could not connect to host
sevenhearts.online: could not connect to host
+sewoo.co.uk: could not connect to host
+sex-education.com: could not connect to host
+sexgarage.de: could not connect to host
+sexocomgravidas.com: could not connect to host
+sexoyrelax.com: could not connect to host
+sexpay.net: could not connect to host
sexshopfacil.com.br: could not connect to host
sexshopsgay.com: did not receive HSTS header
+sexwork.net: could not connect to host
seyahatsagliksigortalari.com: could not connect to host
seydaozcan.com: did not receive HSTS header
-seyr.it: could not connect to host
sfashion.si: did not receive HSTS header
+sfaturiit.ro: could not connect to host
sfhobbies.com.br: could not connect to host
sfsltd.com: did not receive HSTS header
-sgcaccounts.co.uk: did not receive HSTS header
sgovaard.nl: did not receive HSTS header
sgthotshot.com: could not connect to host
sh11.pp.ua: did not receive HSTS header
@@ -11994,7 +12925,6 @@ shadow-socks.org: did not receive HSTS header
shadow-socks.pro: could not connect to host
shadowguardian507-irl.tk: did not receive HSTS header
shadowguardian507.tk: did not receive HSTS header
-shadowict.net: could not connect to host
shadowmorph.info: did not receive HSTS header
shadowplus.net: could not connect to host
shadowrocket.net: could not connect to host
@@ -12016,14 +12946,16 @@ shahbeat.com: could not connect to host
shaitan.eu: could not connect to host
shakebox.de: could not connect to host
shamka.ru: could not connect to host
+shandonsg.co.uk: could not connect to host
shanesage.com: could not connect to host
shang-yu.cn: could not connect to host
-shankangke.com: did not receive HSTS header
shanxiapark.com: could not connect to host
+shanyhs.com: did not receive HSTS header
shapesedinburgh.co.uk: did not receive HSTS header
shardsoft.com: could not connect to host
shareimg.xyz: could not connect to host
sharejoy.cn: did not receive HSTS header
+sharemessage.net: could not connect to host
shareoine.com: did not receive HSTS header
sharepass.pw: could not connect to host
sharepic.xyz: could not connect to host
@@ -12043,12 +12975,14 @@ shawnstarrcustomhomes.com: did not receive HSTS header
shawnwilson.info: could not connect to host
shellj.me: did not receive HSTS header
shellsec.pw: did not receive HSTS header
+shemissed.me: did not receive HSTS header
shentengtu.idv.tw: could not connect to host
shep.co.il: did not receive HSTS header
sheratan.web.id: could not connect to host
-shereallyheals.com: did not receive HSTS header
+shereallyheals.com: could not connect to host
shermantank.biz: did not receive HSTS header
shervik.ga: could not connect to host
+shethbox.com: could not connect to host
shevronpatriot.ru: did not receive HSTS header
sheying.tm: could not connect to host
shg-pornographieabhaengigkeit.de: did not receive HSTS header
@@ -12056,8 +12990,6 @@ shh.sh: could not connect to host
shiatsu-institut.ch: could not connect to host
shibainu.com.br: could not connect to host
shibe.club: could not connect to host
-shieldfe.com: could not connect to host
-shieldofachilles.in: could not connect to host
shift.ooo: did not receive HSTS header
shiftins.com: could not connect to host
shiftnrg.org: did not receive HSTS header
@@ -12079,7 +13011,7 @@ shiroki-k.net: could not connect to host
shirosaki.org: could not connect to host
shiseki.top: did not receive HSTS header
shishkin.link: did not receive HSTS header
-shitfest.info: could not connect to host
+shitfest.info: did not receive HSTS header
shitposting.life: could not connect to host
shk.im: could not connect to host
shlemenkov.by: could not connect to host
@@ -12088,7 +13020,6 @@ sho-tanaka.jp: did not receive HSTS header
shocksrv.com: did not receive HSTS header
shooshosha.com: could not connect to host
shootpooloklahoma.com: could not connect to host
-shopatkei.com: could not connect to host
shopdopastor.com.br: could not connect to host
shopherbal.co.za: could not connect to host
shopods.com: did not receive HSTS header
@@ -12101,12 +13032,12 @@ shops.neonisi.com: could not connect to host
shortpath.com: could not connect to host
shortr.li: could not connect to host
shota.party: could not connect to host
-shota.vip: could not connect to host
shotpixonline.com.br: did not receive HSTS header
show-stream.tv: could not connect to host
shower.im: did not receive HSTS header
showkeeper.tv: did not receive HSTS header
showroom.de: did not receive HSTS header
+shoxmusic.net: did not receive HSTS header
shred.ch: could not connect to host
shredoptics.ch: could not connect to host
shtorku.com: could not connect to host
@@ -12128,39 +13059,39 @@ sichere-kartenakzeptanz.de: could not connect to host
siciliadigitale.pro: could not connect to host
sictame-tigf.org: did not receive HSTS header
siebens.net: could not connect to host
+sieh.es: did not receive HSTS header
sifls.com: could not connect to host
sifreuret.com: could not connect to host
signere.com: could not connect to host
-signere.no: could not connect to host
+signere.no: did not receive HSTS header
signoracle.com: could not connect to host
signosquecombinam.com.br: could not connect to host
sigsegv.run: did not receive HSTS header
-sigterm.no: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+sihaizixun.net: could not connect to host
siikarantacamping.fi: did not receive HSTS header
sijimi.cn: could not connect to host
sijmenschoon.nl: could not connect to host
sikatehtaat.fi: could not connect to host
siku.pro: could not connect to host
-silent.live: could not connect to host
silentcircle.com: did not receive HSTS header
silentcircle.org: could not connect to host
silentexplosion.de: could not connect to host
silentlink.io: could not connect to host
silentmode.com: max-age too low: 7889238
silicagelpackets.ca: did not receive HSTS header
-sillisalaatti.fi: could not connect to host
+silke-hunde.de: did not receive HSTS header
silqueskineyeserum.com: could not connect to host
silver-drachenkrieger.de: did not receive HSTS header
silverback.is: did not receive HSTS header
silvergoldbull.ba: could not connect to host
silvergoldbull.md: could not connect to host
-silvergoldbull.ru: could not connect to host
silverhome.ninja: could not connect to host
silverpvp.com: could not connect to host
silverstartup.sk: could not connect to host
silviamacallister.com: did not receive HSTS header
silvistefi.com: could not connect to host
-silvobeat.blog: could not connect to host
+sim-sim.appspot.com: did not receive HSTS header
+sim4seed.org: could not connect to host
simbast.com: could not connect to host
simbihaiti.com: max-age too low: 7889238
simbol.id: could not connect to host
@@ -12168,7 +13099,7 @@ simbolo.co.uk: could not connect to host
simccorp.com: did not receive HSTS header
simeon.us: max-age too low: 2592000
simfri.com: could not connect to host
-simha.online: could not connect to host
+simha.online: did not receive HSTS header
simhaf.cf: could not connect to host
simnovo.net: did not receive HSTS header
simobilklub.si: could not connect to host
@@ -12178,6 +13109,7 @@ simon.butcher.name: max-age too low: 2629743
simon.lc: did not receive HSTS header
simongong.net: did not receive HSTS header
simonsaxon.com: did not receive HSTS header
+simonschmitt.ch: could not connect to host
simonsmh.cc: did not receive HSTS header
simpan.id: could not connect to host
simpeo.fr: did not receive HSTS header
@@ -12193,6 +13125,7 @@ simplixos.org: could not connect to host
simplyenak.com: did not receive HSTS header
sims4hub.ga: could not connect to host
simtin-net.de: could not connect to host
+simumiehet.com: could not connect to host
simyo.nl: did not receive HSTS header
sin30.net: could not connect to host
sincai666.com: could not connect to host
@@ -12201,27 +13134,29 @@ sincron.org: could not connect to host
sinefili.com: did not receive HSTS header
sinful.pw: could not connect to host
singee.site: could not connect to host
-singerwang.com: did not receive HSTS header
+singerwang.com: could not connect to host
+singles-berlin.de: could not connect to host
singul4rity.com: could not connect to host
sinkip.com: could not connect to host
sinneserweiterung.de: could not connect to host
+sinon.org: did not receive HSTS header
sinoscandinavia.se: could not connect to host
sinosky.org: did not receive HSTS header
-sinsojb.me: could not connect to host
+sinsojb.me: did not receive HSTS header
sintesysglobal.com: did not receive HSTS header
sinusbot.online: did not receive HSTS header
sion.moe: did not receive HSTS header
-sipc.org: did not receive HSTS header
-sipsik.net: could not connect to host
+sipsik.net: did not receive HSTS header
siqi.wang: could not connect to host
+sirburton.com: did not receive HSTS header
siriad.com: could not connect to host
sirius-lee.net: could not connect to host
siro.gq: did not receive HSTS header
siroop.ch: max-age too low: 86400
-sisseastumine.ee: did not receive HSTS header
+sisgopro.com: could not connect to host
sistemasespecializados.com: did not receive HSTS header
+sistemlash.com: did not receive HSTS header
sistersurprise.de: did not receive HSTS header
-sitc.sk: could not connect to host
sitecloudify.com: could not connect to host
sitecuatui.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
sitehome.eu: could not connect to host
@@ -12231,15 +13166,17 @@ sitennisclub.com: did not receive HSTS header
siterip.org: could not connect to host
sites.google.com: did not receive HSTS header (error ignored - included regardless)
sitesforward.com: did not receive HSTS header
-sitesource101.com: did not receive HSTS header
+sitesko.de: did not receive HSTS header
+sitesource101.com: could not connect to host
sitesten.com: did not receive HSTS header
sittinginoblivion.com: did not receive HSTS header
-sixcorners.info: could not connect to host
sizingservers.be: did not receive HSTS header
sizzle.co.uk: did not receive HSTS header
+sja-se-training.com: could not connect to host
+sjdaws.com: could not connect to host
+sjdtaxi.com: did not receive HSTS header
sjhyl11.com: could not connect to host
sjsc.fr: did not receive HSTS header
-sjsmith.id.au: did not receive HSTS header
skandiabanken.no: did not receive HSTS header
skaraborgsassistans.com: did not receive HSTS header
skarox.com: could not connect to host
@@ -12248,9 +13185,9 @@ skarox.eu: could not connect to host
skarox.net: could not connect to host
skarox.ru: could not connect to host
skates.guru: did not receive HSTS header
+skday.com: did not receive HSTS header
ski-insurance.com.au: did not receive HSTS header
skidstresser.com: could not connect to host
-skifairview.com: did not receive HSTS header
skiinstructor.services: did not receive HSTS header
skilldetector.com: could not connect to host
skillproxy.com: could not connect to host
@@ -12265,6 +13202,7 @@ skoda-clever-lead.de: could not connect to host
skoda-im-dialog.de: could not connect to host
skoda-nurdiebesten.de: did not receive HSTS header
skoda-service-team-cup.de: did not receive HSTS header
+skomski.org: did not receive HSTS header
skotty.io: did not receive HSTS header
skpdev.net: could not connect to host
skrivande.co: could not connect to host
@@ -12272,14 +13210,17 @@ skullhouse.nyc: did not receive HSTS header
sky-aroma.com: could not connect to host
skyasker.cn: could not connect to host
skyasker.com: did not receive HSTS header
-skybound.link: could not connect to host
+skybloom.com: could not connect to host
skyflix.me: could not connect to host
skyline.link: could not connect to host
skyline.tw: did not receive HSTS header
skylocker.net: could not connect to host
+skylocker.nl: could not connect to host
skyoy.com: did not receive HSTS header
skypeassets.com: could not connect to host
+skypoker.com: could not connect to host
skyrunners.ch: could not connect to host
+skytec.host: did not receive HSTS header
skyvault.io: could not connect to host
skyveo.ml: did not receive HSTS header
skyway.capital: did not receive HSTS header
@@ -12294,7 +13235,7 @@ slashand.co: could not connect to host
slashbits.no: did not receive HSTS header
slashdesign.it: did not receive HSTS header
slashem.me: did not receive HSTS header
-slattery.co: could not connect to host
+slattery.co: did not receive HSTS header
slauber.de: did not receive HSTS header
sleeklounge.com: did not receive HSTS header
sleep10.com: could not connect to host
@@ -12309,34 +13250,40 @@ sln.cloud: could not connect to host
slope.haus: could not connect to host
slovakiana.sk: did not receive HSTS header
slovoice.org: could not connect to host
+slowfood.es: did not receive HSTS header
slowsociety.org: could not connect to host
slse.ca: max-age too low: 0
+sluimann.de: could not connect to host
sluplift.com: did not receive HSTS header
-slycurity.de: did not receive HSTS header
+slycurity.de: could not connect to host
slytech.ch: could not connect to host
smallcdn.rocks: could not connect to host
smallchat.nl: could not connect to host
smalldata.tech: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-smallplanet.ch: could not connect to host
+smallplanet.ch: did not receive HSTS header
smallshopit.com: did not receive HSTS header
smart-mirror.de: did not receive HSTS header
smart-ov.nl: could not connect to host
smartbiz.vn: could not connect to host
-smartboleta.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+smartboleta.com: did not receive HSTS header
smartbuyelectric.com: could not connect to host
smartcoin.com.br: could not connect to host
smarterskies.gov: did not receive HSTS header
smarthomedna.com: did not receive HSTS header
+smartietop.com: could not connect to host
smartit.pro: did not receive HSTS header
smartlend.se: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
smartofficesandsmarthomes.com: did not receive HSTS header
smartofficeusa.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
smartphone.continental.com: could not connect to host
smartrak.co.nz: did not receive HSTS header
+smartshoppers.es: did not receive HSTS header
+smcbox.com: could not connect to host
smdev.fr: could not connect to host
smet.us: could not connect to host
smexpt.com: did not receive HSTS header
smi-a.me: could not connect to host
+smiatek.name: could not connect to host
smileawei.com: could not connect to host
smimea.com: did not receive HSTS header
smirkingwhorefromhighgarden.pro: could not connect to host
@@ -12348,7 +13295,8 @@ smksultanismail2.com: could not connect to host
smkw.com: did not receive HSTS header
sml.lc: could not connect to host
smmcab.ru: could not connect to host
-smol.cat: did not receive HSTS header
+smmcab.website: could not connect to host
+smokinghunks.com: could not connect to host
smove.sg: did not receive HSTS header
smplix.com: could not connect to host
smries.com: could not connect to host
@@ -12365,7 +13313,8 @@ snakehosting.dk: did not receive HSTS header
snapappts.com: could not connect to host
snapworks.net: did not receive HSTS header
snarf.in: could not connect to host
-sneaker.date: did not receive HSTS header
+sneak.berlin: could not connect to host
+sneaker.date: could not connect to host
sneed.company: could not connect to host
snekchat.moe: could not connect to host
snelwerk.be: could not connect to host
@@ -12378,13 +13327,19 @@ snod.land: did not receive HSTS header
snoozedds.com: max-age too low: 600
snoqualmiefiber.org: could not connect to host
snovey.com: could not connect to host
+snow-online.de: could not connect to host
snowdy.eu: could not connect to host
snowdy.link: could not connect to host
+snowplane.net: did not receive HSTS header
+snowraven.de: did not receive HSTS header
so-healthy.co.uk: did not receive HSTS header
sobabox.ru: could not connect to host
sobinski.pl: did not receive HSTS header
soboleva-pr.com.ua: could not connect to host
+sobreporcentagem.com: did not receive HSTS header
+socal-babes.com: could not connect to host
soccergif.com: could not connect to host
+soccersavings.com: could not connect to host
soci.ml: could not connect to host
social-journey.com: could not connect to host
socialbillboard.com: could not connect to host
@@ -12394,7 +13349,6 @@ socialfacecook.com: could not connect to host
socialgrowing.cl: did not receive HSTS header
socialhead.io: could not connect to host
socialhub.com: did not receive HSTS header
-socialnitro.com: could not connect to host
socialprize.com: could not connect to host
socialspirit.com.br: did not receive HSTS header
socialworkout.com: could not connect to host
@@ -12407,28 +13361,31 @@ socomponents.co.uk: could not connect to host
sodacore.com: could not connect to host
soe-server.com: could not connect to host
softballsavings.com: did not receive HSTS header
-softclean.pt: could not connect to host
+softclean.pt: did not receive HSTS header
sogeek.me: could not connect to host
sogravatas.net.br: could not connect to host
sojingle.net: could not connect to host
+soju.fi: did not receive HSTS header
sokolka.tv: did not receive HSTS header
sol-3.de: did not receive HSTS header
solarcom.com.br: could not connect to host
solartrackerapp.com: could not connect to host
soldbygold.net: did not receive HSTS header
solentes.com.br: could not connect to host
+soleria.eu: did not receive HSTS header
solidfuelappliancespares.co.uk: did not receive HSTS header
solidimage.com.br: could not connect to host
-solidus.systems: could not connect to host
+solidtuesday.com: could not connect to host
+solidus.systems: did not receive HSTS header
solidwebnetworks.co.uk: did not receive HSTS header
solinter.com.br: did not receive HSTS header
solisrey.es: could not connect to host
soljem.com: did not receive HSTS header
soll-i.ch: did not receive HSTS header
-solos.im: did not receive HSTS header
solosmusic.xyz: could not connect to host
solsystems.ru: did not receive HSTS header
solutive.fi: did not receive HSTS header
+solvingproblems.com.au: could not connect to host
solymar.co: could not connect to host
some.rip: max-age too low: 6307200
somebodycares.org: did not receive HSTS header
@@ -12436,8 +13393,10 @@ someshit.xyz: could not connect to host
something-else.cf: could not connect to host
somethingnew.xyz: could not connect to host
somethingsimilar.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+somewherein.jp: did not receive HSTS header
sonafe.info: did not receive HSTS header
sonerezh.bzh: did not receive HSTS header
+sonialive.com: did not receive HSTS header
sonic.network: did not receive HSTS header
sonicrainboom.rocks: could not connect to host
sonja-daniels.com: could not connect to host
@@ -12450,12 +13409,11 @@ soply.com: could not connect to host
soporte.cc: could not connect to host
sorenam.com: could not connect to host
sorensen-online.com: could not connect to host
-sorincocorada.ro: could not connect to host
sorinmuntean.ro: did not receive HSTS header
-sorn.service.gov.uk: did not receive HSTS header
sortaweird.net: could not connect to host
sortingwizard.com: could not connect to host
soruly.moe: did not receive HSTS header
+sos.de: did not receive HSTS header
sosaka.ml: could not connect to host
sosecu.red: could not connect to host
sosiolog.com: could not connect to host
@@ -12468,11 +13426,16 @@ soulcraft.bz: could not connect to host
soulema.com: could not connect to host
soulfulglamour.uk: could not connect to host
soulsteer.com: could not connect to host
+soumikghosh.com: did not receive HSTS header
+soundbytemedia.com: did not receive HSTS header
soundforsound.co.uk: did not receive HSTS header
-souravsaha.com: did not receive HSTS header
+soundgasm.net: could not connect to host
+soundsecurity.io: could not connect to host
+souqtajmeel.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
sourcecode.love: could not connect to host
sourcelair.com: did not receive HSTS header
sourcitec.com: did not receive HSTS header
+sous-surveillance.net: could not connect to host
southcoastkitesurf.co.uk: did not receive HSTS header
southcoastswords.com: did not receive HSTS header
southernjamusa.com: did not receive HSTS header
@@ -12488,6 +13451,7 @@ sovereignshare.com: could not connect to host
sown.dyndns.org: could not connect to host
sowncloud.de: could not connect to host
soz6.com: did not receive HSTS header
+sp-sephiroth.jp: max-age too low: 0
sp.rw: could not connect to host
spacecafe.org: did not receive HSTS header
spacedust.xyz: could not connect to host
@@ -12500,9 +13464,9 @@ spaggel.nl: did not receive HSTS header
spaldingwall.com: could not connect to host
spam.lol: could not connect to host
spamloco.net: did not receive HSTS header
+spanda.io: could not connect to host
spangehlassociates.com: did not receive HSTS header
spanien.guide: could not connect to host
-spar.co.uk: max-age too low: 0
sparelib.com: max-age too low: 3650
spark.team: could not connect to host
sparkbase.cn: could not connect to host
@@ -12518,31 +13482,29 @@ spcx.eu: could not connect to host
spdysync.com: could not connect to host
specialedesigns.com: could not connect to host
specialistnow.com.au: did not receive HSTS header
+spectreattack.com: did not receive HSTS header
speculor.net: could not connect to host
-spedition-transport-umzug.de: could not connect to host
spedplus.com.br: did not receive HSTS header
speed-mailer.com: could not connect to host
speedcounter.net: could not connect to host
speeds.vip: could not connect to host
speedway.com.pl: did not receive HSTS header
+speedychat.it: could not connect to host
speedyprep.com: did not receive HSTS header
speidel.com.tr: did not receive HSTS header
spencerbaer.com: could not connect to host
spendwise.com.au: could not connect to host
sperohub.io: could not connect to host
sperohub.lt: did not receive HSTS header
-spherenix.org: could not connect to host
sphinx.network: could not connect to host
spicydog.tk: could not connect to host
spicywombat.com: could not connect to host
-spidermail.tk: could not connect to host
-spidernet.tk: could not connect to host
spiegels.nl: could not connect to host
spielcasinos.com: did not receive HSTS header
-spiet.nl: could not connect to host
spikeykc.me: did not receive HSTS header
spilsbury.io: could not connect to host
spineandscoliosis.com: did not receive HSTS header
+spinner.dnshome.de: could not connect to host
spirit-dev.net: max-age too low: 0
spirit-hunters-germany.de: did not receive HSTS header
spiritbionic.ro: could not connect to host
@@ -12555,14 +13517,19 @@ split.is: could not connect to host
splunk.zone: could not connect to host
spokonline.com: could not connect to host
spon.cz: did not receive HSTS header
+sponsorowani.pl: did not receive HSTS header
sponsortobias.com: could not connect to host
spontex.org: did not receive HSTS header
+spookyinternet.com: could not connect to host
sporara.com: did not receive HSTS header
+sport247.bet: max-age too low: 2592000
sportchirp-internal.azurewebsites.net: did not receive HSTS header
sporthit.ru: could not connect to host
sportifik.com: did not receive HSTS header
sportingoods.com.br: could not connect to host
+sportressofblogitude.com: did not receive HSTS header
sportscollection.com.br: could not connect to host
+sportsmanadvisor.com: could not connect to host
sportwette.eu: did not receive HSTS header
spot-events.com: could not connect to host
spotifyripper.tk: could not connect to host
@@ -12574,18 +13541,18 @@ sprigings.com: did not receive HSTS header
springsoffthegrid.com: could not connect to host
sprint.ml: did not receive HSTS header
sprk.fitness: did not receive HSTS header
+sproing.ca: max-age too low: 0
spron.in: could not connect to host
sproutconnections.com: could not connect to host
-sprueche-zum-valentinstag.de: did not receive HSTS header
-sprueche-zur-geburt.info: did not receive HSTS header
+sprueche-zum-valentinstag.de: could not connect to host
+sprueche-zur-geburt.info: could not connect to host
sprueche-zur-hochzeit.de: did not receive HSTS header
sprueche-zur-konfirmation.de: did not receive HSTS header
sprutech.de: could not connect to host
-sputnik1net.org: could not connect to host
+spykedigital.com: could not connect to host
sqetsa.com: did not receive HSTS header
sqshq.de: did not receive HSTS header
squaddraft.com: did not receive HSTS header
-squadlinx.com: could not connect to host
square.gs: could not connect to host
squarelab.it: did not receive HSTS header
squatldf.org: could not connect to host
@@ -12610,9 +13577,9 @@ ssh.nu: could not connect to host
sshool.at: could not connect to host
ssl.panoramio.com: could not connect to host
ssl.rip: could not connect to host
+sslpoint.com: did not receive HSTS header
sslzilla.de: did not receive HSTS header
ssn1.ru: did not receive HSTS header
-sso.to: could not connect to host
sspanda.com: could not connect to host
ssrvpn.tech: could not connect to host
sss3s.com: could not connect to host
@@ -12625,14 +13592,16 @@ stackhub.cc: could not connect to host
stadionmanager.com: could not connect to host
stadjerspasonline.nl: could not connect to host
stadtbauwerk.at: did not receive HSTS header
+stadtbuecherei-bad-wurzach.de: max-age too low: 0
stadtgartenla.com: could not connect to host
staffjoy.com: did not receive HSTS header
staffjoystaging.com: could not connect to host
stagingjobshq.com: did not receive HSTS header
-stahl.xyz: could not connect to host
+stahl.xyz: did not receive HSTS header
stalkerhispano.com: max-age too low: 0
stalkerteam.pl: did not receive HSTS header
stalkthe.net: could not connect to host
+stall-zur-linde.de: did not receive HSTS header
stalschermer.nl: could not connect to host
stanandjerre.org: could not connect to host
standardssuck.org: did not receive HSTS header
@@ -12641,6 +13610,7 @@ standoutbooks.com: max-age too low: 0
standuppaddlesports.com.au: did not receive HSTS header
stannahtrapliften.nl: did not receive HSTS header
star-stuff.de: did not receive HSTS header
+star.do: could not connect to host
starandshield.com: did not receive HSTS header
starapple.nl: did not receive HSTS header
starcafe.me: could not connect to host
@@ -12648,15 +13618,17 @@ stardeeps.net: max-age too low: 0
starease.net: could not connect to host
starfeeling.net: could not connect to host
stargatepartners.com: did not receive HSTS header
-starina.ru: could not connect to host
starklane.com: max-age too low: 300
starmusic.ga: could not connect to host
starplatinum.jp: could not connect to host
starquake.nl: could not connect to host
+starsam80.net: could not connect to host
starsbattle.net: could not connect to host
+starteesforsale.co.za: did not receive HSTS header
startup.melbourne: could not connect to host
startuplevel.com: could not connect to host
startuponcloud.com: max-age too low: 2678400
+startuppeople.co.uk: could not connect to host
startupum.ru: could not connect to host
stash.ai: did not receive HSTS header
state-of-body-and-mind.com: could not connect to host
@@ -12670,10 +13642,11 @@ static.hosting: could not connect to host
static.or.at: did not receive HSTS header
staticanime.net: could not connect to host
staticisnoise.com: could not connect to host
-stationaryjourney.com: could not connect to host
+stationaryjourney.com: did not receive HSTS header
stationcharlie.com: could not connect to host
stationnementdenuit.ca: did not receive HSTS header
status-sprueche.de: did not receive HSTS header
+status.coffee: could not connect to host
statusbot.io: could not connect to host
statuschecks.net: could not connect to host
stavebnice.net: did not receive HSTS header
@@ -12681,11 +13654,9 @@ staxflax.tk: could not connect to host
stayokhotelscdc-mailing.com: could not connect to host
stcable.net: did not receive HSTS header
stcomex.com: did not receive HSTS header
-stdrc.cc: did not receive HSTS header
+stdev.org: could not connect to host
steamhours.com: could not connect to host
steampunkrobot.com: did not receive HSTS header
-steborio.pw: could not connect to host
-stedbg.net: could not connect to host
steelbea.ms: could not connect to host
steelrhino.co: could not connect to host
steem.io: did not receive HSTS header
@@ -12699,33 +13670,39 @@ steph3n.me: could not connect to host
stephanierxo.com: did not receive HSTS header
stephanos.me: could not connect to host
stephenandburns.com: did not receive HSTS header
+stephenjvoiceovers.com: did not receive HSTS header
stephensolis.net: could not connect to host
stephensolisrey.es: could not connect to host
steplogictalent.com: could not connect to host
sterjoski.com: did not receive HSTS header
+stesti.cz: could not connect to host
stevechekblain.win: could not connect to host
stevengoodpaster.com: could not connect to host
stevensheffey.me: could not connect to host
stevensononthe.net: did not receive HSTS header
steventruesdell.com: could not connect to host
stewartremodelingadvantage.com: could not connect to host
+stewonet.nl: did not receive HSTS header
+stge.uk: could not connect to host
sticklerjs.org: could not connect to host
stickmy.cn: could not connect to host
stickswag.cf: could not connect to host
+stig.io: did not receive HSTS header
stiger.me: could not connect to host
stigroom.com: could not connect to host
+stijnbelmans.be: max-age too low: 604800
stilettomoda.com.br: could not connect to host
stillblackhat.id: could not connect to host
stillyarts.com: did not receive HSTS header
stinkytrashhound.com: could not connect to host
stirlingpoon.net: could not connect to host
stirlingpoon.xyz: could not connect to host
-stitthappens.com: could not connect to host
+stitthappens.com: did not receive HSTS header
stjohnmiami.org: did not receive HSTS header
stjohnsc.com: could not connect to host
stkbn.com: could not connect to host
stkeverneparishcouncil.org.uk: did not receive HSTS header
-stl.news: did not receive HSTS header
+stl.news: max-age too low: 0
stlucasmuseum.org: did not receive HSTS header
stmbgr.com: could not connect to host
stn.me.uk: did not receive HSTS header
@@ -12740,7 +13717,6 @@ stole-my.tv: could not connect to host
stomadental.com: did not receive HSTS header
stonecutterscommunity.com: could not connect to host
stonemanbrasil.com.br: could not connect to host
-stonewuu.com: could not connect to host
stopakwardhandshakes.org: could not connect to host
stopwoodfin.org: could not connect to host
storbritannien.guide: could not connect to host
@@ -12753,13 +13729,13 @@ storiesofhealth.org: did not receive HSTS header
stormhub.org: could not connect to host
stormwatcher.org: could not connect to host
stormyyd.com: max-age too low: 0
+storytime.hu: could not connect to host
stpatricksguild.com: did not receive HSTS header
stqry.com: did not receive HSTS header
str0.at: did not receive HSTS header
strangeplace.net: did not receive HSTS header
strangescout.me: did not receive HSTS header
strasweb.fr: did not receive HSTS header
-strathewerd.de: did not receive HSTS header
strbt.de: could not connect to host
strchr.com: did not receive HSTS header
stream-ing.xyz: could not connect to host
@@ -12769,18 +13745,18 @@ streamer.tips: did not receive HSTS header
streamingeverywhere.com: could not connect to host
streamingmagazin.de: could not connect to host
streampanel.net: did not receive HSTS header
-streampleasure.xyz: did not receive HSTS header
streamthemeeting.com: did not receive HSTS header
streamzilla.com: did not receive HSTS header
-streetmarket.ru: could not connect to host
+street-smart-home.de: could not connect to host
strehl.tk: could not connect to host
-streklhof.at: did not receive HSTS header
+strelitzia02.com: could not connect to host
stressfreehousehold.com: could not connect to host
strictlysudo.com: could not connect to host
strife.tk: could not connect to host
strila.me: could not connect to host
striptizer.tk: did not receive HSTS header
stroeercrm.de: could not connect to host
+strommenhome.com: could not connect to host
strongest-privacy.com: could not connect to host
stuartbaxter.co: could not connect to host
stubbings.eu: could not connect to host
@@ -12796,10 +13772,12 @@ studio-panic.com: did not receive HSTS header
studiocn.cn: did not receive HSTS header
studiodoprazer.com.br: could not connect to host
studiozelden.com: did not receive HSTS header
+studport.rv.ua: max-age too low: 604800
studyabroadstation.com: could not connect to host
studybay.com: did not receive HSTS header
studydrive.net: did not receive HSTS header
studyhub.cf: did not receive HSTS header
+studying-neet.com: could not connect to host
stugb.de: did not receive HSTS header
stumeta2018.de: could not connect to host
stupidstatetricks.com: could not connect to host
@@ -12809,8 +13787,9 @@ sturge.co.uk: did not receive HSTS header
stuudium.life: could not connect to host
stylenda.com: could not connect to host
stylle.me: could not connect to host
-stytt.com: could not connect to host
+stytt.com: did not receive HSTS header
suareforma.com: could not connect to host
+suave.io: did not receive HSTS header
subbing.work: could not connect to host
subdimension.org: could not connect to host
subeesu.com: could not connect to host
@@ -12821,14 +13800,17 @@ subsys.no: did not receive HSTS header
subtitle.rip: could not connect to host
subwayz.de: did not receive HSTS header
subzerolosangeles.com: did not receive HSTS header
+subzerotech.co.uk: could not connect to host
successwithflora.com: could not connect to host
succubus.network: could not connect to host
succubus.xxx: could not connect to host
+suche.org: could not connect to host
suchprogrammer.net: did not receive HSTS header
sudo.im: could not connect to host
sudo.li: did not receive HSTS header
sudosu.fr: could not connect to host
suempresa.cloud: could not connect to host
+suffts.de: did not receive HSTS header
sugarcitycon.com: could not connect to host
sugarsweetorsour.com: did not receive HSTS header
sugartownfarm.com: could not connect to host
@@ -12838,23 +13820,24 @@ suitocracy.com: could not connect to host
summer.ga: could not connect to host
summitbankofkc.com: did not receive HSTS header
summitmasters.net: did not receive HSTS header
-sumoscout.de: could not connect to host
-sun-wellness-online.com.vn: did not receive HSTS header
+sumoscout.de: did not receive HSTS header
sun.re: could not connect to host
suncountrymarine.com: did not receive HSTS header
sundaycooks.com: max-age too low: 2592000
suneilpatel.com: could not connect to host
+sunfeathers.net: could not connect to host
sunfireshop.com.br: could not connect to host
-sunjaydhama.com: could not connect to host
sunlandsg.vn: did not receive HSTS header
sunnyfruit.ru: could not connect to host
sunriseafricarelief.com: did not receive HSTS header
sunshinepress.org: could not connect to host
sunxchina.com: could not connect to host
sunyanzi.tk: could not connect to host
+sunyataherb.com: could not connect to host
suos.io: could not connect to host
supcro.com: could not connect to host
-super-demarche.com: could not connect to host
+super-demarche.com: did not receive HSTS header
+super-erotica.ru: could not connect to host
super-garciniaslim.com: could not connect to host
super-o-blog.com: could not connect to host
super-radiant-skin.com: could not connect to host
@@ -12862,6 +13845,7 @@ super-ripped-power.com: could not connect to host
super-slim-coffee.com: could not connect to host
superbabysitting.ch: could not connect to host
superbike.tw: could not connect to host
+superbshare.com: could not connect to host
supercastlessouthsydney.com.au: could not connect to host
supercreepsvideo.com: did not receive HSTS header
superiorfloridavacation.com: could not connect to host
@@ -12870,6 +13854,7 @@ superlandnetwork.de: did not receive HSTS header
superlentes.com.br: could not connect to host
supernovabrasil.com.br: did not receive HSTS header
superpase.com: could not connect to host
+supersahnetorten.de: could not connect to host
supersalescontest.nl: did not receive HSTS header
superschnappchen.de: could not connect to host
supersecurefancydomain.com: could not connect to host
@@ -12877,22 +13862,24 @@ supertramp-dafonseca.com: did not receive HSTS header
superuser.fi: could not connect to host
superwally.org: could not connect to host
supes.io: did not receive HSTS header
+supperclub.es: could not connect to host
support4server.de: could not connect to host
supportfan.gov: could not connect to host
suprlink.net: could not connect to host
supweb.ovh: could not connect to host
-surasak.org: could not connect to host
surasak.xyz: could not connect to host
suraya.online: could not connect to host
surfeasy.com: did not receive HSTS header
surfone-leucate.com: did not receive HSTS header
surkatty.org: did not receive HSTS header
-survivalistplanet.com: did not receive HSTS header
susastudentenjobs.de: could not connect to host
susconam.org: could not connect to host
suseasky.com: did not receive HSTS header
+sushifrick.de: could not connect to host
+sushiwereld.be: did not receive HSTS header
suspiciousdarknet.xyz: could not connect to host
sussexwebdesigns.com: could not connect to host
+sussexwebsites.info: could not connect to host
sustainability.gov: did not receive HSTS header
suts.co.uk: could not connect to host
suttonbouncycastles.co.uk: could not connect to host
@@ -12905,6 +13892,7 @@ svatba-frantovi.cz: could not connect to host
svenluijten.com: did not receive HSTS header
svenskacasino.com: did not receive HSTS header
svenskaservern.se: could not connect to host
+svetdrzaku.cz: did not receive HSTS header
svetjakonadlani.cz: did not receive HSTS header
sviz.pro: could not connect to host
svj-stochovska.cz: could not connect to host
@@ -12916,41 +13904,44 @@ swallsoft.co.uk: could not connect to host
swallsoft.com: could not connect to host
swanseapartyhire.co.uk: could not connect to host
swarmation.com: did not receive HSTS header
+sway.com: did not receive HSTS header
swdatlantico.pt: could not connect to host
sweep.cards: did not receive HSTS header
sweetlegs.jp: could not connect to host
sweetstreats.ca: could not connect to host
sweetvanilla.jp: could not connect to host
-sweharris.org: could not connect to host
swfloshatraining.com: could not connect to host
-swift-devedge.de: did not receive HSTS header
+swift-devedge.de: could not connect to host
swiftconf.com: did not receive HSTS header
swiftcrypto.com: could not connect to host
+swiftpk.net: could not connect to host
swiggy.com: did not receive HSTS header
swimming.ca: did not receive HSTS header
swissentreprises.ch: could not connect to host
swisstranslate.ch: did not receive HSTS header
swisstranslate.fr: did not receive HSTS header
swisswebhelp.ch: could not connect to host
+swissxperts.ch: could not connect to host
swite.com: did not receive HSTS header
swmd5c.org: could not connect to host
swordfighting.net: could not connect to host
swu.party: could not connect to host
-swuosa.org: could not connect to host
sx3.no: could not connect to host
sxbk.pw: could not connect to host
syam.cc: could not connect to host
sydgrabber.tk: could not connect to host
-syha.org.uk: did not receive HSTS header
sykl.us: could not connect to host
+sylvaincombe.net: could not connect to host
sylvangarden.org: could not connect to host
sylvanorder.com: could not connect to host
+symetria.io: max-age too low: 2592000
synackr.com: did not receive HSTS header
synapticconsulting.co.uk: could not connect to host
syncaddict.net: could not connect to host
syncappate.com: could not connect to host
syncclinicalstudy.com: could not connect to host
syncer.jp: did not receive HSTS header
+synchrocube.com: could not connect to host
syncmylife.net: could not connect to host
syncserve.net: did not receive HSTS header
syneic.com: did not receive HSTS header
@@ -12970,16 +13961,16 @@ syspen.space: could not connect to host
sysrq.tech: could not connect to host
syss.de: did not receive HSTS header
systea.net: could not connect to host
+system-online.cz: did not receive HSTS header
systemd.me: could not connect to host
+systemweb.no: could not connect to host
syy.hk: did not receive HSTS header
szaszm.tk: could not connect to host
-szczot3k.pl: did not receive HSTS header
szerbnyelvkonyv.hu: could not connect to host
szlovaknyelv.hu: could not connect to host
szlovennyelv.hu: could not connect to host
szongott.net: did not receive HSTS header
-szunia.com: could not connect to host
-szymczak.at: could not connect to host
+szymczak.at: did not receive HSTS header
t-complex.space: could not connect to host
t-ken.xyz: could not connect to host
t-point.eu: did not receive HSTS header
@@ -12995,8 +13986,10 @@ taberu-fujitsubo.com: did not receive HSTS header
tabino.top: did not receive HSTS header
tabitatsu.jp: did not receive HSTS header
tabla-periodica.com: could not connect to host
+tachyonapp.com: could not connect to host
tacoma-games.com: did not receive HSTS header
tacotown.tk: could not connect to host
+tadata.me: could not connect to host
tadcastercircuit.org.uk: did not receive HSTS header
tadigitalstore.com: could not connect to host
tafoma.com: did not receive HSTS header
@@ -13006,9 +13999,14 @@ tahakomat.cz: could not connect to host
tahf.net: could not connect to host
taichi-jade.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
taidu.news: could not connect to host
+tailandfur.com: did not receive HSTS header
tailify.com: did not receive HSTS header
+tailpuff.net: did not receive HSTS header
tails.com.ar: could not connect to host
taim.io: could not connect to host
+takebackyourstate.com: could not connect to host
+takebackyourstate.net: could not connect to host
+takebackyourstate.org: could not connect to host
takebonus.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
takedownthissite.com: could not connect to host
takinet.kr: could not connect to host
@@ -13018,18 +14016,21 @@ talentuar.com: could not connect to host
tales-of-interia.de: could not connect to host
talheim-records.ca: could not connect to host
talk.google.com: did not receive HSTS header (error ignored - included regardless)
+talk.xyz: could not connect to host
talkitup.mx: could not connect to host
talkitup.online: could not connect to host
talklifestyle.nl: could not connect to host
tallr.se: could not connect to host
tallshoe.com: could not connect to host
+talsi.eu: could not connect to host
tam7t.com: did not receive HSTS header
-tamasszabo.net: could not connect to host
+tamaraboutique.com: could not connect to host
+tamasszabo.net: did not receive HSTS header
tamersunion.org: did not receive HSTS header
tamex.xyz: could not connect to host
tandarts-haarlem.nl: did not receive HSTS header
tandblekningidag.com: could not connect to host
-tandk.com.vn: did not receive HSTS header
+tangel.me: could not connect to host
tangerine.ga: could not connect to host
tangibilizing.com: could not connect to host
tangiblesecurity.com: did not receive HSTS header
@@ -13039,16 +14040,17 @@ tangzhao.net: could not connect to host
taniesianie.pl: did not receive HSTS header
tankfreunde.de: did not receive HSTS header
tante-bugil.net: could not connect to host
+tantetilli.de: did not receive HSTS header
tantotiempo.de: did not receive HSTS header
tanze-jetzt.de: could not connect to host
taotuba.net: did not receive HSTS header
-taozj.org: could not connect to host
+taozj.org: did not receive HSTS header
tapestries.tk: could not connect to host
tapfinder.ca: could not connect to host
tapka.cz: did not receive HSTS header
tappublisher.com: did not receive HSTS header
+taqsim.jp: max-age too low: 0
taranis.re: could not connect to host
-tarantul.org.ua: could not connect to host
taravancil.com: did not receive HSTS header
tarek.link: could not connect to host
targaryen.house: could not connect to host
@@ -13059,35 +14061,38 @@ taskstats.com: could not connect to host
tasmansecurity.com: could not connect to host
tassup.com: could not connect to host
tasta.ro: did not receive HSTS header
-tasticfilm.com: could not connect to host
+tasticfilm.com: did not receive HSTS header
tastyyy.co: could not connect to host
tasyacherry-anal.com: could not connect to host
tatilbus.com: could not connect to host
tatilmix.com: could not connect to host
-tatort-fanpage.de: did not receive HSTS header
+tatort-fanpage.de: could not connect to host
tatt.io: could not connect to host
tauchkater.de: could not connect to host
tavoittaja.fi: did not receive HSTS header
tavopica.lt: did not receive HSTS header
taxaudit.com: did not receive HSTS header
taxbench.com: could not connect to host
+taxiindenbosch.nl: could not connect to host
taxmadras.com: could not connect to host
taxsnaps.co.nz: did not receive HSTS header
-taxsquirrel.com: could not connect to host
+taxspeaker.com: did not receive HSTS header
tazemama.biz: could not connect to host
tazj.in: did not receive HSTS header
tazz.in: could not connect to host
tbarter.com: did not receive HSTS header
tbrss.com: did not receive HSTS header
+tbtech.cz: did not receive HSTS header
+tbys.us: could not connect to host
tc-bonito.de: did not receive HSTS header
tcao.info: could not connect to host
tcby45.xyz: could not connect to host
-tchaka.top: could not connect to host
tcl.ath.cx: did not receive HSTS header
tcp.expert: did not receive HSTS header
tcwebvn.com: could not connect to host
tdelmas.eu: could not connect to host
tdelmas.ovh: could not connect to host
+tdpblog.site: could not connect to host
tdsb.cf: could not connect to host
tdsb.ga: could not connect to host
tdsb.gq: could not connect to host
@@ -13103,6 +14108,7 @@ tealdrones.com: did not receive HSTS header
team-pancake.eu: did not receive HSTS header
team-teasers.com: could not connect to host
team2fou.cf: did not receive HSTS header
+teamassists.com: did not receive HSTS header
teambeoplay.co.uk: did not receive HSTS header
teamblueridge.org: could not connect to host
teamdaylo.xyz: could not connect to host
@@ -13111,10 +14117,11 @@ teampoint.cz: could not connect to host
teams.microsoft.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
teamsocial.co: did not receive HSTS header
teamup.rocks: did not receive HSTS header
-teamx-gaming.de: could not connect to host
+teamx-gaming.de: did not receive HSTS header
teamzeus.cz: could not connect to host
teaparty.id: could not connect to host
tearoy.faith: could not connect to host
+teasenetwork.com: could not connect to host
tebieer.com: could not connect to host
tech-blog.fr: did not receive HSTS header
tech-finder.fr: could not connect to host
@@ -13123,7 +14130,7 @@ techandtux.de: could not connect to host
techask.it: could not connect to host
techassist.io: did not receive HSTS header
techcavern.ml: did not receive HSTS header
-techelements.co: could not connect to host
+techelements.co: did not receive HSTS header
techfactslive.com: did not receive HSTS header
techhipster.net: could not connect to host
techhub.ml: could not connect to host
@@ -13134,9 +14141,11 @@ techmasters.andover.edu: could not connect to host
techmatehq.com: could not connect to host
technicalforensic.com: could not connect to host
technicalpenguins.com: did not receive HSTS header
+techniclab.net: could not connect to host
+techniclab.org: could not connect to host
+techniclab.ru: could not connect to host
technikrom.org: did not receive HSTS header
technogroup.cz: did not receive HSTS header
-technologyand.me: could not connect to host
technosavvyport.com: did not receive HSTS header
technosuport.com: did not receive HSTS header
technotonic.com.au: did not receive HSTS header
@@ -13158,16 +14167,19 @@ tedxkmitl.com: could not connect to host
tee-idf.net: could not connect to host
teedb.de: could not connect to host
teehaus-shila.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+teenerotic.net: could not connect to host
teeplelaw.com: did not receive HSTS header
tefl.io: did not receive HSTS header
tegelsensanitaironline.nl: did not receive HSTS header
tehotuotanto.net: did not receive HSTS header
tehplace.club: could not connect to host
+tehranperfume.com: did not receive HSTS header
tekiro.com: did not receive HSTS header
teknogeek.id: could not connect to host
teknologi.or.id: max-age too low: 36000
teknotes.co.uk: could not connect to host
tekshrek.com: did not receive HSTS header
+teksuperior.com: could not connect to host
tektoria.de: could not connect to host
tel-dithmarschen.de: did not receive HSTS header
teleallarme.ch: could not connect to host
@@ -13176,14 +14188,15 @@ telecharger-open-office.com: could not connect to host
telecharger-winrar.com: could not connect to host
telefisk.org: did not receive HSTS header
telefonnummer.online: could not connect to host
-telefonogratuito.com: did not receive HSTS header
telefoonnummerinfo.nl: could not connect to host
telekollektiv.org: could not connect to host
telescam.com: could not connect to host
+teleshop.be: could not connect to host
teletechnology.in: did not receive HSTS header
teletra.ru: could not connect to host
telfordwhitehouse.co.uk: did not receive HSTS header
tellingua.com: did not receive HSTS header
+telugu4u.net: could not connect to host
temasa.net: did not receive HSTS header
temehu.com: did not receive HSTS header
tempcraft.net: could not connect to host
@@ -13207,8 +14220,11 @@ teodio.cl: did not receive HSTS header
teoleonie.com: did not receive HSTS header
teos.online: could not connect to host
teoskanta.fi: could not connect to host
+tequilazor.com: could not connect to host
teranga.ch: did not receive HSTS header
+tercerapuertoaysen.cl: could not connect to host
terminalvelocity.co.nz: could not connect to host
+termino.eu: did not receive HSTS header
terra-x.net: could not connect to host
terra.by: did not receive HSTS header
terrax.berlin: could not connect to host
@@ -13216,6 +14232,7 @@ terrax.info: did not receive HSTS header
terrax.net: could not connect to host
terrazoo.de: did not receive HSTS header
teru.com.br: could not connect to host
+test-dns.eu: could not connect to host
test02.dk: did not receive HSTS header
testadron.com: could not connect to host
testandroid.xyz: could not connect to host
@@ -13224,7 +14241,6 @@ testbirds.cz: could not connect to host
testbirds.sk: could not connect to host
testdomain.ovh: could not connect to host
testnode.xyz: could not connect to host
-testosterone-complex.com: could not connect to host
testovaci.ml: could not connect to host
tetrafinancial-commercial-business-equipment-financing.com: did not receive HSTS header
tetrafinancial-energy-mining-equipment-financing.com: did not receive HSTS header
@@ -13233,20 +14249,20 @@ tetrafinancial-manufacturing-industrial-equipment-financing.com: did not receive
tetrafinancial-news.com: did not receive HSTS header
tetrafinancial-technology-equipment-software-financing.com: did not receive HSTS header
tetramax.eu: did not receive HSTS header
+tetrarch.co: could not connect to host
tetsai.com: could not connect to host
teufelsystem.de: could not connect to host
teuniz.nl: did not receive HSTS header
texte-zur-taufe.de: did not receive HSTS header
textoplano.xyz: could not connect to host
textracer.dk: could not connect to host
-tf2stadium.com: could not connect to host
+tf2stadium.com: did not receive HSTS header
tfcoms-sp-tracker-client.azurewebsites.net: could not connect to host
tffans.com: could not connect to host
tfl.lu: did not receive HSTS header
tgbyte.com: did not receive HSTS header
tgod.co: could not connect to host
tgr.re: could not connect to host
-tgtv.tn: did not receive HSTS header
th-bl.de: did not receive HSTS header
th3nd.com: did not receive HSTS header
thackert.myfirewall.org: could not connect to host
@@ -13270,7 +14286,6 @@ the-finance-blog.com: could not connect to host
the-gist.io: could not connect to host
the-paddies.de: did not receive HSTS header
the-sky-of-valkyries.com: could not connect to host
-the-zenti.de: did not receive HSTS header
the.ie: max-age too low: 0
the420vape.org: could not connect to host
theamateurs.net: did not receive HSTS header
@@ -13287,26 +14302,30 @@ thebreakhotel.com: did not receive HSTS header
thebrotherswarde.com: could not connect to host
thebte.com: could not connect to host
thebuffalotavern.com: could not connect to host
+thecandidforum.com: could not connect to host
thecapitalbank.com: did not receive HSTS header
thecharlestonwaldorf.com: did not receive HSTS header
+thecitizens.com: did not receive HSTS header
theclementinebutchers.com: could not connect to host
theclimbingunit.com: did not receive HSTS header
+thecloudmigrator.com: did not receive HSTS header
thecloudrevolution.net: did not receive HSTS header
theclubjersey.com: did not receive HSTS header
thecodeninja.net: did not receive HSTS header
thecoffeehouse.xyz: could not connect to host
thecoffeepod.co.uk: did not receive HSTS header
-thecskr.in: could not connect to host
+thecskr.in: did not receive HSTS header
thecsw.com: did not receive HSTS header
+thecustomizewindows.com: did not receive HSTS header
thedailyupvote.com: could not connect to host
thedarkartsandcrafts.com: could not connect to host
thedevilwearswibra.nl: did not receive HSTS header
-thedisc.nl: could not connect to host
thedominatorsclan.com: did not receive HSTS header
thedrinks.co: did not receive HSTS header
thedrop.pw: did not receive HSTS header
thedrunkencabbage.com: could not connect to host
thedystance.com: could not connect to host
+theel0ja.info: did not receive HSTS header
theelitebuzz.com: could not connect to host
theendofzion.com: did not receive HSTS header
theepankar.com: could not connect to host
@@ -13317,24 +14336,28 @@ theeyeopener.com: did not receive HSTS header
thefarbeyond.com: could not connect to host
thefootballanalyst.com: did not receive HSTS header
thefox.co: could not connect to host
+thefox.com.fr: could not connect to host
thefreebirds.in: could not connect to host
thefrk.xyz: could not connect to host
thefrozenfire.com: did not receive HSTS header
thefutureharrills.com: could not connect to host
+thegcccoin.com: max-age too low: 0
thegemriverside.com.vn: could not connect to host
thego2swatking.com: could not connect to host
thegoldregister.co.uk: could not connect to host
thegraciousgourmet.com: did not receive HSTS header
+thegreens.us: could not connect to host
thegreenvpn.com: could not connect to host
thehiddenbay.cc: could not connect to host
thehiddenbay.eu: could not connect to host
+thehiddenbay.fi: could not connect to host
thehiddenbay.me: could not connect to host
thehiddenbay.net: could not connect to host
+thehiddenbay.ws: could not connect to host
thehighersideclothing.com: did not receive HSTS header
thehistory.me: could not connect to host
thehonorguard.org: did not receive HSTS header
thehoopsarchive.com: could not connect to host
-thehotfix.net: could not connect to host
theimagesalon.com: max-age too low: 43200
theinvisibletrailer.com: could not connect to host
theitsage.com: did not receive HSTS header
@@ -13348,14 +14371,15 @@ thelostyankee.com: could not connect to host
themadmechanic.net: could not connect to host
themanufacturingmarketingagency.com: could not connect to host
themarble.co: could not connect to host
-themaster.site: did not receive HSTS header
themathbehindthe.science: could not connect to host
themathematician.uk: could not connect to host
+themeaudit.com: could not connect to host
themerchandiser.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
themesurgeons.net: could not connect to host
themicrocapital.com: could not connect to host
themoderate.xyz: could not connect to host
thenextstep.events: could not connect to host
+thenichecast.com: could not connect to host
thenorthschool.org.uk: did not receive HSTS header
thenrdhrd.nl: could not connect to host
theodorejones.info: could not connect to host
@@ -13367,7 +14391,6 @@ theoverfly.co: could not connect to host
thepaffy.de: could not connect to host
thepartywarehouse.co.uk: did not receive HSTS header
thepcweb.tk: could not connect to host
-thepeninsulaires.com: could not connect to host
thepiratebay.al: could not connect to host
thepiratebay.poker: could not connect to host
thepiratebay.tech: could not connect to host
@@ -13377,7 +14400,9 @@ theprivacysolution.com: could not connect to host
thequillmagazine.org: could not connect to host
therise.ca: max-age too low: 300
thermique.ch: could not connect to host
+theroamingnotary.com: did not receive HSTS header
therockawaysny.com: did not receive HSTS header
+thesassynut.com: did not receive HSTS header
thesearchnerds.co.uk: did not receive HSTS header
thesecurityteam.net: could not connect to host
thesehighsandlows.com: could not connect to host
@@ -13389,34 +14414,35 @@ thesplit.is: could not connect to host
thestack.xyz: could not connect to host
thestagchorleywood.co.uk: did not receive HSTS header
thestonegroup.de: could not connect to host
+thestoritplace.com: max-age too low: 0
thetapirsmouth.com: could not connect to host
-thethirdroad.com: did not receive HSTS header
-thetradinghall.com: could not connect to host
+thethirdroad.com: could not connect to host
thetruthhurvitz.com: could not connect to host
theurbanyoga.com: did not receive HSTS header
theuucc.org: did not receive HSTS header
thevintagenews.com: did not receive HSTS header
thevoid.one: could not connect to host
thewallset.com: could not connect to host
-thewebdexter.com: could not connect to host
thewebfellas.com: did not receive HSTS header
thewego.com: could not connect to host
theweilai.com: could not connect to host
thewhiterabbit.space: could not connect to host
theworkingeye.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
thewp.pro: could not connect to host
-thezero.org: could not connect to host
thezonders.com: did not receive HSTS header
thgros.fr: could not connect to host
+thibautcharles.net: did not receive HSTS header
thierfreund.de: did not receive HSTS header
thinkcash.nl: could not connect to host
thinkcoding.de: could not connect to host
thinkcoding.org: could not connect to host
thinkdo.jp: could not connect to host
+thinklikeanentrepreneur.com: did not receive HSTS header
thinkswap.com: did not receive HSTS header
thinlyveiledcontempt.com: could not connect to host
thirdpartytrade.com: did not receive HSTS header
thirty5.net: did not receive HSTS header
+thirtyspot.com: could not connect to host
thisisacompletetest.ga: could not connect to host
thisisforager.com: could not connect to host
thismumdoesntknowbest.com: could not connect to host
@@ -13426,33 +14452,34 @@ thkb.net: could not connect to host
thomas-ferney.fr: did not receive HSTS header
thomas-gibertie.fr: did not receive HSTS header
thomas-grobelny.de: could not connect to host
-thomasbreads.com: max-age too low: 86400
thomascloud.ddns.net: could not connect to host
-thomasetsophie.fr: could not connect to host
+thomasgriffin.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
thomasharvey.me: did not receive HSTS header
thomaskliszowski.fr: did not receive HSTS header
-thomasmeester.nl: did not receive HSTS header
thomasnet.fr: could not connect to host
thomasscholz.com: max-age too low: 2592000
thomasschweizer.net: could not connect to host
thomasvt.xyz: max-age too low: 2592000
thorbis.com: could not connect to host
-thorbiswebsitedesign.com: did not receive HSTS header
+thorbiswebsitedesign.com: could not connect to host
thorgames.nl: did not receive HSTS header
thorncreek.net: did not receive HSTS header
thot.space: could not connect to host
threatcentral.io: could not connect to host
threebrothersbrewing.com: max-age too low: 2592000
threebulls.be: did not receive HSTS header
+threit.de: did not receive HSTS header
thriveapproach.co.uk: did not receive HSTS header
thrivewellnesshub.co.za: did not receive HSTS header
throughthelookingglasslens.co.uk: could not connect to host
thrx.net: did not receive HSTS header
thumbtack.com: did not receive HSTS header
thundercampaign.com: could not connect to host
+thuybich.com: did not receive HSTS header
thyrex.fr: could not connect to host
ti-js.com: could not connect to host
-ti.blog.br: could not connect to host
+ti.blog.br: did not receive HSTS header
+tiacollection.com: did not receive HSTS header
tianxicaipiao.com: could not connect to host
tianxicaipiao.win: could not connect to host
tianxicp.com: could not connect to host
@@ -13463,12 +14490,14 @@ tibovanheule.site: could not connect to host
ticketoplichting.nl: did not receive HSTS header
tickopa.co.uk: could not connect to host
tickreport.com: did not receive HSTS header
-ticktock.today: did not receive HSTS header
+ticktock.today: could not connect to host
tictactux.de: could not connect to host
tidmore.us: could not connect to host
tie-online.org: did not receive HSTS header
+tiendafetichista.com: could not connect to host
tiendschuurstraat.nl: could not connect to host
tiensnet.com: could not connect to host
+tierarztpraxis-illerwinkel.de: did not receive HSTS header
tierrarp.com: could not connect to host
tiffanytravels.com: did not receive HSTS header
tightlineproductions.com: did not receive HSTS header
@@ -13476,7 +14505,6 @@ tigit.co.nz: could not connect to host
tikutiku.pl: could not connect to host
tildebot.com: could not connect to host
tilient.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-tilikum.io: did not receive HSTS header
tilkah.com.au: did not receive HSTS header
tillcraft.com: could not connect to host
timbeilby.com: could not connect to host
@@ -13494,7 +14522,10 @@ timeserver2.de: could not connect to host
timeserver3.de: could not connect to host
timestamp.io: did not receive HSTS header
timestamp.uk: could not connect to host
+timhieubenh.net: could not connect to host
timhjalpen.se: could not connect to host
+timklefisch.de: did not receive HSTS header
+timmy.im: could not connect to host
timmy.ws: could not connect to host
timotrans.de: did not receive HSTS header
timotrans.eu: did not receive HSTS header
@@ -13510,24 +14541,26 @@ tinchbear.xyz: did not receive HSTS header
tindewen.net: could not connect to host
tink.network: could not connect to host
tipiakers.club: could not connect to host
-tipps-fuer-den-haushalt.de: did not receive HSTS header
+tipps-fuer-den-haushalt.de: could not connect to host
tippspiel.cc: could not connect to host
tipsyk.ru: could not connect to host
tiredofeating.com: could not connect to host
tiremoni.ch: did not receive HSTS header
tirex.media: did not receive HSTS header
+tism.in: could not connect to host
tiste.org: could not connect to host
titanlab.de: could not connect to host
titanleaf.com: could not connect to host
tittarpuls.se: could not connect to host
titties.ml: could not connect to host
+tjandpals.com: could not connect to host
tjc.wiki: could not connect to host
tjeckien.guide: could not connect to host
tjs.me: could not connect to host
tju.me: could not connect to host
tkappertjedemetamorfose.nl: could not connect to host
tkarstens.de: did not receive HSTS header
-tkhw.tk: could not connect to host
+tkhw.tk: did not receive HSTS header
tkonstantopoulos.tk: could not connect to host
tkts.cl: could not connect to host
tlach.cz: did not receive HSTS header
@@ -13541,6 +14574,7 @@ tlshost.net: could not connect to host
tm-solutions.eu: could not connect to host
tm.id.au: did not receive HSTS header
tmaward.net: could not connect to host
+tmconnects.com: did not receive HSTS header
tmdc.ddns.net: could not connect to host
tmhlive.com: could not connect to host
tmin.cf: could not connect to host
@@ -13550,13 +14584,12 @@ tmtradingmorocco.ma: could not connect to host
tnb-plattform.de: could not connect to host
tncnanet.com.br: could not connect to host
tno.io: could not connect to host
-tob-rulez.de: could not connect to host
+to2mbn.org: could not connect to host
tobaby.com.br: could not connect to host
tobaccore.eu: could not connect to host
tobaccore.sk: could not connect to host
tobias-bielefeld.de: did not receive HSTS header
tobiasbergius.se: could not connect to host
-tobiaskorf.de: could not connect to host
tobiasmathes.com: could not connect to host
tobiasmathes.name: could not connect to host
tobiasofficial.at: could not connect to host
@@ -13571,10 +14604,12 @@ todosrv.com: could not connect to host
tofa-koeln.de: could not connect to host
tofu.im: could not connect to host
togelonlinecommunity.com: did not receive HSTS header
-tojeto.eu: could not connect to host
+tohokufd.com: could not connect to host
+tojeto.eu: did not receive HSTS header
toka.sg: could not connect to host
tokage.me: could not connect to host
tokenloan.com: could not connect to host
+tokfun.com: could not connect to host
tokobungaasryflorist.com: did not receive HSTS header
tokobungadijambi.com: did not receive HSTS header
tokobungadilampung.com: could not connect to host
@@ -13586,25 +14621,29 @@ tokotimbangandigitalmurah.web.id: did not receive HSTS header
tokototech.com: could not connect to host
tokoyo.biz: could not connect to host
tollmanz.com: did not receive HSTS header
-tollsjekk.no: did not receive HSTS header
+tollsjekk.no: could not connect to host
tolud.com: could not connect to host
tom.run: did not receive HSTS header
+tomandshirley.com: could not connect to host
tomeara.net: could not connect to host
tomevans.io: did not receive HSTS header
tomharling.co.uk: could not connect to host
tomlankhorst.nl: did not receive HSTS header
+tomli.blog: could not connect to host
tomli.me: could not connect to host
tommounsey.com: did not receive HSTS header
tommsy.com: did not receive HSTS header
tommy-bordas.fr: did not receive HSTS header
tommyads.com: could not connect to host
tommyweber.de: did not receive HSTS header
+tomochun.net: max-age too low: 0
tomphill.co.uk: could not connect to host
+tomy.icu: could not connect to host
tonburi.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
tongmu.me: could not connect to host
toniharant.de: could not connect to host
+tono.us: could not connect to host
toomanypillows.com: could not connect to host
-top-solar-info.de: could not connect to host
top-stage.net: could not connect to host
top10mountainbikes.info: could not connect to host
topanlage.de: could not connect to host
@@ -13621,14 +14660,16 @@ topnovini.com: did not receive HSTS header
toppik.com.br: could not connect to host
topservercccam.com: did not receive HSTS header
topshelfguild.com: could not connect to host
+topshoptools.com: could not connect to host
toptenthebest.com: did not receive HSTS header
toptranslation.com: did not receive HSTS header
+topwin.la: could not connect to host
topyx.com: did not receive HSTS header
tor2web.org: could not connect to host
torbay.ga: could not connect to host
+torbe.es: could not connect to host
torchl.it: could not connect to host
toretfaction.net: could not connect to host
-torg-room.ru: could not connect to host
torlock.download: could not connect to host
torproject.org.uk: could not connect to host
torproject.ovh: could not connect to host
@@ -13639,6 +14680,7 @@ torrentz.website: could not connect to host
torrentz2.eu: did not receive HSTS header
tortugalife.de: could not connect to host
torv.rocks: did not receive HSTS header
+toscer.me: did not receive HSTS header
tosecure.link: could not connect to host
toshnix.com: could not connect to host
toshub.com: could not connect to host
@@ -13654,35 +14696,38 @@ totot.net: did not receive HSTS header
toucedo.de: could not connect to host
touch-up-net.com: could not connect to host
touchbasemail.com: did not receive HSTS header
+touchinformatica.com: did not receive HSTS header
touchpointidg.us: could not connect to host
touchscreen-handy.de: did not receive HSTS header
+touchscreentills.com: could not connect to host
touchstonefms.co.uk: did not receive HSTS header
touray-enterprise.ch: could not connect to host
tournaire.fr: did not receive HSTS header
tourpeer.com: did not receive HSTS header
toursandtransfers.it: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
tousproducteurs.fr: did not receive HSTS header
-towandalibrary.org: did not receive HSTS header
towaway.ru: could not connect to host
town-farm.surrey.sch.uk: could not connect to host
+tox.im: did not receive HSTS header
toxicboot.com: could not connect to host
toxicip.com: could not connect to host
toxme.se: did not receive HSTS header
toymania.de: could not connect to host
toyotamotala.se: could not connect to host
-tpansino.com: did not receive HSTS header
tpbcdn.com: could not connect to host
-tpblist.xyz: could not connect to host
+tpblist.xyz: max-age too low: 0
tpbunblocked.org: could not connect to host
tpe-edu.com: could not connect to host
tpms4u.at: did not receive HSTS header
tppdebate.org: did not receive HSTS header
+trabajarenperu.com: did not receive HSTS header
tracetracker.com: did not receive HSTS header
tracetracker.no: did not receive HSTS header
+tracewind.top: could not connect to host
track.plus: could not connect to host
trackdays4fun.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
tracker-gps.ch: could not connect to host
-trackingstream.com: did not receive HSTS header
+trackmeet.io: did not receive HSTS header
tracktivity.com.au: did not receive HSTS header
trade-smart.ru: could not connect to host
tradietrove.com.au: did not receive HSTS header
@@ -13692,37 +14737,51 @@ tradingcentre.com.au: did not receive HSTS header
tradinghope.com: could not connect to host
tradingrooms.com: did not receive HSTS header
traditional-knowledge.tk: did not receive HSTS header
+tradiz.org: could not connect to host
traeningsprojekt.dk: did not receive HSTS header
trafficquality.org: could not connect to host
traffictigers.com: did not receive HSTS header
traforet.win: could not connect to host
train-track.co.uk: did not receive HSTS header
traindb.nl: did not receive HSTS header
+trainhorns.us: did not receive HSTS header
training4girls.ru: could not connect to host
traininglist.org: could not connect to host
trainingproviderresults.gov: could not connect to host
+trainline.at: could not connect to host
+trainline.cn: could not connect to host
+trainline.com.br: could not connect to host
+trainline.com.pt: could not connect to host
+trainline.cz: could not connect to host
+trainline.dk: could not connect to host
trainline.io: could not connect to host
+trainline.nl: could not connect to host
+trainline.no: could not connect to host
+trainline.pl: could not connect to host
+trainline.se: could not connect to host
trainut.com: could not connect to host
trakfusion.com: could not connect to host
-tranhsondau.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
tranos.de: did not receive HSTS header
transbike.es: did not receive HSTS header
transcendmotor.sg: could not connect to host
transcriptionwave.com: did not receive HSTS header
transdirect.com.au: did not receive HSTS header
transformify.org: did not receive HSTS header
+transgendernetwerk.nl: did not receive HSTS header
transl8.eu: did not receive HSTS header
translate.googleapis.com: did not receive HSTS header (error ignored - included regardless)
transmithe.net: could not connect to host
transportal.sk: did not receive HSTS header
transsexualpantyhose.com: could not connect to host
-trauertexte.info: did not receive HSTS header
+tratamentoparacelulite.biz: did not receive HSTS header
+tratamentoparacelulite.net: did not receive HSTS header
+trauertexte.info: could not connect to host
traumhuetten.de: did not receive HSTS header
travality.ru: could not connect to host
travel-kuban.ru: did not receive HSTS header
-travel1x1.com: could not connect to host
+travel1x1.com: did not receive HSTS header
travelinsightswriter.com: could not connect to host
-travelinsurance.co.nz: did not receive HSTS header
+travelling.expert: could not connect to host
travotion.com: could not connect to host
trazosdearte.com: did not receive HSTS header
treasuredinheritanceministry.com: did not receive HSTS header
@@ -13733,11 +14792,14 @@ treeremovaljohannesburg.co.za: could not connect to host
treino.blog.br: could not connect to host
treker.us: could not connect to host
trell.co.in: did not receive HSTS header
-tremoureux.fr: did not receive HSTS header
+tremoureux.fr: could not connect to host
trendberry.ru: could not connect to host
trendingpulse.com: could not connect to host
trendisland.de: did not receive HSTS header
trendydips.com: could not connect to host
+trentmaydew.com: did not receive HSTS header
+tretkowski.de: did not receive HSTS header
+trewe.eu: could not connect to host
triadwars.com: did not receive HSTS header
triageo.com.au: could not connect to host
trialmock.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -13761,18 +14823,22 @@ trixies-wish.nz: could not connect to host
trixy.com.br: could not connect to host
troi.de: did not receive HSTS header
trollme.me: could not connect to host
+trollscave.xyz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
tronflix.com: did not receive HSTS header
troo.ly: could not connect to host
trouter.io: could not connect to host
trouver-son-chemin.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+truckgpsreviews.com: did not receive HSTS header
true.ink: did not receive HSTS header
truebred-labradors.com: did not receive HSTS header
truejob.com: did not receive HSTS header
+trumeet.top: did not receive HSTS header
trunkjunk.co: could not connect to host
trush.in: could not connect to host
trustedinnovators.com: could not connect to host
trusteecar.com: did not receive HSTS header
trustmeimfancy.com: could not connect to host
+try2services.cm: did not receive HSTS header
trybind.com: could not connect to host
tryfabulousdiet.com: could not connect to host
tryfm.net: did not receive HSTS header
@@ -13789,6 +14855,7 @@ tsgbit.net: could not connect to host
tsgoc.com: did not receive HSTS header
tsigaradiko.com: could not connect to host
tsrstore.gq: could not connect to host
+tsu-ku-ro.com: could not connect to host
tsukeawase.com: did not receive HSTS header
tsukuba.style: could not connect to host
tsumegumi.net: could not connect to host
@@ -13811,18 +14878,20 @@ tubex.ga: could not connect to host
tucidi.net: could not connect to host
tucker.wales: could not connect to host
tucnak.eu: could not connect to host
+tudorapido.com.br: did not receive HSTS header
tueche.com.ar: did not receive HSTS header
-tuingereedschappen.net: did not receive HSTS header
+tufilo.com: could not connect to host
+tugers.com: did not receive HSTS header
tuja.hu: could not connect to host
+tulenceria.es: could not connect to host
tulsameetingroom.com: could not connect to host
-tuminauskas.lt: did not receive HSTS header
-tunai.id: could not connect to host
tunca.it: did not receive HSTS header
tunebitfm.de: could not connect to host
tungstenroyce.com: did not receive HSTS header
tupizm.com: could not connect to host
turismo.cl: could not connect to host
turkiet.guide: could not connect to host
+turkrock.com: did not receive HSTS header
turn-sticks.com: could not connect to host
turnik-67.ru: could not connect to host
turniker.ru: could not connect to host
@@ -13832,6 +14901,8 @@ turtles.ga: could not connect to host
tusb.ml: did not receive HSTS header
tussengelegenwoningverkopen.nl: could not connect to host
tuthowto.com: did not receive HSTS header
+tutiendaroja.com: did not receive HSTS header
+tutiendarosa.com: did not receive HSTS header
tutorio.ga: could not connect to host
tutu.ro: could not connect to host
tuturulianda.com: did not receive HSTS header
@@ -13839,8 +14910,9 @@ tuvalie.com: did not receive HSTS header
tuxhound.org: could not connect to host
tv.search.yahoo.com: could not connect to host
tvc.red: could not connect to host
+tverdohleb.com: could not connect to host
tvoru.com.ua: did not receive HSTS header
-tvtubeflix.com: max-age too low: 2592000
+tvtubeflix.com: could not connect to host
tvz-materijali.com: could not connect to host
tw2-tools.ga: could not connect to host
twarog.cc: could not connect to host
@@ -13858,23 +14930,25 @@ twee-onder-een-kap-woning-in-zwartewaterland-kopen.nl: could not connect to host
tweeondereenkapverkopen.nl: could not connect to host
tweeondereenkapwoningverkopen.nl: could not connect to host
tweetify.io: could not connect to host
+twelve.rocks: could not connect to host
twelve.today: could not connect to host
-twelverocks.com: did not receive HSTS header
+twelverocks.com: could not connect to host
twillionmas.com: could not connect to host
twinkieman.com: could not connect to host
twinkseason.ca: could not connect to host
twinkseason.co: could not connect to host
twinkseason.co.uk: could not connect to host
-twinkseason.com: could not connect to host
twinkseason.net: could not connect to host
twinkseason.org: could not connect to host
twinkseason.xyz: could not connect to host
twiri.net: could not connect to host
twist.party: could not connect to host
+twisted-brains.org: could not connect to host
twitter.ax: could not connect to host
twogo.com: did not receive HSTS header
twolinepassbrewing.com: could not connect to host
twolivelife.com: could not connect to host
+twoo.com: could not connect to host
twotube.ie: could not connect to host
twuni.org: could not connect to host
tx041cap.org: could not connect to host
@@ -13884,32 +14958,36 @@ txcp01.com: could not connect to host
txcp02.com: could not connect to host
txf.pw: could not connect to host
ty2u.com: did not receive HSTS header
-tycjt.vip: could not connect to host
+tycjt.vip: did not receive HSTS header
tykoon.com: could not connect to host
tyler.coach: could not connect to host
tylercoach.com: could not connect to host
-tylerharcourt.ca: could not connect to host
+tylerharcourt.ca: max-age too low: 86400
tylerharcourt.com: could not connect to host
-tylerharcourt.net: could not connect to host
-tylerharcourt.org: could not connect to host
+tylerharcourt.org: did not receive HSTS header
tylerharcourt.xyz: could not connect to host
tylerjharcourt.com: could not connect to host
tylian.net: max-age too low: 0
+type1joe.com: could not connect to host
+type1joe.net: could not connect to host
+type1joe.org: could not connect to host
typeofweb.com: did not receive HSTS header
+typeonejoe.com: could not connect to host
+typeonejoe.net: could not connect to host
+typeonejoe.org: could not connect to host
typingrevolution.com: did not receive HSTS header
-tyreis.com: could not connect to host
+tyreis.com: did not receive HSTS header
tyrelius.com: could not connect to host
tyroproducts.eu: did not receive HSTS header
tyskland.guide: could not connect to host
tysye.ca: could not connect to host
+tyuo-keibi.co.jp: did not receive HSTS header
tzappa.net: could not connect to host
tzwe.com: could not connect to host
u-master.net: did not receive HSTS header
-u-tokyo.club: could not connect to host
u175.com: could not connect to host
uadp.pw: could not connect to host
uahs.org.uk: did not receive HSTS header
-uatgootax.ru: did not receive HSTS header
ubalert.com: could not connect to host
uber.com.au: did not receive HSTS header
ubercalculator.com: did not receive HSTS header
@@ -13918,22 +14996,27 @@ ubicloud.de: could not connect to host
ubicv.com: could not connect to host
ublox.com: did not receive HSTS header
ubtce.com: could not connect to host
-ubuntuhot.com: could not connect to host
-udruga-point.hr: did not receive HSTS header
+ubuntuhot.com: did not receive HSTS header
+uc.ac.id: did not receive HSTS header
+uclanmasterplan.co.uk: could not connect to host
+udbhav.me: could not connect to host
ueba1085.jp: could not connect to host
uefeng.com: did not receive HSTS header
uega.net: did not receive HSTS header
+uerdingen.info: did not receive HSTS header
uesociedadlimitada.com: could not connect to host
ueu.me: could not connect to host
uevan.com: could not connect to host
ufgaming.com: did not receive HSTS header
uflixit.com: did not receive HSTS header
+ufo.moe: did not receive HSTS header
ufotable.uk: could not connect to host
ugcdn.com: could not connect to host
ugisgutless.com: could not connect to host
ugo.ninja: could not connect to host
ugosadventures.com: could not connect to host
uhasseltctf.ga: could not connect to host
+uhlhosting.ch: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
uhm.io: did not receive HSTS header
uhuru-market.com: could not connect to host
uitslagensoftware.nl: did not receive HSTS header
@@ -13945,33 +15028,34 @@ ukkeyholdingcompany.co.uk: could not connect to host
ukrgadget.com: could not connect to host
ulabox.cat: did not receive HSTS header
ulabox.es: did not receive HSTS header
-ulalau.com: could not connect to host
+ulalau.com: did not receive HSTS header
ullamodaintima.com.br: could not connect to host
ulmo.dk: could not connect to host
-ulti.gq: could not connect to host
+ulti.gq: did not receive HSTS header
ultimate-garcinia-plus.com: could not connect to host
ultimate-glow-skin.com: could not connect to host
ultimate-memoryplus.com: could not connect to host
ultimate-neuroplus.com: could not connect to host
ultros.io: did not receive HSTS header
umaimise.info: did not receive HSTS header
+umassfive.coop: did not receive HSTS header
umgardi.ca: could not connect to host
umidev.com: could not connect to host
umie.cc: did not receive HSTS header
ump45.moe: did not receive HSTS header
-umsapi.com: could not connect to host
-unapolegetic.co: did not receive HSTS header
unart.info: could not connect to host
unbanthe.net: could not connect to host
-unblockat.tk: could not connect to host
+unblockat.tk: did not receive HSTS header
unblocked-networks.org: could not connect to host
-unblocked.blue: could not connect to host
+unblocked.blue: did not receive HSTS header
unblocked.date: could not connect to host
unblocked.faith: could not connect to host
unblocked.host: could not connect to host
unblocked.party: could not connect to host
+unblocked.sh: could not connect to host
unblocked.st: did not receive HSTS header
unblocked.today: could not connect to host
+unblocked.vc: could not connect to host
unblocked.win: could not connect to host
unblocked.works: could not connect to host
unblocked.world: could not connect to host
@@ -13987,9 +15071,10 @@ unblockthe.site: could not connect to host
unblockthe.top: could not connect to host
unccdesign.club: could not connect to host
unclegen.xyz: could not connect to host
+undeadbrains.de: did not receive HSTS header
under30stravelinsurance.com.au: did not receive HSTS header
+undercovercondoms.com: could not connect to host
underkin.com: could not connect to host
-underskatten.tk: could not connect to host
unefuite.ch: could not connect to host
unfiltered.nyc: could not connect to host
ungern.guide: could not connect to host
@@ -14007,7 +15092,9 @@ uniformehope.com.br: did not receive HSTS header
uniformehumboldt.com.br: did not receive HSTS header
uniformespousoalegre.com.br: did not receive HSTS header
unikitty-on-tour.com: could not connect to host
+unikrn.com: could not connect to host
unionstationapp.com: could not connect to host
+unipig.de: could not connect to host
unirenter.ru: did not receive HSTS header
unison.com: did not receive HSTS header
unisyssecurity.com: could not connect to host
@@ -14016,12 +15103,12 @@ unitedcyberdevelopment.com: [Exception... "Component returned failure code: 0x80
unitlabs.net: could not connect to host
unitrade-425.co.za: did not receive HSTS header
university4industry.com: did not receive HSTS header
+universogay.com: could not connect to host
univstore.win: could not connect to host
univz.com: could not connect to host
unixtime.pro: could not connect to host
-unknownbreakup.com: did not receive HSTS header
unknownphenomena.net: could not connect to host
-unmonito.red: could not connect to host
+unmanaged.space: could not connect to host
unplugg3r.dk: could not connect to host
unravel.ie: could not connect to host
unschoolrules.com: did not receive HSTS header
@@ -14036,35 +15123,35 @@ unyq.me: did not receive HSTS header
uonstaffhub.com: could not connect to host
uow.ninja: could not connect to host
up1.ca: could not connect to host
-upaknship.com: did not receive HSTS header
-upbad.com: could not connect to host
upboard.jp: could not connect to host
-upgauged.com: could not connect to host
upldr.pw: could not connect to host
uploadbro.com: could not connect to host
upmchealthsecurity.us: could not connect to host
uporoops.com: could not connect to host
uprotect.it: could not connect to host
upstats.eu: could not connect to host
-uptic.net: did not receive HSTS header
+uptic.net: could not connect to host
upupming.site: did not receive HSTS header
ur-lauber.de: did not receive HSTS header
urban-garden.lt: could not connect to host
urban-garden.lv: could not connect to host
urbanmic.com: could not connect to host
+urbansparrow.in: could not connect to host
+urbanstylestaging.com: did not receive HSTS header
urbpic.com: could not connect to host
urcentral.org: could not connect to host
urlachershop.com.br: did not receive HSTS header
+urlakite.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
urlchomp.com: did not receive HSTS header
urology.wiki: did not receive HSTS header
-urphp.com: could not connect to host
-us-immigration.com: could not connect to host
+urphp.com: did not receive HSTS header
+us-immigration.com: did not receive HSTS header
usaab.org: did not receive HSTS header
usafuelservice.com: did not receive HSTS header
usatomotori.com: did not receive HSTS header
usbirthcertificate.com: could not connect to host
usbtypeccompliant.com: could not connect to host
-uscitizenship.info: could not connect to host
+uscitizenship.info: did not receive HSTS header
uscntalk.com: could not connect to host
uscp8.com: could not connect to host
uscurrency.gov: did not receive HSTS header
@@ -14076,24 +15163,27 @@ usercare.com: did not receive HSTS header
useresponse.com: did not receive HSTS header
userify.com: max-age too low: 0
uslab.io: could not connect to host
+usparklodging.com: did not receive HSTS header
usportsgo.com: could not connect to host
usr.nz: did not receive HSTS header
+utdscanner.com: did not receive HSTS header
utilitronium-shockwave.com: could not connect to host
+utilityreport.eu: did not receive HSTS header
utleieplassen.no: could not connect to host
utopiagalaxy.space: could not connect to host
+utopialgb.org.uk: could not connect to host
utopian-surgery.com: could not connect to host
utopianconcept.com: did not receive HSTS header
utopianhomespa.com: did not receive HSTS header
utopianrealms.org: did not receive HSTS header
utopians.dk: did not receive HSTS header
uttnetgroup.fr: could not connect to host
-utumno.ch: did not receive HSTS header
+utumno.ch: could not connect to host
utvbloggen.se: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
uvarov.pw: did not receive HSTS header
uwesander.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
uwfreelanceopticien.nl: could not connect to host
-uwimonacs.org.jm: could not connect to host
-uwsoftware.be: max-age too low: 0
+uwsoftware.be: did not receive HSTS header
uwstartups.com: could not connect to host
uxux.pl: could not connect to host
uygindir.ml: could not connect to host
@@ -14107,7 +15197,7 @@ v0tti.com: did not receive HSTS header
v12.co.uk: did not receive HSTS header
v2.pw: did not receive HSTS header
v2ex.us: could not connect to host
-v4s.ro: could not connect to host
+v4s.ro: did not receive HSTS header
v4veedu.com: could not connect to host
v5wz.com: did not receive HSTS header
v5xp.com: did not receive HSTS header
@@ -14127,6 +15217,7 @@ vadennissanofhinesvilleparts.com: could not connect to host
vadik.me: could not connect to host
vadodesign.nl: did not receive HSTS header
vaibhavchatarkar.com: could not connect to host
+val-sec.com: could not connect to host
valaeris.de: did not receive HSTS header
valecnatechnika.cz: could not connect to host
valenhub.com: could not connect to host
@@ -14142,7 +15233,6 @@ valleyridgepta.org: could not connect to host
vallis.net: could not connect to host
valmagus.com: could not connect to host
valopv.be: could not connect to host
-valtoaho.com: could not connect to host
vamoaeturismo.com.br: could not connect to host
vamosfalardesaude.pt: could not connect to host
vampirism.eu: could not connect to host
@@ -14153,10 +15243,11 @@ vanderkroon.nl: could not connect to host
vanderstraeten.dynv6.net: could not connect to host
vanessabalibridal.com: could not connect to host
vanestack.com: could not connect to host
+vanetv.com: could not connect to host
+vangeluwedeberlaere.be: did not receive HSTS header
vanitas.xyz: did not receive HSTS header
vanitynailworkz.com: could not connect to host
vanlaanen.com: did not receive HSTS header
-vanouwerkerk.net: could not connect to host
vansieleghem.com: could not connect to host
vapecraftinc.com: did not receive HSTS header
vapemania.eu: could not connect to host
@@ -14164,22 +15255,24 @@ vapeshopsupply.com: max-age too low: 7889238
varela-electricite.fr: could not connect to host
variablyconstant.com: could not connect to host
varta.io: could not connect to host
-varunagw.com: could not connect to host
vasa-webstranka.sk: did not receive HSTS header
vasanth.org: could not connect to host
-vascomm.co.id: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+vase-eroticke-povidky.cz: could not connect to host
vastkustenrunt.se: did not receive HSTS header
+vati.pw: did not receive HSTS header
vavai.net: did not receive HSTS header
vayaport.com: could not connect to host
vbest.net: could not connect to host
vbhelp.org: did not receive HSTS header
vbulletin-russia.com: could not connect to host
vbulletinrussia.com: could not connect to host
+vcdn.xyz: could not connect to host
vcdove.com: could not connect to host
vconcept.ch: could not connect to host
vconcept.me: could not connect to host
vcr.re: could not connect to host
vdhco.be: did not receive HSTS header
+vdownloader.com: could not connect to host
vdrpro.com: could not connect to host
veblen.com: did not receive HSTS header
vechkasov.ru: could not connect to host
@@ -14190,13 +15283,12 @@ vega.dyndns.info: could not connect to host
vegalayer.com: did not receive HSTS header
vegalengd.com: did not receive HSTS header
veganosonline.com: could not connect to host
+vegasdocs.com: did not receive HSTS header
veggiefasting.com: could not connect to host
veggiesbourg.fr: did not receive HSTS header
vegis.ro: did not receive HSTS header
-veglog.com: could not connect to host
+veglog.com: did not receive HSTS header
vehent.org: did not receive HSTS header
-vehicleenquiry.service.gov.uk: did not receive HSTS header
-vehicletax.service.gov.uk: did not receive HSTS header
vehicleuplift.co.uk: did not receive HSTS header
vekenz.com: could not connect to host
velasense.com: could not connect to host
@@ -14206,6 +15298,7 @@ vemokin.net: could not connect to host
venicecomputerrepair.com: could not connect to host
venicefloridawebsitedesign.com: could not connect to host
venicerealdeal.com: could not connect to host
+venirextra.com: did not receive HSTS header
venirideal.com: did not receive HSTS header
venixplays-stream.ml: could not connect to host
venmos.com: could not connect to host
@@ -14213,7 +15306,6 @@ venninvestorplatform.com: did not receive HSTS header
venoom.eu: did not receive HSTS header
vensl.org: could not connect to host
venturepro.com: did not receive HSTS header
-ventzke.com: did not receive HSTS header
venzocrm.com: did not receive HSTS header
ver-ooginoog.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
veraandsteve.date: could not connect to host
@@ -14221,6 +15313,7 @@ verdeandco.co.uk: could not connect to host
verifiedinvesting.com: could not connect to host
verifikatorindonesia.com: could not connect to host
veristor.com: did not receive HSTS header
+verliefde-jongens.nl: could not connect to host
vermontcareergateway.org: could not connect to host
vernonfishandgame.ca: did not receive HSTS header
versfin.net: could not connect to host
@@ -14238,9 +15331,12 @@ veto.fish: could not connect to host
vfree.org: could not connect to host
vgatest.nl: could not connect to host
vglimg.com: could not connect to host
+vgorcum.com: could not connect to host
vhost.co.id: could not connect to host
+vi.photo: could not connect to host
viabemestar.com.br: could not connect to host
viadeux.com: did not receive HSTS header
+vialibido.com.br: could not connect to host
viasinc.com: did not receive HSTS header
vibrashop.com.br: did not receive HSTS header
vicenage.com: could not connect to host
@@ -14257,18 +15353,20 @@ videnskabsklubben.dk: did not receive HSTS header
videoload.co: could not connect to host
videomuz.com: could not connect to host
videorullen.se: could not connect to host
+videosxgays.com: could not connect to host
videotogel.net: could not connect to host
videoueberwachung-set.de: did not receive HSTS header
vider.ga: could not connect to host
vidid.net: could not connect to host
vidiproject.com: did not receive HSTS header
viditut.com: could not connect to host
+vidkovaomara.si: could not connect to host
vidlyoficial.com: could not connect to host
vidz.ga: could not connect to host
viennan.net: could not connect to host
vietnam-lifer.com: could not connect to host
vietnamchevrolet.net: did not receive HSTS header
-vietnamphotographytours.com: could not connect to host
+vietnamphotographytours.com: did not receive HSTS header
viewsea.com: max-age too low: 0
vigilo.cf: could not connect to host
vigilo.ga: could not connect to host
@@ -14280,9 +15378,10 @@ viktorsvantesson.net: did not receive HSTS header
viladochurrasco.com.br: could not connect to host
vilaydin.com: did not receive HSTS header
vilight.com.br: could not connect to host
-villa-romantica-zillertal.at: did not receive HSTS header
+villa-bellarte.de: could not connect to host
villacarmela.com.br: did not receive HSTS header
villainsclothing.com.au: could not connect to host
+villalaskowa.pl: did not receive HSTS header
villasenor.online: could not connect to host
villekaaria.eu: could not connect to host
vilog.me: could not connect to host
@@ -14304,17 +15403,21 @@ vinesauce.info: could not connect to host
vinetalk.net: could not connect to host
vinicius.sl: could not connect to host
viniferawineclub.com: did not receive HSTS header
+vinogradovka.com: did not receive HSTS header
vio.no: did not receive HSTS header
violenceinterrupted.org: did not receive HSTS header
violet-letter.delivery: could not connect to host
viosey.com: could not connect to host
+vioye.com: did not receive HSTS header
viperdns.com: could not connect to host
+vipesball.net: could not connect to host
viphospitality.se: could not connect to host
viplentes.com.br: did not receive HSTS header
vipmusic.ga: could not connect to host
-vipnettikasinoklubi.com: could not connect to host
+vipnettikasinoklubi.com: did not receive HSTS header
viral8.jp: could not connect to host
virginiacrimeanalysisnetwork.org: did not receive HSTS header
+virial.de: did not receive HSTS header
viris.si: max-age too low: 536000
virtualhealth.com: did not receive HSTS header
virtualstrongbox.ca: did not receive HSTS header
@@ -14338,6 +15441,7 @@ vitalamin.ch: could not connect to host
vitalita.cz: did not receive HSTS header
vitalorange.com: did not receive HSTS header
vitalthings.de: could not connect to host
+vitamaxxi.com.br: could not connect to host
vitapingu.de: could not connect to host
vitta.me: did not receive HSTS header
vitzro.kr: could not connect to host
@@ -14346,6 +15450,7 @@ vivanosports.com.br: did not receive HSTS header
vivasports.com.br: could not connect to host
vivocloud.com: could not connect to host
vivoregularizafacil.com.br: did not receive HSTS header
+vivoseg.com: did not receive HSTS header
vivremoinscher.fr: did not receive HSTS header
vizeat.com: did not receive HSTS header
vkino.com: could not connect to host
@@ -14353,31 +15458,39 @@ vkulagin.ru: could not connect to host
vladimiroff.org: did not receive HSTS header
vldkn.net: could not connect to host
vleij.family: could not connect to host
-vlogge.com: could not connect to host
+vlogge.com: did not receive HSTS header
vlzbazar.ru: could not connect to host
+vmhydro.ru: could not connect to host
vmrdev.com: could not connect to host
vmstan.com: did not receive HSTS header
+vmzone.de: could not connect to host
+vndb.org: could not connect to host
vocab.guru: could not connect to host
+vocalsynth.space: could not connect to host
voceinveste.com: did not receive HSTS header
vogt.tech: could not connect to host
voice-of-design.com: could not connect to host
voicesuk.co.uk: did not receive HSTS header
+void-it.nl: did not receive HSTS header
voidark.com: did not receive HSTS header
voidi.ca: could not connect to host
voidserv.net: could not connect to host
-voilo.club: did not receive HSTS header
-voilodaisuki.club: did not receive HSTS header
+voidshift.com: could not connect to host
+voilo.club: could not connect to host
+voilodaisuki.club: could not connect to host
voipkb.com: did not receive HSTS header
-voiro.club: did not receive HSTS header
-voirodaisuki.club: did not receive HSTS header
+voiro.club: could not connect to host
+voirodaisuki.club: could not connect to host
volatimer.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
volbyzive.cz: did not receive HSTS header
volcain.io: could not connect to host
volcrado.com: did not receive HSTS header
volkden.com: could not connect to host
-voltimax.com: could not connect to host
+volkswurst.de: did not receive HSTS header
+voltimax.com: did not receive HSTS header
voltotc.com: did not receive HSTS header
voluptueuse.com: did not receive HSTS header
+volvipress.gr: did not receive HSTS header
vonavy-cukor.sk: could not connect to host
vonavycukor.sk: could not connect to host
vonedelmann.de: did not receive HSTS header
@@ -14387,13 +15500,16 @@ vooreenveiligthuis.nl: did not receive HSTS header
voorjou.com: did not receive HSTS header
vorangerie.com: could not connect to host
vorderklier.de: could not connect to host
+vorm2.com: did not receive HSTS header
vortexhobbies.com: did not receive HSTS header
vosjesweb.nl: could not connect to host
+votercircle.com: did not receive HSTS header
voterstartingpoint.uk: could not connect to host
votresiteweb.ch: could not connect to host
vow.vn: could not connect to host
vowsy.club: did not receive HSTS header
vox.vg: did not receive HSTS header
+vozami.com: could not connect to host
vpip.net: could not connect to host
vpl.me: did not receive HSTS header
vpn-byen.dk: did not receive HSTS header
@@ -14416,13 +15532,19 @@ vrijstaandhuis-in-zuid-holland-kopen.nl: could not connect to host
vrijstaandhuis-in-zuidplas-kopen.nl: could not connect to host
vrijstaandhuis-in-zwartewaterland-kopen.nl: could not connect to host
vrijstaandhuisverkopen.nl: could not connect to host
+vrlaid.com: could not connect to host
vrobert.fr: could not connect to host
+vrtak-cz.net: could not connect to host
vrzl.pro: could not connect to host
+vsamsonov.com: could not connect to host
vsc-don-stocksport.de: did not receive HSTS header
+vsestiralnie.com: did not receive HSTS header
vucdn.com: could not connect to host
+vulnerabilities.io: could not connect to host
vuosaarenmontessoritalo.fi: did not receive HSTS header
vvl.me: did not receive HSTS header
vwoforangeparts.com: could not connect to host
+vwt-event.nl: could not connect to host
vxapps.com: could not connect to host
vxml.club: could not connect to host
vynedmusic.com: could not connect to host
@@ -14435,14 +15557,17 @@ w10club.com: could not connect to host
w2gshop.com.br: could not connect to host
w4.no: did not receive HSTS header
w4a.fr: could not connect to host
+w4b.in: could not connect to host
w4xzr.top: could not connect to host
w4xzr.xyz: could not connect to host
w9rld.com: did not receive HSTS header
wabifoggynuts.com: could not connect to host
wachtwoordencheck.nl: could not connect to host
+waelti.xxx: could not connect to host
wafni.com: could not connect to host
-wahhoi.net: did not receive HSTS header
+wai-in.com: could not connect to host
wait.moe: could not connect to host
+waixingrenfuli.vip: could not connect to host
waixingrenfuli7.vip: could not connect to host
wakapp.de: could not connect to host
wakened.net: did not receive HSTS header
@@ -14452,6 +15577,7 @@ wallabag.it: did not receive HSTS header
wallabag.org: did not receive HSTS header
wallacequinn.co.uk: did not receive HSTS header
wallet.google.com: did not receive HSTS header (error ignored - included regardless)
+wallpapers.pub: could not connect to host
wallsblog.dk: could not connect to host
walnutgaming.co.uk: could not connect to host
walterlynnmosley.com: did not receive HSTS header
@@ -14468,10 +15594,13 @@ wangjiatun.com.tw: could not connect to host
wangkezun.com: could not connect to host
wangqiliang.xn--fiqs8s: could not connect to host
wangql.cn: could not connect to host
-wangyubao.cn: could not connect to host
+wanquanojbk.com: did not receive HSTS header
wantshow.com.br: did not receive HSTS header
+wanybug.cn: could not connect to host
+wanybug.com: could not connect to host
wapjt.cn: could not connect to host
-wapking.live: did not receive HSTS header
+wapking.co: could not connect to host
+wapking.live: could not connect to host
wapt.fr: did not receive HSTS header
warandpeace.xyz: could not connect to host
warcraftjournal.org: could not connect to host
@@ -14483,16 +15612,17 @@ warezaddict.com: could not connect to host
warhistoryonline.com: did not receive HSTS header
warlions.info: could not connect to host
warped.com: did not receive HSTS header
+warren.sh: could not connect to host
warrencreative.com: did not receive HSTS header
-warsentech.com: could not connect to host
+warsentech.com: did not receive HSTS header
warumsuchen.at: did not receive HSTS header
wasatchconstables.com: did not receive HSTS header
wasatchcrest.com: did not receive HSTS header
wasfuereintheater.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
-wassim.is: could not connect to host
+wassim.is: did not receive HSTS header
watashi.bid: could not connect to host
watchium.com: did not receive HSTS header
-watchtv-online.pw: could not connect to host
+watchtv-online.pw: max-age too low: 0
watchweasel.com: could not connect to host
waterforlife.net.au: did not receive HSTS header
waterpoint.com.br: could not connect to host
@@ -14507,8 +15637,8 @@ waylee.net: did not receive HSTS header
wbit.co.il: did not receive HSTS header
wbut.ml: could not connect to host
wdesk.com: did not receive HSTS header
+wdmg.com.ua: max-age too low: 604800
wdt.io: did not receive HSTS header
-we-bb.com: could not connect to host
we.serveftp.net: could not connect to host
wealthformyhealth.com: did not receive HSTS header
wear2work.nl: could not connect to host
@@ -14516,10 +15646,10 @@ wearedisneyland.com: did not receive HSTS header
weareincognito.org: could not connect to host
wearewithyou.org: could not connect to host
weaverhairextensions.nl: could not connect to host
+web-adminy.co.uk: did not receive HSTS header
web-demarche.com: could not connect to host
web-industry.fr: could not connect to host
web-insider.net: did not receive HSTS header
-web-mail.info: could not connect to host
web-vision.de: did not receive HSTS header
web4all.fr: did not receive HSTS header
web4pro.fr: could not connect to host
@@ -14533,7 +15663,7 @@ webbuzz.com.au: did not receive HSTS header
webchat.domains: did not receive HSTS header
webcreation.rocks: did not receive HSTS header
webdesign-kronberg.de: did not receive HSTS header
-webdesignssussex.co.uk: did not receive HSTS header
+webdesignssussex.co.uk: could not connect to host
webdev-quiz.de: did not receive HSTS header
webdev.mobi: could not connect to host
webdosh.com: did not receive HSTS header
@@ -14548,13 +15678,14 @@ webhelyesarcu.hu: did not receive HSTS header
webhosting4.net: did not receive HSTS header
webhostingpros.ml: could not connect to host
webies.ro: did not receive HSTS header
+webless.com: could not connect to host
webm.to: could not connect to host
webmail.mayfirst.org: did not receive HSTS header
webmaniabr.com: did not receive HSTS header
webmarketingfestival.it: did not receive HSTS header
webmixseo.com: did not receive HSTS header
webnetmail4u.com: could not connect to host
-webneuch.ch: did not receive HSTS header
+webneuch.ch: could not connect to host
webneuch.com: did not receive HSTS header
webneuch.eu: did not receive HSTS header
webneuch.fr: did not receive HSTS header
@@ -14565,14 +15696,18 @@ webnosql.com: could not connect to host
webperformance.ru: could not connect to host
webproshosting.tk: could not connect to host
webpublica.pt: could not connect to host
+webqueens.com: could not connect to host
+webreslist.com: could not connect to host
websandbox.uk: could not connect to host
+websectools.com: could not connect to host
+webseo.de: did not receive HSTS header
websitedesign.bg: did not receive HSTS header
websitesabq.com: did not receive HSTS header
websmartmedia.co.uk: did not receive HSTS header
webspotter.nl: could not connect to host
webstationservice.fr: could not connect to host
webstellung.com: could not connect to host
-webstory.xyz: did not receive HSTS header
+webstory.xyz: could not connect to host
webswitch.io: could not connect to host
webtar.info: could not connect to host
webtech.com.br: could not connect to host
@@ -14582,14 +15717,15 @@ webthings.com.br: did not receive HSTS header
webtiles.co.uk: could not connect to host
webukhost.com: could not connect to host
webuni.hu: did not receive HSTS header
-webveloper.com: max-age too low: 0
+webveloper.com: did not receive HSTS header
webwork.pw: could not connect to host
webypass.xyz: could not connect to host
webzanem.com: could not connect to host
wecanfindit.co.za: could not connect to host
+wedding-m.jp: did not receive HSTS header
weddingenvelopes.co.uk: did not receive HSTS header
weddingibiza.nl: could not connect to host
-wedotrains.club: could not connect to host
+wedotrains.club: did not receive HSTS header
weebsr.us: could not connect to host
weed.ren: could not connect to host
weekly.fyi: could not connect to host
@@ -14599,20 +15735,25 @@ weicn.org: did not receive HSTS header
weightreviews.com: did not receive HSTS header
weiji.ga: could not connect to host
weiler.xyz: could not connect to host
+weinhandel-preissler.de: could not connect to host
+weirdserver.com: could not connect to host
weiyuz.com: max-age too low: 6585555
weizenke.im: could not connect to host
wejumall.com: could not connect to host
wekibe.de: could not connect to host
welby.cat: did not receive HSTS header
-welches-kinderfahrrad.de: did not receive HSTS header
+welches-kinderfahrrad.de: could not connect to host
welkers.org: could not connect to host
wellastore.ru: could not connect to host
wellcomp.com.br: did not receive HSTS header
+wellmarts.com: did not receive HSTS header
wellness.so: could not connect to host
wellopp.com: did not receive HSTS header
wellproducedwines.com: did not receive HSTS header
-wellsolveit.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+wellsplasticsurgery.com: did not receive HSTS header
+wellspringcamps.com: did not receive HSTS header
welovejobs.com: did not receive HSTS header
+welovemail.com: could not connect to host
welpy.com: could not connect to host
weltentreff.com: could not connect to host
weltmeisterschaft.net: could not connect to host
@@ -14620,7 +15761,8 @@ weme.eu: could not connect to host
wendalyncheng.com: did not receive HSTS header
wendigo.pl: could not connect to host
wengebowuguan.com: could not connect to host
-wenode.net: could not connect to host
+wenode.net: did not receive HSTS header
+wensing-und-koenig.de: could not connect to host
wentu.ml: could not connect to host
wenz.io: did not receive HSTS header
wer.sh: could not connect to host
@@ -14636,9 +15778,8 @@ wernerschaeffer.de: did not receive HSTS header
wesayyesprogram.com: could not connect to host
wesleyharris.ca: did not receive HSTS header
wespeakgeek.co.za: could not connect to host
-west-wind.net: did not receive HSTS header
westcoastaggregate.com: could not connect to host
-westendzone.com: max-age too low: 0
+westendzone.com: could not connect to host
westerhoud.nl: did not receive HSTS header
westlinwinds.com: could not connect to host
westsussexconnecttosupport.org: could not connect to host
@@ -14654,23 +15795,27 @@ wetthost.com: could not connect to host
wetttipps.com: could not connect to host
wetttipps.de: could not connect to host
wevahoo.com: could not connect to host
+wevg.org: could not connect to host
wevolver.com: did not receive HSTS header
wewillgo.com: could not connect to host
wewillgo.org: did not receive HSTS header
wewlad.me: could not connect to host
+wezl.net: did not receive HSTS header
wf-training-master.appspot.com: did not receive HSTS header (error ignored - included regardless)
wftda.com: did not receive HSTS header
wg-tools.de: could not connect to host
+wgraphics.ru: could not connect to host
whatisl.ovh: could not connect to host
whats.io: could not connect to host
whatsstalk.me: could not connect to host
-whatsyouroffer.co.uk: could not connect to host
+whatsyouroffer.co.uk: did not receive HSTS header
when-release.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
when-release.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
whereisjason.com: could not connect to host
whereismyorigin.cf: could not connect to host
-wherephoto.com: could not connect to host
+wherephoto.com: did not receive HSTS header
wheresben.today: could not connect to host
+whexit.nl: could not connect to host
whilsttraveling.com: could not connect to host
whisker.network: could not connect to host
whiskyglazen.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -14679,13 +15824,15 @@ whitehat.id: did not receive HSTS header
whiterabbit.org: did not receive HSTS header
whiterabbitcakery.com: could not connect to host
whiteroom.agency: did not receive HSTS header
-whitestagforge.com: could not connect to host
+whiteshadowimperium.com: could not connect to host
+whitestagforge.com: did not receive HSTS header
whoclicks.net: could not connect to host
+whoisamitsingh.com: did not receive HSTS header
whoisapi.online: could not connect to host
wholebites.com: max-age too low: 7889238
-wholesomeharvestbread.com: max-age too low: 86400
wholikes.us: could not connect to host
whoneedstobeprimaried.today: could not connect to host
+whonix.org: did not receive HSTS header
whoownsmyavailability.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
whoshotya.de: did not receive HSTS header
whysuck.com: could not connect to host
@@ -14695,13 +15842,14 @@ wibuw.com: could not connect to host
widdleguy.com: did not receive HSTS header
wideinfo.org: did not receive HSTS header
widenews.org: did not receive HSTS header
-wienerwichtelchallenge.at: could not connect to host
+wienerwichtelchallenge.at: did not receive HSTS header
wieninternational.at: did not receive HSTS header
wificafehosting.com: did not receive HSTS header
wifimapa.cz: could not connect to host
wiiaam.com: could not connect to host
wiiforum.no: did not receive HSTS header
wiire.me: could not connect to host
+wiki-play.ru: could not connect to host
wikiclash.info: could not connect to host
wikipeter.nl: did not receive HSTS header
wikisports.eu: could not connect to host
@@ -14716,6 +15864,7 @@ wilhelm-nathan.de: could not connect to host
willcipriano.com: could not connect to host
willeminfo.ch: did not receive HSTS header
willemsjort.be: did not receive HSTS header
+william.gg: could not connect to host
william.si: did not receive HSTS header
williamboundsltd.com: could not connect to host
williamle.com: did not receive HSTS header
@@ -14734,7 +15883,9 @@ winds.cf: could not connect to host
windwoodmedia.com: could not connect to host
windwoodweb.com: could not connect to host
wine-importer.ru: could not connect to host
+winebid.com: could not connect to host
winecodeavocado.com: could not connect to host
+wineworksonline.com: could not connect to host
winfield.me.uk: did not receive HSTS header
winfieldchen.me: did not receive HSTS header
winged.io: did not receive HSTS header
@@ -14747,12 +15898,14 @@ winsec.nl: could not connect to host
winshiplending.com: could not connect to host
winsufi.biz: could not connect to host
wintercircle.co: max-age too low: 60
-wipc.net: could not connect to host
+wipc.net: did not receive HSTS header
wipply.com: could not connect to host
wirbatz.org: did not receive HSTS header
wirc.gr: could not connect to host
+wiredcut.com: did not receive HSTS header
wireless-emergency-stop.com: did not receive HSTS header
-wirkaufendeinau.to: did not receive HSTS header
+wiretrip.io: did not receive HSTS header
+wirkaufendeinau.to: could not connect to host
wisak.eu: could not connect to host
wisdomize.me: could not connect to host
wiseloan.com: did not receive HSTS header
@@ -14763,7 +15916,7 @@ witae.com: could not connect to host
withgoogle.com: did not receive HSTS header (error ignored - included regardless)
withmy.beer: could not connect to host
withoutacrystalball.com: did not receive HSTS header
-withustrading.com: could not connect to host
+withustrading.com: did not receive HSTS header
withyoutube.com: did not receive HSTS header (error ignored - included regardless)
wittcher.com: could not connect to host
wittepapaver.nl: did not receive HSTS header
@@ -14773,11 +15926,10 @@ witzemaschine.com: max-age too low: 0
wizardmeow.xin: could not connect to host
wizardspire.com: did not receive HSTS header
wizznab.tk: could not connect to host
-wjglerum.nl: could not connect to host
wk-cpm.com: could not connect to host
-wk.is: could not connect to host
wk577.com: could not connect to host
wlzhiyin.cn: could not connect to host
+wm-talk.net: could not connect to host
wmawri.com: did not receive HSTS header
wmcuk.net: did not receive HSTS header
wmfinanz.com: could not connect to host
@@ -14791,15 +15943,16 @@ wod-stavby.cz: could not connect to host
wodice.com: could not connect to host
wohnungsbau-ludwigsburg.de: did not receive HSTS header
woima.fi: max-age too low: 604800
-wokeai.net: did not receive HSTS header
+wokeai.net: could not connect to host
+woktoss.com: could not connect to host
wolfemg.com: could not connect to host
wolfenland.net: did not receive HSTS header
wolfesden.com: could not connect to host
wolfram.io: could not connect to host
+wolkenspeicher.org: could not connect to host
wollekorb.de: could not connect to host
womf.org: did not receive HSTS header
womosale.de: could not connect to host
-wonder.com.mx: max-age too low: 86400
wonderbooks.club: could not connect to host
wonderfall.xyz: could not connect to host
wonderhost.info: could not connect to host
@@ -14808,6 +15961,7 @@ wondy.com: could not connect to host
woodlandschurch.net: max-age too low: 43200
woodmafia.com.au: could not connect to host
woodworkertip.com: did not receive HSTS header
+woomai.net: did not receive HSTS header
woomu.me: could not connect to host
woording.com: could not connect to host
wootton95.com: could not connect to host
@@ -14818,33 +15972,33 @@ wordplay.one: could not connect to host
wordpresspro.cl: did not receive HSTS header
wordsofamaster.com: could not connect to host
work-and-jockel.de: did not receive HSTS header
-workemy.com: did not receive HSTS header
+workemy.com: could not connect to host
workfone.io: could not connect to host
workpermit.com.vn: could not connect to host
-workray.com: did not receive HSTS header
worksofwyoming.org: did not receive HSTS header
workwithgo.com: could not connect to host
world-education-association.org: could not connect to host
+worldchess.london: could not connect to host
worldfree4.org: could not connect to host
worldlist.org: could not connect to host
worldpovertysolutions.org: did not receive HSTS header
worldsbeststory.com: did not receive HSTS header
worldwhisperer.net: could not connect to host
wormholevpn.net: could not connect to host
-worshapp.com: could not connect to host
+worshapp.com: did not receive HSTS header
+wow-foederation.de: could not connect to host
wow-travel.eu: could not connect to host
wowapi.org: could not connect to host
wowinvasion.com: did not receive HSTS header
wp-fastsearch.de: could not connect to host
-wp-rescue.com.au: did not receive HSTS header
+wp-rescue.com.au: could not connect to host
wp-stack.pro: could not connect to host
wp6.pw: could not connect to host
wpblog.com.tw: could not connect to host
wpcarer.pro: could not connect to host
-wpcdn.bid: did not receive HSTS header
wpcheck.io: could not connect to host
wpcontrol.se: could not connect to host
-wpdesigner.ir: did not receive HSTS header
+wpdesigner.ir: could not connect to host
wpfortify.com: could not connect to host
wpg-inc.com: did not receive HSTS header
wphelpwithhomework.tk: could not connect to host
@@ -14867,13 +16021,14 @@ wrfu.co.nz: did not receive HSTS header
wriedts.de: did not receive HSTS header
wrightdoumawedding.com: could not connect to host
writeapp.me: did not receive HSTS header
+writing-expert.com: could not connect to host
wrldevelopment.com: did not receive HSTS header
wroffle.com: did not receive HSTS header
wrwg.ca: could not connect to host
-ws-meca.com: could not connect to host
+ws-meca.com: did not receive HSTS header
wsb-immo.at: could not connect to host
wsdcap.com: could not connect to host
-wsor.group: could not connect to host
+wsor.group: did not receive HSTS header
wss.com.ve: could not connect to host
wsscompany.com.ve: could not connect to host
wsup.social: could not connect to host
@@ -14885,7 +16040,7 @@ wuchipc.com: could not connect to host
wufupay.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
wuhengmin.com: could not connect to host
wulpi.it: did not receive HSTS header
-wumai-p.cn: could not connect to host
+wumai.cloud: did not receive HSTS header
wumbo.kiwi: could not connect to host
wundtherapie-schulung.de: could not connect to host
wurzelzwerg.net: could not connect to host
@@ -14893,24 +16048,23 @@ wusx.club: could not connect to host
wutianxian.com: did not receive HSTS header
wvr-law.de: did not receive HSTS header
wvw698.com: max-age too low: 2592000
-wwjd.dynu.net: could not connect to host
www-001133.com: could not connect to host
www-0385.com: could not connect to host
-www-1116.com: did not receive HSTS header
+www-1116.com: could not connect to host
www-1117.com: could not connect to host
www-38978.com: could not connect to host
www-39988.com: did not receive HSTS header
www-507.net: could not connect to host
-www-62755.com: could not connect to host
+www-62755.com: did not receive HSTS header
www-68277.com: could not connect to host
www-746.com: could not connect to host
www-771122.com: did not receive HSTS header
-www-8003.com: did not receive HSTS header
+www-8003.com: could not connect to host
www-88599.com: did not receive HSTS header
www-8887999.com: could not connect to host
-www-9995.com: did not receive HSTS header
-www-djbet.com: did not receive HSTS header
-www-jinshavip.com: did not receive HSTS header
+www-9995.com: could not connect to host
+www-djbet.com: could not connect to host
+www-jinshavip.com: could not connect to host
www.amazon.ca: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
www.amazon.co.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
www.amazon.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
@@ -14948,38 +16102,42 @@ www.zenpayroll.com: did not receive HSTS header
www3.info: could not connect to host
wxrlab.com: could not connect to host
wxukang.cn: did not receive HSTS header
+wxyz.buzz: could not connect to host
wy6.org: did not receive HSTS header
wybmabiity.com: could not connect to host
wygluszanie.eu: could not connect to host
wyu.cc: could not connect to host
wyzphoto.nl: did not receive HSTS header
wyzwaniemilosci.com: could not connect to host
+x-iweb.ru: did not receive HSTS header
x-pertservice.com: did not receive HSTS header
x-power-detox.com: could not connect to host
x-ripped-hd.com: could not connect to host
+x1be.win: did not receive HSTS header
x23.eu: did not receive HSTS header
x2c0.net: did not receive HSTS header
x2w.io: could not connect to host
x3led.com: could not connect to host
x509.pub: could not connect to host
x509.pw: could not connect to host
-x64architecture.com: could not connect to host
-xa1.uk: could not connect to host
-xanax.pro: could not connect to host
+x69.biz: could not connect to host
+x69x.net: could not connect to host
xanderweaver.com: did not receive HSTS header
xandocs.com: could not connect to host
xat.re: did not receive HSTS header
-xavierbarroso.com: could not connect to host
+xavierbarroso.com: did not receive HSTS header
xbc.nz: could not connect to host
xbind.io: could not connect to host
xchangeinfo.com: could not connect to host
xchating.com: could not connect to host
-xcler8.com: could not connect to host
xcompany.one: could not connect to host
xcoop.me: did not receive HSTS header
+xd.fi: did not receive HSTS header
xd.gov: did not receive HSTS header
xdd.io: could not connect to host
xdty.org: could not connect to host
+xecure.zone: could not connect to host
+xecureit.com: could not connect to host
xehoivn.vn: could not connect to host
xellos.ga: could not connect to host
xellos.ml: could not connect to host
@@ -14987,7 +16145,6 @@ xenesisziarovky.sk: could not connect to host
xenosphere.tk: could not connect to host
xeonlab.com: could not connect to host
xeonlab.de: could not connect to host
-xerownia.eu: could not connect to host
xett.com: could not connect to host
xfive.de: could not connect to host
xg3n1us.de: did not receive HSTS header
@@ -15001,11 +16158,13 @@ xiaolvmu.com: could not connect to host
xiaolvmu.me: could not connect to host
xiaomionline24.pl: could not connect to host
xiaoxiao.im: could not connect to host
-xiaxuejin.cn: did not receive HSTS header
+xiaxuejin.cn: could not connect to host
+xilegames.com: could not connect to host
xiliant.com: did not receive HSTS header
ximage.me: could not connect to host
ximens.me: could not connect to host
xinbiji.cn: could not connect to host
+xinex.cz: could not connect to host
xing.ml: could not connect to host
xinghuokeji.xin: could not connect to host
xingiahanvisa.net: did not receive HSTS header
@@ -15017,6 +16176,7 @@ xivpn.com: could not connect to host
xiyu.it: did not receive HSTS header
xiyu.moe: did not receive HSTS header
xjoi.net: could not connect to host
+xjoin.de: could not connect to host
xlaff.com: could not connect to host
xlboo.com: did not receive HSTS header
xlfblog.com: did not receive HSTS header
@@ -15025,6 +16185,7 @@ xmiui.com: could not connect to host
xmonk.org: did not receive HSTS header
xmr.my: could not connect to host
xn----7sbmucgqdbgwwc5e9b.xn--p1ai: could not connect to host
+xn--3lqp21gwna.cn: could not connect to host
xn--3lqp21gwna.xn--fiqs8s: could not connect to host
xn--3lqp21gwna.xn--fiqz9s: could not connect to host
xn--3lqt7ir4md4tzwa.cn: did not receive HSTS header
@@ -15035,12 +16196,15 @@ xn--4dbjwf8c.ga: could not connect to host
xn--4dbjwf8c.gq: could not connect to host
xn--4dbjwf8c.ml: could not connect to host
xn--4dbjwf8c.tk: could not connect to host
+xn--68jub.pw: could not connect to host
xn--6cv66l79sp0n0ibo7s9ne.xyz: did not receive HSTS header
xn--7rvz7ku3ppnr.jp: could not connect to host
xn--7v8h.cf: could not connect to host
+xn--80aaagmgvmvmcuoq7r.xn--p1ai: did not receive HSTS header
xn--80aaihqncaejjobbu6v.xn--p1ai: did not receive HSTS header
xn--80ablh1c.online: could not connect to host
xn--80ac0aqlt.xn--p1ai: could not connect to host
+xn--80anogxed.xn--p1ai: could not connect to host
xn--80aocgsfei.xn--p1ai: could not connect to host
xn--88j2fy28hbxmnnf9zlw5buzd.com: did not receive HSTS header
xn--8mr166hf6s.xn--fiqs8s: could not connect to host
@@ -15073,6 +16237,7 @@ xn--lna-4000-9za.nu: could not connect to host
xn--lnakuten-9za.com: did not receive HSTS header
xn--ls8hi7a.tk: could not connect to host
xn--maraa-rta.org: could not connect to host
+xn--mensenges-o1a8c.gq: could not connect to host
xn--mhringen-65a.de: did not receive HSTS header
xn--milchaufschumer-test-lzb.de: could not connect to host
xn--n8jubz39q0g0afpa985c.com: could not connect to host
@@ -15084,6 +16249,7 @@ xn--pckqk6xk43lunk.net: could not connect to host
xn--qckqc0nxbyc4cdb4527err7c.biz: did not receive HSTS header
xn--qckyd1cu698a35zarib.xyz: could not connect to host
xn--r77hya.ga: could not connect to host
+xn--rlcus7b3d.xn--xkc2dl3a5ee0h: could not connect to host
xn--rt-cja.eu: could not connect to host
xn--sdkwa9azd389v01ya.com: did not receive HSTS header
xn--srenpind-54a.dk: could not connect to host
@@ -15110,24 +16276,29 @@ xn--yoamomisuasbcn-ynb.com: could not connect to host
xn--zck9a4b352yuua.jp: did not receive HSTS header
xng.io: did not receive HSTS header
xobox.me: could not connect to host
+xoda.pw: could not connect to host
xoffy.com: did not receive HSTS header
xom.party: could not connect to host
xombra.com: could not connect to host
xor-a.net: could not connect to host
+xotika.tv: could not connect to host
+xpenology-fr.net: could not connect to host
xperiacodes.com: could not connect to host
xpi.fr: could not connect to host
+xpj.bet: did not receive HSTS header
xpj.sx: could not connect to host
xpressprint.com.br: max-age too low: 90
xpwn.cz: could not connect to host
+xq55.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
xqin.net: could not connect to host
xrp.pw: could not connect to host
+xs74.com: did not receive HSTS header
+xscancun.com: could not connect to host
xscapers.com: did not receive HSTS header
-xserownia.com.pl: could not connect to host
-xserownia.eu: could not connect to host
-xserownia.pl: could not connect to host
xsstime.nl: could not connect to host
xsyds.cn: did not receive HSTS header
xt.om: did not receive HSTS header
+xtenz.xyz: could not connect to host
xtom.email: could not connect to host
xtream-hosting.com: did not receive HSTS header
xtream-hosting.de: could not connect to host
@@ -15136,12 +16307,14 @@ xtreamhosting.eu: could not connect to host
xtrim.ru: did not receive HSTS header
xtzone.be: could not connect to host
xuexb.com: did not receive HSTS header
+xujan.com: could not connect to host
xuntaosms.com: could not connect to host
xupeng.me: could not connect to host
xuyh0120.win: did not receive HSTS header
xwalck.se: could not connect to host
-xx0r.eu: could not connect to host
xxbase.com: did not receive HSTS header
+xxx3dbdsm.com: could not connect to host
+xxxladyboysporn.com: could not connect to host
xy1919.com: could not connect to host
xy6161.com: could not connect to host
xy6262.com: could not connect to host
@@ -15152,10 +16325,12 @@ xy7373.com: could not connect to host
xyndrac.net: max-age too low: 2592000
xynex.us: could not connect to host
xynta.ch: could not connect to host
+xzoneadventure.com: did not receive HSTS header
y-o-w.com: did not receive HSTS header
y-s.pw: could not connect to host
y3451.com: could not connect to host
yaay.com.br: could not connect to host
+yabrt.cn: could not connect to host
yaccin.com: could not connect to host
yachts-magazine.com: did not receive HSTS header
yagi2.com: did not receive HSTS header
@@ -15164,12 +16339,13 @@ yalla.jp: did not receive HSTS header
yamamo10.com: could not connect to host
yameveo.com: did not receive HSTS header
yanwh.xyz: did not receive HSTS header
-yaoidreams.com: did not receive HSTS header
-yaporn.tv: did not receive HSTS header
+yaoidreams.com: could not connect to host
+yaporn.tv: could not connect to host
yarchives.jp: could not connect to host
yard-fu.com: could not connect to host
yardbird.us: could not connect to host
yarnhookup.com: did not receive HSTS header
+yarogneva.ru: could not connect to host
yasinaydin.net: did not receive HSTS header
yasutomonodokoiko.com: did not receive HSTS header
yaucy.win: could not connect to host
@@ -15182,8 +16358,9 @@ ydy.jp: could not connect to host
yecl.net: did not receive HSTS header
yello.website: could not connect to host
yellowcar.website: could not connect to host
-yemalu.com: did not receive HSTS header
+yemalu.com: could not connect to host
yemekbaz.az: could not connect to host
+yennhi.co: could not connect to host
yenniferallulli.com: could not connect to host
yenniferallulli.de: could not connect to host
yenniferallulli.es: did not receive HSTS header
@@ -15192,13 +16369,14 @@ yenniferallulli.nl: could not connect to host
yepbitcoin.com: could not connect to host
yesdevnull.net: did not receive HSTS header
yesfone.com.br: could not connect to host
+yeshu.org: did not receive HSTS header
yestees.com: did not receive HSTS header
-yeswecan.co.bw: did not receive HSTS header
yetcore.io: could not connect to host
yetishirt.com: could not connect to host
yffengshi.ml: could not connect to host
ygcdyf.com: did not receive HSTS header
yggdar.ga: could not connect to host
+yh35.net: max-age too low: 86400
yhori.xyz: could not connect to host
yibaoweilong.top: could not connect to host
yibin0831.com: could not connect to host
@@ -15213,6 +16391,7 @@ yinhe12.net: did not receive HSTS header
yippie.nl: could not connect to host
yizhu.com: could not connect to host
yjsoft.me: could not connect to host
+ylilauta.org: could not connect to host
ylk.io: could not connect to host
ynode.co: did not receive HSTS header
ynsn.nl: could not connect to host
@@ -15229,62 +16408,75 @@ yoimise.net: did not receive HSTS header
yoiyado.info: did not receive HSTS header
yokeepo.com: could not connect to host
yolo-csgo.com: could not connect to host
-yolocelebs.com: did not receive HSTS header
+yolocelebs.com: could not connect to host
yoloprod.fr: could not connect to host
yoloseo.com: could not connect to host
yomena.in: could not connect to host
yomepre.com: could not connect to host
yopers.com: did not receive HSTS header
yorkshireterrier.com.br: could not connect to host
+yorname.ml: could not connect to host
yoru.me: could not connect to host
-yoticonnections.com: could not connect to host
yotilabs.com: could not connect to host
youcaitian.com: did not receive HSTS header
youcancraft.de: could not connect to host
youcanfuckoff.xyz: could not connect to host
+youcanmakeit.at: could not connect to host
youcontrol.ru: could not connect to host
+youdowell.com: could not connect to host
youfencun.com: did not receive HSTS header
+youjizz.bz: could not connect to host
+youlend.com: did not receive HSTS header
youlog.net: could not connect to host
youngandunited.nl: did not receive HSTS header
+youngdogs.org: could not connect to host
younl.net: could not connect to host
youon.tokyo: did not receive HSTS header
yourbapp.ch: could not connect to host
-yourcomputer.expert: did not receive HSTS header
yourgame.co.il: did not receive HSTS header
youri.me: could not connect to host
yourlovesong.com.mx: could not connect to host
+yourname.xyz: could not connect to host
yoursbookstore.jp: max-age too low: 0
yoursecondphone.co: could not connect to host
yourself.today: could not connect to host
yourstrongbox.com: could not connect to host
+yourtrainingsolutions.com: did not receive HSTS header
youruseragent.info: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
yourznc.com: could not connect to host
yousite.by: could not connect to host
youth2009.org: did not receive HSTS header
youtube: could not connect to host
youtubeviews.ml: could not connect to host
-youyoulemon.com: could not connect to host
+youwatchporn.com: could not connect to host
ypcs.fi: did not receive HSTS header
+yqjf68.com: could not connect to host
yryz.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+ysicing.net: could not connect to host
+yslbeauty.com: did not receive HSTS header
+yspeo.com: max-age too low: 2592000
ytcuber.xyz: could not connect to host
ythyth.com: max-age too low: 2592000
ytvwld.de: did not receive HSTS header
yu7.jp: did not receive HSTS header
+yuanbenlian.com: did not receive HSTS header
yudan.com.br: could not connect to host
yude.ml: could not connect to host
yue2.net: did not receive HSTS header
+yuema.net.cn: could not connect to host
yufan.me: did not receive HSTS header
yugege.cf: could not connect to host
yuhen.ru: did not receive HSTS header
-yuhuo.org: could not connect to host
yui.cat: did not receive HSTS header
-yukijinji.moe: could not connect to host
+yukijinji.moe: did not receive HSTS header
yukiminami.net: could not connect to host
yuko.moe: could not connect to host
yukonrefugees.com: could not connect to host
yum.beer: could not connect to host
yum0.cn: could not connect to host
+yumli.net: could not connect to host
yummyfamilyrecipes.com: could not connect to host
+yummylooks.com: did not receive HSTS header
yuna.love: could not connect to host
yuna.tg: could not connect to host
yunpan.blue: could not connect to host
@@ -15294,24 +16486,27 @@ yunzhu.org: could not connect to host
yuppi.tv: max-age too low: 43200
yurinet.org: could not connect to host
yuriykuzmin.com: did not receive HSTS header
-yusu.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
yutabon.com: could not connect to host
-yutang.vn: could not connect to host
yuushou.com: could not connect to host
yux.fr: could not connect to host
yux.io: did not receive HSTS header
yuzu.tk: did not receive HSTS header
ywei.org: could not connect to host
ywyz.tech: could not connect to host
-yzcloud.me: could not connect to host
z-coder.com: could not connect to host
z0rro.net: could not connect to host
+z33.ch: did not receive HSTS header
+z33.co: could not connect to host
z3liff.com: could not connect to host
z3liff.net: could not connect to host
zacharopoulos.me: could not connect to host
zachbolinger.com: could not connect to host
+zachgibbens.org: could not connect to host
+zachpeters.org: could not connect to host
zadieheimlich.com: did not receive HSTS header
zaem.tv: could not connect to host
+zahnarzt-hofer.de: could not connect to host
+zahnarzt-muenich.de: could not connect to host
zahnrechner-staging.azurewebsites.net: could not connect to host
zahyantechnologies.com: did not receive HSTS header
zaidan.de: could not connect to host
@@ -15329,7 +16524,8 @@ zaneweb.org: could not connect to host
zao.fi: could not connect to host
zaoext.com: could not connect to host
zaoshanghao-dajia.rhcloud.com: could not connect to host
-zap.yt: did not receive HSTS header
+zap.yt: could not connect to host
+zapatoshechoamano.pe: did not receive HSTS header
zargaripour.com: did not receive HSTS header
zarooba.com: could not connect to host
zavca.com: did not receive HSTS header
@@ -15342,6 +16538,7 @@ zdravotnickasluzba.eu: could not connect to host
zdrowiepaleo.pl: did not receive HSTS header
zdx.ch: max-age too low: 0
zeb.fun: could not connect to host
+zebibyte.cn: could not connect to host
zebrababy.cn: could not connect to host
zebry.nl: did not receive HSTS header
zecrypto.com: could not connect to host
@@ -15353,42 +16550,47 @@ zehntner.ch: max-age too low: 3600
zeitzer-turngala.de: could not connect to host
zelfmoord.ga: could not connect to host
zelfstandigemakelaars.net: could not connect to host
-zellari.ru: did not receive HSTS header
+zellari.ru: could not connect to host
zeloz.xyz: could not connect to host
+zengdong.ren: did not receive HSTS header
zenghx.tk: could not connect to host
-zenhaiku.com: did not receive HSTS header
+zenhaiku.com: could not connect to host
zeno-system.com: did not receive HSTS header
zenpayroll.com: did not receive HSTS header
-zenti.cloud: did not receive HSTS header
zentience.dk: did not receive HSTS header
zentience.net: did not receive HSTS header
zentience.org: did not receive HSTS header
+zentiweb.nl: did not receive HSTS header
zentraler-kreditausschuss.de: did not receive HSTS header
zentralwolke.de: did not receive HSTS header
zenvite.com: could not connect to host
zenwears.com: could not connect to host
zenycosta.com: could not connect to host
zepect.com: did not receive HSTS header
-zera.com.au: max-age too low: 0
+zera.com.au: could not connect to host
zerekin.net: did not receive HSTS header
zero-sum.xyz: could not connect to host
zero-x-baadf00d.com: could not connect to host
zerocool.io: could not connect to host
zeroday.sk: did not receive HSTS header
zerofox.gq: could not connect to host
+zerolab.org: could not connect to host
zeroling.com: could not connect to host
zeroml.ml: could not connect to host
zerosource.net: could not connect to host
zerudi.com: did not receive HSTS header
zetadisseny.es: did not receive HSTS header
zeto365.pl: did not receive HSTS header
+zetrov.pl: did not receive HSTS header
zett4.me: max-age too low: 172800
zeug.co: could not connect to host
-zewtie.com: did not receive HSTS header
+zewtie.com: could not connect to host
zeytin.pro: could not connect to host
+zfo.gg: could not connect to host
zgan.ga: could not connect to host
zh1.li: could not connect to host
zhang.wtf: could not connect to host
+zhangcheng.org: did not receive HSTS header
zhangruilin.com: did not receive HSTS header
zhangsir.net: could not connect to host
zhaochen.xyz: could not connect to host
@@ -15398,15 +16600,21 @@ zhengouwu.com: could not connect to host
zhenmeish.com: could not connect to host
zhh.in: could not connect to host
zhihua-lai.com: did not receive HSTS header
-zhiin.net: did not receive HSTS header
+zhiin.net: could not connect to host
zhikin.com: could not connect to host
zhimajk.com: could not connect to host
+zhome.info: could not connect to host
zhoujiashu.com: could not connect to host
+zhuji.com: could not connect to host
+zhuji.com.cn: could not connect to host
+zhuji5.com: could not connect to host
zhujicaihong.com: could not connect to host
+zhuweiyou.com: did not receive HSTS header
zi0r.com: did not receive HSTS header
zian.online: could not connect to host
zicklam.com: could not connect to host
zigcore.com.br: could not connect to host
+zii.bz: could not connect to host
zikirakhirzaman.com: could not connect to host
zinc-x.com: did not receive HSTS header
zinenapse.info: could not connect to host
@@ -15416,13 +16624,16 @@ zirtue.io: could not connect to host
zivagold.com: did not receive HSTS header
zivver.com: could not connect to host
zivy-ruzenec.cz: could not connect to host
+zixo.sk: could not connect to host
ziyuanabc.xyz: could not connect to host
+ziz.exchange: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
zizoo.com: did not receive HSTS header
zju.tv: could not connect to host
zjubtv.com: could not connect to host
zjutv.com: could not connect to host
zkillboard.com: did not receive HSTS header
zking.ga: could not connect to host
+zlc1994.com: did not receive HSTS header
zlcp.com: could not connect to host
zmsastro.co.za: could not connect to host
zmscable.com: did not receive HSTS header
@@ -15435,44 +16646,51 @@ zoe.vc: could not connect to host
zohar.link: could not connect to host
zohar.shop: could not connect to host
zokster.net: could not connect to host
-zollihood.ch: did not receive HSTS header
zolotoy-standart.com.ua: did not receive HSTS header
+zombiesecured.com: could not connect to host
zomiac.pp.ua: could not connect to host
zonadebolsa.es: did not receive HSTS header
+zone403.net: could not connect to host
zoneminder.com: did not receive HSTS header
zoners.si: did not receive HSTS header
-zonesec.org: could not connect to host
zonky.io: could not connect to host
+zoo.city: could not connect to host
zoo24.de: did not receive HSTS header
zoofaeth.de: did not receive HSTS header
+zoofit.com.au: did not receive HSTS header
zoological-gardens.eu: could not connect to host
zoomingin.net: max-age too low: 5184000
zoommailing.com: did not receive HSTS header
zoorigin.com: did not receive HSTS header
+zooxdata.com: could not connect to host
zortium.report: could not connect to host
zorz.info: could not connect to host
-zotero.org: did not receive HSTS header
zoznamrealit.sk: did not receive HSTS header
+zpy.fun: could not connect to host
zq789.com: could not connect to host
zqhong.com: could not connect to host
zqjs.tk: could not connect to host
+zqwqz.com: could not connect to host
zrn.in: did not receive HSTS header
ztan.tk: could not connect to host
ztcaoll222.cn: could not connect to host
ztytian.com: could not connect to host
+zuan-in.com: could not connect to host
zuckerfloh.de: did not receive HSTS header
zudomc.me: could not connect to host
zuehlcke.de: could not connect to host
zukix.com: could not connect to host
zulu7.com: did not receive HSTS header
-zumazar.ru: could not connect to host
zunftmarke.de: did not receive HSTS header
zutsu-raku.com: did not receive HSTS header
zuviel.space: could not connect to host
+zvejonys.lt: did not receive HSTS header
zvncloud.com: did not receive HSTS header
zvz.im: could not connect to host
-zwembadheeten.nl: could not connect to host
-zxity.co.uk: did not receive HSTS header
+zwembadheeten.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /home/trava90/REPO/UXP/security/manager/tools/getHSTSPreloadList.js :: processStsHeader :: line 131" data: no]
+zx1168.com: could not connect to host
+zx2268.com: could not connect to host
+zxity.co.uk: could not connect to host
zxity.ltd: could not connect to host
zxity.uk: could not connect to host
zyf.pw: could not connect to host
@@ -15484,5 +16702,4 @@ zyso.org: could not connect to host
zzb510.com: could not connect to host
zzb6688.com: could not connect to host
zzb8899.com: could not connect to host
-zzpd.nl: did not receive HSTS header
zzw.ca: could not connect to host
diff --git a/security/manager/ssl/nsSTSPreloadList.inc b/security/manager/ssl/nsSTSPreloadList.inc
index 85f33eb035..36a933f71c 100644
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -8,7 +8,7 @@
/*****************************************************************************/
#include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1542710641724000);
+const PRTime gPreloadListExpirationTime = INT64_C(1546247908476000);
class nsSTSPreload
{
@@ -18,8 +18,6 @@ class nsSTSPreload
};
static const nsSTSPreload kSTSPreloadList[] = {
- { "0.me.uk", true },
- { "0005pay.com", true },
{ "00100010.net", true },
{ "0010100.net", true },
{ "00120012.net", true },
@@ -35,7 +33,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "00660066.net", true },
{ "00770077.net", true },
{ "00778899.com", true },
- { "00880088.net", true },
+ { "0086286.com", true },
{ "00990099.net", true },
{ "00dani.me", true },
{ "00f.net", true },
@@ -50,7 +48,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "01electronica.com.ar", true },
{ "01seguridad.com.ar", true },
{ "01smh.com", true },
- { "0222.mg", true },
{ "022367.com", true },
{ "022379.com", true },
{ "022391.com", true },
@@ -65,6 +62,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "02327.net", true },
{ "02375.net", true },
{ "023sec.com", true },
+ { "02607.com", true },
{ "026122.com", true },
{ "02638.net", true },
{ "028718.com", true },
@@ -121,6 +119,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "083965.com", true },
{ "083967.com", true },
{ "086628.com", true },
+ { "09115.com", true },
{ "0916app.com", true },
{ "09892.net", true },
{ "0au.de", true },
@@ -137,11 +136,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "0wx.org", true },
{ "0x.cx", true },
{ "0x.sk", true },
+ { "0x0.cloud", true },
{ "0x0.li", true },
{ "0x00ff00ff.com", true },
{ "0x17.de", true },
{ "0x52.net", true },
- { "0x5f3759df.cf", true },
{ "0x7d.com", true },
{ "0x7fffffff.net", true },
{ "0x90.io", true },
@@ -157,10 +156,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "0yen.org", true },
{ "1-2-3bounce.co.uk", true },
{ "100-downloads.com", true },
- { "10000v.ru", true },
{ "1000minds.com", true },
- { "1000serien.com", false },
- { "1001firms.com", true },
{ "1001kerstpakketten.com", false },
{ "1001mv.com", true },
{ "10086.nl", true },
@@ -194,7 +190,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "10v2.com", true },
{ "1100.so", true },
{ "110110110.net", true },
- { "1116pay.com", true },
{ "112112112.net", true },
{ "112app.nl", true },
{ "112hz.com", true },
@@ -217,21 +212,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "123bearing.co.uk", true },
{ "123bearing.com", true },
{ "123bearing.eu", true },
- { "123comparer.fr", false },
- { "123djdrop.com", true },
{ "123midterm.com", true },
+ { "123opstalverzekeringen.nl", true },
{ "123pay.ir", false },
{ "123plons.nl", true },
{ "123roulement.be", true },
{ "123roulement.com", true },
- { "123termpapers.com", true },
{ "123test.com", true },
{ "123test.nl", true },
{ "123writings.com", true },
{ "124133.com", true },
{ "124633.com", true },
{ "125m125.de", true },
- { "1288fc.com", true },
{ "12photos.eu", true },
{ "12thmanrising.com", true },
{ "12vpn.net", true },
@@ -241,7 +233,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "13318522.com", true },
{ "1391kj.com", true },
{ "1395kj.com", true },
- { "1396.net", true },
{ "13th-dover.uk", true },
{ "143533.com", true },
{ "143633.com", true },
@@ -269,7 +260,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "149733.com", true },
{ "14it.de", true },
{ "14x3.de", true },
- { "15-10.com", true },
{ "1511774230.rsc.cdn77.org", true },
{ "152433.com", true },
{ "154233.com", true },
@@ -278,20 +268,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "156433.com", true },
{ "1590284872.rsc.cdn77.org", true },
{ "1600esplanade.com", true },
- { "160887.com", true },
{ "1644091933.rsc.cdn77.org", true },
{ "1661237.com", true },
{ "166166.com", true },
{ "1689886.com", true },
{ "168bo9.com", true },
{ "168bo9.net", true },
- { "168esb.com", true },
+ { "16book.org", true },
{ "1750studios.com", false },
{ "17hats.com", true },
{ "1811559.com", true },
{ "1844329061.rsc.cdn77.org", true },
{ "1876996.com", true },
- { "18888msc.com", true },
+ { "188da.com", true },
{ "188dv.com", true },
{ "189dv.com", true },
{ "189fc.com", true },
@@ -316,14 +305,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "1cover.com.au", true },
{ "1e9.nl", true },
{ "1f123.net", true },
+ { "1fach-digital.de", true },
{ "1hourproofreading.com", true },
{ "1it.click", true },
- { "1item.co.il", true },
{ "1js.de", true },
{ "1kando.com", false },
{ "1km.ro", true },
{ "1kmi.co", true },
{ "1ll.uk", true },
+ { "1lord1faith.com", true },
{ "1m.duckdns.org", true },
{ "1montre.fr", true },
{ "1morebounce.co.uk", true },
@@ -333,7 +323,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "1on1on1.tv", true },
{ "1panorama.ru", true },
{ "1para.net", true },
+ { "1password.ca", true },
{ "1password.com", true },
+ { "1password.eu", true },
{ "1px.tv", true },
{ "1r.is", true },
{ "1rs.nl", true },
@@ -346,13 +338,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "1stclassbouncycastles.co.uk", true },
{ "1stforfun.co.uk", true },
{ "1stpeninsulabouncers.co.uk", true },
- { "1ststop.co.uk", true },
- { "1upinternet.com", true },
{ "1volcano.ru", true },
{ "1whw.co.uk", true },
{ "1wirelog.de", true },
{ "1wl.uk", true },
{ "2.wtf", true },
+ { "200.network", true },
{ "200fcw.com", true },
{ "2018.wales", true },
{ "2048-spiel.de", true },
@@ -371,40 +362,46 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "2333blog.com", true },
{ "233abc.com", true },
{ "233blog.com", true },
- { "233ss.net", true },
+ { "233boy.com", true },
{ "233vps.com", true },
{ "24-7.jp", true },
{ "245meadowvistaway.com", true },
{ "246060.ru", true },
- { "247a.co.uk", true },
{ "247exchange.com", true },
{ "247healthshop.com", true },
{ "247medplan.com", true },
{ "24dian30.com", true },
+ { "24hour-locksmithsanantonio.com", true },
+ { "24hourlocksmithbaltimore.com", true },
+ { "24hourlocksmithdallastx.com", true },
{ "24hoursanantoniolocksmiths.com", true },
{ "24hourscienceprojects.com", true },
{ "24ip.com", true },
{ "24ip.de", true },
{ "24ip.fr", true },
{ "24timeravis.dk", true },
+ { "24zpravy.cz", true },
+ { "2566335.xyz", true },
{ "256pages.com", false },
{ "258da.com", true },
{ "25reinyan25.net", true },
{ "2600edinburgh.org", true },
{ "2600hq.com", true },
- { "260887.com", true },
{ "263.info", true },
{ "27728522.com", true },
{ "28-industries.com", true },
{ "281180.de", true },
{ "2858958.com", true },
+ { "286.com", true },
{ "288da.com", true },
{ "28peaks.com", true },
{ "28spots.net", true },
{ "2912.nl", true },
{ "2948.ca", true },
+ { "297computers.com", true },
{ "298da.com", true },
{ "2991236.com", true },
+ { "2au.ru", true },
{ "2bas.nl", true },
{ "2bcompany.ch", true },
{ "2bis10.de", true },
@@ -420,7 +417,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "2cv-fahrer.de", true },
{ "2fm.ie", true },
{ "2fraud.pro", true },
- { "2gen.com", true },
{ "2heartsbookings.co.uk", true },
{ "2hypeenterprises.com", true },
{ "2kgwf.fi", true },
@@ -456,6 +452,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "314122.com", true },
{ "314322.com", true },
{ "314522.com", true },
+ { "314553.com", true },
{ "314622.com", true },
{ "314633.com", true },
{ "314922.com", true },
@@ -464,7 +461,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "319422.com", true },
{ "319k3.com", true },
{ "31klabs.com", true },
- { "31tv.ru", true },
{ "320281.net", true },
{ "321live.nl", true },
{ "324022.com", true },
@@ -526,7 +522,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "349233.com", true },
{ "349433.com", true },
{ "349533.com", true },
- { "34oztonic.eu", true },
{ "350422.com", true },
{ "354022.com", true },
{ "354133.com", true },
@@ -537,7 +532,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "354933.com", true },
{ "356433.com", true },
{ "360live.fr", true },
+ { "360rail.nl", true },
{ "360woodworking.com", true },
+ { "364553.com", true },
{ "365365.com", true },
{ "365daysreview.com", true },
{ "365healthworld.com", true },
@@ -551,8 +548,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "3778vip.com", true },
{ "379700.com", true },
{ "380422.com", true },
- { "38888msc.com", true },
- { "38blog.com", true },
+ { "388da.com", true },
{ "390422.com", true },
{ "392422.com", true },
{ "393335.ml", true },
@@ -561,11 +557,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "394122.com", true },
{ "394322.com", true },
{ "394522.com", true },
+ { "394553.com", true },
{ "394622.com", true },
{ "394922.com", true },
{ "396422.com", true },
{ "398.info", true },
{ "39sihu.com", false },
+ { "3aandl.com", true },
{ "3ags.de", true },
{ "3amtoolbox.se", true },
{ "3ank.in", true },
@@ -576,6 +574,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "3circlefunding.ch", true },
{ "3countiescastlehire.co.uk", true },
{ "3cs.ch", true },
+ { "3deeplearner.com", true },
{ "3djuegos.com", true },
{ "3dmedium.de", true },
{ "3dmusiclab.nl", true },
@@ -584,8 +583,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "3drenaline.com", true },
{ "3haeuserprojekt.org", true },
{ "3haueserprojekt.org", true },
+ { "3hl0.net", true },
+ { "3ik.us", true },
{ "3james.com", true },
{ "3logic.ru", true },
+ { "3lot.ru", true },
{ "3n5b.com", true },
{ "3os.ooo", true },
{ "3phase.pw", true },
@@ -612,7 +614,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "3typen.tv", true },
{ "3v4l.org", true },
{ "3weekdietworks.com", true },
- { "3xx.link", true },
{ "4-1-where.com", true },
{ "4-it.de", true },
{ "40-grad.de", true },
@@ -627,42 +628,29 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "411film.com", true },
{ "411movie.com", true },
{ "414553.com", true },
+ { "41studio.com", true },
{ "41where.com", true },
{ "420java.com", true },
- { "4237.com", true },
{ "42day.info", true },
- { "42entrepreneurs.fr", true },
{ "439050.com", true },
- { "440887.com", true },
{ "441jj.com", false },
- { "442887.com", true },
- { "443887.com", true },
{ "4444yh.com", true },
- { "444887.com", true },
- { "445887.com", true },
{ "448da.com", true },
{ "44scc.com", true },
- { "44sec.com", true },
- { "4500.co.il", true },
{ "451.ooo", true },
{ "4553s.com", true },
{ "4553vip.com", true },
- { "4706666.com", true },
- { "4716666.com", true },
- { "4726666.com", true },
{ "4736666.com", true },
- { "4756666.com", true },
- { "4786666.com", true },
- { "478933.com", true },
{ "47essays.com", true },
{ "491mhz.net", true },
{ "49889.com", true },
- { "4997777.com", true },
{ "49dollaridahoregisteredagent.com", true },
+ { "4c-haircare.com", true },
{ "4decor.org", true },
{ "4everproxy.com", true },
{ "4eyes.ch", true },
{ "4fit.ro", true },
+ { "4flex.info", true },
{ "4freepress.com", true },
{ "4g-server.eu", false },
{ "4garage.com.br", true },
@@ -682,6 +670,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "4x.fi", true },
{ "4x4.lk", true },
{ "4xlabs.co", true },
+ { "50.pe", true },
{ "500a500.com", true },
{ "500b500.com", true },
{ "500c500.com", true },
@@ -715,6 +704,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "504922.com", true },
{ "506422.com", true },
{ "506pay.com", true },
+ { "508088.com", true },
{ "50lakeshore.com", true },
{ "50ma.xyz", true },
{ "50north.de", true },
@@ -734,8 +724,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "524622.com", true },
{ "524922.com", true },
{ "525.info", true },
- { "52b9.com", true },
- { "52b9.net", true },
+ { "52hentai.ml", true },
{ "52kb365.com", true },
{ "52ncp.net", true },
{ "52sykb.com", true },
@@ -756,19 +745,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "541622.com", true },
{ "541722.com", true },
{ "541922.com", true },
- { "5432.cc", true },
{ "545922.com", true },
{ "546802.com", true },
{ "54below.com", true },
{ "5518k3.com", true },
{ "5533445.com", true },
{ "5555yh.com", true },
+ { "55797.com", true },
{ "558da.com", true },
{ "55bt.cc", true },
{ "55scc.com", true },
{ "576422.com", true },
{ "579422.com", true },
- { "57he.com", true },
{ "57wilkie.net", true },
{ "583422.com", true },
{ "585422.com", true },
@@ -786,13 +774,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "5997891.com", true },
{ "5apps.com", true },
{ "5c1fd0f31022cbc40af9f785847baaf9.space", true },
- { "5chat.it", true },
{ "5crowd.com", true },
{ "5dm.tv", true },
{ "5ece.de", true },
{ "5francs.com", true },
{ "5gb.space", true },
{ "5kraceforals.com", true },
+ { "5percentperweek.com", true },
{ "5starbouncycastlehire.co.uk", true },
{ "5thchichesterscouts.org.uk", true },
{ "5w5.la", true },
@@ -863,7 +851,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "64970.com", true },
{ "649722.com", true },
{ "649822.com", true },
- { "64bitgaming.de", true },
+ { "64bitservers.net", true },
{ "651422.com", true },
{ "652422.com", true },
{ "6541166.com", true },
@@ -879,7 +867,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "6547766.com", true },
{ "6548855.com", true },
{ "6548877.com", true },
+ { "656088.com", true },
{ "659422.com", true },
+ { "66136.com", true },
{ "6616fc.com", true },
{ "66205.net", true },
{ "6633445.com", true },
@@ -888,8 +878,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "6664553.com", true },
{ "666668722.com", true },
{ "6666yh.com", true },
- { "6677.us", true },
- { "668da.com", true },
+ { "666omg.com", true },
{ "670422.com", true },
{ "671422.com", true },
{ "672422.com", true },
@@ -899,7 +888,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "679422.com", true },
{ "680422.com", true },
{ "686848.com", true },
- { "688da.com", true },
{ "690422.com", true },
{ "691422.com", true },
{ "692422.com", true },
@@ -917,11 +905,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "6pm.com", true },
{ "6t-montjoye.org", true },
{ "6w6.la", true },
- { "6z3.net", true },
{ "700.az", true },
{ "704233.com", true },
{ "704533.com", true },
- { "7045h.com", true },
{ "704633.com", true },
{ "712433.com", true },
{ "713433.com", true },
@@ -942,25 +928,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "736433.com", true },
{ "738433.com", true },
{ "739433.com", true },
- { "73info.com", true },
{ "740833.com", true },
{ "741833.com", true },
{ "742833.com", true },
{ "743833.com", true },
{ "74th.jp", true },
+ { "755k3.com", true },
+ { "7570.com", true },
{ "762.ch", true },
- { "771122.tv", true },
{ "7717a.com", true },
{ "772244.net", true },
{ "7733445.com", true },
{ "7777yh.com", true },
{ "777coin.com", true },
{ "778da.com", true },
+ { "783lab.com", true },
+ { "787k3.com", true },
{ "7885765.com", true },
{ "788da.com", true },
{ "7891553.com", true },
{ "7891997.com", true },
- { "789zr.com", true },
{ "7careconnect.com", true },
{ "7delights.com", true },
{ "7delights.in", true },
@@ -968,12 +955,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "7graus.pt", true },
{ "7kicks.com", true },
{ "7kovrikov.ru", true },
- { "7nw.eu", true },
{ "7proxies.com", true },
{ "7sons.de", true },
{ "7thcircledesigns.com", true },
{ "7trade8.com", true },
{ "7x24servis.com", true },
+ { "80036.com", true },
{ "804322.com", true },
{ "809422.com", true },
{ "80993.net", true },
@@ -988,13 +975,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "8522top.com", true },
{ "8522tw.com", true },
{ "8522usa.com", true },
+ { "86286286.com", true },
{ "86499.com", true },
{ "8649955.com", true },
{ "8649966.com", true },
{ "8649977.com", true },
{ "8688fc.com", true },
{ "86metro.ru", true },
- { "8722.com", true },
{ "8722am.com", true },
{ "8722cn.com", true },
{ "8722hk.com", true },
@@ -1004,7 +991,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "8818k3.com", true },
{ "8833445.com", true },
{ "88522am.com", true },
- { "887.ag", true },
{ "888888722.com", true },
{ "88889822.com", true },
{ "8888esb.com", true },
@@ -1020,41 +1006,42 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "8917818.net", true },
{ "8951889.com", true },
{ "8951889.net", true },
- { "8989k3.com", true },
{ "8992088.com", true },
{ "8992088.net", true },
{ "8ack.de", true },
{ "8ackprotect.com", true },
{ "8da188.com", true },
{ "8da2017.com", true },
- { "8da2018.com", true },
+ { "8da222.com", true },
{ "8da88.com", true },
{ "8da999.com", true },
+ { "8dabet.com", true },
{ "8hrs.net", true },
{ "8maerz.at", true },
{ "8pecxstudios.com", true },
{ "8shequapp.com", true },
+ { "8svn.com", true },
{ "8t8.eu", true },
{ "8tech.com.hk", true },
{ "8thportsmouth.org.uk", true },
{ "8tuffbeers.com", true },
{ "8ung.online", true },
+ { "8xx.bet", true },
+ { "8xx.io", true },
+ { "8xx888.com", true },
+ { "8xxbet.net", true },
{ "9-11commission.gov", true },
{ "903422.com", true },
{ "905422.com", true },
{ "90r.jp", true },
- { "910kj.com", true },
{ "9118.com", true },
{ "911commission.gov", true },
{ "912422.com", true },
{ "913422.com", true },
{ "914122.com", true },
{ "918116.com", true },
- { "918gd.com", true },
- { "918yy.com", true },
{ "919422.com", true },
{ "91966.com", true },
- { "919945.com", true },
{ "91tianmi.com", false },
{ "91travel.info", true },
{ "924122.com", true },
@@ -1067,7 +1054,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "934122.com", true },
{ "943022.com", true },
{ "9449-27a1-22a1-e0d9-4237-dd99-e75e-ac85-2f47-9d34.de", true },
- { "9454.com", true },
{ "946022.com", true },
{ "946422.com", true },
{ "949022.com", true },
@@ -1075,8 +1061,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "949622.com", true },
{ "949722.com", true },
{ "9500years.com", true },
- { "9617818.com", true },
- { "9617818.net", true },
{ "9679693.com", true },
{ "9681909.com", true },
{ "9696178.com", true },
@@ -1084,7 +1068,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "972422.com", true },
{ "9788876.com", true },
{ "97bros.com", true },
- { "9822.com", true },
{ "9822.info", true },
{ "9822am.com", true },
{ "9822cn.com", true },
@@ -1092,7 +1075,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "9822ph.com", true },
{ "9822tw.com", true },
{ "9822usa.com", true },
- { "987987.com", true },
{ "98laba.com", true },
{ "98laba.net", true },
{ "9906753.net", true },
@@ -1101,22 +1083,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "99599.fi", true },
{ "99599.net", true },
{ "9994553.com", true },
+ { "9998722.com", true },
{ "99998522.com", true },
{ "99999822.com", true },
{ "999998722.com", true },
{ "99rst.org", true },
{ "9bingo.net", true },
{ "9farm.com", true },
- { "9iwan.net", true },
+ { "9fvip.net", true },
{ "9jajuice.com", true },
{ "9pkfz.com", true },
- { "9ss6.com", true },
+ { "9riddles.com", true },
{ "9tolife.be", true },
{ "9uelle.jp", true },
- { "9vies.ca", true },
{ "9vx.org", true },
{ "9won.kr", true },
- { "9y.at", true },
{ "9yw.me", true },
{ "a-1basements.com", true },
{ "a-1indianawaterproofing.com", true },
@@ -1125,7 +1106,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "a-little-linux-box.at", true },
{ "a-msystems.com", true },
{ "a-oben.org", true },
- { "a-shafaat.ir", true },
{ "a-starbouncycastles.co.uk", true },
{ "a0print.nl", true },
{ "a1bouncycastlehire.com", true },
@@ -1139,8 +1119,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "a4sound.com", true },
{ "a632079.me", true },
{ "a7m2.me", true },
+ { "a8q.org", true },
{ "aa-tour.ru", true },
{ "aa1718.net", true },
+ { "aa43d.cn", true },
{ "aa6688.net", true },
{ "aaapl.com", true },
{ "aabanet.com.br", true },
@@ -1160,22 +1142,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aaomidi.com", true },
{ "aapas.org.ar", true },
{ "aardvarksolutions.co.za", true },
+ { "aarkue.eu", true },
+ { "aaron.cm", true },
{ "aaron.xin", true },
+ { "aaronburt.co.uk", true },
{ "aaronhorler.com", true },
- { "aaronhorler.com.au", true },
{ "aaronkimmig.de", true },
{ "aaronroyle.com", true },
{ "aaronsilber.me", true },
{ "aatf.us", true },
{ "aati.be", true },
+ { "aati.info", true },
{ "aavienna.com", true },
+ { "ab-bauservice-berlin.de", true },
{ "abaapplianceservice.com", true },
+ { "abaaustin.com", true },
{ "abacus-events.co.uk", true },
{ "abacusbouncycastle.co.uk", true },
{ "abacustech.co.jp", true },
{ "abacustech.net", true },
{ "abacustech.org", true },
- { "abandonedmines.gov", true },
{ "abbadabbabouncycastles.co.uk", true },
{ "abbas.ch", true },
{ "abborsjo.fi", true },
@@ -1187,18 +1173,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "abc.li", true },
{ "abcbouncycastlessurrey.co.uk", true },
{ "abcbouncyfactory.co.uk", true },
- { "abcdef.be", true },
{ "abcheck.se", true },
{ "abckam.com", true },
{ "abcpartyhire.com", true },
{ "abcstudio.com.au", true },
- { "abdullah.pw", true },
+ { "abdelsater.net", true },
+ { "abdulwahaab.ca", true },
{ "abe-elektro.de", true },
{ "abe-medical.jp", true },
{ "abeestrada.com", false },
{ "abeilles-idapi.fr", true },
{ "abenteuer-ahnenforschung.de", true },
- { "abeontech.com", true },
{ "aberdeenalmeras.com", true },
{ "aberdeencastles.co.uk", true },
{ "aberdeenjudo.co.uk", true },
@@ -1270,13 +1255,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "abristolgeek.co.uk", true },
{ "abseits.org", true },
{ "absolem.cc", true },
+ { "absolutedouble.co.uk", true },
{ "absolutehaitian.com", true },
{ "absolutehosting.co.za", true },
{ "absolutelyinflatables.co.uk", true },
{ "absoluterush.net", true },
- { "absolutewaterproofingsolutions.com", true },
{ "absolutewebdesigns.com", true },
{ "abstraction21.com", true },
+ { "absturztau.be", true },
+ { "absturztaube.ch", true },
{ "absynthe-inquisition.fr", true },
{ "abthorpe.org", true },
{ "abulanov.com", true },
@@ -1297,11 +1284,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "academytv.com.au", true },
{ "acaeum.com", true },
{ "acampar.com.br", true },
+ { "acaptureservices.com", true },
{ "acara-yoga.de", true },
+ { "acareer.in", true },
{ "acat.io", true },
{ "acbrussels-used.be", true },
{ "accadoro.it", true },
- { "accbay.com", true },
{ "accelaway.com", true },
{ "acceleratenetworks.com", true },
{ "accelerateyourworld.org", true },
@@ -1334,15 +1322,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "acecolleges.edu.au", true },
{ "aceinflatables.com", true },
{ "aceinstituteonline.com", true },
- { "acelpb.com", true },
{ "acem.org.au", true },
{ "acemobileforce.com", true },
{ "acemypaper.com", true },
+ { "acen.eu", true },
{ "acendealuz.com.br", true },
{ "acerentalandsales.com", true },
{ "acerislaw.com", true },
{ "acessoeducacao.com", true },
{ "acevik.de", true },
+ { "acfo.org", true },
{ "acg18.us", false },
{ "acgtalktw.com", true },
{ "achalay.org", true },
@@ -1355,15 +1344,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "achtzehn.eu", true },
{ "achtzehnterachter.de", true },
{ "achwo.de", true },
+ { "acid.ninja", true },
{ "acidbin.co", true },
{ "aciety.com", true },
{ "aciksite.com", true },
+ { "ackermann.ch", true },
{ "ackis.duckdns.org", false },
{ "aclu.org", false },
{ "acluva.org", false },
{ "acme.beer", true },
{ "acmexyz123.info", true },
{ "acnpacific.com", true },
+ { "acodess.com", true },
{ "aconnor.xyz", true },
{ "acordes.online", true },
{ "acorncastles.co.uk", true },
@@ -1372,6 +1364,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "acoshift.me", true },
{ "acourse.io", true },
{ "acousti-tech.com", true },
+ { "acousticalsolutions.com", true },
{ "acoustics.network", true },
{ "acoustics.tech", true },
{ "acoustique-tardy.com", true },
@@ -1384,6 +1377,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "acrepairhutto.com", true },
{ "acrepairroundrocktx.com", true },
{ "acrevalue.com", true },
+ { "acriticismlab.org", true },
{ "acrolife.cz", true },
{ "acroso.me", true },
{ "across.ml", true },
@@ -1414,14 +1408,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "activehire.co.uk", true },
{ "activeleisure.ie", true },
{ "activeworld.net", false },
- { "activistasconstructivos.org", true },
{ "activitesaintnicaise.org", true },
{ "activityeventhire.co.uk", true },
{ "actom.cc", true },
{ "actors-cafe.net", true },
{ "actorsroom.com", true },
{ "actserv.co.ke", true },
- { "actu-film.com", true },
{ "acuica.co.uk", false },
{ "acul.me", true },
{ "acupofsalt.tv", true },
@@ -1430,6 +1422,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "acwi.gov", true },
{ "acy.com", true },
{ "acyfxasia.com", true },
+ { "acyume.com", true },
{ "ad-notam.asia", true },
{ "ad-notam.ch", true },
{ "ad-notam.co.uk", true },
@@ -1457,10 +1450,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "adamradocz.com", true },
{ "adams.dk", true },
{ "adamsbouncycastles.co.uk", true },
- { "adamsfoundationrepair.com", true },
{ "adamstas.com", true },
{ "adamwallington.co.uk", true },
{ "adamwilcox.org", true },
+ { "adamyuan.xyz", true },
{ "adapt-elektronik.com", true },
{ "adapt.de", true },
{ "adaptablesecurity.org", true },
@@ -1478,13 +1471,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "addiko.net", true },
{ "addisoncrump.info", true },
{ "addnine.com", true },
+ { "addon.watch", true },
{ "addones.net", true },
{ "addtoany.com", true },
{ "adduono.com", true },
{ "adelebeals.com", true },
{ "adelightfulglow.com", true },
+ { "adeline.mobi", true },
{ "adentalsolution.com", true },
{ "adept.org.pl", true },
+ { "adesa.co.uk", true },
{ "adevel.eu", true },
{ "adf-safetytools.com", true },
{ "adftrasporti.it", true },
@@ -1494,7 +1490,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "adimaja.com", true },
{ "adinariversloveschool.com", true },
{ "adingenierie.fr", true },
- { "adint.net", true },
{ "adiponectinsupplement.info", true },
{ "adiponectinsupplement.net", true },
{ "adjagu.org", true },
@@ -1505,8 +1500,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "adlershop.ch", true },
{ "adm-sarov.ru", true },
{ "adme.co.il", true },
- { "admin-numerique.com", true },
{ "admin-serv.net", true },
+ { "admin.casa", true },
{ "admin.fedoraproject.org", true },
{ "admin.google.com", true },
{ "admin.stg.fedoraproject.org", true },
@@ -1514,15 +1509,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "administratorserwera.pl", true },
{ "adminlinux.pl", true },
{ "admino.cz", true },
- { "adminwerk.com", true },
{ "adminwiki.fr", true },
- { "admirable.one", true },
{ "admody.com", true },
{ "admongo.gov", true },
{ "adnanotoyedekparca.com", true },
{ "adnot.am", true },
{ "adnseguros.es", true },
- { "adoniscabaret.co.uk", true },
{ "adonnante.com", true },
{ "adoptionlink.co.uk", true },
{ "adora-illustrations.fr", true },
@@ -1546,9 +1538,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "adrien.vin", true },
{ "adrienkohlbecker.com", true },
{ "adriennesmiles.com", true },
- { "adrinet.tk", true },
{ "adrup.com", true },
+ { "adsamcik.com", true },
{ "adsbouncycastles.co.uk", true },
+ { "adsbtc.org", true },
{ "adsl2meg.fr", true },
{ "adtgroup.com", true },
{ "adurra.com", true },
@@ -1560,7 +1553,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "advancedprotectionkey.com", true },
{ "advancedprotectionsecuritykey.com", true },
{ "advancedweb.hu", true },
- { "advancedwriters.com", true },
{ "advanceworx.com", true },
{ "advancis.net", true },
{ "advancyte.com", true },
@@ -1583,10 +1575,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "advocate-europe.eu", true },
{ "advocaten-avocats.be", true },
{ "advocatenalkmaar.org", true },
+ { "advocator.ca", true },
{ "advocoeurdehaan.nl", true },
{ "advokat-romanov.com", true },
{ "advtran.com", true },
{ "adware.pl", true },
+ { "adwokatkosterka.pl", true },
+ { "adwokatzdunek.pl", true },
{ "adws.io", true },
{ "adxperience.com", true },
{ "adzuna.at", true },
@@ -1614,6 +1609,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aegrel.ee", true },
{ "aehe.us", true },
{ "aei.co.uk", true },
+ { "aelurus.com", true },
{ "aeon.co", true },
{ "aep-digital.com", true },
{ "aeradesign.com", true },
@@ -1622,6 +1618,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aergia.eu", true },
{ "aerisnetwork.com", true },
{ "aero-pioneer.com", true },
+ { "aerobasegroup.com", true },
{ "aerobotz.com", true },
{ "aerosimexperience.com", true },
{ "aertel.ie", true },
@@ -1643,21 +1640,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "afb24.de", true },
{ "afbeelding.im", true },
{ "afbeeldinguploaden.nl", true },
- { "afeefzarapackages.com", true },
{ "affichagepub3.com", true },
{ "affiliatefeatures.com", true },
{ "affiliateroyale.com", true },
{ "affiliatetest.azurewebsites.net", true },
{ "affilie.de", true },
- { "affinity.vc", true },
{ "affinitysync.com", true },
{ "affissioni.roma.it", true },
{ "affittacamere.roma.it", true },
{ "affordableazdivorce.com", true },
+ { "affordableblindsexpress.com", true },
{ "affordablehealthquotesforyou.com", true },
{ "affordablekilimanjaro.com", true },
{ "affordablemudjacking.com", true },
- { "affordablepapers.com", true },
{ "affordableracingparts.com.au", true },
{ "affping.com", true },
{ "affvps.net", true },
@@ -1666,7 +1661,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aficionados.com.br", true },
{ "afinadoronline.com.br", true },
{ "afinaudio.com", true },
- { "aflamtorrent.com", true },
{ "aflfreebets.com", true },
{ "aflowershop.ca", true },
{ "afmt.fr", true },
@@ -1690,17 +1684,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "afva.net", true },
{ "afzco.asia", true },
{ "ag-websolutions.de", true },
+ { "ag8-game.com", true },
{ "agalliasis.ch", true },
{ "agamsecurity.ch", true },
{ "agatajanik.de", true },
{ "agate.pw", true },
{ "agechecker.net", true },
- { "ageg.ca", true },
{ "agenceklic.com", true },
+ { "agencewebstreet.com", true },
{ "agenciadeempregosdourados.com.br", true },
{ "agenciafiscal.pe", true },
{ "agenda-loto.net", false },
{ "agenda21senden.de", true },
+ { "agendatelefonica.com.br", true },
{ "agent-grow.com", true },
{ "agent6.com.au", true },
{ "agentprocessing.com", true },
@@ -1715,7 +1711,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "agilebits.com", true },
{ "agilebits.net", false },
{ "agilecraft.com", true },
- { "agileecommerce.com.br", true },
{ "agileui.com", true },
{ "agiley.se", true },
{ "agilizing.us", true },
@@ -1726,11 +1721,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "agiserv.fr", true },
{ "agliamici.it", true },
{ "agnesk.blog", true },
- { "agonswim.com", false },
{ "agoodmind.com", true },
{ "agoravox.fr", true },
{ "agoravox.it", true },
{ "agoravox.tv", true },
+ { "agostinhoenascimento.com.br", true },
{ "agotnes.com", true },
{ "agouraelectrical.com", true },
{ "agouraelectrician.com", true },
@@ -1757,9 +1752,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "agrilinks.org", true },
{ "agrios.de", true },
{ "agro-forestry.net", true },
- { "agro.rip", true },
+ { "agroline.by", true },
+ { "agroxxi.ru", true },
{ "agroyard.com.ua", true },
{ "agsb.ch", true },
+ { "agscinemas.com", true },
+ { "agscinemasapp.com", true },
{ "agung-furniture.com", true },
{ "agwa.name", true },
{ "ahd.com", false },
@@ -1771,6 +1769,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ahmad.works", true },
{ "ahmadly.com", true },
{ "ahmedabadflowermall.com", true },
+ { "ahmedcharles.com", true },
{ "ahmerjamilkhan.org", true },
{ "ahmetozer.org", true },
{ "ahosi.com", true },
@@ -1781,9 +1780,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ahxxm.com", true },
{ "ai-english.jp", true },
{ "ai-soft.co.jp", true },
+ { "ai.gov", true },
{ "aia.de", true },
- { "aibaoyou.com", true },
{ "aibenzi.com", true },
+ { "aicial.co.uk", true },
{ "aidanapple.com", true },
{ "aidanmontare.net", true },
{ "aide-valais.ch", true },
@@ -1795,6 +1795,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aifriccampbell.com", true },
{ "aigcev.org", true },
{ "aigenpul.se", true },
+ { "aignermunich.jp", true },
{ "aiicy.org", true },
{ "aiida.se", true },
{ "aijsk.com", true },
@@ -1805,10 +1806,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aikido-kiel.de", true },
{ "aikido-linz.at", true },
{ "aikido-wels.at", true },
+ { "aimax.com", true },
{ "aimeeandalec.com", true },
- { "aimerworld.com", true },
{ "aimgroup.co.tz", true },
{ "aimotive.com", true },
+ { "aintevenmad.ch", true },
{ "aiois.com", true },
{ "aipbarcelona.com", true },
{ "air-craftglass.com", true },
@@ -1820,12 +1822,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "airborne-inflatables.co.uk", true },
{ "airclass.com", true },
{ "aircomms.com", true },
- { "airconsboksburg.co.za", true },
- { "airconsfourways.co.za", true },
- { "airconsmidrand.co.za", true },
{ "airconssandton.co.za", true },
{ "airductclean.com", false },
{ "airductcleaning-fresno.com", true },
+ { "airductcleaninggrandprairie.com", true },
+ { "airductcleaningirving.com", true },
{ "airdur.eu", true },
{ "aireaseleaks.org", true },
{ "airetvie.com", true },
@@ -1845,8 +1846,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "airportlimototoronto.com", true },
{ "airpurifierproductsonline.com", true },
{ "airrestoration.ch", true },
- { "airsick.guide", true },
{ "airsoft.ch", true },
+ { "airtimerewards.co.uk", true },
{ "airvpn.org", true },
{ "airvuz.com", true },
{ "airwegobouncycastles.co.uk", true },
@@ -1856,6 +1857,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aisi316l.net", true },
{ "aisr.nl", true },
{ "aistockcharts.com", true },
+ { "aistrope.com", true },
{ "ait.com.ar", true },
{ "aiticon.com", true },
{ "aitosoftware.com", true },
@@ -1863,7 +1865,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aivd.lol", true },
{ "aivene.com", true },
{ "aiwdirect.com", true },
- { "aixvox.com", true },
+ { "aixvox.com", false },
{ "aixxe.net", true },
{ "aizxxs.com", true },
{ "aizxxs.net", true },
@@ -1883,6 +1885,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ajsb85.com", true },
{ "ak-varazdin.hr", true },
{ "ak-webit.de", true },
+ { "aka.ms", true },
{ "akachanikuji.com", true },
{ "akademeia.moe", true },
{ "akalashnikov.ru", true },
@@ -1894,7 +1897,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "akelius.de", false },
{ "akfoundationindia.com", true },
{ "akhealthconnection.com", true },
- { "akihiro.xyz", false },
{ "akihito.com", true },
{ "akijo.de", true },
{ "akita-boutique.com", true },
@@ -1902,22 +1904,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "akj.io", true },
{ "akkbouncycastles.co.uk", true },
{ "akkeylab.com", true },
- { "akoch.net", true },
{ "akostecki.de", true },
{ "akovana.com", true },
{ "akoya.fi", true },
{ "akplates.org", true },
{ "akpwebdesign.com", true },
{ "akr.io", true },
+ { "akr.services", true },
{ "akracing.se", true },
{ "akritikos.info", true },
- { "akronet.cz", true },
- { "akropol.cz", true },
{ "akropolis-ravensburg.de", true },
{ "aksehir.bel.tr", true },
{ "akselinurmio.fi", false },
{ "akshi.in", true },
- { "aktan.com.br", true },
{ "aktiv-naturheilmittel.at", true },
{ "aktiv-naturheilmittel.ch", true },
{ "aktiv-naturheilmittel.de", true },
@@ -1926,7 +1925,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aktuelle-uhrzeit.at", true },
{ "akuislam.com", true },
{ "akukas.com", true },
- { "akul.co.in", true },
{ "akustik.tech", true },
{ "akutun.cl", true },
{ "akvorrat.at", true },
@@ -1936,11 +1934,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aladdin.ie", true },
{ "aladdinschools.appspot.com", true },
{ "alainbaechlerphotography.ch", true },
+ { "alainfrancois.eu", true },
{ "alainmargot.ch", true },
{ "alainodea.com", true },
{ "alainwolf.ch", true },
{ "alainwolf.net", true },
{ "alair.cn", false },
+ { "alamancetv.com", true },
+ { "alamgir.works", true },
{ "alanberger.me.uk", true },
{ "alanhua.ng", true },
{ "alaninkenya.org", true },
@@ -1958,8 +1959,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "albbounce.co.uk", true },
{ "albersdruck.de", true },
{ "albertathome.org", true },
+ { "albertbogdanowicz.pl", true },
{ "albertinum-goettingen.de", true },
- { "albertonplumber24-7.co.za", true },
{ "albion2.org", true },
{ "alboweb.nl", true },
{ "albuic.tk", true },
@@ -1969,15 +1970,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alcnutrition.com", true },
{ "alco-united.com", true },
{ "alcoholapi.com", true },
- { "aldes.co.za", true },
+ { "aldiabcs.com", true },
{ "aldien.com.br", true },
{ "aldo-vandini.de", true },
- { "aldorr.net", true },
+ { "aldorr.net", false },
{ "aldous-huxley.com", true },
{ "aldred.cloud", true },
{ "alecpap.com", true },
{ "alecpapierniak.com", true },
{ "alecrust.com", true },
+ { "aledg.cl", true },
+ { "aleksejjocic.tk", true },
{ "aleksib.fi", true },
{ "alela.fr", true },
{ "alerbon.net", true },
@@ -2000,6 +2003,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alexandrastylist.com", true },
{ "alexandre-blond.fr", true },
{ "alexandros.io", true },
+ { "alexbaker.org", true },
{ "alexberts.ch", true },
{ "alexbresnahan.com", true },
{ "alexcoman.com", true },
@@ -2011,11 +2015,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alexhd.de", true },
{ "alexio.ml", true },
{ "alexisabarca.com", true },
- { "alexischaussy.xyz", true },
- { "alexismeza.com", true },
- { "alexismeza.com.mx", true },
- { "alexismeza.es", true },
- { "alexismeza.nl", true },
{ "alexkott.com", true },
{ "alexlouden.com", true },
{ "alexmerkel.com", true },
@@ -2024,7 +2023,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alexmroberts.net", true },
{ "alexn.org", true },
{ "alexpavel.com", true },
- { "alexpotter.net", false },
+ { "alexpotter.net", true },
{ "alexs.de", true },
{ "alexschroeder.ch", true },
{ "alexsergeyev.com", true },
@@ -2039,6 +2038,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alexwardweb.com", true },
{ "alexyang.me", true },
{ "alfa-tech.su", true },
+ { "alftrain.com", true },
+ { "alghanimcatering.com", true },
{ "algoentremanos.com", true },
{ "algofactory.de", true },
{ "algolia.com", true },
@@ -2054,8 +2055,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alicemaywebdesign.com.au", true },
{ "alicestudio.it", true },
{ "alicetone.net", true },
- { "alicialab.org", true },
- { "alien.bz", true },
{ "alienation.biz", true },
{ "alienflight.com", true },
{ "alienslab.net", true },
@@ -2063,7 +2062,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alignrs.com", true },
{ "aliim.gdn", true },
{ "alijammusic.com", true },
- { "alikulov.me", true },
{ "alinasmusicstudio.com", true },
{ "alinode.com", true },
{ "alisonisrealestate.com", true },
@@ -2077,11 +2075,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aljaspod.hu", true },
{ "aljaspod.net", true },
{ "aljweb.com", true },
- { "alkel.info", true },
{ "all-connect.net", false },
{ "all-markup-news.com", true },
{ "all4hardware4u.de", true },
- { "allaboutbelgaum.com", false },
{ "allaboutfunuk.com", true },
{ "allaboutswing.co.uk", true },
{ "allaboutswing.com", true },
@@ -2122,12 +2118,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "allinone-ranking150.com", true },
{ "allis.studio", true },
{ "alljamin.com", true },
- { "allladyboys.com", true },
{ "allmebel.ru", true },
{ "allmend-ru.de", true },
{ "allns.fr", true },
{ "allo-credit.ch", true },
- { "allo-symo.fr", true },
{ "allontanamentovolatili.it", true },
{ "allontanamentovolatili.milano.it", true },
{ "alloverthehill.com", true },
@@ -2135,9 +2129,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "allplayer.tk", true },
{ "allpointsblog.com", true },
{ "allproptonline.com", true },
- { "allroundpvp.net", true },
+ { "allsaints.church", true },
{ "allsearch.io", true },
- { "allseasons-cleaning.co.uk", true },
{ "allshousedesigns.com", true },
{ "allstakesupply.com.au", true },
{ "allstarautokiaparts.com", true },
@@ -2145,6 +2138,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "allstarquilts.com", true },
{ "allsync.com", true },
{ "allsync.nl", true },
+ { "allteach.co.uk", true },
{ "allthecryptonews.com", true },
{ "allthethings.co.nz", true },
{ "allthings.me", true },
@@ -2159,6 +2153,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aloesoluciones.com.ar", true },
{ "alohapartyevents.co.uk", true },
{ "alonetone.com", true },
+ { "alorenzi.eu", true },
{ "alp.od.ua", true },
{ "alpca.org", true },
{ "alpe-d-or.dyn-o-saur.com", true },
@@ -2177,9 +2172,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alphabouncycastles.co.uk", true },
{ "alphabrock.cn", true },
{ "alphachat.net", true },
+ { "alphadote.com", true },
{ "alphaetomega3d.fr", true },
{ "alphafiduciaryservices.ch", true },
{ "alphafitnesslibya.com", true },
+ { "alphagateanddoor.com", true },
{ "alphainflatablehire.com", true },
{ "alphapengu.in", true },
{ "alpharotary.com", true },
@@ -2197,7 +2194,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alpinestarmassage.com", true },
{ "alpinetrek.co.uk", true },
{ "alpiniste.fr", true },
- { "alqassam.net", true },
{ "alquiaga.com", true },
{ "alrait.com", true },
{ "alroniks.com", true },
@@ -2206,11 +2202,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alt-three.com", true },
{ "alt.org", true },
{ "altaplana.be", true },
- { "altbinaries.com", true },
{ "altedirect.com", true },
{ "alter-news.fr", true },
{ "alterbaum.net", true },
- { "altered.network", true },
{ "alternador.com.br", true },
{ "alternative.bike", true },
{ "alternativebit.fr", true },
@@ -2224,7 +2218,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "altmaestrat.es", true },
{ "altoa.cz", true },
{ "altonblom.com", true },
- { "altoneum.com", true },
{ "altopartners.com", true },
{ "altopia.com", true },
{ "altphotos.com", true },
@@ -2234,7 +2227,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "alttrackr.com", true },
{ "altunbas.info", true },
{ "alumni-kusa.jp", true },
- { "aluoblog.pw", true },
{ "alupferd.de", true },
{ "aluroof.eu", true },
{ "alvcs.com", true },
@@ -2260,8 +2252,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "am2s.fr", true },
{ "am3.se", true },
{ "ama.ne.jp", true },
- { "amadilo.de", false },
- { "amadoraslindas.com", true },
{ "amadvice.com", true },
{ "amaforro.com", true },
{ "amagdic.com", true },
@@ -2275,9 +2265,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "amandasage.ca", true },
{ "amani-kinderdorf.de", true },
{ "amaresq.com", true },
- { "amartinz.at", true },
- { "amateri.com", true },
{ "amateurvoicetalent.com", true },
+ { "amati.solutions", true },
{ "amato.tk", true },
{ "amatsuka.com", true },
{ "amauf.de", true },
@@ -2308,9 +2297,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "amees.me", false },
{ "amelandadventure.nl", true },
{ "amello.de", true },
+ { "amend-friseur-schwabing.de", true },
{ "america.gov", true },
{ "americafamilylawcenter.org", true },
{ "american.dating", true },
+ { "americandetour.com", true },
{ "americanfoundationbr.com", true },
{ "americanmediainstitute.com", true },
{ "americasbasementcontractor.com", true },
@@ -2323,11 +2314,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "amesgen.de", true },
{ "amesvacuumrepair.com", true },
{ "amethystdevelopment.co.uk", true },
- { "ameza.co.uk", true },
- { "ameza.com.mx", true },
- { "ameza.io", true },
- { "ameza.me", true },
- { "ameza.net", true },
{ "amf.to", true },
{ "amg-exterieur.fr", true },
{ "amg-microwave.com", true },
@@ -2336,16 +2322,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "amicalecanyon.ch", true },
{ "amiciidogrescue.org.uk", true },
{ "amielucha.com", true },
+ { "amifoundation.net", true },
{ "amikootours.com", true },
- { "amin.ga", true },
- { "amin.one", true },
{ "aminafrance.com", true },
{ "amineptine.com", true },
+ { "aminorth.com", true },
{ "amirautos.com", true },
{ "amirmahdy.com", true },
{ "amisderodin.fr", true },
{ "amisharingstuff.com", true },
+ { "amitabhsirkiclasses.org.in", true },
{ "amitpatra.com", true },
+ { "amiu.org", true },
{ "ammanagingdirectors.com", true },
{ "amministratore.biz", true },
{ "amministratore.roma.it", true },
@@ -2376,16 +2364,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "amzn.rocks", true },
{ "anacreon.de", true },
{ "anadiyogacentre.com", true },
- { "anadoluefessk.org", true },
{ "anaethelion.fr", true },
{ "anaiscoachpersonal.es", true },
+ { "anaisypirueta.es", true },
{ "anajianu.ro", true },
- { "analangelsteen.com", true },
{ "analbleachingguide.com", true },
{ "analgesia.net", true },
{ "analisilaica.it", true },
{ "analogist.net", true },
- { "analteengirls.net", true },
{ "analyticsinmotion.com", true },
{ "analyticum.at", true },
{ "analyticum.com", true },
@@ -2400,7 +2386,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "anarchistischegroepnijmegen.nl", false },
{ "anassiriphotography.com", false },
{ "anastasia-shamara.ru", true },
- { "anastasiafond.com", true },
{ "ancestramil.fr", true },
{ "anchev.net", true },
{ "anchovy.nz", false },
@@ -2422,31 +2407,36 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "andiscyber.space", true },
{ "anditi.com", true },
{ "andoms.fi", true },
+ { "andre-ballensiefen.de", true },
{ "andre-lategan.com", true },
{ "andre-otto.com", true },
{ "andrea-kiaora.de", true },
{ "andrea-m.me", true },
{ "andrea-wirthensohn.at", true },
{ "andreaboero.it", true },
+ { "andreadraghetti.it", true },
{ "andreagourmet.it", true },
{ "andreahruby.it", true },
{ "andreamcnett.com", true },
- { "andreasbasurto.com", true },
+ { "andreas-hecht.com", true },
{ "andreaseracleous.com", true },
{ "andreasfeusi.ch", true },
+ { "andreashecht-blog.de", true },
{ "andreaskrasa.com", true },
{ "andreaslicht.nl", true },
{ "andreasolsson.se", true },
{ "andreasr.com", true },
+ { "andree.cloud", true },
{ "andrefaber.nl", true },
{ "andrehansen.de", true },
+ { "andrei-nakov.org", true },
{ "andrejbenz.com", true },
{ "andreoliveira.io", true },
{ "andrepicard.de", true },
{ "andrespaz.com", true },
{ "andreundnina.de", true },
+ { "andrew.london", true },
{ "andrewbdesign.com", true },
- { "andrewdavidwong.com", true },
{ "andrewdaws.io", true },
{ "andrewensley.com", true },
{ "andrewhowden.com", true },
@@ -2460,6 +2450,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "andrewryno.com", true },
{ "andrewsun.com", true },
{ "andrewtchin.com", true },
+ { "andrewx.net", true },
{ "andrezadnik.com", true },
{ "andro2id.com", true },
{ "andro4all.com", true },
@@ -2492,6 +2483,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "anedot.com", true },
{ "anedot.space", true },
{ "anedot.xyz", true },
+ { "aneebahmed.com", true },
{ "anegabawa.com", true },
{ "anetaben.nl", true },
{ "anextraordinaryday.net", true },
@@ -2499,7 +2491,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "angehardy.com", true },
{ "angel-body.com", true },
{ "angelesydemonios.es", true },
- { "angelicare.co.uk", true },
{ "angelinahair.com", true },
{ "angelremigene.com", true },
{ "angelsgirl.eu.org", true },
@@ -2514,10 +2505,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "angrapa.ru", true },
{ "angristan.fr", true },
{ "angristan.xyz", true },
- { "angrut.com", true },
{ "angry.im", true },
{ "angrysnarl.com", true },
- { "angryteeth.net", true },
+ { "angryteeth.net", false },
{ "anguiao.com", true },
{ "angularjs.org", false },
{ "angusmak.com", true },
@@ -2529,10 +2519,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "animacurse.moe", true },
{ "animaemundi.be", true },
{ "animal-liberation.com", true },
+ { "animal-nature-human.com", true },
{ "animal-rights.com", true },
{ "animalistic.io", true },
{ "animaltesting.fr", true },
{ "animan.ca", true },
+ { "animatelluris.nl", true },
{ "animationsmusicales.ch", true },
{ "anime-culture.com", true },
{ "anime-rg.com", true },
@@ -2541,17 +2533,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "anime1.me", true },
{ "anime1.moe", true },
{ "anime1.pw", true },
- { "anime1.top", true },
{ "animeai.com", true },
{ "animefluxxx.com", true },
+ { "animeinsights.net", true },
{ "animesharp.com", true },
{ "animetriad.com", true },
{ "animojis.es", true },
- { "animorphsfanforum.com", true },
{ "anipassion.com", true },
{ "anitaalbersen.nl", true },
{ "anitube.ch", true },
{ "aniwhen.com", true },
+ { "anjoola.com", true },
{ "ankarakart.com.tr", true },
{ "ankaraprofesyonelwebtasarim.com", true },
{ "ankarauzmanlarnakliyat.com", true },
@@ -2595,18 +2587,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "anojan.com", true },
{ "anon-next.de", true },
{ "anoncom.net", true },
- { "anoneko.com", true },
{ "anongoth.pl", true },
- { "anonrea.ch", true },
{ "anons.fr", true },
{ "anonukradio.org", true },
- { "anonym-surfen.de", true },
{ "anonyme-spieler.at", true },
{ "anorak.tech", true },
{ "another.ch", true },
{ "anotherchef.com", true },
{ "anotherfatgeek.net", true },
{ "anowicki.pl", false },
+ { "anoxinon.de", false },
{ "ans-delft.nl", true },
{ "ans-ge.ch", true },
{ "ansas.eu", true },
@@ -2615,6 +2605,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ansermet.net", true },
{ "ansgar-sonntag.de", true },
{ "ansgarsonntag.de", true },
+ { "anshar.eu", true },
+ { "ansibeast.net", true },
{ "ansichtssache.at", true },
{ "ansogning-sg.dk", true },
{ "anstaskforce.gov", true },
@@ -2625,7 +2617,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "antarees.net", true },
{ "antarespc.com", true },
{ "antcas.com", true },
- { "antecim.fr", true },
{ "antennista.catania.it", true },
{ "antennista.milano.it", true },
{ "antennista.pavia.it", true },
@@ -2635,17 +2626,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "anteprima.info", true },
{ "anthedesign.fr", true },
{ "anthisis.tv", true },
- { "anthony-rouanet.com", true },
{ "anthony.codes", true },
{ "anthonyaires.com", true },
{ "anthonycarbonaro.com", true },
{ "anthonygaidot.fr", true },
+ { "anthonyvadala.me", true },
{ "anthropoid.ca", true },
{ "anti-bible.com", true },
{ "anti-radar.org", true },
{ "antibioticshome.com", true },
{ "anticopyright.com", true },
- { "antifraud.net.ru", true },
+ { "antiekboerderijgraafland.nl", true },
{ "antihype.space", true },
{ "antik-trodelmarkt.de", true },
{ "antikvariat.ru", true },
@@ -2654,7 +2645,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "antimine.me", true },
{ "antipolygraph.org", true },
{ "antique-pedalcars.ch", true },
- { "antirayapmalang.com", true },
{ "antirepressionbayarea.com", true },
{ "antispeciesism.com", true },
{ "antispeciesist.com", true },
@@ -2690,9 +2680,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "anzeiger.ag", true },
{ "ao-dev.com", true },
{ "ao2.it", true },
+ { "aoadatacommunity.us", true },
{ "aoaprograms.net", true },
+ { "aofusa.net", true },
{ "aoku3d.com", true },
- { "aomonk.com", true },
{ "aopedeure.nl", true },
{ "aopsy.de", true },
{ "aosc.io", false },
@@ -2700,6 +2691,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aotearoa.maori.nz", true },
{ "aotearoaleaks.org", true },
{ "ap-swiss.ch", true },
+ { "apac-tech.com", false },
{ "apache-portal.com", true },
{ "apachehaus.de", false },
{ "apadvantage.com", true },
@@ -2715,7 +2707,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "apdx.com", true },
{ "apef.ch", true },
{ "apercloud.es", true },
- { "aperim.com", true },
{ "apertis.org", true },
{ "aperturesciencelabs.de", true },
{ "apervita.net", true },
@@ -2744,11 +2735,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "apiled.io", true },
{ "apination.com", true },
{ "apio.systems", true },
- { "apis.blue", true },
{ "apis.google.com", true },
{ "apis.moe", true },
{ "apisyouwonthate.com", true },
- { "apivia.fr", true },
{ "apk.li", true },
{ "apk4fun.com", true },
{ "aplikaceproandroid.cz", true },
@@ -2758,7 +2747,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "apmpproject.org", true },
{ "apn-dz.org", true },
{ "apn-einstellungen.de", true },
+ { "apo-deutschland.biz", true },
{ "apobot.de", true },
+ { "apogeephoto.com", true },
{ "apoil.org", true },
{ "apollyon.work", true },
{ "apoly.de", true },
@@ -2767,6 +2758,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aposke.com", true },
{ "aposke.net", true },
{ "aposke.org", true },
+ { "apostilasaprovacao.com", true },
{ "apotheek-nl.org", true },
{ "apotheke-ch.org", true },
{ "apothes.is", true },
@@ -2801,18 +2793,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "applesencia.com", true },
{ "applewatch.co.nz", true },
{ "applian.jp", true },
- { "appliancerepairlosangeles.com", true },
{ "applicationmanager.gov", true },
{ "apply.eu", true },
- { "apply55gx.com", true },
{ "appmeas.co.uk", true },
{ "appmobile.io", true },
{ "appninjas.com", true },
{ "apponic.com", true },
{ "apponline.com", true },
{ "apprank.in", true },
- { "apprenticeship.gov", true },
- { "apprenticeships.gov", true },
{ "approbo.com", true },
{ "approvedtreecare.com", true },
{ "apps.co", true },
@@ -2829,7 +2817,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "appuals.com", true },
{ "appui-de-fenetre.fr", true },
{ "appveyor.com", true },
- { "appxcrypto.com", true },
{ "appzoojoo.be", true },
{ "apratimsaha.com", true },
{ "aprefix.com", true },
@@ -2841,9 +2828,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aprr.org", true },
{ "aprsdroid.org", true },
{ "aprz.de", true },
+ { "apsa.paris", true },
{ "apstudynotes.org", true },
{ "apu-board.de", true },
{ "apv-ollon.ch", true },
+ { "aqilacademy.com.au", true },
{ "aqsiq.net", true },
{ "aqua-fitness-nacht.de", true },
{ "aqua-fotowelt.de", true },
@@ -2851,6 +2840,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aquabio.ch", true },
{ "aquadonis.ch", true },
{ "aquahomo.com", true },
+ { "aquainfo.net", true },
{ "aqualife.com.gr", true },
{ "aqualifeprojects.com", true },
{ "aqualysis.nl", true },
@@ -2859,14 +2849,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aquaron.com", true },
{ "aquaselect.eu", true },
{ "aquatechnologygroup.com", true },
- { "aquaundine.net", true },
{ "aquavitaedayspa.com.au", true },
+ { "aquelarreweb.com", true },
{ "aquila.co.uk", true },
{ "aquitainebrasserie.com.au", true },
{ "aquitroc.com", true },
{ "ar-informatique.ch", true },
{ "arab.dating", true },
- { "arabsexi.info", true },
+ { "arabicxz.com", true },
{ "arachina.com", true },
{ "arados.de", true },
{ "arai21.net", true },
@@ -2880,6 +2870,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "araseifudousan.com", true },
{ "arawaza.biz", true },
{ "arawaza.com", false },
+ { "arawaza.info", true },
{ "araxis.com", true },
{ "arbeitskreis-asyl-eningen.de", true },
{ "arbeitslosenverwaltung.de", true },
@@ -2898,9 +2889,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "archivesdelavieordinaire.ch", true },
{ "archlinux.de", true },
{ "archlinux.org", true },
+ { "arclandholdings.com.au", true },
{ "arcobalabs.ca", true },
{ "arcridge.ca", true },
{ "arctic.gov", true },
+ { "arctica.io", true },
{ "arcueil-cachan.fr", false },
{ "arcusnova.de", true },
{ "arda-audio.pt", true },
@@ -2911,10 +2904,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "areaclienti.net", true },
{ "areafiftylan.nl", true },
{ "areatrend.com", true },
+ { "arefidgetspinnersgay.com", true },
{ "arekatieandchrisgettingmarried.com", true },
{ "arekatieandchrisgettingmarried.today", true },
{ "arekatieandchrismarriedyet.com", true },
{ "arendburgers.nl", true },
+ { "arenlor.com", true },
+ { "arenlor.info", true },
+ { "arenns.com", true },
{ "areqgaming.com", true },
{ "ares-trading.de", true },
{ "arethsu.se", true },
@@ -2924,9 +2921,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "argb.de", true },
{ "argekultur.at", true },
{ "argot.com", true },
+ { "argovpay.com", true },
{ "ariaartgallery.com", true },
{ "ariadermspa.com", true },
{ "arian.io", true },
+ { "arias.re", true },
{ "ariba.info", true },
{ "ariege-pyrenees.net", true },
{ "arieswdd.com", true },
@@ -2943,6 +2942,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aristocratps.com", true },
{ "aritec-la.com", true },
{ "arivo.com.br", true },
+ { "arizer.com", true },
{ "arizonaautomobileclub.com", true },
{ "arjandejong.eu", true },
{ "arjanvaartjes.net", true },
@@ -2957,13 +2957,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "arlen.tv", true },
{ "arlenarmageddon.com", true },
{ "arlet.click", true },
- { "arlingtonwine.net", true },
- { "arm-host.com", true },
{ "armadaquadrat.com", true },
{ "armandsdiscount.com", true },
{ "armansfinejewellery.com", true },
{ "armansfinejewellery.com.au", true },
{ "armarinhovirtual.com.br", true },
+ { "armbrust.me", true },
{ "armedpoet.com", true },
{ "armeni-jewellery.gr", true },
{ "armil.it", true },
@@ -2977,6 +2976,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "arnaudb.net", true },
{ "arnaudfeld.de", true },
{ "arnaudminable.net", true },
+ { "arnevankauter.com", true },
{ "arniescastles.co.uk", true },
{ "arno-klein.de", true },
{ "arno-klein.eu", true },
@@ -2994,16 +2994,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aromacos.ch", true },
{ "aron.host", true },
{ "aroonchande.com", true },
+ { "aros.pl", true },
+ { "arose.io", true },
{ "arox.eu", true },
+ { "arpamip.org", true },
+ { "arpnet.co.jp", true },
{ "arqueo-ecuatoriana.ec", true },
{ "arquitetura.pt", true },
{ "arrakis.se", true },
+ { "arrazane.com.br", true },
+ { "arresttracker.com", true },
{ "arrive.by", true },
{ "arrmaforum.com", true },
{ "arrow-analytics.nl", true },
{ "arrow-api.nl", true },
{ "arrowfastener.com", true },
{ "arrowheadaddict.com", true },
+ { "arrowheadflats.com", true },
{ "arrowwebprojects.nl", true },
{ "arschkrebs.org", true },
{ "arswb.men", true },
@@ -3035,11 +3042,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "arthermitage.org", true },
{ "arthur.cn", true },
{ "arthurlaw.ca", true },
- { "artificial.army", true },
{ "artik.cloud", true },
{ "artimpact.ch", true },
{ "artioml.net", true },
{ "artionet.ch", true },
+ { "artisan-cheminees-poeles-design.fr", true },
{ "artisans-libres.com", true },
{ "artisansoftaste.com", true },
{ "artistagenda.com", true },
@@ -3054,7 +3061,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "artmarketingnews.com", true },
{ "artmaxi.eu", true },
{ "artmoney.com", true },
- { "artnims.com", true },
{ "artofmonitoring.com", false },
{ "artofwhere.com", true },
{ "artratio.net", true },
@@ -3063,7 +3069,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "arts.gov", true },
{ "artschmidtoptical.com", true },
{ "artspac.es", true },
- { "artstopinc.com", true },
+ { "arturkohut.com", true },
{ "arturrossa.de", true },
{ "arturszalak.com", true },
{ "artweby.cz", true },
@@ -3091,15 +3097,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "asanger.biz", true },
{ "asato-jewelry.com", true },
{ "asbito.de", true },
+ { "ascamso.com", true },
{ "ascendprime.com", true },
{ "ascension.run", true },
{ "ascensori.biz", true },
{ "ascgathering.com", true },
+ { "ascii.moe", true },
{ "asciiwwdc.com", true },
{ "asd.gov.au", true },
{ "asdyx.de", true },
{ "asec01.net", true },
{ "aseith.com", true },
+ { "aseko.gr", true },
{ "asenno.com", true },
{ "aserver.co", true },
{ "asexualitat.cat", true },
@@ -3108,8 +3117,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ashd1.goip.de", true },
{ "ashd2.goip.de", true },
{ "ashd3.goip.de", true },
+ { "ashleyedisonuk.com", true },
{ "ashlocklawgroup.com", true },
{ "ashmportfolio.com", true },
+ { "ashutoshmishra.org", true },
{ "asia-gazette.com", true },
{ "asia-global-risk.com", true },
{ "asia.dating", true },
@@ -3120,11 +3131,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "asianshops.net", true },
{ "asianspa.co.uk", true },
{ "asiba.com.au", true },
- { "asiesvenezuela.com", true },
{ "asile-colis.fr", true },
{ "asinetasima.com", true },
{ "asisee.photography", true },
- { "ask.pe", true },
{ "ask1.org", true },
{ "askcaisse.com", true },
{ "askizzy.org.au", true },
@@ -3137,7 +3146,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aslinfinity.com", true },
{ "asmbsurvey.com", true },
{ "asmdz.com", true },
- { "asmik-armenie.com", true },
+ { "asmm.cc", true },
{ "asmood.net", true },
{ "asoul.tw", true },
{ "aspargesgaarden.no", true },
@@ -3183,8 +3192,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "astral.org.pl", true },
{ "astrology42.com", true },
{ "astroscopy.ch", true },
- { "astrosnail.pt.eu.org", true },
{ "astrovandalistas.cc", true },
+ { "astural.org", true },
{ "astutikhonda.com", true },
{ "asuclassfinder.com", true },
{ "asucrews.com", true },
@@ -3199,7 +3208,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "at.search.yahoo.com", false },
{ "atac.no", true },
{ "atacadocervejeiro.com.br", true },
- { "atacadodesandalias.com.br", true },
{ "ataton.ch", true },
{ "atc.io", true },
{ "atchleyjazz.com", true },
@@ -3218,11 +3226,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "atelierdefrancais.ch", true },
{ "atelierdeloulou.fr", true },
{ "atelierdesflammesnoires.fr", true },
+ { "atelierfantazie.sk", true },
{ "atelierhupsakee.nl", true },
{ "ateliernaruby.cz", true },
{ "ateliers-veronese-nantes.fr", true },
{ "atelierssud.ch", true },
{ "atelierssud.swiss", true },
+ { "atencionbimbo.com", false },
{ "atendimentodelta.com.br", true },
{ "atg.soy", true },
{ "atgoetschel.ch", true },
@@ -3257,7 +3267,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "atlantischild.hu", true },
{ "atlantishq.de", true },
{ "atlantiswaterproofing.com", true },
- { "atlas.co", true },
{ "atlaschiropractic.org", true },
{ "atlascultural.com", true },
{ "atlasdev.nl", true },
@@ -3282,7 +3291,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "atpnutrition.com", true },
{ "atraining.ru", true },
{ "atraverscugy.ch", true },
- { "atrevillot.com", true },
{ "atrinik.org", true },
{ "atsoftware.de", true },
{ "attac.us", true },
@@ -3290,6 +3298,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "attendantdesign.com", true },
{ "attendu.cz", true },
{ "attention.horse", true },
+ { "attilagyorffy.com", true },
{ "attilavandervelde.nl", true },
{ "attinderdhillon.com", true },
{ "attitudes-bureaux.fr", true },
@@ -3299,6 +3308,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "atulhost.com", true },
{ "atviras.lt", false },
{ "atwonline.org", true },
+ { "atyourprice.net", true },
{ "atypicom.es", true },
{ "atypicom.fr", true },
{ "atypicom.it", true },
@@ -3332,11 +3342,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "audisto.com", true },
{ "auditmatrix.com", true },
{ "auditos.com", true },
+ { "audits.io", true },
{ "auditsquare.com", true },
{ "auerbach-verlag.de", true },
{ "auf-feindgebiet.de", true },
- { "aufprise.de", true },
- { "augaware.org", true },
{ "augen-seite.de", true },
{ "augiero.it", true },
{ "augmentable.de", true },
@@ -3364,19 +3373,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "auroraassociationofrealtors.com", true },
{ "aurosa.cz", true },
{ "auroware.com", true },
+ { "auroz.tech", true },
+ { "auroz.video", true },
{ "aus-ryugaku.info", true },
{ "ausmwoid.de", true },
+ { "ausschreibungen-suedtirol.it", true },
{ "aussiefunadvisor.com", true },
{ "aussieservicedown.com", true },
{ "aussiestoresonline.com", true },
{ "austin-pearce.com", true },
{ "austin-security-cameras.com", true },
{ "austincardiac.com", true },
- { "austinheap.com", true },
+ { "austinheap.com", false },
+ { "austinlockout.com", true },
+ { "austintxacrepairtoday.com", true },
+ { "austintxlocksmiths.com", true },
{ "austinuniversityhouse.com", true },
{ "australian.dating", true },
{ "australianarmedforces.org", true },
- { "australianimmigrationadvisors.com.au", true },
{ "australien-tipps.info", true },
{ "austromorph.space", true },
{ "auszeit-lanzarote.com", true },
@@ -3387,9 +3401,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "authinity.com", true },
{ "author24.biz", true },
{ "authoritysolutions.com", true },
- { "authorsguild.in", true },
{ "autimatisering.nl", true },
- { "autism-osaka.org", true },
{ "auto-anleitung.de", true },
{ "auto-motor-i-sport.pl", true },
{ "auto-plus.tn", true },
@@ -3397,6 +3409,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "auto.nl", true },
{ "autoauctionsohio.com", true },
{ "autoauctionsvirginia.com", true },
+ { "autobahnco.com", true },
{ "autobedrijfgarant.nl", true },
{ "autobelle.it", true },
{ "autobourcier.com", true },
@@ -3407,6 +3420,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "autocrypt.org", true },
{ "autod.hu", true },
{ "autodalmacija.com", true },
+ { "autodidactic.ai", true },
+ { "autodidacticstudios.com", true },
+ { "autodidacticstudios.net", true },
+ { "autodidacticstudios.org", true },
{ "autoentrepreneurinfo.com", true },
{ "autoepc.ro", true },
{ "autoinsurancehavasu.com", true },
@@ -3428,6 +3445,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "autorando.com", true },
{ "autoschadeschreuder.nl", true },
{ "autoscuola.roma.it", true },
+ { "autosecurityfinance.com", true },
{ "autoshinka72.ru", true },
{ "autoshopsolutions.com", true },
{ "autoshun.org", true },
@@ -3440,12 +3458,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "autoterminus-used.be", true },
{ "autoverzekeringafsluiten.com", true },
{ "autowerkstatt-puchheim.de", true },
+ { "autozane.com", true },
{ "autres-talents.fr", true },
{ "auux.com", true },
+ { "auvernet.org", true },
{ "aux-arts-de-la-table.com", true },
{ "auxquatrevents.ch", true },
{ "av-yummy.com", true },
- { "av01.tv", true },
{ "av0ndale.de", true },
{ "ava-creative.de", false },
{ "ava-software.at", true },
@@ -3453,6 +3472,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "avabouncehire.co.uk", true },
{ "avacariu.me", true },
{ "availablecastles.com", true },
+ { "avalon-island.ru", true },
{ "avalon-rpg.com", true },
{ "avalon-studios.de", true },
{ "avanet.ch", true },
@@ -3481,12 +3501,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aviapoisk.kz", true },
{ "aviationstrategy.aero", true },
{ "avid.blue", true },
+ { "avidmode-dev.com", true },
+ { "avidmode-staging.com", true },
+ { "avidmode.com", true },
{ "avietech.com", true },
- { "avitres.com", true },
{ "aviv.nyc", true },
{ "avlhostel.com", true },
- { "avmemo.com", true },
- { "avmoo.com", true },
{ "avnet.ws", true },
{ "avocadooo.stream", true },
{ "avocatbeziau.com", true },
@@ -3508,7 +3528,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "awaresec.no", true },
{ "awaro.net", true },
{ "awbouncycastlehire.com", true },
- { "awccanadianpharmacy.com", true },
{ "awen.me", true },
{ "awesomebouncycastles.co.uk", true },
{ "awesomesit.es", true },
@@ -3522,7 +3541,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "awsome-books.co.uk", true },
{ "awxg.com", true },
{ "ax25.org", true },
- { "axa-middleeast.com", true },
{ "axchap.ir", true },
{ "axelname.ru", true },
{ "axelteichmann.net", true },
@@ -3532,12 +3550,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "axiomer.me", true },
{ "axiomer.net", true },
{ "axiomer.org", true },
+ { "axis-stralis.co.uk", true },
+ { "axisfleetmanagement.co.uk", true },
{ "axka.com", false },
- { "axolotlfarm.org", true },
{ "axonholdingse.eu", true },
{ "axrec.de", true },
- { "axtudo.com", true },
- { "axtux.tk", true },
{ "ayanomimi.com", true },
{ "aycomba.de", true },
{ "ayesh.me", true },
@@ -3545,19 +3562,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aykutcevik.com", true },
{ "aylak.com", true },
{ "aylesburycastlehire.co.uk", true },
- { "aymericlagier.com", true },
+ { "aymerick.fr", true },
{ "ayon.group", true },
{ "ayothemes.com", true },
{ "ayrohq.com", true },
{ "ayrshirebouncycastlehire.co.uk", true },
{ "ayumindev.net", true },
{ "ayurveda-mantry.com", true },
+ { "az-moga.bg", true },
{ "az.search.yahoo.com", false },
+ { "azabani.com", true },
{ "azadliq.info", true },
{ "azazy.net", false },
{ "azgfd.com", true },
- { "azia.info", true },
{ "azimut.fr", true },
+ { "azizfirat.com", true },
{ "azlk-team.ru", true },
{ "azort.com", true },
{ "azrazalea.net", true },
@@ -3566,12 +3585,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "aztrix.me", true },
{ "azu-l.com", true },
{ "azu-l.jp", true },
- { "azun.pl", true },
- { "azuxul.fr", true },
+ { "azuki.cloud", true },
+ { "azurecrimson.com", true },
+ { "azuriasky.com", true },
+ { "azuriasky.net", true },
{ "azzag.co.uk", true },
{ "azzorti.com", true },
{ "azzurrapelletterie.it", true },
{ "b-b-law.com", true },
+ { "b-boom.nl", true },
{ "b-cyclesshop.ch", true },
{ "b-f-s.pl", true },
{ "b-freerobux.ga", true },
@@ -3595,7 +3617,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "b1rd.tk", true },
{ "b2486.com", true },
{ "b2486.net", true },
- { "b2and.com", false },
{ "b2bmuzikbank.com", true },
{ "b303.me", true },
{ "b422edu.com", true },
@@ -3609,7 +3630,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "b5289.net", true },
{ "b5989.com", true },
{ "b5989.net", true },
- { "b61688.com", true },
{ "b64.club", true },
{ "b72.com", true },
{ "b72.net", true },
@@ -3676,7 +3696,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "b9883.net", true },
{ "b9884.net", true },
{ "b9885.net", true },
- { "b9886.com", true },
{ "b9886.net", true },
{ "b9887.net", true },
{ "b9888.net", true },
@@ -3684,12 +3703,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "b9920.com", true },
{ "b9948.com", true },
{ "b9948.net", true },
- { "b99520.com", true },
{ "b9960.com", true },
- { "b99881.com", true },
- { "b99882.com", true },
- { "b99883.com", true },
- { "b99885.com", true },
{ "b99886.com", true },
{ "b9best.cc", true },
{ "b9best.net", true },
@@ -3705,18 +3719,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "babarkata.com", true },
{ "babeleo.com", true },
{ "baby-digne.com", true },
+ { "baby-fotografie-muenchen.de", true },
+ { "babybauch-shooting-muenchen.de", true },
{ "babyboom.pl", true },
{ "babycamapp.com", true },
{ "babyfotograf-schweiz.ch", true },
{ "babymasaze.cz", true },
{ "babyphototime.com", true },
{ "babypibu.com", true },
+ { "babyshoprimini.com", true },
{ "bacgrouppublishing.com", true },
{ "bachata.info", true },
{ "baches-piscines.com", true },
{ "baciu.ch", true },
{ "backeby.eu", true },
- { "backlogapp.io", true },
{ "backmountaingas.com", true },
{ "backpacken.org", true },
{ "backpacker.dating", true },
@@ -3727,11 +3743,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "backterris.com", true },
{ "backtest.org", true },
{ "backupcloud.ru", true },
- { "backupsinop.com.br", true },
{ "bacon-monitoring.org", true },
{ "baconismagic.ca", true },
{ "bacontreeconsulting.com", true },
{ "bacoux.com", true },
+ { "bacsituvansuckhoe.com", true },
{ "bacula.jp", true },
{ "bad.horse", true },
{ "bad.pet", true },
@@ -3740,14 +3756,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "badblock.fr", true },
{ "badboyzclub.de", true },
{ "badf00d.de", true },
+ { "badgersystems.de", true },
{ "badges.fedoraproject.org", true },
{ "badges.stg.fedoraproject.org", true },
{ "badgesenpatches.nl", true },
- { "badgirlsbible.com", true },
{ "badhusky.com", true },
{ "badmania.fr", true },
{ "badmintonbible.com", true },
{ "badoo.com", true },
+ { "badoo.de", true },
+ { "badoo.eu", true },
+ { "badoo.us", true },
{ "badpackets.net", true },
{ "badrequest.me", true },
{ "badseacoffee.com", true },
@@ -3768,8 +3787,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bagstage.de", true },
{ "bah.im", false },
{ "bahnbonus-praemienwelt.de", true },
+ { "bahnenimbild.de", true },
+ { "bahnenimbild.eu", true },
{ "bahnhelden.de", true },
{ "bahninrotweissrot.at", true },
+ { "bahnmagazine.de", true },
+ { "baiduo.com", true },
{ "baifubao.com", true },
{ "baiker.info", true },
{ "bailakomigo.com.br", true },
@@ -3800,63 +3823,62 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "balconnr.com", true },
{ "balconsverdun.com", true },
{ "baldur.cc", true },
- { "balenciaspa.com", true },
{ "balia.de", true },
{ "balicekzdravi.cz", true },
+ { "balidesignshop.com.br", true },
{ "balikonos.cz", true },
- { "balilingo.ooo", true },
{ "balinese.dating", true },
{ "balist.es", true },
{ "balivillassanur.com", true },
{ "balkonien.org", true },
{ "ball.holdings", true },
+ { "ball3d.es", true },
{ "ballarin.cc", true },
- { "ballbusting-cbt.com", true },
{ "ballejaune.com", true },
{ "ballinarsl.com.au", true },
+ { "ballitolocksmith.com", true },
{ "ballmerpeak.org", true },
{ "ballonsportclub-erlangen.de", true },
{ "ballotapi.com", true },
{ "ballothero.com", true },
+ { "ballparkbuns.com", false },
{ "ballroom.info", true },
{ "balslev.io", true },
- { "balticer.de", true },
{ "balticnetworks.com", true },
{ "bamahammer.com", true },
{ "bambooforest.nl", true },
{ "bamboorelay.com", true },
{ "bambumania.com.br", true },
+ { "bamily.rocks", true },
+ { "bananavapes.com", true },
{ "banburybid.com", true },
{ "bancacrs.it", true },
{ "bancaolhares.com.br", true },
{ "bancobai.ao", true },
{ "bancoctt.pt", true },
- { "bandar303.id", true },
- { "bandar303.win", true },
{ "bandeira1.com.br", true },
{ "bandgap.io", true },
{ "bandiga.it", true },
{ "bandito.re", true },
{ "banes.ch", true },
- { "bangdream.ga", true },
{ "bangkok-dark-night.com", true },
{ "bangkok.dating", true },
{ "bangkokcity.de", true },
- { "bangorfederal.com", true },
+ { "bangorfederal.com", false },
{ "bangumi.co", true },
+ { "banham.co.uk", true },
+ { "banham.com", true },
{ "bank.simple.com", false },
{ "bankbranchlocator.com", true },
{ "bankcardoffer.com", true },
{ "bankee.us", true },
{ "bankerbuch.de", true },
- { "bankersonline.com", true },
{ "banketbesteld.nl", true },
{ "bankfreeoffers.com", true },
{ "bankgradesecurity.com", true },
{ "bankin.com", true },
{ "bankinter.pt", true },
{ "bankio.se", true },
- { "bankitt.network", true },
{ "banknet.gov", true },
{ "bankofdenton.com", true },
{ "banksiaparkcottages.com.au", true },
@@ -3868,14 +3890,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "banoviny.sk", true },
{ "banquevanbreda.be", true },
{ "banter.city", true },
- { "banxehoi.com", true },
{ "bao-in.com", true },
{ "bao-in.net", true },
{ "baobeiglass.com", true },
{ "baodan666.com", true },
{ "baofengtech.com", true },
{ "baopublishing.it", true },
- { "baptistboard.com", true },
{ "baptistedeleris.fr", true },
{ "bar-harcourt.com", true },
{ "barabrume.fr", true },
@@ -3885,25 +3905,27 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "barbarians.com", false },
{ "barbaros.info", true },
{ "barbate.fr", true },
+ { "barbershop-harmony.org", true },
+ { "barbershop-lasvillas.com", true },
{ "barbu.family", true },
{ "barburas.com", true },
{ "barcamp.koeln", true },
+ { "barcel.com.mx", true },
{ "barclays.net", true },
{ "barcodeberlin.com", true },
{ "barcoderealty.com", true },
- { "bardiel.de", true },
{ "bardiharborow.tk", true },
+ { "baresquare.com", true },
{ "barf-alarm.de", true },
{ "baripedia.org", true },
{ "baris-sagdic.com", true },
{ "bariseau-mottrie.be", true },
- { "barisi.me", true },
{ "bariskaragoz.nl", true },
+ { "baristador.com", true },
{ "barkerjr.xyz", true },
{ "barlotta.net", true },
{ "barnabycolby.io", true },
{ "barnel.com", true },
- { "barnrats.com", true },
{ "barpodsosnami.pl", true },
{ "barracuda.com.tr", true },
{ "barrera.io", true },
@@ -3917,15 +3939,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bart-f.com", true },
{ "barta.me", true },
{ "bartel.ws", true },
- { "bartelldrugs.com", true },
{ "bartelt.name", true },
{ "barthonia-showroom.de", true },
{ "bartlamboo.nl", true },
+ { "bartolomebellido.com", true },
{ "bartula.de", true },
{ "bartzutow.xyz", true },
{ "baruch.me", true },
{ "bas.co.jp", true },
- { "bascht.com", true },
{ "base-autonome-durable.com", true },
{ "baseballrampage.com", true },
{ "baseballsavings.com", true },
@@ -3937,15 +3958,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "basementdoctor.com", true },
{ "basementdoctornorthwest.com", true },
{ "basementfinishingohio.com", true },
+ { "basercap.co.ke", true },
{ "bashstreetband.co.uk", true },
{ "basicapparel.de", true },
{ "basicattentiontoken.org", true },
{ "basilicaknights.org", true },
- { "basilm.co", true },
{ "basketball-brannenburg.de", true },
{ "basketsbymaurice.com", false },
{ "basnoslovno.com.ua", false },
{ "basnoslovno.ru", true },
+ { "basonlinemarketing.nl", true },
{ "bass-pro.ru", true },
{ "bassblog.net", true },
{ "bassment.ph", true },
@@ -3974,7 +3996,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "batonger.com", true },
{ "batook.org", true },
{ "batschu.de", true },
- { "batten.eu.org", true },
{ "batteryservice.ru", false },
{ "batterystaple.pw", true },
{ "battle-game.com", true },
@@ -3991,6 +4012,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bauthier-occasions.be", true },
{ "bautied.de", true },
{ "bauunternehmen-herr.de", true },
+ { "bauwens.cloud", true },
{ "bayareaenergyevents.com", true },
{ "baychimo.com", true },
{ "bayden.com", true },
@@ -4000,17 +4022,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bayerhazard.de", true },
{ "bayerstefan.com", true },
{ "bayerstefan.de", true },
- { "bayerstefan.eu", true },
{ "bayherbalist.com", true },
{ "bayilelakiku.com", true },
{ "bayly.eu", true },
{ "baymard.com", true },
+ { "baytalebaa.com", true },
{ "baywatch.io", true },
{ "bayz.de", true },
{ "bazaarcompass.com", true },
{ "bazdell.com", false },
{ "bazos.at", true },
{ "bazos.cz", true },
+ { "bazos.pl", true },
{ "bazos.sk", true },
{ "bazziergraphik.com", true },
{ "bb1718.net", true },
@@ -4019,8 +4042,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bbcastles.com", true },
{ "bbgeschenke.ch", true },
{ "bbimarketing.com", true },
- { "bbj.io", true },
{ "bbka.org.uk", true },
+ { "bbkaforum.co.uk", true },
{ "bbkworldwide.jp", true },
{ "bblove.me", true },
{ "bblsa.ch", true },
@@ -4028,6 +4051,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bbnx.net", true },
{ "bbswin9.cc", true },
{ "bbswin9.com", true },
+ { "bbuio.com", false },
{ "bbw.dating", true },
{ "bbwcs.co.uk", true },
{ "bbxin9.com", true },
@@ -4035,6 +4059,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bc-bd.org", false },
{ "bc-diffusion.com", true },
{ "bc-personal.ch", true },
+ { "bc416.com", true },
+ { "bc418.com", true },
+ { "bc419.com", true },
{ "bcansw.com.au", true },
{ "bcbulle.ch", true },
{ "bcdonadio.com", true },
@@ -4053,14 +4080,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bcmhire.co.uk", true },
{ "bcmlu.org", true },
{ "bcnet.com.hk", true },
- { "bcodeur.com", true },
{ "bcpc-ccgpfcheminots.com", true },
{ "bcrook.com", true },
+ { "bcs.adv.br", true },
{ "bcswampcabins.com", true },
{ "bcvps.com", true },
{ "bd2positivo.com", true },
{ "bda-boulevarddesairs.com", true },
- { "bdata.cl", true },
{ "bdd.fi", true },
{ "bdikaros-network.net", true },
{ "bdpachicago.tech", true },
@@ -4083,7 +4109,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "be958.info", true },
{ "be958.net", true },
{ "be958.org", true },
- { "be9966.com", true },
+ { "beacham.online", true },
{ "beachfutbolclub.com", true },
{ "beacinsight.com", true },
{ "beadare.com", true },
@@ -4095,6 +4121,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "beans-one.com", false },
{ "bearcosports.com.br", true },
{ "bearded.sexy", true },
+ { "beardic.cn", true },
{ "bearingworks.com", true },
{ "beastowner.li", true },
{ "beatfeld.de", true },
@@ -4106,7 +4133,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "beauty24.de", true },
{ "beautybear.dk", true },
{ "beautyby.tv", true },
- { "beautyconcept.co", false },
{ "beautyevent.fr", true },
{ "beautykat.ru", true },
{ "bebef.de", true },
@@ -4115,6 +4141,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bebest.gov", false },
{ "bebetrotteur.com", true },
{ "bebout.domains", true },
+ { "bebout.pw", true },
{ "beckenhamcastles.co.uk", true },
{ "beckerantiques.com", false },
{ "beckon.com", true },
@@ -4129,7 +4156,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bedfordnissanparts.com", true },
{ "bedlingtonterrier.com.br", true },
{ "bednar.co", true },
- { "bedouille.com", true },
{ "bedrocklinux.org", true },
{ "bedste10.dk", true },
{ "bee-creative.nl", true },
@@ -4153,8 +4179,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "beekeeping.clothing", true },
{ "beekeeping.tools", true },
{ "beeksnetwork.nl", true },
- { "beelen.fr", true },
{ "beelit.com", true },
+ { "beeming.net", true },
{ "beercandle.com", true },
{ "beergazetteer.com", true },
{ "beerians.com", true },
@@ -4163,7 +4189,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "beerjet.ro", true },
{ "beerjet.sk", true },
{ "beerjetcz.cz", true },
- { "beermedlar.com", true },
+ { "beerly.eu", true },
{ "beerradar.no", true },
{ "beerradar.party", true },
{ "beersconf.com", true },
@@ -4234,8 +4260,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "belvoirbouncycastles.co.uk", true },
{ "bely-mishka.by", true },
{ "belyvly.com", true },
+ { "bemindly.com", true },
{ "bemsoft.pl", true },
{ "ben-energy.com", false },
+ { "ben-jarvis.co.uk", true },
{ "ben-stock.de", true },
{ "ben.ninja", true },
{ "ben2.co.il", true },
@@ -4259,14 +4287,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "benepiscinas.com.br", true },
{ "beneri.se", true },
{ "benevita.bio", true },
- { "benevita.life", true },
- { "benevita.live", true },
- { "benevita.organic", true },
{ "bengalurugifts.com", true },
{ "bengisureklam.com", true },
{ "benhaney.com", true },
{ "benhartmann.de", true },
{ "benhavenarchives.org", true },
+ { "benjamin-hering.com", true },
{ "benjamin.pe", true },
{ "benjaminblack.net", true },
{ "benjamindietrich.com", true },
@@ -4309,11 +4335,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bequiia.com", true },
{ "beranovi.com", true },
{ "berasavocate.com", true },
- { "beraten-entwickeln-steuern.de", true },
{ "berdaguermontes.eu", false },
+ { "beretech.fr", true },
{ "bergenhave.nl", true },
{ "bergevoet-fa.nl", true },
- { "bergfex.at", true },
{ "bergfreunde.de", true },
{ "bergfreunde.dk", true },
{ "bergfreunde.es", true },
@@ -4324,9 +4349,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bergfreunde.no", true },
{ "bergfreunde.se", true },
{ "berglust-pur.de", true },
- { "bergstoneware.com", true },
+ { "bergmann-fotografin-berlin.de", true },
+ { "bergmann-fotografin-dortmund.de", true },
+ { "bergmann-fotografin-duesseldorf.de", true },
+ { "bergmann-fotografin-essen.de", true },
+ { "bergmann-fotografin-frankfurt.de", true },
+ { "bergmann-fotografin-hamburg.de", true },
+ { "bergmann-fotografin-koeln.de", true },
+ { "bergmann-fotografin-muenchen.de", true },
+ { "bergmann-fotografin-stuttgart.de", true },
{ "berichtsheft-vorlage.de", true },
{ "berikod.ru", true },
+ { "berliancom.com", false },
{ "berlin-flirt.de", true },
{ "berlin.dating", true },
{ "bermeitinger.eu", true },
@@ -4346,9 +4380,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bernhardluginbuehl.com", true },
{ "bernieware.de", true },
{ "berodes.be", true },
+ { "berr.yt", true },
{ "berra.se", true },
{ "berruezoabogados.com", true },
{ "berrus.com", true },
+ { "berry.cat", true },
{ "berrypay.com", true },
{ "bersierservices.ch", true },
{ "bersotavocats.fr", true },
@@ -4387,6 +4423,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bestbridal.top", true },
{ "bestbyte.com.br", true },
{ "bestcellular.com", false },
+ { "bestdating.today", true },
{ "bestemailmarketingsoftware.org", true },
{ "bestesb.com", true },
{ "bestesb.net", true },
@@ -4395,17 +4432,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bestfriendsequality.org", true },
{ "bestgiftever.ca", true },
{ "bestgifts4you.com", true },
+ { "bestiahosting.com", true },
{ "bestinductioncooktop.us", true },
+ { "bestjumptrampolines.be", true },
{ "bestlashesandbrows.com", true },
{ "bestlashesandbrows.hu", true },
{ "bestmotherfucking.website", true },
{ "bestoffert.club", true },
{ "bestoliveoils.com", true },
+ { "bestparking.xyz", true },
{ "bestpartyhire.com", true },
{ "bestperfumebrands.com", true },
+ { "bestpig.fr", true },
+ { "bestschools.io", true },
{ "bestseries.tv", true },
{ "bestshoesmix.com", true },
- { "bestwarezone.com", true },
{ "bestwebsite.gallery", true },
{ "bet-99.cc", true },
{ "bet-99.com", true },
@@ -4413,11 +4454,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bet168wy.com", true },
{ "bet168wy.net", true },
{ "bet909.com", true },
- { "bet990.com", true },
{ "bet9bet9.net", true },
{ "betacavi.com", true },
{ "betacloud.io", true },
{ "betalenviainternet.nl", true },
+ { "betaprofiles.com", true },
{ "betaworx.de", true },
{ "betaworx.eu", true },
{ "betecnet.de", true },
@@ -4428,7 +4469,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "betpamm.com", true },
{ "betrallyarabia.com", true },
{ "betseybuckheit.com", true },
- { "betshoot.com", true },
{ "betsyshilling.com", true },
{ "bett1.de", true },
{ "better-bounce.co.uk", true },
@@ -4438,10 +4478,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "betterconsult.com", true },
{ "bettercrypto.org", true },
{ "betterhelp.com", true },
+ { "betterjapanese.blog", true },
+ { "betterjapanese.com", true },
{ "betterjapanese.org", true },
+ { "betterjapanese.xyz", true },
{ "betterna.me", true },
{ "betterscience.org", true },
{ "bettertechinterviews.com", true },
+ { "bettertest.it", true },
{ "betterweb.fr", true },
{ "betterworldinternational.org", true },
{ "bettflaschen.ch", true },
@@ -4465,17 +4509,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bevinco2020.com", true },
{ "bevinsco.org", true },
{ "bevnut.com", true },
- { "bewegungsfluss.com", true },
+ { "bewegungsfluss.com", false },
{ "bewerbungsfoto-deinfoto.ch", true },
- { "bewertet.de", true },
{ "bewonderen.com", true },
{ "bexit.nl", true },
{ "bexithosting.nl", true },
{ "bexleycastles.co.uk", true },
{ "beybiz.com", true },
{ "beylikduzuvaillant.com", true },
- { "beyond-infinity.org", true },
- { "beyond-rational.com", true },
+ { "beyond-infinity.org", false },
{ "beyondalderaan.net", true },
{ "beyondbounce.co.uk", true },
{ "beyondpricing.com", true },
@@ -4502,9 +4544,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bg-sexologia.com", true },
{ "bg16.de", true },
{ "bgbhsf.top", true },
- { "bgenlisted.com", true },
{ "bgeo.io", true },
- { "bgfashion.net", true },
{ "bgfoto.info", true },
{ "bghost.xyz", true },
{ "bgkoleda.bg", true },
@@ -4513,6 +4553,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bgr34.cz", true },
{ "bgtgames.com", true },
{ "bgtoyou.com", true },
+ { "bgwfans.com", true },
{ "bh-oberland.de", true },
{ "bh.sb", true },
{ "bharath-g.in", true },
@@ -4523,13 +4564,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bhuntr.com", true },
{ "bi.search.yahoo.com", false },
{ "biaggeo.com", true },
+ { "biancolievito.it", true },
{ "biano-ai.com", true },
{ "biasmath.es", true },
{ "biathloncup.ru", true },
{ "bible-maroc.com", true },
{ "bible.ru", true },
{ "bibleonline.ru", true },
- { "bibliafeminina.com.br", true },
{ "bibliaon.com", true },
{ "biblio.wiki", true },
{ "biblioblog.fr", true },
@@ -4540,11 +4581,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bibuch.com", true },
{ "bicecontracting.com", true },
{ "bicha.net", true },
- { "bichines.es", true },
{ "bicranial.io", true },
{ "bicycle-events.com", true },
{ "biddl.com", true },
- { "bidorbuy.co.ke", true },
{ "bidu.com.br", true },
{ "bie.edu", false },
{ "biegner-technik.de", true },
@@ -4554,11 +4593,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bienici.com", true },
{ "bienoubien.org", true },
{ "biensenvue.com", true },
+ { "bienstar.tv", true },
{ "bierbaumer.net", true },
{ "biergaizi.info", true },
{ "bieser.ch", true },
{ "biester.pro", true },
+ { "bieumau.net", true },
{ "bifrost.cz", true },
+ { "biftin.net", true },
{ "big-andy.co.uk", true },
{ "big-bounce.co.uk", true },
{ "big-fluglaerm-hamburg.de", true },
@@ -4570,16 +4612,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bigcakes.dk", true },
{ "bigclassaction.com", true },
{ "bigdinosaur.org", true },
- { "bigfunbouncycastles.com", true },
{ "biggreenexchange.com", true },
{ "bigio.com.br", true },
{ "bigjohn.ru", true },
+ { "bignumworks.com", true },
{ "bigshort.org", true },
{ "bigsisterchannel.com", true },
{ "bigskymontanalandforsale.com", true },
{ "bihub.io", true },
{ "biilo.com", true },
- { "bijoux.com.br", true },
{ "bijouxbrasil.com.br", true },
{ "bijouxcherie.com", true },
{ "bijuteriicualint.ro", true },
@@ -4608,12 +4649,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bilibili.red", true },
{ "bilimoe.com", true },
{ "bilke.org", true },
- { "billaud.eu.org", true },
{ "billgoldstein.name", true },
{ "billhartzer.com", true },
{ "billiger-mietwagen.de", true },
{ "billigerfinder.de", true },
{ "billigpoker.dk", true },
+ { "billin.net", true },
+ { "billionaire365.com", true },
{ "billionairemailinglist.com", false },
{ "billionkiaparts.com", true },
{ "billogram.com", true },
@@ -4627,6 +4669,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "biloplysninger.dk", true },
{ "bilsho.com", true },
{ "biltullen.com", true },
+ { "bimbo.com", false },
+ { "bimbo.com.ar", false },
+ { "bimbobakeriesusa.com", false },
{ "bimmerlabs.com", true },
{ "bin95.com", true },
{ "bina.az", true },
@@ -4637,12 +4682,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "binans.net", true },
{ "binans.xyz", true },
{ "binarization.com", true },
- { "binarization.net", true },
- { "binarization.org", true },
{ "binaryapparatus.com", true },
{ "binaryappdev.com", true },
{ "binarycreations.scot", true },
{ "binarydream.fi", true },
+ { "binaryevolved.com", true },
{ "binaryrebel.net", true },
{ "binarystud.io", true },
{ "binbin9.com", true },
@@ -4651,11 +4695,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "binfind.com", true },
{ "bing.com", true },
{ "bingobank.org", true },
- { "bingostars.com", true },
{ "binhex.net", true },
{ "binkanhada.biz", true },
{ "binkconsulting.be", true },
- { "binsp.net", true },
+ { "binnenmeer.de", true },
{ "binti.com", true },
{ "bintooshoots.com", true },
{ "bio-disinfestazione.it", true },
@@ -4681,11 +4724,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "biohappiness.com", true },
{ "bioharmony.ca", true },
{ "biointelligence-explosion.com", true },
+ { "bioknowme.com", true },
{ "bioligo.ch", true },
- { "biomax-mep.com.br", true },
+ { "biomasscore.com", true },
{ "biometrics.es", true },
{ "biomodra.cz", true },
- { "biopreferred.gov", true },
{ "biopsychiatry.com", true },
{ "bioresonanz-ibiza.com", true },
{ "biosafe.ch", true },
@@ -4700,7 +4743,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "birchbarkfurniture.ch", true },
{ "birchbarkfurniture.com", true },
{ "birchbarkfurniture.fr", true },
- { "birdandbranchnyc.com", true },
{ "birdbrowser.com", true },
{ "birdfeeder.online", true },
{ "birdiehosting.nl", true },
@@ -4709,13 +4751,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "birgerschwarz.de", true },
{ "birgit-rydlewski.de", true },
{ "birgitandmerlin.com", true },
- { "birkengarten.ch", true },
{ "birkenstab.de", true },
- { "birkhoff.me", false },
+ { "birkhoff.me", true },
{ "birminghamcastlehire.co.uk", true },
{ "birminghamsunset.com", true },
{ "birthdaytip.com", true },
{ "birthmatters.us", true },
+ { "birthright.website", true },
{ "birzan.org", true },
{ "bisa-sis.net", true },
{ "biscoint.io", true },
@@ -4729,11 +4771,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bit-cloud.de", true },
{ "bit-rapid.com", true },
{ "bit-sentinel.com", true },
+ { "bit-service-aalter.be", true },
+ { "bit.biz.tr", true },
{ "bit.voyage", true },
{ "bit8.com", true },
- { "bitace.com", true },
{ "bitbank.cc", true },
{ "bitbeans.de", true },
+ { "bitbox.me", true },
{ "bitbucket.com", true },
{ "bitbucket.io", true },
{ "bitbucket.org", true },
@@ -4746,7 +4790,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bitcoin.asia", true },
{ "bitcoin.ch", true },
{ "bitcoin.co.nz", true },
- { "bitcoin.com", true },
{ "bitcoin.de", true },
{ "bitcoin.im", true },
{ "bitcoin.info", true },
@@ -4755,7 +4798,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bitcoinbitcoin.com", true },
{ "bitcoinclashic.ninja", true },
{ "bitcoincore.org", true },
- { "bitcoinfo.jp", false },
{ "bitcoinindia.com", true },
{ "bitcoinkarlsruhe.de", true },
{ "bitcoinrealestate.com.au", true },
@@ -4763,7 +4805,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bitcoinwalletscript.tk", true },
{ "bitcoinx.gr", true },
{ "bitcoinx.ro", true },
- { "bitedge.com", true },
{ "bitenose.com", true },
{ "bitex.la", true },
{ "bitfasching.de", false },
@@ -4776,6 +4817,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bithap.com", true },
{ "bithir.co.uk", true },
{ "bititrain.com", true },
+ { "bitk.co", true },
+ { "bitk.co.uk", true },
+ { "bitk.eu", true },
{ "bitk.uk", true },
{ "bitlish.com", true },
{ "bitlo.com", true },
@@ -4783,25 +4827,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bitlo.io", true },
{ "bitlo.org", true },
{ "bitmainwarranty.com", true },
- { "bitmainwarranty.com.ua", true },
- { "bitmainwarranty.ru", true },
{ "bitmarket.net", true },
{ "bitmarket.pl", true },
{ "bitmessage.ch", true },
- { "bitmex.com", true },
{ "bitmidi.com", true },
{ "bitminter.com", true },
- { "bitmon.net", true },
+ { "bitmoe.com", true },
{ "bitok.com", true },
- { "bitpoll.de", true },
- { "bitpoll.org", true },
{ "bitpumpe.net", true },
{ "bitref.com", true },
- { "bitroll.com", true },
{ "bitrush.nl", true },
{ "bitsafe.com.my", true },
{ "bitsburg.ru", true },
{ "bitshaker.net", true },
+ { "bitskins.co", true },
{ "bitskrieg.net", true },
{ "bitstorm.nl", true },
{ "bitstorm.org", true },
@@ -4810,8 +4849,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bitten.pw", true },
{ "bittersweetcandybowl.com", true },
{ "bittylicious.com", true },
- { "bituptick.com", true },
- { "bitvegas.com", true },
{ "bitvest.io", true },
{ "bitwolk.nl", true },
{ "bitxel.com.co", true },
@@ -4827,12 +4864,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bizstarter.cz", true },
{ "biztera.com", true },
{ "biztok.eu", true },
+ { "biztouch.work", true },
{ "bizzi.tv", true },
{ "bjarnerest.de", true },
{ "bjl5689.com", true },
{ "bjl5689.net", true },
{ "bjornhelmersson.se", true },
{ "bjornjohansen.no", true },
+ { "bjrn.io", true },
{ "bjs.gov", true },
{ "bjsbouncycastles.com", true },
{ "bkentertainments.co.uk", true },
@@ -4866,9 +4905,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blablacar.ro", true },
{ "blablacar.rs", true },
{ "blablacar.ru", true },
- { "black-gay-porn.biz", true },
{ "black-khat.com", true },
{ "black-mail.nl", true },
+ { "black-pool.net", true },
{ "black-raven.fr", true },
{ "black.dating", true },
{ "black.host", true },
@@ -4893,12 +4932,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blackhat.dk", true },
{ "blackhelicopters.net", true },
{ "blackhillsinfosec.com", true },
- { "blackilli.de", true },
{ "blackislegroup.com", true },
- { "blackkeg.ca", true },
{ "blackl.net", true },
+ { "blackmonday.gr", true },
{ "blacknetwork.eu", true },
- { "blacknova.io", true },
{ "blackonion.com", true },
{ "blackpapermoon.de", true },
{ "blackphoenix.de", true },
@@ -4909,9 +4946,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blaise.io", true },
{ "blakecoin.org", true },
{ "blakekhan.com", true },
+ { "blameomar.com", true },
{ "blancodent.com", true },
{ "blankersfamily.com", true },
{ "blanket.technology", true },
+ { "blantr.com", true },
{ "blasorchester-runkel.de", true },
{ "blastentertainment.com.au", true },
{ "blastersklan.com", true },
@@ -4933,6 +4972,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blendle.com", true },
{ "blendle.nl", true },
{ "blendr.com", true },
+ { "blenheimears.com", true },
{ "blenneros.net", false },
{ "blessedearth.com.au", true },
{ "blessedguy.com", true },
@@ -4941,9 +4981,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blichmann.eu", true },
{ "blidz.com", true },
{ "blieque.co.uk", true },
+ { "bliesekow.net", true },
{ "blikk.no", true },
{ "blikund.swedbank.se", true },
{ "blindpigandtheacorn.com", true },
+ { "blinds-unlimited.com", true },
{ "bling9.com", true },
{ "bling999.cc", true },
{ "bling999.com", true },
@@ -4970,9 +5012,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "block65.com", true },
{ "blockchain.com", true },
{ "blockchain.info", true },
- { "blockchainced.com", true },
{ "blockchaindaigakko.jp", true },
{ "blockchainwhiz.com", true },
+ { "blockcheck.network", true },
{ "blockedyourcar.com", true },
{ "blockedyourcar.net", true },
{ "blockedyourcar.org", true },
@@ -4987,9 +5029,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blog.linode.com", false },
{ "blog.lookout.com", false },
{ "blogaid.net", true },
+ { "blogarts.net", true },
{ "blogbooker.com", true },
{ "blogconcours.net", true },
{ "blogcuaviet.com", true },
+ { "blogdelosjuguetes.com", true },
{ "blogdeyugioh.com", true },
{ "blogexpert.ca", true },
{ "bloggermumofthreeboys.com", true },
@@ -5011,8 +5055,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bltc.org", true },
{ "bltc.org.uk", true },
{ "bltdirect.com", true },
- { "blubberladen.de", true },
{ "bludnykoren.ml", true },
+ { "blue-gmbh-erfahrungen.de", true },
+ { "blue-gmbh.de", true },
{ "blue-leaf81.net", true },
{ "blue42.net", true },
{ "blueblou.com", true },
@@ -5022,17 +5067,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bluecon.ninja", true },
{ "bluecrazii.nl", true },
{ "blued.moe", true },
+ { "bluedata.ltd", true },
{ "bluedeck.org", true },
- { "bluefinger.nl", true },
{ "blueflare.org", true },
{ "bluefrag.com", true },
{ "bluefuzz.nl", true },
+ { "bluehelixmusic.com", true },
{ "blueimp.net", true },
{ "blueliquiddesigns.com.au", true },
{ "bluemeda.web.id", true },
- { "bluemoonroleplaying.com", true },
+ { "bluemosh.com", true },
{ "bluemtnrentalmanagement.ca", true },
{ "bluenote9.com", true },
+ { "blueoakart.com", true },
{ "bluepearl.tk", true },
{ "blueperil.de", true },
{ "bluepoint.one", true },
@@ -5040,9 +5087,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blueprintloans.co.uk", true },
{ "bluerootsmarketing.com", true },
{ "blues-and-pictures.com", true },
- { "bluesecure.com.br", true },
{ "blueskycoverage.com", true },
{ "bluestardiabetes.com", true },
+ { "bluetexservice.com", true },
{ "bluewavewebdesign.com", true },
{ "bluex.im", true },
{ "bluex.info", true },
@@ -5051,6 +5098,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blueyed.eu", true },
{ "blui.cf", true },
{ "bluiandaj.ml", true },
+ { "bluimedia.com", true },
{ "blumenfeldart.com", true },
{ "blumiges-fischbachtal.de", false },
{ "blundell.wedding", true },
@@ -5062,6 +5110,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "blutopia.xyz", true },
{ "blyat.science", true },
{ "blyth.me.uk", true },
+ { "blzrk.com", true },
{ "bmhglobal.com.au", true },
{ "bmone.net", true },
{ "bmriv.com", true },
@@ -5069,7 +5118,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bmw-motorradclub-seefeld.de", true },
{ "bmwcolors.com", true },
{ "bn1digital.co.uk", true },
- { "bn4t.me", true },
{ "bnb-buddy.nl", true },
{ "bnboy.cn", true },
{ "bnbsinflatablehire.co.uk", true },
@@ -5098,11 +5146,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bobancoamigo.com", true },
{ "bobazar.com", true },
{ "bobcopeland.com", true },
- { "bobep.ru", true },
{ "bobkidbob.com", true },
{ "bobkoetsier.nl", true },
{ "bobnbouncedublin.ie", true },
- { "boboates.com", true },
{ "bobobox.net", true },
{ "boboolo.com", true },
{ "bobstronomie.fr", true },
@@ -5121,6 +5167,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bodymusclejournal.com", true },
{ "bodypainter.pl", true },
{ "bodypainting.waw.pl", true },
+ { "bodyweb.com.br", true },
{ "bodyworkbymichael.com", true },
{ "boeddhashop.nl", true },
{ "boekenlegger.nl", true },
@@ -5138,12 +5185,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "boisewaldorf.org", true },
{ "boke112.com", true },
{ "bokka.com", true },
- { "bokutake.com", true },
+ { "bokkeriders.com", true },
{ "boldmediagroup.com", true },
{ "boldt-metallbau.de", true },
{ "bolektro.de", true },
{ "bolgarnyelv.hu", true },
- { "bolivarfm.com.ve", true },
{ "bollywood.uno", true },
{ "bologna-disinfestazioni.it", true },
{ "bolovegna.it", true },
@@ -5158,7 +5204,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bonami.ro", true },
{ "bonami.sk", true },
{ "bonbonmania.com", true },
- { "bondagefetishstore.com", true },
{ "bondank.com", true },
{ "bondarenko.dn.ua", true },
{ "bondingwithbaby.ca", true },
@@ -5170,6 +5215,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bonibuty.com", true },
{ "bonifacius.be", true },
{ "bonita.com.br", true },
+ { "bonito.pl", true },
{ "bonnant-associes.ch", true },
{ "bonnant-partners.ch", true },
{ "bonnebouffe.fr", true },
@@ -5199,7 +5245,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bookshopofindia.com", true },
{ "booksinthefridge.at", true },
{ "booktracker-org.appspot.com", true },
- { "bookwitty.social", true },
{ "bool.be", true },
{ "boomersurf.com", true },
{ "boomshelf.com", true },
@@ -5217,18 +5262,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "booq.org", true },
{ "booquiz.com", true },
{ "boosinflatablegames.co.uk", true },
+ { "boost.fyi", true },
{ "boost.ink", true },
+ { "boostgame.win", true },
{ "booter.pw", true },
{ "bootjp.me", false },
{ "bopiweb.com", true },
{ "bopp.org", true },
{ "borahan.net", true },
- { "borchers-media.de", true },
- { "borchers.ninja", true },
{ "bordadoenpedreria.com", true },
{ "bordes.me", true },
{ "boredhackers.com", true },
{ "borg.cloud", true },
+ { "borgmestervangen.xyz", true },
{ "boringsmith.com", true },
{ "boris64.net", true },
{ "borisenko.by", true },
@@ -5251,7 +5297,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bosun.io", true },
{ "bosworthdental.co.uk", true },
{ "botlab.ch", true },
- { "botmanager.pl", true },
{ "bots.cat", true },
{ "botserver.de", true },
{ "botstack.host", true },
@@ -5265,7 +5310,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bouckaert-usedcars.be", true },
{ "boudah.pl", true },
{ "bougeret.fr", true },
- { "bouk.co", true },
{ "boukoubengo.com", true },
{ "boulzicourt.fr", true },
{ "bounce-a-mania.co.uk", true },
@@ -5378,6 +5422,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bountyfactory.io", true },
{ "bourasse.fr", true },
{ "bourdon.fr.eu.org", true },
+ { "bourgdepabos.com", true },
{ "bourhis.info", true },
{ "bournefun.co.uk", true },
{ "bourqu.in", true },
@@ -5401,11 +5446,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bownty.it", true },
{ "bownty.nl", true },
{ "bowntycdn.net", true },
+ { "boxmoe.cn", true },
{ "boxpeg.com", true },
{ "boxpirates.to", true },
{ "boxvergelijker.nl", true },
+ { "boyfriendcookbook.com", true },
{ "boyhost.cn", true },
- { "boypoint.de", true },
{ "boz.nl", false },
{ "bozdoz.com", true },
{ "bozit.com.au", true },
@@ -5423,6 +5469,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "braams.nl", true },
{ "bracho.xyz", true },
{ "brackets-salad.com", true },
+ { "bracoitaliano.com.br", true },
{ "bradbrockmeyer.com", true },
{ "bradfordhottubhire.co.uk", true },
{ "bradfordmascots.co.uk", true },
@@ -5430,7 +5477,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bradler.net", true },
{ "bradlinder.org", true },
{ "bradypatterson.com", true },
- { "braemer-it-consulting.de", true },
{ "braeunlich-gmbh.com", true },
{ "brage.info", true },
{ "brahmins.com", true },
@@ -5457,8 +5503,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "brammingfys.dk", true },
{ "bramstaps.nl", true },
{ "bramvanaken.be", true },
+ { "bramygrozy.pl", true },
{ "bran.land", true },
{ "branch-bookkeeper.com", true },
+ { "branchtrack.com", true },
+ { "brandand.co.uk", true },
{ "brandbil.dk", true },
{ "brandbuilderwebsites.com", true },
{ "brandcodeconsulting.com", true },
@@ -5479,10 +5528,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "brasalcosmetics.com", true },
{ "brashear.me", true },
{ "brasilbombas.com.br", true },
+ { "brasildxn.com.br", true },
{ "brasserie-mino.fr", true },
{ "brasspipedreams.org", true },
{ "bratislava-airport-taxi.com", true },
{ "bratteng.me", true },
+ { "bratteng.xyz", true },
{ "bratvanov.com", true },
{ "brau-ingenieur.de", true },
{ "braudoktor.de", true },
@@ -5518,6 +5569,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "brecknell.org", true },
{ "breda.computer", true },
{ "bredvid.no", true },
+ { "breest.net", true },
{ "breeyn.com", true },
{ "brefy.com", true },
{ "brege.org", true },
@@ -5561,6 +5613,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "brickvortex.com", true },
{ "bricolajeux.ch", true },
{ "brid.gy", false },
+ { "brideandgroomdirect.ie", true },
{ "bridgeglobalmarketing.com", true },
{ "bridgement.com", true },
{ "bridgevest.com", true },
@@ -5572,17 +5625,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "briggsleroux.com", true },
{ "brighouse-leisure.co.uk", true },
{ "brightday.bz", true },
+ { "brightlifedirect.com", true },
{ "brightonbank.com", true },
{ "brightonbouncycastles.net", true },
{ "brightonchilli.org.uk", true },
{ "brightonzhang.com", true },
{ "brigidaarie.com", true },
+ { "brigittebutt.tk", true },
{ "brilliantbouncyfun.co.uk", true },
{ "brilliantdecisionmaking.com", true },
{ "brilliantproductions.co.nz", true },
{ "brimspark.systems", true },
- { "brinkhu.is", true },
- { "brinquedoseducativos.art.br", true },
{ "brio-shop.ch", true },
{ "brisbanelogistics.com.au", true },
{ "bristebein.com", true },
@@ -5591,14 +5644,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "britelocate.com", true },
{ "britishbeef.com", true },
{ "britishbookmakers.co.uk", true },
+ { "britishchronicles.com", true },
{ "britishgroupsg.com", true },
- { "britishmeat.com", true },
{ "britishpearl.com", true },
{ "britishsciencefestival.org", true },
{ "britishscienceweek.org", true },
+ { "britishsnoring.co.uk", true },
{ "britneyclause.com", true },
+ { "brittanyferriesnewsroom.com", true },
{ "britton-photography.com", true },
+ { "brmsalescommunity.com", true },
{ "brn.by", true },
+ { "brnojebozi.cz", true },
{ "bro.hk", true },
{ "broadleft.org", true },
{ "broadsheet.com.au", true },
@@ -5619,7 +5676,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "brookehatton.com", true },
{ "brooklynrealestateblog.com", true },
{ "brookworth.com", true },
- { "brossman.it", true },
{ "brossmanit.com", true },
{ "brother-printsmart.nl", true },
{ "brouillard.ch", true },
@@ -5628,6 +5684,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "brown-devost.com", true },
{ "brownfieldstsc.org", true },
{ "brownihc.com", true },
+ { "browsemycity.com", true },
{ "brring.com", true },
{ "bru6.de", true },
{ "brucemartin.net", true },
@@ -5639,8 +5696,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "brunn.email", true },
{ "brunner.ninja", false },
{ "brunohenc.from.hr", true },
- { "brunoramos.com", true },
- { "brunoramos.org", true },
{ "brunosouza.org", true },
{ "brush.ninja", true },
{ "bruun.co", true },
@@ -5702,6 +5757,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "btserv.de", true },
{ "btsoft.eu", true },
{ "btsow.com", true },
+ { "bttc.co.uk", true },
{ "btth.live", true },
{ "btth.pl", true },
{ "btth.tv", true },
@@ -5751,7 +5807,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bugginslab.co.uk", true },
{ "bugs.chromium.org", true },
{ "bugsmashed.com", true },
- { "bugtrack.co.uk", true },
{ "bugzil.la", true },
{ "bugzilla.mozilla.org", true },
{ "build.chromium.org", true },
@@ -5768,6 +5823,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "buileo.com", true },
{ "builtvisible.com", true },
{ "builtwith.com", true },
+ { "bukai.men", true },
{ "bukkenfan.jp", true },
{ "bul3seas.eu", true },
{ "bulario.com", true },
@@ -5780,7 +5836,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bulkwholesalesweets.co.uk", true },
{ "bull.id.au", true },
{ "bulldog-hosting.de", true },
- { "bulldoghire.co.uk", true },
{ "bulledair-savons.ch", true },
{ "bullettags.com", true },
{ "bullpay.com", true },
@@ -5790,15 +5845,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bumarkamoda.com", true },
{ "bunbun.be", false },
{ "bund-von-theramore.de", true },
- { "bundaberg.com", true },
{ "bundespolizei-forum.de", true },
{ "bunkyo-life.com", true },
{ "bunny-rabbits.com", true },
{ "bunnyvishal.com", true },
{ "bunzy.ca", true },
{ "bupropion.com", true },
+ { "bupu.ml", true },
{ "buradangonder.com", true },
{ "burcevo.info", true },
+ { "burfordbedandbreakfast.co.uk", true },
{ "burgernet.nl", true },
{ "burgers.io", true },
{ "burghardt.pl", true },
@@ -5807,6 +5863,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "buricloud.fr", true },
{ "burke.services", true },
{ "burlapsac.ca", true },
+ { "burncorp.org", true },
{ "burnerfitness.com", true },
{ "burnhamonseabouncycastles.co.uk", true },
{ "burningbird.net", true },
@@ -5816,7 +5873,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "buronwater.com", true },
{ "burotec-sarl.com", true },
{ "burr.is", true },
- { "burroughsid.com", true },
{ "bursaries-southafrica.co.za", true },
{ "burtplasticsurgery.com", true },
{ "burtrum.family", true },
@@ -5824,6 +5880,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "burtrum.name", true },
{ "burtrum.org", true },
{ "burzmali.com", true },
+ { "busanhs.bid", true },
+ { "busanhs.win", true },
{ "buserror.cn", true },
{ "bushbaby.com", true },
{ "bushcraftfriends.com", true },
@@ -5857,19 +5915,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "buxum-communication.ch", true },
{ "buy-thing.com", true },
{ "buyaccessible.gov", true },
- { "buybike.shop", true },
{ "buycarpet.shop", true },
+ { "buycbd.store", true },
{ "buycook.shop", true },
{ "buydissertations.com", true },
{ "buyerdocs.com", true },
- { "buyessay.org", true },
- { "buyessays.net", true },
{ "buyessayscheap.com", true },
+ { "buyhealth.shop", true },
{ "buyinginvestmentproperty.com", true },
{ "buyjewel.shop", true },
{ "buymindhack.com", true },
{ "buypapercheap.net", true },
- { "buyplussize.shop", true },
{ "buyprofessional.shop", true },
{ "buyritefairview.com", true },
{ "buyseo.store", true },
@@ -5902,12 +5958,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bx-n.de", true },
{ "bxp40.at", true },
{ "by.cx", true },
+ { "byange.pro", true },
{ "byatte.com", true },
{ "bydisk.com", false },
{ "byeskille.no", true },
{ "bygningsregistrering.dk", true },
{ "byiu.info", true },
- { "byken.cn", true },
{ "bymark.co", true },
{ "bymike.co", true },
{ "bynder.com", true },
@@ -5918,7 +5974,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "byronkg.us", true },
{ "byronprivaterehab.com.au", true },
{ "byronr.com", true },
- { "byronwade.com", true },
{ "byrtz.de", true },
{ "bysb.net", false },
{ "byte-time.com", true },
@@ -5929,11 +5984,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bytejail.com", true },
{ "bytema.cz", true },
{ "bytema.eu", true },
- { "bytema.re", true },
{ "bytema.sk", true },
{ "byteowls.com", false },
{ "bytepark.de", true },
- { "bytepen.com", true },
{ "bytes.co", true },
{ "bytes.fyi", true },
{ "bytesatwork.de", true },
@@ -5950,6 +6003,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "bziaks.xyz", true },
{ "bzsparks.com", true },
{ "bztech.com.br", true },
+ { "bztraveler.com", true },
+ { "bztraveler.net", true },
{ "bzv-fr.eu", true },
{ "c-aeroconsult.com", true },
{ "c-path.org", true },
@@ -5960,6 +6015,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "c-world.co.uk", true },
{ "c.cc", true },
{ "c0rn3j.com", true },
+ { "c0rporation.com", true },
{ "c2design.it", true },
{ "c2o-library.net", true },
{ "c3hv.cn", true },
@@ -5976,8 +6032,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ca5.de", true },
{ "caarecord.org", true },
{ "caasd.org", true },
+ { "cabaladada.org", true },
{ "cabarave.com", true },
{ "cabforum.org", true },
+ { "cabineritten.nl", true },
{ "cabinet-bedin.com", true },
{ "cablehighspeed.net", true },
{ "cablemod.com", true },
@@ -5990,7 +6048,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "caceis.bank", true },
{ "cachetagalong.com", true },
{ "cachethome.com", true },
- { "cachethq.io", true },
{ "cachetur.no", true },
{ "cackette.com", true },
{ "cad-noerdlingen.de", true },
@@ -6011,12 +6068,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cafedupont.co.uk", true },
{ "cafedupont.de", true },
{ "cafedupont.nl", true },
- { "cafefresco.pe", true },
{ "cafeimsueden.de", true },
{ "cafelandia.net", true },
{ "cafeobscura.nl", true },
+ { "cafericoy.com", true },
{ "caffeinatedcode.com", true },
- { "caibi.io", true },
+ { "cagalogluyayinevi.com", true },
{ "cainhosting.com", false },
{ "caitcs.com", true },
{ "caiwenjian.xyz", true },
@@ -6024,7 +6081,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "caja-pdf.es", true },
{ "cajio.ru", true },
{ "cajunuk.co.uk", true },
- { "cake-time.co.uk", true },
{ "cakestart.net", true },
{ "caketoindia.com", true },
{ "cakingandbaking.com", true },
@@ -6049,11 +6105,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "calculator.tf", true },
{ "calcworkshop.com", true },
{ "caldecotevillagehall.co.uk", true },
+ { "caleb.cx", true },
{ "caleb.host", true },
- { "calebmorris.com", false },
{ "calebthompson.io", true },
{ "calendarr.com", true },
{ "calendarsnow.com", true },
+ { "calendly.com", true },
{ "caletka.cz", true },
{ "calgoty.com", true },
{ "calibreapp.com", true },
@@ -6062,7 +6119,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "calidoinvierno.com", true },
{ "calixte-concept.fr", true },
{ "call.me", true },
- { "callanbryant.co.uk", true },
{ "callawayracing.se", true },
{ "callear.org", true },
{ "callhub.io", true },
@@ -6072,10 +6128,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "callumsilcock.me", true },
{ "calluna.nl", true },
{ "calmtech.com", true },
- { "calomel.org", true },
{ "calotte-academy.com", true },
+ { "calrotaract.org", true },
{ "calvin.my", true },
- { "calypso-tour.net", true },
+ { "calvinallen.net", false },
{ "calyxengineers.com", true },
{ "camaradivisas.com", true },
{ "camaras.uno", true },
@@ -6089,12 +6145,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cambier.org", true },
{ "cambiowatch.ch", true },
{ "cambodian.dating", true },
+ { "cambridge-security.com", true },
{ "cambridgebouncers.co.uk", true },
{ "camconn.cc", true },
{ "camelservers.com", true },
+ { "cameo-membership.uk", true },
{ "cameraviva.com.br", true },
{ "camerweb.es", true },
{ "camilomodzz.net", true },
+ { "camjobs.net", true },
+ { "camolist.com", true },
+ { "camomile.desi", true },
{ "camp-pleinsoleil.ch", true },
{ "camp.co.uk", true },
{ "campaign-ad.com", true },
@@ -6106,6 +6167,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "campbrainybunch.com", true },
{ "campcambodia.org", true },
{ "campcanada.org", true },
+ { "campeoesdofutebol.com.br", true },
{ "campeonatoalemao.com.br", true },
{ "camperdays.de", true },
{ "camperlist.com", true },
@@ -6121,11 +6183,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "campus-discounts.com", true },
{ "campus-finance.com", true },
{ "campusdrugprevention.gov", true },
+ { "campusportalng.com", true },
{ "campuswire.com", true },
+ { "campvana.com", true },
{ "campwabashi.org", true },
- { "camshowhub.com", true },
- { "camsky.de", true },
+ { "camsky.de", false },
{ "canada-tourisme.ch", true },
+ { "canadabread.com", false },
{ "canadalife.de", true },
{ "canadasmotorcycle.ca", true },
{ "canadian-nurse.com", true },
@@ -6157,11 +6221,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "canlidoviz.com", true },
{ "canmipai.com", true },
{ "cannabis-marijuana.com", true },
- { "cannahealth.com", false },
+ { "cannacards.ca", true },
+ { "cannahealth.com", true },
{ "cannarobotics.com", true },
{ "cannoli.london", true },
{ "cannyfoxx.me", true },
{ "canoonic.se", true },
+ { "cant.at", true },
{ "cantatio.ch", true },
{ "canterberry.cc", true },
{ "canterburybouncycastlehire.co.uk", true },
@@ -6173,9 +6239,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cao.gov", true },
{ "cao.la", true },
{ "caodesantohumberto.com.br", true },
+ { "caoshan60.com", true },
{ "capacent.is", true },
{ "capachitos.cl", true },
- { "capacitacionyautoempleo.com", true },
{ "capacityproject.org", true },
{ "capekeen.com", true },
{ "capellidipremoli.com", true },
@@ -6196,16 +6262,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "capper.de", true },
{ "capriccio.to", true },
{ "caprichosdevicky.com", true },
+ { "caps.is", true },
{ "capsogusto.com", true },
{ "capstansecurity.co.uk", true },
{ "capstansecurity.com", true },
- { "captainark.net", true },
+ { "capstoneinsights.com", true },
+ { "captain-dandelion.com", true },
{ "captainsinn.com", true },
{ "captalize.com", true },
{ "capturapp.com", false },
{ "capture-app.com", true },
{ "captured-symphonies.com", true },
- { "capturethepen.co.uk", true },
{ "capuchinox.com", true },
{ "caputo.com", true },
{ "caputodesign.com", true },
@@ -6222,7 +6289,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "carbon-project.org", true },
{ "carbon12.org", true },
{ "carbon12.software", true },
+ { "carboneselectricosnettosl.info", false },
{ "carbonmade.com", false },
+ { "carbonmonoxidelawyer.net", true },
{ "carbono.uy", true },
{ "carbontv.com", true },
{ "carck.co.uk", true },
@@ -6237,6 +6306,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cardelmar.de", true },
{ "cardelmar.es", true },
{ "cardexchangesolutions.com", true },
+ { "cardgames.com", true },
{ "cardios.srv.br", true },
{ "cardranking.jp", true },
{ "cardrecovery.fr", true },
@@ -6259,6 +6329,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "carezone.com", false },
{ "cargobay.net", true },
{ "cargorestraintsystems.com.au", true },
+ { "carhunters.cz", true },
{ "caribbean.dating", true },
{ "caribbeanarthritisfoundation.org", true },
{ "caribbeanexams.com", true },
@@ -6268,15 +6339,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "carinthia.eu", true },
{ "cariocacooking.com", true },
{ "carisenda.com", true },
+ { "carkeysanantonio.com", true },
{ "carlandfaith.com", true },
{ "carlife-at.jp", true },
{ "carlili.fr", true },
{ "carlingfordapartments.com.au", true },
{ "carlmjohnson.net", true },
{ "carlobiagi.de", true },
+ { "carlocksmith--dallas.com", true },
+ { "carlocksmithellicottcity.com", true },
{ "carlocksmithfallbrook.com", true },
+ { "carlocksmithlewisville.com", true },
+ { "carlocksmithmesquite.com", true },
{ "carlosfelic.io", true },
+ { "carloshmm.com", true },
{ "carlosjeurissen.com", true },
+ { "carlot-j.com", true },
{ "carnaticalifornia.com", true },
{ "carnet-du-voyageur.com", true },
{ "carnildo.com", true },
@@ -6284,11 +6362,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "carol-lambert.com", true },
{ "carolcappelletti.com", true },
{ "carolcestas.com", true },
- { "caroli.biz", true },
{ "caroli.com", true },
{ "caroli.info", true },
{ "caroli.name", true },
{ "caroli.net", true },
+ { "carolina.cz", true },
{ "carolinaclimatecontrolsc.com", true },
{ "carolynjoyce.com.au", true },
{ "carpetcleaningtomball.com", true },
@@ -6298,10 +6376,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "carriedin.com", true },
{ "carrierplatform.com", true },
{ "carringtonrealtygroup.com", true },
+ { "carroceriascarluis.com", true },
{ "carrollservicecompany.com", true },
+ { "carseatchecks.ca", true },
{ "carson-aviation-adventures.com", true },
+ { "carsoug.com", true },
{ "carspneu.cz", true },
- { "carsten.pw", true },
{ "cartadeviajes.cl", true },
{ "cartadeviajes.co", true },
{ "cartadeviajes.com", true },
@@ -6316,6 +6396,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cartadeviajes.uk", true },
{ "carteirasedistintivos.com.br", true },
{ "cartelcircuit.com", true },
+ { "carterstad.se", true },
{ "cartertonscouts.org.nz", true },
{ "cartesentreprises-unicef.fr", true },
{ "carthedral.com", true },
@@ -6326,7 +6407,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cartouche-deal.fr", true },
{ "cartouche24.eu", true },
{ "cartucce24.it", true },
- { "carun.us", true },
{ "carusorealestate.com", true },
{ "caryefurd.com", true },
{ "casa-due-pur.com", true },
@@ -6367,15 +6447,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "casino-trio.com", true },
{ "casinobonuscodes.online", true },
{ "casinocashflow.ru", true },
- { "casinolistings.com", true },
- { "casinoluck.com", true },
+ { "casinolegal.pt", true },
{ "casinoonlinesicuri.com", true },
{ "casio-caisses-enregistreuses.fr", true },
+ { "casjay.cloud", true },
{ "casjay.com", true },
{ "casjay.info", true },
{ "caspar.ai", true },
{ "casperpanel.com", true },
{ "cassimo.com", true },
+ { "castbulletassoc.org", false },
+ { "casteloinformatica.com.br", true },
{ "castible.de", true },
{ "castlecapers.com.au", true },
{ "castlecms.io", true },
@@ -6389,6 +6471,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "castles4rascalsiow.co.uk", true },
{ "castlesrus-kent.com", true },
{ "castleswa.com.au", true },
+ { "casualdesignsfurniture.com", true },
{ "casusgrillcaribbean.com", true },
{ "cat-blum.com", true },
{ "cat-box.de", true },
@@ -6397,17 +6480,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "catalog.beer", true },
{ "catalogobiblioteca.com", true },
{ "catalogoreina.com", true },
+ { "catalogosvirtualesonline.com", true },
{ "catalystapp.co", true },
{ "catbold.space", true },
{ "catbull.com", true },
{ "catburton.co.uk", true },
+ { "catchers.cc", true },
{ "catchersgear.com", true },
{ "catchfotografie.nl", true },
{ "catchhimandkeephim.com", true },
{ "catchief.com", true },
- { "catdecor.ru", true },
{ "catenacondos.com", true },
- { "catgirl.me", true },
+ { "catfooddispensersreviews.com", true },
+ { "catgirl.science", true },
{ "catharinesomerville.com", true },
{ "catharisme.eu", true },
{ "catharisme.net", true },
@@ -6419,12 +6504,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "catl.st", true },
{ "catmoose.ca", true },
{ "catnet.dk", false },
+ { "catprog.org", true },
{ "cattivo.nl", false },
{ "catuniverse.org", true },
{ "catveteran.com", true },
+ { "caughtredhanded.co.nz", true },
{ "caulfieldeastapartments.com.au", true },
{ "caulfieldracecourseapartments.com.au", true },
{ "caulong-ao.net", true },
+ { "cav.ac", true },
{ "cavac.at", true },
{ "cave-reynard.ch", true },
{ "cavevinsdefrance.fr", true },
@@ -6441,11 +6529,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cbdev.de", true },
{ "cbdmarket.space", true },
{ "cbecrft.net", true },
+ { "cbin168.com", true },
{ "cbintermountainrealty.com", true },
{ "cbr-xml-daily.ru", true },
{ "cbsdeheidevlinder.nl", true },
{ "cbw.sh", true },
{ "cc-brantomois.fr", true },
+ { "cc2729.com", true },
{ "ccac.gov", true },
{ "ccavenue.com", true },
{ "cccwien.at", true },
@@ -6455,13 +6545,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ccoooss.com", true },
{ "ccprwebsite.org", true },
{ "ccsource.org", true },
+ { "ccss-cces.com", true },
{ "ccsys.com", true },
{ "cctvview.info", true },
{ "ccu.io", true },
{ "ccu.plus", true },
{ "ccv-deutschland.de", true },
{ "ccv.ch", true },
- { "ccv.eu", true },
{ "ccv.nl", true },
{ "cd-sport.com", true },
{ "cd.search.yahoo.com", false },
@@ -6474,6 +6564,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cdbtech.com", true },
{ "cdburnerxp.se", true },
{ "cdda.ch", true },
+ { "cdeck.net", true },
{ "cdepot.eu", true },
{ "cdkeykopen.com", true },
{ "cdlcenter.com", true },
@@ -6485,6 +6576,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cdom.de", true },
{ "cdsdigital.de", true },
{ "cdu-wilgersdorf.de", true },
+ { "cduckett.net", true },
{ "ce-pimkie.fr", true },
{ "cebz.org", true },
{ "ceciliacolombara.com", true },
@@ -6495,13 +6587,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cedricmartineau.com", true },
{ "ceebee.com", true },
{ "cejhon.cz", false },
- { "cekaja.com", true },
{ "celcomhomefibre.com.my", true },
+ { "celebmasta.com", true },
+ { "celebrityhealthcritic.com", true },
{ "celebrityscope.net", true },
{ "celectro-pro.com", true },
{ "celiendev.ch", true },
{ "celine-patisserie.fr", true },
- { "cellartracker.com", true },
{ "celltek-server.de", false },
{ "celluliteorangeskin.com", true },
{ "celluliteremovaldiet.com", true },
@@ -6519,7 +6611,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "censys.io", true },
{ "centaur.de", true },
{ "centennialradon.com", true },
- { "centerpereezd.ru", false },
{ "centerpoint.ovh", true },
{ "centillien.com", false },
{ "centio.bg", true },
@@ -6542,6 +6633,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "centrosocialferrel.pt", true },
{ "centrumhodinek.cz", true },
{ "centruvechisv.ro", true },
+ { "centrym.top", true },
{ "centum.no", true },
{ "centura.de", true },
{ "centurialeonina.com", true },
@@ -6562,7 +6654,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cerebelo.info", true },
{ "cerena-silver.ru", true },
{ "ceres-corp.org", true },
- { "ceres1.space", true },
{ "cerivo.co.uk", true },
{ "cermak.photos", true },
{ "cernakova.eu", true },
@@ -6580,6 +6671,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "certfa.com", true },
{ "certible.com", true },
{ "certificatedetails.com", true },
+ { "certificatespending.com", true },
{ "certificatetools.com", true },
{ "certifiednurses.org", true },
{ "certmonitor.com.au", true },
@@ -6587,7 +6679,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "certnazionale.it", true },
{ "certspotter.com", true },
{ "certspotter.org", true },
- { "cervejista.com", true },
{ "cesboard.com", true },
{ "cesdb.com", true },
{ "cesipagano.com", true },
@@ -6600,20 +6691,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cetamol.com", true },
{ "ceu.edu", false },
{ "cevo.com.hr", true },
- { "ceyizlikelisleri.com", true },
{ "cf-ide.de", true },
{ "cf-tm.net", true },
- { "cf11.de", true },
{ "cfa.gov", true },
{ "cfan.space", true },
+ { "cfda.gov", true },
{ "cfdcre5.org", true },
{ "cfh.com", true },
{ "cfno.org", true },
{ "cfo.gov", true },
{ "cfpa-formation.fr", true },
- { "cfsh.tk", true },
{ "cftc.gov", true },
{ "cftcarouge.com", true },
+ { "cfttt.com", true },
+ { "cfurl.cf", true },
{ "cfxdesign.com", true },
{ "cg-systems.hu", true },
{ "cg.search.yahoo.com", false },
@@ -6635,6 +6726,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chabert-provence.fr", true },
{ "chad.ch", true },
{ "chadstoneapartments.com.au", true },
+ { "chadtaljaardt.com", true },
{ "chaifeng.com", true },
{ "chainedunion.info", true },
{ "chaip.org", true },
@@ -6650,7 +6742,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "challstrom.com", true },
{ "chamathellawala.com", true },
{ "chambion.ch", true },
- { "chameleon-ents.co.uk", true },
+ { "chamicro.com", true },
{ "champdogs.co.uk", true },
{ "champdogs.com", true },
{ "champicreuse.fr", true },
@@ -6688,14 +6780,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chapelfordbouncers.co.uk", true },
{ "chapiteauxduleman.fr", true },
{ "chaplain.co", true },
- { "charakato.com", true },
{ "charbonnel.eu", true },
{ "charcoal-se.org", true },
{ "charcoalvenice.com", true },
+ { "chargedmonkey.com", true },
{ "chargify.com", true },
+ { "charisma.ai", true },
{ "charissadescande.com", true },
{ "charitylog.co.uk", true },
{ "charl.eu", true },
+ { "charlenevondell.com", true },
{ "charles-darwin.com", true },
{ "charlesbwise.com", true },
{ "charlesjay.com", true },
@@ -6714,8 +6808,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "charlottesvillegolfcommunities.com", true },
{ "charlotteswimmingpoolbuilder.com", true },
{ "charmander.me", true },
+ { "charmanterelefant.at", true },
{ "charmingsaul.com", true },
- { "charmyadesara.com", true },
{ "charr.xyz", true },
{ "chars.ga", true },
{ "charta-digitale-vernetzung.de", true },
@@ -6738,7 +6832,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chatbotclick.com", true },
{ "chatbots.systems", true },
{ "chatear.social", true },
- { "chateau-belvoir.com", true },
{ "chateau-de-lisle.fr", true },
{ "chateaudestrainchamps.com", true },
{ "chatfacile.org", true },
@@ -6754,14 +6847,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chatu.io", true },
{ "chatu.me", true },
{ "chatucomputers.com", true },
- { "chatxp.com", true },
{ "chatxsingle.net", true },
{ "chatxtutti.com", true },
{ "chatzimanolis.com", true },
{ "chatzimanolis.gr", true },
{ "chaurocks.com", true },
{ "chaussenot.net", true },
- { "chaverde.org", true },
{ "chavetaro.com", true },
{ "chaz6.com", true },
{ "chazalet.fr", true },
@@ -6789,7 +6880,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cheapgeekts.com", false },
{ "cheapgoa.com", true },
{ "cheapiesystems.com", true },
- { "cheapssl.com.tr", true },
{ "cheapticket.in", true },
{ "cheapwritinghelp.com", true },
{ "check.torproject.org", false },
@@ -6800,6 +6890,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "checkmypsoriasis.com", true },
{ "checkout.google.com", true },
{ "checkpoint-tshirt.com", true },
+ { "checkrente.nl", true },
{ "checkspf.net", true },
{ "checktype.com", true },
{ "checkui.com", true },
@@ -6817,6 +6908,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cheetahwerx.com", true },
{ "cheez.systems", true },
{ "cheezflix.uk", true },
+ { "chefwear.com", true },
{ "chehalemgroup.com", true },
{ "cheladmin.ru", true },
{ "chelema.xyz", true },
@@ -6832,6 +6924,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chenqinghua.com", true },
{ "chentianyi.cn", true },
{ "chenzhekl.me", true },
+ { "chenzhipeng.com.cn", true },
{ "cheolguso.com", true },
{ "cherevoiture.com", true },
{ "cherie-belle.com", true },
@@ -6841,6 +6934,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cherrywoodtech.com", true },
{ "chertseybouncycastles.co.uk", true },
{ "chesspoint.ch", true },
+ { "chestnut.cf", true },
{ "chevy37.com", true },
{ "chevymotor-occasions.be", true },
{ "chewey.de", true },
@@ -6855,6 +6949,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chiaramail.com", true },
{ "chiaseeds24.com", true },
{ "chiboard.co", true },
+ { "chibr.eu", true },
{ "chic-leather.com", true },
{ "chicagolug.org", true },
{ "chicagostudentactivists.org", true },
@@ -6863,9 +6958,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chiemgauflirt.de", true },
{ "chif16.at", true },
{ "chikan-beacon.net", true },
- { "chikatomo-ryugaku.com", true },
{ "chikazawa.info", true },
- { "chikory.com", true },
{ "childcare.gov", true },
{ "childcounseling.org", true },
{ "childcustodylegalaid.org", true },
@@ -6880,9 +6973,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "childvisitationassistance.org", true },
{ "childwelfare.gov", true },
{ "chilihosting.eu", true },
+ { "chilimath.com", true },
{ "chilio.net", true },
{ "chillebever.nl", true },
- { "chilli943.info", true },
{ "chima.net", true },
{ "chima.us", true },
{ "chimeratool.com", true },
@@ -6893,14 +6986,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chinaspaceflight.com", true },
{ "chinatrademarkoffice.com", true },
{ "chinawhale.com", true },
+ { "ching.tv", true },
{ "chint.ai", true },
{ "chinwag.im", true },
{ "chinwag.org", true },
{ "chipcore.com", true },
+ { "chipglobe.com", true },
{ "chippy.ch", false },
+ { "chips-scheduler.de", true },
{ "chiralsoftware.com", true },
{ "chireiden.net", true },
{ "chiro-neuchatel.ch", true },
+ { "chiropractic.gr", true },
{ "chiropracticwpb.com", true },
{ "chiropraktik-riemann.de", true },
{ "chiropraticien-neuchatel.ch", true },
@@ -6913,10 +7010,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chitoku.jp", false },
{ "chksite.com", true },
{ "chl.la", true },
- { "chloeallison.co.uk", true },
- { "chloehorler.com", true },
{ "chloescastles.co.uk", true },
{ "chlth.com", true },
+ { "chmielarz.it", true },
{ "chmsoft.com.ua", true },
{ "chmsoft.ru", true },
{ "chmurakotori.ml", true },
@@ -6927,8 +7023,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chocolatesandhealth.com", true },
{ "chocolatier-tristan.ch", true },
{ "chocotough.nl", false },
- { "chodocu.com", true },
- { "choe.fi", true },
{ "choisirmonerp.com", true },
{ "chokladfantasi.net", true },
{ "chollima.pro", true },
@@ -6945,6 +7039,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chosenplaintext.org", true },
{ "chourishi-shigoto.com", true },
{ "chowii.com", true },
+ { "choyri.com", true },
{ "chris-edwards.net", true },
{ "chrisaitch.com", true },
{ "chrisb.me", true },
@@ -6952,6 +7047,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chrisbryant.me.uk", true },
{ "chrisburnell.com", true },
{ "chriscarey.com", true },
+ { "chriscowley.me.uk", true },
{ "chrisdecairos.ca", true },
{ "chrisirwin.ca", true },
{ "chrisjean.com", true },
@@ -6982,11 +7078,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "christianillies.de", true },
{ "christianjens.com", true },
{ "christianliebel.com", true },
+ { "christianlis.org.uk", true },
+ { "christianlis.uk", true },
{ "christianpeltier.com", true },
{ "christianpilgrimage.com.au", true },
{ "christians.dating", true },
{ "christianscholz.de", true },
- { "christianscholz.eu", true },
{ "christiehawkes.com", true },
{ "christiesantiques.com", true },
{ "christmascard.be", true },
@@ -7002,6 +7099,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "christophertruncer.com", true },
{ "christophkreileder.com", true },
{ "christophsackl.de", true },
+ { "christthekingparish.net", true },
{ "chriswald.com", true },
{ "chriswarrick.com", true },
{ "chriswbarry.com", true },
@@ -7020,18 +7118,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "chronoshop.cz", true },
{ "chrpaul.de", true },
{ "chrstn.eu", true },
+ { "chrysanthos.net", true },
{ "chsterz.de", true },
- { "chua.family", true },
{ "chuchote-moi.fr", true },
{ "chuck.ovh", true },
{ "chun.pro", true },
{ "chunche.net", true },
{ "chunk.science", true },
{ "chupadelfrasco.com", true },
+ { "chuppa.com.au", true },
{ "churchlinkpro.com", true },
{ "churchthemes.com", true },
- { "churchwebcanada.ca", true },
- { "churchwebsupport.com", true },
{ "churningtracker.com", true },
{ "chxdf.net", true },
{ "chyen.cc", true },
@@ -7044,17 +7141,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cianmawhinney.me", true },
{ "ciansc.com", true },
{ "ciat.no", false },
- { "cidadedopoker.com.br", true },
{ "cidbot.com", true },
- { "ciderclub.com", true },
{ "cidersus.com.ec", true },
{ "cie-theatre-montfaucon.ch", true },
{ "cielbleu.org", true },
- { "cielly.com", true },
{ "cifop-numerique.fr", true },
{ "cig-dem.com", true },
{ "cigar-cartel.com", true },
- { "cigarterminal.com", false },
{ "cilloc.be", true },
{ "cima-idf.fr", true },
{ "cimballa.com", true },
@@ -7062,12 +7155,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cinafilm.com", true },
{ "cinay.pw", true },
{ "cindey.io", true },
+ { "cindydudley.com", true },
{ "cine-music.de", true },
{ "cine.to", true },
{ "cinefilzonen.se", true },
{ "cinelite.club", true },
- { "cinema5.ru", false },
{ "cinemarxism.com", true },
+ { "cinemasetfree.com", true },
{ "cinemysticism.com", true },
{ "cineplex.my", true },
{ "ciner.is", true },
@@ -7094,7 +7188,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cipri.nl", true },
{ "cipri.org", true },
{ "cipria.no", true },
- { "cipriano.nl", true },
{ "cipy.com", true },
{ "cir.is", true },
{ "circara.com", true },
@@ -7110,8 +7203,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cirujanooral.com", true },
{ "cirurgicagervasio.com.br", true },
{ "cirurgicalucena.com.br", true },
+ { "cirurgicasalutar.com.br", true },
{ "ciscodude.net", true },
{ "cisoaid.com", true },
+ { "cisofy.com", true },
+ { "cispeo.org", true },
{ "ciss.ltd", true },
{ "cisum-cycling.com", true },
{ "cisy.me", true },
@@ -7125,7 +7221,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "citizensleague.org", true },
{ "citizenspact.eu", true },
{ "citizing.org", true },
- { "citroner.blog", true },
{ "citrusui.me", true },
{ "cittadesign.com", false },
{ "citton.com.br", true },
@@ -7140,12 +7235,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "citysportapp.com", true },
{ "cityworksonline.com", true },
{ "ciubotaru.tk", true },
- { "civicunicorn.com", true },
- { "civicunicorn.us", true },
+ { "ciurcasdan.eu", true },
{ "civilg20.org", true },
{ "civillines.nl", true },
{ "cj-espace-vert.fr", true },
{ "cj-jackson.com", true },
+ { "cjdby.net", true },
+ { "cjdpenterprises.com", true },
+ { "cjdpenterprises.com.au", true },
+ { "cjean.fr", true },
{ "cjey.me", true },
{ "cjhzp.net", true },
{ "cjr.host", true },
@@ -7164,6 +7262,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ckostecki.de", true },
{ "cktennis.com", true },
{ "cl.search.yahoo.com", false },
+ { "clacetandil.com.ar", true },
{ "clad.cf", true },
{ "claimconnect.com", true },
{ "claimconnect.us", true },
@@ -7202,6 +7301,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "clazzrooms.com", true },
{ "cldfile.com", true },
{ "cldly.com", true },
+ { "cleanapproachnw.com", true },
{ "cleanbeautymarket.com.au", true },
{ "cleanbrowsing.org", true },
{ "cleancode.club", true },
@@ -7230,7 +7330,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "clickclock.cc", true },
{ "clickenergy.com.au", true },
{ "clickforclever.com", true },
- { "clickomobile.com", true },
{ "clickphish.com", true },
{ "clicksaveandprint.com", true },
{ "clien.net", true },
@@ -7244,7 +7343,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "climatestew.com", true },
{ "clindoeilmontagne.com", true },
{ "clingout.com", true },
- { "clinicadam.com", true },
+ { "clinicadam.com", false },
{ "clinicadelogopedia.net", true },
{ "clinicalrehabilitation.info", true },
{ "clinicaltrials.gov", true },
@@ -7264,11 +7363,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "clochix.net", true },
{ "clockcaster.com", true },
{ "clockworksms.com", true },
- { "clod-hacking.com", true },
{ "clojurescript.ru", true },
{ "cloppenburg-autmobil.com", true },
{ "cloppenburg-automobil.com", true },
- { "clorik.com", true },
{ "clorophilla.net", true },
{ "closeli.cn", true },
{ "closelinksecurity.co.uk", true },
@@ -7283,7 +7380,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cloud42.ch", false },
{ "cloud9bouncycastlehire.com", true },
{ "cloudapps.digital", true },
- { "cloudbolin.es", true },
{ "cloudbreaker.de", true },
{ "cloudbrothers.info", true },
{ "cloudcactuar.com", false },
@@ -7300,21 +7396,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cloudia.org", true },
{ "cloudily.com", true },
{ "cloudimproved.com", true },
- { "cloudimprovedtest.com", true },
+ { "cloudkeep.nl", true },
{ "cloudkit.pro", false },
+ { "cloudlessdreams.com", true },
{ "cloudlight.biz", true },
- { "cloudmigrator365.com", true },
{ "cloudnote.cc", true },
{ "cloudns.net", true },
{ "cloudoptimizedsmb.com", true },
{ "cloudoptimus.com", true },
- { "cloudpagesforwork.com", true },
- { "cloudpebble.net", true },
{ "cloudpengu.in", true },
{ "cloudpipes.com", true },
{ "cloudsecurityalliance.org", true },
{ "cloudservice.io", true },
{ "cloudservices.nz", true },
+ { "cloudsign.jp", true },
{ "cloudsocial.io", true },
{ "cloudspace-analytics.com", true },
{ "cloudspeedy.net", true },
@@ -7328,35 +7423,38 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "clownindeklas.nl", true },
{ "cloxy.com", true },
{ "clr3.com", true },
+ { "clsfoundationrepairandwaterproofing.com", true },
{ "clsimage.com", true },
{ "clsoft.ch", true },
{ "clu-in.org", true },
{ "club-adulti.ro", true },
{ "club-corsicana.de", true },
+ { "club-creole.com", true },
{ "club-duomo.com", true },
{ "club-is.ru", true },
+ { "club-premiere.com", true },
{ "club-reduc.com", true },
{ "club103.ch", true },
+ { "clubcorsavenezuela.com", true },
{ "clubdelzapato.com", true },
{ "clubedalutashop.com", true },
{ "clubefiel.com.br", true },
{ "clubempleos.com", true },
{ "clubeohara.com", true },
{ "clubfamily.de", true },
+ { "clubgalaxy.futbol", true },
{ "clubiconkenosha.com", true },
- { "clubmate.rocks", true },
{ "clubmini.jp", true },
{ "clubnoetig-ink2g.de", true },
{ "clubon.space", true },
{ "clubscannan.ie", true },
{ "clueful.ca", true },
- { "cluefulca.com", true },
- { "cluefulca.net", true },
- { "cluefulca.org", true },
+ { "cluster.biz.tr", true },
{ "clusteranalyse.net", true },
{ "clusterfuck.nz", true },
{ "clustermaze.net", true },
{ "clweb.ch", true },
+ { "cm.center", true },
{ "cmacacias.ch", true },
{ "cmadeangelis.it", true },
{ "cmahy.be", true },
@@ -7394,6 +7492,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cnet-hosting.com", true },
{ "cni-certing.it", true },
{ "cnre.eu", true },
+ { "cnvt.fr", true },
{ "co-factor.ro", true },
{ "co-founder-stuttgart.de", true },
{ "co.search.yahoo.com", false },
@@ -7408,11 +7507,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "coastline.net.au", true },
{ "coathangastrangla.com", true },
{ "coathangastrangler.com", true },
- { "coathangerstrangla.com", true },
- { "coathangerstrangler.com", true },
- { "coatl-industries.com", true },
{ "cobalt.io", true },
{ "cobaltgp.com", true },
+ { "cobcode.com", true },
{ "cobracastles.co.uk", true },
{ "cocaine-import.agency", true },
{ "cocaine.ninja", true },
@@ -7425,7 +7522,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "coco-line.ch", true },
{ "cocoaheads.at", false },
{ "cocoamexico.com", true },
- { "cocodemy.com", true },
{ "cocodroid.com", true },
{ "coconutoil24.com", true },
{ "cocoscastles.co.uk", true },
@@ -7454,6 +7550,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "codeine.co.uk", true },
{ "codeit.guru", true },
{ "codeit.us", true },
+ { "codejots.com", true },
+ { "codejunkie.de", false },
{ "codemonster.eu", true },
{ "codenode.io", true },
{ "codeofthenorth.com", true },
@@ -7465,7 +7563,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "codercy.com", true },
{ "codereview.appspot.com", false },
{ "codereview.chromium.org", false },
- { "coderhangout.com", true },
{ "coderme.com", true },
{ "codersbistro.com", true },
{ "codes.pk", true },
@@ -7483,6 +7580,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "codeventure.de", true },
{ "codeversetech.com", true },
{ "codewild.de", true },
+ { "codexpo.net", true },
{ "codeyellow.nl", true },
{ "codific.com", true },
{ "codific.eu", true },
@@ -7493,11 +7591,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "coding.net", true },
{ "codingforspeed.com", true },
{ "codingfromhell.net", true },
+ { "codinginfinity.me", true },
{ "codingrobots.com", true },
{ "codxg.org", true },
{ "codyevanscomputer.com", true },
{ "codymoniz.com", true },
{ "codyqx4.com", true },
+ { "coentropic.com", true },
{ "coffee-mamenoki.jp", true },
{ "coffeeandteabrothers.com", true },
{ "coffeetocode.me", true },
@@ -7508,10 +7608,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cognitip.com", true },
{ "cognitivecomputingconsortium.com", true },
{ "cognitohq.com", true },
+ { "cogsquad.house", true },
{ "coi-verify.com", true },
{ "coiffeurschnittstelle.ch", true },
{ "coigach-assynt.org", true },
- { "coimmvest.com", true },
{ "coin-quest.net", true },
{ "coin.dance", true },
{ "coinapult.com", true },
@@ -7532,6 +7632,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "coinloan.io", true },
{ "coinmewallet.com", true },
{ "coinpit.io", true },
+ { "coins2001.ru", true },
{ "coinx.pro", true },
{ "coisasdemulher.org", true },
{ "cojam.ru", true },
@@ -7571,9 +7672,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "collabornation.net", true },
{ "collaction.hk", true },
{ "collada.org", true },
- { "collbox.co", true },
{ "collectdocs.com", true },
{ "collectfood.com", true },
+ { "collectiblebeans.com", true },
{ "collectivesupply.com", true },
{ "collectorknives.net", true },
{ "collectorsystems.com", true },
@@ -7595,9 +7696,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "colorectalcompounding.com", true },
{ "colorfuldots.com", true },
{ "colorhexa.com", true },
- { "coloringnotebook.com", true },
{ "coloristcafe.com", true },
- { "colorlifesupport.com", true },
{ "colorsbycarin.com", true },
{ "colossal-events.co.uk", true },
{ "colourfulcastles.co.uk", true },
@@ -7607,6 +7706,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "colyakootees.com", true },
{ "com-in.de", true },
{ "comalia.com", true },
+ { "comandofilmes.club", true },
{ "comarkinstruments.net", true },
{ "combatircelulitis.com", true },
{ "combattrecellulite.com", true },
@@ -7614,17 +7714,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "combron.co.uk", true },
{ "combron.com", true },
{ "combron.nl", true },
- { "comchezmeme.com", true },
{ "comcol.nl", true },
- { "comdotgame.com", true },
{ "comdurav.com", true },
+ { "comeals.com", true },
+ { "comeoishii.com", true },
{ "comercialtpv.com", true },
{ "comerford.net", true },
{ "comestoarra.com", true },
{ "cometbot.cf", true },
{ "cometcache.com", true },
{ "cometonovascotia.ca", true },
- { "cometrueunlimited.com", true },
+ { "comevius.com", true },
+ { "comevius.org", true },
+ { "comevius.xyz", true },
{ "comff.net", true },
{ "comfintouch.com", true },
{ "comflores.com.br", true },
@@ -7636,6 +7738,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "comidasperuanas.net", true },
{ "comiteaintriathlon.fr", true },
{ "comm.cx", true },
+ { "commania.co.kr", true },
{ "commco.nl", true },
{ "commechezvous.ch", true },
{ "commerce.gov", true },
@@ -7648,6 +7751,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "commoncore4kids.com", true },
{ "communityblog.fedoraproject.org", true },
{ "communitycodeofconduct.com", true },
+ { "communityflow.info", true },
{ "communote.net", true },
{ "como-se-escribe.com", true },
{ "comocurarlagastritistratamientonatural.com", true },
@@ -7659,18 +7763,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "comogene.com", true },
{ "comohacerelamoraunhombrenet.com", true },
{ "comohacerpara.com", true },
- { "comoimportar.net", true },
{ "comopuededejardefumar.net", true },
{ "comoquitarlacaspa24.com", true },
{ "comoquitarlasestriasrapidamente.com", true },
{ "comorecuperaratumujerpdf.com", true },
{ "comosatisfaceraunhombreenlacamaydejarloloco.com", true },
- { "comosecarabarriga.net", true },
- { "comoseduzir.net", true },
+ { "comosefazisto.com.br", true },
{ "comp2go.com.au", true },
{ "compagnia-buffo.de", true },
{ "compagniemartin.com", true },
{ "comparatif-moto.fr", true },
+ { "compareandrecycle.co.uk", true },
{ "compareandrecycle.com", false },
{ "compareinsurance.com.au", true },
{ "comparesoft.com", true },
@@ -7698,8 +7801,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "compraneta.com", false },
{ "compreautomacao.com.br", true },
{ "compree.com", true },
- { "compromised.com", true },
- { "compsmag.com", true },
+ { "compros.me", true },
+ { "compservice.in.ua", true },
{ "compubench.com", true },
{ "compucastell.ch", true },
{ "compucorner.mx", true },
@@ -7719,6 +7822,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "comunidadmontepinar.es", true },
{ "comw.cc", true },
{ "conalcorp.com", true },
+ { "conatus.ai", true },
{ "conaudisa.com", false },
{ "concept-web.ch", true },
{ "concertengine.com", true },
@@ -7726,6 +7830,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "concertsenboite.fr", true },
{ "concertsto.com", true },
{ "conciliumnotaire.ca", true },
+ { "concretelevelingsystems.com", true },
{ "concreterepairatlanta.com", true },
{ "concursopublico.com.br", true },
{ "concursos.com.br", true },
@@ -7747,6 +7852,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "conejovalleylandscapelighting.com", true },
{ "conejovalleylighting.com", true },
{ "conejovalleyoutdoorlighting.com", true },
+ { "conexiontransporte.com", true },
{ "confiancefoundation.org", true },
{ "confidential.network", true },
{ "config.schokokeks.org", false },
@@ -7754,17 +7860,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "conflux.tw", true },
{ "conformax.com.br", true },
{ "conformist.jp", true },
+ { "confucio.cl", true },
{ "confuddledpenguin.com", true },
{ "cong5.net", true },
{ "congineer.com", true },
{ "congobunkering.com", true },
{ "conju.cat", true },
{ "conjugacao.com.br", true },
- { "conkret.ch", true },
{ "conkret.de", true },
{ "conkret.mobi", true },
{ "conmedapps.com", true },
+ { "conn.cx", true },
{ "connect-ed.network", true },
+ { "connect-me.com", true },
{ "connect.dating", true },
{ "connect.facebook.net", true },
{ "connecta.store", true },
@@ -7774,17 +7882,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "connectmy.car", true },
{ "connecto-data.com", true },
{ "connectum.eu", true },
+ { "conner.work", true },
{ "connexas.eu", true },
{ "connext.de", true },
{ "connictro.de", true },
{ "conniesacademy.com", true },
+ { "connorhatch.com", true },
{ "connorsmith.co", true },
{ "connyduck.at", true },
+ { "conociendosalama.com", true },
{ "conocimientosdigitales.com", true },
{ "conory.com", true },
{ "conpins.nl", true },
{ "conrad-kostecki.de", true },
{ "conradkostecki.de", true },
+ { "conrail.blue", true },
{ "consciousbrand.co", true },
{ "consciouschoices.net", true },
{ "consec-systems.de", true },
@@ -7804,12 +7916,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "constancechen.me", true },
{ "constant-rough.de", true },
{ "constares.de", true },
- { "construct-trust.com", true },
{ "constructexpres.ro", true },
+ { "constructieve.nl", true },
{ "construction-student.co.uk", true },
{ "constructionjobs.com", true },
{ "consul.io", true },
{ "consulenza.pro", true },
+ { "consultation.biz.tr", true },
{ "consultimator.com", true },
{ "consultimedia.de", true },
{ "consultpetkov.com", true },
@@ -7830,6 +7943,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "conti-profitlink.co.uk", true },
{ "continuum.memorial", true },
{ "contrabass.net", true },
+ { "contractdigital.co.uk", true },
{ "contractormountain.com", true },
{ "contractwriters.com", true },
{ "contraspin.co.nz", true },
@@ -7839,6 +7953,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "controlautocom.com.br", true },
{ "controlbooth.com", true },
{ "controle.net", true },
+ { "controleer-maar-een-ander.nl", true },
{ "controltickets.com.br", true },
{ "contxt-agentur.de", true },
{ "conv2pdf.com", true },
@@ -7875,6 +7990,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cool110.tk", true },
{ "cool110.xyz", true },
{ "coolattractions.co.uk", true },
+ { "coolbitx.com", true },
{ "cooldan.com", true },
{ "coole-fete.de", true },
{ "coolerssr.space", true },
@@ -7883,6 +7999,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "coolrc.me", true },
{ "coolviewthermostat.com", true },
{ "coolwallet.io", true },
+ { "coonawarrawines.com.au", true },
{ "coopens.com", true },
{ "coor.fun", true },
{ "coore.jp", true },
@@ -7891,8 +8008,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "copinstant.com", true },
{ "copperhead.co", true },
{ "copperheados.com", true },
+ { "coppermein.co.za", true },
{ "copplaw.com", true },
- { "coptic-treasures.com", true },
{ "coptkm.cz", true },
{ "copycaught.co", true },
{ "copycaught.net", true },
@@ -7902,6 +8019,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "copypoison.com", true },
{ "copyright-watch.org", true },
{ "copytrack.com", true },
+ { "coquibus.net", true },
{ "corbi.net.au", true },
{ "cordep.biz", true },
{ "corder.tech", true },
@@ -7909,10 +8027,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cordis.io", true },
{ "cordis.tk", true },
{ "cordlessdog.com", true },
- { "core-concepts.de", true },
+ { "core-concepts.de", false },
{ "core-networks.de", true },
{ "core.mx", true },
- { "core.org.pt", false },
+ { "core.org.pt", true },
{ "coreapm.org", true },
{ "corecodec.com", true },
{ "coredump.gr", true },
@@ -7920,11 +8038,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "corelia.net", true },
{ "corepartners.com.ua", true },
{ "coresolutions.ca", true },
- { "coresos.com", true },
{ "coreum.ca", true },
{ "coreyjmahler.com", true },
{ "corgi.party", true },
{ "coribi.com", true },
+ { "corinastefan.ro", true },
{ "corintech.net", true },
{ "corisu.co", true },
{ "corkedwinebar.com", true },
@@ -7949,6 +8067,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "corporateclash.net", true },
{ "corporatecomputingsolutions.com", true },
{ "corporateinfluencers.com", true },
+ { "corporativoarval.info", true },
{ "corpsepaint.life", true },
{ "corpulant.coffee", true },
{ "corpulantcoffee.com", true },
@@ -7957,6 +8076,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "corpusslayer.com", true },
{ "corrbee.com", true },
{ "correctiv.org", true },
+ { "corrick.io", true },
{ "corrupted.io", true },
{ "corsa-b.uk", true },
{ "corsectra.com", true },
@@ -7987,6 +8107,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cospol.ch", true },
{ "costa-rica-reisen.ch", true },
{ "costa-rica-reisen.de", true },
+ { "costablanca.villas", true },
{ "costablancavoorjou.com", true },
{ "costcofinance.com", true },
{ "costinstefan.eu", true },
@@ -8001,6 +8122,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "counter-team.ch", true },
{ "counterglobal.com", true },
{ "countermail.com", true },
+ { "countermats.net", true },
+ { "countersolutions.co.uk", true },
{ "countingto.one", true },
{ "countryattire.com", true },
{ "countrybrewer.com.au", true },
@@ -8015,11 +8138,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "couragefound.org", true },
{ "coursables.com", true },
{ "coursera.org", true },
- { "courseworkbank.info", true },
{ "courtlistener.com", true },
{ "couscous.recipes", true },
{ "cousincouples.com", true },
{ "coussinsky.net", true },
+ { "couvreur-hinault.fr", true },
{ "covbounce.co.uk", true },
{ "covenantoftheriver.org", true },
{ "covermytrip.com.au", true },
@@ -8050,9 +8173,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cprheartcenter.com", true },
{ "cprnearme.com", true },
{ "cptoon.com", true },
+ { "cpu.biz.tr", true },
{ "cpvmatch.eu", true },
{ "cpy.pt", true },
- { "cqchome.com", true },
{ "cqn.ch", true },
{ "cr.search.yahoo.com", false },
{ "cr0nus.net", true },
@@ -8069,7 +8192,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "craftinginredlipstick.com", true },
{ "craftist.de", true },
{ "craftsmandruggets.com", true },
- { "craftwmcp.xyz", true },
{ "craftyguy.net", true },
{ "craftyphotons.net", true },
{ "crag.com.tw", true },
@@ -8085,6 +8207,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "crawcial.de", true },
{ "crawfordcountytcc.org", true },
{ "crawl.report", true },
+ { "crawler.ninja", true },
{ "crawleybouncycastles.co.uk", true },
{ "crawlspaceandbasementsolutions.com", true },
{ "crazy-coders.com", true },
@@ -8094,7 +8217,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "crazydomains.co.uk", true },
{ "crazydomains.com.au", true },
{ "crazydomains.in", true },
- { "crazyfamily11.de", true },
{ "crazymeeshu.com", true },
{ "crazynoisybizarre.town", true },
{ "crazypaul.com", true },
@@ -8105,16 +8227,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "crea-shops.ch", true },
{ "crea.bg", true },
{ "creadstudy.com", true },
+ { "crealogix-online.com", true },
{ "creamcastles.co.uk", true },
{ "creared.edu.co", true },
- { "create-ls.jp", true },
{ "create-together.nl", true },
{ "createme.com.pl", true },
{ "createursdefilms.com", true },
{ "creatieven.com", true },
{ "creation-contemporaine.com", true },
{ "creations-edita.com", true },
- { "creative-coder.de", false },
{ "creative-wave.fr", true },
{ "creativebites.de", true },
{ "creativecaptiv.es", true },
@@ -8125,6 +8246,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "creativedigital.co.nz", true },
{ "creativefolks.co.uk", true },
{ "creativefreedom.ca", true },
+ { "creativeglassgifts.com.au", true },
+ { "creativeink.de", true },
{ "creativekkids.com", true },
{ "creativelaw.eu", true },
{ "creativeliquid.com", true },
@@ -8138,7 +8261,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "creators.co", true },
{ "creators.direct", true },
{ "creatujoya.com", true },
- { "crecips.com", true },
{ "credential.eu", true },
{ "credex.bg", true },
{ "credigo.se", true },
@@ -8156,7 +8278,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "crem.in", false },
{ "cremepassion.de", true },
{ "crena.ch", true },
- { "creorin.com", true },
{ "crepa.ch", true },
{ "crepererum.net", true },
{ "crescent.gr.jp", true },
@@ -8166,7 +8287,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cretica.no", true },
{ "creusalp.ch", true },
{ "crew505.org", true },
- { "crge.eu", true },
{ "crgm.net", true },
{ "criadorespet.com.br", true },
{ "cribcore.com", true },
@@ -8197,11 +8317,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "croceverdevb.it", true },
{ "crochetnerd.com", true },
{ "croisedanslemetro.com", true },
- { "croisieres.discount", true },
{ "croixblanche-haguenau.fr", true },
{ "cromefire.myds.me", true },
{ "cronberg.ch", true },
{ "croncron.io", true },
+ { "cronix.cc", true },
{ "cronologie.de", true },
{ "cronometer.com", true },
{ "cropdiagnosis.com", true },
@@ -8225,6 +8345,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "crowdbox.net", true },
{ "crowdcloud.be", true },
{ "crowdliminal.com", true },
+ { "crowdsim3d.com", true },
{ "crowdsupply.com", true },
{ "crowdwis.com", true },
{ "crowncastles.co.uk", true },
@@ -8258,19 +8379,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "crypto.cat", false },
{ "crypto.graphics", true },
{ "crypto.is", false },
- { "cryptobells.com", false },
{ "cryptobin.co", true },
{ "cryptocon.org", true },
- { "cryptoegg.ca", true },
{ "cryptofan.org", true },
- { "cryptofrog.co", true },
{ "cryptography.ch", true },
{ "cryptography.io", true },
{ "cryptoguidemap.com", true },
- { "cryptoisnotacrime.org", true },
- { "cryptojourney.com", true },
{ "cryptolinc.com", true },
{ "cryptology.ch", true },
+ { "cryptolosophy.io", true },
{ "cryptolosophy.org", true },
{ "cryptonom.org", true },
{ "cryptonym.com", true },
@@ -8289,6 +8406,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "crystalapp.ca", true },
{ "crystalchandelierservices.com", true },
{ "crystalgrid.net", true },
+ { "crystallizedcouture.com", true },
{ "crystone.me", true },
{ "cryz.ru", true },
{ "cs2016.ch", true },
@@ -8299,22 +8417,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "csca.me", true },
{ "cscdn.net", true },
{ "csd-sevnica.si", true },
- { "csfcloud.com", true },
{ "csfd.cz", true },
{ "csfloors.co.uk", true },
{ "csfm.com", true },
{ "csgo.su", true },
- { "csgogamers.com", false },
- { "csgohandouts.com", true },
{ "csgoswap.com", true },
{ "csgotwister.com", true },
{ "csharpmarc.net", true },
{ "cshopify.com", true },
{ "csi.lk", true },
+ { "csinterstargeneve.ch", true },
{ "cskentertainment.co.uk", true },
{ "csmainframe.com", true },
{ "csokolade.hu", true },
{ "csp.ch", true },
+ { "cspeti.hu", true },
{ "cspvalidator.org", true },
{ "csrichter.com", true },
{ "csru.net", true },
@@ -8327,7 +8444,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "csu.st", true },
{ "csuw.net", true },
{ "csvalpha.nl", true },
- { "cswarzone.com", true },
{ "ct.search.yahoo.com", false },
{ "ctc-transportation.com", true },
{ "ctcue.com", true },
@@ -8344,7 +8460,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ctomp.io", true },
{ "ctpe.net", true },
{ "ctrld.me", true },
- { "ctyi.me", true },
{ "cu247secure.ie", true },
{ "cub-bouncingcastles.co.uk", true },
{ "cube-cloud.com", true },
@@ -8352,13 +8467,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cubecart-demo.co.uk", true },
{ "cubecart-hosting.co.uk", true },
{ "cubecraft.net", true },
- { "cubecraftstore.com", true },
- { "cubecraftstore.net", true },
{ "cubekrowd.net", true },
{ "cubia.de", true },
{ "cubia3.com", true },
{ "cubia4.com", true },
{ "cubile.xyz", true },
+ { "cublick.com", true },
{ "cubos.io", false },
{ "cubostecnologia.com", false },
{ "cubostecnologia.com.br", false },
@@ -8380,29 +8494,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cultureelbeleggen.nl", true },
{ "culturerain.com", true },
{ "cultureroll.com", true },
+ { "culturesouthwest.org.uk", true },
{ "cumplegenial.com", true },
- { "cunha.be", true },
+ { "cuntflaps.me", true },
{ "cuoc.org.uk", true },
{ "cup.al", true },
{ "cupcakesandcrinoline.com", true },
{ "cupcao.gov", true },
{ "cupi.co", true },
- { "cupofarchitects.net", true },
{ "cupom.net", true },
{ "cuppycakes.fi", true },
{ "cur.by", true },
{ "curacao-firma.com", true },
{ "curamail.co.uk", true },
{ "curareldolordeespalda.com", true },
+ { "curatedgeek.com", true },
{ "curbside.com", true },
{ "curia.fi", true },
{ "curieux.digital", true },
{ "curio-shiki.com", true },
{ "curiosity-driven.org", true },
+ { "curiouspeddler.com", true },
{ "curlybracket.co.uk", true },
{ "currency-strength.com", true },
- { "current.com", true },
{ "currentlystreaming.com", true },
+ { "currentlyusa.com", true },
{ "currentobserver.com", true },
{ "currynissanmaparts.com", true },
{ "cursos.com", true },
@@ -8415,6 +8531,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "curtislinville.net", true },
{ "curtissmith.me.uk", true },
{ "curtissmith.uk", true },
+ { "curva.co", true },
{ "curveprotect.com", true },
{ "curveprotect.cz", true },
{ "curveprotect.net", true },
@@ -8423,17 +8540,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "curvissa.co.uk", true },
{ "custerweb.com", true },
{ "custodyxchange.com", true },
+ { "custombikes.cl", true },
{ "customdissertation.com", true },
{ "customerbox.ir", true },
{ "customfitbymj.net", true },
{ "customfitmarketing.com", true },
{ "customgear.com.au", true },
- { "customizeyourshower.com", true },
{ "customizeyoursink.com", true },
- { "custompapers.com", true },
- { "customromlist.com", true },
{ "customshort.link", true },
- { "customwritings.com", true },
{ "customwritingservice.com", true },
{ "customwritten.com", true },
{ "cutephil.com", true },
@@ -8473,7 +8587,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cwgaming.co.uk", true },
{ "cwinfo.fi", true },
{ "cwmart.in", true },
- { "cwningen.cymru", false },
+ { "cwrau.com", true },
+ { "cwrau.de", true },
+ { "cwrau.info", true },
+ { "cwrau.io", true },
+ { "cwrau.me", true },
+ { "cwrau.name", true },
+ { "cwrau.rocks", true },
+ { "cwrau.tech", true },
{ "cwrcoding.com", true },
{ "cy.ax", true },
{ "cyber.cafe", true },
@@ -8483,6 +8604,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cybercocoon.com", true },
{ "cybercrew.cc", true },
{ "cybercrime-forschung.de", true },
+ { "cybercymru.co.uk", true },
{ "cyberduck.io", true },
{ "cyberdyne-industries.net", true },
{ "cyberexplained.info", true },
@@ -8496,15 +8618,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cybermeldpunt.nl", true },
{ "cyberoptic.de", true },
{ "cyberphaze.com", true },
+ { "cyberpioneer.net", false },
{ "cyberpubonline.com", true },
{ "cyberregister.nl", true },
{ "cyberregister.org", true },
+ { "cybersafesolutions.com", true },
{ "cybersantri.com", true },
{ "cybersecurity.nz", true },
+ { "cybersecurity.run", true },
{ "cybersecuritychallenge.be", true },
{ "cybersecurityketen.nl", true },
{ "cyberseguranca.com.br", true },
- { "cyberserver.org", true },
{ "cybersins.com", true },
{ "cybersmart.co.uk", true },
{ "cybersmartdefence.com", true },
@@ -8516,11 +8640,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cybertu.be", true },
{ "cyberwars.dk", true },
{ "cyberwire.nl", true },
- { "cybit.io", true },
+ { "cyberxpert.nl", true },
{ "cybozu.cn", true },
{ "cybozu.com", true },
{ "cybozulive-dev.com", true },
{ "cybozulive.com", true },
+ { "cybrary.it", true },
{ "cyclebeads.com", true },
{ "cycleluxembourg.lu", true },
{ "cyclisjumper.gallery", true },
@@ -8531,12 +8656,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cygnan.com", true },
{ "cygnatus.com", true },
{ "cygnius.net", true },
- { "cygu.ch", true },
{ "cyhour.com", true },
{ "cykelbanor.se", true },
{ "cylindricity.com", true },
{ "cyon.ch", true },
- { "cype.dedyn.io", true },
{ "cyph.audio", true },
{ "cyph.com", true },
{ "cyph.healthcare", true },
@@ -8546,18 +8669,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "cyph.video", true },
{ "cyph.ws", true },
{ "cypherpunk.at", true },
- { "cypressinheritancesaga.com", true },
+ { "cypherpunk.com", true },
{ "cypresslegacy.com", true },
{ "cyprus-company-service.com", true },
{ "cyrating.com", true },
{ "cysec.biz", true },
{ "cyson.tech", true },
{ "cytech.com.tr", true },
- { "cytegic-update-packages.com", true },
{ "cyumus.com", true },
{ "cyyzaid.cn", true },
{ "czakey.net", true },
{ "czbix.com", true },
+ { "czbtm.com", true },
{ "czc.cz", true },
{ "czechamlp.com", true },
{ "czechvirus.cz", true },
@@ -8568,7 +8691,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "d-designerin.de", true },
{ "d-eisenbahn.com", true },
{ "d-loop.de", true },
- { "d-macindustries.com", true },
{ "d-msg.com", true },
{ "d-parts24.de", true },
{ "d-quantum.com", true },
@@ -8582,11 +8704,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "d0m41n.name", true },
{ "d0xq.com", true },
{ "d2s.uk", true },
+ { "d3lab.net", true },
{ "d3njjcbhbojbot.cloudfront.net", true },
{ "d3xt3r01.tk", true },
{ "d3xx3r.de", true },
{ "d42.no", true },
- { "d4wson.com", true },
+ { "d4rkdeagle.tk", true },
{ "d4x.de", true },
{ "d66.nl", true },
{ "d8.io", true },
@@ -8594,6 +8717,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "da.hn", true },
{ "da42foripad.com", true },
{ "daallexx.eu", true },
+ { "dabneydriveanimalhospital.com", true },
{ "dabuttonfactory.com", true },
{ "dachb0den.net", true },
{ "dachdecker-ranzenberger.de", true },
@@ -8609,6 +8733,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dadrian.io", true },
{ "daduke.org", true },
{ "daemen.org", true },
+ { "daemon.xin", true },
{ "daemonslayer.net", true },
{ "daemwool.ch", true },
{ "daevel.fr", true },
@@ -8621,6 +8746,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dagmar2018.cz", true },
{ "dahlberg.cologne", true },
{ "dai.top", true },
+ { "daigakujuken-plus.com", true },
{ "daikoz.com", true },
{ "dailybits.be", true },
{ "dailyblogged.com", true },
@@ -8630,9 +8756,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dailyxenang.com", true },
{ "daintymeal.com", true },
{ "dairyshrine.org", true },
+ { "daisakuikeda.org", true },
{ "daisidaniels.co.uk", true },
{ "daisy-peanut.com", true },
{ "daisypeanut.com", true },
+ { "daiwai.de", false },
{ "daiweihu.com", true },
{ "dak.org", true },
{ "daknob.net", true },
@@ -8661,6 +8789,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "damngoodpepper.com", false },
{ "damongant.de", true },
{ "damonline.dk", true },
+ { "dampedia.com", true },
{ "dan-informacijske-varnosti.si", true },
{ "dan.me.uk", true },
{ "dan.org.nz", true },
@@ -8672,9 +8801,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "danchen.org", true },
{ "dancingcubs.co.uk", true },
{ "dancingshiva.at", true },
- { "dandenongroadapartments.com.au", true },
{ "daneandthepain.com", true },
- { "dango.in", true },
{ "danhalliday.com", true },
{ "daniel-baumann.ch", true },
{ "daniel-cholewa.de", true },
@@ -8682,13 +8809,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "daniel-kulbe.de", true },
{ "daniel-milnes.uk", true },
{ "daniel-ruf.de", true },
+ { "daniel-wildhaber.ch", true },
{ "danielalvarez.net", true },
{ "danielas.boutique", true },
{ "danielehniss.de", true },
{ "danielepestilli.com", true },
{ "danielgorr.de", true },
{ "danielheal.net", true },
- { "danielhinterlechner.eu", false },
+ { "danielhinterlechner.eu", true },
{ "danielhochleitner.de", true },
{ "danieljamesscott.org", true },
{ "danieljireh.com", true },
@@ -8697,19 +8825,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "danielmarquard.com", true },
{ "danielmartin.de", true },
{ "danielmoch.com", true },
+ { "danielmorell.com", true },
{ "danielmostertman.com", false },
{ "danielmostertman.nl", false },
{ "danielpeukert.cz", true },
+ { "danielran.com", true },
{ "danielrozenberg.com", true },
{ "danielsblog.org", true },
{ "danielschreurs.com", true },
{ "danielstach.cz", true },
- { "danielsteiner.net", true },
{ "danielstiner.me", true },
- { "danielt.co.uk", true },
+ { "danielt.co.uk", false },
{ "danielthompson.info", true },
{ "danieltollot.de", true },
{ "danielvoogsgerd.nl", true },
+ { "danielwildhaber.ch", true },
{ "danifabi.eu", true },
{ "danilapisarev.com", true },
{ "danjesensky.com", true },
@@ -8735,6 +8865,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "danpiel.net", true },
{ "dansage.co", true },
{ "danscomp.com", true },
+ { "dansdiscounttools.com", true },
{ "danselibre.net", true },
{ "danselibre.org", true },
{ "danseressen.nl", true },
@@ -8754,6 +8885,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "daphne.informatik.uni-freiburg.de", true },
{ "dapim.co.il", true },
{ "daplie.com", true },
+ { "dappworld.com", true },
{ "daracokorilo.com", true },
{ "daravk.ch", true },
{ "darbi.org", true },
@@ -8771,12 +8903,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "darisni.me", true },
{ "dark-infection.de", true },
{ "dark-vision.cz", true },
+ { "dark.ninja", true },
{ "darkag.ovh", true },
{ "darkcores.net", true },
{ "darkengine.io", true },
{ "darkengine.net", true },
+ { "darkerlystormy.com", true },
+ { "darkerstormy.com", true },
{ "darkeststar.org", true },
{ "darkfire.ch", true },
+ { "darknessflickers.com", true },
{ "darknetlive.com", true },
{ "darknight.blog", true },
{ "darkroomsaredead.com", true },
@@ -8791,6 +8927,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "darkx.me", true },
{ "darom.jp", true },
{ "darookee.net", false },
+ { "daropia.org", true },
{ "darshnam.com", true },
{ "dart-tanke.com", true },
{ "dart-tanke.de", true },
@@ -8809,7 +8946,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dashboard.run", true },
{ "dashlane.com", true },
{ "dashnearby.com", true },
+ { "dashwebconsulting.com", true },
{ "dasinternetluegt.at", true },
+ { "dasteichwerk.at", true },
{ "dasug.de", true },
{ "data-detox.de", true },
{ "data.gov", true },
@@ -8827,11 +8966,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "datacool.tk", true },
{ "datadit.hu", true },
{ "datadyne.technology", true },
- { "datafd.com", true },
- { "datafd.net", true },
{ "dataformers.at", true },
+ { "datagrail.io", true },
{ "dataharvest.at", true },
- { "datahoarderschool.club", true },
+ { "datahoarder.xyz", true },
{ "datakick.org", true },
{ "datalife.gr", true },
{ "datalysis.ch", true },
@@ -8842,7 +8980,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "datascience.cafe", true },
{ "datascience.ch", true },
{ "datascomemorativas.com.br", true },
- { "datasharesystem.com", true },
{ "dataskydd.net", true },
{ "dataspace.pl", true },
{ "dataswamp.org", true },
@@ -8856,7 +8993,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "datememe.com", true },
{ "datengrab.xyz", true },
{ "datenkeks.de", true },
- { "datenlast.de", true },
{ "dateno1.com", true },
{ "datenreiter.org", true },
{ "datenschutz-consult.de", true },
@@ -8869,7 +9005,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "datingticino.ch", true },
{ "datmancrm.com", true },
{ "datovyaudit.cz", true },
- { "datsound.ru", true },
{ "datumou-osusume.com", true },
{ "datumou-recipe.com", true },
{ "datumstudio.jp", true },
@@ -8883,6 +9018,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "davepage.me.uk", true },
{ "davepearce.com", true },
{ "davescomputertips.com", true },
+ { "davesharpe.com", true },
{ "davesinclair.com.au", true },
{ "davetempleton.com", true },
{ "davevelopment.net", true },
@@ -8901,6 +9037,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "davidbuckell.com", true },
{ "davidcrx.net", true },
{ "daviddever.net", true },
+ { "davidforward.com", true },
+ { "davidforward.net", true },
{ "davidfrancoeur.com", true },
{ "davidgouveia.net", true },
{ "davidgow.net", true },
@@ -8908,10 +9046,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "davidking.xyz", true },
{ "davidlamprea.com", true },
{ "davidlane.io", true },
- { "davidlillo.com", true },
{ "davidlyness.com", true },
{ "davidmcevoy.org.uk", true },
{ "davidmessenger.co.uk", true },
+ { "davidmn.org", true },
{ "davidnadaski.com", true },
{ "davidpearce.com", true },
{ "davidpearce.org", true },
@@ -8926,19 +9064,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "davisroi.com", true },
{ "davo-usedcars.be", true },
{ "davy-server.com", true },
- { "daw.nz", true },
{ "dawena.de", true },
+ { "dawgs.ga", true },
{ "dawnbringer.eu", true },
{ "dawnbringer.net", true },
{ "dawnofeden.net", true },
- { "dawnsonb.com", true },
{ "dawoud.org", true },
{ "dawson-floridavilla.co.uk", true },
{ "day-peak.com", true },
{ "daycontactlens.com", true },
{ "daylight-dream.ee", true },
{ "daylightpirates.org", true },
- { "dayman.net", true },
+ { "dayman.net", false },
{ "daymprove.life", true },
{ "dayofdays.be", true },
{ "daysoftheyear.com", true },
@@ -8978,10 +9115,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dchest.org", true },
{ "dckd.nl", true },
{ "dcl.re", true },
+ { "dclaisse.fr", true },
{ "dcmt.co", true },
{ "dcpower.eu", true },
{ "dcrdev.com", true },
- { "dd.art.pl", true },
{ "ddays2008.org", true },
{ "ddel.de", true },
{ "dden.ca", true },
@@ -8993,11 +9130,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ddproxy.cf", true },
{ "ddracepro.net", true },
{ "dds.mil", true },
+ { "ddy.tw", true },
{ "de-gucci.com", true },
{ "de-mail.info", true },
{ "de-medici.nl", true },
{ "de-rwa.de", true },
- { "de-spil.be", true },
{ "de.search.yahoo.com", false },
{ "deadbeef.ninja", true },
{ "deadc0de.re", true },
@@ -9016,12 +9153,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dealbanana.it", true },
{ "dealbanana.se", true },
{ "dealcruiser.nl", true },
+ { "dealerselectric.com", true },
{ "dealinflatables.co.uk", true },
{ "dealpass.no", true },
{ "deamuseum.org", true },
{ "deanbank.com", true },
{ "deanisa.ninja", true },
- { "deanjerkovich.com", true },
{ "deanmorgan.org", true },
{ "deano-s.co.uk", true },
{ "deanosplace.net", true },
@@ -9031,6 +9168,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dearfcc.org", true },
{ "dearktiel.nl", true },
{ "dearnevalleybouncycastles.co.uk", true },
+ { "deathofspring.com", true },
{ "deathy.ro", true },
{ "debarrasantony.com", true },
{ "debarrasasnieressurseine.com", true },
@@ -9041,7 +9179,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "debbyefurd.com", true },
{ "debie-usedcars.be", true },
{ "debigare.com", true },
- { "debitpaie.com", true },
{ "debron-ot.nl", true },
{ "debrusoft.ch", true },
{ "debt.com", true },
@@ -9081,13 +9218,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "deechtebakkers.nl", true },
{ "deegeeinflatables.co.uk", true },
{ "deelmijnreis.nl", true },
- { "deep.club", true },
{ "deep.social", true },
{ "deepaero.com", true },
{ "deeparamaraj.com", true },
{ "deepbluecrafting.co.uk", true },
{ "deepcode.io", true },
{ "deeperxh.com", true },
+ { "deephill.com", true },
{ "deeployr.io", true },
{ "deepserve.info", true },
{ "deepsouthsounds.com", true },
@@ -9097,7 +9234,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "deepzz.com", true },
{ "deer.team", true },
{ "deezeno.com", true },
- { "def-pos.ru", true },
{ "defcon.org", true },
{ "defcongroups.org", true },
{ "defeestboek.nl", true },
@@ -9175,6 +9311,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "deltafinanceiro.com.br", true },
{ "deltaonlineguards.com", true },
{ "deltaservers.com.br", true },
+ { "deltasigmachi.org", true },
{ "deltasmart.ch", true },
{ "deltava.org", true },
{ "demarle.ch", true },
@@ -9194,6 +9331,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "demonwav.com", true },
{ "demonwolfdev.com", true },
{ "demotivatorbi.ru", true },
+ { "dempsters.ca", false },
{ "demuzere.be", true },
{ "demuzere.com", true },
{ "demuzere.eu", true },
@@ -9203,6 +9341,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "denaehula.com", true },
{ "denardbrewing.com", true },
{ "denbkh.ru", true },
+ { "dengchangdong.com", true },
{ "dengode.eu", true },
{ "denimio.com", true },
{ "denimtoday.com", true },
@@ -9221,6 +9360,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dent.uy", true },
{ "dentallaborgeraeteservice.de", true },
{ "dentfix.ro", true },
+ { "dentistesdarveauetrioux.com", true },
{ "dentistglasgow.com", true },
{ "dentrassi.de", true },
{ "dentystabirmingham.co.uk", true },
@@ -9236,10 +9376,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "depotsquarekerrville.com", true },
{ "depotter-usedcars.be", true },
{ "deprecate.de", true },
- { "deprobe.pro", true },
- { "depth-co.jp", true },
{ "depthe.gr", true },
{ "der-bank-blog.de", true },
+ { "der-fliesenzauberer.de", true },
{ "der-gardinenmann.de", true },
{ "der-lan.de", true },
{ "der-rudi.eu", true },
@@ -9252,6 +9391,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "derbybouncycastles.com", true },
{ "derdewereldrommelmarkt.nl", true },
{ "derechosdigitales.org", true },
+ { "dereddingsklos.nl", true },
{ "dereferenced.net", true },
{ "derehamcastles.co.uk", true },
{ "derekheld.com", true },
@@ -9281,6 +9421,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "desertsounds.org", true },
{ "desgenst.ch", true },
{ "design-fu.com", false },
+ { "design-in-bad.eu", true },
{ "design-tooning.de", true },
{ "designdevs.eu", true },
{ "designed-cybersecurity.com", true },
@@ -9300,6 +9441,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "deskvip.com", true },
{ "desmaakvanplanten.be", true },
{ "desmo.gg", true },
+ { "desormiers.com", true },
{ "despachomartinyasociados.com", true },
{ "despertadoronline.com.es", true },
{ "desplats.com.ar", true },
@@ -9309,6 +9451,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "destileria.net.br", true },
{ "destinationsofnewyorkstate.com", true },
{ "destinattorneyjohngreene.com", true },
+ { "destinopiriapolis.com", true },
{ "desu.ne.jp", true },
{ "desveja.com.br", true },
{ "det-te.ch", true },
@@ -9317,17 +9460,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "detectify.com", false },
{ "detekenmuze.nl", true },
{ "dethemium.com", true },
+ { "detodojuegos.com", true },
{ "detoxetmoi.com", true },
+ { "detoxic.vn", true },
{ "detoxsinutritie.ro", true },
{ "detroit-english.de", true },
- { "detroitrocs.org", true },
{ "detroitstylepizza.com", true },
{ "detroitzoo.org", true },
{ "detski.center", true },
{ "detskysad.com", true },
{ "detuinmuze.nl", true },
{ "detype.nl", true },
- { "deuchnord.fr", true },
{ "deude.de", true },
{ "deukie.nl", true },
{ "deurenfabriek.nl", true },
@@ -9339,11 +9482,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "deutscher-rollenspielpreis.de", true },
{ "deutscheshoponline.com", true },
{ "deutschland-dsl.de", true },
- { "deux.solutions", true },
{ "deuxmetrescubes.fr", true },
- { "deuxsol.co", true },
- { "deuxsol.com", true },
- { "deuxsolutions.com", true },
{ "dev-brandywineglobal.com", true },
{ "dev-pulse-mtn.pantheonsite.io", true },
{ "dev-tek.de", true },
@@ -9355,7 +9494,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "devct.cz", false },
{ "devcu.com", true },
{ "devcu.net", true },
- { "devdom.io", true },
{ "devdoodle.net", true },
{ "devel.cz", true },
{ "develerik.com", true },
@@ -9364,7 +9502,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "developer.mydigipass.com", false },
{ "developerdan.com", true },
{ "developerfair.com", true },
- { "developermail.io", true },
{ "developers.facebook.com", false },
{ "developfx.com", true },
{ "developmentaid.org", true },
@@ -9382,8 +9519,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "devisnow.fr", true },
{ "devjack.de", true },
{ "devkid.net", true },
+ { "devkit.cc", false },
{ "devklog.net", true },
- { "devlamvzw.org", true },
+ { "devlamvzw.org", false },
{ "devlatron.net", true },
{ "devlogr.com", true },
{ "devolution.ws", true },
@@ -9391,7 +9529,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "devopers.com.br", true },
{ "devops-survey.com", true },
{ "devpgsv.com", true },
+ { "devpsy.info", true },
{ "devrandom.net", true },
+ { "devsjournal.com", true },
+ { "devsrvr.ru", true },
{ "devstaff.gr", true },
{ "devyn.ca", true },
{ "devzero.io", true },
@@ -9399,7 +9540,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dewalch.net", true },
{ "dewapress.com", true },
{ "dewinter.com", true },
+ { "dex.top", true },
{ "dexalo.de", true },
+ { "dexigner.com", true },
{ "deyute.com", true },
{ "dezeregio.nl", true },
{ "dezet-ev.de", true },
@@ -9410,14 +9553,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dfctaiwan.org", true },
{ "dfekt.no", true },
{ "dfektlan.no", true },
- { "dfl.mn", true },
{ "dflcares.com", true },
{ "dfmn.berlin", true },
{ "dfranke.com", true },
{ "dg7.in", true },
- { "dgblaw.com.au", true },
+ { "dgblaw.com.au", false },
{ "dgbouncycastlehire.com", true },
- { "dgby.org", true },
{ "dgeex.eu", true },
{ "dggm.ru", true },
{ "dgitup.com", true },
@@ -9438,10 +9579,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dhuy.net", true },
{ "di2pra.com", true },
{ "di2pra.fr", true },
+ { "diablovalleytech.com", true },
{ "diadorafitness.es", true },
{ "diadorafitness.it", true },
+ { "diagnocentro.cl", true },
{ "diagnostix.org", true },
- { "dialoegue.com", true },
+ { "dialapicnic.co.za", true },
+ { "dialectic-og.com", true },
{ "diamante.ro", true },
{ "diamantovaburza.cz", true },
{ "diamondsleepsolutions.com", true },
@@ -9467,7 +9611,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dicionariodesimbolos.com.br", true },
{ "dicionarioetimologico.com.br", true },
{ "dickieslife.com", true },
- { "dickpics.ru", true },
{ "dicoding.com", true },
{ "dictionaryofnumbers.com", true },
{ "dictzone.com", true },
@@ -9484,11 +9627,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "die-seide.de", true },
{ "die-sinlosen.de", true },
{ "die-speisekammer-reutlingen.de", true },
- { "diedrich.co", true },
+ { "diedrich.co", false },
{ "diedrich.me", true },
{ "dieecpd.org", true },
{ "diegelernten.de", true },
{ "diegerbers.de", true },
+ { "diegobarrosmaia.com.br", true },
{ "diegogelin.com", true },
{ "diegorbaquero.com", true },
{ "diehl.io", true },
@@ -9500,7 +9644,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dienstplan.one", true },
{ "dierabenmutti.de", true },
{ "dierenartsdeconinck.be", true },
- { "dierencompleet.nl", true },
{ "dieselanimals.lt", true },
{ "dieselgalleri.com", true },
{ "diesteppenreiter.de", true },
@@ -9529,12 +9672,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "digibull.link", true },
{ "digicert-support.com", true },
{ "digicert.nl", true },
+ { "digicy.cloud", true },
{ "digideli.ee", true },
{ "digidroom.be", true },
{ "digilicious.com", true },
{ "digimagical.com", true },
{ "digimedia.cd", false },
- { "digioccumss.ddns.net", true },
{ "digired.ro", true },
{ "digital-compounds.com", true },
{ "digital-eastside.de", true },
@@ -9542,8 +9685,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "digital.gov", false },
{ "digital.govt.nz", true },
{ "digital1st.co.uk", true },
- { "digital1world.com", true },
- { "digital2web.com", true },
+ { "digital2web.com", false },
{ "digitalarchitecture.com", true },
{ "digitalbitbox.com", true },
{ "digitalcash.cf", true },
@@ -9561,7 +9703,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "digitaldem.it", true },
{ "digitalehandtekeningen.nl", true },
{ "digitaleoverheid.nl", true },
- { "digitalewelten.de", true },
{ "digitalezukunft-hagen.de", true },
{ "digitalezukunft.nrw", true },
{ "digitalfishfun.com", true },
@@ -9576,6 +9717,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "digitalrights.fund", true },
{ "digitalskillswap.com", true },
{ "digitalsurge.io", true },
+ { "digitaltcertifikat.dk", true },
{ "digitaltechnologies.ltd.uk", true },
{ "digitkon.com", true },
{ "digminecraft.com", true },
@@ -9612,10 +9754,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "din-hkd.jp", true },
{ "dineachook.com.au", true },
{ "dinepont.fr", true },
+ { "dingcc.me", true },
{ "dinge.xyz", true },
- { "dingelbob-schuhcreme.gq", true },
{ "dingsbums.shop", true },
- { "dinheirolucrar.com", true },
{ "dinkommunikasjon.no", true },
{ "dinmtb.dk", true },
{ "dinocarrozzeria.com", true },
@@ -9634,7 +9775,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "direct-sel.com", true },
{ "directebanking.com", true },
{ "directelectricalltd.co.uk", true },
- { "directinsure.in", true },
{ "directlinkfunding.co.uk", true },
{ "directme.ga", true },
{ "directnews.be", true },
@@ -9644,14 +9784,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "direktvermarktung-schmitzberger.at", true },
{ "dirips.com", true },
{ "dirk-scheele.de", true },
+ { "dirkdoering.de", true },
{ "dirko.net", true },
- { "dirkwolf.de", true },
{ "dirtcraft.ca", true },
{ "dirtygeek.ovh", true },
{ "disability.gov", true },
{ "disabled.dating", true },
{ "disanteimpianti.com", true },
- { "disarc.com", true },
{ "disavow.tools", true },
{ "disc.uz", true },
{ "discarica.it", true },
@@ -9668,12 +9807,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "discordapp.com", true },
{ "discordghost.space", true },
{ "discordia.me", true },
- { "discotek.club", false },
+ { "discotek.club", true },
{ "discount24.de", true },
{ "discountplush.com", true },
{ "discover-shaken.com", true },
{ "discoverthreejs.com", true },
+ { "discoverucluelet.com", true },
{ "discoveryaima.com", true },
+ { "discoveryottawa.ca", true },
{ "discoveryrom.org", true },
{ "discreet-condooms.nl", true },
{ "dise-online.de", true },
@@ -9708,7 +9849,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "disinisharing.com", true },
{ "diskbit.com", true },
{ "diskbit.nl", true },
- { "dismail.de", true },
{ "dispatchitsolutions.com", true },
{ "dispatchitsolutions.io", true },
{ "disposable.link", true },
@@ -9717,7 +9857,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dissertationhelp.com", true },
{ "dissidence.ovh", true },
{ "dissident.host", true },
- { "dissieux.com", true },
{ "dist.torproject.org", false },
{ "disti.com", true },
{ "distiduffer.org", true },
@@ -9746,6 +9885,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "divinegames.studio", true },
{ "diving.photo", true },
{ "divorciosmurcia.com", true },
+ { "divvymonkey.com", true },
{ "dixi.fi", true },
{ "diybook.at", true },
{ "diycc.org", true },
@@ -9766,7 +9906,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "djc.me", true },
{ "djcursuszwolle.nl", true },
{ "djdavid98.hu", true },
+ { "djieno.com", true },
{ "djipanov.com", true },
+ { "djleon.net", true },
{ "djlive.pl", true },
{ "djlnetworks.co.uk", true },
{ "djsbouncycastlehire.com", true },
@@ -9774,6 +9916,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "djt-vom-chausseehaus.de", true },
{ "djursland-psykologen.dk", true },
{ "djwaynepryke.com", true },
+ { "djz4music.com", false },
{ "dk-kromeriz.cz", true },
{ "dk.com", true },
{ "dk.search.yahoo.com", false },
@@ -9790,7 +9933,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dlitz.net", true },
{ "dll4free.com", true },
{ "dlld.com", true },
- { "dlouwrink.nl", true },
{ "dlrsp.org", true },
{ "dlscomputers.com.au", true },
{ "dlunch.net", true },
@@ -9807,10 +9949,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dmd.lv", true },
{ "dmdd.org.uk", true },
{ "dmeevalumate.com", true },
- { "dmfd.net", true },
{ "dmi.es", true },
{ "dmitry.sh", true },
- { "dmmkenya.co.ke", true },
{ "dmmultionderhoud.nl", true },
{ "dmschilderwerken.nl", true },
{ "dmx.xyz", true },
@@ -9834,12 +9974,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dns8.online", true },
{ "dnscrawler.com", true },
{ "dnscrypt.info", true },
- { "dnscrypt.nl", true },
{ "dnscurve.io", true },
{ "dnshallinta.fi", true },
{ "dnsinfo.ml", true },
{ "dnsman.se", true },
+ { "dnspod.ml", true },
{ "dnstwister.report", true },
+ { "dnzz123.com", true },
{ "do-it.cz", true },
{ "do-prod.com", true },
{ "do.gd", true },
@@ -9847,9 +9988,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "do13.net", true },
{ "do67.de", true },
{ "do67.net", true },
+ { "dobraprace.cz", true },
{ "dobrev.family", true },
{ "dobrisan.ro", true },
- { "dobsnet.net", true },
{ "doc.python.org", true },
{ "doc.to", true },
{ "doc8643.com", true },
@@ -9861,7 +10002,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dochitaceahlau.ro", true },
{ "dockerbook.com", false },
{ "dockerm.com", true },
- { "dockerturkiye.com", true },
{ "dockerup.net", true },
{ "doclassworks.com", true },
{ "docline.gov", true },
@@ -9876,7 +10016,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "doctafit.com", true },
{ "doctor-locks.co.uk", true },
{ "doctor.dating", true },
+ { "doctorbini.com", true },
{ "doctorfox.co.uk", true },
+ { "doctorsonmaps.com", true },
{ "doctorwho.cz", true },
{ "docubox.info", true },
{ "docucopies.com", true },
@@ -9899,7 +10041,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dogmap.jp", true },
{ "dogoo.com", true },
{ "dogpawstudio.com", true },
- { "dogprograms.net", true },
{ "dogrescuegreece.nl", true },
{ "dogworld.com.br", true },
{ "dohanews.co", true },
@@ -9918,7 +10059,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dollemore.com", true },
{ "dolorism.com", true },
{ "dolphin-it.de", true },
- { "dolt.xyz", true },
{ "dom-medicina.ru", true },
{ "doma.in", true },
{ "domadillo.com", true },
@@ -9987,16 +10127,28 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dongxuwang.com", true },
{ "donkennedyandsons.com", true },
{ "donkeytrekkingkefalonia.com", true },
+ { "donlydental.ca", true },
{ "donmaldeamores.com", true },
+ { "donna-bellini-business-fotografie-muenchen.de", true },
+ { "donna-bellini-fotografie-berlin.de", true },
+ { "donna-bellini-fotografie-erfurt.de", true },
+ { "donna-bellini-fotografie-frankfurt.de", true },
+ { "donna-bellini-fotografie-hamburg.de", true },
+ { "donna-bellini-fotografie-koeln.de", true },
+ { "donna-bellini-fotografie-muenchen.de", true },
+ { "donna-bellini-fotografie-nuernberg.de", true },
+ { "donna-bellini-fotografie-stuttgart.de", true },
+ { "donna-bellini-fotografie-wien.de", true },
+ { "donna-bellini-hochzeitsfotograf-frankfurt.de", true },
+ { "donna-bellini-hochzeitsfotograf-muenchen.de", true },
{ "donnacha.blog", true },
{ "donnachie.net", true },
{ "donner-reuschel.de", true },
{ "donnons.org", false },
- { "donnoval.ru", true },
{ "donotlink.it", true },
{ "donovand.info", true },
- { "donpaginasweb.com", true },
{ "donpomodoro.com.co", true },
+ { "donsbach-edv.de", true },
{ "dont.re", true },
{ "dont.watch", true },
{ "dontbubble.me", true },
@@ -10025,23 +10177,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dopsi.ch", true },
{ "dora.moe", true },
{ "dorde.eu", true },
+ { "dorfbaeck.at", true },
{ "dorfbrunnen.eu", true },
{ "dorfzittig.de", true },
{ "doriangirod.ch", true },
{ "dorianharmans.nl", true },
{ "dorianmuthig.com", true },
+ { "doridian.com", true },
+ { "doridian.de", true },
{ "doridian.net", true },
+ { "doridian.org", true },
+ { "dormirmucho.com", true },
{ "dormiu.com", true },
{ "dormiu.com.br", true },
+ { "dornhecker.me", true },
{ "dorquelle.com", true },
{ "dorsetentertainments.co.uk", true },
{ "dorth.nl", true },
+ { "dosdediez.com", true },
{ "dosenbierrepublik.com", true },
{ "dosenkiwi.at", true },
{ "doska.by", true },
{ "doska.ru", true },
{ "dosomeworks.biz", true },
{ "dossplumbing.co.za", true },
+ { "dostlar.fr", true },
{ "dosvientoselectric.com", true },
{ "dosvientoselectrical.com", true },
{ "dosvientoselectrician.com", true },
@@ -10052,8 +10212,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "doswap.com", true },
{ "dosyauzantisi.com", true },
{ "dot.ro", true },
- { "dotacni-parazit.cz", true },
- { "dotb.dn.ua", false },
+ { "dot42.no", true },
{ "dotbigbang.com", true },
{ "dotbox.org", true },
{ "dotcircle.co", true },
@@ -10061,6 +10220,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dotgov.gov", true },
{ "dothebangthingsalon.com", true },
{ "dothydesign.com", true },
+ { "dotjesper.com", true },
+ { "dotjesper.dk", true },
+ { "dotjesper.net", true },
{ "dotjs.party", true },
{ "dotkniseandroida.cz", true },
{ "dotkod.pl", true },
@@ -10072,8 +10234,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dotshule.ug", true },
{ "dotsiam.co.th", true },
{ "dotsiam.com", true },
+ { "dotsiam.in.th", true },
{ "douai.me", true },
- { "doubleaste.com", true },
{ "doubleavineyards.com", true },
{ "doublefun.net", true },
{ "doublestat.me", true },
@@ -10091,6 +10253,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "downloadaja.com", true },
{ "downloadgamemods.com", true },
{ "downloadgram.com", true },
+ { "downloads.zdnet.com", true },
{ "downloadsoftwaregratisan.com", true },
{ "downrightcute.com", true },
{ "downtimerobot.com", true },
@@ -10107,6 +10270,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dpd.com.pl", true },
{ "dperson.net", true },
{ "dpfsolutionsfl.com", true },
+ { "dpg.no", true },
{ "dpi-design.de", true },
{ "dpisecuretests.com", true },
{ "dprb.biz", true },
@@ -10117,7 +10281,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dr-bodendorf.de", true },
{ "dr-jakob-zahnaerzte.de", true },
{ "dr-klotz.info", true },
- { "dr-knirr.de", true },
{ "dr-krebs.net", true },
{ "dr-marlen-nystroem.de", true },
{ "dr-moldovan.de", true },
@@ -10129,7 +10292,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dr-www.de", true },
{ "drabadir.com", true },
{ "drabben.be", true },
- { "drabbin.com", true },
+ { "drabim.org", true },
{ "drach.xyz", true },
{ "drachenleder.de", true },
{ "dracisvet.cz", true },
@@ -10139,6 +10302,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "drafton.com", true },
{ "drageeparadise.fr", true },
{ "dragfiles.com", true },
+ { "draghetti.it", true },
{ "draghive.asia", true },
{ "draghive.ca", true },
{ "draghive.co", true },
@@ -10150,7 +10314,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dragon-chem.eu", true },
{ "dragon-hearts.co.uk", true },
{ "dragoncave.me", true },
- { "dragoncityhack.tips", true },
{ "dragonfly.co.uk", true },
{ "dragonheartsrpg.com", true },
{ "dragonkin.net", true },
@@ -10174,6 +10337,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "draw.uy", true },
{ "drawesome.uy", true },
{ "drawingcode.net", true },
+ { "drawxp.com", true },
+ { "drbarnabus.com", true },
{ "drbethanybarnes.com", true },
{ "drbriones.com", true },
{ "drchrislivingston.com", true },
@@ -10200,6 +10365,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dreid.org", true },
{ "dreiweiden.de", true },
{ "dress-cons.com", true },
+ { "drevanbeale.com", true },
{ "drevo-door.cz", true },
{ "drew.beer", true },
{ "drew.red", true },
@@ -10207,6 +10373,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "drewsilcock.co.uk", true },
{ "dreyfussplasticsurgery.com", true },
{ "drezzy.it", true },
+ { "drfranciscofonseca.com.br", true },
{ "drfrey.ch", true },
{ "drgn.no", true },
{ "drhathazi.hu", true },
@@ -10218,7 +10385,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "drillingsupplystore.com", true },
{ "drillion.net", true },
{ "drillshackresort.com", true },
+ { "drinkcontrolapp.com", true },
{ "drinkplanet.eu", true },
+ { "dripdoctors.com", true },
{ "drive.google.com", false },
{ "driven2shine.eu", true },
{ "drivenes.net", true },
@@ -10239,6 +10408,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "drjulianneil.com", true },
{ "drkhsh.at", false },
{ "drkmtrx.xyz", true },
+ { "drlandis.com", true },
{ "drlangsdon.com", true },
{ "drmayakato.com", true },
{ "drmcdaniel.com", true },
@@ -10277,19 +10447,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "drubn.de", false },
{ "drugs.com", true },
{ "drumbe.at", true },
+ { "drummondframing.com", true },
{ "drunkscifi.com", true },
{ "drupal-expert.it", true },
{ "drupal.org", true },
{ "drupalspb.org", true },
+ { "drusantia.net", true },
{ "drusillas.co.uk", true },
{ "druwe.net", true },
{ "druznek.me", true },
{ "drvr.xyz", true },
{ "drweissbrot.net", true },
+ { "drwxr.org", true },
{ "drybjed.net", true },
{ "drycleancoalition.org", true },
{ "drycreekphoto.com", true },
{ "drydrydry.com", true },
+ { "dryerventcleaningarlington.com", true },
+ { "dryerventcleaningcarrollton.com", true },
{ "ds67.de", true },
{ "dsancomics.com", true },
{ "dsanraffleshangbai.xyz", true },
@@ -10298,19 +10473,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dsdalismerkezi.com", true },
{ "dsebastien.net", true },
{ "dsektionen.se", false },
+ { "dsgvo.name", true },
{ "dshield.org", true },
{ "dsm5.com", true },
{ "dsmjs.com", true },
{ "dso-imaging.co.uk", true },
+ { "dso-izlake.si", true },
{ "dsol.hu", true },
- { "dsouzamusic.com", true },
{ "dsrw.org", true },
{ "dssale.com", true },
{ "dstamou.de", true },
{ "dsteiner.at", true },
{ "dstvinstallrandburg.co.za", true },
- { "dsuinnovation.com", true },
- { "dsyunmall.com", true },
{ "dt27.org", true },
{ "dtbouncycastles.co.uk", true },
{ "dtdsh.com", true },
@@ -10323,8 +10497,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dtnx.eu", true },
{ "dtnx.net", true },
{ "dtnx.org", true },
- { "dtp-mstdn.jp", true },
{ "dtuaarsfest.dk", true },
+ { "dtx.sk", true },
{ "dualascent.com", true },
{ "dualias.xyz", false },
{ "dub.cz", true },
@@ -10339,26 +10513,29 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ducalendars.com", true },
{ "duch.cloud", true },
{ "duchyoffeann.com", true },
- { "duckasylum.com", true },
+ { "duckasylum.com", false },
{ "duckbase.com", true },
{ "duckduck.horse", true },
{ "duckduckstart.com", true },
{ "duckinc.net", true },
{ "duct.me", true },
+ { "due-diligence-security.com", true },
+ { "duerlund-falkenberg.dk", true },
{ "duernberg.at", true },
+ { "duesee.org", true },
{ "duesterhus.eu", true },
{ "dufrei.com", true },
{ "dugnet.com", false },
{ "dugnet.io", false },
{ "dugnet.net", false },
{ "dugnet.org", false },
- { "dugnet.tech", false },
{ "dugunedavet.com", true },
{ "duh.se", true },
{ "duijf.info", true },
{ "duijfathome.nl", true },
{ "duitang.com", true },
{ "dukan-recepty.ru", true },
+ { "dukatek.cz", true },
{ "dukegat.de", false },
{ "dukesatqueens.com", true },
{ "dukun.de", true },
@@ -10377,20 +10554,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "duncancmt.com", true },
{ "duncanfamilytrust.org", true },
{ "duncanwinfrey.com", true },
- { "dundalkdonnie.com", true },
+ { "dunesadventure.net", true },
{ "dungeon-bbs.de", true },
- { "dunklau.fr", true },
{ "dunkle-seite.org", true },
{ "dunloptrade.com", true },
{ "dunmanelectric.com", true },
{ "duobus.nl", true },
{ "duocircle.com", true },
+ { "duoluodeyu.com", true },
{ "duonganhtuan.com", true },
{ "duoquadragintien.fr", true },
{ "dupisces.com.tw", true },
{ "dupree.co", true },
{ "dupree.pe", true },
{ "durand.tf", true },
+ { "durbanlocksmiths.co.za", true },
{ "durchblick-shop.de", true },
{ "durdle.com", true },
{ "dureuil.info", true },
@@ -10408,11 +10586,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dustyspokesbnb.ca", true },
{ "dutch.desi", true },
{ "dutchdare.nl", true },
- { "dutchessuganda.com", true },
{ "dutchforkrunners.com", true },
{ "dutchrank.nl", true },
{ "dutchwanderers.nl", true },
{ "dutchweballiance.nl", true },
+ { "dv189.com", true },
{ "dvbris.co.uk", true },
{ "dvbris.com", true },
{ "dvdland.com.au", true },
@@ -10421,9 +10599,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dvorupotocnych.sk", true },
{ "dvwc.org", true },
{ "dvx.cloud", true },
+ { "dw-loewe.de", true },
{ "dwbtoftshit.com", true },
{ "dwgf.xyz", true },
{ "dwi-sued.de", true },
+ { "dwienzek.de", true },
{ "dworzak.ch", true },
{ "dwscdv3.com", true },
{ "dwtm.ch", true },
@@ -10437,19 +10617,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dybuster.es", true },
{ "dybuster.it", true },
{ "dybuster.se", true },
- { "dycoa.com", true },
{ "dyeager.org", true },
{ "dyktig.as", true },
{ "dyktig.no", true },
{ "dylanboudro.com", true },
+ { "dylancl.cf", true },
{ "dylankatz.com", true },
{ "dylanknoll.ca", true },
{ "dylanspcrepairs.com", true },
{ "dylanwise.net", true },
{ "dylmye.me", true },
+ { "dym.asia", true },
+ { "dym.bz", true },
+ { "dym2012.com", true },
+ { "dym2013.com", true },
+ { "dym2014.com", true },
+ { "dym2017.com", true },
{ "dymersion.com", true },
{ "dymfbbs.com", true },
- { "dymowski.de", true },
+ { "dymmovie.com", true },
+ { "dymowski.de", false },
{ "dyn-dnhensel.de", true },
{ "dyn-nserve.net", true },
{ "dyn.im", true },
@@ -10459,12 +10646,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dynamics-365.no", true },
{ "dynamics365.no", true },
{ "dynamicsnetwork.net", true },
- { "dynamictostatic.com", true },
{ "dynamicyou.co.uk", true },
{ "dynamo.city", true },
{ "dynapptic.com", true },
{ "dynastic.co", true },
- { "dyncdn.me", true },
{ "dynn.be", true },
{ "dynorphin.com", true },
{ "dynorphins.com", true },
@@ -10475,7 +10660,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dyscalculia-blog.com", true },
{ "dysthymia.com", true },
{ "dyyn.de", true },
- { "dyz.pw", true },
{ "dzeina.ch", true },
{ "dzet.de", true },
{ "dziary.com", true },
@@ -10485,12 +10669,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "dzndk.org", true },
{ "dznn.nl", true },
{ "dzomo.org", true },
- { "dzsibi.com", true },
{ "dzsula.hu", true },
{ "dzyabchenko.com", true },
+ { "dzyszla.pl", true },
{ "e-apack.com.br", true },
+ { "e-baraxolka.ru", true },
{ "e-bikesdirect.co.uk", true },
{ "e-biografias.net", true },
+ { "e-borneoshop.com", true },
{ "e-briancon.com", true },
{ "e-colle.info", true },
{ "e-cottage.com.br", true },
@@ -10501,8 +10687,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "e-lambre.com", true },
{ "e-learningbs.com", true },
{ "e-lifetechnology.com", true },
- { "e-migration.ch", true },
{ "e-planetelec.fr", false },
+ { "e-ptn.com", true },
{ "e-speak24.pl", true },
{ "e-standardstore.org", true },
{ "e-surveillant.nl", true },
@@ -10525,7 +10711,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "e2feed.com", true },
{ "e30.ee", true },
{ "e4metech.com", true },
- { "e51888.com", true },
{ "e52888.com", true },
{ "e52888.net", true },
{ "e53888.com", true },
@@ -10540,12 +10725,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "e965.ru", true },
{ "e9a.at", true },
{ "ea2drocks.com", true },
+ { "eacero.com", true },
{ "ead-italia.it", true },
{ "eagle.net", true },
{ "eagleindustriesltd.com", true },
{ "eaglemessaging.com", true },
{ "eaglesecurity.com", true },
{ "eagletechz.com.br", true },
+ { "eaglewreck.info", true },
{ "eagleyecs.com", true },
{ "eaimty.com", true },
{ "ealev.de", true },
@@ -10556,15 +10743,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "earn.com", true },
{ "earthsystemprediction.gov", true },
{ "earticleblog.com", true },
- { "earvinkayonga.com", true },
+ { "earvinkayonga.com", false },
{ "easelforart.com", true },
{ "easez.net", true },
{ "eashwar.com", true },
{ "eason-yang.com", true },
{ "east-line.su", true },
{ "eastarm.net", true },
+ { "eastblue.org", true },
{ "eastcoastbubbleandbounce.co.uk", true },
- { "eastcoastinflatables.co.uk", true },
{ "easterncapebirding.co.za", true },
{ "eastlothianbouncycastles.co.uk", true },
{ "eastmanbusinessinstitute.com", true },
@@ -10585,16 +10772,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "easypay.bg", true },
{ "easyproperty.com", true },
{ "easypv.ch", true },
- { "easyreal.ru", true },
+ { "easyqr.codes", true },
{ "easyroad.fr", true },
{ "easyschools.org", true },
{ "easyslide.be", true },
+ { "easyssl.com.cn", true },
{ "easystore.co", true },
{ "easytechguides.com", true },
{ "easytechsecurity.com", true },
{ "easyweenies.com", true },
{ "eat-sleep-code.com", true },
- { "eat4happiness.com", true },
{ "eatery.co.il", true },
{ "eatmebudapest.hu", true },
{ "eaton-works.com", true },
@@ -10626,12 +10813,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ebonyriddle.com", true },
{ "ebooki.eu.org", true },
{ "ebop.ch", true },
+ { "eboutic.ch", true },
{ "eboyer.com", true },
{ "ebrnd.de", true },
{ "ec-baran.de", true },
{ "ec-current.com", true },
+ { "ec.mine.nu", true },
+ { "eca.edu.au", true },
{ "ecacollege.nsw.edu.au", true },
{ "ecardoo.com", true },
+ { "ecardoo.de", true },
+ { "ecardoo.net", true },
+ { "ecardoo.org", true },
{ "ecchidreams.com", true },
{ "ecclesia-koeln.de", true },
{ "ecco-verde.com", false },
@@ -10642,7 +10835,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "echatta.org", true },
{ "echidna-rocktools.eu", true },
{ "echo-security.co", true },
- { "echo.cc", true },
{ "echoactive.com", true },
{ "echoanalytics.com", true },
{ "echodio.com", true },
@@ -10670,7 +10862,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ecoccinelles.com", true },
{ "ecococon.fr", true },
{ "ecocreativity.org", true },
- { "ecodedi.com", true },
{ "ecodesigns.nl", true },
{ "ecodigital.social", true },
{ "ecofabrica.com.br", true },
@@ -10686,12 +10877,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ecombustibil.ro", true },
{ "ecommercestore.net.br", true },
{ "ecompen.co.za", true },
+ { "ecomycie.com", true },
{ "economias.pt", true },
{ "economic-sanctions.com", true },
{ "economicinclusion.gov", true },
{ "economiefidu.ch", true },
{ "economies.ch", true },
- { "economycarrentalscyprus.com", true },
{ "econsumer.gov", true },
{ "econverter.cloud", true },
{ "ecorp.cc", true },
@@ -10699,19 +10890,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ecos.srl", true },
{ "ecoshare.info", true },
{ "ecoskif.ru", true },
- { "ecosoftconsult.com", true },
{ "ecosound.ch", true },
{ "ecostruxureit.com", true },
{ "ecosystem.atlassian.net", true },
{ "ecoterramedia.com", true },
{ "ecotur.org", true },
{ "ecovision.com.br", true },
+ { "ecpannualmeeting.com", true },
{ "ecrandouble.ch", true },
{ "ecupcafe.com", false },
{ "ecxforum.com", true },
{ "ed.gs", true },
{ "ed4becky.net", true },
{ "edakoe.ru", true },
+ { "edanni.io", true },
{ "edd-miles.com", true },
{ "eddesign.ch", true },
{ "eddmil.es", true },
@@ -10719,21 +10911,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eddyn.net", true },
{ "edeca.net", true },
{ "edehsa.com", true },
- { "edenvalerubbleremovals.co.za", true },
{ "edesseglabor.hu", true },
{ "edfinancial.com", true },
{ "edge-cloud.net", true },
{ "edgeservices.co.uk", true },
{ "edgetalk.net", true },
{ "edgevelder.com", true },
- { "edh.email", true },
{ "edhesive.com", true },
{ "edholm.pub", true },
{ "edibarcode.com", true },
{ "edicct.com", true },
{ "edinburghsportsandoutdoorlearning.com", true },
{ "edincmovie.com", true },
- { "edisonchee.com", true },
+ { "ediscomp.sk", true },
{ "edisonlee55.com", true },
{ "edisonluiz.com", true },
{ "edisonnissanparts.com", true },
@@ -10750,6 +10940,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "edoss.co.za", true },
{ "edp-collaborative.com", true },
{ "edplan.io", true },
+ { "edpubs.gov", false },
{ "edragneainpuscarie.ro", true },
{ "edsby.com", true },
{ "edservicing.com", true },
@@ -10760,14 +10951,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "edu-kingdom.com", true },
{ "edu6.cloud", true },
{ "eduard-dopler.de", true },
- { "eduardnikolenko.com", true },
- { "eduardnikolenko.ru", true },
{ "edubras.com.br", true },
{ "educationevolving.org", true },
{ "educationfutures.com", true },
{ "educationunlimited.com", true },
{ "educator-one.com", true },
{ "educators.co.nz", true },
+ { "eductf.org", true },
{ "eduid.se", false },
{ "edumundo.nl", true },
{ "eduroam.no", true },
@@ -10778,7 +10968,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "edv-bv.de", true },
{ "edv-kohls.de", true },
{ "edv-lehrgang.de", true },
- { "edvgarbe.de", true },
{ "edvmesstec.de", true },
{ "edwar.do", true },
{ "edwards.me.uk", true },
@@ -10796,17 +10985,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eelzak.nl", true },
{ "eemcevn.com", true },
{ "eengoedenotaris.nl", true },
- { "eeqj.com", true },
+ { "eentweevijf.be", true },
{ "eer.io", true },
{ "eerlijktransport.nl", true },
{ "eerstejaarsweekend.nl", true },
{ "eery.de", true },
+ { "eesti.xyz", true },
{ "eewna.org", true },
{ "ef-georgia.org", true },
{ "ef.gy", true },
{ "efa-football.com", true },
{ "efaas.nl", true },
{ "efag.com", true },
+ { "efcross.com", true },
{ "efeen.nl", true },
{ "eff-bee-eye.de", true },
{ "eff.org", true },
@@ -10814,13 +11005,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "effe.ch", true },
{ "effective-altruist.com", true },
{ "effectivecoffee.com", true },
- { "effectivepapers.com", true },
{ "effero.net", true },
{ "effex.ru", true },
{ "effizienta.ch", true },
{ "efflam.net", true },
{ "efg-darmstadt.de", false },
- { "efinity.io", true },
{ "efmcredentialing.org", true },
{ "eft.boutique", true },
{ "egablo.black", true },
@@ -10831,7 +11020,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "egb.at", false },
{ "egbert.net", true },
{ "egeozcan.com", true },
- { "egfl.org.uk", true },
{ "egg-ortho.ch", true },
{ "eggblast.com", true },
{ "eggert.org", false },
@@ -10844,6 +11032,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "egoroof.ru", true },
{ "egov4.ch", true },
{ "egovernment-podcast.com", true },
+ { "egres.xyz", true },
{ "egrojsoft.info", true },
{ "egrp365.ru", true },
{ "egumenita.ro", true },
@@ -10852,6 +11041,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ehaccp.it", true },
{ "ehandel.com", true },
{ "ehazi.hu", true },
+ { "ehbssl.com", true },
{ "eheliche-disziplin.schule", true },
{ "ehertz.uk", true },
{ "ehipaa.com", true },
@@ -10860,6 +11050,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ehmtheblueline.com", true },
{ "ehne.de", true },
{ "ehomusicgear.com", true },
+ { "ehub.cz", true },
+ { "ehub.hu", true },
+ { "ehub.pl", true },
+ { "ehub.sk", true },
{ "eichel.eu", true },
{ "eichornenterprises.com", true },
{ "eickemeyer.nl", true },
@@ -10868,11 +11062,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eickhofcolumbaria.com", true },
{ "eidolons.org", true },
{ "eifel.website", true },
- { "eiga-movie.com", true },
{ "eigenpul.se", true },
{ "eigenpulse.com", true },
{ "eighty-aid.com", true },
- { "eightyfour.ca", true },
{ "eigpropertyauctions.co.uk", true },
{ "eihaikyo.com", true },
{ "eilhan.com", true },
@@ -10882,13 +11074,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "einfachbahn.de", true },
{ "einheft.info", true },
{ "einheizpreis.de", true },
- { "einmonolog.de", true },
{ "einrichtwerk.de", true },
{ "einrichtwerk.shop", true },
{ "einsatzstellenverwaltung.de", true },
{ "einser.com", true },
- { "einsit.com", true },
- { "einsitapis.com", true },
{ "einsteinathome.org", true },
{ "eintageinzug.de", true },
{ "eintragsservice24.de", true },
@@ -10901,6 +11090,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eiyoushi-shigoto.com", true },
{ "ejdv-anmeldung.de", true },
{ "ejeff.org", true },
+ { "ejkmedia.nl", true },
+ { "ejkmuseum.nl", true },
+ { "ejknet.nl", true },
+ { "ejkwebdesign.nl", true },
{ "ejuicelab.co.uk", true },
{ "ek-networks.de", true },
{ "ek.network", true },
@@ -10936,8 +11129,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "elbetech.net", true },
{ "elbohlyart.com", true },
{ "elcambiador.es", true },
+ { "elcontadorsac.com", true },
{ "eldapoint.co.uk", true },
- { "elderoost.com", true },
{ "eldertons.co.uk", true },
{ "eldietista.es", true },
{ "eldinhadzic.com", true },
@@ -10945,8 +11138,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eldisagjapi.de", true },
{ "eldrid.ge", true },
{ "eldritchfiction.net", true },
+ { "eleaut.com.br", true },
{ "electionsbycounty.com", true },
{ "electionsdatabase.com", true },
+ { "electmikewaters.com", true },
{ "electr0sheep.com", true },
{ "electragirl.com", true },
{ "electric-vault.co.uk", true },
@@ -10965,6 +11160,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "electricalmoorpark.com", true },
{ "electricalnewburypark.com", true },
{ "electricaloakpark.com", true },
+ { "electricalpacificpalisades.com", true },
{ "electricalsimivalley.com", true },
{ "electricalthousandoaks.com", true },
{ "electricalwestlakevillage.com", true },
@@ -10972,8 +11168,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "electriccamarillo.com", true },
{ "electricconejovalley.com", true },
{ "electricdosvientos.com", true },
- { "electricfencealberton.co.za", true },
{ "electricfencebenoni.co.za", true },
+ { "electricfencingballito.co.za", true },
{ "electricgatemotorgermiston.co.za", true },
{ "electricgatemotorrandburg.co.za", true },
{ "electricgatemotorskemptonpark.co.za", true },
@@ -11017,9 +11213,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eleicoes2014.com.br", true },
{ "eleicoes2016.com.br", true },
{ "eleicoes2018.com", true },
+ { "elekharris.com", true },
{ "elektro-adam.de", true },
{ "elektro-collee.de", true },
{ "elektro-diehm.de", true },
+ { "elektro-doerr.com", true },
{ "elektro-hammes.net", true },
{ "elektro-hofmann-gmbh.de", true },
{ "elektro-hornetz.de", true },
@@ -11063,12 +11261,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "elfe.de", true },
{ "elfnon.com", true },
{ "elgalponazo.com.ar", true },
+ { "elglobo.com.mx", false },
{ "elgosblanc.com", false },
{ "elguadia.faith", true },
{ "elhamadimi.com", true },
{ "elhorizontal.com", true },
{ "elhossari.com", true },
- { "elia.cloud", true },
{ "elian-art.de", true },
{ "elibom.com", true },
{ "elie.net", true },
@@ -11088,7 +11286,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "elisabethkostecki.de", true },
{ "elisabethrene.com", true },
{ "elisechristie.com", true },
- { "elite-porno.ru", true },
+ { "elistor6100.xyz", true },
{ "elite12.de", true },
{ "elitebouncingfun.com", true },
{ "elitegameservers.net", true },
@@ -11104,13 +11302,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ell-net.tokyo", true },
{ "ella-kwikmed.com", false },
{ "ellak.gr", true },
+ { "ellegaard.dk", true },
{ "ellemental.me", true },
{ "ellencorddry.com", true },
{ "ellevit.ch", true },
{ "elliesbouncers.co.uk", true },
{ "elliff.net", true },
{ "elliot.cat", true },
- { "elliquiy.com", true },
{ "elliriehl.at", true },
{ "ellisamusements.co.uk", true },
{ "ellisleisure.co.uk", true },
@@ -11122,11 +11320,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "elodieclerc.ch", true },
{ "elohellp.com", false },
{ "elonaspitze.de", true },
+ { "elonm.ru", true },
{ "elosrah.com", true },
{ "elosuite.com", true },
{ "eloxt.com", true },
{ "elpado.de", true },
- { "elpo.net", true },
{ "elpoderdelespiritu.org", true },
{ "elrinconderovica.com", true },
{ "elsagradocoran.org", true },
@@ -11140,18 +11338,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "elternbeiratswahl.online", true },
{ "elternforum-birmensdorf.ch", true },
{ "elternverein-utzenstorf.ch", true },
- { "eltrox.me", true },
{ "elucron.com", true },
{ "eluhome.de", true },
+ { "eluvio.com", true },
{ "elvidence.com.au", true },
{ "elviraszabo.com", true },
{ "elvispresley.net", true },
{ "elvisripley.com", true },
+ { "elvn.tokyo", true },
{ "elwave.org", true },
{ "elwix.com", true },
{ "elxsi.de", true },
{ "elyasweb.com", true },
- { "elyisus.info", true },
{ "elysiria.fr", true },
{ "elysiumware.com", true },
{ "em-biotek.cz", true },
@@ -11166,7 +11364,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "emailtools.io", true },
{ "emaily.eu", true },
{ "emanuel.photography", true },
- { "emanuelduss.ch", true },
{ "emanueleanastasio.com", true },
{ "emanuelemazzotta.com", true },
{ "embassycargo.eu", true },
@@ -11176,8 +11373,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "embroideryexpress.co.uk", true },
{ "emby.cloud", true },
{ "emcspotlight.com", true },
- { "emedworld.com", true },
{ "emeliefalk.se", true },
+ { "ememsei.com", true },
+ { "emeraldcbdshop.com", true },
{ "emeraldcityswagger.com", true },
{ "emeraldcoastrideshare.com", true },
{ "emeraldonion.org", true },
@@ -11205,9 +11403,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "emma.ca", true },
{ "emmababy420.com", true },
{ "emmagraystore.com", true },
- { "emmaliddell.com", true },
{ "emobilityforum.org", true },
- { "emoji.bzh", true },
+ { "emoji.bzh", false },
{ "emolafarm.com", true },
{ "emond-usedcars.net", true },
{ "empathogen.com", true },
@@ -11235,9 +11432,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "emtradingacademy.com", true },
{ "emultiagent.pl", true },
{ "emupedia.net", true },
+ { "emvoice.net", true },
{ "emvoiceapp.com", true },
{ "emw3.com", true },
{ "emyr.net", true },
+ { "emyself.org", true },
{ "en-booster.jp", true },
{ "en-crypt.me", true },
{ "en-maktoob.search.yahoo.com", false },
@@ -11246,12 +11445,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "enaim.de", true },
{ "enamae.net", true },
{ "enbecom.net", true },
- { "encadrer-mon-enfant.com", true },
{ "encfs.win", true },
{ "encircleapp.com", true },
{ "encnet.de", true },
{ "encode.host", true },
- { "encoderx.uk", true },
+ { "encore.io", true },
{ "encouragemarketing.com", true },
{ "encredible.de", false },
{ "encredible.org", false },
@@ -11273,7 +11471,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "enduranceday.be", true },
{ "endzeit-architekten.com", false },
{ "enemiesoflight.de", true },
- { "energethik-tulln.at", true },
{ "energie-sante.ch", true },
{ "energiekeurplus.nl", true },
{ "energisammenslutningen.dk", true },
@@ -11288,13 +11485,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "energyelephant.com", true },
{ "energyled.com.br", true },
{ "energystar.gov", true },
- { "enersaveapp.org", true },
- { "enersec.co.uk", true },
{ "enet-navigator.de", true },
{ "enfantsdelarue.ch", true },
{ "enfield-kitchens.co.uk", true },
{ "enflow.nl", true },
- { "enfoqueseguro.com", true },
{ "enfu.se", true },
{ "engarde.net", true },
{ "engaugetools.com", true },
@@ -11305,11 +11499,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "engiedev.net", true },
{ "engineowning.com", true },
{ "enginepit.com", true },
- { "enginx.cn", true },
{ "enginx.net", true },
{ "englishbulgaria.net", true },
{ "englishcast.com.br", true },
- { "englishclub.com", true },
{ "englishforums.com", true },
{ "englishlol.com", true },
{ "englishphonopass.com", true },
@@ -11318,14 +11510,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "enigma.swiss", true },
{ "enijew.com", true },
{ "enitso.de", true },
+ { "enixgaming.com", true },
{ "enjincoin.io", true },
{ "enjinwallet.io", true },
{ "enjinx.io", true },
+ { "enjoy-drive.com", true },
{ "enjoyphoneblog.it", true },
- { "enjoystudio.ro", true },
- { "enlatte.com", true },
{ "enlazaresbueno.cl", true },
- { "enlightened.si", true },
{ "enlightenedhr.com", true },
{ "enlightenment.org", true },
{ "enlnf.link", true },
@@ -11334,15 +11525,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "enness.co.uk", true },
{ "ennori.jp", true },
{ "enomada.net", true },
+ { "enord.fr", true },
{ "enorekcah.com", true },
{ "enot32.ru", true },
{ "enotecastore.it", true },
+ { "enpasenerji.com.tr", true },
{ "enquos.com", true },
{ "enriquepiraces.com", true },
{ "enrollapp.com", true },
{ "ensage.io", true },
{ "enscosupply.com", true },
{ "ensemble-rubato.de", true },
+ { "ensembling.com", true },
{ "enskat.de", true },
{ "enskatson-sippe.de", true },
{ "ensley.tech", true },
@@ -11354,7 +11548,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "entabe.jp", true },
{ "entactogen.com", true },
{ "entactogens.com", true },
- { "enteente.com", true },
+ { "entercenter.ru", true },
{ "enterprisechannel.asia", true },
{ "enterprisey.enterprises", true },
{ "entheogens.com", true },
@@ -11372,16 +11566,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "envant.co.uk", true },
{ "enveloppenopmaat.nl", true },
{ "envescent.com", true },
- { "enviam.de", true },
{ "enviaya.com.mx", true },
- { "environment.ai", true },
{ "environmentkirklees.org", true },
{ "enviroprobasements.com", true },
{ "envirotech.com.au", true },
{ "envoie.moi", true },
+ { "envoutement-desenvoutement.com", true },
{ "envoyez.moi", true },
{ "envoyglobal.com", true },
- { "envoyworld.com", true },
{ "envygeeks.io", true },
{ "eocservices.co.uk", true },
{ "eoitek.com", true },
@@ -11393,7 +11585,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "epassafe.com", true },
{ "epave.paris", true },
{ "epay.bg", true },
- { "ephe.be", true },
+ { "epdeveloperchallenge.com", true },
{ "ephesusbreeze.com", true },
{ "epi.one", true },
{ "epic-vistas.com", true },
@@ -11403,7 +11595,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "epicenter.work", true },
{ "epicenter.works", true },
{ "epicentre.works", true },
- { "epichouse.net", true },
+ { "epichouse.net", false },
{ "epicinflatables.co.uk", true },
{ "epickitty.co.uk", true },
{ "epicpages.com", true },
@@ -11412,6 +11604,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "epicvistas.com", true },
{ "epicvistas.de", true },
{ "epicwalnutcreek.com", true },
+ { "epidauros.be", true },
+ { "epigrafes-led-farmakeia.gr", true },
{ "epilis.gr", true },
{ "epiphyte.network", true },
{ "episkevh-plaketas.gr", true },
@@ -11424,34 +11618,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "epo32.ru", true },
{ "epoch.com", true },
{ "epolitiker.com", true },
- { "epos-distributor.co.uk", true },
{ "epos.az", true },
- { "eposbirmingham.co.uk", true },
- { "eposbrighton.co.uk", true },
- { "eposbristol.co.uk", true },
- { "eposcardiff.co.uk", true },
- { "eposkent.co.uk", true },
- { "eposleeds.co.uk", true },
- { "eposleicester.co.uk", true },
- { "eposliverpool.co.uk", true },
- { "eposlondon.co.uk", true },
- { "eposmidlands.co.uk", true },
- { "eposnewport.co.uk", true },
- { "eposnottingham.co.uk", true },
- { "eposreading.co.uk", true },
- { "eposreview.co.uk", true },
- { "epossheffield.co.uk", true },
- { "epossurrey.co.uk", true },
- { "epossussex.co.uk", true },
- { "eposswansea.co.uk", true },
- { "epossystems.co.uk", true },
+ { "eposig.net", true },
{ "epostplus.li", true },
- { "eposwales.co.uk", true },
- { "eposyork.co.uk", true },
{ "eppelblei.lu", true },
{ "eppelduerferjugend.lu", true },
{ "eppelpress.lu", true },
{ "epreskripce.cz", true },
+ { "epsilon.dk", true },
{ "epsorting.cz", true },
{ "epublibre.org", true },
{ "epulsar.ru", true },
@@ -11459,6 +11633,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "epyonsuniverse.net", true },
{ "eq-serve.com", true },
{ "equalcloud.com", true },
+ { "equeim.ru", true },
{ "equidam.com", true },
{ "equinecoaching.ca", true },
{ "equinetherapy.ca", true },
@@ -11497,19 +11672,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ericleuthardt.com", true },
{ "erico.jp", true },
{ "ericoc.com", true },
+ { "erics.site", true },
{ "ericwie.se", true },
{ "eridanus.uk", true },
{ "erigrid.eu", true },
{ "eriix.org", true },
{ "erikheemskerk.nl", true },
{ "erikhubers.nl", true },
+ { "erikkruithof.nl", true },
{ "erikserver2.tk", true },
{ "erikseth.de", true },
- { "erikwagner.de", true },
{ "erikwalther.eu", true },
{ "erinaceinae.com", true },
{ "eriner.me", true },
- { "erinlin.com", true },
{ "erinn.io", true },
{ "erisrenee.com", true },
{ "erixschueler.de", true },
@@ -11517,7 +11692,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ernest.ly", true },
{ "eroma.com.au", true },
{ "eron.info", true },
- { "erotpo.cz", false },
+ { "eroticforce.com", true },
{ "erp-band.ru", true },
{ "erp.band", true },
{ "erpax.com", true },
@@ -11556,9 +11731,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "es-geenen.de", true },
{ "es.search.yahoo.com", false },
{ "es888.net", true },
- { "es8888.net", true },
{ "es999.net", true },
{ "es9999.net", true },
+ { "esaborit.ddns.net", true },
{ "esagente.com", true },
{ "esailinggear.com", true },
{ "esalesdata.com", true },
@@ -11569,7 +11744,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esb-top.net", true },
{ "esb116.com", true },
{ "esb1314.net", true },
- { "esb1668.com", true },
{ "esb168168.com", true },
{ "esb168168.info", true },
{ "esb168168.net", true },
@@ -11585,7 +11759,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esb1788.info", true },
{ "esb1788.net", true },
{ "esb1788.org", true },
- { "esb17888.com", true },
{ "esb2013.com", true },
{ "esb2013.net", true },
{ "esb2099.com", true },
@@ -11601,17 +11774,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esb553.com", true },
{ "esb555.biz", true },
{ "esb555.cc", true },
- { "esb556.com", true },
{ "esb5889.com", true },
{ "esb5889.net", true },
{ "esb6.net", true },
{ "esb677.net", true },
{ "esb775.net", true },
{ "esb777.biz", true },
- { "esb777.cc", true },
- { "esb777.com", true },
{ "esb777.me", true },
- { "esb777.net", true },
{ "esb777.org", true },
{ "esb886.com", true },
{ "esb888.net", true },
@@ -11620,13 +11789,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esb9588.com", true },
{ "esb9588.net", true },
{ "esb9588.org", true },
- { "esb999.com", true },
- { "esb999.info", true },
{ "esb999.org", true },
- { "esba11.cc", true },
{ "esba11.com", true },
{ "esba11.in", true },
- { "esba11.net", true },
{ "esball-in.com", true },
{ "esball-in.net", true },
{ "esball.bz", true },
@@ -11642,8 +11807,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esball518.info", true },
{ "esball518.net", true },
{ "esball518.org", true },
- { "esball888.com", true },
- { "esball888.net", true },
{ "esballs.com", true },
{ "esbbon.com", true },
{ "esbbon.net", true },
@@ -11656,6 +11819,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esbm4.net", true },
{ "esbm5.net", true },
{ "esc.chat", true },
+ { "escael.org", true },
{ "escape2rooms.fr", true },
{ "escapeplaza.de", true },
{ "escapetalk.nl", true },
@@ -11674,10 +11838,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eservices-greece.com", true },
{ "esg-abi2001.de", true },
{ "esgr.in", true },
- { "eshepperd.com", true },
{ "eshobe.com", true },
{ "eshop-prices.com", true },
- { "eshtapay.com", true },
{ "esibun.net", true },
{ "esigmbh.de", true },
{ "esipublications.com", true },
@@ -11708,7 +11870,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esphigmenou.gr", true },
{ "espigol.org", true },
{ "esports-network.de", true },
- { "esprit-cloture.fr", true },
{ "espritrait.com", true },
{ "esquirou-trieves.fr", true },
{ "esquisse.fr", true },
@@ -11718,13 +11879,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "essaychecker.com", true },
{ "essaydirectory.com", true },
{ "essayforsale.net", true },
- { "essayforum.com", true },
{ "essayhave.com", true },
- { "essaylib.com", true },
{ "essaynews.com", true },
{ "essaypro.net", true },
- { "essayscam.org", true },
- { "essayshark.com", true },
{ "essaytalk.com", true },
{ "essaywebsite.com", true },
{ "essaywriting.biz", true },
@@ -11734,9 +11891,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "esslm.sk", true },
{ "essoduke.org", true },
{ "essteebee.ch", true },
+ { "establo.pro", true },
{ "estafallando.es", true },
{ "estafallando.mx", true },
- { "estaleiro.org", true },
{ "estan.cn", true },
{ "estate360.co.tz", true },
{ "estateczech-eu.ru", true },
@@ -11749,10 +11906,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "estetista.net", true },
{ "esthesoleil.jp", true },
{ "estilopack-loja.com.br", true },
+ { "estoic.net", true },
{ "estoniantrade.ee", true },
{ "estonoentraenelexamen.com", true },
- { "estoqueinformatica.com.br", true },
- { "estudioamazonico.com", true },
{ "estudiserradal.com", true },
{ "esw00.com", true },
{ "esw06.com", true },
@@ -11803,6 +11959,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ethosinfo.com", true },
{ "etienne.cc", true },
{ "etikus-hacker.hu", true },
+ { "etincelle.ml", true },
{ "etiquetaunica.com.br", true },
{ "etoile-usedcars.com", true },
{ "etre-soi.ch", true },
@@ -11810,8 +11967,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "etrecosmeticderm.com", true },
{ "etresmant.es", true },
{ "etrker.com", true },
- { "etskinner.com", true },
- { "etskinner.net", true },
{ "etudesbibliques.fr", true },
{ "etudesbibliques.net", true },
{ "etudesbibliques.org", true },
@@ -11825,6 +11980,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "euaggelion.blog.br", true },
{ "euanbarrett.com", true },
{ "euchre.us", true },
+ { "eucl3d.com", true },
+ { "eugenechae.com", true },
{ "eugenekay.com", true },
{ "eugenetech.org", true },
{ "eujuicers.bg", true },
@@ -11851,7 +12008,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eurekaarchitecture.com", true },
{ "euro-servers.de", true },
{ "euroalter.com", true },
- { "euroapo.org", true },
{ "eurocenterobuda.hu", true },
{ "eurocomcompany.cz", true },
{ "eurofrank.eu", true },
@@ -11868,8 +12024,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "europapier.si", true },
{ "europapier.sk", true },
{ "europapier.ua", true },
+ { "europarts-sd.com", true },
{ "europastudien.de", true },
{ "european-agency.org", true },
+ { "europeancupinline.eu", true },
{ "europeanpreppers.com", true },
{ "europeantimberconnectors.ca", true },
{ "europeantransportmanagement.com", true },
@@ -11881,7 +12039,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "euroscot.de", true },
{ "euroservice.com.gr", true },
{ "euroshop.or.at", true },
- { "euroskano.nl", true },
+ { "eurotime.ua", true },
{ "eurotramp.com", true },
{ "eurotravelstar.eu", true },
{ "eurousa.us", true },
@@ -11907,10 +12065,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "evanfiddes.com", true },
{ "evangelicalmagazine.com", true },
{ "evangelosm.com", true },
+ { "evanreev.es", true },
{ "evantage.org", true },
{ "evantageglobal.com", true },
- { "evapp.org", true },
{ "evasovova.cz", true },
+ { "evavolfova.cz", true },
{ "eve.ac", true },
{ "eve0s.com", true },
{ "evelienzorgt.nl", true },
@@ -11918,12 +12077,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "evemarketer.com", true },
{ "evemodx.com", true },
{ "evenementenhoekvanholland.nl", true },
- { "evenstar-gaming.com", true },
{ "event4fun.no", true },
{ "eventaro.com", true },
{ "eventive.org", true },
+ { "eventnexus.co.uk", true },
{ "eventosenmendoza.com.ar", true },
- { "eventplace.me", false },
{ "events-hire.co.uk", true },
{ "eventtech.com", false },
{ "ever.sale", true },
@@ -11937,12 +12095,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "evertonarentwe.com", true },
{ "everwaking.com", false },
{ "everybodyhertz.co.uk", true },
- { "everyday.eu.org", true },
{ "everydaygary.com", true },
- { "everydaywot.com", true },
{ "everydaywp.com", true },
{ "everyex.com", true },
{ "everyfad.com", true },
+ { "everygayporn.com", false },
{ "everythingaccess.com", true },
{ "everytrycounts.gov", false },
{ "everywhere.cloud", true },
@@ -11982,6 +12139,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "evoting.ch", true },
{ "evrial.com", true },
{ "evrica.me", true },
+ { "evromandie.ch", true },
{ "evstatus.com", true },
{ "evtripping.com", true },
{ "ewaipiotr.pl", true },
@@ -12004,9 +12162,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "exagoni.com.my", true },
{ "example.sc", true },
{ "example.wf", true },
- { "exampleessays.com", true },
{ "examsmate.in", true },
{ "exaplac.com", true },
+ { "exarpy.com", true },
{ "exatmiseis.net", false },
{ "exceed.global", true },
{ "exceedagency.com", true },
@@ -12014,6 +12172,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "exceltechoman.com", true },
{ "exceltobarcode.com", true },
{ "excentos.com", true },
+ { "exceptionalservers.com", true },
{ "excessamerica.com", true },
{ "excesssecurity.com", true },
{ "exchangeworks.co", true },
@@ -12023,6 +12182,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "exdamo.de", false },
{ "exe-boss.tech", true },
{ "exebouncycastles.co.uk", true },
+ { "execution.biz.tr", true },
{ "exehack.net", true },
{ "exeintel.com", true },
{ "exekutori.com", true },
@@ -12031,7 +12191,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "exerforge.net", true },
{ "exeria.de", true },
{ "exexcarriers.com", true },
- { "exgaywatch.com", true },
{ "exgen.io", true },
{ "exhaledayspa.com.au", true },
{ "exhalespa.com", true },
@@ -12041,17 +12200,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "exmoe.com", true },
{ "exocen.com", true },
{ "exon.io", true },
+ { "exoplatform.com", true },
{ "exoscale.ch", true },
{ "exoscale.com", true },
{ "exoten-spezialist.de", true },
- { "exoticads.com", true },
{ "exousiakaidunamis.pw", true },
{ "exp.de", true },
{ "expancio.com", true },
{ "expandeco.com", true },
{ "expatmortgage.uk", true },
- { "expatriate.pl", true },
- { "expecting.com.br", true },
{ "experienceoutdoors.org.uk", true },
{ "experienceoz.com.au", true },
{ "expert-korovin.ru", true },
@@ -12068,11 +12225,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "exploitit.com.au", true },
{ "exploodo.rocks", true },
{ "exploravacations.in", true },
+ { "exploremonero.com", true },
{ "exploringenderby.com", true },
{ "expo-america.ru", true },
{ "expo-asia.ru", true },
{ "expo-europe.ru", true },
- { "expokohler.com", true },
+ { "expo-larionov.org", true },
{ "exponentialnews.net", true },
{ "expoort.co.uk", true },
{ "expoort.com", true },
@@ -12084,7 +12242,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "exporta.cz", true },
{ "express-shina.ru", true },
{ "express-vpn.com", true },
- { "expressemotion.net", true },
{ "expresshosting.org", true },
{ "expressmarket.ru", true },
{ "expresstinte.de", true },
@@ -12097,6 +12254,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "extasic.com", true },
{ "extendwings.com", true },
{ "extensia.it", true },
+ { "extensibility.biz.tr", true },
{ "extensiblewebmanifesto.org", true },
{ "extensiblewebreportcard.org", true },
{ "extensiblewebsummit.org", true },
@@ -12129,7 +12287,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "extremeservicesandrestoration.com", true },
{ "exultcosmetics.co.uk", true },
{ "exyplis.com", true },
- { "eyasc.nl", true },
{ "eydesignguidelines.com", true },
{ "eyeandfire.com", true },
{ "eyecandy.gr", true },
@@ -12143,7 +12300,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "eyesonly.cc", true },
{ "eynio.com", true },
{ "eyona.com", true },
- { "eyps.net", true },
{ "eyyit.com", false },
{ "eyyubyilmaz.com", true },
{ "ez3d.eu", true },
@@ -12153,7 +12309,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ezgamble.com", true },
{ "ezgif.com", true },
{ "ezhik-din.ru", true },
- { "eznfe.com", true },
{ "eztvtorrent.com", true },
{ "ezwritingservice.com", true },
{ "ezzhole.net", true },
@@ -12173,12 +12328,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "f2h.io", true },
{ "f3nws.com", true },
{ "f43.me", true },
- { "f5movies.top", true },
{ "f5nu.com", true },
{ "f5w.de", true },
{ "fa-works.com", true },
{ "faber.org.ru", true },
- { "fabian-fingerle.de", true },
{ "fabian-koeppen.de", true },
{ "fabianackle.ch", true },
{ "fabianasantiago.com", true },
@@ -12190,6 +12343,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fabiobier.com", true },
{ "fabjansisters.eu", true },
{ "fableforge.nl", true },
+ { "fabmart.com", true },
{ "fabrica360.com", true },
{ "fabriceleroux.com", true },
{ "fabriziocavaliere.it", true },
@@ -12203,7 +12357,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "facciadastile.it", true },
{ "face-mania.com", true },
{ "facealacrise.fr", true },
- { "facebattle.com", true },
{ "facebook-atom.appspot.com", true },
{ "facebook.com", true },
{ "facebydrh.com", true },
@@ -12248,6 +12401,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fahrwerk.io", true },
{ "fai.gov", true },
{ "fail.coach", true },
+ { "fail4free.de", true },
{ "failover.de", true },
{ "failover.eu", true },
{ "failoverplan.it", true },
@@ -12260,6 +12414,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fairviewmotel-simcoe.com", true },
{ "fairydust.space", true },
{ "faithgrowth.com", true },
+ { "faithindemocracy.eu", false },
{ "faithleaks.org", true },
{ "faithmissionaries.com", true },
{ "faithwatch.org", true },
@@ -12275,9 +12430,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "falconfrag.com", true },
{ "falconvintners.com", true },
{ "falcoz.co", true },
- { "faldoria.de", false },
+ { "faldoria.de", true },
{ "falegname-roma.it", true },
- { "falldennismarketing.com", true },
+ { "falkhusemann.de", true },
{ "fallenangeldrinks.co.uk", true },
{ "fallenangeldrinks.com", true },
{ "fallenangelspirits.co.uk", true },
@@ -12295,6 +12450,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fameng.nl", true },
{ "famfi.co", true },
{ "familiaperez.net", true },
+ { "familie-kruithof.nl", true },
{ "familie-kupschke.de", true },
{ "familie-leu.ch", true },
{ "familie-monka.de", true },
@@ -12316,6 +12472,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "famvangelder.nl", true },
{ "famvsomeren.nl", true },
{ "fanactu.com", true },
+ { "fanatical.com", true },
{ "fanboi.ch", true },
{ "fancy-bridge.com", true },
{ "fancy.org.uk", true },
@@ -12327,7 +12484,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fanhouwan.com", true },
{ "fanjoe.be", true },
{ "fansided.com", true },
- { "fansmade.art", true },
{ "fantasiapainter.com", true },
{ "fantasticcleaners.com.au", true },
{ "fantastichandymanmelbourne.com.au", true },
@@ -12338,6 +12494,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fantasyspectrum.com", true },
{ "fantopia.club", true },
{ "fanvoice.com", true },
+ { "fanyina.com", true },
{ "fanyue123.tk", true },
{ "fanz.pro", true },
{ "fanzlive.com", true },
@@ -12345,14 +12502,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "faq.ie", true },
{ "fara.gov", true },
{ "faradji.nu", true },
- { "faradome.ws", true },
{ "faraslot8.com", true },
{ "farcecrew.de", true },
{ "farfallapets.com.br", true },
{ "farfetchos.com", true },
{ "fargtorget.se", true },
{ "farhadexchange.com", true },
- { "farhood.org", true },
{ "farid.is", true },
{ "farmacia-discreto.com", true },
{ "farmacialaboratorio.it", true },
@@ -12369,6 +12524,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "farsil.eu", true },
{ "fart.wtf", true },
{ "farwat.ru", true },
+ { "faschingmd.com", true },
+ { "fascia.fit", true },
{ "fashion-stoff.de", true },
{ "fashion24.de", true },
{ "fashion4ever.pl", true },
@@ -12408,6 +12565,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fastvistorias.com.br", true },
{ "fastwebsites.com.br", true },
{ "faszienrollen-info.de", false },
+ { "fateandirony.com", true },
+ { "fatecdevday.com.br", true },
{ "fatedata.com", true },
{ "fathers4equalrights.org", true },
{ "fatidique.com", true },
@@ -12422,11 +12581,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fawong.com", true },
{ "faxite.com", true },
{ "faxvorlagen-druckvorlagen.de", true },
- { "fayntic.com", true },
{ "fb.me", true },
{ "fbcdn.net", true },
{ "fbcopy.com", true },
- { "fbi.pw", true },
{ "fbigame.com", true },
{ "fbiic.gov", true },
{ "fbijobs.gov", true },
@@ -12441,7 +12598,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fcitasc.com", true },
{ "fckd.net", true },
{ "fcosinus.com", true },
- { "fcp.cn", true },
{ "fcprovadia.com", true },
{ "fcsic.gov", true },
{ "fdevs.ch", true },
@@ -12451,11 +12607,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fdm.ro", true },
{ "fdms.gov", true },
{ "fdn.one", true },
- { "fdos.me", true },
{ "fdp-brig-glis.ch", true },
{ "fdsys.gov", false },
{ "feac.us", true },
{ "feaden.me", true },
+ { "fearby.com", true },
{ "fearghus.org", true },
{ "fearsomegaming.com", true },
{ "feastr-dev.de", true },
@@ -12468,6 +12624,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fedcenter.gov", true },
{ "federaljobs.gov", true },
{ "federalreserve.gov", true },
+ { "federalreserveconsumerhelp.gov", true },
{ "federatedbank.com", true },
{ "federicomigliavacca.it", true },
{ "fedjobs.gov", true },
@@ -12475,6 +12632,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fedoramagazine.org", true },
{ "fedorapeople.org", true },
{ "fedoraproject.org", true },
+ { "fedpartnership.gov", true },
{ "fedramp.gov", false },
{ "fedrtc.org", true },
{ "fedshirevets.gov", true },
@@ -12498,7 +12656,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "feeriedesign-event.com", true },
{ "feetpa.ws", true },
{ "feezmodo.com", false },
- { "fefelovalex.ru", true },
{ "fegame.eu", true },
{ "fegame.mobi", true },
{ "fegame.net", true },
@@ -12506,18 +12663,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fegli.gov", true },
{ "fehngarten.de", true },
{ "fehnladen.de", true },
- { "feigling.net", true },
+ { "feigling.net", false },
+ { "feildel.fr", true },
{ "feilen.de", true },
- { "feisbed.com", true },
{ "feisim.com", true },
{ "feisim.org", true },
- { "feist.io", true },
{ "feistyduck.com", true },
{ "feizhujianzhi.com", true },
{ "fejes.house", true },
{ "feld.design", true },
{ "feld.saarland", true },
{ "feldhousen.com", true },
+ { "felett.es", true },
{ "felgitscher.xyz", true },
{ "felicifia.org", true },
{ "felinepc.com", true },
@@ -12526,16 +12683,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "felixbarta.de", true },
{ "felixcrux.com", true },
{ "felixgenicio.com", true },
- { "felixhefner.de", true },
{ "felixkauer.de", true },
- { "felixqu.com", true },
{ "felixsanz.com", true },
{ "felixseele.de", true },
{ "felsing.net", true },
{ "felsmalerei.net", true },
{ "femanca.com", true },
{ "femastudios.com", true },
- { "femdombbw.com", true },
{ "feminina.pt", true },
{ "femradio.es", true },
{ "femtomind.com", true },
@@ -12574,7 +12728,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "festival-tipps.com", true },
{ "festivaljapon.com", true },
{ "festivalxdentro.com", true },
- { "fetlife.com", true },
{ "fettlaus.de", true },
{ "feudalisten.de", true },
{ "feuerhuhn.de", true },
@@ -12592,11 +12745,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fexco.com", true },
{ "feyermedia.de", true },
{ "ff-bad-hoehenstadt.de", true },
- { "ff-bg.xyz", true },
{ "ff-getzersdorf.at", true },
{ "ff-obersunzing-niedersunzing.de", true },
{ "ff14-mstdn.xyz", true },
- { "ffb.gov", false },
{ "ffbans.org", true },
{ "ffiec.gov", true },
{ "ffis.me", true },
@@ -12652,7 +12803,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fight215.org", true },
{ "figinstitute.org", true },
{ "figshare.com", true },
- { "figura.cz", true },
{ "figurasdelinguagem.com.br", true },
{ "fiilr.com", true },
{ "fiissh.tech", true },
@@ -12661,14 +12811,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fijnewoensdag.nl", true },
{ "fiken.no", true },
{ "fil.fi", true },
+ { "filamentia.nl", true },
{ "filanthropystar.org", true },
+ { "file-cloud.eu", true },
{ "file-pdf.it", true },
- { "filebox.moe", false },
{ "filecopa.com", true },
{ "files.from-me.org", true },
{ "filestar.io", true },
{ "filetransfer.one", true },
- { "filewall.de", true },
{ "filezilla-project.org", true },
{ "filezilla.cn", true },
{ "filhin.es", true },
@@ -12677,16 +12827,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "filidorwiese.nl", true },
{ "filiio.com", true },
{ "filingsmadeeasy.com", true },
+ { "filiosoft.cloud", true },
{ "filip-prochazka.com", true },
{ "filippo.io", true },
{ "filipsebesta.com", true },
{ "filleritemsindia.com", true },
{ "fillo.sk", true },
{ "film-tutorial.com", true },
- { "film.photography", true },
- { "film.photos", true },
- { "filmatiporno.xxx", true },
{ "filme-onlines.com", true },
+ { "filmers.net", true },
{ "filmesonline.online", true },
{ "filmitis.com", true },
{ "filmreviewonline.com", true },
@@ -12728,7 +12877,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "finefriends.nl", true },
{ "finelovedolls.com", true },
{ "finenet.com.tw", true },
- { "finewineonline.com", true },
{ "finfev.de", true },
{ "finflix.net", true },
{ "finform.ch", true },
@@ -12738,6 +12886,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "finkenberger.org", false },
{ "finnclass.cz", true },
{ "finnwea.com", true },
+ { "finpt.com", false },
{ "finsprings.org", true },
{ "fintandunleavy.com", true },
{ "fintechnics.com", false },
@@ -12758,9 +12907,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "firefighters.dating", true },
{ "firefly-iii.org", true },
{ "firegoby.jp", true },
+ { "firegore.com", true },
{ "fireleadership.gov", true },
{ "firemudfm.com", true },
- { "firepeak.ru", true },
+ { "fireplex.co.uk", true },
{ "fireportal.cz", true },
{ "fireportal.sk", true },
{ "fireshellsecurity.team", true },
@@ -12785,6 +12935,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "firstclasscastles.com", true },
{ "firstclassleisure.co.uk", true },
{ "firstderm.com", true },
+ { "firstdry.com.br", true },
{ "firstfinca.de", true },
{ "firstinnovation.co.jp", true },
{ "firstinnovationltd.com", true },
@@ -12793,7 +12944,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fischer-its.com", false },
{ "fischer-kundendienst.de", true },
{ "fischers.cc", true },
- { "fischers.it", true },
{ "fischers.srv.br", true },
{ "fise.cz", true },
{ "fish-hook.ru", true },
@@ -12804,7 +12954,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fishermansbendcorporation.com.au", true },
{ "fishermansbendtownhouses.com.au", true },
{ "fishexport.eu", true },
- { "fishfinders.info", true },
{ "fishgen.no", true },
{ "fishserver.net", true },
{ "fishtacos.blog", true },
@@ -12815,7 +12964,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fit365.jp", true },
{ "fitchannel.com", true },
{ "fitfitup.com", true },
+ { "fitinclass.com", true },
{ "fitkram.cz", true },
+ { "fitmeat.at", true },
{ "fitness-challenge.co.uk", true },
{ "fitness.gov", true },
{ "fitseven.ru", true },
@@ -12824,7 +12975,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fiuxy.bz", true },
{ "fiuxy.co", true },
{ "fiuxy.me", true },
- { "fiuxy.org", true },
{ "fiveboosts.xyz", true },
{ "fivethirtyeight.com", true },
{ "fixatom.com", true },
@@ -12856,7 +13006,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "flamme-von-anor.de", true },
{ "flana.com", true },
{ "flanga.io", true },
- { "flangaapis.com", true },
{ "flapoverspeed.com", true },
{ "flashback.org", true },
{ "flashbeing.com", true },
@@ -12869,6 +13018,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "flatpackmates.co.uk", true },
{ "flauschig.net", true },
{ "flaviu.co.uk", true },
+ { "flavo.io", true },
{ "flavr.be", true },
{ "flawlesscowboy.xyz", true },
{ "fleamarketgoods.com", true },
@@ -12893,7 +13043,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fletchto99.com", true },
{ "flets-ms.com", true },
{ "fleurenplume.fr", true },
- { "fleurette.me", true },
{ "fleuryfleury.com", true },
{ "flexapplications.se", true },
{ "fleximaal.com", true },
@@ -12904,6 +13053,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "flextrack.dk", true },
{ "flextribly.xyz", true },
{ "fliacuello.com.ar", true },
+ { "flickcritter.com", true },
{ "flight.school", true },
{ "flightdeckfriend.com", true },
{ "flightmedx.com", true },
@@ -12918,7 +13068,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fliio.com", true },
{ "flikmsg.co", true },
{ "flinch.io", true },
- { "fling.dating", true },
{ "flipneus.net", true },
{ "fliptable.org", true },
{ "flirt-norden.de", true },
@@ -12936,8 +13085,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "floffi.media", true },
{ "floj.tech", true },
{ "flokinet.is", true },
+ { "flomeyer.de", true },
{ "floobits.com", true },
{ "flood.io", true },
+ { "floorballpoint.cz", true },
{ "flooringnightmares.com", true },
{ "flooringsourcetx.com", true },
{ "floort.net", false },
@@ -12947,6 +13098,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "florentynadawn.co.uk", true },
{ "florian-bachelet.fr", true },
{ "florian-thie.de", true },
+ { "florian2833z.de", true },
{ "floriankarmen.com", true },
{ "floriankeller.de", true },
{ "florianmitrea.uk", true },
@@ -12963,7 +13115,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "flosch.at", false },
{ "floseed.fr", true },
{ "floskelwolke.de", true },
- { "flosserver.de", true },
{ "flow.su", true },
{ "flowair24.ru", true },
{ "flowcom.de", true },
@@ -12980,6 +13131,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "flugsportvereinigungcelle.de", true },
{ "fluhrers.de", true },
{ "fluidmeterusa.com", true },
+ { "fluids.ac.uk", true },
{ "flumble.nl", true },
{ "flunschi.goip.de", true },
{ "fluoxetine.net", true },
@@ -12990,7 +13142,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fluxent.de", false },
{ "fluxfingers.net", true },
{ "fluxforge.com", true },
- { "fluxi.fi", true },
{ "fluxoid.com", true },
{ "flw365365.com", true },
{ "fly-en-drive.nl", true },
@@ -13000,7 +13151,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "flydrivesicilie.nl", true },
{ "flyer.tools", true },
{ "flygon.pink", true },
- { "flyinglocksmiths.com", false },
+ { "flyinglocksmiths.com", true },
{ "flyingpackets.net", true },
{ "flyingrub.me", true },
{ "flyingspaghettimonsterdonationsfund.nl", true },
@@ -13009,6 +13160,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "flyserver.co.il", true },
{ "flyshe.co.uk", true },
{ "flyspace.ml", true },
+ { "flyssh.net", true },
{ "flyswoop.com", true },
{ "flyt.online", true },
{ "flytoadventures.com", true },
@@ -13023,9 +13175,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fmodoux.biz", true },
{ "fmovies.fyi", true },
{ "fmussatmd.com", true },
+ { "fnanen.net", true },
{ "fnb-griffinonline.com", true },
{ "fnbnokomis.com", true },
- { "fnfpt.co.uk", true },
{ "fnkr.net", true },
{ "fnof.ch", true },
{ "fnordserver.eu", true },
@@ -13039,6 +13191,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "foej-aktiv.de", true },
{ "foej.net", true },
{ "fogpublishingph.com", true },
+ { "fogway.net", true },
{ "foia.gov", true },
{ "foiaonline.gov", true },
{ "fojing.com", true },
@@ -13055,6 +13208,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "folkfests.org", true },
{ "follandviolins.com", true },
{ "followback.net", true },
+ { "follower98.ir", true },
{ "followerrocket.com", true },
{ "followersya.com", true },
{ "followings-live.com", true },
@@ -13065,13 +13219,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "folwark.krakow.pl", true },
{ "folwarkwiazy.pl", true },
{ "fomopop.com", true },
- { "fondanastasia.ru", true },
{ "fondationwiggli.ch", true },
{ "fondsdiscountbroker.de", true },
{ "fondy.eu", true },
{ "fondy.ua", true },
{ "fonga.ch", true },
{ "fonolo.com", true },
+ { "fonseguin.ca", true },
{ "font-converter.net", true },
{ "fonte-trading.com", true },
{ "fontein.de", true },
@@ -13079,14 +13233,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fonts4free.net", true },
{ "foo.fo", true },
{ "foo.hamburg", true },
- { "foodacademy.capetown", true },
{ "foodattitude.ch", true },
{ "foodblogger.club", true },
{ "foodcowgirls.com", true },
{ "foodev.de", true },
{ "foodsafety.gov", true },
{ "foodsafetyjobs.gov", true },
- { "foodserve.in", true },
{ "foodsouvenirs.it", true },
{ "foodtable.at", true },
{ "foodwise.marketing", true },
@@ -13119,10 +13271,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "forestraven.net", true },
{ "foreverssl.com", true },
{ "foreversummertime.com", true },
+ { "forewordreviews.com", true },
+ { "forex-plus.com", true },
{ "forex.ee", true },
{ "forexchef.de", true },
{ "forexee.com", true },
- { "forexsignals7.com", true },
+ { "forextickler.com", true },
{ "forextimes.ru", false },
{ "forfunssake.co.uk", true },
{ "forge-goerger.eu", true },
@@ -13141,15 +13295,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "formula-ot.ru", true },
{ "formulacionquimica.com", true },
{ "fornoreason.net.au", true },
+ { "fornwall.net", true },
{ "foro.io", false },
{ "forodeespanol.com", true },
{ "forodieta.com", true },
{ "forologikidilosi.com.gr", true },
{ "forourselves.com", true },
{ "forpc.us", true },
+ { "forquilhinhanoticias.com.br", true },
{ "forrestheller.com", true },
{ "forro.info", true },
{ "forsakringsarkivet.se", true },
+ { "forschbach-janssen.de", true },
{ "forsec.nl", true },
{ "forstbetrieb-hennecke.de", true },
{ "forstprodukte.de", true },
@@ -13161,6 +13318,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fortran.io", true },
{ "fortress.no", true },
{ "fortress.sk", true },
+ { "forty-two.nl", true },
{ "forty8creates.com", true },
{ "fortytwo.cloud", true },
{ "forum-bonn.de", true },
@@ -13169,7 +13327,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "forum-kinozal.appspot.com", true },
{ "forum.quantifiedself.com", false },
{ "forum3.ru", true },
- { "forumjuridico.org", true },
{ "forumvoordemocratie.nl", true },
{ "forvisualdesign.com", true },
{ "forward-fly-fishing.ch", true },
@@ -13195,10 +13352,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fotoflits.net", true },
{ "fotografiadellalucerossa.com", true },
{ "fotohome.dk", true },
+ { "fotokomorkomania.pl", true },
{ "fotoleitner.com", true },
{ "fotoleitner.de", true },
- { "fotonjan.com", true },
- { "fotostravestisbr.com", true },
{ "fotostudio-leitner.com", true },
{ "fotostudio-leitner.de", true },
{ "fotostudio-schweiz.ch", true },
@@ -13206,6 +13362,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fotowolfy.com", true },
{ "fougner.co", true },
{ "found.website", true },
+ { "foundationspecialisteast.com", true },
+ { "foundationspecialistmi.com", true },
{ "foundchurch.co.uk", true },
{ "foundsounds.me", true },
{ "fourashesgolfcentre.co.uk", true },
@@ -13215,24 +13373,25 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "foutrelis.com", true },
{ "fowlervwparts.com", true },
{ "fowlsmurf.net", true },
+ { "fox.my", true },
{ "foxbnc.co.uk", true },
{ "foxdev.co", true },
+ { "foxes.no", true },
{ "foxhound.com.br", true },
{ "foxing.club", true },
+ { "foxo.blue", true },
{ "foxontheinter.net", true },
{ "foxphotography.ch", true },
{ "foxquill.com", true },
{ "foxterrier.com.br", true },
- { "foyale.io", true },
{ "fpc.gov", true },
{ "fpersona.com", true },
- { "fpki.sh", true },
- { "fptravelling.com", false },
{ "fpvr.org", true },
{ "fpy.cz", true },
{ "fr.search.yahoo.com", false },
{ "fr33tux.org", true },
{ "frack.nl", true },
+ { "fracreazioni.it", true },
{ "fraesentest.de", true },
{ "fragmentspuren.de", true },
{ "fragstore.net", true },
@@ -13242,7 +13401,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "framedpaws.com", true },
{ "framezdakkapellen.nl", true },
{ "fran.cr", true },
- { "francesca-and-lucas.com", true },
{ "francescopalazzo.com", true },
{ "francescoservida.ch", true },
{ "francetraceur.fr", true },
@@ -13258,8 +13416,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "francoislepage.com", true },
{ "francoz.me", true },
{ "frandor.co.uk", true },
+ { "frank.fyi", true },
+ { "frankbellamy.co.uk", true },
{ "franke-chemie.de", true },
- { "frankedier.com", true },
{ "franken-lehrmittel.de", true },
{ "frankenhost.de", true },
{ "frankenlehrmittel.de", true },
@@ -13268,10 +13427,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "frankierprofi.de", true },
{ "frankierstar.de", true },
{ "frankinteriordesign.co.uk", true },
- { "frankl.in", true },
{ "frankmorrow.com", true },
- { "franksiler.com", true },
{ "frankslaughterinsurance.com", true },
+ { "frankwei.xyz", true },
{ "frankyan.com", true },
{ "fransallen.com", true },
{ "frantic1048.com", true },
@@ -13279,6 +13437,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "franz-vatter.de", true },
{ "franz.beer", true },
{ "franziska-pascal.de", true },
+ { "franzknoll.de", true },
{ "frappant.cc", false },
{ "fraselab.ru", true },
{ "frasesdodia.com", true },
@@ -13298,11 +13457,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "frdl.ch", true },
{ "freaksites.dk", true },
{ "freaksports.com.au", true },
+ { "freakyawesome.com", true },
{ "frebi.org", true },
{ "frebib.co.uk", true },
{ "frebib.com", true },
{ "frebib.me", true },
{ "frebib.net", true },
+ { "freddieonfire.tk", false },
{ "freddyfazbearspizzeria.com", true },
{ "freddysfuncastles.co.uk", true },
{ "fredericcote.com", true },
@@ -13311,22 +13472,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "frederikvig.com", true },
{ "fredloya.com", true },
{ "fredriksslekt.se", true },
- { "fredtec.ru", true },
{ "fredvoyage.fr", true },
{ "free-your-pc.com", true },
+ { "free.ac.cn", true },
{ "free.com.tw", true },
+ { "freeassangenow.org", true },
{ "freeasyshop.com", true },
{ "freebarrettbrown.org", true },
{ "freebcard.com", true },
{ "freebetoffers.co.uk", true },
- { "freeblog.me", true },
{ "freebookmakersbetsandbonuses.com.au", true },
{ "freeboson.org", true },
- { "freecam2cam.site", true },
{ "freecloud.at", true },
- { "freecookies.nl", true },
{ "freedev.cz", true },
+ { "freedom.nl", true },
{ "freedom.press", true },
+ { "freedom35.org", true },
{ "freedomfinance.se", true },
{ "freedomflotilla.org", true },
{ "freedomfrontier.tk", true },
@@ -13334,7 +13495,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "freedomonline.bg", true },
{ "freedomrahoitus.fi", true },
{ "freeenglishhelp.com", true },
- { "freeexampapers.com", true },
{ "freeform4u.de", true },
{ "freegame-mugen.jp", true },
{ "freegutters.com", true },
@@ -13376,6 +13536,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "freevps.us", false },
{ "freeweibo.com", true },
{ "freeyourmusic.com", true },
+ { "freezion.com", true },
{ "frei.social", true },
{ "freifahrt.de", true },
{ "freifamily.ch", true },
@@ -13394,7 +13555,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "freizeitplaza.de", true },
{ "frejasdal.dk", true },
{ "frenchcreekcog.org", true },
- { "frenzel.dk", true },
{ "frequencebanane.ch", true },
{ "frequentflyerapp.com", true },
{ "fresh-hotel.org", true },
@@ -13426,7 +13586,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "friends24.cz", true },
{ "friendship-quotes.co.uk", true },
{ "friendshipismagicsquad.com", true },
- { "frieslandrail.nl", true },
{ "friet.org", true },
{ "frietbesteld.nl", true },
{ "friezy.ru", true },
@@ -13443,7 +13602,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "frizo.com", true },
{ "frly.de", true },
{ "frob.nl", true },
- { "froehlich.it", true },
{ "froehliche-hessen.de", true },
{ "frogatto.com", true },
{ "frogeye.fr", true },
@@ -13451,21 +13609,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "frogsonamission.de", true },
{ "froh.co.jp", true },
{ "frolova.org", true },
- { "from-the-net.com", true },
{ "fromscratch.rocks", true },
{ "fromthesoutherncross.com", true },
{ "fronteers.nl", false },
+ { "frontierdiscount.com", true },
{ "fropky.com", true },
- { "frosthall.com", true },
{ "frostprotection.co.uk", true },
{ "frostwarning.com", true },
+ { "frostysummers.com", true },
{ "frothy.coffee", true },
{ "froufe.com", true },
{ "frozen-geek.net", true },
{ "frozen-solid.net", true },
- { "frprn.com", true },
{ "frprn.es", true },
- { "frprn.xxx", true },
{ "frtn.com", true },
{ "frtr.gov", true },
{ "frtrains.com", true },
@@ -13485,6 +13641,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fs-fitness.eu", true },
{ "fs-maistadt.de", true },
{ "fs257.com", true },
+ { "fsapubs.gov", false },
{ "fsbn.eu", true },
{ "fsbnh.bank", true },
{ "fsbpaintrock.com", true },
@@ -13496,12 +13653,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fsdress.com", true },
{ "fsfxpackages.com", true },
{ "fsj4u.ch", true },
- { "fsk.fo", true },
{ "fsky.info", true },
{ "fsm2016.org", true },
{ "fsps.ch", true },
{ "fsstyle.com", true },
- { "fsvoboda.cz", true },
{ "fsvt.ch", true },
{ "ft.com", false },
{ "ftang.de", true },
@@ -13534,7 +13689,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fuglede.dk", true },
{ "fuite.ch", true },
{ "fuites.ch", true },
- { "fujianshipbuilding.com", true },
{ "fujiorganics.com", false },
{ "fujiwaraqol.com", true },
{ "fukakukeiba.com", true },
@@ -13548,17 +13702,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "full-stack.ninja", true },
{ "fullautomotivo.com.br", true },
{ "fullbundle.com", true },
+ { "fullereno.com", true },
+ { "fullerlife.org.uk", true },
{ "fullhost.com", true },
{ "fullhub.ru", true },
{ "fullmatch.net", true },
- { "fullpackage.co.uk", true },
{ "fullstacknotes.com", true },
- { "fulltxt.ml", true },
{ "fumblers.ca", true },
{ "fumerolles.ch", true },
{ "fumo.se", false },
{ "fun-bounce.co.uk", true },
{ "fun-tasia.co.uk", true },
+ { "fun25.tk", true },
{ "fun4kidzbouncycastles.co.uk", true },
{ "fun4ubouncycastles.co.uk", true },
{ "funadvisor.ca", true },
@@ -13569,7 +13724,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "funchestra.at", false },
{ "functional.cc", true },
{ "functions-online.com", true },
- { "fundayltd.com", true },
{ "fundays.nl", true },
{ "fundchan.com", true },
{ "fundeego.com", true },
@@ -13578,12 +13732,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "funds.ddns.net", true },
{ "funerariahogardecristo.cl", true },
{ "funfactorleeds.co.uk", true },
+ { "funfair.io", true },
{ "funfoodco.co.uk", true },
{ "funfunmstdn.tokyo", true },
+ { "fungames.com", true },
{ "funhouse-inflatables.co.uk", true },
- { "funi4u.com", true },
{ "funinbeds.org.uk", true },
{ "funken-networks.de", true },
+ { "funkner.ru", true },
{ "funktionel.co", true },
{ "funktionsverket.se", true },
{ "funkygamer1.de", true },
@@ -13596,7 +13752,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "funtime-inflatables.co.uk", true },
{ "funtime.com.ua", true },
{ "funtime.kiev.ua", true },
- { "funtimebourne.co.uk", true },
{ "funtimeentertainment.co.uk", true },
{ "funtimesbouncycastles.co.uk", true },
{ "fur.red", true },
@@ -13615,6 +13770,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "furnfurs.com", true },
{ "furnitureconcept.co.uk", true },
{ "furry.agency", true },
+ { "furry.cat", true },
{ "furry.dk", true },
{ "furry.zone", false },
{ "furrybot.me", true },
@@ -13626,13 +13782,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fuseos.net", true },
{ "fushee.com", true },
{ "fusiongaming.de", true },
- { "fuskator.com", true },
{ "fussball-xxl.de", true },
- { "fussell.io", true },
{ "futagro.com", true },
+ { "futcre.com", true },
{ "futrou.com", true },
{ "future-moves.com", true },
- { "futurefire.de", true },
{ "futurefund.com", true },
{ "futurefundapp.com", true },
{ "futurehack.io", true },
@@ -13643,14 +13797,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "futurope.com", true },
{ "fuwafuwa.moe", true },
{ "fuyu.moe", true },
- { "fuzoku.jp", true },
{ "fuzzing-project.org", true },
{ "fveevaete.com", true },
{ "fwdx.net", true },
{ "fwest.ovh", true },
{ "fwest98.nl", true },
{ "fwest98.ovh", true },
- { "fwww7.com", true },
{ "fx-rk.com", true },
{ "fx24.uk", true },
{ "fx5.de", true },
@@ -13673,8 +13825,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "fxwebsites.com.au", true },
{ "fxwebsites.net.au", true },
{ "fxwebstudio.net.au", true },
+ { "fyfywka.com", true },
{ "fyksen.me", true },
{ "fyn.nl", true },
+ { "fyol.xyz", false },
{ "fyretrine.com", true },
{ "fysesbjerg.dk", true },
{ "fysio123.nl", true },
@@ -13689,10 +13843,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "g-m-w.eu", true },
{ "g-marketing.ro", true },
{ "g-o.pl", true },
+ { "g-p-design.com", true },
{ "g-rom.net", true },
{ "g0881.com", true },
{ "g1.ie", true },
{ "g10e.ch", true },
+ { "g1s.cc", true },
{ "g2links.com", true },
{ "g2pla.net", true },
{ "g2soft.net", true },
@@ -13704,12 +13860,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "g8energysolutions.co.uk", true },
{ "gaaz.fr", true },
{ "gabe565.com", true },
+ { "gabeb1920.com", true },
{ "gabecook.com", true },
{ "gabemack.com", true },
{ "gabinetpsychoterapii.krakow.pl", true },
{ "gabriel.to", true },
{ "gabrielsimonet.ch", true },
{ "gabrielsteens.nl", true },
+ { "gachimuchi.ru", true },
+ { "gachiyase.com", true },
{ "gachter.name", true },
{ "gadabit.pl", true },
{ "gadgethacks.com", true },
@@ -13726,17 +13885,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gagniard.org", true },
{ "gagor.pl", true },
{ "gagygnole.ch", true },
+ { "gaiavanderzeyp.com", true },
{ "gaichon.com", true },
{ "gailfellowsphotography.com", true },
{ "gaines-sodiamex.fr", true },
{ "gaio-automobiles.fr", true },
{ "gaireg.de", true },
- { "gaiserik.com", true },
{ "gaitandmobility.com", true },
{ "gaitrehabilitation.com", true },
{ "gaitresearch.com", true },
- { "gajas18.com", true },
- { "gakkainavi-epsilon.jp", true },
{ "gakkainavi-epsilon.net", true },
{ "gakkainavi.jp", true },
{ "gakkainavi.net", true },
@@ -13746,14 +13903,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gala.kiev.ua", false },
{ "galactic-crew.org", true },
{ "galak.ch", true },
+ { "galanight.cz", true },
+ { "galeria42.com", true },
{ "galerieautodirect.com", true },
{ "galeries.photo", true },
{ "galgopersa.com.br", true },
+ { "galilahiskye.com", true },
{ "galileanhome.org", true },
- { "galileomtz.com", true },
{ "galinas-blog.de", true },
{ "galinos.gr", true },
{ "galle.cz", true },
+ { "gallerify.eu", true },
+ { "galletasgabi.com.mx", false },
{ "galleyfoods.com", true },
{ "gallicrooster.com", true },
{ "gallifreyapp.co.uk", true },
@@ -13769,11 +13930,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gambitnash.com", true },
{ "gambitprint.com", true },
{ "gamblersgaming.eu", true },
- { "game-files.net", false },
+ { "game4less.com", true },
{ "game7.de", true },
{ "gameblabla.nl", true },
{ "gamebrott.com", true },
{ "gamecard-shop.nl", true },
+ { "gameclue.jp", true },
{ "gamecollector.be", true },
{ "gameconservation.org.uk", true },
{ "gamedevelopers.pl", true },
@@ -13785,9 +13947,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gamenerd.net", true },
{ "gameofpwnz.com", true },
{ "gamepad.com.br", true },
+ { "gameplaysforkids.com", true },
+ { "gamequest.info", true },
{ "gamercredo.com", true },
+ { "gamereader.de", true },
{ "gamerezo.com", true },
- { "gamerz-stream.com", true },
{ "gamerzdot.com", true },
{ "games4theworld.org", true },
{ "gamesaviour.com", true },
@@ -13797,6 +13961,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gamesplanet.com", true },
{ "gamesputnik.ru", true },
{ "gamestats.gg", true },
+ { "gametube.website", true },
{ "gamilab.com", true },
{ "gamilab.no", true },
{ "gamingexodus.com", true },
@@ -13805,6 +13970,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gamingwithcromulent.com", true },
{ "gamingzoneservers.com", true },
{ "gamishou.fr", true },
+ { "gamivo.com", true },
{ "gamoloco.com", true },
{ "gan.wtf", true },
{ "ganado.org", true },
@@ -13817,17 +13983,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gandgliquors.com", true },
{ "ganggalbichler.at", true },
{ "gansleit.com", false },
- { "ganzgraph.de", true },
+ { "ganyouxuan.com", true },
{ "ganztagplus.de", true },
{ "gao.rocks", true },
{ "gaojianli.tk", true },
- { "gaon.network", true },
{ "gaos.org", true },
{ "gapdirect.com", true },
{ "gapfa.org", true },
{ "gaptek.id", false },
{ "gar-nich.net", false },
- { "garage-abri-chalet.fr", true },
{ "garage-leone.com", true },
{ "garage-meynard.com", true },
{ "garageenginuity.com", true },
@@ -13837,6 +14001,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "garanteasy.com", true },
{ "garbage-juice.com", true },
{ "garbomuffin.com", true },
+ { "garciagerman.com", true },
{ "garda-see.mobi", true },
{ "gardedenfantspourtous.fr", true },
{ "garden-life.org", true },
@@ -13846,12 +14011,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gardinte.com", true },
{ "garedtech.com", false },
{ "garethbowker.com", true },
+ { "garethkirk.com", true },
{ "garethkirkreviews.com", true },
{ "garethrhugh.es", true },
{ "garforthgolfclub.co.uk", true },
{ "gargazon.net", true },
{ "garron.net", true },
{ "garrowmediallc.com", true },
+ { "gartenhauszentrum.de", true },
{ "gartenplanung-brendes.de", true },
{ "garycarmell.com", true },
{ "garycwaite.com", true },
@@ -13862,43 +14029,43 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "garywhittington.com", true },
{ "gashalot.com", true },
{ "gastoudererenda.nl", true },
- { "gastritisolucion.com", true },
+ { "gastromedicalcenter.com.br", true },
{ "gastrotiger.at", true },
{ "gastrotiger.de", true },
{ "gate2home.com", true },
{ "gateaucreation.fr", true },
{ "gatewaybridal.com", true },
{ "gatewaybronco.com", true },
- { "gatilagata.com.br", true },
{ "gauche.com", true },
{ "gaudeamus-folklor.cz", true },
{ "gaudere.co.jp", true },
+ { "gaurl.ga", true },
{ "gaussianwaves.com", true },
{ "gautham.it", false },
{ "gauthier.dk", true },
{ "gautvedt.no", true },
{ "gavins.stream", true },
{ "gavinsblog.com", true },
+ { "gawrimanecuta.com", true },
{ "gay-jays.com", true },
- { "gay-sissies.com", true },
+ { "gaya-sa.org", true },
{ "gayforgenji.com", true },
{ "gayjays.com", true },
{ "gaysexpositions.guide", true },
- { "gaysfisting.com", true },
- { "gaytorrent.ru", true },
{ "gayukai.net", true },
- { "gayxsite.com", true },
{ "gazachallenge.org", true },
{ "gazee.net", true },
{ "gazellegames.net", false },
+ { "gazete.org", true },
{ "gazette.govt.nz", true },
{ "gbc-radio.nl", true },
{ "gbcsummercamps.com", true },
- { "gbit.xyz", true },
{ "gbl.selfip.net", true },
{ "gboys.net", true },
+ { "gc-mc.de", true },
{ "gc.gy", true },
{ "gcbit.dk", true },
+ { "gccm-events.com", true },
{ "gcfadvisors.com", true },
{ "gcgeeks.com.au", true },
{ "gcguild.net", true },
@@ -13909,9 +14076,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gdax.com", true },
{ "gdb-tutorial.net", true },
{ "gdgrzeszow.pl", true },
+ { "gdhzcgs.com", true },
{ "gdiary.net", true },
+ { "gdngs.de", true },
{ "gdpr-pohotovost.cz", true },
- { "gdutnic.com", true },
{ "gdv.me", true },
{ "gdz-spishy.com", true },
{ "ge3k.net", false },
@@ -13921,7 +14089,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gearfinder.nl", true },
{ "gearseo.com.br", true },
{ "gearset.com", true },
- { "geaskb.nl", true },
{ "geass.xyz", true },
{ "geba-online.de", true },
{ "gebn.co.uk", true },
@@ -13935,6 +14102,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gedankenworks.com", true },
{ "geder.at", true },
{ "gedlingcastlehire.co.uk", true },
+ { "gee.is", true },
{ "geecrat.com", true },
{ "geek-hub.de", true },
{ "geek.ch", true },
@@ -13942,29 +14110,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "geekabit.nl", true },
{ "geekandi.com", true },
{ "geekariom.com", true },
- { "geekchimp.com", true },
{ "geekclubbooks.com", true },
{ "geeklair.net", true },
{ "geeklan.co.uk", true },
{ "geekles.net", true },
{ "geeknik.com", true },
{ "geekpad.com", true },
- { "geekseries.fr", true },
+ { "geeks.one", true },
{ "geekshirts.cz", true },
{ "geektopia.es", true },
{ "geekwhack.org", true },
{ "geekwithabudget.com", true },
{ "geekwu.org", true },
- { "geeky.software", true },
{ "geekystudios.us", true },
{ "geekz.sk", true },
{ "geekzone.co.nz", true },
{ "geekzone.fr", true },
{ "geeq.ch", true },
{ "geerdsen.net", true },
+ { "geertdegraaf.nl", true },
{ "geertswei.nl", true },
{ "gegeco.ch", true },
{ "geh.li", true },
+ { "gehaowu.com", true },
+ { "gehirn.co.jp", true },
+ { "gehirn.jp", true },
{ "gehopft.de", true },
{ "gehreslaw.com", true },
{ "gehrke.in", true },
@@ -13990,7 +14160,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gemini.com", true },
{ "gemquery.com", true },
{ "genchev.io", true },
- { "gencmedya.com", true },
+ { "gencmedya.com", false },
{ "genderidentiteit.nl", true },
{ "gendrin.com", true },
{ "gendundrupa.ch", true },
@@ -14000,6 +14170,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "geneau.net", true },
{ "genehightower.com", true },
{ "genehome.com.au", true },
+ { "generace-id.org", true },
{ "generador-electrico.com", true },
{ "general-anaesthesia.com", true },
{ "general-anaesthetics.com", true },
@@ -14019,7 +14190,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "geneve-naturisme.ch", true },
{ "genevoise-entretien.ch", true },
{ "genfaerd.dk", true },
- { "genie-seiner-generation.de", true },
+ { "geniush.ovh", true },
{ "geniusteacher.in", true },
{ "geniuszone.biz", true },
{ "genocidediary.org", true },
@@ -14034,10 +14205,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gensicke.de", true },
{ "genslerapps.com", true },
{ "genslerwisp.com", true },
+ { "gensokyo.chat", true },
{ "gensonline.eu", true },
{ "gentianes.ch", true },
{ "gentoo-blog.de", true },
- { "gentooblog.de", true },
{ "genusshotel-riegersburg.at", true },
{ "genuxtsg.com", true },
{ "genxnotes.com", true },
@@ -14051,6 +14222,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "geomex.be", true },
{ "geoponika.gr", true },
{ "geoport.al", true },
+ { "georadar-algerie.com", true },
{ "george-brighton.co.uk", true },
{ "george-orwell.com", true },
{ "georgebrighton.co.uk", true },
@@ -14060,6 +14232,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "georgemaschke.net", true },
{ "georgescarryout.com", true },
{ "georgewbushlibrary.gov", true },
+ { "georgiaautoglass.net", true },
{ "georgiaglassrepair.com", true },
{ "georgiastuartyoga.co.uk", true },
{ "georgioskontaxis.com", true },
@@ -14071,26 +14244,30 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "geosphereservices.com", true },
{ "geotab.com", true },
{ "gepe.ch", true },
+ { "gepgroup.gr", true },
{ "gepps.de", true },
{ "geraintwhite.co.uk", true },
{ "gerald-zojer.com", true },
{ "geraldsonrealty.com", true },
+ { "gerardinden.nl", true },
{ "gerardozamudio.mx", true },
+ { "gerbyte.co.uk", true },
+ { "gerbyte.com", true },
+ { "gerbyte.uk", true },
{ "germandarknes.net", true },
{ "germansoldiers.net", true },
{ "germanssky.de", true },
{ "gernert-server.de", true },
{ "gero.io", true },
{ "gerritcodereview.com", true },
- { "gerum.dynv6.net", true },
{ "gerwinvanderkamp.nl", true },
{ "ges-bo.de", true },
{ "geschichtscheck.de", true },
{ "geschmacksache.online", true },
{ "geschwinder.net", true },
+ { "gesica.cloud", true },
{ "gestorehotel.com", true },
{ "gestormensajeria.com", true },
- { "gesundes-im-napf.de", true },
{ "gesundheitmassage.com", true },
{ "gesundheitswelt24.de", true },
{ "get-erp.ru", true },
@@ -14123,6 +14300,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "geti2p.com", true },
{ "getidmcc.com", true },
{ "getimgs.com", true },
+ { "getinphase.com", true },
{ "getitpeople.com", true },
{ "getmango.com", true },
{ "getmdl.io", true },
@@ -14142,7 +14320,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "getsecure.nl", true },
{ "getsensibill.com", true },
{ "getsetbounce.co.uk", true },
- { "getsetupfile.com", true },
{ "getsilknow.com", true },
{ "getsmartaboutdrugs.gov", true },
{ "getsport.mobi", true },
@@ -14155,16 +14332,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "getupandbounce.co.uk", true },
{ "getvdownloader.com", true },
{ "getweloop.io", true },
+ { "getwemap.com", true },
{ "getwisdom.io", true },
{ "getyeflask.com", true },
{ "getyou.onl", true },
{ "getyourlifestraight.com", true },
{ "geyduschek.be", true },
{ "gf-franken.de", true },
+ { "gf5fcalc.com", true },
{ "gfahnen.de", true },
{ "gfast.ru", true },
{ "gfcleisure.co.uk", true },
- { "gfe.li", true },
{ "gfe.link", true },
{ "gfelite.de", true },
{ "gfestival.fo", true },
@@ -14175,31 +14353,32 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gfnetfun.cf", true },
{ "gforce.ninja", true },
{ "gfoss.eu", true },
- { "gfournier.ca", true },
{ "gfxbench.com", true },
{ "ggdcpt.com", true },
{ "gginin.today", true },
{ "ggl-luzern.ch", true },
{ "ggma.co.uk", true },
{ "ggmmontascale.it", true },
- { "ggobbo.com", true },
{ "ggp2.com", true },
{ "ggs-marschallstrasse.de", true },
{ "ggs.jp", true },
{ "ggservers.com", true },
{ "ggx.us", true },
{ "gha.st", true },
+ { "ghaglund.se", true },
+ { "ghid-pitesti.ro", true },
{ "ghini.com", true },
{ "ghislainphu.fr", true },
{ "ghostblog.info", false },
{ "ghostcir.com", true },
+ { "ghowell.io", true },
{ "ghrelinblocker.info", true },
{ "ghrelinblocker.org", true },
- { "ghuntley.com", false },
{ "giac.org", true },
{ "giacomodrago.com", true },
{ "giacomodrago.it", true },
{ "giacomopelagatti.it", true },
+ { "giaithich.net", true },
{ "gianproperties.com", true },
{ "giant-panda.com", true },
{ "giant-tortoise.com", true },
@@ -14214,6 +14393,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "giddyaunt.net", true },
{ "giduv.com", true },
{ "giebel.it", true },
+ { "giegler.software", true },
{ "gierds.de", true },
{ "giethoorn.com", true },
{ "gietvloergarant.nl", false },
@@ -14221,15 +14401,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "giftedconsortium.com", true },
{ "giftking.nl", false },
{ "giftmaniabrilhos.com.br", true },
+ { "gifts.best", true },
{ "gifts365.co.uk", true },
- { "giftservices.nl", true },
{ "gig-raiffeisen.de", true },
{ "giga.nl", true },
{ "gigabitz.pw", true },
{ "gigacog.com", true },
{ "gigantism.com", true },
{ "gigawa.lt", true },
- { "gigawattz.com", true },
{ "giggletotz.co.uk", true },
{ "gigime.com", true },
{ "gigin.eu", true },
@@ -14237,7 +14416,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gigis-pizzeria.de", true },
{ "gigis.cloud", true },
{ "giglink.club", true },
- { "gigolodavid.be", true },
{ "gigseekr.com", true },
{ "gigtroll.eu", true },
{ "gijsbertus.com", true },
@@ -14254,13 +14432,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gilmoreid.com.au", true },
{ "gilnet.be", true },
{ "gina-architektur.design", true },
- { "ginie.de", true },
+ { "gingersutton.com", true },
{ "ginionusedcars.be", true },
{ "ginja.co.th", true },
{ "ginnegappen.nl", true },
{ "ginniemae.gov", true },
+ { "gino-gelati.de", true },
{ "ginza-luce.net", true },
{ "ginzadelunch.jp", true },
+ { "ginzaj.com", true },
{ "giochi-online.ws", true },
{ "giochiecodici.it", true },
{ "gioielleriamolena.com", true },
@@ -14278,12 +14458,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "girsa.org", true },
{ "girvas.ru", true },
{ "gisgov.be", true },
+ { "gisher.news", true },
{ "gisher.org", true },
+ { "gisher.video", true },
{ "gistr.io", true },
{ "git.ac.cn", true },
{ "git.market", true },
+ { "git.sb", true },
{ "git.tt", true },
- { "gitar.io", true },
{ "gitep.org.uk", true },
{ "gites-alizea.com", true },
{ "gitesdeshautescourennes.com", true },
@@ -14291,8 +14473,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gitla.in", true },
{ "gitstuff.tk", true },
{ "gittigidiyor.com", true },
- { "gittr.ch", true },
- { "giuem.com", true },
+ { "giuem.com", false },
{ "giunchi.net", true },
{ "giuseppemacario.men", true },
{ "givastar.com", true },
@@ -14318,10 +14499,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gl.search.yahoo.com", false },
{ "glaciernursery.com", true },
{ "gladwellentertainments.co.uk", true },
- { "glahcks.com", true },
{ "glamguru.co.il", true },
{ "glamguru.world", true },
{ "glamour4you.de", true },
+ { "glamourdaze.com", true },
{ "glasdon.com", true },
{ "glasen-hardt.de", true },
{ "glasfaser-im-hanseviertel.de", true },
@@ -14335,14 +14516,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gleanview.com", true },
{ "gleich-aluminium-shop.de", true },
{ "glenberviegolfclub.com", true },
+ { "glencambria.com", true },
{ "glencarbide.com", true },
{ "glendarraghbouncycastles.co.uk", true },
{ "glenhuntlyapartments.com.au", true },
{ "glenshere.com", true },
{ "glevolution.com", true },
+ { "glicerina.online", true },
{ "glidingshop.cz", true },
{ "glidingshop.de", true },
{ "glidingshop.eu", true },
+ { "glitzerstuecke.de", true },
{ "glloq.org", true },
{ "glob-coin.com", true },
{ "global-adult-webcams.com", true },
@@ -14372,9 +14556,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "glocalworks.jp", true },
{ "glofox.com", true },
{ "gloneta.com", false },
+ { "glosiko.com", true },
+ { "glossopnorthendafc.co.uk", true },
{ "glotech.co.uk", true },
{ "glotechkitchens.co.uk", true },
{ "glotechrepairs.co.uk", true },
+ { "glu3cifer.rocks", true },
{ "glueck-im-norden.de", true },
{ "gluecksgriff-taschen.de", true },
{ "glueckskindter.de", true },
@@ -14384,6 +14571,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "glutenfreevr.com", true },
{ "glykofridis.nl", true },
{ "glyxins.com", true },
+ { "gm-net.jp", true },
{ "gm.search.yahoo.com", false },
{ "gmail.com", false },
{ "gmantra.org", true },
@@ -14396,8 +14584,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gmod.de", true },
{ "gmpark.dk", true },
{ "gmpartsdb.com", true },
+ { "gmslparking.co.uk", true },
{ "gmta.nl", true },
- { "gmw-hannover.de", true },
+ { "gmtplus.co.za", true },
{ "gmw-ingenieurbuero.de", true },
{ "gmx.at", true },
{ "gmx.ch", true },
@@ -14407,11 +14596,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gmx.es", true },
{ "gmx.fr", true },
{ "gmx.net", true },
+ { "gn00.com", true },
{ "gnax.jp", false },
+ { "gndh.net", true },
{ "gnetion.com", true },
{ "gnetwork.eu", true },
+ { "gnfrazier.me", true },
{ "gnhub.org", true },
{ "gnilebein.de", true },
+ { "gnk.io", true },
{ "gnuand.me", true },
{ "gnucashtoqif.us", true },
{ "gnunet.org", true },
@@ -14422,6 +14615,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "go-embedded.de", true },
{ "go-wild.co.uk", true },
{ "go-zh.org", true },
+ { "go.microsoft.com", true },
{ "go.xero.com", false },
{ "go2ubl.nl", true },
{ "goa8.xyz", true },
@@ -14435,7 +14629,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gobouncy.co.uk", true },
{ "gobouncy.com", true },
{ "gobranding.com.vn", true },
- { "gocardless.com", true },
+ { "gocher.me", true },
{ "gochu.se", true },
{ "gocleanerslondon.co.uk", true },
{ "god-clan.hu", true },
@@ -14457,6 +14651,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "goedverzekerd.net", true },
{ "goemail.me", true },
{ "goerlitz-zgorzelec.org", true },
+ { "goerres2014.de", true },
+ { "goesta-hallenbau.de", true },
{ "goetemp.de", true },
{ "goetic.space", true },
{ "goettinger-biergarten.de", true },
@@ -14477,9 +14673,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "goingreen.com.au", true },
{ "gokhankesici.com", true },
{ "gokmenguresci.com", true },
+ { "golang.zone", true },
{ "gold24.ru", true },
- { "goldclubcasino.com", true },
+ { "goldcoastasian.com", true },
{ "goldcoasthypnotherapyhypnosis.com.au", true },
+ { "goldcoastphotographycourses.com", true },
{ "goldcoaststumpbusters.com", true },
{ "goldegg-training.com", false },
{ "goldenbadger.de", true },
@@ -14487,14 +14685,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "goldenhillsoftware.com", true },
{ "goldenhost.ca", true },
{ "goldenplate.com.sg", true },
+ { "goldfmromania.ro", true },
{ "goldmark.com.au", true },
{ "goldpreisfinder.at", true },
{ "goldsecurity.com", true },
- { "goldsky.com.au", true },
{ "goldstein.tel", true },
{ "golf18network.com", true },
{ "golf18staging.com", true },
- { "golfburn.com", true },
{ "golfhausmallorca.com", true },
{ "golfmeile.de", true },
{ "golfpark-bostalsee.de", true },
@@ -14504,6 +14701,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "golser.info", true },
{ "gomasy.jp", true },
{ "gomelchat.com", true },
+ { "gomiblog.com", true },
{ "gommista.roma.it", true },
{ "gondawa.com", true },
{ "gongjianwei.com", true },
@@ -14517,7 +14715,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gooddomainna.me", true },
{ "goodenough.nz", false },
{ "goodfeels.net", true },
- { "goodvibesblog.com", true },
{ "google", true },
{ "google-analytics.com", true },
{ "googleandroid.cz", true },
@@ -14526,14 +14723,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "googlesource.com", true },
{ "goombi.fr", true },
{ "goonersworld.co.uk", true },
+ { "goooo.info", true },
{ "gootlijsten.nl", true },
{ "goozp.com", true },
{ "gopher.tk", true },
{ "goproallaccess.com", true },
{ "goquiq.com", true },
- { "gorakukai.jp", true },
- { "gordonobrecht.com", true },
{ "gordonscouts.com.au", true },
+ { "gorf.chat", true },
+ { "gorf.club", true },
{ "gorgias.me", true },
{ "gorky.media", true },
{ "gorn.ch", true },
@@ -14543,11 +14741,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gosforthdentalsurgery.co.uk", true },
{ "goshawkdb.io", true },
{ "goshin-group.co.jp", true },
- { "goshow.tv", true },
{ "gospelfollower.com", true },
+ { "gospelofmark.ch", true },
{ "gospelvestcination.de", true },
{ "gostaffer.com", true },
{ "gostest.org", true },
+ { "gosu.pro", true },
{ "gosuland.org", true },
{ "got-tty.de", true },
{ "goteborgsklassikern.se", true },
@@ -14567,8 +14766,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gottcode.org", false },
{ "goudenharynck.be", true },
{ "gouforit.com", true },
- { "goujianwen.com", true },
- { "goukon.ru", true },
{ "gouldcooksey.com", true },
{ "goup.co", true },
{ "goup.com.tr", true },
@@ -14588,13 +14785,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gowin9.net", true },
{ "gowithflo.de", true },
{ "gozenhost.com", true },
- { "gpalabs.com", true },
{ "gpcsolutions.fr", true },
{ "gpdimaranathasiantar.org", true },
{ "gpfclan.de", true },
{ "gpgscoins.com", true },
{ "gplans.us", true },
- { "gplintegratedit.com", true },
{ "gpm.ltd", true },
{ "gprs.uk.com", true },
{ "gps.com.br", true },
@@ -14608,15 +14803,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gra2.com", true },
{ "graasp.net", false },
{ "grabacabpa.com", true },
- { "grabi.ga", true },
{ "grace-wan.com", true },
+ { "gracebaking.com", false },
{ "gracedays.org", true },
{ "gracethrufaith.com", true },
{ "gracetini.com", true },
{ "graciousmay.com", true },
- { "gradenotify.com", true },
+ { "gradecam.com", true },
{ "gradienthosting.co.uk", true },
{ "gradients.com", true },
+ { "gradingcontractornc.com", true },
{ "gradualgram.com", true },
{ "graeber.com", true },
{ "graecum.org", true },
@@ -14630,6 +14826,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "grafoteka.pl", true },
{ "graft.community", true },
{ "graft.observer", true },
+ { "grahamcarruthers.co.za", true },
{ "grahamcluley.com", true },
{ "grahamofthewheels.com", true },
{ "grailians.com", true },
@@ -14639,8 +14836,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gram.tips", true },
{ "gramati.com.br", true },
{ "grammysgrid.com", true },
+ { "grana.com", true },
{ "granary-demo.appspot.com", false },
{ "grancellconsulting.com", true },
+ { "grandcafecineac.nl", true },
{ "grandcafetwist.nl", true },
{ "grandcapital.cn", true },
{ "grandcapital.id", true },
@@ -14650,13 +14849,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "grandefratellonews.com", true },
{ "grandeto.com", true },
{ "grandjunctionbrewing.com", true },
- { "grandmasfridge.org", true },
{ "grandmusiccentral.com.au", true },
{ "grandpadusercontent.com", true },
- { "grandwailea.com", true },
{ "granfort.es", false },
{ "granian.pro", true },
{ "granishe.com", true },
+ { "graniteind.com", true },
{ "grannys-stats.com", true },
{ "grannyshouse.de", true },
{ "grantcooper.com", true },
@@ -14669,6 +14867,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "graphcommons.com", true },
{ "graphene.software", true },
{ "graphic-shot.com", true },
+ { "graphified.nl", false },
{ "graphire.io", true },
{ "grapholio.net", true },
{ "grasmark.com", true },
@@ -14698,7 +14897,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "grazieitalian.com", true },
{ "grc.com", false },
{ "greatagain.gov", true },
- { "greatergoodoffers.com", true },
{ "greatestwebsiteonearth.com", true },
{ "greatfire.org", true },
{ "greatislandarts.ca", true },
@@ -14715,21 +14913,25 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "green-light.co.nz", true },
{ "greenaddress.it", true },
{ "greenapproach.ca", true },
+ { "greenbaysecuritysolutions.com", true },
{ "greencircleplantnursery.com.au", true },
{ "greencircleplantnursery.net.au", true },
- { "greenenergysolution.uk", true },
+ { "greenconn.ca", true },
{ "greener.pl", true },
{ "greenglam.biz", true },
{ "greengoblindev.com", true },
{ "greenhats.de", true },
{ "greenliquidsystem.com", true },
+ { "greenliv.pl", true },
{ "greenlungs.net", true },
{ "greenoutdoor.dk", false },
{ "greenpanda.de", true },
{ "greenpartyofnewmilford.org", true },
{ "greenpeace-magazin.de", true },
+ { "greenpeace.berlin", true },
{ "greenroach.ru", true },
{ "greenrushdaily.com", true },
+ { "greensborosecuritycameras.com", true },
{ "greensdictofslang.com", true },
{ "greensquare.tk", true },
{ "greenteamtwente.nl", true },
@@ -14738,8 +14940,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "greer.ru", true },
{ "greg.red", true },
{ "greger.me", true },
- { "gregmilton.com", true },
- { "gregmilton.org", true },
+ { "gregmote.com", true },
{ "gregoirow.be", true },
{ "gregorians.org", true },
{ "gregorkofler.com", true },
@@ -14763,6 +14964,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "greybeards.ca", true },
{ "greyhash.se", true },
{ "greymattertechs.com", true },
+ { "greysky.me", true },
{ "greyskymedia.com", true },
{ "greysolutions.it", true },
{ "greywizard.com", true },
@@ -14780,6 +14982,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "griegshipbrokers.com", true },
{ "griegshipbrokers.no", true },
{ "griesser2.de", true },
+ { "grillen-darf-nicht-gesund-sein.de", true },
{ "grillteller42.de", true },
{ "grimcalc.com", true },
{ "grimm-gastrobedarf.de", true },
@@ -14790,6 +14993,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gritte.ch", true },
{ "grizzlys.com", true },
{ "grmp.fr", true },
+ { "grocerybuild.com", true },
{ "grocock.me.uk", true },
{ "groenaquasolutions.nl", true },
{ "groenewoud.me", true },
@@ -14807,23 +15011,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "groovygoldfish.org", true },
{ "gropp.org", true },
{ "gross.business", true },
- { "grossell.ru", true },
{ "groszek.pl", true },
{ "groth.im", true },
{ "groth.xyz", true },
{ "grothoff.org", true },
+ { "grottenthaler.eu", true },
{ "grouchysysadmin.com", true },
{ "group4layers.net", true },
{ "groupe-neurologique-nord.lu", true },
{ "groupebaillargeon.com", true },
{ "groupghistelinck-cars.be", true },
- { "grouphomes.com.au", false },
{ "groupme.com", true },
{ "groups.google.com", true },
{ "growingallthings.co.uk", true },
{ "growit.events", true },
{ "growy.ch", true },
- { "grozter.se", true },
+ { "grrmmll.com", true },
{ "grsecurity.net", true },
{ "gruble.de", true },
{ "gruebebraeu.ch", true },
@@ -14834,6 +15037,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gruenes-wp.de", true },
{ "gruenprint.de", true },
{ "gruenstreifen-ev.de", true },
+ { "grumples.biz", true },
{ "grumpy.fr", true },
{ "grumpygamers.com", true },
{ "grunwaldzki.center", true },
@@ -14849,11 +15053,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gs93.de", true },
{ "gsaj114.net", true },
{ "gscloud.xyz", true },
+ { "gsdb.net", true },
{ "gsi-network.com", true },
{ "gsimagebank.co.uk", true },
{ "gslink.me", true },
{ "gsmsecurity.net", true },
- { "gsoc.se", true },
{ "gsrc.io", true },
{ "gst.name", true },
{ "gst.priv.at", true },
@@ -14870,6 +15074,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gtmasterclub.it", false },
{ "gtmetrix.com", true },
{ "gtopala.com", true },
+ { "gtopala.net", true },
{ "gtour.info", false },
{ "gtravers-basketmaker.co.uk", true },
{ "gts-dp.de", true },
@@ -14881,12 +15086,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "guardiansoftheearth.org", true },
{ "gubagoo.com", true },
{ "gubagoo.io", true },
- { "gudangpangan.id", true },
{ "gudini.net", true },
- { "gudrun.ml", true },
{ "guegan.de", true },
{ "guelo.ch", true },
{ "guenthereder.at", true },
+ { "guerard.info", true },
{ "guerrilla.technology", true },
{ "guesthouse-namaste.com", true },
{ "guevener.de", true },
@@ -14896,7 +15100,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "guffr.it", true },
{ "guge.ch", true },
{ "gugert.net", true },
- { "guhei.net", true },
{ "guhenry3.tk", true },
{ "guiacidade.com.br", true },
{ "guichet-entreprises.fr", true },
@@ -14906,9 +15109,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "guide-peche-cantal.com", true },
{ "guidebook.co.tz", true },
{ "guidedselling.net", true },
+ { "guideline.gov", false },
+ { "guidelines.gov", false },
{ "guideo.ch", true },
{ "guidepointsecurity.com", true },
- { "guides-et-admin.com", true },
{ "guides-peche64.com", true },
{ "guidesetc.com", true },
{ "guidetoiceland.is", false },
@@ -14941,7 +15145,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gurmel.ru", true },
{ "gurpusmaximus.com", true },
{ "guru-naradi.cz", true },
- { "gurubetng.com", true },
{ "gurucomi.com", true },
{ "gurueffect.com", true },
{ "gurugardener.co.nz", true },
@@ -14955,15 +15158,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "guus-thijssen.nl", true },
{ "guusvandewal.nl", true },
{ "guvernalternativa.ro", true },
- { "guyot-tech.com", true },
+ { "guyeskens.be", true },
{ "gv-neumann.de", true },
{ "gvatas.in", true },
{ "gveh.de", true },
{ "gvi-timing.ch", true },
- { "gvi.be", true },
{ "gviedu.com", true },
{ "gvitiming.ch", true },
- { "gvm.io", true },
{ "gvobgyn.ca", true },
{ "gvt2.com", true },
{ "gvt3.com", true },
@@ -14977,6 +15178,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gwrtech.com", true },
{ "gwsec.co.uk", true },
{ "gxmyqy.net", true },
+ { "gyara.moe", true },
{ "gyas.nl", true },
{ "gycis.me", false },
{ "gymagine.ch", true },
@@ -14987,6 +15189,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "gymnasium-hittfeld.de", true },
{ "gympap.de", true },
{ "gynaecology.co", true },
+ { "gynoguide.com", true },
{ "gypsyreel.com", true },
{ "gyre.ch", true },
{ "gyrenens.ch", true },
@@ -15011,7 +15214,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "h2s-design.de", true },
{ "h2u.tv", true },
{ "h3artbl33d.nl", true },
- { "h3z.jp", false },
+ { "h3z.jp", true },
{ "h404bi.com", true },
{ "ha-kunamatata.de", true },
{ "ha3.eu", true },
@@ -15031,9 +15234,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "haccp.bergamo.it", true },
{ "haccp.milano.it", true },
{ "haccp.roma.it", true },
+ { "hacertest.com", true },
{ "hacettepeteknokent.com.tr", true },
- { "hachre.de", true },
- { "hack.club", true },
+ { "hachre.de", false },
+ { "hack.cz", true },
{ "hackademix.net", true },
{ "hackanders.com", true },
{ "hackattack.com", true },
@@ -15043,12 +15247,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hackdown.me", true },
{ "hackenkunjeleren.nl", true },
{ "hackenturet.dk", true },
- { "hacker.club", true },
+ { "hacker.holiday", true },
{ "hacker.im", true },
{ "hacker.one", true },
{ "hacker.parts", true },
{ "hacker1.com", true },
{ "hacker101.com", true },
+ { "hackerchai.com", true },
{ "hackerco.com", true },
{ "hackereyes.com", true },
{ "hackergateway.com", true },
@@ -15059,6 +15264,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hackerone.at", true },
{ "hackerone.com", true },
{ "hackerone.net", true },
+ { "hackerpoints.com", true },
{ "hackerschat.net", true },
{ "hackerstxt.org", true },
{ "hackettrecipes.com", true },
@@ -15073,7 +15279,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hackthissite.org", true },
{ "hacktic.info", true },
{ "hacktivis.me", true },
- { "hackyourfaceoff.com", true },
+ { "hackworx.com", false },
{ "hackzogtum-coburg.de", true },
{ "hadaly.fr", true },
{ "hadleighswimmingclub.co.uk", true },
@@ -15085,24 +15291,27 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "haferman.net", true },
{ "haferman.org", true },
{ "hafniatimes.com", true },
- { "haggeluring.su", true },
{ "hagueaustralia.com.au", true },
{ "haha-raku.com", true },
{ "hahay.es", true },
{ "haiboxu.com", true },
- { "hail2u.net", true },
+ { "haidihai.ro", true },
{ "hailer.com", true },
+ { "haim.bio", true },
+ { "haimablog.ooo", true },
{ "hairbeautyartists.it", true },
{ "haircrazy.com", true },
- { "hairplaybychenellekay.com", true },
+ { "hairplaybychenellekay.com", false },
{ "hairraisingphotobooths.co.uk", true },
{ "hairtonic-lab.com", true },
{ "haixihui.cn", true },
{ "haizum.pro", true },
+ { "hajekdavid.cz", true },
{ "hajekj.net", true },
{ "hak5.org", true },
{ "hakaru.org", true },
{ "hakase.io", true },
+ { "hakase.pw", true },
{ "hakatabijin-mind.com", true },
{ "hake.me", true },
{ "hal-9th.space", true },
@@ -15117,6 +15326,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "halkyon.net", true },
{ "hallelujahsoftware.com", true },
{ "halletienne.fr", true },
+ { "hallettxn.com", true },
{ "hallhuber.com", true },
{ "halliday.work", true },
{ "halligladen.de", true },
@@ -15127,6 +15337,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "halongbaybackpackertour.com", true },
{ "haloobaloo.com", true },
{ "haloria.com", true },
+ { "haltegame.com", true },
{ "hamacho-kyudo.com", true },
{ "hamali.bg", true },
{ "hamburgerbesteld.nl", true },
@@ -15134,7 +15345,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hamcram.io", true },
{ "hamiltonlinen.com", true },
{ "hamiltonmedical.nl", true },
- { "hamish.ca", true },
{ "hammer-corp.com", true },
{ "hammer-schnaps.com", true },
{ "hammer-sms.com", true },
@@ -15151,8 +15361,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "handlecoin.com", true },
{ "handleidingkwijt.com", true },
{ "handmade-workshop.de", true },
- { "handmadegobelin.com", true },
- { "handmadeshoes.pe", true },
{ "handyglas.com", true },
{ "handymanlondonplease.co.uk", true },
{ "handynummer.online", true },
@@ -15168,6 +15376,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hannah.link", true },
{ "hannoluteijn.nl", true },
{ "hanoibuffet.com", true },
+ { "hanpenblog.com", true },
{ "hansbijster.nl", true },
{ "hansch.ventures", true },
{ "hanschventures.com", true },
@@ -15186,7 +15395,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hanzubon.jp", true },
{ "hao-zhang.com", true },
{ "haogoodair.ca", true },
- { "haoqi.men", true },
{ "haotown.cn", true },
{ "haozhang.org", true },
{ "haozi.me", true },
@@ -15218,8 +15426,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "harald-pfeiffer.de", true },
{ "harapecorita.com", true },
{ "harbor-light.net", true },
- { "hardeman.nu", true },
{ "hardenize.com", true },
+ { "hardergayporn.com", true },
{ "hardertimes.com", true },
{ "hardesec.com", true },
{ "hardez.de", true },
@@ -15229,12 +15437,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hardloopfysio.nl", true },
{ "hardrain980.com", true },
{ "hardtfrieden.de", true },
- { "hardtime.ru", true },
+ { "hardwareschotte.de", true },
{ "harekaze.info", true },
{ "haribilalic.com", true },
{ "harilova.fr", true },
+ { "harion.fr", true },
{ "harisht.me", false },
- { "haritsa.co.id", true },
{ "harjitbhogal.com", true },
{ "harlor.de", true },
{ "harmfarm.nl", true },
@@ -15246,7 +15454,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "harp.gov", true },
{ "harrcostl.com", true },
{ "harringtonca.com", true },
- { "harrisonsdirect.co.uk", true },
{ "harrisonswebsites.com", true },
{ "harrisonvillenaz.org", true },
{ "harry-baker.com", true },
@@ -15266,11 +15473,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "harveyauzorst.com", true },
{ "harveymilton.com", true },
{ "has-no-email-set.de", false },
- { "haschrebellen.de", true },
+ { "has.work", true },
{ "hasdf.de", true },
{ "hasecuritysolutions.com", true },
{ "haselsteiner.me", true },
{ "hash-archive.org", true },
+ { "hash.army", true },
{ "hash.works", true },
{ "hashcat.net", true },
{ "hashes.org", true },
@@ -15296,12 +15504,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "haus-garten-test.de", true },
{ "haus-henne.de", true },
{ "haus-zeitlos.de", true },
- { "hausarztpraxis-linn.de", true },
{ "haushenne.de", true },
+ { "hausjugo.de", true },
{ "haustechnik-breu.de", true },
{ "hausundhof.com", true },
{ "hausverbrauch.de", true },
- { "hauswarteam.com", true },
{ "hautaka.com", true },
{ "hautarztzentrum.ch", true },
{ "hauteslatitudes.com", true },
@@ -15330,6 +15537,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hayashi-rin.net", true },
{ "hayden.one", false },
{ "haydenjames.io", true },
+ { "haydentomas.com", true },
{ "hayfordoleary.com", true },
{ "haynes-davis.com", true },
{ "hayvid.com", true },
@@ -15344,13 +15552,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hbpowell.com", true },
{ "hcaz.io", true },
{ "hcbj.io", true },
- { "hcoe.fi", true },
{ "hd-gaming.com", true },
{ "hd-offensive.at", false },
{ "hd-only.org", true },
{ "hd-outillage.com", true },
{ "hda.me", true },
{ "hdc.cz", true },
+ { "hdcamvids.com", true },
{ "hdcenter.cc", true },
{ "hdeaves.uk", true },
{ "hdf.world", true },
@@ -15361,7 +15569,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hdrsource.com", true },
{ "hdrtranscon.com", true },
{ "hds-lan.de", true },
- { "hdwallpapers.net", true },
{ "heaaart.com", true },
{ "head.org", true },
{ "head.ru", true },
@@ -15370,12 +15577,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "headshopinternational.com", true },
{ "headshotharp.de", true },
{ "healey.io", true },
+ { "health-booster.com", true },
{ "health-match.com.au", true },
{ "health-plan-news.com", true },
{ "health.gov", true },
{ "health.graphics", true },
{ "healthcare.gov", false },
- { "healthcare6.com", true },
{ "healtheals.com", true },
{ "healtheffectsofasbestos.com", true },
{ "healthery.com", true },
@@ -15383,6 +15590,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "healthfoam.com", true },
{ "healthgames.co.uk", true },
{ "healthiercompany.com", true },
+ { "healthiergenerations.co.uk", true },
{ "healthit.gov", true },
{ "healthlabs.com", true },
{ "healthmatchapp.com", true },
@@ -15394,6 +15602,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "healthybeterlife.click", true },
{ "healthyfitfood.com", true },
{ "healthypeople.gov", true },
+ { "healthyteame.com", true },
{ "heap.zone", true },
{ "hearmeraw.uk", true },
{ "heart.taxi", true },
@@ -15407,7 +15616,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "heartview.com.br", true },
{ "heartwoodart.com", true },
{ "hearty.blog", true },
- { "hearty.cf", true },
{ "hearty.ga", true },
{ "hearty.gq", true },
{ "hearty.me", true },
@@ -15416,7 +15624,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hearty.org.tw", true },
{ "hearty.taipei", true },
{ "hearty.us", true },
- { "heartyapp.com", true },
{ "heartycraft.com", true },
{ "heatershop.co.uk", true },
{ "heatingandairconditioningdallastx.com", true },
@@ -15435,14 +15642,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "heckelektro.de", true },
{ "heckerundknopp.de", true },
{ "heckticmedia.com", true },
- { "hectorj.net", true },
- { "hedgeschool.ie", true },
{ "hedonism.org", true },
{ "hedonistic-imperative.com", true },
{ "hedonistic.org", true },
{ "hedonium.com", true },
{ "hedweb.co.uk", true },
- { "hedweb.com", true },
{ "hedweb.net", true },
{ "hedweb.org", true },
{ "heeler.blue", true },
@@ -15470,6 +15674,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "heimonen.eu", true },
{ "heimprofis.de", true },
{ "heinemann.io", true },
+ { "heinemeier.dk", true },
{ "heinpost.nl", false },
{ "heinzelmann.co", true },
{ "heiraten-gardasee.de", true },
@@ -15478,7 +15683,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "heistheguy.com", true },
{ "heitland-it.de", true },
{ "heiwa-valve.co.jp", true },
- { "hejahanif.se", true },
{ "hejianpeng.cn", true },
{ "heka.ai", true },
{ "helber-it-services.de", true },
@@ -15507,10 +15711,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "helmut-a-binser.de", true },
{ "help.simpletax.ca", true },
{ "helpconnect.com.au", true },
- { "helpdebit.com", true },
- { "helpfacile.com", true },
- { "helpfixe.com", true },
- { "helpflux.com", true },
{ "helpgoabroad.com", true },
{ "helpmij.cf", true },
{ "helpscoutdocs.com", true },
@@ -15529,9 +15729,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hendyisaac.com", true },
{ "hengelsportdeal.com", true },
{ "hengstumone.com", true },
- { "henhenlu.com", true },
{ "henkboelman.com", true },
- { "henkbrink.com", true },
{ "henker.net", true },
{ "henkverlinde.com", false },
{ "henley-computer-repairs.co.uk", true },
@@ -15548,10 +15746,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "henrock.net", true },
{ "henry.gg", true },
{ "henryphan.com", false },
- { "hentaiz.net", true },
+ { "hentaiworld.cc", true },
{ "hentschke-bau.de", true },
{ "hentschke-betonfertigteilwerk.de", true },
{ "hentschke-invest.de", true },
+ { "henzenhoning.nl", true },
{ "heppler.net", true },
{ "heptafrogs.de", true },
{ "herbal-id.com", true },
@@ -15565,6 +15764,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "herds.eu", true },
{ "herdserv.de", true },
{ "herebedragons.io", true },
+ { "herecsrymy.cz", true },
{ "heritagebaptistchurch.com.ph", true },
{ "herkam.pl", true },
{ "hermanbrouwer.nl", true },
@@ -15595,7 +15795,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "herzbotschaft.de", true },
{ "herzfuersoziales.at", true },
{ "herzig.cc", true },
- { "hesa.com", true },
{ "hesaplama.net", true },
{ "hessen-liebe.de", true },
{ "hestervanderheijden.nl", true },
@@ -15621,7 +15820,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hexicurity.com", true },
{ "hexid.me", true },
{ "hexieshe.com", true },
- { "hexo.io", true },
{ "hexony.com", true },
{ "hexr.org", true },
{ "hexstream.net", true },
@@ -15633,16 +15831,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "heywood.cloud", true },
{ "hf-tekst.nl", true },
{ "hf51.nl", true },
- { "hflsdev.org", false },
{ "hfox.org", true },
{ "hg.gg", true },
{ "hg.python.org", true },
- { "hg525.com", true },
{ "hgbet.com", true },
- { "hgfa.fi", true },
+ { "hgvnet.de", true },
{ "hgw168.com", true },
{ "hh-medic.com", true },
- { "hh-wolke.dedyn.io", true },
{ "hhgdo.de", true },
{ "hhhdb.com", true },
{ "hhidr.org", true },
@@ -15673,16 +15868,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "highlatitudestravel.com", true },
{ "highlegshop.com", true },
{ "highlevelwoodlands.com", true },
- { "highlightsfootball.com", false },
+ { "highlightsfootball.com", true },
{ "highlnk.com", true },
{ "highperformancehvac.com", true },
{ "highspeed-arnsberg.de", true },
{ "highspeedinternet.my", true },
{ "highspeedinternetservices.ca", true },
{ "hightechbasementsystems.com", true },
- { "hightimes.com", true },
{ "highwaytohoell.de", true },
{ "higilopocht.li", true },
+ { "hikarukujo.com", true },
{ "hike.pics", true },
{ "hikingguy.com", true },
{ "hilahdih.cz", true },
@@ -15709,6 +15904,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hintergrundbewegung.de", true },
{ "hinterhofbu.de", true },
{ "hinterposemuckel.de", true },
+ { "hiojbk.com", true },
{ "hipi.jp", true },
{ "hippies.com.br", true },
{ "hippo.ge", true },
@@ -15718,16 +15914,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hipstercat.fr", true },
{ "hiqfleet.co.uk", true },
{ "hiqfranchise.co.uk", true },
+ { "hiqhub.co.uk", false },
{ "hiqonline.co.uk", true },
{ "hirake55.com", true },
{ "hiratake.xyz", true },
{ "hire-a-coder.de", true },
{ "hireabouncycastle.net", true },
{ "hirefitness.co.uk", true },
- { "hireprofs.com", true },
{ "hiresteve.ca", true },
{ "hiretech.com", true },
- { "hirevets.gov", true },
{ "hirezzportal.com", true },
{ "hiring-process.com", true },
{ "hiromuogawa.com", true },
@@ -15746,11 +15941,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hiteco.com", true },
{ "hititgunesi-tr.com", true },
{ "hitmanstat.us", true },
+ { "hitn.at", true },
{ "hitoapi.cc", true },
{ "hitocom.net.br", true },
{ "hitokoto-mania.com", true },
{ "hitokoto.cn", true },
{ "hitomecha.com", true },
+ { "hitrek.ml", true },
{ "hitter-lauzon.com", true },
{ "hitter.family", true },
{ "hitterfamily.com", true },
@@ -15767,18 +15964,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hizzacked.xxx", true },
{ "hj-mosaiques.be", true },
{ "hj.rs", true },
+ { "hj2999.com", true },
+ { "hj3455.com", true },
{ "hjartasmarta.se", true },
- { "hjf-immobilien.de", true },
{ "hjkbm.cn", true },
- { "hjkhs.cn", true },
{ "hjort.land", true },
{ "hjortland.org", true },
{ "hjphoto.co.uk", true },
{ "hjtky.cn", true },
{ "hjw-kunstwerk.de", true },
{ "hk.search.yahoo.com", false },
+ { "hkbsurgery.com", true },
{ "hkdobrev.com", true },
{ "hks.pw", true },
+ { "hktkl.com", true },
{ "hkustmbajp.com", true },
{ "hl7999.com", true },
{ "hl8999.com", true },
@@ -15789,8 +15988,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hlfh.space", true },
{ "hlidacnajemneho.cz", true },
{ "hlinformatics.nl", true },
+ { "hloe0xff.ru", true },
{ "hlsmandarincentre.com", true },
{ "hlucas.de", true },
+ { "hm773.net", true },
{ "hmcdj.cn", true },
{ "hmhotelec.com", false },
{ "hmoegirl.com", true },
@@ -15806,8 +16007,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hoarding.me", true },
{ "hobby-drechselei.de", true },
{ "hobbyspeed.com", true },
- { "hocassian.cn", true },
+ { "hochhaus.us", true },
{ "hochoukikikiraku.com", true },
+ { "hochyi.com", true },
{ "hochzeit-dana-laurens.de", true },
{ "hochzeitsfotograf-deinfoto.ch", true },
{ "hochzeitsgezwitscher.de", true },
@@ -15820,7 +16022,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hoe.re", true },
{ "hoeft-autolackierung.de", true },
{ "hoekvanholland.eu", true },
- { "hoelty.network", true },
{ "hoeren.club", true },
{ "hoesnelwasik.nl", true },
{ "hoevenstein.nl", true },
@@ -15830,13 +16031,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hofapp.de", true },
{ "hofauer.de", true },
{ "hoflerlawfirm.com", true },
+ { "hogepad.com", true },
{ "hogl.dk", true },
{ "hogrebe.de", true },
{ "hogwarts.io", true },
+ { "hohenleimbach.de", true },
{ "hohm.in", true },
{ "hoiquanadida.com", true },
{ "hoken-wakaru.jp", true },
- { "hokepon.com", true },
{ "hokieprivacy.org", true },
{ "hokify.at", true },
{ "hokify.ch", true },
@@ -15849,7 +16051,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "holistichealer.in", true },
{ "holisticon.de", true },
{ "hollandsdiep.nl", true },
- { "hollerau.de", true },
{ "hollermann.eu", true },
{ "hollo.me", true },
{ "hollowpoint.xyz", true },
@@ -15864,11 +16065,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "holoxplor.space", true },
{ "holstphoto.com", true },
{ "holvonix.com", true },
- { "holy-hi.com", true },
{ "holydragoon.jp", true },
{ "holygrail.games", true },
{ "holyhiphopdatabase.com", true },
{ "holymolycasinos.com", true },
+ { "holytransaction.com", true },
{ "holywhite.com", true },
{ "holz.nu", true },
{ "holzheizer-forum.de", true },
@@ -15879,18 +16080,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "holzundgarten.de", true },
{ "holzvergaser-forum.de", true },
{ "homatism.com", true },
- { "home-work-jobs.com", true },
+ { "home-v.ind.in", true },
{ "homeautomated.com", true },
{ "homebasedsalons.com.au", true },
{ "homebodyalberta.com", true },
{ "homecareassociatespa.com", true },
{ "homecarpetcleaning.co.uk", true },
{ "homecheck.gr", true },
- { "homecoming.city", true },
+ { "homefacialpro.com", false },
{ "homegardeningforum.com", true },
{ "homegardenresort.nl", true },
{ "homehuntertoronto.com", true },
{ "homehunting.pt", true },
+ { "homeimagician.com.au", true },
+ { "homem-viril.com", true },
{ "homeodynamics.com", true },
{ "homeoesp.org", true },
{ "homeofjones.net", true },
@@ -15901,6 +16104,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "homeprivate.de", true },
{ "homeseller.com", true },
{ "homeserver-kp.de", true },
+ { "homesteadandprepper.com", true },
{ "homesteadfarm.org", true },
{ "homewatt.co.uk", true },
{ "homeyou.com", true },
@@ -15914,11 +16118,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hondenoppasfraneker.nl", true },
{ "honey.is", true },
{ "honeybadger.io", false },
- { "honeybeard.co.uk", true },
{ "honeycome.net", true },
{ "honeycreeper.com", true },
{ "honeyhaw.com", true },
{ "honeypot.net", true },
+ { "hong.io", true },
{ "hongoi.com", true },
{ "honkion.net", true },
{ "honovere.de", true },
@@ -15930,19 +16134,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hoop.la", true },
{ "hoopertechnicalsolutions.com", true },
{ "hooplessinseattle.com", true },
- { "hooray.beer", true },
{ "hoorr.com", true },
{ "hootworld.net", false },
+ { "hoowhen.cn", true },
{ "hopconseils.ch", true },
{ "hopconseils.com", true },
{ "hope-line-earth.jp", true },
- { "hopesb.org", true },
+ { "hopesanddreams.org.uk", true },
{ "hopla.sg", true },
{ "hoplongtech.com", true },
{ "hoponmedia.de", true },
{ "hopps.me", true },
{ "hoppyx.com", true },
- { "hopzone.net", true },
{ "hor.website", true },
{ "horaceli.com", true },
{ "horackova.info", true },
@@ -15960,8 +16163,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "horodance.dk", true },
{ "horrell.ca", true },
{ "horrendous-servers.com", true },
+ { "horrormovies.gr", true },
{ "horsehunter.co.uk", true },
{ "horstmanshof.eu", true },
+ { "horton-brasses.com", true },
{ "hory.me", true },
{ "horza.org", true },
{ "hoshimaq.com.br", true },
@@ -15998,16 +16203,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hosyaku.gr.jp", true },
{ "hotcandlestick.com", true },
{ "hotchillibox.com", true },
+ { "hotcoin.io", true },
+ { "hotdoc.com.au", true },
{ "hotel-kronjuwel.de", true },
{ "hotel-le-vaisseau.ch", true },
{ "hotel-pension-sonnalp.eu", true },
+ { "hotel-rosner.at", true },
{ "hotelamgarnmarkt.at", false },
+ { "hotelarevalo.com", true },
{ "hotelcoliber.pl", true },
{ "hotelflow.com.br", true },
{ "hotelident.de", true },
{ "hotello.io", true },
{ "hotelmap.com", true },
{ "hotels-insolites.com", true },
+ { "hotels3d.com", true },
{ "hotels4teams.com", true },
{ "hotelsinbuxton.com", true },
{ "hotelsinformer.com", true },
@@ -16017,11 +16227,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hotesb.com", true },
{ "hotesb.net", true },
{ "hothbricks.com", true },
- { "hotjuice.com", true },
{ "hotnewhiphop.com", true },
{ "hoto.us", true },
{ "hoton.in", true },
- { "hotornot.com", true },
{ "hotplate.co.nz", true },
{ "hotplug.gr", true },
{ "hottaro.com", true },
@@ -16037,25 +16245,30 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "housekeeperlondon.co.uk", true },
{ "houseofherbs.gr", true },
{ "houseofhouston.com", true },
+ { "houseofyee.com", true },
{ "houser.lu", true },
{ "housese.at", true },
{ "housetalk.ru", true },
{ "houstonapartmentinsiders.com", true },
{ "houstonauthorizedrepair.com", true },
{ "houstoncreditlaw.com", true },
+ { "houstontxlocksmiths.com", true },
{ "houtinee.com", true },
{ "how2play.pl", true },
{ "howa-n.net", true },
{ "howardtyson.com", true },
{ "howbehealthy.com", true },
{ "howbigismybuilding.com", true },
+ { "howellaccounts.co.uk", true },
{ "howgoodwasmysex.com", true },
+ { "howieisawesome.com", true },
{ "howlongtobeatsteam.com", true },
{ "howmanymilesfrom.com", true },
{ "howsecureismypassword.net", true },
{ "howsmyssl.com", true },
{ "howsmytls.com", true },
{ "howsyourhealth.org", true },
+ { "howtocommunicate.com.au", true },
{ "howtogeek.com", true },
{ "howtogeekpro.com", true },
{ "howtogosolar.org", true },
@@ -16067,14 +16280,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hp42.de", true },
{ "hpac-portal.com", true },
{ "hpbn.co", true },
- { "hpeditor.tk", true },
- { "hpepub.com", false },
{ "hpisavageforum.com", true },
{ "hpkp-faq.de", true },
{ "hpnow.com.br", true },
{ "hps.hu", true },
- { "hqq.tv", true },
- { "hquest.pro.br", true },
{ "hqwebhosting.tk", false },
{ "hr-tech.shop", true },
{ "hr98.xyz", true },
@@ -16088,6 +16297,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hreflang.info", true },
{ "hrjfeedstock.com", true },
{ "hrjfeedstock.org", true },
+ { "hrk.io", true },
{ "hrobert.hu", true },
{ "hroling.nl", true },
{ "hroschyk.cz", true },
@@ -16099,13 +16309,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hs-arbeitsschutz.de", true },
{ "hs-group.net", true },
{ "hs-umformtechnik.de", true },
+ { "hsappstatic.net", true },
{ "hscorp.de", true },
+ { "hsex.tv", true },
{ "hsivonen.com", true },
{ "hsivonen.fi", true },
{ "hsivonen.iki.fi", true },
{ "hsmr.cc", true },
{ "hsn.com", true },
- { "hsr.gov", true },
+ { "hsr.gov", false },
{ "hsts.me", true },
{ "hstsfail.appspot.com", true },
{ "hstspreload.appspot.com", true },
@@ -16117,6 +16329,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "htaccessbook.com", true },
{ "htaps.com", true },
{ "hte.ovh", true },
+ { "hti.digital", true },
{ "html.moe", true },
{ "html5.org", true },
{ "html5media.info", true },
@@ -16130,7 +16343,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "http2.pro", true },
{ "https.dk", true },
{ "https.jetzt", true },
- { "https.ren", true },
{ "https4all.org", true },
{ "httpsecured.net", true },
{ "httpsecurityreport.com", true },
@@ -16154,17 +16366,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hua-li88.net", true },
{ "huagati.com", true },
{ "huahinpropertylisting.com", true },
- { "huang-haitao.com", true },
{ "huangjingjing.com", true },
{ "huangliangbo.com", true },
{ "huangting.me", true },
+ { "huangzenghao.cn", false },
{ "huashan.co.uk", true },
{ "huaxueba.com", true },
{ "hub.org.ua", true },
{ "hub385.com", true },
+ { "hubapi.com", true },
+ { "huber-informatik.de", true },
{ "hubok.net", true },
{ "hubrecht.at", true },
{ "hubrick.com", true },
+ { "hubspot.com", true },
{ "huchet.me", true },
{ "hudebnibazarmixer.cz", true },
{ "hudrydum.cz", true },
@@ -16173,13 +16388,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "huendeleskopfhuette.de", true },
{ "huersch.com", true },
{ "huffduffer.com", true },
+ { "huffsinsurance.com", true },
{ "hughtodd.ink", true },
{ "hugi.is", true },
{ "hugizrecords.com", true },
{ "huglen.info", true },
+ { "hugofs.com", true },
{ "hugolynx.fr", true },
{ "huguesblanchard.paris", true },
{ "huguesditciles.com", true },
+ { "huh.gdn", true },
{ "huh.today", true },
{ "hui-in.com", true },
{ "hui-in.net", true },
@@ -16232,9 +16450,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "humblebeeshop.com.au", true },
{ "humbledot.com", true },
{ "humboldtmfg.com", true },
+ { "humeur.de", true },
{ "hummy.tv", true },
{ "humorcaliente.com", true },
- { "humorce.com", true },
+ { "humorce.com", false },
{ "humpchies.com", true },
{ "humpen.se", true },
{ "humppakone.com", true },
@@ -16243,14 +16462,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hundesport-psvhalle.de", true },
{ "hundeverwaltung.de", true },
{ "hundter.com", true },
- { "hunqz.com", true },
{ "hunstoncanoeclub.co.uk", true },
{ "hunter.io", true },
{ "hunterkehoe.com", true },
{ "huntexpired.com", true },
{ "huntingdonbouncers.co.uk", true },
{ "huntingdonlifesciences.com", true },
+ { "huntsmansecurity.com", true },
{ "huoduan.com", true },
+ { "huonit.com.au", true },
{ "hup.hu", true },
{ "hupp.se", true },
{ "hurd.is", true },
@@ -16262,10 +16482,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "husakbau.at", true },
{ "hushfile.it", true },
{ "husic.net", false },
+ { "huskyeye.de", true },
{ "huskyinc.us", true },
{ "hussam.eu.org", true },
- { "hustle.com", true },
- { "hustle.life", true },
{ "hustlehope.com", true },
{ "hustunique.com", true },
{ "huto.ml", true },
@@ -16289,8 +16508,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hxp.io", true },
{ "hxsf.me", true },
{ "hxying.com", true },
- { "hybridiyhdistys.fi", true },
- { "hybridklubben.fi", true },
{ "hybridworx.com", true },
{ "hybridworx.de", true },
{ "hybridworx.eu", true },
@@ -16300,21 +16517,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hycken.com", true },
{ "hyckenberg.com", true },
{ "hyderabadonlinegifts.com", true },
- { "hydrabit.nl", true },
{ "hydrasolutions.de", true },
{ "hydrazin.pw", true },
{ "hydro17.com", true },
{ "hydroagro.pl", true },
+ { "hydrocloud.net", true },
{ "hydrographicsocietybenelux.eu", true },
{ "hydroturbine.info", true },
{ "hydrozone.fr", true },
{ "hyec.jp", true },
- { "hyeok.org", true },
{ "hygo.com", true },
{ "hyk.me", true },
{ "hylemorphica.org", true },
{ "hylians.com", true },
{ "hynek.me", true },
+ { "hyparia.fr", true },
{ "hype.ru", true },
{ "hypemgmt.com", true },
{ "hyper-text.org", true },
@@ -16322,10 +16539,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hyperautomotive.com.au", true },
{ "hyperbolic-mayonnaise-interceptor.ovh", true },
{ "hyperion.io", true },
- { "hyperporn.net", true },
{ "hyperreal.biz", true },
- { "hyperreal.info", true },
{ "hypersomnia.com", true },
+ { "hyperstack.org", true },
{ "hyperthymia.com", true },
{ "hyphen.co.za", true },
{ "hyphenpda.co.za", true },
@@ -16335,7 +16551,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "hypothes.is", true },
{ "hypothyroidmom.com", true },
{ "hyundai.no", true },
+ { "hyvanilmankampaamo.fi", true },
{ "hyvinvointineuvoja.fi", true },
+ { "i-aloks.ru", true },
{ "i-geld.de", true },
{ "i-hakul.net", true },
{ "i-logic.co.jp", false },
@@ -16351,7 +16569,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "i00.eu", true },
{ "i1314.gdn", true },
{ "i1place.com", true },
- { "i28s.com", true },
{ "i2b.ro", true },
{ "i5y.co.uk", true },
{ "i5y.org", true },
@@ -16363,18 +16580,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "iactu.info", true },
{ "iaeste.no", true },
{ "iaeste.or.jp", true },
+ { "iaf.gov", true },
{ "iahemobile.net", true },
{ "iainsimms.co.uk", true },
{ "iainsimms.com", true },
{ "iainsimms.me", true },
{ "ialis.me", true },
+ { "iam.lc", true },
{ "iam.soy", true },
{ "iambozboz.co.uk", true },
{ "iamcarrico.com", true },
{ "iamhansen.xyz", true },
{ "iamjoshellis.com", true },
{ "iamlbk.com", true },
- { "iamle.com", true },
{ "iamtheib.me", true },
{ "iamtonyarthur.com", true },
{ "iamusingtheinter.net", true },
@@ -16384,6 +16602,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "iane-ccs.com", true },
{ "ianix.com", true },
{ "ianjmoriarty.com", true },
+ { "ianklug.com", true },
{ "iankmusic.com", true },
{ "ianmooreis.me", true },
{ "ianmoriarty.com.au", true },
@@ -16400,13 +16619,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "iberiaversicherungen.com", true },
{ "ibericaderedes.es", true },
{ "ibexcore.com", true },
+ { "ibigawamizueco.com", true },
{ "ibin.co", true },
{ "ibiz.mk", true },
{ "ibnw.de", true },
+ { "ibodyiq.com", true },
{ "ibpegasus.tk", true },
- { "ibpsrecruitment.co.in", true },
{ "ibrainmedicine.org", true },
{ "ibrom.eu", true },
+ { "ibstyle.tk", true },
{ "ibwc.gov", true },
{ "ic-lighting.com.au", true },
{ "ic3.gov", true },
@@ -16414,7 +16635,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "icake.life", true },
{ "icanhasht.ml", true },
{ "icarlos.net", true },
+ { "icasture.top", true },
{ "icbemp.gov", true },
+ { "iccpublisher.com", true },
{ "iceberg.academy", true },
{ "icebook.co.uk", true },
{ "icecars.net", true },
@@ -16434,10 +16657,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "icmshoptrend.com", true },
{ "icnsoft.me", true },
{ "icnsoft.org", true },
- { "ico500.com", true },
{ "icodeconnect.com", true },
{ "icoh.it", true },
- { "icondoom.nl", true },
{ "iconomi.net", true },
{ "icowhitepapers.co", true },
{ "icq-project.net", true },
@@ -16471,6 +16692,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "idc-business.be", true },
{ "idc.yn.cn", true },
{ "idconsult.nl", true },
+ { "idealimplant.com", true },
{ "idealinflatablehire.co.uk", true },
{ "idealninajemce.cz", false },
{ "idealtruss.com", true },
@@ -16488,11 +16710,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "idered.net", true },
{ "idesignstudio.de", true },
{ "idexxpublicationportal.com", true },
+ { "idfy.io", true },
{ "idgard.de", false },
{ "idgateway.co.uk", true },
{ "idhosts.co.id", true },
- { "idid.tk", true },
- { "idiotentruppe.de", true },
+ { "idisposable.co.uk", true },
{ "idlethoughtsandramblings.com", true },
{ "idmanagement.gov", true },
{ "idmobile.co.uk", true },
@@ -16500,29 +16722,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "idoc24.com", true },
{ "idolf.dk", true },
{ "idolish7.fun", true },
+ { "idolknow.com", true },
{ "idolshop.dk", true },
{ "idolshop.me", true },
{ "idontplaydarts.com", true },
{ "idranktoomuch.coffee", true },
+ { "idratherbequilting.com", true },
{ "idraulico-roma.it", true },
{ "idraulico-roma.org", true },
{ "idraulico.roma.it", true },
{ "idrinktoomuch.coffee", true },
{ "idrissi.eu", true },
{ "idrycleaningi.com", true },
+ { "idtheft.gov", true },
{ "idubaj.cz", true },
{ "idunno.org", true },
{ "idvl.de", true },
{ "ie.search.yahoo.com", false },
{ "iea-annex61.org", true },
- { "iec.pe", true },
{ "ieedes.com", true },
+ { "ieeedeis.org", true },
{ "ieeesb.nl", true },
{ "ieeesbe.nl", true },
{ "ieeespmb.org", true },
{ "ieji.de", false },
{ "iemas.azurewebsites.net", true },
- { "iemb.tk", true },
{ "ienakanote.com", false },
{ "ies-italia.it", true },
{ "ietsdoenofferte.nl", true },
@@ -16531,7 +16755,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ifamily.top", false },
{ "ifangpei.cn", true },
{ "ifangpei.com.cn", true },
- { "ifconfig.co", true },
{ "ifelse.io", true },
{ "ifengge.cn", true },
{ "ifengge.me", true },
@@ -16544,12 +16767,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ifort.fr", true },
{ "ifosep.fr", true },
{ "ifoss.me", true },
+ { "ifreetion.cn", true },
{ "ifsac.org", true },
{ "ifsclist.com", true },
{ "ifsr.de", true },
{ "iftarsaati.org", true },
{ "iftrue.de", true },
{ "ifttl.com", false },
+ { "ifxd.bid", true },
{ "ifyou.live", true },
{ "ig.com", true },
{ "igaryhe.io", true },
@@ -16564,8 +16789,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "igk.nz", true },
{ "igm-be.ch", true },
{ "igmus.org", true },
- { "ignace72.eu", true },
{ "ignacjanskiednimlodziezy.pl", true },
+ { "ignat-mag.com", true },
{ "ignat.by", true },
{ "ignatovich.me", true },
{ "ignet.gov", true },
@@ -16580,14 +16805,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "iha6.com", true },
{ "ihacklabs.com", true },
{ "ihatethissh.it", true },
- { "ihc.im", false },
+ { "ihc.im", true },
{ "ihkk.net", true },
+ { "ihls.stream", true },
+ { "ihls.world", true },
+ { "ihls.xyz", true },
+ { "ihoey.com", true },
{ "ihollaback.org", true },
{ "ihopeit.works", true },
{ "ihostup.net", true },
{ "ihrhost.com", true },
+ { "ihtdenisjaccard.com", true },
{ "ii74.com", true },
{ "iiit.pl", true },
+ { "iilin.com", false },
+ { "iiong.com", false },
{ "iirii.com", true },
{ "iix.se", true },
{ "ijm.io", true },
@@ -16597,8 +16829,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ijunohana.jp", true },
{ "ikachalife.com", true },
{ "ikarate.ru", true },
- { "ike.io", true },
+ { "ikarr.com", true },
{ "ikeacareers.co.uk", true },
+ { "ikedaquotes.org", true },
{ "ikespta.com", true },
{ "ikeyless.com", true },
{ "ikigaiweb.com", true },
@@ -16610,6 +16843,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ikkev.de", true },
{ "ikkoku.de", true },
{ "iklive.org", false },
+ { "ikraenglish.com", true },
{ "ikulist.me", true },
{ "ikvts.de", true },
{ "ikwilthepiratebay.org", true },
@@ -16628,6 +16862,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ilektronika-farmakeia-online.gr", true },
{ "ilemonrain.com", false },
{ "ilhan.name", true },
+ { "ilhansubasi.com", true },
{ "iliastsi.net", true },
{ "iligang.cn", true },
{ "iligang.com", true },
@@ -16654,7 +16889,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ilmuk.org", false },
{ "ilove.fish", true },
{ "ilrg.com", true },
- { "iltec-prom.ru", true },
{ "iltec.ru", true },
{ "iltisim.ch", true },
{ "ilweb.es", true },
@@ -16667,8 +16901,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "imadalin.ro", true },
{ "image-drive.de", true },
{ "imagebin.ca", true },
- { "imagecurl.com", true },
- { "imagecurl.org", true },
{ "imagefu.com", true },
{ "imageination.co", true },
{ "imagenesdedibujosalapizfacilesdehacer.com", true },
@@ -16683,6 +16915,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "imanageproducts.co.uk", true },
{ "imanageproducts.uk", true },
{ "imanesdeviaje.com", true },
+ { "imaple.org", true },
{ "imarkethost.co.uk", true },
{ "imask.ml", true },
{ "imawhale.com", true },
@@ -16702,9 +16935,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "imgaa.com", true },
{ "imgbb.com", true },
{ "imgg.es", true },
- { "imguoguo.com", true },
+ { "imgup.co", true },
{ "imguploaden.nl", true },
+ { "imhua.com", true },
{ "imi-rhapsody.eu", true },
+ { "iminshell.com", true },
{ "imirhil.fr", true },
{ "imitza.com", true },
{ "imjad.cn", true },
@@ -16712,6 +16947,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "imjustcreative.com", true },
{ "imkerei-freilinger.de", false },
{ "imkerverein-moenchswald.de", true },
+ { "imlinan.com", true },
{ "imlonghao.com", true },
{ "immaterium.de", true },
{ "immaternity.com", true },
@@ -16732,7 +16968,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "immortal.run", true },
{ "imobile3.com", true },
{ "imokuri123.com", true },
- { "imoner.com", true },
{ "imouto.my", false },
{ "imouyang.com", true },
{ "impact.health.nz", true },
@@ -16758,12 +16993,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "imppac.de", true },
{ "imprendo.co", true },
{ "imprendo.pro", true },
- { "imprenta-es.com", false },
{ "impresa-di-pulizie.org", true },
{ "impresa-pulizie.it", true },
{ "impresadipulizie.roma.it", true },
{ "impresaedile.roma.it", true },
{ "imprimante-3d-store.fr", true },
+ { "improfestival.ee", true },
{ "improklinikken.dk", true },
{ "improved-madness.de", true },
{ "impulsionsa.com", true },
@@ -16774,7 +17009,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "imrunner.ru", true },
{ "ims-sargans.ch", true },
{ "imscompany.com", true },
- { "imwnk.cn", false },
+ { "imwalking.de", true },
+ { "imwnk.cn", true },
{ "imydl.com", true },
{ "imydl.tech", true },
{ "imyunya.com", true },
@@ -16809,6 +17045,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "incowrimo.org", true },
{ "incparadise.net", true },
{ "incubos.org", true },
+ { "incy.io", true },
{ "ind.ie", true },
{ "indarceky.sk", false },
{ "indecipherable.info", true },
@@ -16821,15 +17058,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "indian-elephant.com", true },
{ "indianaantlersupply.com", true },
{ "indianaberry.com", true },
+ { "indianapolislocksmithinc.com", true },
+ { "indiatrademarkwatch.com", true },
{ "indiawise.co.uk", true },
{ "indiayogastudio.net", true },
{ "indicateurs-flash.fr", true },
{ "indiegame.space", true },
{ "indievelopment.nl", true },
+ { "indigitalagency.com", true },
{ "indigoinflatables.com", true },
{ "indigosakura.com", true },
{ "indiraactive.com", true },
- { "indiroyunu.com", true },
{ "inditip.com", true },
{ "indochina.io", true },
{ "indogerman.de", true },
@@ -16837,14 +17076,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "indogermantrade.de", true },
{ "indoorcomfortteam.com", true },
{ "indoorplantsexpert.com", true },
- { "indostar303.com", true },
{ "indovinabank.com.vn", true },
{ "indusap.com", true },
{ "indusfastremit-us.com", true },
{ "indusfastremit.com", true },
{ "indust.me", true },
{ "industrialstarter.com", true },
- { "industriasrenova.com", true },
{ "indybay.org", true },
{ "ineardisplay.com", true },
{ "inebula.it", true },
@@ -16853,10 +17090,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "inesfinc.es", true },
{ "inesta.nl", true },
{ "inet.se", true },
+ { "inetpub.cn", true },
{ "inetserver.eu", true },
{ "inetsoftware.de", true },
{ "inevitavelbrasil.com.br", true },
{ "inf-fusion.ca", true },
+ { "inference.biz.tr", true },
{ "infermiere.roma.it", true },
{ "inficom.org", true },
{ "infinite.hosting", true },
@@ -16865,25 +17104,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "infinitiofaugustaparts.com", true },
{ "infinitioflynnwoodparts.com", true },
{ "infinity.to", true },
- { "infinitybas.com", true },
+ { "infinitybc.se", true },
{ "infinityengine.org", true },
- { "infinityepos.co.uk", true },
{ "infirmiere-canadienne.com", true },
{ "infirmieredevie.ch", true },
{ "inflatablehire-scotland.co.uk", true },
{ "inflatablesny.com", true },
{ "inflatadays.co.uk", true },
{ "inflatamania.com", true },
+ { "inflationstation.net", true },
{ "inflexsys.com", true },
{ "influencerchampions.com", true },
+ { "influo.com", true },
{ "infmed.com", true },
{ "info-beamer.com", true },
{ "info-d-74.com", true },
{ "info-screen.me", true },
{ "info-screw.com", true },
- { "infoamin.com", true },
{ "infobae.com", true },
{ "infocity-tech.fr", true },
+ { "infocoin.es", true },
{ "infocommsociety.com", true },
{ "infocon.org", true },
{ "infocusvr.net", true },
@@ -16897,6 +17137,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "informatiebeveiliging.nl", true },
{ "informatik-handwerk.de", true },
{ "informationrx.org", true },
+ { "informhealth.com", true },
{ "informnapalm.org", true },
{ "infosec-handbook.eu", true },
{ "infosec.exchange", true },
@@ -16909,8 +17150,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "infotune.nl", true },
{ "infovision-france.com", true },
{ "infoweb.ee", true },
+ { "infr.red", true },
{ "infra.land", true },
{ "infra.press", true },
+ { "infradio.am", true },
{ "infrafire.com", true },
{ "infraflip.com", true },
{ "infraflux.com", true },
@@ -16920,13 +17163,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "infranium.net", true },
{ "infranium.org", true },
{ "infranotes.com", true },
+ { "infrapass.com", true },
{ "infrapirtis.lt", true },
- { "infrarank.com", true },
{ "infrarank.net", true },
+ { "infrathink.com", true },
{ "ing-buero-junk.de", true },
{ "ing89.cc", true },
{ "ing89.com", true },
- { "ingalls.run", true },
{ "ingatlanjogaszok.hu", true },
{ "ingatlanneked.hu", true },
{ "ingber.com", true },
@@ -16953,7 +17196,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "inixal.com", true },
{ "ink.horse", true },
{ "inkable.com.au", true },
- { "inkbunny.net", false },
+ { "inkeliz.com", true },
{ "inkhor.se", true },
{ "inkontriamoci.com", true },
{ "inksay.com", true },
@@ -16970,9 +17213,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "inmoodforsex.com", true },
{ "inmusrv.de", true },
{ "innerfence.com", true },
- { "innerform.com", true },
+ { "innerlightcrystals.co.uk", true },
{ "innermostparts.org", true },
{ "innersafe.com", true },
+ { "innocenceseekers.net", true },
{ "innohb.com", true },
{ "innolabfribourg.ch", true },
{ "innoloop.com", true },
@@ -16984,12 +17228,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "innovate-indonesia.com", true },
{ "innovation-workshop.ro", true },
{ "innovation.gov", false },
- { "innoventure.de", true },
- { "innovum.cz", true },
{ "innsalzachsingles.de", true },
{ "innwan.com", true },
{ "inoa8.com", true },
- { "inorder.website", true },
+ { "inobun.jp", true },
{ "inovat.ma", true },
{ "inovatec.com", true },
{ "inovatecsystems.com", true },
@@ -17007,12 +17249,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "insho.fashion", true },
{ "inside19.com", true },
{ "insideaudit.com", true },
- { "insidethefirewall.tk", true },
{ "insightera.co.th", true },
{ "insighti.com", true },
{ "insighti.eu", true },
{ "insighti.org", true },
{ "insighti.sk", true },
+ { "insignificant.space", true },
{ "insinuator.net", true },
{ "insistel.com", true },
{ "insolent.ch", true },
@@ -17029,12 +17271,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "installatietechniekgresnigt.nl", true },
{ "installgentoo.net", true },
{ "instamojo.com", true },
- { "instant-hack.io", true },
{ "instant-thinking.de", true },
{ "instant.io", true },
{ "instantkhabar.com", true },
- { "instantsubs.de", true },
- { "instaquiz.ru", true },
{ "instava.cz", true },
{ "instawi.com", true },
{ "instela.com", true },
@@ -17043,13 +17282,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "instinctive.io", true },
{ "instinctiveads.com", true },
{ "institut-confucius-montpellier.org", true },
- { "institutmaupertuis.hopto.org", true },
{ "institutolancaster.com", false },
{ "instrumart.ru", false },
{ "insult.es", true },
{ "insurance321.com", true },
{ "insureon.com", true },
- { "insurethebox.tk", true },
{ "insurgentsmustdie.com", true },
{ "int-ma.in", true },
{ "intae.it", true },
@@ -17061,6 +17298,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "integraelchen.de", true },
{ "integralblue.com", true },
{ "integralkk.com", true },
+ { "integratedintegrations.xyz", true },
{ "integratedmedicalonline.com", true },
{ "integraxor.com.tw", true },
{ "integrity.gov", true },
@@ -17095,26 +17333,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "interfesse.net", true },
{ "interfloraservices.co.uk", true },
{ "interflores.com.br", true },
- { "interfug.de", true },
{ "intergozd.si", true },
{ "interiery-waters.cz", true },
{ "interimages.fr", true },
- { "interiorcheapo.com", true },
{ "interiordesignsconcept.com", true },
{ "interiortradingco.com.au", true },
{ "interisaudit.com", true },
{ "interlingvo.biz", true },
{ "intermax.nl", true },
{ "intermedinet.nl", true },
- { "internacao.com", true },
{ "internalkmc.com", true },
{ "internaluse.net", true },
{ "international-arbitration-attorney.com", true },
{ "international-nash-day.com", true },
{ "internationalfashionjobs.com", true },
{ "internationaltalento.it", true },
- { "internaut.co.za", true },
{ "internect.co.za", true },
+ { "internet-aukcion.info", true },
{ "internet-software.eu", true },
{ "internetaanbieders.eu", true },
{ "internetbank.swedbank.se", true },
@@ -17131,11 +17366,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "internetofinsecurethings.com", true },
{ "internetovehazardnihry.cz", true },
{ "internetpro.me", true },
+ { "internetstaff.com", true },
{ "internetzentrale.net", true },
{ "interracial.dating", true },
{ "interseller.io", true },
{ "interserved.com", false },
- { "interstellarhyperdrive.com", true },
{ "intertime.services", true },
{ "interview-suite.com", true },
{ "interways.de", true },
@@ -17147,6 +17382,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "intl-webs.com", true },
{ "intmissioncenter.org", true },
{ "into.technology", true },
+ { "intocities.de", false },
{ "inton.biz", true },
{ "intoparking.com", false },
{ "intpforum.com", true },
@@ -17157,7 +17393,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "intraobes.com", true },
{ "intrasoft.com.au", true },
{ "intraxia.com", true },
+ { "intune.life", true },
{ "intvonline.com", true },
+ { "intxt.net", true },
{ "inup.jp", true },
{ "inusasha.de", true },
{ "inuyasha-petition.tk", true },
@@ -17178,16 +17416,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "investigatore.it", true },
{ "investigazionimoretti.it", true },
{ "investir.ch", true },
+ { "investor-academy.jp", true },
{ "investor.gov", true },
{ "investoren-beteiligung.de", true },
{ "investorforms.com", true },
{ "investorloanshub.com", true },
{ "investosure.com", true },
{ "investpay.ru", true },
- { "invidio.us", true },
{ "invioinc.com", true },
{ "inviosolutions.com", true },
- { "invis.net", true },
{ "invisible-college.com", true },
{ "invisibles.ch", true },
{ "invisionita.com", true },
@@ -17203,6 +17440,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "inwestcorp.se", true },
{ "inzdr.com", true },
{ "inzelabs.com", true },
+ { "inzestfreunde.de", true },
+ { "ioactive.com", true },
{ "iobint.com", true },
{ "iocheck.com", false },
{ "iochen.com", true },
@@ -17216,6 +17455,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "iompost.com", true },
{ "iomstamps.com", true },
{ "ionlabs.kr", true },
+ { "ionote.me", true },
{ "ionovia.de", true },
{ "ionx.co.uk", true },
{ "ioover.net", true },
@@ -17223,8 +17463,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "iosjailbreakiphone.com", true },
{ "ioslo.net", true },
{ "iosnoops.com", true },
+ { "iossifovlab.com", true },
{ "iostream.by", true },
- { "iotfen.com", true },
{ "iowaschoolofbeauty.com", true },
{ "ip-blacklist.net", true },
{ "ip-hahn.de", true },
@@ -17232,7 +17472,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ip.sb", true },
{ "ip2country.info", true },
{ "ip3office.com", true },
- { "ip6.li", true },
+ { "ip6.li", false },
{ "ipad.li", true },
{ "ipadkaitori.jp", true },
{ "ipadportfolioapp.com", true },
@@ -17253,7 +17493,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "iphonote.com", true },
{ "ipintel.io", true },
{ "iplabs.de", true },
- { "iplantom.com", true },
{ "iplayradio.net", false },
{ "ipleak.net", true },
{ "ipledgeonline.org", false },
@@ -17264,9 +17503,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ipresent.com", true },
{ "iprim.ru", true },
{ "iproducemusic.com", true },
- { "iprody.com", true },
{ "ipsec.pl", true },
{ "ipssl.li", true },
+ { "ipstoragesolutions.com", true },
{ "ipstream.it", true },
{ "ipswitch.com.tw", true },
{ "iptvzoom.xyz", true },
@@ -17278,6 +17517,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ipv6-handbuch.de", true },
{ "ipv6.gr", true },
{ "ipv6.jetzt", true },
+ { "ipv6demo.de", true },
{ "ipv6vpn.net", true },
{ "ipv6wallofshame.com", true },
{ "ipv8.net", true },
@@ -17286,13 +17526,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ir1s.com", true },
{ "iramellor.com", true },
{ "iran-geo.com", true },
+ { "irandp.net", true },
{ "iranian.lgbt", true },
{ "iranianholiday.com", true },
{ "iranjeunesse.com", true },
{ "irasandi.com", true },
{ "irayo.net", true },
{ "irc-results.com", true },
+ { "ircmett.de", true },
{ "iready.ro", true },
+ { "ireef.tv", true },
{ "iren.ch", true },
{ "irenekauer.com", true },
{ "irf2.pl", true },
@@ -17315,8 +17558,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ironcarnival.com", true },
{ "irondaleirregulars.com", true },
{ "ironfistdesign.com", true },
- { "ironhide.de", true },
{ "ironpeak.be", true },
+ { "irrewilse.se", true },
{ "irritant.net", true },
{ "iruarts.ch", true },
{ "iruca.co", true },
@@ -17347,13 +17590,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "isecrets.se", true },
{ "iservicio.mx", true },
{ "isfff.com", true },
+ { "isfriday.com", true },
{ "isgp-studies.com", true },
{ "ishamf.com", true },
{ "ishangirdhar.com", true },
{ "ishet.al", true },
{ "ishiharaken.com", true },
{ "ishtarfreya.com", true },
- { "isidom.fr", true },
{ "isil.fi", true },
{ "isimonbrown.co.uk", true },
{ "isincheck.com", true },
@@ -17362,6 +17605,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "isitchristmas.com", true },
{ "isitcoffeetime.com", true },
{ "isitdoneyet.gov", true },
+ { "isitpatchtuesday.com", true },
{ "isitup.org", true },
{ "iskaron.de", true },
{ "iskaz.rs", true },
@@ -17374,12 +17618,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "islazia.fr", true },
{ "isletech.net", true },
{ "isliada.org", true },
- { "islief.com", true },
+ { "islykaithecutest.cf", true },
+ { "islykaithecutest.ml", true },
+ { "ismailkarsli.com", true },
{ "ismat.com", true },
{ "ismena.bg", true },
{ "ismetroonfiretoday.com", true },
{ "ismywebsitepenalized.com", true },
{ "isn.cz", true },
+ { "isognattori.com", true },
{ "isolta.com", true },
{ "isolta.de", true },
{ "isolta.ee", true },
@@ -17407,12 +17654,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "issasfrissa.se", true },
{ "issforum.org", true },
{ "issio.net", true },
+ { "issue.watch", true },
{ "issues.email", true },
{ "issuesofconcern.in", true },
{ "ist-intim.de", true },
{ "istdieweltschonuntergegangen.de", true },
{ "isteinbaby.de", true },
- { "istheapplestoredown.com", true },
{ "istheapplestoredown.de", true },
{ "isthedoorlocked.com", true },
{ "istheinternetdown.com", true },
@@ -17439,10 +17686,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "it-faul.de", true },
{ "it-fernau.com", true },
{ "it-jobbank.dk", true },
- { "it-kron.de", true },
{ "it-maker.eu", true },
{ "it-rotter.de", true },
{ "it-schamans.de", true },
+ { "it-seems-to.work", true },
{ "it-service24.at", true },
{ "it-service24.ch", true },
{ "it-service24.com", true },
@@ -17460,6 +17707,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "italia-store.com", true },
{ "italiachegioca.com", true },
{ "italian.dating", true },
+ { "italianjourneys.com.au", true },
{ "italianshoemanufacturers.com", true },
{ "italieflydrive.nl", true },
{ "italserrande.it", true },
@@ -17469,7 +17717,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "itblog.pp.ua", true },
{ "itbrief.co.nz", true },
{ "itbrief.com.au", true },
- { "itchy.nl", true },
{ "itchybrainscentral.com", true },
{ "itcko.sk", true },
{ "itdashboard.gov", true },
@@ -17488,7 +17735,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "itesign.de", true },
{ "itfh.eu", true },
{ "itfix.cz", true },
- { "itforcc.com", true },
{ "itforge.nl", true },
{ "itgirls.rs", true },
{ "ithakama.com", true },
@@ -17511,11 +17757,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "itogoyomi.com", true },
{ "itooky.com", true },
{ "itpro.ua", true },
- { "itproject.guru", false },
{ "itrack.in.th", true },
{ "itraveille.fr", true },
{ "itring.pl", false },
{ "itruss.com.tw", true },
+ { "itruth.tk", true },
{ "its-future.com", true },
{ "its-gutachten.de", true },
{ "its4living.com", true },
@@ -17523,14 +17769,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "itsanicedoor.co.uk", true },
{ "itsasaja.com", true },
{ "itsaw.de", true },
- { "itsblue.de", true },
{ "itsdcdn.com", true },
{ "itsecblog.de", true },
{ "itsecguy.com", true },
{ "itsense.fr", true },
{ "itsevident.com", true },
{ "itsgoingdown.org", true },
- { "itshka.rv.ua", true },
{ "itskayla.com", true },
{ "itsmyparty.ie", true },
{ "itsnotquitethehilton.com", true },
@@ -17544,7 +17788,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "itswincer.com", true },
{ "ittop-gabon.com", true },
{ "itzap.com.au", true },
+ { "iusedtosmoke.com", true },
+ { "iuyos.com", true },
{ "ivanbenito.com", true },
+ { "ivanboi.com", true },
{ "ivancacic.com", false },
{ "ivanmeade.com", true },
{ "ivaoru.org", true },
@@ -17557,6 +17804,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ivi.mx", true },
{ "ivi.net.br", true },
{ "ivi.pt", true },
+ { "ivig.com.br", true },
{ "ivinet.cl", true },
{ "ivitalia.it", true },
{ "ivo.co.za", true },
@@ -17589,6 +17837,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ixquick.info", true },
{ "ixquick.nl", true },
{ "iyassu.com", true },
+ { "iyouewo.com", true },
{ "iyuanbao.net", true },
{ "iz8mbw.net", true },
{ "izaakbeekman.com", true },
@@ -17614,6 +17863,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "j8y.de", true },
{ "ja-dyck.de", true },
{ "ja-gps.com.au", true },
+ { "ja-publications.agency", true },
{ "ja.md", true },
{ "jaakkohannikainen.fi", true },
{ "jaalits.com", true },
@@ -17621,6 +17871,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jaba.hosting", true },
{ "jababu.cz", true },
{ "jabbari.io", true },
+ { "jabbas.eu", true },
{ "jabber.at", true },
{ "jabberfr.org", true },
{ "jabbers.one", true },
@@ -17631,6 +17882,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jabjab.de", true },
{ "jaccblog.com", true },
{ "jacekowski.org", true },
+ { "jacik.cz", true },
{ "jackdawphoto.co.uk", true },
{ "jackdelik.de", true },
{ "jackf.me", true },
@@ -17640,6 +17892,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jackson-quon.com", true },
{ "jackson.jp", true },
{ "jacksonvillestation.com", true },
+ { "jacksutton.info", true },
{ "jackyliao123.tk", true },
{ "jaco.by", true },
{ "jacobamunch.com", true },
@@ -17647,10 +17900,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jacobhaug.com", false },
{ "jacobi-server.de", true },
{ "jacobian.org", true },
+ { "jacobjangles.com", true },
{ "jacobphono.com", true },
{ "jacuzziprozone.com", true },
+ { "jadara.info", true },
{ "jadchaar.me", true },
- { "jadopado.com", true },
{ "jaegerlacke.de", true },
{ "jagbouncycastles.co.uk", true },
{ "jagerman.com", true },
@@ -17665,7 +17919,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jaion.tech", true },
{ "jaispirit.com", false },
{ "jaitnetworking.com", false },
- { "jak-na-les.cz", true },
{ "jakarta.dating", true },
{ "jakdelatseo.cz", true },
{ "jake.eu.org", true },
@@ -17673,11 +17926,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jake.nom.za", true },
{ "jakebeardsley.com", true },
{ "jakecurtis.de", true },
- { "jakenbake.com", true },
{ "jakereynolds.co", true },
{ "jakerullman.com", true },
{ "jakeslab.tech", true },
{ "jaketremper.com", true },
+ { "jakewestrip.com", true },
{ "jakob-server.tk", true },
{ "jakobejitblokaci.cz", true },
{ "jakobkrigovsky.com", true },
@@ -17687,7 +17940,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jakub-boucek.cz", true },
{ "jakubarbet.eu", true },
{ "jakubboucek.cz", true },
- { "jakubtopic.cz", true },
+ { "jakubklimek.com", true },
{ "jakubvrba.cz", true },
{ "jala.co.jp", true },
{ "jaleo.cn", true },
@@ -17695,7 +17948,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jamaat.hk", true },
{ "jamacha.org", true },
{ "jamalfi.bio", true },
- { "jamaware.org", true },
{ "jamberry.com.mx", true },
{ "jamberrynails.co.uk", true },
{ "james-bell.co.uk", true },
@@ -17704,7 +17956,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jamesachambers.com", true },
{ "jamesaimonetti.com", true },
{ "jamesbillingham.com", true },
- { "jamesbradach.com", false },
{ "jameschorlton.co.uk", true },
{ "jamesdorf.com", true },
{ "jamesgreenfield.com", true },
@@ -17712,13 +17963,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jameshost.net", true },
{ "jameshunt.us", false },
{ "jamesj.me", false },
- { "jamesl.ml", true },
{ "jamesmarsh.net", true },
{ "jamesmilazzo.com", true },
{ "jamesmorrison.me", true },
- { "jamesrains.com", true },
+ { "jamesmurphy.com.au", true },
{ "jamesrobertson.io", true },
{ "jamesrobertson.net", true },
+ { "jamesross.name", true },
{ "jamesrussellward.co.uk", true },
{ "jamessmith.me.uk", true },
{ "jamhost.org", true },
@@ -17742,6 +17993,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jan-rieger.de", true },
{ "jan-roenspies.de", true },
{ "jan-von.de", true },
+ { "janada.cz", true },
{ "janaundgeorgsagenja.eu", true },
{ "janbrodda.de", true },
{ "jandev.de", true },
@@ -17761,12 +18013,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "janokacer.sk", true },
{ "janschaumann.de", true },
{ "janssenwigman.nl", true },
- { "janvari.com", true },
- { "janvaribalint.com", true },
+ { "janterpstra.eu", true },
+ { "jantinaboelens.nl", true },
{ "jaot.info", true },
{ "japaniac.de", false },
- { "japanphilosophy.com", true },
- { "japansm.com", true },
{ "japanwatches.xyz", true },
{ "jape.today", true },
{ "jardin-exotique-rennes.fr", true },
@@ -17775,16 +18025,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jaredeberle.org", false },
{ "jaredfernandez.com", true },
{ "jaredfraser.com", true },
+ { "jarivisual.com", true },
{ "jarl.ninja", true },
{ "jarniashop.se", true },
{ "jaroku.com", true },
{ "jarondl.net", true },
+ { "jaroslavc.eu", true },
{ "jarrettgraham.com", true },
{ "jarroba.com", true },
{ "jas-team.net", true },
{ "jasl.works", true },
{ "jasmijnwagenaar.nl", true },
{ "jasminefields.net", true },
+ { "jason.re", true },
{ "jasonamorrow.com", true },
{ "jasongerber.ch", true },
{ "jasonian-photo.com", true },
@@ -17798,10 +18051,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jaszbereny-vechta.eu", true },
{ "javalestari.com", true },
{ "javamilk.com", true },
- { "javfree.me", true },
{ "javierburgos.net", true },
{ "jaycouture.com", true },
- { "jayf.de", true },
{ "jayfreestone.com", true },
{ "jaymecd.rocks", true },
{ "jayrl.com", true },
@@ -17825,11 +18076,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jcadg.com", true },
{ "jcai.dk", true },
{ "jcaicedo.com", true },
- { "jcaicedo.tk", true },
+ { "jcbgolfandcountryclub.com", true },
{ "jci.cc", true },
{ "jcra.net", true },
{ "jctf.team", true },
{ "jcwodan.nl", true },
+ { "jcyz.cf", true },
{ "jd-group.co.uk", true },
{ "jd1.de", true },
{ "jdassets.com", true },
@@ -17839,6 +18091,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jdegbau.com", true },
{ "jdheysupplies.co.uk", true },
{ "jdjohnsonmedia.com", true },
+ { "jdjohnsonwaterproofing.com", true },
{ "jdm.elk.pl", true },
{ "jdncr.com", true },
{ "jdoi.pw", true },
@@ -17869,6 +18122,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jeepeg.com", true },
{ "jeepmafia.com", true },
{ "jeff.forsale", true },
+ { "jeffanderson.me", true },
{ "jeffcasavant.com", false },
{ "jeffcloninger.net", true },
{ "jeffersonregan.co.uk", true },
@@ -17882,6 +18136,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jefftickle.com", true },
{ "jeffwebb.com", true },
{ "jefrydco.id", true },
+ { "jej.cz", true },
+ { "jej.sk", true },
{ "jekhar.com", true },
{ "jelena-adeli.com", true },
{ "jelewa.de", true },
@@ -17898,6 +18154,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jellybeanbooks.com.au", true },
{ "jelmer.co.uk", true },
{ "jelmer.uk", true },
+ { "jelmoli-shop.ch", true },
{ "jem.gov", true },
{ "jemangeducheval.com", true },
{ "jembatankarir.com", true },
@@ -17907,7 +18164,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jenniferengerwingaantrouwen.nl", true },
{ "jennifermason.eu", true },
{ "jennifersauer.nl", true },
- { "jennybeaned.com", true },
{ "jennythebaker.com", true },
{ "jenolson.net", true },
{ "jenprace.cz", true },
@@ -17918,7 +18174,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jeremy-chen.org", true },
{ "jeremy.hu", true },
{ "jeremybentham.com", true },
- { "jeremyc.ca", true },
{ "jeremycantu.com", true },
{ "jeremycrews.com", true },
{ "jeremynally.com", true },
@@ -17928,8 +18183,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jericamacmillan.com", true },
{ "jeroendeneef.com", true },
{ "jeroenensanne.wedding", true },
+ { "jeroensangers.com", true },
{ "jeroenvanderwal.nl", true },
{ "jerret.de", true },
+ { "jerryweb.org", true },
{ "jerryyu.ca", true },
{ "jerseybikehire.co.uk", true },
{ "jerseyjumpingbeans.co.uk", true },
@@ -17940,7 +18197,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jesseerbach.com", true },
{ "jessekaufman.com", true },
{ "jessesjumpingcastles.co.uk", true },
- { "jessevictors.com", true },
{ "jessgranger.com", true },
{ "jessicabenedictus.nl", false },
{ "jessicahrehor.com", true },
@@ -17957,11 +18213,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jetsieswerda.nl", true },
{ "jettlarue.com", true },
{ "jetwhiz.com", true },
- { "jeugdkans.nl", true },
{ "jeuxetcodes.fr", true },
{ "jeweet.net", true },
{ "jewishboyscouts.com", true },
{ "jexler.net", true },
+ { "jf-fotos.de", true },
{ "jfbst.net", true },
{ "jfmhero.me", true },
{ "jfr.im", true },
@@ -17976,16 +18232,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jhe.li", true },
{ "jhf.io", true },
{ "jhill.de", true },
- { "jhollandtranslations.com", true },
{ "jhuang.me", true },
{ "jhw-profiles.de", true },
{ "jhwestover.com", true },
{ "jiacl.com", true },
{ "jiahao.codes", true },
+ { "jiangzm.com", false },
+ { "jianji.de", true },
{ "jianshu.com", true },
{ "jianyuan.pro", true },
{ "jiazhao.ga", true },
+ { "jicaivvip.com", true },
{ "jichi.io", true },
+ { "jichi000.win", true },
{ "jimbiproducts.com", true },
{ "jimbraaten.com", true },
{ "jimbutlerkiaparts.com", true },
@@ -17999,6 +18258,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jimmyroura.ch", true },
{ "jimshaver.net", true },
{ "jimslop.nl", true },
+ { "jinancy.fr", true },
{ "jinanshen.com", true },
{ "jinbo123.com", false },
{ "jinbowiki.org", true },
@@ -18008,21 +18268,25 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jingjo.com.au", true },
{ "jinja.ai", true },
{ "jinkuru.net", true },
- { "jinliming.ml", true },
{ "jino-jossy.appspot.com", true },
{ "jinshuju.net", true },
{ "jintaiyang123.org", true },
{ "jiogo.com", true },
{ "jirav.com", true },
+ { "jiripudil.cz", true },
{ "jirosworld.com", true },
{ "jisai.net.cn", true },
{ "jisha.site", true },
{ "jiveiaktivno.bg", true },
+ { "jixun.moe", true },
{ "jiyusu.com", true },
{ "jjj.blog", true },
+ { "jjjconnection.com", true },
{ "jjlvk.nl", true },
+ { "jjmarketing.co.uk", true },
{ "jjspartyhire.co.uk", true },
{ "jjspartytime.co.uk", true },
+ { "jjsummerboatparty.co.uk", true },
{ "jjvanoorschot.nl", true },
{ "jk-entertainment.biz", true },
{ "jkchocolate.com", true },
@@ -18031,12 +18295,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jkirsche.com", true },
{ "jkrippen.com", true },
{ "jkuvw.xyz", true },
+ { "jkyuan.tk", true },
{ "jl-dns.eu", true },
{ "jl-dns.nl", true },
{ "jl-exchange.nl", true },
{ "jl-mail.nl", true },
{ "jldp.org", true },
+ { "jlink.nl", true },
{ "jlkhosting.com", true },
+ { "jloh.codes", true },
{ "jlot.org", true },
{ "jlponsetto.com", true },
{ "jlr-luxembourg.com", true },
@@ -18048,6 +18315,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jmbelloteau.com", true },
{ "jmcashngold.com.au", true },
{ "jmcataffo.com", true },
+ { "jmce.eu", true },
{ "jmcleaning.services", true },
{ "jmedved.com", true },
{ "jmentertainment.co.uk", true },
@@ -18060,15 +18328,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jmsolodesigns.com", true },
{ "jmssg.jp", true },
{ "jmvdigital.com", true },
- { "jncde.de", true },
- { "jncie.de", true },
{ "jncie.eu", true },
- { "jncip.de", true },
{ "jnjdj.com", true },
{ "jnm-art.com", true },
{ "joa-ebert.com", true },
{ "joaoaugusto.net", true },
{ "joaosampaio.com.br", true },
+ { "job-offer.de", true },
+ { "job.biz.tr", true },
{ "jobbkk.com", true },
{ "jobbsafari.no", true },
{ "jobbsafari.se", true },
@@ -18086,7 +18353,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jobs4sales.ch", true },
{ "jobseekeritalia.it", true },
{ "jobsisbrown.com", true },
- { "jobss.co.uk", true },
{ "jobsuchmaschine.ch", true },
{ "jobwinner.ch", true },
{ "jobzninja.com", true },
@@ -18102,6 +18368,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "joedinardo.com", true },
{ "joedoyle.us", true },
{ "joefixit.co", true },
+ { "joefixit.co.uk", true },
{ "joehenry.co.uk", true },
{ "joejohnson.name", true },
{ "joel.coffee", true },
@@ -18117,6 +18384,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "joelnichols.uk", true },
{ "joemotherfuckingjohnson.com", true },
{ "joepitt.co.uk", false },
+ { "joerosca.com", true },
{ "joerss.at", true },
{ "joeskup.com", true },
{ "joespaintingpgh.com", true },
@@ -18138,19 +18406,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "johannes.io", true },
{ "johannes.wtf", true },
{ "johannesburg-escorts.co.za", true },
+ { "johannesen.tv", true },
{ "johanneskonrad.de", true },
{ "johannespichler.com", false },
- { "johansf.tech", true },
{ "johego.org", true },
{ "johnbeil.com", true },
{ "johnblackbourn.com", true },
{ "johnbpodcast.com", true },
+ { "johncook.ltd.uk", true },
{ "johndball.com", true },
{ "johnfulgenzi.com", true },
{ "johngallias.com", true },
- { "johngo.tk", true },
+ { "johngo.tk", false },
{ "johnguant.com", true },
{ "johnkastler.net", true },
+ { "johnmcc.net", true },
{ "johnmcintosh.pro", true },
{ "johnmh.me", true },
{ "johnmichel.org", true },
@@ -18162,7 +18432,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "johnroberts.me", true },
{ "johnrockefeller.net", true },
{ "johnsegovia.com", true },
- { "johnsiu.com", true },
+ { "johnsonho.net", true },
{ "johnvanhese.nl", true },
{ "johnyytb.be", true },
{ "joi-dhl.ch", true },
@@ -18173,12 +18443,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jokewignand.nl", true },
{ "joliettech.com", true },
{ "jollausers.de", true },
+ { "jolle.io", true },
{ "jollygoodspudz.ca", true },
{ "jollykidswobbleworld.co.uk", true },
{ "jolokia.ch", true },
{ "jomo.tv", true },
{ "jomofojo.co", true },
{ "jomofojo.com", true },
+ { "jonahperez.com", true },
{ "jonandnoraswedding.com", true },
{ "jonarcher.info", true },
{ "jonas-thelemann.de", true },
@@ -18223,17 +18495,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "joostvanderlaan.nl", true },
{ "jopsens.de", true },
{ "joran.org", true },
+ { "jorcus.com", true },
{ "jordan-jungk.de", true },
{ "jordanhamilton.me", true },
- { "jordankirby.co.uk", true },
{ "jordankmportal.com", true },
{ "jordans.co.uk", true },
- { "jordanscorporatelaw.com", true },
{ "jordanstrustcompany.com", true },
{ "jordhy.com", true },
{ "jorisdalderup.nl", true },
{ "jornalalerta.com.br", true },
- { "josc.com.au", true },
{ "joscares.com", true },
{ "jose-alexand.re", true },
{ "jose-lesson.com", true },
@@ -18242,6 +18512,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "josef-lotz.de", true },
{ "josefjanosec.com", true },
{ "josegerber.ch", true },
+ { "joseitoda.org", true },
{ "josemikkola.fi", true },
{ "josepbel.com", true },
{ "josephbleroy.com", true },
@@ -18256,9 +18527,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "joshlovephotography.co.uk", true },
{ "joshpanter.com", true },
{ "joshrickert.com", true },
+ { "joshruppe.com", true },
{ "joshschmelzle.com", true },
{ "joshtriplett.org", true },
{ "joshua-kuepper.de", true },
+ { "joshua.bio", true },
{ "joshuadmiller.info", true },
{ "joshuajohnson.ca", true },
{ "joshuarogers.net", true },
@@ -18268,18 +18541,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "journeytomastery.net", true },
{ "jovani.com", false },
{ "jovic.hamburg", true },
- { "joworld.net", true },
{ "joyceseamone.com", true },
{ "joyful.house", true },
{ "joyfulexpressions.gallery", true },
{ "joyofcookingandbaking.com", true },
{ "jpdeharenne.be", true },
{ "jpeg.io", true },
- { "jpgangbang.com", true },
{ "jphandjob.com", true },
{ "jplesbian.com", true },
{ "jpmelos.com", true },
{ "jpmelos.com.br", true },
+ { "jpod.cc", true },
{ "jps-selection.co.uk", true },
{ "jps-selection.com", true },
{ "jps-selection.eu", true },
@@ -18297,9 +18569,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jross.me", true },
{ "jrtapsell.co.uk", true },
{ "jrxpress.com", true },
- { "jschoi.org", true },
+ { "js93029.com", true },
{ "jschumacher.info", true },
{ "jsd-cog.org", true },
+ { "jsdelivr.com", true },
{ "jselby.net", true },
{ "jsent.co.uk", true },
{ "jsevilleja.org", true },
@@ -18319,9 +18592,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jtp.id", true },
{ "jts3servermod.com", true },
{ "jtslay.com", true },
+ { "ju.io", true },
{ "juan23.edu.uy", true },
{ "juanfrancisco.tech", true },
- { "juanhub.com", true },
{ "juanmaguitar.com", true },
{ "juanxt.ddns.net", true },
{ "jubileum.online", true },
@@ -18330,10 +18603,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "juchit.at", true },
{ "jucktehkeinen.de", true },
{ "judc-ge.ch", true },
- { "judge2020.com", true },
{ "judge2020.me", true },
{ "judoprodeti.cz", true },
- { "judosaintdenis.fr", false },
+ { "judosaintdenis.fr", true },
{ "juef.space", true },
{ "juegosycodigos.es", true },
{ "juegosycodigos.mx", true },
@@ -18352,7 +18624,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "juk.life", true },
{ "juku-wing.jp", true },
{ "jule-spil.dk", true },
- { "julenlanda.com", true },
{ "julian-uphoff.de", true },
{ "julian-weigle.de", true },
{ "juliangonggrijp.com", true },
@@ -18405,7 +18676,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "junethack.net", true },
{ "jungaa.fr", true },
{ "jungesforumkonstanz.de", true },
- { "jungleculture.co.za", true },
{ "jungleducks.ca", true },
{ "junglejackscastles.co.uk", true },
{ "junglememories.co.uk", true },
@@ -18425,9 +18695,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "juridoc.com.br", true },
{ "jurijbuga.de", true },
{ "jurisprudent.by", true },
+ { "juristas.com.br", true },
{ "jurriaan.ninja", true },
{ "just-a-clanpage.de", true },
+ { "just-english.online", true },
{ "just-vet-and-drive.fr", true },
+ { "justanothercompany.name", true },
{ "justbelieverecovery.com", true },
{ "justbelieverecoverypa.com", true },
{ "justbookexcursions.com", true },
@@ -18440,24 +18713,25 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "justgalak.org", true },
{ "justice.gov", true },
{ "justice4assange.com", true },
+ { "justin-tech.com", true },
{ "justinellingwood.com", true },
{ "justinharrison.ca", true },
{ "justinho.com", true },
{ "justinstandring.com", true },
{ "justpaste.it", true },
- { "justsome.info", true },
{ "justthinktwice.gov", true },
{ "justupdate.me", true },
{ "justyy.com", true },
{ "juszkiewicz.com.pl", true },
{ "jutlander-netbank.dk", true },
{ "jutlander.dk", true },
+ { "juttaheitland.com", true },
{ "juusujanar.eu", true },
{ "juvenex.co", true },
- { "juventusclublugano.ch", true },
{ "juwelierstoopman.nl", true },
{ "juzgalo.com", true },
{ "jva-wuerzburg.de", true },
+ { "jvandenbroeck.com", true },
{ "jvanerp.nl", true },
{ "jvbouncycastlehire.co.uk", true },
{ "jvega.me", true },
@@ -18473,13 +18747,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "jwnotifier.org", true },
{ "jwschuepfheim.ch", true },
{ "jwsoft.nl", true },
- { "jxir.de", true },
{ "jydemarked.dk", true },
{ "jyggen.com", true },
{ "jym.fit", true },
{ "jyoti-fairworks.org", true },
{ "jzachpearson.com", true },
{ "jzbk.org", true },
+ { "jzcapital.co", true },
{ "k-homes.net", true },
{ "k-netz.de", true },
{ "k-pan.com", true },
@@ -18489,8 +18763,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "k-tube.com", true },
{ "k258059.net", true },
{ "k2mts.org", true },
- { "k33k00.com", true },
- { "k3nny.fr", false },
+ { "k33k00.com", false },
+ { "k3508.com", true },
+ { "k3nny.fr", true },
+ { "k4law.com", true },
{ "k4r.ru", true },
{ "k7azx.com", true },
{ "k82.org", true },
@@ -18499,9 +18775,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kaamoscreations.com", true },
{ "kaangenc.me", true },
{ "kaany.io", true },
+ { "kaasbesteld.nl", true },
{ "kaashosting.nl", true },
{ "kaatha-kamrater.se", true },
{ "kab-s.de", true },
+ { "kabaca.design", true },
{ "kabarlinux.id", true },
{ "kabashop.com.br", true },
{ "kabat-fans.cz", false },
@@ -18525,7 +18803,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kaigojj.com", true },
{ "kaikei7.com", true },
{ "kaileymslusser.com", true },
- { "kainetsoft.com", true },
{ "kairion.de", false },
{ "kaisakura.net", true },
{ "kaisev.net", true },
@@ -18555,14 +18832,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kall.is", true },
{ "kallies-net.de", true },
{ "kalmar.com", true },
+ { "kalolina.com", true },
{ "kalsbouncies.com", true },
{ "kaltenbrunner.it", true },
{ "kalterersee.ch", true },
{ "kalwestelectric.com", true },
{ "kam-serwis.pl", true },
- { "kamagra-italia.it", true },
{ "kamatajisyaku.tokyo.jp", true },
- { "kamikaichimaru.com", true },
+ { "kamikaichimaru.com", false },
{ "kaminbau-laub.de", true },
{ "kamixa.se", true },
{ "kamppailusali.fi", true },
@@ -18576,6 +18853,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kandianshang.com", true },
{ "kanecastles.com", true },
{ "kanehusky.com", true },
+ { "kaneisdi.com", true },
{ "kanetix.ca", true },
{ "kangaroo-bouncycastle.co.uk", true },
{ "kangarooislandholidayaccommodation.com.au", true },
@@ -18593,13 +18871,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kanna.cf", true },
{ "kannchen.de", true },
{ "kanobu.ru", true },
- { "kanotijd.nl", true },
{ "kansaiyamamoto.jp", true },
{ "kantankye.nl", true },
{ "kantanmt.com", true },
{ "kantorkita.net", true },
{ "kantorosobisty.pl", true },
- { "kantv1.com", true },
{ "kany.me", false },
{ "kanzakiranko.jp", true },
{ "kanzashi.com", true },
@@ -18608,6 +18884,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kanzlei-sixt.de", true },
{ "kanzshop.com", true },
{ "kap-genial.de", true },
+ { "kapgy-moto.com", true },
{ "kapiorr.duckdns.org", true },
{ "kapseli.net", true },
{ "kaptadata.com", true },
@@ -18616,6 +18893,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "karabas.com", true },
{ "karabijnhaken.nl", false },
{ "karachi.dating", true },
+ { "karaface.com", true },
{ "karalane.com", true },
{ "karamomo.net", true },
{ "karanastic.com", true },
@@ -18637,18 +18915,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "karlis-kavacis.id.lv", true },
{ "karlloch.de", true },
{ "karlsmithmn.org", true },
- { "karlstabo.se", true },
{ "karlzotter.com", true },
{ "karmaassurance.ca", true },
{ "karmabaker.com", true },
{ "karmainsurance.ca", true },
{ "karmaplatform.com", true },
{ "karmaspa.se", true },
- { "karmic.com", true },
{ "karn.nu", true },
{ "karneid.info", true },
- { "karpanhellas.com", false },
- { "kars.ooo", true },
{ "karsofsystems.com", true },
{ "karsten-voigt.de", true },
{ "karta-paliwowa.pl", true },
@@ -18662,6 +18936,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "karupp-did.net", true },
{ "kasadara.com", true },
{ "kasei.im", true },
+ { "kashinavi.com", true },
{ "kashmirobserver.net", true },
{ "kasko.io", true },
{ "kasnoffskinclinic.com", true },
@@ -18674,6 +18949,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "katalogbutikker.dk", true },
{ "katata-kango.ac.jp", true },
{ "katedra.de", true },
+ { "kateduggan.net", true },
{ "katekligys.com", true },
{ "katemihalikova.cz", true },
{ "katericke.com", true },
@@ -18684,20 +18960,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "katiechai.xyz", true },
{ "katieskandy.co.uk", true },
{ "katieskastles.co.uk", true },
+ { "katja-und-ronny.de", true },
{ "katka.info", true },
{ "katnunn.co.uk", true },
{ "kato-yane.com", true },
{ "katscastles.co.uk", true },
{ "kattelans.eu", true },
- { "katthewaffle.fr", true },
{ "katyl.info", false },
{ "katyusha.net", false },
{ "katzenbrunnen-test.de", true },
+ { "katzensklave.me", true },
{ "katzspeech.com", true },
{ "kau-boys.com", true },
{ "kau-boys.de", true },
{ "kaufberatung.community", true },
- { "kausta.me", true },
+ { "kaverti.com", true },
{ "kavik.no", true },
{ "kavovary-kava.cz", true },
{ "kawaii.io", true },
@@ -18705,13 +18982,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kay.la", true },
{ "kayakabovegroundswimmingpools.com", true },
{ "kayleen.net", true },
+ { "kayscs.com", true },
{ "kaysis.gov.tr", true },
{ "kazakov.lt", true },
{ "kazamasion.com", true },
{ "kazand.lt", true },
{ "kazandaemon.ru", true },
+ { "kazek.com.pl", true },
+ { "kazekprzewozy.pl", true },
{ "kazu.click", true },
{ "kazuhirohigashi.com", true },
+ { "kazumi.ooo", true },
{ "kazumi.ro", true },
{ "kazy111.info", true },
{ "kb3.net", true },
@@ -18719,7 +19000,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kbb-ev.de", true },
{ "kbbouncycastlehire.co.uk", true },
{ "kbcequitas.hu", true },
- { "kbfl.org", true },
{ "kbit.dk", true },
{ "kbjorklu.com", true },
{ "kbleventhire.co.uk", true },
@@ -18731,12 +19011,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kcliner.com", true },
{ "kcmicapital.com", true },
{ "kcolford.com", false },
- { "kcore.org", true },
{ "kcptun.com", true },
{ "kcshipping.co.uk", true },
{ "kcsordparticipation.org", true },
{ "kd.net.nz", true },
{ "kdex.de", true },
+ { "kdfans.com", true },
{ "kdw.cloud", true },
{ "kdyby.org", true },
{ "ke7tlf.us", true },
@@ -18747,8 +19027,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "keb.net.au", true },
{ "kebabbesteld.nl", true },
{ "kebabbruce.com", true },
+ { "kecht.at", true },
{ "kedarastudios.com", true },
{ "kedibizworx.com", true },
+ { "keditor.biz", true },
{ "kedv.es", true },
{ "keeleysam.com", true },
{ "keelove.net", true },
@@ -18766,7 +19048,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kehlenbach.net", true },
{ "keifel.de", true },
{ "kein-design.de", true },
- { "kein-fidget-spinner-werden.de", true },
{ "keinanung.nl", true },
{ "keinefilterblase.de", true },
{ "keisaku.org", true },
@@ -18789,7 +19070,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kellyskastles.co.uk", true },
{ "kellyssportsbarandgrill.com", true },
{ "kelmarsafety.com", true },
- { "kelp.agency", true },
{ "kelvinfichter.com", true },
{ "kemmerer-net.de", true },
{ "kempkens.io", true },
@@ -18801,7 +19081,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kenalsworld.com", true },
{ "kenbillionsyuan.tk", true },
{ "kenbonny.net", true },
- { "kenderhazmagyarorszag.hu", false },
{ "kengilmour.com", true },
{ "kenguntokku.jp", true },
{ "kenia-vakantie.nl", true },
@@ -18822,6 +19101,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kenterlis.gr", true },
{ "kenvix.com", false },
{ "kenx5.eu.org", true },
+ { "kenyons.info", true },
{ "keops-spine.fr", true },
{ "keops-spine.us", true },
{ "kepkonyvtar.hu", true },
@@ -18834,9 +19114,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kernelpanics.nl", true },
{ "kerrfrequencycombs.org", true },
{ "kersbergen.nl", true },
+ { "kersmexico.com", true },
{ "kerstkaart.nl", true },
{ "kersvers.agency", true },
- { "kerus.net", false },
{ "kerzyte.net", true },
{ "kescher.site", true },
{ "kessawear.com", true },
@@ -18849,21 +19129,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ketty-voyance.com", true },
{ "keutel.net", true },
{ "kevinapease.com", true },
+ { "kevinbowers.me", true },
{ "kevinbusse.de", true },
{ "kevincox.ca", false },
- { "kevinfoley.cc", true },
- { "kevinfoley.org", true },
{ "kevinhill.nl", true },
{ "kevinhq.com", true },
{ "kevinkla.es", true },
{ "kevinlocke.name", true },
{ "kevinmeijer.nl", true },
- { "kevinmoreland.com", true },
- { "kevinmorssink.nl", true },
+ { "kevinpirnie.com", true },
{ "kevinrandles.com", true },
{ "kevinratcliff.com", true },
{ "kevyn.lu", true },
- { "kewego.co.uk", true },
{ "keybase.io", true },
{ "keybored.co", true },
{ "keybored.me", true },
@@ -18872,6 +19149,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "keycontainers.co.za", true },
{ "keyerror.com", true },
{ "keyholdingservices.co.uk", true },
+ { "keyhomechecker.com", true },
{ "keyihao.cn", true },
{ "keyinfo.io", true },
{ "keylaserinstitute.com", true },
@@ -18884,12 +19162,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kf7joz.com", true },
{ "kffs.ru", true },
{ "kfirba.me", true },
+ { "kfm.ink", true },
{ "kforesund.se", true },
{ "kfv-kiel.de", false },
{ "kfz-hantschel.de", true },
{ "kgm-irm.be", true },
{ "kgnk.ru", true },
- { "khaledgarbaya.net", true },
+ { "kgregorczyk.pl", true },
{ "khanovaskola.cz", true },
{ "khas.co.uk", true },
{ "khasiatmanfaat.com", true },
@@ -18898,7 +19177,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "khipu.com", true },
{ "khlee.net", true },
{ "khmath.com", true },
- { "khmb.ru", true },
+ { "khmb.ru", false },
{ "khoury-dulla.ch", true },
{ "khs1994.com", true },
{ "khudothiswanpark.vn", true },
@@ -18925,6 +19204,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kids-ok.com", true },
{ "kids2day.in", true },
{ "kidsareatrip.com", true },
+ { "kidsclub.photos", true },
{ "kidsforsavingearth.org", true },
{ "kidsinwoods-interfacesouth.org", true },
{ "kidsmark.net", true },
@@ -18942,7 +19222,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kiel-kind.de", true },
{ "kieran.ie", true },
{ "kieranjones.uk", true },
- { "kiesuwcursus.nl", true },
{ "kiesuwkerstkaart.nl", true },
{ "kiffmarks.com", true },
{ "kigmbh.com", true },
@@ -18956,6 +19235,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "killerit.in", true },
{ "killerrobots.com", true },
{ "killymoonbouncycastles.com", true },
+ { "kilobyte22.de", true },
{ "kilogram.nl", true },
{ "kilometertje.nl", true },
{ "kimamass.com", true },
@@ -18969,6 +19249,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kimotodental.com", true },
{ "kimsufi-jordi.tk", true },
{ "kimtran.kim", true },
+ { "kin.life", true },
{ "kin.pet", true },
{ "kinautas.com", true },
{ "kinderbasar-luhe.de", true },
@@ -18998,6 +19279,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kingtecservices.com", true },
{ "kini24.ru", true },
{ "kinkenonline.com", true },
+ { "kinnettmemorial.org", true },
{ "kinnikinnick.com", true },
{ "kinniyaonlus.com", true },
{ "kinocheck.de", true },
@@ -19007,6 +19289,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kinos.nl", true },
{ "kinozal-tv.appspot.com", true },
{ "kinsights.com", false },
+ { "kintawifi.com", false },
{ "kintone.com", true },
{ "kintore.tv", true },
{ "kiocloud.com", true },
@@ -19015,7 +19298,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kippenbart.gq", true },
{ "kipriakipita.gr", true },
{ "kiragameforum.net", true },
- { "kirainmoe.com", true },
{ "kiraku.co", true },
{ "kirbear.com", true },
{ "kirche-dortmund-ost.de", true },
@@ -19028,13 +19310,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kirillaristov.com", true },
{ "kirillpokrovsky.de", true },
{ "kirinas.com", true },
+ { "kirito.kr", true },
{ "kirkforcongress.com", true },
{ "kirkforillinois.com", true },
{ "kirkify.com", true },
{ "kirkovsky.com", true },
- { "kirrie.pe.kr", true },
{ "kirsch-gestaltung.de", true },
{ "kirschbaum.me", true },
+ { "kirslis.com", true },
{ "kirstenbos.ca", true },
{ "kirstin-peters.de", true },
{ "kirwandigital.com", true },
@@ -19046,7 +19329,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kissesb.net", true },
{ "kissflow.com", true },
{ "kissgyms.com", true },
- { "kisskiss.ch", true },
{ "kissmycreative.com", true },
{ "kisstube.tv", true },
{ "kitabnamabayi.com", true },
@@ -19071,6 +19353,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kittpress.com", true },
{ "kittyhacker101.tk", true },
{ "kivitelezesbiztositas.hu", true },
+ { "kiwi.com", true },
{ "kiwi.digital", true },
{ "kiwi.global", true },
{ "kiwi.wiki", true },
@@ -19087,6 +19370,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kjarrval.is", true },
{ "kjchernov.info", true },
{ "kjellner.com", true },
+ { "kjellvn.net", true },
{ "kjg-ummeln.de", true },
{ "kk-neudorf-duissern.de", false },
{ "kkaefer.com", true },
@@ -19096,11 +19380,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kks-karlstadt.de", true },
{ "kksg.com", true },
{ "kkyy.me", true },
+ { "kkzxak47.com", true },
{ "kl-diaetist.dk", true },
{ "klaim.us", true },
{ "klamathrestoration.gov", true },
{ "klanggut.at", true },
- { "klantenadvies.nl", true },
{ "klares-licht.de", true },
{ "klarika.com", true },
{ "klarmobil-empfehlen.de", true },
@@ -19112,7 +19396,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "klaxon.me", true },
{ "klcreations.co.uk", true },
{ "kle.cz", true },
- { "klean-ritekc.com", true },
{ "kleaning.by", true },
{ "klebeband.eu", true },
{ "klebetape.de", true },
@@ -19146,6 +19429,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kloia.com", true },
{ "klosko.net", true },
{ "klotz-labs.com", true },
+ { "kloudboy.com", true },
{ "kls-agency.com.ua", false },
{ "klseet.com", true },
{ "klssn.com", true },
@@ -19153,8 +19437,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "klugemedia.de", true },
{ "klustekeningen.nl", true },
{ "klustermedia.com", true },
+ { "klva.cz", true },
+ { "klzwzhi.com", true },
{ "km-net.pl", true },
{ "kmashworth.co.uk", true },
+ { "kmdev.me", true },
{ "kmkz.jp", true },
{ "kmsci.com.ph", true },
{ "kn007.net", true },
@@ -19168,14 +19455,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kneblinghausen.de", true },
{ "knegten-agilis.com", true },
{ "knep.me", true },
- { "knetterbak.nl", true },
{ "kngk-group.ru", true },
{ "kngk-transavto.ru", true },
{ "kngk.org", true },
{ "kniga.market", false },
{ "knight-industries.org", true },
+ { "knightsblog.de", true },
{ "knightsbridge.net", true },
- { "knightsbridgegroup.org", true },
{ "knightsbridgewine.com", true },
{ "knip.ch", true },
{ "knispel-online.de", true },
@@ -19202,7 +19488,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kobezda.net", true },
{ "kobofarm.com", true },
{ "koboldcraft.ch", true },
- { "kobolya.hu", true },
{ "kocherev.org", true },
{ "kochereva.com", true },
{ "kochhar.net", true },
@@ -19220,6 +19505,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "koelnmafia.de", true },
{ "koenen-bau.de", true },
{ "koenigsbrunner-tafel.de", true },
+ { "koenleemans.nl", false },
{ "koerper-wie-seele.de", false },
{ "koerperkult.ch", true },
{ "koertner-muth.com", true },
@@ -19247,7 +19533,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "koketteriet.se", true },
{ "kokoiroworks.com", true },
{ "kokumoto.com", true },
- { "kolbeck.tk", true },
+ { "kolania.com", true },
+ { "kolania.de", true },
+ { "kolania.net", true },
{ "kolbeinsson.se", true },
{ "kolcsey.eu", true },
{ "koldanews.com", true },
@@ -19260,11 +19548,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kolmann.at", true },
{ "kolmann.eu", true },
{ "kolonie-am-stadtpark.de", true },
+ { "kolorbon.com", true },
{ "kolpingsfamilie-vechta-maria-frieden.de", true },
{ "koluke.co", true },
{ "koluke.com", true },
{ "komandakovalchuk.com", false },
{ "komelin.com", true },
+ { "komenamanda.de", true },
{ "komicloud.com", true },
{ "komidoc.com", true },
{ "komiksbaza.pl", true },
@@ -19345,14 +19635,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kotilinkki.fi", true },
{ "kotitesti.fi", true },
{ "kotly-marten.com.ua", true },
+ { "kotobox.net", true },
{ "kotois.com", true },
- { "kotomei.moe", true },
{ "kotonoha.cafe", true },
{ "kotori.love", true },
{ "kouki-food.com", true },
{ "koumuwin.com", true },
{ "koushinjo.org", true },
- { "kouten-jp.com", true },
{ "kov.space", true },
{ "koval.io", true },
{ "kovaldo.ru", true },
@@ -19405,6 +19694,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "krausoft.hu", true },
{ "krautomat.com", true },
{ "kraynik.com", true },
+ { "krazyboi.com", true },
{ "krazykastles.co.uk", true },
{ "krazykoolkastles.com", true },
{ "krazyphotobooths.co.uk", true },
@@ -19420,12 +19710,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kremalicious.com", true },
{ "kretschmann.consulting", true },
{ "kreuzpfadfinder.de", true },
+ { "krey.is", true },
{ "krfuli.com", true },
{ "kriechel.de", true },
{ "krinetzki.de", true },
{ "kriptosec.com", true },
{ "kris.click", true },
{ "krise-chance.ch", true },
+ { "krishnenduayur.org", true },
{ "krishofer.com", true },
{ "krislamoureux.com", true },
{ "krismurray.co.uk", true },
@@ -19435,7 +19727,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kristinbailey.com", true },
{ "kristofdv.be", true },
{ "krizevci.info", true },
- { "krmeni.cz", true },
+ { "krmeni.cz", false },
{ "krokedil.se", true },
{ "krokodent.de", true },
{ "kromamoveis.com.br", true },
@@ -19467,6 +19759,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ks-watch.de", true },
{ "kschv-rdeck.de", true },
{ "kselenia.ee", true },
+ { "ksero.center", true },
{ "ksero.wroclaw.pl", true },
{ "kshlm.in", true },
{ "kspg.tv", true },
@@ -19483,16 +19776,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kualo.com", true },
{ "kualo.in", true },
{ "kuaza.com", true },
- { "kub.hr", true },
{ "kubica.ch", true },
{ "kubierecki.pl", true },
{ "kubik-rubik.de", false },
- { "kubiwa.net", true },
{ "kubkprf.ru", true },
{ "kublis.ch", true },
- { "kuchenfeelisa.de", true },
{ "kuchentraum.eu", true },
{ "kucnibudzet.com", true },
+ { "kucukayvaz.com", true },
{ "kudo.co.id", true },
{ "kueche-co.de", true },
{ "kuechenprofi-group.de", false },
@@ -19511,7 +19802,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kulde.net", true },
{ "kulickovy-pojezd.cz", true },
{ "kulivps.com", true },
- { "kum.com", true },
{ "kuma.es", true },
{ "kumachan.biz", true },
{ "kumalog.com", true },
@@ -19532,6 +19822,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kuponydoher.cz", true },
{ "kupschke.net", true },
{ "kurashino-mall.com", true },
+ { "kuro.link", true },
{ "kurofuku.me", true },
{ "kuroinu.jp", true },
{ "kurona.ga", true },
@@ -19557,6 +19848,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kvadratnimeter.si", true },
{ "kvalita-1a.cz", true },
{ "kvalitnitesneni.cz", true },
+ { "kvantel.no", true },
{ "kvcc.com.au", true },
{ "kvetinymilt.cz", true },
{ "kvhile.com", true },
@@ -19569,7 +19861,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kwcolville.com", true },
{ "kwedo.com", true },
{ "kwench.com", true },
- { "kwidz.fr", true },
+ { "kwiknews.com", true },
{ "kwmr.me", true },
{ "kwok.cc", true },
{ "kwyxz.org", true },
@@ -19577,7 +19869,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kxah35.com", true },
{ "kxnrl.com", false },
{ "kybi.sk", true },
- { "kydara.com", true },
{ "kyledrake.net", true },
{ "kylegutschow.com", true },
{ "kylejohnson.io", true },
@@ -19589,9 +19880,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "kynastonwedding.co.uk", true },
{ "kyobostory-events.com", true },
{ "kyoko.org", true },
- { "kyonagashima.com", true },
{ "kyosaku.org", true },
{ "kyoto-k9.com", true },
+ { "kyoto-mic.com", true },
{ "kyoto-sake.net", true },
{ "kyoto-tomikawa.jp", true },
{ "kyoto-tomoshibi.jp", true },
@@ -19612,7 +19903,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "l7world.com", true },
{ "l9.fr", true },
{ "la-baldosa.fr", true },
- { "la-cave-a-nodo.fr", true },
+ { "la-cave-a-nodo.fr", false },
{ "la-compagnie-des-elfes.fr", true },
{ "la-ganiere.com", true },
{ "la-kaz-a-velo.fr", true },
@@ -19623,6 +19914,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "laassari.me", false },
{ "laatikko.io", true },
{ "laatjeniethackmaken.nl", true },
+ { "laballoons.com", true },
{ "labande-annonce.fr", true },
{ "labcoat.jp", true },
{ "labms.com.au", true },
@@ -19634,7 +19926,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "laboutiquedejuliette.com", true },
{ "laboxfaitsoncinema.com", true },
{ "labradorpuppiesforsalebyregisteredlabradorbreeders.com", false },
- { "labrat.mobi", true },
+ { "labrat.mobi", false },
+ { "labspack.com", true },
{ "labtest.ltd", true },
{ "lacantine.xyz", true },
{ "lacaserita.org", true },
@@ -19645,7 +19938,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lachawoj.de", true },
{ "lachlan-harris.com", true },
{ "lachlan.com", true },
- { "lachlankidson.net", true },
{ "lachosetypo.com", true },
{ "lacicloud.net", true },
{ "lacigf.org", true },
@@ -19656,9 +19948,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "laclefdor.ch", true },
{ "lacliniquefinanciere.com", true },
{ "lacoast.gov", true },
+ { "lacocinadelila.com", true },
{ "lacoquette.gr", true },
{ "lacyc3.eu", true },
- { "ladadate.com", true },
{ "ladbroke.net", true },
{ "ladenzeile.at", true },
{ "ladenzeile.de", true },
@@ -19683,7 +19975,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lagerauftrag.info", true },
{ "lagit.in", true },
{ "laglab.org", false },
- { "lagodny.eu", false },
+ { "lagodny.eu", true },
{ "lagout.org", true },
{ "lagriffeduservice.fr", true },
{ "laguiadelvaron.com", true },
@@ -19714,7 +20006,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lakesherwoodlighting.com", true },
{ "lakesherwoodoutdoorlighting.com", true },
{ "lakeshowlife.com", true },
- { "lakewoodcomputerservices.com", true },
{ "lakonia.com.br", true },
{ "lalalab.com", true },
{ "lalaya.fr", true },
@@ -19729,7 +20020,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lambauer.com", true },
{ "lambertshealthcare.co.uk", true },
{ "lamboo.be", true },
- { "lamclam.site", true },
{ "lame1337.xyz", true },
{ "lamiaposta.email", false },
{ "lamikvah.org", true },
@@ -19741,8 +20031,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lampenwelt.at", true },
{ "lampenwelt.ch", true },
{ "lampposthomeschool.com", true },
- { "lan2k.org", true },
+ { "lan.biz.tr", true },
{ "lana.swedbank.se", true },
+ { "lanahallen.com", true },
{ "lanbroa.eu", true },
{ "lancashirecca.org.uk", true },
{ "lancejames.com", true },
@@ -19754,8 +20045,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "landchecker.com.au", true },
{ "landflair-magazin.de", true },
{ "landhaus-christmann.de", true },
+ { "landinfo.no", true },
+ { "landlordy.com", true },
{ "landofelves.net", true },
{ "landrovermerriamparts.com", true },
+ { "landscape-photography.org", true },
{ "landscapelightingagoura.com", true },
{ "landscapelightingagourahills.com", true },
{ "landscapelightingcalabasas.com", true },
@@ -19770,7 +20064,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "landscapelightingoakpark.com", true },
{ "landscapelightingpacificpalisades.com", true },
{ "landscapelightingsimivalley.com", true },
+ { "landscapelightingthousandoaks.com", true },
{ "landscapelightingwestlakevillage.com", true },
+ { "landscapephotography.org.au", true },
{ "landyparts.nl", true },
{ "lanetix.com", true },
{ "lanforalla.se", true },
@@ -19780,6 +20076,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "langguth.io", true },
{ "langkahteduh.com", true },
{ "langkawitrip.com", true },
+ { "langotie.com.br", true },
{ "langstreckensaufen.de", true },
{ "languageterminal.com", true },
{ "langworth.com", true },
@@ -19813,6 +20110,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lapolla.com", true },
{ "lapotagere.ch", true },
{ "lapparente-aise.ch", true },
+ { "lappari.com", true },
+ { "lara.photography", true },
{ "laracode.eu", true },
{ "laraeph.com", true },
{ "laraigneedusoir.com", true },
@@ -19830,6 +20129,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "larondinedisinfestazione.com", true },
{ "larptreff.de", true },
{ "larraz.es", true },
+ { "larryli.cn", true },
{ "larrysalibra.com", true },
{ "lars-ewald.com", true },
{ "lars-mense.de", true },
@@ -19838,7 +20138,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "larsbauer.xyz", true },
{ "larsklene.nl", true },
{ "larsklint.com", true },
- { "larsmerke.de", true },
{ "laruga.co.uk", true },
{ "lasalle.wa.edu.au", true },
{ "lasarmas.com", true },
@@ -19867,7 +20166,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lastweekinaws.com", true },
{ "lasuzefc.fr", true },
{ "lat.sk", true },
- { "latabledebry.be", true },
{ "latabledemontebello.com", true },
{ "late.am", true },
{ "latecnosfera.com", true },
@@ -19876,7 +20174,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lateral.dog", true },
{ "lateralsecurity.com", true },
{ "latestdeals.co.uk", true },
- { "lathen-wahn.de", true },
{ "latiendadelbebefeliz.com", true },
{ "latiendauno.com", true },
{ "latiendawapa.com", true },
@@ -19884,7 +20181,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "latinphone.com", true },
{ "latintoy.com", true },
{ "latitudesign.com", true },
- { "latour-managedcare.ch", true },
{ "latremebunda.com", true },
{ "latrine.cz", true },
{ "latterdaybride.com", true },
@@ -19944,8 +20240,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "layfully.me", true },
{ "laylo.io", true },
{ "laylo.nl", true },
+ { "laymans911.info", true },
{ "layoutsatzunddruck.de", true },
- { "lazapateriahandmade.pe", true },
{ "lazowik.pl", true },
{ "lazurit.com", true },
{ "lazyboston.com", true },
@@ -19960,12 +20256,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lbls.me", true },
{ "lbphacker.pw", true },
{ "lbs-logics.com", true },
+ { "lbsi-nordwest.de", true },
{ "lbux.org", true },
- { "lc-cs.com", true },
+ { "lc-cs.com", false },
+ { "lc-promiss.de", true },
{ "lca-pv.de", true },
{ "lca.gov", true },
{ "lcars-sv.info", true },
+ { "lcbizsolutions.com", true },
{ "lce-events.com", true },
+ { "lcgaj.com", true },
{ "lcht.ch", false },
{ "lcrmscp.gov", true },
{ "lcy.cat", true },
@@ -19994,7 +20294,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "leadbox.cz", true },
{ "leaderoftheresistance.com", false },
{ "leaderoftheresistance.net", false },
- { "leadgenie.me", true },
{ "leadinfo.com", true },
{ "leadingsalons.com", true },
{ "leadquest.nl", true },
@@ -20014,6 +20313,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "learningman.top", true },
{ "learnpianogreece.com", true },
{ "learnplayground.com", true },
+ { "learntale.com", true },
{ "learntube.cz", true },
{ "leaseit24.com", true },
{ "leaseit24.de", true },
@@ -20042,7 +20342,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ledecologie.com.br", true },
{ "ledeguisement.com", true },
{ "lederer-it.com", true },
- { "ledlampor365.se", true },
{ "ledscontato.com.br", true },
{ "ledzom.ru", false },
{ "lee-fuller.co.uk", true },
@@ -20050,8 +20349,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "leebiblestudycenter.com", true },
{ "leebiblestudycentre.co.uk", true },
{ "leebiblestudycentre.com", true },
- { "leech360.com", true },
- { "leeclemens.net", true },
+ { "leech360.com", false },
+ { "leeclemens.net", false },
{ "leedev.org", true },
{ "leelaylay.com", true },
{ "leere.me", true },
@@ -20089,6 +20388,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "legjobblogo.hu", true },
{ "legland.fr", true },
{ "legoutdesplantes.be", true },
+ { "legrandvtc.fr", true },
{ "legumefederation.org", true },
{ "legumeinfo.org", true },
{ "lehighmathcircle.org", true },
@@ -20096,7 +20396,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "leibniz-remscheid.de", false },
{ "leideninternationalreview.com", true },
{ "leigh.life", true },
- { "leilautourdumon.de", true },
{ "leilonorte.com", true },
{ "leiming.co", true },
{ "leinfelder.in", true },
@@ -20110,7 +20409,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lejardindesmesanges.fr", true },
{ "lel.ovh", true },
{ "lelambiental.com.br", true },
- { "lelehei.com", true },
{ "lemarcheelagrandeguerra.it", true },
{ "lemni.top", true },
{ "lemoine.at", true },
@@ -20118,13 +20416,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lemondrops.xyz", true },
{ "lemonop.com", true },
{ "lemonparty.co", true },
- { "lemonthy.ca", true },
- { "lemonthy.com", true },
{ "lemouillour.fr", true },
{ "lemuslimpost.com", true },
{ "lenagroben.de", true },
{ "lenaneva.ru", true },
{ "lence.net", true },
+ { "lendingclub.com", true },
+ { "lenget.com", true },
{ "lenguajedeprogramacion.com", true },
{ "lengzzz.com", true },
{ "lenidh.de", true },
@@ -20150,8 +20448,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "leon.net", true },
{ "leonauto.de", true },
{ "leonax.net", true },
+ { "leonbuitendam.nl", true },
{ "leondenard.com", true },
- { "leonhooijer.nl", false },
{ "leonklingele.de", true },
{ "leowkahman.com", true },
{ "lep.gov", true },
@@ -20177,9 +20475,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lesancheslibres.fr", true },
{ "lesarts.com", true },
{ "lesberger.ch", true },
- { "lesbiansslaves.com", true },
- { "lesbofight.com", true },
+ { "lesconteursavis.org", true },
{ "leseditionsbraquage.com", true },
+ { "lesfilmsavivre.com", true },
{ "lesgoodnews.fr", true },
{ "lesharris.com", true },
{ "leshervelines.com", true },
@@ -20194,15 +20492,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lespret.nl", true },
{ "lesscloud.com", true },
{ "lessets-graphiques.com", true },
- { "lessing.consulting", true },
{ "lessis.moe", true },
{ "lesterchan.net", true },
{ "lesterrassesdusoleil.ch", true },
{ "lesyndicat.info", true },
{ "let-go.cc", true },
{ "letemps.ch", true },
- { "letempsdunefleur.be", true },
- { "lethbridgecoffee.com", true },
{ "lets-bounce.com", true },
{ "lets-go-acoustic.de", true },
{ "lets-ktai.jp", true },
@@ -20258,14 +20553,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lfrconseil.com", true },
{ "lgbt.io", true },
{ "lgbt.ventures", true },
- { "lgbtqventures.com", true },
{ "lgbtventures.com", true },
{ "lghfinancialstrategy.ch", true },
{ "lgpecasoriginais.com.br", true },
{ "lhajn.cz", true },
{ "lhakustik.se", true },
+ { "lhalbert.xyz", true },
{ "lhconsult.tk", false },
- { "lheinrich.de", true },
{ "lhost.su", true },
{ "li-ke.co.jp", true },
{ "li.search.yahoo.com", false },
@@ -20274,8 +20568,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lian-in.net", true },
{ "liang-li88.com", true },
{ "liang-li88.net", true },
- { "liangbp.com", true },
- { "lianwen.kim", true },
{ "lianye1.cc", true },
{ "lianye2.cc", true },
{ "lianye3.cc", true },
@@ -20291,6 +20583,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "libgame.com", true },
{ "libmpq.org", true },
{ "libnull.com", true },
+ { "libra.com", true },
{ "library-quest.com", true },
{ "libraryextension.com", true },
{ "libraryfreedomproject.org", false },
@@ -20311,13 +20604,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "libskia.so", true },
{ "libsodium.org", true },
{ "libstock.si", true },
- { "liceo.cn", true },
{ "lichess.org", true },
{ "lichtmetzger.de", true },
{ "lichtspot.de", true },
{ "lichttechnik-tumler.com", true },
{ "lichttraeumer.de", true },
- { "lickmypussy.us", true },
{ "lickthesalt.com", true },
{ "lidavidm.me", true },
{ "lidel.org", true },
@@ -20333,6 +20624,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lidogr.com", true },
{ "lidong.me", true },
{ "lidow.eu", true },
+ { "liduan.net", false },
{ "liebel.org", true },
{ "lieberwirth.biz", true },
{ "lieblingsholz.de", true },
@@ -20341,14 +20633,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "life-emotions.pt", true },
{ "lifebetweenlives.com.au", true },
{ "lifecism.com", true },
- { "lifecoach.tw", false },
{ "lifegrip.com.au", true },
{ "lifeinhex.com", true },
{ "lifeinsurancepro.org", true },
{ "lifekiss.ru", true },
{ "lifematenutrition.com", true },
{ "lifemstyle.com", true },
- { "lifenexto.com", true },
{ "lifeqa.net", true },
{ "lifequotes-uk.co.uk", true },
{ "lifesafety.com.br", true },
@@ -20360,6 +20650,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "light-up.xyz", true },
{ "light.mail.ru", true },
{ "lightbox.co", true },
+ { "lightdream.tech", true },
{ "lighthouseinstruments.com", true },
{ "lighting-centres.co.uk", true },
{ "lightingagoura.com", true },
@@ -20384,6 +20675,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lights.co.uk", true },
{ "lightspeed.com", false },
{ "lightspeedta.co", true },
+ { "lighttp.com", true },
{ "lightupcollective.co.uk", true },
{ "lignoma.com", true },
{ "ligonier.com", true },
@@ -20393,13 +20685,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "likc.me", true },
{ "likeablehub.com", true },
{ "likeabox.de", true },
+ { "likebee.gr", true },
{ "likegeeks.com", true },
{ "likehifi.de", true },
{ "likemovies.de", true },
{ "likenewhearing.com.au", true },
{ "likere.com", true },
{ "lilaccakeboutique.com", true },
- { "liliang13.com", true },
{ "lillepuu.com", true },
{ "lily-bearing.com", true },
{ "lily-inn.com", true },
@@ -20411,11 +20703,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "limberg.me", true },
{ "limbo.services", true },
{ "limeburst.net", true },
+ { "limelabs.de", true },
+ { "limelabs.io", true },
{ "limeres.com", true },
{ "limereslaw.com", true },
{ "limitededitioncomputers.com", true },
{ "limitededitionsolutions.com", true },
- { "limitget.com", true },
{ "limitxyz.com", true },
{ "limn.me", true },
{ "limoairporttoronto.net", true },
@@ -20430,15 +20723,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lincolnfinewines.com", true },
{ "lincolnsfh.com", true },
{ "lincolnwayflorist.com", true },
- { "lincsbouncycastlehire.co.uk", true },
{ "lindalap.fi", true },
{ "lindemann.space", true },
{ "linden.me", true },
{ "lindeskar.se", true },
+ { "lindholmen.club", true },
{ "lindnerhof-taktik.de", true },
{ "lindo.ru", true },
{ "lindon.pw", true },
{ "lindsayanderson.com", true },
+ { "lindsaygorski.com", true },
{ "lindskogen.se", true },
{ "lindy.co", false },
{ "line.biz", true },
@@ -20452,7 +20746,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lingerie.com.br", true },
{ "lingeriesilhouette.com", true },
{ "lingotaxi.com", true },
- { "lingting.vip", true },
{ "linguamilla.com", true },
{ "lingvo-svoboda.ru", true },
{ "linherest.tk", true },
@@ -20461,6 +20754,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "linkat4.cz", true },
{ "linkdr.uk", true },
{ "linkedinbackground.com", true },
+ { "linkedpipes.com", true },
{ "linkenheil.org", true },
{ "linklocker.co", true },
{ "linkmaker.co.uk", true },
@@ -20474,11 +20768,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "linkycat.com", true },
{ "linode.com", false },
{ "linost.com", true },
- { "linostassi.net", true },
{ "linqhost.nl", true },
{ "linss.com", true },
{ "lintmx.com", true },
{ "linusdrop.tips", true },
+ { "linux-audit.com", true },
{ "linux-florida.com", true },
{ "linux-mint-czech.cz", true },
{ "linux-vme.org", true },
@@ -20500,9 +20794,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "linuxlounge.net", true },
{ "linuxos.org", true },
{ "linuxproperties.com", true },
+ { "linuxsecurity.expert", true },
{ "linx.li", true },
{ "linx.net", true },
- { "linxmind.eu", true },
{ "linzgau.de", true },
{ "linzyjx.com", true },
{ "lionhosting.nl", true },
@@ -20510,6 +20804,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lionsdeal.com", true },
{ "lipartydepot.com", true },
{ "lipex.com", true },
+ { "lipo.lol", true },
{ "lipoabaltimore.org", true },
{ "liqd.net", true },
{ "liquid.cz", true },
@@ -20517,7 +20812,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "liquidinternet.co", true },
{ "liquidradio.pro", true },
{ "liquidwarp.net", true },
- { "liquimoly.market", true },
{ "lirion.de", true },
{ "liris-beautywelt.de", true },
{ "lirlandais.ch", true },
@@ -20527,6 +20821,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lisburnhottubnbounce.co.uk", true },
{ "lisieuxarquitetura.com.br", true },
{ "liskgdt.net", true },
+ { "lisky.ru", true },
{ "lislan.org.uk", true },
{ "lisowski-development.com", true },
{ "listahu.org", true },
@@ -20540,7 +20835,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "litebit.eu", true },
{ "litebits.com", true },
{ "litemind.com", true },
- { "literarymachin.es", true },
{ "litfin.name", true },
{ "lithan.com", true },
{ "lithesalar.se", true },
@@ -20556,10 +20850,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "littlepigcreek.com.au", true },
{ "littlepincha.fr", true },
{ "littleprincessandmascotparties.co.uk", true },
+ { "littleqiu.net", true },
{ "littleredsbakeshop.com", true },
- { "littlericket.me", true },
+ { "littlericket.me", false },
{ "littlescallywagsplay.co.uk", true },
- { "littleservice.cn", true },
{ "littleskin.cn", true },
{ "littleswitch.co.jp", true },
{ "littlewatcher.com", true },
@@ -20569,9 +20863,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "liuboznaiko.eu", true },
{ "liudon.org", true },
{ "liufengyu.cn", true },
+ { "liul.in", true },
{ "liupeicheng.top", true },
{ "liv3d.stream", true },
{ "live4k.media", false },
+ { "livebandphotos.com", true },
{ "livebetterwith.com", true },
{ "livebythesun.de", true },
{ "livecards.co.uk", true },
@@ -20582,7 +20878,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "livedesign24.de", true },
{ "liveflightapp.com", true },
{ "liveforspeed.se", true },
- { "livejasmin.dk", true },
{ "livekaarten.be", true },
{ "livekaarten.nl", true },
{ "livekarten.at", true },
@@ -20600,11 +20895,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "livepath.ch", true },
{ "liveperformersmeeting.net", true },
{ "liveregistratie.nl", true },
- { "livesearch-fukuoka.com", true },
+ { "liverider.co.jp", true },
{ "livesheep.com", true },
{ "livesure.com", true },
+ { "livetoride.co.za", true },
{ "livetube.tv", true },
- { "livi.co", true },
{ "living-space.co.nz", true },
{ "living24.de", true },
{ "livingforreal.com", true },
@@ -20615,7 +20910,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "livolett.de", true },
{ "livrariacoad.com.br", true },
{ "livroseuniformes.com.br", true },
- { "lixiaojiang.ga", true },
{ "lixtick.com", true },
{ "liyin.date", true },
{ "liyinjia.com", true },
@@ -20624,7 +20918,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lizhi.io", true },
{ "lizhi123.net", true },
{ "lizzaran.io", true },
- { "lizzythepooch.com", true },
{ "ljason.cn", true },
{ "ljs.io", true },
{ "lk-hardware.cz", true },
@@ -20646,7 +20939,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lntu.org", true },
{ "lnx.li", true },
{ "load-ev.de", true },
- { "loadingdeck.com", false },
{ "loadlow.me", true },
{ "loadwallet.com", true },
{ "loafhead.me", true },
@@ -20657,6 +20949,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lob-staging.com", true },
{ "lob.com", true },
{ "lobivia.de", true },
+ { "lobosdomain.hopto.org", true },
{ "lobsangstudio.com", true },
{ "lobstr.co", true },
{ "local360.net", true },
@@ -20665,7 +20958,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "localblitz.com", true },
{ "localblock.co.za", true },
{ "localbouncycastle.com", true },
- { "localdata.us", true },
{ "localdecor.com.br", true },
{ "localethereum.com", true },
{ "localhorst.duckdns.org", true },
@@ -20673,7 +20965,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "localhost.ee", true },
{ "localspot.pl", true },
{ "locapos.com", true },
- { "location-fichier-email.com", true },
{ "locationvoitureallemagne.com", true },
{ "locationvoitureangleterre.com", true },
{ "locationvoitureaustralie.com", true },
@@ -20684,17 +20975,32 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "locationvoitureportugal.com", true },
{ "locatorplus.gov", true },
{ "locauxrama.fr", true },
- { "locker.email", true },
+ { "locker.email", false },
{ "locker.plus", true },
{ "lockify.com", true },
{ "lockpick.nl", true },
{ "lockpicks.se", true },
{ "lockr.io", true },
+ { "locksmith-durbannorth.co.za", true },
+ { "locksmith-sanantonio-tx.com", true },
{ "locksmithbalchsprings.com", true },
+ { "locksmithballito.com", true },
+ { "locksmithbluff.co.za", true },
+ { "locksmithedmonds.com", true },
{ "locksmithgarland-tx.com", true },
{ "locksmithgrapevinetx.com", true },
+ { "locksmithhillcrest.co.za", true },
+ { "locksmithindurban.co.za", true },
{ "locksmithmesquitetx.com", true },
+ { "locksmithmissouricity.com", true },
+ { "locksmithopen.com", true },
+ { "locksmithsanantoniotexas.com", true },
+ { "locksmithsbluff.com", true },
+ { "locksmithseattleco.com", true },
+ { "locksmithservice-houston.com", true },
{ "locksmithspring.com", true },
+ { "locksmithspringtx.com", true },
+ { "locksmithswestville.com", true },
{ "locksmiththewoodlands.com", true },
{ "locomore.com", true },
{ "locomotionds.com", true },
@@ -20714,6 +21020,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "logement.com", true },
{ "logentries.com", false },
{ "logexplorer.net", true },
+ { "logfile.at", true },
+ { "logfro.de", true },
{ "logicchen.com", true },
{ "logiciel-entreprise-seurann.fr", true },
{ "logicio.ch", false },
@@ -20744,17 +21052,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "logue.be", true },
{ "logze.nl", true },
{ "lohanaflores.com.br", true },
+ { "lohmeier.it", true },
{ "loichot.ch", true },
+ { "loigiai.net", true },
+ { "loihay.net", true },
{ "lojadamimo.com.br", true },
{ "lojadanidrea.com.br", true },
{ "lojadarenda.com.br", true },
{ "lojadewhisky.com.br", true },
{ "lojadoarcomprimido.com.br", true },
- { "lojadoprazer.com.br", true },
{ "lojadosomautomotivo.com.br", true },
{ "lojafazendoarte.com.br", true },
{ "lojafilipaper.com.br", true },
- { "lojahunamarcenaria.com.br", true },
{ "lojamagicalx.com", true },
{ "lojamascate.com.br", true },
{ "lojamoleco.com.br", true },
@@ -20774,13 +21083,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "loket.nl", true },
{ "lolcorp.pl", true },
{ "lolcow.farm", true },
+ { "lolhax.org", true },
{ "loli.net", true },
{ "loli.pet", true },
{ "loli.ski", true },
+ { "loli.tube", true },
{ "loli.world", true },
{ "lolibrary.org", true },
{ "lolicon.eu", true },
- { "lolis.stream", true },
{ "lolkot.ru", true },
{ "lolnames.gg", true },
{ "lolpatrol.de", true },
@@ -20798,9 +21108,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "londongynaecologist.co", true },
{ "londonkan.jp", true },
{ "londonkeyholdingcompany.co.uk", true },
- { "londonseedcentre.co.uk", true },
{ "lonelytweets.com", true },
{ "lonesomecosmonaut.com", true },
+ { "long-journey.com", true },
{ "longhaircareforum.com", true },
{ "longhorn-imports.com", true },
{ "longhorn.id.au", true },
@@ -20825,13 +21135,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lookatmysco.re", true },
{ "lookbetweenthelines.com", true },
{ "lookup-dns.net", true },
+ { "lookyman.net", true },
{ "lookzook.com", true },
{ "loom.no", true },
{ "loony.info", true },
{ "loopower.com", true },
+ { "loopstart.org", true },
{ "loothole.com", true },
{ "loovto.net", true },
- { "loposchokk.com", true },
{ "loqu8.com", true },
{ "lordofthebrick.com", true },
{ "lore.azurewebsites.net", true },
@@ -20847,8 +21158,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lostkeys.co.uk", true },
{ "lostserver.com", true },
{ "lostwithdan.com", true },
- { "loteks.de", true },
{ "lothlorien.ca", false },
+ { "lotl.ru", true },
{ "lotn.mobi", true },
{ "lotn.nl", true },
{ "lotnonline.com", true },
@@ -20879,7 +21190,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lovenwishes.com", true },
{ "loveph.one", true },
{ "lover-bg.com", true },
- { "loveread-ec.appspot.com", true },
{ "loverepublic.ru", true },
{ "lovesmagical.com", true },
{ "lovesupremefestival.com", true },
@@ -20898,19 +21208,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lowson.ca", true },
{ "loxal.net", true },
{ "loxal.org", true },
+ { "loyaltyondemand.club", true },
+ { "loyaltyondemand.eu", true },
{ "lp-support.nl", true },
- { "lpacademy.com.br", true },
{ "lpt-nebreziny.eu", true },
{ "lra-cloud.de", true },
- { "lrhstsa.com", true },
{ "lrssystems.com", true },
{ "ls-alarm.de", true },
{ "lsal.me", true },
{ "lsc-dillingen.de", true },
{ "lsc.gov", true },
{ "lshiy.com", true },
+ { "lsmpx.com", true },
{ "lsquo.com", true },
{ "lsws.de", true },
+ { "lsys.ac", true },
{ "lt.search.yahoo.com", false },
{ "ltaake.com", true },
{ "ltecode.com", true },
@@ -20918,7 +21230,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ltls.org", true },
{ "ltn-tom-morel.fr", true },
{ "lu.search.yahoo.com", false },
- { "luan.ma", true },
{ "luav.org", true },
{ "lubar.me", true },
{ "lubbockyounglawyers.org", true },
@@ -20926,15 +21237,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lubomirkazakov.com", true },
{ "luc-oberson.ch", true },
{ "luca.swiss", true },
- { "lucacastelnuovo.nl", true },
+ { "lucacastelnuovo.nl", false },
{ "lucafrancesca.me", true },
{ "lucakrebs.de", true },
- { "lucasantarella.com", true },
- { "lucascantor.com", true },
+ { "lucasbergen.ca", true },
{ "lucasem.com", true },
{ "lucasgymnastics.com", true },
{ "lucaslarson.net", true },
- { "lucassoler.com.ar", true },
{ "luce.life", true },
{ "lucid-light.de", true },
{ "lucidframeworks.com", true },
@@ -20942,12 +21251,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lucidoccult.com", true },
{ "lucielavickova.com", true },
{ "luckycastles.co.uk", true },
- { "luckydog.pw", true },
{ "luckyfrog.hk", true },
- { "luckystarfishing.com", true },
{ "luckyxf.com", true },
{ "lucy.science", true },
{ "lucyparsonslabs.com", true },
+ { "lucysan.net", true },
+ { "lucz.co", true },
{ "ludek.biz", true },
{ "ludikovsky.name", true },
{ "ludogue.net", true },
@@ -20956,6 +21265,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ludwig.im", true },
{ "ludwiggrill.de", true },
{ "ludwigjohnson.se", true },
+ { "ludwigpro.net", true },
{ "luedeke-bremen.eu", true },
{ "luehne.de", true },
{ "luelistan.net", true },
@@ -20972,6 +21282,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lugui.in", true },
{ "lui.pink", true },
{ "luiscapelo.info", true },
+ { "luisgf.es", true },
{ "luismaier.de", true },
{ "luisyr.com", true },
{ "luizkowalski.net", true },
@@ -20992,14 +21303,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lukaszwojcik.net", true },
{ "lukatz.de", true },
{ "luke.ch", true },
+ { "luke6887.me", true },
{ "lukeistschuld.de", true },
- { "lukem.eu", true },
{ "lukem.net", true },
{ "lukeng.net", true },
{ "lukesbouncycastlehire.com", true },
{ "lukestebbing.com", true },
+ { "lukesutton.info", true },
{ "lukmanulhakim.id", true },
{ "lukull-pizza.de", true },
+ { "lumen.sh", true },
+ { "lumer.tech", true },
{ "lumi.pw", true },
{ "lumiere.com", true },
{ "luminaires-online.fr", true },
@@ -21011,9 +21325,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lunar6.ch", true },
{ "lunarlog.com", true },
{ "lunarshark.com", true },
- { "lunarsoft.net", true },
{ "lunartail.nl", true },
{ "lunasqu.ee", true },
+ { "lunchbunch.me", true },
{ "lune-indigo.ch", true },
{ "lungta.pro", true },
{ "lunidea.ch", true },
@@ -21027,6 +21341,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "luohua.im", true },
{ "luongvu.com", true },
{ "lupinencyclopedia.com", true },
+ { "lupinenorthamerica.com", true },
{ "luso-livros.net", true },
{ "lusteniny.cz", false },
{ "lustige-zitate.com", true },
@@ -21044,7 +21359,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "luuppi.fi", true },
{ "luvare.com", true },
{ "luvbridal.com.au", true },
+ { "luxcraft.eng.br", true },
{ "luxescreenprotector.nl", true },
+ { "luxofit.de", true },
{ "luxsci.com", true },
{ "luxurynsight.net", true },
{ "luxurytimepieces.net", true },
@@ -21058,10 +21375,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "luzfaltex.com", true },
{ "lv.search.yahoo.com", false },
{ "lv0.it", true },
+ { "lv5.top", true },
{ "lvmoo.com", true },
{ "lvrsystems.com", true },
{ "lw-addons.net", true },
{ "lwhate.com", true },
+ { "lwl.moe", true },
{ "lwl12.com", true },
{ "lxd.cc", true },
{ "lxd.pm", true },
@@ -21089,9 +21408,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "lyricfm.ie", true },
{ "lys.ch", true },
{ "lyst.co.uk", true },
+ { "lyukaacom.ru", true },
{ "lyuly.com", true },
{ "lyx.dk", true },
- { "lz.sb", true },
+ { "lzh.one", true },
+ { "lzwc.nl", true },
{ "m-22.com", true },
{ "m-chemical.com.hk", true },
{ "m-edmondson.co.uk", true },
@@ -21100,7 +21421,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "m-mail.fr", true },
{ "m-orthodontic.com", true },
{ "m-ses.fr", true },
- { "m-warrior.tk", true },
{ "m.facebook.com", true },
{ "m.mail.ru", true },
{ "m.me", true },
@@ -21119,9 +21439,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "maaya.jp", true },
{ "maayogashram.com", true },
{ "mabankonline.com", true },
- { "mabulledu.net", true },
{ "mac-i-tea.ch", true },
- { "mac-world.pl", true },
+ { "mac.biz.tr", true },
{ "mac1.net", true },
{ "macaw.nl", true },
{ "macaws.org", true },
@@ -21156,10 +21475,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "macosxfilerecovery.com", true },
{ "macoun.de", true },
{ "macros.co.jp", true },
- { "macstore.pe", true },
{ "mactools.com.co", true },
+ { "mad.ninja", true },
{ "madae.nl", true },
- { "madandpissedoff.com", true },
{ "madars.org", false },
{ "madbin.com", true },
{ "madbouncycastles.co.uk", true },
@@ -21171,7 +21489,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "made-in-earth.co.jp", true },
{ "madebydusk.com", true },
{ "madebyshore.com", true },
- { "madeglobal.com", true },
{ "madeinchezmoi.net", true },
{ "madeinstudio3.com", true },
{ "madeitwor.se", true },
@@ -21183,8 +21500,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "madirc.net", true },
{ "madmar.ee", true },
{ "madoka.nu", true },
- { "madokami.net", true },
- { "madpeople.net", true },
{ "madreacqua.org", true },
{ "madridartcollection.com", true },
{ "madtec.de", true },
@@ -21192,6 +21507,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mae-berlinistanbul.com", true },
{ "maedchenflohmarkt.at", true },
{ "maedchenflohmarkt.de", true },
+ { "maeln.com", true },
{ "maelstrom-fury.eu", true },
{ "maelstrom.ninja", true },
{ "maeplasticsurgery.com", true },
@@ -21230,7 +21546,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "magicspaceninjapirates.de", true },
{ "magictable.com", true },
{ "magicvodi.at", true },
+ { "magieamour.com", true },
{ "magilio.com", true },
+ { "magnacarebroker.com", true },
{ "magnatronic.com.br", true },
{ "magneticattraction.com.au", true },
{ "magnetpass.uk", true },
@@ -21240,11 +21558,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "magnoliadoulas.com", true },
{ "magnoliastrong.com", true },
{ "magonote-nk.com", true },
+ { "magu.kz", true },
{ "maguire.email", true },
{ "magwin.co.uk", true },
{ "mahai.me", true },
{ "mahatmayoga.org", true },
{ "mahefa.co.uk", true },
+ { "mahjong-navi.com", true },
{ "mahjong.org", true },
{ "mahrer.net", true },
{ "maiaimobiliare.ro", true },
@@ -21252,6 +21572,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "maiebanatulfruncea.com", true },
{ "maijia800.com", true },
{ "maikolfish.it", true },
+ { "mail-de.jp", true },
{ "mail-rotter.de", true },
{ "mail-settings.google.com", true },
{ "mail.com", true },
@@ -21271,7 +21592,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mailmag.net", false },
{ "mailpenny.com", true },
{ "mailto.space", true },
- { "mailum.org", true },
+ { "mailum.org", false },
{ "mainechiro.com", true },
{ "mainframeserver.space", true },
{ "mainlined.org", true },
@@ -21280,6 +21601,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mainzelmaennchen.net", true },
{ "maioresemelhores.com", true },
{ "maisgasolina.com", true },
+ { "maison-haimard.fr", true },
{ "maisondoree.be", true },
{ "maisonpaulmier.fr", true },
{ "maispa.com", true },
@@ -21296,22 +21618,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "majkassab.net", true },
{ "majkassab.org", true },
{ "majkl.me", true },
- { "majkl.xyz", true },
- { "majkl578.cz", true },
{ "majkyto.cz", true },
+ { "majolka.com", true },
{ "makaleci.com", true },
+ { "makalu.me", true },
{ "make-your-own-song.com", true },
{ "makeaboldmove.com", true },
{ "makedin.net", true },
{ "makem-bounce.co.uk", true },
- { "makemejob.com", true },
{ "makenaiyo-fx.com", true },
{ "makera.ga", true },
{ "makersatwork.com", true },
{ "maketheneighborsjealous.com", true },
{ "makeurbiz.com", true },
- { "makeyourlaws.org", true },
+ { "maki-chan.de", true },
{ "makinen.ru", true },
+ { "makino.games", true },
{ "makkusu.photo", true },
{ "makowitz.cz", true },
{ "maktoob.search.yahoo.com", false },
@@ -21337,7 +21659,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "malinator.net", false },
{ "malinheadview.ie", true },
{ "maljaars-fotografie.nl", true },
- { "malkaso.com.ua", true },
{ "mall.cz", true },
{ "mall.hr", true },
{ "mall.hu", true },
@@ -21345,7 +21666,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mall.sk", true },
{ "mallach.net", true },
{ "mallhonda.com", true },
- { "mallner.me", true },
{ "mallonline.com.br", true },
{ "malmoesport.se", true },
{ "malnex.de", true },
@@ -21357,14 +21677,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "malware.watch", true },
{ "malwareinvestigator.gov", true },
{ "malwarekillers.com", true },
+ { "malwaretips.com", false },
{ "malwareverse.us", true },
{ "maly.cz", true },
- { "maly.io", false },
{ "malyshata.com", true },
{ "malysvet.net", true },
{ "mamaasia.info", true },
{ "mamadea.be", true },
- { "mamadoma.com.ua", true },
{ "mamafit.club", true },
{ "mamamoet.ru", true },
{ "mamanecesitaungintonic.com", true },
@@ -21375,16 +21694,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mammooc.org", true },
{ "mamospienas.lt", true },
{ "mamot.fr", false },
- { "mamout.xyz", true },
{ "mamuko.nl", true },
- { "man3s.jp", true },
- { "manaboutahor.se", false },
+ { "man3s.jp", false },
{ "manach.net", true },
{ "manage.cm", true },
{ "manage4all.de", true },
{ "manageathome.co.uk", true },
{ "management-companie.ro", true },
- { "management-ethics.com", true },
{ "managementboek.nl", true },
{ "managementfeedback.com", true },
{ "manageprojects.com", false },
@@ -21412,9 +21728,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "maniorpedi.com", true },
{ "maniosglass.gr", true },
{ "manipil.ch", true },
+ { "maniw.com", true },
{ "manja-und-martin.de", true },
{ "manjaro.ru", true },
{ "mankans.com", true },
+ { "manneguiden.no", true },
{ "mannheimbloggt.tk", true },
{ "manns-solutions.co.uk", true },
{ "mannschafft.ch", true },
@@ -21425,11 +21743,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mansdell.net", true },
{ "mansfeld.pl", true },
{ "mansiontech.cn", true },
+ { "manski.net", true },
{ "mantabiofuel.com", true },
{ "mantor.org", false },
+ { "mantra.pictures", true },
+ { "manuall.co.uk", true },
{ "manuall.de", true },
+ { "manuall.fr", true },
{ "manuall.info.tr", true },
+ { "manuall.it", true },
{ "manuall.ro", true },
+ { "manuall.se", true },
{ "manualscollection.com", true },
{ "manuel-herrmann.de", true },
{ "manuel-schefczyk.de", true },
@@ -21438,13 +21762,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "manueldopheide.com", true },
{ "manueli.de", true },
{ "manuelpinto.in", false },
- { "manufacturing.gov", true },
{ "manufacturingusa.com", true },
{ "manuscript.com", true },
{ "manuscriptlink.com", true },
{ "manutd.org.np", true },
{ "manuth.life", true },
- { "manutrol.com.br", true },
{ "manwithavan.co.uk", true },
{ "manyetikboya.com", true },
{ "manyiu.com", true },
@@ -21460,11 +21782,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "maozedong.red", true },
{ "map4erfurt.de", true },
{ "map4jena.de", true },
+ { "mapasmundi.com.br", true },
{ "mapblender.com", true },
{ "mapeo.io", true },
{ "maplanetebeaute.fr", true },
{ "mapletime.com", true },
+ { "maps.net", true },
{ "mapservices.nl", true },
+ { "mapstack.org", true },
{ "maquettage.com", true },
{ "maquillage-permanent-tatoo.com", true },
{ "maquinariaspesadas.org", true },
@@ -21477,6 +21802,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "marc-schlagenhauf.de", true },
{ "marcaixala.me", true },
{ "marcaudefroy.com", true },
+ { "marcbeije.com", true },
+ { "marcberndtgen.de", true },
+ { "marcceleiro.com", true },
{ "marceau.ovh", true },
{ "marcel-preuss.de", true },
{ "marcel-veronetzki.de", true },
@@ -21486,28 +21814,28 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "marcelinofranchini.info", true },
{ "marcelinofranchini.net", true },
{ "marcelinofranchini.org", true },
+ { "marcelkooiman.com", true },
{ "marcelpreuss.de", true },
+ { "marcelsiegert.com", true },
{ "marcelwaldvogel.ch", true },
- { "marcelwiedemeier.com", true },
{ "marcelwolf.coach", true },
- { "marcgoertz.de", false },
+ { "marcgoertz.de", true },
{ "marche-contre-monsanto.ch", true },
+ { "marchukov.com", true },
+ { "marchwj.pl", true },
{ "marciaimportados.com.br", true },
{ "marcianoandtopazio.com", true },
{ "marclay.co.uk", true },
{ "marco-goltz.de", true },
{ "marco-hegenberg.net", true },
- { "marco-kretz.de", true },
{ "marco-polo-reisen.com", true },
{ "marcocasoni.com", true },
{ "marcohager.de", true },
{ "marcoherten.com", true },
{ "marcuskoh.com", true },
- { "marcusserver.synology.me", true },
{ "marcusstafford.com", true },
{ "marechal-company.com", true },
{ "marek.su", true },
- { "mareklecian.cz", true },
{ "marelijah.org", true },
{ "margagriesser.de", true },
{ "margan.ch", true },
@@ -21515,7 +21843,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "margo-co.ch", true },
{ "margo.ml", true },
{ "margotlondon.co.uk", true },
- { "mariacristinadoces.com.br", true },
+ { "marguerite-maison.fr", true },
{ "mariage-photo.ch", true },
{ "marianatherapy.com", true },
{ "marianelaisashi.com", true },
@@ -21537,6 +21865,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "marinbusinesscenter.ch", true },
{ "marine.gov", true },
{ "marinekaplama.com", true },
+ { "marinela.com.mx", false },
+ { "marinelausa.com", false },
{ "marines-shop.com", true },
{ "mario.party", false },
{ "marioabela.com", true },
@@ -21550,11 +21880,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "marjoleindens.be", true },
{ "marjoriecarvalho.com.br", true },
{ "mark-semmler.de", true },
+ { "mark1998.com", true },
{ "markaconnor.com", true },
{ "markantoffice.com", true },
{ "markbiesheuvel.nl", true },
{ "markdain.net", true },
{ "markdescande.com", true },
+ { "markel.com.es", true },
{ "markepps.com", true },
{ "market.android.com", true },
{ "marketespace.fr", false },
@@ -21573,15 +21905,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "markhaehnel.de", true },
{ "markhenrick.site", true },
{ "markholden.guru", true },
+ { "markhoodphoto.com", true },
{ "markido.com", true },
{ "markitzeroday.com", true },
{ "markkirkforillinois.com", true },
{ "markkirkforsenate.com", true },
- { "marklauman.ca", true },
{ "markoh.co.uk", true },
{ "markom.rs", true },
{ "markprof.ru", true },
- { "markri.nl", false },
+ { "markri.nl", true },
+ { "markridgwell.co.uk", true },
{ "markridgwell.com", true },
{ "markridgwellcom.appspot.com", true },
{ "markscastles.co.uk", true },
@@ -21601,8 +21934,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "markusehrlicher.de", true },
{ "markusgran.de", true },
{ "markuskeppeler.no-ip.biz", true },
- { "markusueberallassetmanagement.de", true },
- { "markusueberallconsulting.de", true },
{ "marl.fr", true },
{ "marloncommunications.com", true },
{ "marlonlosurdopictures.com", true },
@@ -21617,8 +21948,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "marocmail.ma", true },
{ "marotero.com", true },
{ "marpa-wohnen.de", true },
- { "marqperso.ch", true },
- { "marquepersonnelle.ch", true },
{ "marqueswines.co.uk", true },
{ "marrai.de", true },
{ "marriage-shrine.jp", true },
@@ -21650,12 +21979,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "martingansler.de", true },
{ "martinkus.eu", true },
{ "martinmuc.de", true },
+ { "martinreed.net", true },
{ "martinvillalba.com", true },
{ "martinvillalba.com.ar", true },
{ "martinvillalba.info", true },
{ "martinvillalba.net", true },
{ "martinvillalba.org", true },
{ "martonmihaly.hu", true },
+ { "martynhare.co.uk", true },
+ { "martynhare.uk", true },
{ "maru-life.com", true },
{ "maruhoi.com", true },
{ "marustat.ru", true },
@@ -21670,11 +22002,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "masarik.sh", true },
{ "masatotaniguchi.jp", true },
{ "masayahost.com", true },
- { "masaze-hanka.cz", true },
{ "mascosolutions.com", true },
{ "masdillah.com", true },
{ "maservant.net", true },
- { "mashandco.it", true },
{ "mashandco.tv", true },
{ "masiniunelte.store.ro", true },
{ "masiul.is", true },
@@ -21691,6 +22021,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "massdrop.com", true },
{ "masse.org", true },
{ "massflix.com", true },
+ { "massfone.com", true },
{ "masshiro.blog", true },
{ "massive.tk", true },
{ "massoni.pl", true },
@@ -21712,13 +22043,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "masterplc.com", true },
{ "masters.black", true },
{ "mastersquirrel.xyz", true },
- { "mastersthesiswriting.com", true },
{ "masterstuff.de", true },
{ "mastiffingles.com.br", true },
{ "mastodon.at", true },
{ "mastodon.host", true },
{ "mastodon.rocks", true },
- { "mastodon.top", true },
{ "mat.tt", true },
{ "matanz.de", true },
{ "matatabimix.com", true },
@@ -21727,6 +22056,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "matchatea24.com", true },
{ "matchboxdesigngroup.com", true },
{ "matchneedle.com", true },
+ { "matejgroma.com", true },
{ "matel.org", true },
{ "materiaischiquinho.com.br", true },
{ "material-ui.com", true },
@@ -21734,6 +22064,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "materialism.com", true },
{ "materialyinzynierskie.pl", true },
{ "maternum.com", true },
+ { "mateuszchyla.pl", true },
{ "math.hamburg", true },
{ "mathalexservice.info", true },
{ "mathematik.rocks", true },
@@ -21743,6 +22074,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mathias.is", true },
{ "mathiasbynens.be", true },
{ "mathiasgarbe.de", true },
+ { "mathiaswagner.org", true },
{ "mathieuguimond.com", true },
{ "mathieui.net", true },
{ "mathis.com.tr", true },
@@ -21757,6 +22089,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "matjaz.it", true },
{ "matlss.com", true },
{ "matmessages.com", true },
+ { "matok.me.uk", true },
{ "matomeathena.com", true },
{ "matoutepetiteboutique.com", true },
{ "matridiana.com", true },
@@ -21766,6 +22099,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "matrixmedia.ro", true },
{ "matrixreq.com", true },
{ "matsu-semi.com", true },
+ { "matsu-walk.com", true },
{ "matt-brooks.com", true },
{ "matt-royal.gr", true },
{ "matt.re", true },
@@ -21783,8 +22117,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mattfin.ch", true },
{ "mattforster.ca", true },
{ "matthecat.com", true },
+ { "matthewchapman.co.uk", true },
{ "matthewfells.com", true },
{ "matthewgallagher.co.uk", true },
+ { "matthewgrow.com", true },
+ { "matthewj.ca", true },
{ "matthewkenny.co.uk", true },
{ "matthewohare.com", true },
{ "matthewsetter.com", true },
@@ -21800,6 +22137,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "matthijssen.info", true },
{ "mattia98.org", true },
{ "mattiascibien.net", true },
+ { "mattlaks.com", true },
{ "mattli.us", true },
{ "mattmccutchen.net", true },
{ "mattmcshane.com", true },
@@ -21807,12 +22145,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mattwservices.co.uk", true },
{ "matviet.vn", true },
{ "matway.com", true },
+ { "matway.net", true },
{ "matze.co", true },
{ "mauerwerkstag.info", true },
{ "mauldincookfence.com", true },
{ "mauran.me", true },
{ "maurice-walker.com", true },
{ "mauricedb.nl", true },
+ { "maurovacca.com", true },
{ "maury-moteurs.com", true },
{ "mavenclinic.com", true },
{ "mavensecurity.com", true },
@@ -21839,8 +22179,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "maxdev72.freeboxos.fr", true },
{ "maxfox.me", true },
{ "maxhamon.ovh", true },
- { "maxhoechtl.at", true },
- { "maxicore.co.za", true },
{ "maximdeboiserie.be", true },
{ "maximdens.be", true },
{ "maximeferon.fr", true },
@@ -21855,6 +22193,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "maxmilton.com", true },
{ "maxp.info", true },
{ "maxpl0it.com", true },
+ { "maxr1998.de", true },
{ "maxrandolph.com", true },
{ "maxtruxa.com", true },
{ "maxundlara.at", true },
@@ -21870,7 +22209,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mayerbrownllz.com", true },
{ "mayomarquees.com", true },
{ "mayopartyhire.com", true },
- { "mayoristassexshop.com", true },
{ "maypolevilla.co.uk", true },
{ "mayrhofer.eu.org", true },
{ "mazda-mps.de", true },
@@ -21881,13 +22219,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mazternet.ru", true },
{ "mazzotta.me", true },
{ "mb-is.info", true },
+ { "mb300sd.com", true },
+ { "mb300sd.net", true },
{ "mbaasy.com", true },
{ "mbaestlein.de", true },
{ "mbainflatables.co.uk", true },
{ "mbardot.com", true },
{ "mbasic.facebook.com", false },
{ "mbcars.be", true },
- { "mbda.gov", true },
+ { "mbda.gov", false },
{ "mbeo.ch", true },
{ "mbilker.us", true },
{ "mbinf.de", false },
@@ -21905,7 +22245,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mc4free.cc", true },
{ "mcatnnlo.org", true },
{ "mccoolesredlioninn.com", true },
+ { "mccordsvillelocksmith.com", true },
{ "mccrackon.com", true },
+ { "mcculloughjchris.com", true },
{ "mcdermottautomotive.com", true },
{ "mcdona1d.me", true },
{ "mcdonalds.be", true },
@@ -21920,7 +22262,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mcgaccountancy.co.uk", true },
{ "mcgarderen.nl", true },
{ "mcgovernance.com", true },
- { "mchan.us", true },
+ { "mchel.net", true },
{ "mchristopher.com", true },
{ "mcinterface.de", true },
{ "mcivor.me", true },
@@ -21935,22 +22277,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mcmillanskiclub.com.au", true },
{ "mcneill.io", true },
{ "mcnext.net", true },
+ { "mcon.se", true },
{ "mcpaoffice.com", true },
- { "mcpart.land", true },
{ "mcplayman.de", true },
{ "mcpro.games", true },
{ "mcprocdn.com", true },
- { "mcqyy.com", true },
{ "mcrn.jp", true },
{ "mcsinflatables.co.uk", true },
+ { "mcsniper.co", true },
{ "mcsrvstat.us", true },
- { "mctherealm.net", true },
{ "mctools.org", true },
+ { "mcuuid.net", true },
+ { "mcversions.net", true },
{ "mcynews.com", true },
{ "mcyukon.com", true },
{ "md-clinica.com.ua", true },
{ "md5file.com", true },
{ "md5hashing.net", true },
+ { "mdazo.net", true },
{ "mdbouncycastlehirelondon.co.uk", true },
{ "mdcloudpracticesolutions.com", true },
{ "mdcloudps.com", true },
@@ -21959,12 +22303,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mdf-bis.com", true },
{ "mdg-online.de", true },
{ "mdiv.pl", true },
+ { "mdkr.nl", true },
{ "mdlayher.com", true },
{ "mdma.net", true },
{ "mdmed.clinic", true },
{ "mdoering.de", true },
{ "mdosch.de", true },
{ "mdpraha.cz", true },
+ { "mds-paris.com", true },
{ "mdsave.com", true },
{ "mdx.no", true },
{ "mdxdave.de", true },
@@ -21974,14 +22320,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "me-groups.com", true },
{ "me.net.nz", true },
{ "meadowfen.farm", true },
- { "meadowviewfarms.org", true },
{ "mealgoo.com", true },
{ "meamod.com", false },
- { "meanevo.com", true },
{ "meany.xyz", true },
{ "meap.xyz", true },
{ "measureyourpenis.today", true },
{ "meat.org.uk", true },
+ { "mebaneattorney.com", true },
+ { "mebanesteakhouse.com", true },
{ "mecanicoautomotriz.org", true },
{ "mechanus.io", true },
{ "mechmk1.me", true },
@@ -21999,7 +22345,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "medhy.fr", true },
{ "medi-link.co.il", true },
{ "medi.com.br", true },
- { "media-courses.com", false },
{ "media-credit.eu", true },
{ "media-instance.ru", true },
{ "media-library.co.uk", true },
@@ -22007,6 +22352,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "media-serwis.com", true },
{ "mediaarea.net", true },
{ "mediablaster.com", true },
+ { "mediabm.jp", true },
{ "mediaburst.co.uk", true },
{ "mediadex.be", true },
{ "mediaexpert.fr", true },
@@ -22045,20 +22391,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "medinsider.ch", true },
{ "medinsider.li", true },
{ "medireport.fr", true },
+ { "meditel.nl", true },
{ "medium.com", true },
- { "mediumraw.org", true },
+ { "medja.net", true },
{ "medlineplus.gov", true },
+ { "medmarkt24.com", true },
{ "medo64.com", true },
{ "medovea.ru", true },
{ "medpeer.jp", true },
{ "medpics.com", true },
- { "medpot.net", true },
{ "medschat.com", true },
{ "medtalents.ch", true },
{ "medtankers.management", true },
{ "medtehnika.ua", true },
{ "medusa.wtf", true },
{ "meduza.io", true },
+ { "medvedikorenka.cz", true },
{ "medvet.com.es", true },
{ "medwaybouncycastlehire.co.uk", true },
{ "medyotan.ga", true },
@@ -22081,6 +22429,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "meeusen-usedcars.be", true },
{ "meeztertom.nl", true },
{ "meg-a-bounce.co.uk", true },
+ { "mega-aukcion.ru", true },
{ "mega-byte.nl", true },
{ "mega-feeling.de", true },
{ "mega.co.nz", true },
@@ -22103,7 +22452,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "megaplonk.com", true },
{ "megarex.jp", true },
{ "megasslstore.com", true },
- { "megasystem.cl", true },
+ { "megauction.tk", true },
{ "megaxchange.com", true },
{ "megumico.net", true },
{ "megustariasaber.com", true },
@@ -22163,6 +22512,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "melitopol.co.ua", true },
{ "melnessgroup.com", true },
{ "melnikov.ch", true },
+ { "melodicprogressivehouse.com", true },
{ "melodiouscode.co.uk", true },
{ "melodiouscode.com", true },
{ "melodiouscode.net", true },
@@ -22185,7 +22535,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "memfrob.org", true },
{ "memind.net", true },
{ "memiux.com", true },
- { "memo-linux.com", true },
{ "memo.ee", true },
{ "memoire-resistance-ariege.fr", true },
{ "memorycards.ie", true },
@@ -22219,11 +22568,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mentz.info", true },
{ "menu.fyi", true },
{ "menudieta.com", true },
- { "menuel.me", true },
{ "menuonlineordering.com", true },
{ "menzel-motors.com", true },
{ "menzietti.it", true },
- { "meo.de", true },
{ "mephedrone.org", true },
{ "mer.gd", true },
{ "meransuedtirol.com", true },
@@ -22236,6 +22583,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mercedes-benz.io", true },
{ "mercedes-ig.de", true },
{ "mercedespartscenter.com", true },
+ { "merchant-automotive.com", true },
{ "mercier-auto.com", true },
{ "mercier-cars.co.uk", true },
{ "mercury.photo", true },
@@ -22246,12 +22594,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "merenita.eu", true },
{ "merenita.net", true },
{ "merenita.nl", true },
+ { "meridianmetals.com", true },
{ "meridianstore.com.br", true },
{ "merkel.me", true },
{ "merlet.eu", true },
- { "merloat.club", true },
+ { "merlinsoap.com", true },
+ { "merloat.club", false },
{ "merojob.com", true },
{ "meronberry.jp", true },
+ { "merson.org", true },
+ { "merson.tv", true },
{ "mertak.cz", true },
{ "mertarauh.com", true },
{ "mertcangokgoz.com", true },
@@ -22289,6 +22641,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "metanic.services", true },
{ "metanodo.com", true },
{ "metapeen.nl", true },
+ { "metaregistrar.com", true },
{ "metasquare.com.au", true },
{ "metasquare.nyc", true },
{ "metaword.com", true },
@@ -22322,9 +22675,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "metropop.ch", true },
{ "metsasta.com", true },
{ "mettekopp.dk", true },
- { "meu-smartphone.com", true },
{ "meu-solutions.com", true },
{ "meujeitodigital.com.br", true },
+ { "meurisse.org", true },
{ "mevo.xyz", true },
{ "mevs.cz", true },
{ "mexican.dating", true },
@@ -22355,12 +22708,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mi-so-ji.com", true },
{ "mi80.com", true },
{ "miagexport.com", true },
- { "miamicityballet.org", true },
{ "miaonagemi.com", true },
{ "miaoubox.com", true },
{ "miaowo.org", true },
{ "miasarafina.de", true },
{ "miboulot.com", true },
+ { "mibuiin.com", true },
+ { "micado-software.com", true },
{ "micaiahparker.com", true },
{ "micalodeal.ch", true },
{ "micasamgmt.com", false },
@@ -22368,11 +22722,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "michael-schefczyk.de", true },
{ "michael-steinhauer.eu", true },
{ "michael.band", true },
+ { "michaelasawyer.com", true },
{ "michaelband.co", true },
{ "michaelband.com", true },
{ "michaeleichorn.com", true },
{ "michaelhrehor.com", true },
{ "michaeliscorp.com", true },
+ { "michaelismold.com", true },
{ "michaelizquierdo.com", true },
{ "michaeljdennis.com", true },
{ "michaelkuchta.me", true },
@@ -22380,7 +22736,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "michaelpelletterie.it", true },
{ "michaelpfrommer.de", true },
{ "michaelpfrommer.pub", true },
- { "michaels-homepage-service.de", true },
{ "michaelschmidt.ch", true },
{ "michaelschubert.com", true },
{ "michaelsnoeren.nl", true },
@@ -22414,11 +22769,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "microdots.de", true },
{ "microlinks.org", true },
{ "microlog.org", true },
+ { "micromata.de", true },
{ "microsoftaffiliates.azurewebsites.net", true },
{ "microvb.com", true },
{ "midair.io", true },
{ "midasjewellery.com.au", true },
- { "midgawash.com", true },
{ "midkam.ca", true },
{ "midlandgate.de", true },
{ "midlandleisuresales.co.uk", true },
@@ -22426,13 +22781,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "midlandsphotobooths.co.uk", true },
{ "midlgx.com", true },
{ "midnight-visions.de", true },
+ { "midnightmango.co.uk", true },
+ { "midnightmango.de", true },
{ "midnightmechanism.com", true },
{ "midstatebasement.com", true },
- { "midterm.us", true },
{ "midtowndentistry.com", true },
{ "midwestbloggers.org", true },
{ "midweststructuralrepair.com", true },
{ "miegl.com", true },
+ { "miembarcacion.com", true },
{ "miemus.eu", true },
{ "mietwohnungen-vermietung.com", true },
{ "mieuxgrandir.ch", true },
@@ -22453,14 +22810,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mijcorijneveld.nl", true },
{ "mijn-financien.be", true },
{ "mijnavg.eu", true },
- { "mijndiad.nl", true },
{ "mijnetickets.nl", false },
{ "mijnetz.nl", true },
{ "mijnkerstkaarten.be", true },
{ "mijnreisoverzicht.nl", true },
{ "mijnsite.ovh", true },
{ "mijnstembureau.nl", true },
- { "mijntransacties.nl", true },
{ "mika.moe", true },
{ "mikadoe.nl", true },
{ "mikakalathil.ca", true },
@@ -22477,18 +22832,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mikeguy.co.uk", true },
{ "mikehamburg.com", true },
{ "mikehilldesign.co.uk", true },
- { "mikerichards.photography", true },
+ { "mikerichards.photography", false },
{ "miketabor.com", true },
{ "miketheuer.com", true },
{ "mikevesch.com", true },
{ "mikewest.org", true },
+ { "mikewillia.ms", true },
{ "mikewritesstuff.com", true },
- { "mikeybailey.org", true },
+ { "mikhirev.ru", true },
{ "mikhlevich.ru", true },
{ "miki-boras.de", true },
{ "miki.it", true },
{ "mikkelscheike.com", true },
{ "mikkelvej.dk", true },
+ { "mikkonen.bio", true },
{ "miklcct.com", true },
{ "miknight.com", true },
{ "mikonmaa.fi", true },
@@ -22511,20 +22868,30 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "milesapart.dating", true },
{ "milhoazul.com.br", true },
{ "milionshop.sk", true },
+ { "milkandcookies.ca", true },
{ "milkingit.co.uk", true },
+ { "milktea.info", true },
{ "millanova.wedding", false },
{ "milldyke.com", true },
{ "milldyke.nl", true },
{ "millefleurs.eu", true },
{ "millennium-thisiswhoweare.net", true },
+ { "millenniumweb.com", false },
{ "millhousenchurch.com", true },
- { "millibitcoin.jp", true },
{ "millionairegames.com", true },
+ { "millions57.com", true },
+ { "millions58.com", true },
+ { "millions60.com", true },
+ { "millions61.com", true },
+ { "millions62.com", true },
+ { "millions63.com", true },
{ "millistream.com", true },
+ { "milsonhypnotherapyservices.com", true },
{ "mim.properties", true },
{ "mimemo.io", true },
{ "mimeo.digital", true },
{ "mimithedog.com", true },
+ { "mimobile.website", true },
{ "mimocad.io", true },
{ "mimovrste.com", true },
{ "min-sky.no", true },
@@ -22537,8 +22904,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mind-box.ch", true },
{ "mind-hochschul-netzwerk.de", true },
{ "mind-moves.es", true },
+ { "mindbodycontinuum.com", true },
{ "mindbodytherapymn.com", true },
- { "mindcell.no", true },
{ "mindcoding.ro", true },
{ "mindercasso.nl", true },
{ "mindfactory.de", true },
@@ -22566,10 +22933,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "minerstat.com", true },
{ "minerva2015.it", true },
{ "minesouls.fr", true },
+ { "minetracker.dk", true },
{ "minez-nightswatch.com", false },
{ "minf3-games.de", true },
{ "mingky.net", true },
- { "mingkyaa.com", true },
+ { "mingming.info", true },
{ "mingram.net", true },
{ "mingwah.ch", true },
{ "mini2.fi", true },
@@ -22598,7 +22966,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "minpingvin.dk", true },
{ "minschuns.ch", true },
{ "mintclass.com", true },
- { "mintea-noua.ro", true },
{ "mintosherbs.com", true },
{ "mintrak2.com", true },
{ "minu.link", true },
@@ -22620,8 +22987,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mirfire.com", true },
{ "mirjamderijk.nl", true },
{ "mirkofranz.de", true },
- { "mirodasilva.be", true },
{ "mironet.cz", true },
+ { "mirrorbot.ga", true },
{ "mirrorsedgearchive.de", true },
{ "mirshak.com", true },
{ "mirtes.cz", true },
@@ -22630,21 +22997,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "misanci.cz", true },
{ "misclick.nl", true },
{ "mishkovskyi.net", true },
+ { "misinstrumentos.com", true },
{ "miskatonic.org", true },
{ "misoji-resist.com", true },
{ "misol.kr", true },
- { "misrv.com", true },
{ "miss-inventory.co.uk", true },
{ "miss-platinum.net", true },
{ "miss.com.tw", true },
{ "missdream.org", true },
{ "misseguf.dk", true },
+ { "missevent.pl", true },
{ "missguidedus.com", true },
{ "mission-orange.de", true },
{ "missionsgemeinde.de", true },
{ "missip.nl", true },
{ "missjoias.com.br", true },
- { "misskey.xyz", false },
+ { "misskey.jp", true },
+ { "misskey.xyz", true },
{ "missoy.me", true },
{ "misssex.de", true },
{ "missualready.com", true },
@@ -22655,7 +23024,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mistybox.com", true },
{ "misupport.dk", true },
{ "misura.re", true },
- { "misuzu.moe", true },
{ "mit-uns.org", true },
{ "mita.me", true },
{ "mitabu.net", true },
@@ -22668,6 +23036,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mitnetz-gas.de", true },
{ "mitnetz-strom.de", true },
{ "mitrax.com.br", true },
+ { "mitre10.com.au", true },
{ "mitrecaasd.org", true },
{ "mitremai.org", true },
{ "mitrostudios.com", true },
@@ -22688,6 +23057,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mivzakim.net", true },
{ "mivzakim.org", true },
{ "mivzakim.tv", true },
+ { "mivzaklive.co.il", true },
{ "miweb.cr", false },
{ "mixinglight.com", true },
{ "mixnshake.com", true },
@@ -22699,6 +23069,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "miyugirls.com", true },
{ "mizipack.com", true },
{ "mizque.ch", true },
+ { "mizu.coffee", true },
{ "mizuho-trade.net", true },
{ "mizumax.me", true },
{ "mj420.com", true },
@@ -22721,9 +23092,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mkd.mk", true },
{ "mkes.com", true },
{ "mkg-chirurgie-bruchsal.de", true },
- { "mkg-palais-hanau.de", true },
{ "mkg-scherer.de", true },
- { "mkg-wiebelskirchen.de", true },
{ "mkhsoft.eu", true },
{ "mkimage.com", true },
{ "mkk.de", true },
@@ -22736,16 +23105,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mkse.com", true },
{ "mkset.ru", true },
{ "mktdigital.info", true },
+ { "mktemp.org", true },
{ "mkuznets.com", true },
{ "mlarte.com", true },
- { "mlcambiental.com.br", true },
{ "mlcnfriends.com", true },
{ "mlemay.com", true },
{ "mlm-worldwide.de", true },
{ "mlmjam.com", true },
{ "mlp.ee", true },
{ "mlpvector.club", true },
- { "mlsrv.de", true },
{ "mlundberg.se", true },
{ "mlvbphotography.com", true },
{ "mlytics.com", true },
@@ -22753,10 +23121,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mm404.com", true },
{ "mma-acareporting.com", true },
{ "mmalisz.com", true },
- { "mmaps.ddns.net", true },
{ "mmarnitz.de", true },
{ "mmbb.org", true },
- { "mmcc.pe", true },
{ "mmin.us", false },
{ "mmmarco.com", true },
{ "mmogah.com", true },
@@ -22773,6 +23139,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mnguyen.io", true },
{ "mnitro.com", true },
{ "mnium.de", true },
+ { "mnml.art", true },
+ { "mnml.jp", true },
{ "mnnknz.de", true },
{ "mnsure.org", true },
{ "mnt-tech.fr", true },
@@ -22782,10 +23150,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mo2021.de", true },
{ "mo3.club", true },
{ "moa.moe", true },
- { "moas.design", true },
{ "mobag.ru", true },
{ "mobal.com", true },
{ "mobidea.com", true },
+ { "mobifinans.ru", true },
{ "mobil-bei-uns.de", true },
{ "mobila-chisinau.md", true },
{ "mobilcom-debitel-empfehlen.de", true },
@@ -22825,15 +23193,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "modafinil.wiki", true },
{ "modafo.com", true },
{ "modalogi.com", true },
- { "modalrakyat.com", true },
- { "modalrakyat.id", true },
{ "modcasts.video", true },
{ "modcentral.pw", true },
{ "modding-forum.com", true },
{ "modding-welt.com", true },
{ "mode-hautnah.de", true },
{ "mode-individuell.de", true },
- { "modecaso.com", true },
{ "modehaus-marionk.de", true },
{ "modelcase.co.jp", false },
{ "modelclub-draveil.eu", true },
@@ -22848,19 +23213,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "moderatorenpool.org", true },
{ "modernapprenticeships.org", true },
{ "moderncoinmart.com", true },
- { "moderntld.net", true },
{ "modifiedmind.com", true },
{ "modistry.com", true },
{ "modistryusercontent.com", true },
{ "modmountain.com", true },
{ "modosaude.com.br", true },
{ "module.market", true },
+ { "modulex-gmbh.de", true },
{ "moechel.com", true },
{ "moefactory.com", true },
- { "moehrke.cc", true },
{ "moeking.me", true },
{ "moellers.systems", true },
{ "moetrack.com", true },
+ { "moeyoo.net", true },
+ { "moeyun.net", true },
{ "mofohome.dyndns.org", true },
{ "moha-swiss.com", true },
{ "mohanmekap.com", true },
@@ -22876,6 +23242,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mojeco2.cz", true },
{ "mojefedora.cz", true },
{ "mojilitygroup.com", true },
+ { "mojizuri.com", true },
{ "mojnet.eu", true },
{ "mojnet.net", true },
{ "mojoco.co.za", true },
@@ -22890,12 +23257,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "molecularbiosystems.org", true },
{ "molinero.xyz", true },
{ "mollaretsmeningitis.org", true },
- { "molokai.org", true },
{ "molti.hu", true },
{ "molun.net", false },
{ "molunerfinn.com", true },
{ "molwick.com", true },
- { "momento.co.id", true },
{ "momentumdash.com", true },
{ "momirfarooq.com", true },
{ "momjoyas.com", true },
@@ -22912,7 +23277,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "monaco-automaten.de", true },
{ "monad.io", true },
{ "monakasatmasr.com", true },
- { "monalisa.wtf", true },
{ "monalyse.com", true },
{ "monarchcleanersnc.com", true },
{ "monbudget.org", true },
@@ -22922,7 +23286,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mondial-movers.nl", true },
{ "mondo-it.ch", true },
{ "moneni.com", true },
+ { "moneoci.com.br", true },
{ "moneybird.com", true },
+ { "moneybird.nl", true },
{ "moneychangersoftware.com", true },
{ "moneycredit.eu", true },
{ "moneygo.se", true },
@@ -22944,29 +23310,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "monkeyhill.us", true },
{ "monkeytek.ca", true },
{ "monkieteel.com", true },
- { "monkieteel.nl", true },
{ "monlabs.com", true },
{ "monloyer.quebec", true },
{ "monnyonle.hu", true },
{ "mono.cafe", true },
{ "mono0x.net", true },
{ "monobank.no", true },
- { "monodukuri.cafe", true },
{ "monodukuri.com", true },
- { "monodzukuri.cafe", true },
- { "monokoo.com", true },
{ "monolithapps.com", true },
{ "monolithindustries.com", true },
{ "monolithinteractive.com", true },
{ "monothesis.com", true },
+ { "monotributo.online", true },
{ "monoworks.co.jp", true },
- { "monozukuri.cafe", true },
{ "monpc-pro.fr", true },
{ "monpermismoto.com", true },
{ "monpermisvoiture.com", true },
{ "monpetitforfait.com", true },
{ "monpetitmobile.com", true },
- { "monsieurbureau.com", true },
{ "monsieursavon.ch", true },
{ "monstermashentertainments.co.uk", true },
{ "montage-kaika.de", true },
@@ -22996,6 +23357,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "moolah.rocks", true },
{ "moon.fish", true },
{ "moonagic.com", true },
+ { "moonagic.io", true },
{ "moonbot.io", true },
{ "moondrop.org", true },
{ "moonkin.eu", true },
@@ -23003,8 +23365,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "moonmelo.com", true },
{ "moonraptor.co.uk", true },
{ "moonraptor.com", true },
- { "moonrhythm.info", true },
- { "moonrhythm.io", true },
{ "moonshyne.org", true },
{ "moontaj.com", true },
{ "moonvpn.org", true },
@@ -23050,6 +23410,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "morganino.it", true },
{ "morgansleisure.co.uk", true },
{ "morgner.com", true },
+ { "morhys.com", true },
{ "moritz-baestlein.de", true },
{ "moritztremmel.de", true },
{ "moriz.de", true },
@@ -23059,6 +23420,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "morningstar.moe", true },
{ "morphy2k.io", true },
{ "morrisby.com", true },
+ { "morrodafumacanoticias.com.br", true },
{ "morteruelo.net", true },
{ "mortgagecalculator.biz", true },
{ "mortgagecentersmo.com", true },
@@ -23072,6 +23434,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mosin.org", true },
{ "moskeedieren.nl", true },
{ "mosos.de", true },
+ { "mosquitojoe.com", true },
{ "mosscade.com", true },
{ "mosshi.be", true },
{ "mosstier.com", true },
@@ -23092,11 +23455,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "motifstudio.com.ua", true },
{ "motionless.nl", true },
{ "motiweb.fr", true },
+ { "motocollection.pl", true },
{ "motohell.com", true },
{ "motojato.com.br", true },
{ "motonauticaibiza.com", true },
{ "motoreflex.com", true },
- { "motornomaslo.bg", true },
{ "motorpointarenacardiff.co.uk", true },
{ "motorring.ru", true },
{ "motorsplus.com", false },
@@ -23104,19 +23467,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "motosikletevi.com", true },
{ "motostorie.blog", false },
{ "motovated.co.nz", true },
- { "motovio.de", true },
{ "motowilliams.com", true },
{ "motstats.co.uk", true },
{ "mottomortgage.com", true },
- { "moube.fr", true },
{ "moucloud.cn", true },
{ "moulinaparoles.ca", true },
- { "mountain-rock.ru", true },
{ "mountainactivitysection.org.uk", true },
{ "mountainroseherbs.com", true },
{ "mountfarmer.de", true },
{ "mousemessages.com", true },
{ "moutiezhaller.com", true },
+ { "move.mil", true },
{ "moveek.com", true },
{ "moveisfit.com.br", true },
{ "moveltix.net", true },
@@ -23125,13 +23486,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "movie-cross.net", true },
{ "movie-infos.net", true },
{ "movie1000.com", true },
- { "movie4kto.site", true },
{ "movie4kto.stream", true },
{ "movieboost.nl", true },
{ "moviedeposit.com", true },
{ "moviefreeze.com", true },
{ "movieguys.org", true },
- { "movienang.com", true },
{ "movienized.de", true },
{ "moviepilot.com", true },
{ "moviesetc.net", true },
@@ -23140,6 +23499,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "movimento-terra.it", true },
{ "movinglogistics.nl", false },
{ "movingtohttps.com", true },
+ { "movingtojapan.life", true },
{ "movlib.org", true },
{ "moy.cat", true },
{ "moyer.pub", true },
@@ -23148,10 +23508,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "moysovet.info", true },
{ "mozartgroup.hu", true },
{ "mozektevidi.net", true },
- { "mozgb.ru", true },
{ "mozilla.cz", true },
{ "mozzez.de", true },
- { "mp3gratuiti.com", true },
{ "mpa-pro.fr", true },
{ "mpac.ca", false },
{ "mpc-hc.org", true },
@@ -23161,26 +23519,27 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mpg-universal.com", true },
{ "mpg.ovh", true },
{ "mpgaming.pro", true },
+ { "mphoto.at", true },
{ "mpintaamalabanna.it", true },
{ "mpkrachtig.nl", true },
{ "mplanetphl.fr", true },
{ "mplant.io", true },
{ "mplicka.cz", true },
{ "mplusm.eu", true },
- { "mpn.poker", true },
{ "mpnpokertour.com", true },
{ "mpodraza.pl", true },
{ "mpreserver.com", true },
{ "mprsco.eu", true },
{ "mpsgarage.com.au", true },
{ "mpsoundcraft.com", true },
+ { "mpu-giessen.com", true },
+ { "mpu-vorbereitung.com", true },
{ "mpy.ovh", true },
{ "mqas.net", true },
{ "mr-anderson.org", true },
{ "mr-designer-oman.com", true },
{ "mr-labo.jp", true },
- { "mr-nachhilfe.de", true },
- { "mr-wolf.nl", true },
+ { "mr-wolf.nl", false },
{ "mr3.io", true },
{ "mrazek.biz", true },
{ "mrbmafrica.com", true },
@@ -23194,16 +23553,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mrdayman.com", true },
{ "mremallin.ca", true },
{ "mrevolution.eu", true },
+ { "mrgiveaways.com", true },
{ "mrinalpurohit.in", true },
+ { "mrjhnsn.com", true },
{ "mrjooz.com", true },
{ "mrkapowski.com", true },
+ { "mrketolocksmith.com", true },
{ "mrknee.gr", true },
{ "mrkrabat.de", true },
- { "mrksk.com", true },
{ "mrmoregame.de", true },
{ "mrnh.de", true },
- { "mrpropop.com", true },
+ { "mrning.com", true },
+ { "mrprintables.com", true },
{ "mrs-labo.jp", true },
+ { "mrsbairds.com", false },
{ "mrserge.lv", true },
{ "mrsk.me", true },
{ "mrstat.co.uk", true },
@@ -23227,7 +23590,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "msmails.de", true },
{ "msnr.net", true },
{ "msopopop.cn", true },
- { "msp66.de", false },
{ "mspsocial.net", true },
{ "msquadrat.de", true },
{ "msroot.de", true },
@@ -23235,6 +23597,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mstdn.blue", true },
{ "mstdn.club", true },
{ "mstdn.fr", true },
+ { "mstdn.io", true },
{ "mstdn.onl", false },
{ "msuna.net", true },
{ "msv-limpezas.pt", true },
@@ -23255,20 +23618,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mthrbrd.net", true },
{ "mths.be", false },
{ "mticareportal.com", true },
+ { "mtiryaki.com", true },
{ "mtlconcerts.com", true },
{ "mtltransport.com", true },
{ "mtnz.co.za", true },
{ "mtouch.facebook.com", false },
{ "mtr.md", true },
- { "mtrock.ru", true },
+ { "mtrip.com", true },
{ "mts-energia.eu", true },
{ "mts-server.com", true },
{ "mtsolar.es", true },
{ "mu.search.yahoo.com", false },
{ "muabannhanh.com", false },
- { "muahahahaha.co.uk", true },
{ "mubiflex.nl", true },
- { "muchohentai.com", true },
{ "muckingabout.eu", true },
{ "muckrack.com", true },
{ "mucmail.de", true },
@@ -23282,15 +23644,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "muellapp.com", true },
{ "muenchberger.com", true },
{ "muenzubi.de", true },
- { "muffet.pw", true },
{ "mufibot.net", true },
{ "muguayuan.com", true },
{ "muh.io", true },
+ { "muitadica.com", true },
{ "muk-kobetsu.com", true },
{ "mulaccosmetics.com", true },
{ "mulaisehat.com", true },
{ "mulej.net", true },
- { "mulheres18.com", true },
{ "muling.lu", true },
{ "mullens-usedcars.be", true },
{ "multi-vpn.biz", true },
@@ -23314,7 +23675,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "multitek.no", true },
{ "multitenantlaravel.com", true },
{ "multitheftauto.com", true },
- { "multiworldsoftware.com", true },
{ "multizone.games", true },
{ "multrier.fr", true },
{ "mumakil.fi", true },
@@ -23323,11 +23683,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mumolabs.com", true },
{ "munch.me", true },
{ "munchcorp.com", true },
- { "mundoadulto.com.br", true },
{ "mundoarabe.com.br", true },
{ "mundodasmensagens.com", true },
{ "mundokinderland.com.br", true },
{ "mundolarraz.es", true },
+ { "mundomagicotv.com", true },
{ "mundschenk.at", true },
{ "mundtec.com.br", true },
{ "munduch.cz", true },
@@ -23345,9 +23705,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "murgi.de", true },
{ "murmel.it", false },
{ "murof.com.br", true },
+ { "murray.xyz", true },
{ "murzik.space", true },
+ { "musaccostore.com", true },
{ "muscle-tg.com", true },
- { "muscleangels.com", true },
{ "musclecarresearch.com", true },
{ "muscolinomusic.com", true },
{ "musearchengine.com", true },
@@ -23379,6 +23740,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "musikzentrale.net", true },
{ "musketonhaken.nl", false },
{ "muslim.singles", true },
+ { "musmann.io", true },
{ "muspla.com", true },
{ "muspla.com.br", true },
{ "musselsblog.com", true },
@@ -23398,15 +23760,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "muthai.in.th", true },
{ "mutuals.cool", true },
{ "mutuelle.fr", true },
+ { "muusika.fun", true },
{ "muusikoiden.net", true },
{ "muwatenraqamy.org", true },
{ "muzeumkomiksu.eu", true },
{ "muzhijy.com", true },
- { "muzi.cz", true },
{ "muzikantine.nl", true },
{ "mv-wohnen.de", true },
{ "mvandek.nl", true },
{ "mvbits.com", true },
+ { "mvisioncorp.com", true },
{ "mvno.io", true },
{ "mvp-stars.com", true },
{ "mw.search.yahoo.com", false },
@@ -23415,15 +23778,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mwavuli.co.ke", true },
{ "mwba.org", true },
{ "mwe.st", true },
+ { "mwezi-foundation.org", true },
+ { "mwezi.org", true },
{ "mwohlfarth.de", true },
{ "mwtdev.se", true },
{ "mww.moe", true },
+ { "mx.org.ua", true },
{ "mx.search.yahoo.com", false },
{ "mx5international.com", true },
{ "mxihan.xyz", true },
{ "mxn8.com", true },
{ "mxp.tw", true },
{ "my-aftershave-store.co.uk", true },
+ { "my-best-wishes.com", true },
{ "my-cdn.de", true },
{ "my-contract.ch", true },
{ "my-contract.info", true },
@@ -23454,12 +23821,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "myaggic.com", true },
{ "myalliancechurch.com", true },
{ "myamend.com", true },
+ { "myamihealth.com", true },
{ "myamity.info", true },
{ "myammo.ru", true },
{ "myanimelist.net", true },
{ "myapexcard.com", true },
- { "myappliancerepairhouston.com", true },
- { "myartsway.com", true },
{ "mybagofcoffee.com", true },
{ "mybb.com", true },
{ "mybb.de", true },
@@ -23476,6 +23842,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mycieokien.info", false },
{ "mycinema.pro", true },
{ "mycircleworks.com", true },
+ { "myclasscam.com", true },
+ { "myclasscam.org", true },
{ "myclinicalstudybuddy.com", true },
{ "mycloud-system.com", true },
{ "mycofairtrade.com", true },
@@ -23530,6 +23898,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mygeotrip.com", true },
{ "mygigabitnation.com", true },
{ "mygignation.com", true },
+ { "mygirlfriendshouse.com", true },
{ "mygoldennetwork.com", true },
{ "mygreatjobs.de", true },
{ "mygreatlakes.org", true },
@@ -23540,9 +23909,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "myhatsuden.jp", true },
{ "myhealthreviews.com", true },
{ "myhollywoodnews.com", true },
- { "myhostname.net", true },
+ { "myhome-24.pl", true },
{ "myimds.com", true },
{ "myimmitracker.com", true },
+ { "myinvite.nl", true },
{ "myipaddr.de", true },
{ "myipv4.de", true },
{ "myjudo.net", true },
@@ -23554,6 +23924,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mylawyer.be", true },
{ "myleanfactory.de", true },
{ "mylifeabundant.com", true },
+ { "mylittlechat.ru", true },
{ "myliveupdates.com", true },
{ "mylookout.com", false },
{ "mylstrom.com", true },
@@ -23564,19 +23935,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mymed.de", true },
{ "mymed.eu", true },
{ "mymedz.nl", true },
+ { "mymixtapez.com", true },
{ "mymommyworld.com", true },
{ "mymotor.nl", true },
{ "myms.eu", true },
+ { "mymun.com", true },
{ "mymun.net", true },
{ "mymusiclist.alwaysdata.net", true },
{ "mymx.lu", true },
{ "myna.go.jp", true },
{ "mynameistavis.com", true },
- { "mynetworkingbuddy.com", true },
{ "mynext.events", true },
{ "mynextmove.org", true },
{ "mynn.io", true },
- { "mynook.info", true },
+ { "mynook.info", false },
{ "mynortherngarden.com", true },
{ "myonline.hu", true },
{ "myoptumhealthcomplexmedical.com", true },
@@ -23599,6 +23971,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mypcqq.cc", true },
{ "myperfecthome.ca", true },
{ "myperfumecollection.com", true },
+ { "myperks.in", true },
{ "myphotoshopbrushes.com", true },
{ "mypillcard.com", true },
{ "myplaceonline.com", true },
@@ -23644,6 +24017,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "myrepublic.nz", true },
{ "myrepublic.ph", true },
{ "myrepublic.rocks", true },
+ { "myrepublic.run", true },
{ "myrepublic.tk", true },
{ "myrepublic.tv", true },
{ "myrepublic.tw", true },
@@ -23666,6 +24040,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "myriadof.com", true },
{ "myrig.com", true },
{ "myrig.com.ua", true },
+ { "myrig.net", true },
{ "myrig.ru", true },
{ "myrotvorets.center", true },
{ "myrp.co", true },
@@ -23693,13 +24068,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "myssl.com", true },
{ "mystatus24.com", false },
{ "mysteriouscode.io", true },
+ { "mysterydata.com", true },
{ "mysterymind.ch", true },
{ "mysterysear.ch", true },
{ "mystic-welten.de", true },
{ "mystickphysick.com", true },
{ "mysticplumes.com", true },
{ "mystorymonster.com", true },
- { "mystown.org", true },
{ "mystudycart.com", true },
{ "mysupboard.de", true },
{ "myswissmailaddress.com", true },
@@ -23708,6 +24083,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mythengay.ch", true },
{ "mythicdelirium.com", true },
{ "myting.net", true },
+ { "mytraiteurs.com", true },
{ "mytripcar.co.uk", true },
{ "mytripcar.com", true },
{ "mytripcar.de", true },
@@ -23735,17 +24111,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "mywebinar.io", true },
{ "mywebpanel.eu", true },
{ "mywebpanel.nl", true },
+ { "myweddingreceptionideas.com", true },
{ "myworkinfo.com", false },
{ "myworth.com.au", true },
+ { "myxnr.com", true },
{ "myyubikey.net", true },
{ "myyubikey.org", true },
{ "myzina.cz", false },
{ "mz-mz.net", true },
{ "mzh.io", true },
+ { "mziulu.me", false },
{ "mznet.de", true },
+ { "mzzj.de", true },
{ "n-a.date", true },
{ "n-design.de", true },
- { "n-kanazawa.jp", true },
{ "n-m.lu", true },
{ "n-man.info", true },
{ "n-pix.com", false },
@@ -23754,18 +24133,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "n0paste.tk", false },
{ "n0psled.nl", true },
{ "n26.com", true },
- { "n2host.eu", true },
- { "n3twork.net", true },
+ { "n2servers.com", true },
{ "n4v.eu", true },
{ "n5118.com", true },
{ "n6a.net", true },
{ "n7.education", true },
+ { "n8mgt.com", true },
+ { "n8nvi.com", true },
+ { "n8solutions.net", true },
{ "na-school.nl", true },
{ "naam.me", true },
{ "nabaleka.com", true },
{ "nabankco.com", true },
{ "nabidkamajetku.cz", true },
{ "nabytek-valmo.cz", true },
+ { "nacfit.com", true },
{ "nachsendeauftrag.net", true },
{ "nachsenden.info", true },
{ "nachtmuziek.info", true },
@@ -23775,7 +24157,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nadejeproninu.cz", true },
{ "nadelholzkulturen.de", true },
{ "nadine-chaudier.net", true },
- { "nadyaolcer.fr", true },
+ { "nadsandgams.com", true },
{ "nafod.net", true },
{ "naga-semi.com", true },
{ "nagashi.ma", false },
@@ -23783,14 +24165,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nagb.gov", true },
{ "nagb.org", true },
{ "nagel-dentaltechnik.de", true },
- { "nagelfam.com", true },
{ "naggie.net", true },
{ "nah.nz", true },
{ "nah.re", true },
{ "nahura.com", true },
{ "nailattitude.ch", true },
{ "nailchiodo.com", true },
- { "nailedithomebuilders.com", true },
{ "nailsalon-aztplus.com", true },
{ "nairobibusinessreview.com", true },
{ "najany.de", true },
@@ -23798,13 +24178,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "najany.fr", true },
{ "najany.nl", true },
{ "najany.se", true },
- { "nakada4610.com", true },
+ { "nakalabo.jp", true },
{ "nakama.tv", true },
{ "nakandya.com", true },
+ { "nakanishi-paint.com", true },
+ { "nakayama.systems", true },
{ "nakedalarmclock.me", true },
{ "nakedtruthbeauty.com", true },
+ { "nakene.com", true },
{ "nakliyatsirketi.biz.tr", true },
- { "nako.no", true },
{ "nalepky-na-zed.cz", true },
{ "nalepte.cz", true },
{ "nalexandru.xyz", true },
@@ -23816,7 +24198,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nameid.org", true },
{ "namepros.com", true },
{ "namereel.com", true },
- { "namethatporn.com", true },
+ { "namethissymbol.com", true },
{ "nametiles.co", true },
{ "nami.bo", true },
{ "nami.exchange", true },
@@ -23828,14 +24210,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "namu.moe", true },
{ "namu.wiki", true },
{ "namuwikiusercontent.com", true },
- { "nanami.moe", true },
{ "nanarose.ch", true },
{ "nanch.com", true },
{ "nandex.org", true },
{ "nange.co", true },
{ "nankiseamansclub.com", true },
{ "nanofy.org", true },
- { "nanogi.ga", true },
{ "nanotechnologist.com", true },
{ "nanotechtorsion.com", true },
{ "nanovolt.nl", true },
@@ -23851,6 +24231,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "naphogar.com", true },
{ "napisdata.us", true },
{ "napolinissanctparts.com", true },
+ { "nappynko.com", true },
{ "narada.com.ua", true },
{ "narakenkoland.net", true },
{ "naralogics.com", true },
@@ -23883,6 +24264,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nastoletni.pl", true },
{ "nataldigital.com", true },
{ "nataliedawnhanson.com", true },
+ { "natanaelys.com", false },
{ "natation-nsh.com", false },
{ "natatorium.org", true },
{ "natchmatch.com", true },
@@ -23906,11 +24288,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nationalpriorities.org", true },
{ "nationaltaxprep.com", true },
{ "nationaltrails.ru", true },
+ { "nationwiderealtyinvestors.com", true },
{ "natives-team.ch", true },
{ "nativs.ch", true },
{ "natlec.com", true },
{ "natropie.pl", true },
{ "natsumihoshino.com", true },
+ { "natur.com", true },
+ { "natura-sense.com", true },
+ { "naturalhealthcures.net", true },
{ "naturalkitchen.co.uk", true },
{ "naturalspacesdomes.com", true },
{ "naturaum.de", true },
@@ -23930,8 +24316,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nausicaahotel.it", true },
{ "nautiljon.com", true },
{ "nautsch.de", true },
- { "navdeep.ca", true },
- { "navenlle.com", false },
+ { "navarralanparty.org", true },
+ { "navenlle.com", true },
{ "navienna.com", true },
{ "navient.com", true },
{ "navigate-it-services.de", false },
@@ -23940,9 +24326,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "navycs.com", true },
{ "nawir.de", true },
{ "nayahe.ru", true },
+ { "nayami64.xyz", true },
{ "nayanaas.com", true },
{ "nazevfirmy.cz", true },
{ "nazigol.com", true },
+ { "nazukebanashi.com", true },
{ "nazuna.blue", true },
{ "nb.zone", true },
{ "nb6.de", true },
@@ -24003,12 +24391,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nbgrooves.de", true },
{ "nbhorsetraining.com", true },
{ "nbib.gov", true },
- { "nbl.org.tw", true },
{ "nbp.com.pk", true },
{ "nbrain.de", true },
{ "nbrii.com", true },
{ "nbriresearch.com", true },
- { "nbtparse.org", true },
{ "nbur.co.uk", true },
{ "nc-beautypro.fr", true },
{ "nc-formation.fr", true },
@@ -24025,6 +24411,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nchangfong.com", true },
{ "nchponline.org", true },
{ "ncic.gg", true },
+ { "ncloud.freeddns.org", true },
{ "nclvle.co.uk", true },
{ "ncm-malerbetrieb.de", true },
{ "ncsc.gov.uk", true },
@@ -24036,7 +24423,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ndeoffshore.com", true },
{ "nder.be", true },
{ "ndhlink.com", true },
- { "ndmath.club", true },
{ "ndpbrn-research.org", true },
{ "nds-helicopter.de", true },
{ "ndy.sex", true },
@@ -24058,6 +24444,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nebuluxcapital.com", true },
{ "necessaryandproportionate.net", true },
{ "necessaryandproportionate.org", true },
+ { "nechiactua.com", true },
{ "necormansir.com", true },
{ "nectarleaf.com", true },
{ "nedcdata.org", true },
@@ -24075,6 +24462,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "neemzy.org", true },
{ "neet-investor.biz", true },
{ "nefertitis.cz", true },
+ { "neffat.si", true },
{ "neflabs.com", true },
{ "neftis.es", true },
{ "neg9.org", false },
@@ -24096,7 +24484,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nejlevnejsi-parapety.cz", true },
{ "neko-nyan-nuko.com", true },
{ "neko-nyan.org", true },
- { "neko.ml", true },
{ "nekodex.net", true },
{ "nekolove.jp", true },
{ "nekomimi.pl", true },
@@ -24110,7 +24497,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nellacms.com", true },
{ "nellacms.org", true },
{ "nellafw.org", true },
- { "nemanja.top", true },
{ "nemcd.com", true },
{ "nemecl.eu", true },
{ "nemez.net", true },
@@ -24128,7 +24514,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "neodrive.ch", true },
{ "neoedresources.org", true },
{ "neoeliteconsulting.com", true },
- { "neojames.me", true },
{ "neojo.org", true },
{ "neokobe.city", true },
{ "neolaudia.es", true },
@@ -24138,8 +24523,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "neonknight.ch", true },
{ "neons.org", true },
{ "neophilus.net", true },
+ { "neos.co.jp", true },
{ "neosdesignstudio.co.uk", true },
{ "neostralis.com", true },
+ { "neowa.tk", true },
{ "neowlan.net", true },
{ "neoxcrf.com", true },
{ "neoz.com.br", true },
@@ -24153,7 +24540,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nepremicnine.click", true },
{ "nepremicnine.net", true },
{ "nepustil.net", false },
- { "nerdbox.cc", true },
{ "nerdhouse.io", true },
{ "nerdmind.de", true },
{ "nerdoutstudios.tv", true },
@@ -24206,6 +24592,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nethunter.top", true },
{ "netki.com", true },
{ "netlentes.com.br", true },
+ { "netlocal.ru", true },
{ "netmagicas.com.br", true },
{ "netmeister.org", true },
{ "netnik.de", true },
@@ -24216,7 +24603,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "netrider.net.au", false },
{ "netrogue.ninja", true },
{ "netronix.be", true },
- { "netronome.com", true },
+ { "netsec.cloud", true },
{ "netsigna.de", true },
{ "netsite.dk", true },
{ "netsoins.org", true },
@@ -24224,6 +24611,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "netsparker.com.tr", true },
{ "netspeedia.net", true },
{ "netsphere.cz", true },
+ { "nettacompany.com.tr", true },
{ "nettamente.com", true },
{ "nette.org", true },
{ "nettegeschenke.de", true },
@@ -24240,15 +24628,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "netwarc.eu", true },
{ "netwarc.nl", true },
{ "netweaver.uk", true },
+ { "network-midlands.co.uk", true },
+ { "network-midlands.uk", true },
{ "network-notes.com", true },
{ "network23.nl", true },
{ "networkersdiary.com", true },
+ { "networking-groups.co.uk", true },
{ "networking4all.com", true },
- { "networking4all.net", true },
{ "networkingnexus.net", true },
{ "networkingphoenix.com", true },
+ { "networkmidlands.co.uk", true },
+ { "networkmidlands.uk", true },
+ { "networkmon.net", true },
{ "networkposting.com", true },
{ "networth.at", true },
+ { "networx-online.de", true },
+ { "netz-yokohama.co.jp", true },
{ "netzfabrik.com", true },
{ "netzfrauen.org", true },
{ "netzwerkwerk.de", true },
@@ -24268,7 +24663,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "neurozentrum-zentralschweiz.ch", true },
{ "neutralox.com", false },
{ "neuwal.com", true },
- { "neva.li", true },
{ "never.pet", true },
{ "nevergreen.io", true },
{ "nevermore.fi", true },
@@ -24285,7 +24679,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "new-process.eu", true },
{ "new.travel.pl", true },
{ "newaccess.ch", true },
- { "newbieboss.com", false },
+ { "newbasemedia.us", true },
{ "newbietech.cn", false },
{ "newborncryptocoin.com", false },
{ "newburybouncycastles.co.uk", true },
@@ -24301,8 +24695,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "newcloudwhodis.com", true },
{ "newcreamforface.com", true },
{ "newday.host", true },
- { "newdeveloper.download", true },
{ "newearth.press", true },
+ { "newfangledscoop.com", true },
{ "newfiepedia.ca", true },
{ "newgrowbook.com", true },
{ "newguidance.ch", true },
@@ -24311,13 +24705,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "newjianzhi.com", true },
{ "newkaliningrad.ru", true },
{ "newknd.com", true },
+ { "newlifeband.de", true },
{ "newmarketbouncycastlehire.co.uk", true },
{ "newmed.com.br", true },
{ "newmediaone.net", true },
{ "newmovements.net", true },
{ "newodesign.com", true },
{ "newpathintegratedtherapy.com", true },
- { "newpoke.net", true },
+ { "newposts.ru", true },
{ "newreleases.io", true },
{ "news47ell.com", true },
{ "newsa2.com", true },
@@ -24326,11 +24721,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "newsmotor.info", true },
{ "newspsychology.com", true },
{ "newstone-tech.com", true },
+ { "newsyslog.org", true },
{ "newtonproject.org", true },
{ "newtrackon.com", true },
{ "newvehicle.com", true },
{ "nex.sx", true },
- { "nexgeneration-solutions.com", true },
{ "nexicafiles.com", true },
{ "nexril.net", true },
{ "next-web.ad.jp", true },
@@ -24344,9 +24739,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nextend.net", true },
{ "nextend.org", true },
{ "nextevolution.co.uk", true },
+ { "nextgen.sk", true },
{ "nextgencel.com", true },
+ { "nextgenthemes.com", true },
{ "nextgreatmess.com", true },
{ "nexthop.jp", true },
+ { "nextiot.de", true },
{ "nextmbta.com", true },
{ "nextme.se", true },
{ "nextnely.com", true },
@@ -24355,6 +24753,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nextstep-labs.gr", true },
{ "nexttv.co.il", true },
{ "nexus-exit.de", true },
+ { "nexus-vienna.at", true },
{ "nexusconnectinternational.eu", true },
{ "nexwebsites.com", true },
{ "nexxus-sistemas.net.br", true },
@@ -24364,12 +24763,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nf4.net", true },
{ "nf9q.com", true },
{ "nfe-elektro.de", true },
- { "nfhome.be", true },
{ "nfir.nl", true },
{ "nfl.dedyn.io", true },
{ "nfl.duckdns.org", true },
{ "nflmocks.com", true },
- { "nfls.io", true },
+ { "nflsic.org", true },
{ "nfluence.org", true },
{ "nframe.io", true },
{ "nfrost.me", true },
@@ -24377,6 +24775,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nfz.moe", true },
{ "ng-musique.com", true },
{ "ngasembaru.com", true },
+ { "ngc.gov", false },
{ "nghe.net", true },
{ "nginxconfig.com", true },
{ "nginxconfig.io", true },
@@ -24388,7 +24787,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nhchalton.com", true },
{ "nhgteam.hu", true },
{ "nhimf.org", true },
- { "nhliberty.org", true },
{ "nhome.ba", true },
{ "nhsolutions.be", true },
{ "nhw.ovh", true },
@@ -24411,7 +24809,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nicesco.re", true },
{ "nicestudio.co.il", false },
{ "nichijou.com", true },
- { "nicholasperkins.io", true },
{ "nicholaspruss.com", true },
{ "nicholasquigley.com", true },
{ "nicholaswilliams.net", true },
@@ -24422,14 +24819,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nickcraver.com", true },
{ "nickdekruijk.nl", true },
{ "nickguyver.com", true },
+ { "nickhitch.co.uk", true },
{ "nickloose.de", true },
{ "nicklord.com", true },
{ "nickmorri.com", true },
{ "nickplotnek.co.uk", true },
{ "nickrickard.co.uk", true },
+ { "nicks-autos.com", true },
{ "nickscomputers.nl", true },
{ "nickserve.com", true },
{ "nickstories.de", true },
+ { "nicktheitguy.com", true },
{ "niclasreich.de", true },
{ "nicn.me", true },
{ "nico.st", true },
@@ -24444,6 +24844,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nicolasiung.me", true },
{ "nicolaszambetti.ch", true },
{ "nicolaw.uk", true },
+ { "nicolemathew.com", true },
{ "nicoleoquendo.com", true },
{ "niconico.ooo", true },
{ "niconode.com", false },
@@ -24475,13 +24876,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "niesstar.com", true },
{ "nietzsche.com", true },
{ "nieuwslagmaat.nl", true },
- { "niffler.software", true },
{ "niftiestsoftware.com", true },
{ "nigelwakefield.com", true },
{ "nigensha.co.jp", true },
{ "niggemeier.cc", true },
{ "nigger.racing", true },
- { "niggo.eu", true },
{ "night2stay.cn", true },
{ "night2stay.com", true },
{ "night2stay.de", true },
@@ -24494,6 +24893,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nightsi.de", true },
{ "nightstand.io", true },
{ "nightwinds.tk", true },
+ { "nigt.cf", true },
{ "nihon-no-sake.net", true },
{ "nijiero-ch.com", false },
{ "nijikata.com", true },
@@ -24506,13 +24906,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nikkasystems.com", true },
{ "nikkila.me", true },
{ "nikklassen.ca", true },
- { "niklas.host", true },
{ "niklas.pw", true },
{ "niklasanderson.com", true },
{ "niklasbabel.com", true },
{ "nikolasgrottendieck.com", true },
{ "nikomo.fi", false },
{ "nikoninframe.co.uk", true },
+ { "nikonlibrary.co.uk", true },
+ { "nikonnps.co.uk", true },
{ "nikonpromotions.co.uk", true },
{ "nikonschool.co.uk", true },
{ "nikz.in", true },
@@ -24521,7 +24922,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "niles.xyz", true },
{ "nilrem.org", true },
{ "nimeshjm.com", true },
- { "nimidam.com", true },
{ "nina-laaf.de", true },
{ "ninaforever.com", true },
{ "ninarinaldi.com.br", true },
@@ -24535,9 +24935,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ninetaillabs.xyz", true },
{ "ninfora.com", true },
{ "ninja-galerie.de", true },
+ { "ninja-skillz.com", true },
{ "ninjaworld.co.uk", true },
{ "ninjio.com", true },
{ "ninov.de", true },
+ { "ninreiei.jp", true },
{ "nintendoforum.no", true },
{ "ninth.cat", true },
{ "ninthfloor.org", true },
@@ -24545,29 +24947,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nipax.cz", true },
{ "nipe-systems.de", true },
{ "nippon-oku.com", true },
- { "nippon.fr", true },
{ "niqex.com", true },
- { "nirjharstudio.com", true },
{ "nirjonmela.com", true },
{ "nirjonmela.net", true },
{ "nirudo.me", true },
- { "nirvanashop.com", true },
{ "nissanofbismarckparts.com", true },
- { "nitaonline.org", true },
{ "nitifilter.com", true },
+ { "nitix.games", true },
{ "nitrix.me", true },
- { "nitrohorse.com", true },
+ { "nitrohorse.com", false },
{ "nitrokey.com", true },
{ "nitropanel.com", true },
{ "nitropur.com", true },
{ "nitropur.de", true },
{ "nitrous-networks.com", true },
+ { "nitschinger.at", true },
{ "niu.moe", true },
- { "niva.synology.me", true },
{ "nivi.ca", true },
{ "nix.black", true },
- { "nixne.st", true },
{ "nixonlibrary.gov", true },
+ { "nixx-gel.cz", true },
{ "niyawe.de", true },
{ "nja.id.au", true },
{ "njast.net", true },
@@ -24576,7 +24975,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "njpjanssen.nl", true },
{ "nkapliev.org", true },
{ "nkinka.de", true },
- { "nkp-media.de", true },
{ "nl-ix.net", true },
{ "nl.search.yahoo.com", false },
{ "nlap.ca", false },
@@ -24588,8 +24986,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nlrb.gov", true },
{ "nlt.by", false },
{ "nmd.so", true },
- { "nmgb.ga", true },
- { "nmgb.ml", true },
{ "nmnd.de", true },
{ "nmontag.com", true },
{ "nn.cz", true },
@@ -24599,6 +24995,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "no-xice.com", true },
{ "no.search.yahoo.com", false },
{ "noagendahr.org", true },
+ { "noahjacobson.com", true },
{ "noahmodas.com.br", true },
{ "noahsaso.com", true },
{ "nobitakun.com", true },
@@ -24648,26 +25045,28 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "noisky.cn", true },
{ "noisyfox.cn", true },
{ "nojestorget.se", true },
- { "nojok.es", true },
{ "nokia.la", true },
{ "nokono.com", true },
{ "nolaviz.org", true },
{ "noleggio-bagni-chimici.it", true },
{ "noma-film.com", true },
{ "nomadproject.io", true },
+ { "nomagic.software", true },
{ "nomenclator.org", true },
{ "nomesbiblicos.com", true },
{ "nomial.co.uk", true },
{ "nomifensine.com", true },
+ { "nomoondev.azurewebsites.net", true },
{ "nomsy.net", true },
+ { "nonabytes.xyz", true },
{ "noname-ev.de", true },
{ "nonametheme.com", true },
{ "noncombatant.org", true },
{ "noob-box.net", true },
{ "noobswhatelse.net", true },
{ "noobunbox.net", true },
+ { "noodlecrave.com", true },
{ "noodles.net.nz", true },
- { "noodleyum.com", true },
{ "noodplan.co.za", true },
{ "noodweer.be", true },
{ "noofficewalls.com", true },
@@ -24675,6 +25074,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "noop.ch", true },
{ "noordsee.de", true },
{ "noorsolidarity.com", true },
+ { "noortronic.com", true },
{ "nootronerd.com", true },
{ "nootropic.com", true },
{ "nootropicpedia.com", true },
@@ -24690,19 +25090,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nordmoregatebilklubb.com", true },
{ "nordnetz-hamburg.de", true },
{ "nordseeblicke.de", true },
+ { "nordwal.de", true },
{ "nordwaldzendo.de", true },
{ "noref.tk", true },
{ "noreply.mx", true },
+ { "noret.com", true },
{ "norichanmama.com", true },
{ "noriel.ro", true },
{ "normaculta.com.br", true },
- { "normalady.com", true },
{ "norman-preusser-gmbh.de", true },
{ "normanbauer.com", true },
{ "normandgascon.com", true },
{ "normankranich.de", true },
{ "norrkemi.se", true },
{ "norrliden.de", true },
+ { "norsewars.com", true },
{ "norskpensjon.no", true },
{ "northatlantalaw.net", true },
{ "northbrisbaneapartments.com.au", true },
@@ -24714,7 +25116,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "northern-lakes.com", true },
{ "northerngate.net", true },
{ "northernhamsterclub.com", true },
- { "northernmuscle.ca", true },
+ { "northernpage.com", true },
{ "northernselfstorage.co.za", true },
{ "northfieldyarn.com", true },
{ "northokanaganbookkeeping.com", true },
@@ -24736,13 +25138,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nostosh.eu.org", true },
{ "nostraforma.com", false },
{ "noswap.com", true },
- { "nosx.tk", true },
{ "nosyu.pe.kr", true },
- { "nota-web.com", true },
{ "nota.moe", true },
{ "notabug.org", true },
{ "notadd.com", true },
- { "notadd.store", true },
{ "notallmine.net", true },
{ "notalone.gov", true },
{ "notar-glagowski.com", true },
@@ -24754,10 +25153,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "notepad.nz", true },
{ "noteskeeper.ru", true },
{ "noticiasdehumor.com", true },
- { "notificami.com", true },
{ "notify.moe", true },
{ "notinglife.com", true },
{ "notjustvacs.com", true },
+ { "notmybox.com", true },
{ "notnize.net", true },
{ "notnl.com", true },
{ "notofilia.com", true },
@@ -24765,11 +25164,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "notoriousdev.com", true },
{ "notrecourrier.net", true },
{ "notsafefor.work", true },
- { "nottori.com", true },
{ "nottres.com", true },
{ "noudjalink.nl", true },
{ "noustique.com", true },
{ "nova-dess.ch", true },
+ { "nova-kultura.org", true },
{ "nova-wd.org.uk", true },
{ "nova.live", true },
{ "novabench.com", true },
@@ -24802,6 +25201,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nowlas.org", true },
{ "nowloading.co", true },
{ "nowremindme.com", true },
+ { "noxi.ga", true },
{ "noxlogic.nl", true },
{ "noyocenter.org", true },
{ "np-edv.at", true },
@@ -24812,17 +25212,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "npw.net", true },
{ "nqesh.com", true },
{ "nqeshreviewer.com", true },
- { "nrc-gateway.gov", true },
{ "nrd.li", true },
{ "nrdstd.io", true },
{ "nrev.ch", true },
{ "nrkn.fr", true },
{ "nrsweb.org", true },
- { "nrvn.cc", true },
+ { "nrvn.cc", false },
{ "ns-frontier.com", true },
{ "ns2servers.pw", true },
{ "nsa.lol", true },
- { "nsa.ovh", true },
{ "nsa.wtf", true },
{ "nsapwn.com", true },
{ "nsboston.org", true },
@@ -24837,6 +25235,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nsp.ua", true },
{ "nst-maroc.com", true },
{ "nstd.net", true },
+ { "nstremsdoerfer.ovh", true },
+ { "nstrust.co.uk", true },
{ "nsworks.com", true },
{ "ntags.org", true },
{ "ntcoss.org.au", true },
@@ -24844,29 +25244,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nth.sh", true },
{ "nti.de", true },
{ "ntotten.com", true },
- { "ntppool.org", true },
+ { "ntppool.org", false },
{ "ntwt.us", true },
{ "ntx360grad-fallakte.de", true },
{ "ntzwrk.org", true },
+ { "nu-pogodi.net", true },
+ { "nu3.com", true },
+ { "nu3.dk", true },
+ { "nu3.fi", true },
+ { "nu3.no", true },
+ { "nu3.se", true },
{ "nu3tion.com", true },
{ "nu3tion.cz", true },
{ "nuacht.ie", true },
{ "nuamooreaindonesia.com", true },
{ "nubella.com.au", true },
- { "nubeslayer.com", true },
{ "nubu.at", true },
- { "nuclear-crimes.com", true },
{ "nuclearcat.com", true },
- { "nuclearcrimes.com", true },
- { "nuclearcrimes1.com", true },
{ "nucleuscore.org", true },
- { "nudestpics.com", true },
{ "nuel.cl", true },
{ "nuevaimagenpublicidad.es", true },
{ "nuffield.nl", true },
{ "nugdev.co", true },
{ "null-life.com", true },
{ "nullday.de", true },
+ { "nulle-part.org", true },
{ "nullonerror.org", true },
{ "nullpointer.io", true },
{ "nullroute.com", true },
@@ -24883,7 +25285,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "numero1.ch", true },
{ "numerologist.com", true },
{ "numerossanos.com.ar", true },
- { "numis.tech", true },
+ { "numis.tech", false },
{ "numismed-seniorcare.de", true },
{ "numm.fr", true },
{ "numwave.nl", true },
@@ -24900,7 +25302,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nurses.dating", true },
{ "nursingschool.network", true },
{ "nuryahan.com.br", true },
- { "nusku.biz", true },
{ "nussadoclub.org", true },
{ "nutikell.com", true },
{ "nutleyeducationalfoundation.org", true },
@@ -24910,7 +25311,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nutri-spec.me", true },
{ "nutricaovegana.com", true },
{ "nutriciametabolics-shop.de", true },
- { "nutrifyyourself.com", true },
{ "nutripedia.gr", true },
{ "nutrishop.com", true },
{ "nutrivisa.com.br", true },
@@ -24923,7 +25323,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nvq.nl", true },
{ "nvr.bz", true },
{ "nwbc.gov", true },
+ { "nwerc.party", true },
{ "nwgh.org", false },
+ { "nwk1.com", true },
{ "nwr-waffenbuch.de", true },
{ "nwra.com", true },
{ "nwuss.okinawa", true },
@@ -24931,12 +25333,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nwwnetwork.net", true },
{ "nxinfo.ch", true },
{ "nya.as", true },
+ { "nyadora.moe", true },
{ "nyan.it", true },
{ "nyan.stream", true },
{ "nyanco.space", true },
+ { "nyansparkle.com", true },
{ "nyantec.com", true },
{ "nybiz.nyc", true },
{ "nycoyote.org", true },
+ { "nydig.com", true },
+ { "nydnxs.com", true },
{ "nyffo.com", true },
{ "nyhaoyuan.net", true },
{ "nyiad.edu", true },
@@ -24944,18 +25350,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "nyip.edu", true },
{ "nylevemusic.com", true },
{ "nyloc.de", true },
- { "nylonfeetporn.com", true },
{ "nymphetomania.net", true },
{ "nynex.net", true },
{ "nyoronfansubs.org", true },
{ "nyphox.ovh", true },
{ "nys-hk.com", false },
- { "nystudio107.com", true },
{ "nytrafficticket.com", true },
- { "nyuusannkinn.com", true },
{ "nyxi.eu", true },
{ "nyyu.tk", true },
{ "nzb.cat", false },
+ { "nzbr.de", true },
{ "nzdmo.govt.nz", true },
{ "nzstudy.ac.nz", true },
{ "nzws.me", true },
@@ -24978,8 +25382,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "oakslighting.co.uk", true },
{ "oanalista.com.br", true },
{ "oasisdabeleza.com.br", true },
+ { "oatmealdome.me", true },
{ "oauth-dropins.appspot.com", false },
{ "obamalibrary.gov", true },
+ { "obamawhitehouse.gov", true },
{ "oberhofdrinks.com", true },
{ "obermeiers.eu", true },
{ "obfuscate.xyz", true },
@@ -24991,14 +25397,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "oblast45.ru", false },
{ "oboeta.com", true },
{ "obono.at", true },
+ { "obs.group", true },
{ "obscur.us", true },
+ { "obsessharness.com", true },
{ "obsidianirc.net", true },
{ "obsproject.com", true },
{ "obtima.org", true },
{ "obud.cz", true },
{ "obyvateleceska.cz", true },
{ "oc-sa.ch", true },
- { "ocad.com.au", true },
+ { "ocarupo.com", true },
{ "occenterprises.org", true },
{ "occentus.net", true },
{ "occmon.net", true },
@@ -25008,6 +25416,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "oceandns.eu", true },
{ "oceandns.net", true },
{ "oceandns.nl", true },
+ { "oceanlord.me", true },
{ "oceanvisuals.com", true },
{ "ocelot.help", true },
{ "ocenovani-inspekce.cz", true },
@@ -25032,12 +25441,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "octohedralpvp.tk", true },
{ "octohost.net", true },
{ "octolopagon.games", true },
+ { "octopus-agents.com", true },
{ "octosniff.net", true },
{ "octosys.net", true },
{ "octosys.org", true },
{ "octosys.ru", true },
{ "octothorpe.club", true },
- { "octothorpe.ninja", true },
{ "oculus.com", true },
{ "oddmuse.org", true },
{ "oddnumber.ca", true },
@@ -25063,12 +25472,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "oemspace.net", true },
{ "oemspace.nl", true },
{ "oemwolf.com", true },
+ { "oenings.eu", true },
{ "ofcampuslausanne.ch", true },
+ { "ofda.gov", true },
{ "offandonagain.org", true },
{ "offbyinfinity.com", true },
{ "offenekommune.de", true },
{ "offenes-deutschland.de", true },
- { "offerstone.cl", true },
+ { "offertegiuste.com", true },
{ "offfbynight.be", true },
{ "offgames.io", true },
{ "office-discount.at", true },
@@ -25090,7 +25501,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "oftn.org", true },
{ "oge.ch", true },
{ "ogis.gov", true },
- { "oglen.ca", true },
{ "ogocare.com", true },
{ "oguya.ch", true },
{ "ogyaa.jp", true },
@@ -25105,10 +25515,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ohiohealthfortune100.com", true },
{ "ohling.org", true },
{ "ohne-name.de", true },
- { "ohreally.de", true },
+ { "ohnonotme.com", true },
{ "ohsohairy.co.uk", true },
{ "ohyooo.com", true },
{ "oiaio.cn", true },
+ { "oilfieldinjury.attorney", true },
{ "oilpaintingsonly.com", true },
{ "oirealtor.com", true },
{ "oisd.nl", true },
@@ -25117,7 +25528,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ojanaho.com", true },
{ "ojdip.net", true },
{ "ojomovies.com", true },
- { "ojp.gov", true },
{ "okakuro.org", true },
{ "okanaganrailtrail.ca", true },
{ "okay.cf", true },
@@ -25130,6 +25540,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "okib.ca", true },
{ "okin-jp.net", true },
{ "okinawa-mag.net", true },
+ { "okmx.cloud", true },
{ "okmx.de", true },
{ "okna-tm.kz", true },
{ "okonetwork.org.uk", true },
@@ -25143,23 +25554,27 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "olanderflorist.com", true },
{ "olasouris.com", true },
{ "olback.net", true },
+ { "olbat.net", true },
{ "olcayanar.com", true },
{ "oldbrookinflatables.co.uk", true },
{ "oldbrookmarqueehire.co.uk", true },
{ "oldchaphome.nl", true },
{ "oldenglishsheepdog.com.br", true },
+ { "oldita.ru", true },
{ "oldking.net", true },
{ "oldnews.news", true },
{ "oldoakflorist.com", true },
{ "oldprop.com", true },
+ { "oldroutetwo.com", true },
{ "oldtimerreifen-moeller.de", true },
{ "olegon.ru", true },
{ "olegs.be", true },
{ "oleksii.name", true },
{ "oleodecopayba.com.br", true },
+ { "oles-hundehaus.de", true },
{ "olgiati.org", true },
- { "olgui.net", true },
{ "olgun.eu", true },
+ { "olifant.fr", true },
{ "olightstore.com", true },
{ "olightstore.ro", true },
{ "oliode.tk", true },
@@ -25210,7 +25625,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "omgbouncycastlehire.co.uk", true },
{ "omi-news.fr", true },
{ "omifind.com", true },
- { "omise.co", true },
{ "omitech.co.uk", true },
{ "omlmetal.co.jp", true },
{ "omniasig.ro", true },
@@ -25223,7 +25637,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "omnisky.dk", true },
{ "omnitrack.org", true },
{ "omniverse.ru", true },
- { "omorashi.org", true },
+ { "omoide-hitokoto.com", true },
{ "omori.ch", true },
{ "omoteura.com", true },
{ "omranic.com", true },
@@ -25253,6 +25667,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "onebigcow.com", true },
{ "oneclic.ch", true },
{ "oneclickonejob.com", true },
+ { "onedegreehealth.com", true },
{ "onedot.nl", true },
{ "onedottwelve.co.jp", true },
{ "onedottwelve.com", true },
@@ -25261,17 +25676,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "onee3.org", true },
{ "onefour.ga", false },
{ "oneheartbali.church", true },
+ { "oneidentity.me", true },
{ "oneiroi.co.uk", true },
{ "onemid.net", true },
{ "oneminute.io", false },
{ "onemoonmedia.de", true },
- { "onemusou.com", true },
{ "oneononeonone.de", true },
{ "oneononeonone.tv", true },
{ "onepointsafeband.ca", true },
{ "onepointsafeband.com", true },
{ "onepointzero.com", true },
{ "oneprediction.com", true },
+ { "onesnzeroes.com", true },
{ "onesports.cz", true },
{ "onestepfootcare.com", true },
{ "onestopcastles.co.uk", true },
@@ -25312,9 +25728,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "online24.pt", true },
{ "onlinebizdirect.com", false },
{ "onlinecasino.vlaanderen", true },
- { "onlinecasinobluebook.com", true },
{ "onlinecensorship.org", true },
{ "onlinecollegeessay.com", true },
+ { "onlinecorners.com", true },
{ "onlinefashion.it", true },
{ "onlineinfographic.com", true },
{ "onlinekmc.com", true },
@@ -25323,7 +25739,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "onlinelighting.com.au", true },
{ "onlinemarketingtraining.co.uk", true },
{ "onlinepokerspelen.be", true },
- { "onlineporno.tv", true },
+ { "onlineporno.xyz", true },
{ "onlinerollout.de", true },
{ "onlinestoreninjas.com", true },
{ "onlineth.com", false },
@@ -25334,9 +25750,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "onlylebanon.net", true },
{ "onmaps.de", true },
{ "onmarketbookbuilds.com", true },
- { "onnee.ch", true },
+ { "onnaguse.com", true },
{ "onnext.cc", true },
- { "ono.es", true },
{ "onoranze-funebri.biz", true },
{ "onpay.io", true },
{ "onpermit.net", true },
@@ -25368,6 +25783,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "oosoo.org", true },
{ "ooyo.be", true },
{ "op11.co.uk", false },
+ { "opadaily.com", true },
{ "opalesurfcasting.net", true },
{ "oparl.org", true },
{ "opcenter.de", true },
@@ -25378,6 +25794,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "open-desk.org", true },
{ "open-domotics.info", true },
{ "open-freax.fr", true },
+ { "open-gaming.net", true },
{ "open-infrastructure.net", true },
{ "open-letters.de", true },
{ "open-mesh.org", true },
@@ -25388,6 +25805,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "openacte.ch", true },
{ "openas.org", true },
{ "openbankproject.com", true },
+ { "openbayes.com", true },
{ "openbeecloud.com", true },
{ "openblox.org", true },
{ "openbsd.id", true },
@@ -25396,6 +25814,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "openclima.com", true },
{ "opencluster.at", true },
{ "opencrm.co.uk", true },
+ { "opendata.cz", true },
{ "opendataincubator.eu", true },
{ "opendecide.com", true },
{ "openfir.st", true },
@@ -25438,28 +25857,29 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "openwaveguide.de", true },
{ "openwifi.gr", true },
{ "openwireless.org", true },
- { "operad.fr", true },
{ "operationforever.com", true },
{ "opfin.com", true },
+ { "ophis-phosphoros.com", true },
{ "opiates.ca", true },
{ "opin.me", true },
{ "opioids.co.uk", true },
- { "opioids.com", true },
{ "opioids.gov", true },
{ "opium.io", true },
{ "oplop.appspot.com", true },
{ "opoleo.com", false },
{ "oportho.com.br", true },
{ "opp.ag", true },
- { "oppag.com.br", true },
{ "oppaiti.me", true },
{ "oppejoud.ee", true },
{ "opportunis.me", true },
- { "opposer.me", true },
+ { "opportunity.de", true },
+ { "oppwa.com", true },
{ "opq.pw", true },
+ { "oprbox.com", true },
{ "oprechtgezegd.nl", true },
{ "oprueba.com", true },
{ "opryshok.com", true },
+ { "ops-com.com", true },
{ "opsmate.com", false },
{ "opsnotepad.com", true },
{ "opti-net.at", true },
@@ -25467,9 +25887,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "optiekzien.nl", true },
{ "optik-trosdorff.de", true },
{ "optimalsetup.com", true },
+ { "optimised.cloud", true },
+ { "optimised.io", true },
+ { "optimisedlabs.co.uk", true },
{ "optimisedlabs.com", true },
+ { "optimisedlabs.info", true },
+ { "optimisedlabs.net", true },
+ { "optimisedlabs.uk", true },
{ "optimist.bg", true },
- { "optimize-jpg.com", true },
+ { "optimizedlabs.co.uk", true },
+ { "optimizedlabs.info", true },
+ { "optimizedlabs.net", true },
+ { "optimizedlabs.uk", true },
{ "optimumwebdesigns.com", true },
{ "optimus.io", true },
{ "optimuscrime.net", true },
@@ -25478,6 +25907,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "optmos.at", true },
{ "optometryscotland.org.uk", true },
{ "optoutday.de", true },
+ { "opure.ru", true },
{ "opus-codium.fr", true },
{ "oraculum.cz", true },
{ "orang-utans.com", true },
@@ -25488,10 +25918,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "orangenbaum.at", true },
{ "orangenuts.in", true },
{ "oranges.tokyo", true },
- { "orangetravel.eu", true },
{ "orangutan-appeal.org.uk", true },
{ "orbu.net", true },
- { "orcahq.com", true },
+ { "orca.pet", true },
{ "orcamoney.com", true },
{ "orchideenettoyage.com", true },
{ "orchidlive.com", true },
@@ -25502,20 +25931,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ordernow.at", true },
{ "orderswift.com", true },
{ "ordr.mobi", true },
+ { "oreka.online", true },
{ "oreshinya.xyz", true },
{ "oreskylaw.com", true },
{ "oreto.de", true },
{ "orf-digitalsatkarte.at", false },
{ "orf-kartentausch.at", false },
{ "organica.co.za", true },
- { "organicae.com", true },
{ "organisatieteam.nl", true },
- { "organisationsberatung-jacobi.de", true },
{ "organix.ma", true },
{ "orgasmium.com", true },
{ "orgatech-gmbh.de", true },
{ "orgsyn.in", true },
- { "orhideous.name", true },
{ "orians.eu", true },
{ "oribia.net", true },
{ "orientalart.nl", true },
@@ -25525,11 +25952,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "originalniknihy.cz", true },
{ "origincoffee.com", true },
{ "origincoffee.nz", true },
+ { "originpc.com", false },
{ "orikadabra.nl", true },
{ "orikum.org", true },
{ "orimex-mebel.ru", true },
{ "orion-universe.com", true },
{ "orioncokolada.cz", true },
+ { "orionfinancialservices.com", true },
{ "oriongames.eu", true },
{ "orkestar-krizevci.hr", true },
{ "orkiv.com", true },
@@ -25546,7 +25975,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "orthotictransfers.com", true },
{ "ortlepp.eu", true },
{ "ortodonciaian.com", true },
- { "orui.com.br", true },
+ { "orum.in", true },
{ "orwell1984.today", true },
{ "oryva.com", true },
{ "orz.uno", true },
@@ -25555,8 +25984,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "os-t.de", true },
{ "os24.cz", true },
{ "osacrypt.studio", true },
- { "osaka-fukushi.jp", true },
- { "osaka-jusan.jp", true },
{ "osaka-onakura.com", true },
{ "osakeannit.fi", true },
{ "osao.org", true },
@@ -25566,8 +25993,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "osburn.com", true },
{ "oscamp.eu", true },
{ "oscarvk.ch", true },
+ { "oscloud.com", true },
{ "osepideasthatwork.org", true },
- { "osereso.tn", true },
{ "oses.mobi", true },
{ "oshayr.com", true },
{ "oshell.me", true },
@@ -25579,8 +26006,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "oslinux.net", true },
{ "osm.is", true },
{ "osmanlitorunu.com", true },
+ { "osmestres.com", true },
{ "osmosis.org", true },
{ "osmre.gov", true },
+ { "osnova.cz", true },
+ { "osobliwydom.pl", true },
+ { "ospf.sk", true },
{ "ospree.me", true },
{ "osquery.io", true },
{ "ostan-collections.net", true },
@@ -25599,6 +26030,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "otakubox.de", true },
{ "otakurepublic.com", true },
{ "otakurumi.de", true },
+ { "otakuyun.com", true },
{ "otchecker.com", true },
{ "otellio.com", true },
{ "otellio.de", true },
@@ -25606,7 +26038,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "otherkinforum.com", true },
{ "oticasaopaulo.com.br", true },
{ "oticasvisao.net.br", true },
- { "otmns.net", true },
{ "otorrino.pt", true },
{ "otoy.com", true },
{ "otoya.space", true },
@@ -25616,6 +26047,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "otsfreestyle.jp", true },
{ "otsu.beer", true },
{ "ottoproject.io", true },
+ { "ottoversand.at", true },
{ "otus-magnum.com", true },
{ "otvaracie-hodiny.sk", true },
{ "otya.me", true },
@@ -25624,12 +26056,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ouestsolutions.com", true },
{ "ouglor.com", true },
{ "ouimoove.com", true },
+ { "ouin.land", true },
{ "oulunjujutsu.com", true },
{ "ouowo.gq", true },
+ { "our-box.net", true },
{ "ourai.ws", true },
{ "ourcloud.at", true },
+ { "ourdocuments.gov", true },
{ "ourevents.net", true },
- { "ourls.win", true },
+ { "ourmaster.org", true },
{ "ouruglyfood.com", true },
{ "ourwedding.xyz", true },
{ "ourworldindata.org", true },
@@ -25658,9 +26093,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "outlookonthedesktop.com", true },
{ "outpostinfo.com", true },
{ "outsideconnections.com", true },
+ { "outsiders.paris", true },
{ "ovelhaostra.com", true },
{ "overalglas.nl", true },
{ "overamsteluitgevers.nl", true },
+ { "overclockers.ge", true },
{ "overdrive-usedcars.be", true },
{ "overkillshop.com", true },
{ "overseamusic.de", true },
@@ -25669,6 +26106,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "overstap.deals", true },
{ "overstappen.nl", true },
{ "overstemmen.nl", true },
+ { "overstockpromote.com", true },
{ "overthecloud.it", true },
{ "overthinkingit.com", true },
{ "overtrolls.de", true },
@@ -25688,12 +26126,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "owl-square.com", true },
{ "owl-stat.ch", true },
{ "owl.net", true },
+ { "owlandrabbitgallery.com", true },
{ "owlishmedia.com", true },
{ "own3d.ch", true },
{ "ownc.at", true },
{ "ownmay.com", true },
- { "owothisdiz.pw", true },
- { "oxanababy.com", true },
{ "oxborrow.ca", true },
{ "oxelie.com", true },
{ "oxo.cloud", true },
@@ -25716,6 +26153,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "p-t.io", true },
{ "p.ki", true },
{ "p1984.nl", false },
+ { "p1cn.com", true },
{ "p1ratrulezzz.me", true },
{ "p4chivtac.com", true },
{ "p5r.uk", true },
@@ -25750,7 +26188,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pace.car", true },
{ "paceda.nl", true },
{ "pacelink.de", true },
- { "pachaiyappas.org", true },
{ "pacificpalisadeselectric.com", true },
{ "pacificpalisadeselectrical.com", true },
{ "pacificpalisadeselectrician.com", true },
@@ -25766,11 +26203,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "packer.io", true },
{ "packetdigital.com", true },
{ "packetlinux.com", true },
+ { "packshot-creator.com", true },
+ { "pact2017.nl", true },
{ "pactf.com", true },
{ "padam-group.com", true },
{ "padberx-marketing-consultants.de", true },
{ "paddy.rocks", true },
- { "padeoe.com", true },
{ "padianda.com", true },
{ "padovani.de", true },
{ "padpilot.co", true },
@@ -25785,19 +26223,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pagalworld.info", true },
{ "pagalworld.la", true },
{ "pagalworld.me", true },
+ { "pagalworld.org", true },
{ "page-builders.com", true },
{ "pageantsnews.com", false },
{ "pagedesignhub.com", true },
{ "pagedesignpro.com", true },
{ "pagedesignshop.com", true },
{ "pagedesignweb.com", true },
+ { "pagefulloflies.io", true },
{ "pagewizz.com", true },
{ "pagiamtzis.com", true },
{ "pagina.com.mx", true },
{ "pagure.io", true },
- { "pagure.org", true },
{ "pahae.de", true },
{ "pahealthbilling.com", true },
+ { "pahlawanpulsa.com", true },
{ "paichai.space", false },
{ "paincareehr.com", true },
{ "paindata.dk", true },
@@ -25808,12 +26248,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "paintcolorsbysue.com", true },
{ "paintingindurban.co.za", true },
{ "paipuman.jp", true },
- { "paizinhovirgula.com", true },
{ "pajadam.me", true },
{ "pajuvuo.fi", true },
- { "paketkreditsuzuki.com", true },
{ "paketo.cz", true },
- { "paketwatch.de", true },
+ { "paketo.sk", true },
+ { "paketwatch.de", false },
{ "pakho.xyz", true },
{ "pakistani.dating", true },
{ "pakitow.fr", true },
@@ -25824,10 +26263,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "palatin.at", true },
{ "palava.tv", true },
{ "palavatv.com", true },
- { "palawan.jp", false },
{ "palazzo.link", true },
{ "palazzo.work", true },
- { "paleolowcarb.de", true },
{ "paleotraining.com", true },
{ "palladium46.com", true },
{ "pallas.in", true },
@@ -25882,8 +26319,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "panthur.com.au", false },
{ "pantographe.info", true },
{ "pantou.org", false },
+ { "pants-off.xyz", true },
{ "panzer72.ru", true },
- { "paolo565.org", true },
{ "pap.la", false },
{ "papa-webzeit.de", true },
{ "papadopoulos.me", true },
@@ -25895,10 +26332,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "papelcraft.co.uk", true },
{ "paper-driver.biz", true },
{ "paper-republic.org", true },
- { "paperhaven.com.au", true },
+ { "paper.sc", true },
{ "paperhoney.by", true },
- { "papermasters.com", true },
- { "papersmart.net", true },
{ "papertracker.net", true },
{ "paperturn.com", true },
{ "paperwallets.io", true },
@@ -25920,23 +26355,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "paradiselost.com", true },
{ "paradoxdesigns.org", true },
{ "paragonie.com", false },
+ { "paragonremodeling.com", true },
{ "paragreen.net", true },
+ { "paranoidcrypto.com", true },
{ "paranoidmode.com", true },
{ "paranoidpenguin.net", true },
{ "paranoxer.hu", true },
{ "parasitologyclub.org", true },
{ "paratlan.hu", true },
{ "paratxt.org", true },
- { "parav.xyz", true },
{ "parcelbroker.co.uk", true },
{ "parchcraftaustralia.com", true },
{ "parckwart.de", true },
{ "parcon.it", true },
+ { "parentelement.com", true },
{ "parentheseardenne.be", true },
{ "parentinterview.com", true },
{ "parentsintouch.co.uk", true },
{ "pariga.co.uk", true },
{ "paris-store.com", true },
+ { "parisbloom.com", true },
{ "parisderriere.fr", true },
{ "parisescortgirls.com", true },
{ "parisfranceparking.com", true },
@@ -25945,6 +26383,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "parisfranceparking.nl", true },
{ "parisprovincedemenagements.fr", true },
{ "parkeren.in", true },
+ { "parkfans.net", true },
+ { "parkhost.eu", true },
{ "parkinginparis.fr", true },
{ "parkingpoint.co.uk", true },
{ "parkrunstats.servehttp.com", true },
@@ -25959,6 +26399,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "parolu.io", true },
{ "parquettista.milano.it", true },
{ "parquettista.roma.it", true },
+ { "parroquiasanrafaeldegramalote.com", true },
{ "parry.org", true },
{ "parsemail.org", true },
{ "parser.nu", true },
@@ -25991,14 +26432,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "partyhireliverpool.co.uk", true },
{ "partypearl.de", true },
{ "partyrocksbounce.co.uk", true },
- { "partyschnaps.com", true },
{ "partyspaces.co.uk", true },
{ "partytime-uk.co.uk", true },
{ "partytimeltd.ie", true },
{ "partytownireland.co.uk", true },
{ "partytownmarquees.co.uk", true },
{ "partyvan.io", true },
+ { "partyyy.io", true },
{ "partyzone.ie", true },
+ { "parvaneh.fr", true },
{ "pasadenapooch.org", true },
{ "pasadenasandwich.co", true },
{ "pasadenasandwichcompany.com", true },
@@ -26017,7 +26459,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pascualinmuebles.com", true },
{ "pasearch.nl", true },
{ "pashminacachemire.com", true },
- { "pasportaservo.org", true },
{ "pass.org.my", true },
{ "passabook.com", true },
{ "passcod.name", true },
@@ -26025,8 +26466,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "passfilesafe.com", true },
{ "passfoto-deinfoto.ch", true },
{ "passieposse.nl", true },
+ { "passionandbalance.com", true },
{ "passionatefoodie.co.uk", true },
{ "passionatehorsemanship.com", true },
+ { "passionatelife.com.au", true },
+ { "passionebenessere.com", true },
{ "passionpictures.eu", true },
{ "passions-art.com", true },
{ "passphrase.today", true },
@@ -26054,7 +26498,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "passwordsecurity.info", true },
{ "passworks.io", true },
{ "passy.pw", true },
- { "pasta-factory.co.il", true },
{ "pastaenprosecco.nl", true },
{ "paste.fedoraproject.org", true },
{ "paste.gg", true },
@@ -26069,12 +26512,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pastormaremanoabruzes.com.br", true },
{ "pastorsuico.com.br", true },
{ "pasztor.at", true },
+ { "patapwn.com", true },
{ "patatbesteld.nl", true },
{ "pataterosviajeros.com", true },
+ { "patbatesremodeling.com", false },
{ "patdorf.com", true },
{ "patechmasters.com", true },
{ "patentados.com", true },
- { "patentfamily.de", true },
{ "paterno-gaming.com", true },
{ "pathagoras.com", true },
{ "pathwaystoresilience.org", true },
@@ -26104,12 +26548,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "paudley.com", true },
{ "paudley.org", true },
{ "paul-bronski.de", true },
- { "paul-schmidt.de", true },
{ "paul.reviews", true },
{ "pauladamsmith.com", true },
{ "paulbakaus.com", true },
{ "paulbdelaat.nl", true },
{ "paulbramhall.uk", true },
+ { "pauldev.co", true },
+ { "paulerhof.com", true },
{ "paulewen.ca", true },
{ "paulinewesterman.nl", true },
{ "paulmeier.com", false },
@@ -26123,17 +26568,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "paulschreiber.com", true },
{ "paulscustomauto.com", true },
{ "paulswartz.net", true },
- { "paultibbetts.uk", false },
{ "paulus-foto.pl", true },
{ "paulward.net", true },
{ "paulwatabe.com", true },
{ "paulwendelboe.com", true },
+ { "pauly-stahlhandel.com", true },
+ { "pauly-stahlhandel.de", true },
{ "pauspam.net", true },
{ "pautadiaria.com", true },
{ "pavando.com", true },
{ "pavelfojt.cz", true },
{ "pavelrebrov.com", true },
- { "pavelstriz.cz", true },
{ "pavio.org", true },
{ "paw.cloud", true },
{ "paw.pt", true },
@@ -26142,7 +26587,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pawelurbanek.com", true },
{ "pawsomebox.co.uk", true },
{ "pawsr.us", true },
- { "pawsru.org", true },
{ "paxerahealth.com", true },
{ "pay.gov", true },
{ "pay8522.com", true },
@@ -26151,7 +26595,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "payboy.rocks", true },
{ "paybro.eu", true },
{ "payfazz.com", true },
- { "paykings.com", true },
{ "paylike.io", true },
{ "payloc.io", true },
{ "payme.uz", true },
@@ -26176,16 +26619,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "payupay.ru", true },
{ "payzang.com", true },
{ "payzwin.com", true },
+ { "pb.ax", false },
{ "pback.se", true },
{ "pbosquet.com", true },
{ "pbourhis.me", true },
+ { "pbqs.site", true },
{ "pbr.so", true },
{ "pbraunschdash.com", true },
{ "pbreen.co.uk", true },
{ "pbrumby.com", true },
{ "pbz.im", true },
{ "pc-rescue.me", false },
- { "pc-tablet.com", true },
+ { "pc-servis-brno.com", true },
{ "pcbricole.fr", true },
{ "pccentral.nl", true },
{ "pcdocjim.com", true },
@@ -26211,13 +26656,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pcsetting.com", true },
{ "pctonic.net", true },
{ "pctrouble.net", true },
+ { "pculiar.com", true },
{ "pdf-archive.com", true },
{ "pdfconvert.me", true },
{ "pdfmint.com", true },
{ "pdfpassword.org", true },
{ "pdfpasswort.de", true },
{ "pdfresizer.com", true },
- { "pdomo.me", true },
+ { "pdfsearches.com", true },
{ "pdox.net", true },
{ "pdragt.com", true },
{ "pdthings.net", true },
@@ -26238,12 +26684,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pebbles.net.in", true },
{ "pecker-johnson.com", true },
{ "peda.net", true },
+ { "peddy.dyndns.org", true },
{ "pedicurean.nl", true },
{ "pedicureduiven.nl", true },
{ "pedidamanosevilla.com", true },
{ "pedikura-vitu.cz", true },
{ "pedimoda.com.br", true },
{ "pedro.com.es", true },
+ { "pedrosaurus.com", true },
{ "pedrosluiter.nl", true },
{ "pedroventura.com", false },
{ "peeekaaabooo.com", true },
@@ -26282,13 +26730,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pegas-studio.net", true },
{ "pehapkari.cz", true },
{ "peifi.de", false },
- { "peinard.net", true },
{ "peippo.at", true },
{ "pekkapleppanen.fi", true },
{ "pekoe.se", true },
{ "pelanucto.cz", true },
{ "pelican.ie", true },
- { "peliseries24.com", true },
{ "pelletizermill.com", true },
{ "pelletsprice.com", true },
{ "pelopogrund.com", true },
@@ -26299,12 +26745,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pencillab.cn", true },
{ "pendriveapps.com", true },
{ "penetrationstest.se", true },
- { "penfold.fr", true },
{ "pengi.me", true },
{ "penguindrum.moe", true },
{ "penguinprotocols.com", true },
{ "penispumpen.se", true },
{ "pennergold.net", true },
+ { "pennington.io", true },
{ "pennyparkerpaper.com", true },
{ "penrithapartments.com.au", true },
{ "pens.com", true },
@@ -26325,10 +26771,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "penz.media", true },
{ "peoplelikemeapp.com", true },
{ "peoplesbankal.com", true },
+ { "peoplesdecade.org", true },
{ "peoplesguardian.org", true },
{ "pepemodelismo.com.br", true },
{ "peplog.nl", true },
{ "pepwaterproofing.com", true },
+ { "pequenosfavoritos.com.br", true },
{ "pera.gs", true },
{ "perala.me", true },
{ "peraparker.cz", true },
@@ -26348,10 +26796,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "perfektesgewicht.de", true },
{ "performancehealth.com", true },
{ "performancesantafe.org", true },
- { "performaride.com.au", true },
{ "perfumeaz.com", true },
{ "perfumes.com.br", true },
- { "periodismoactual.com", true },
{ "periscope.tv", true },
{ "perishablepress.com", true },
{ "perm-avia.ru", true },
@@ -26373,6 +26819,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "perroquet-passion.ch", true },
{ "persephone.gr", true },
{ "personal-genome.com", true },
+ { "personal-injury-attorney.co", true },
{ "personaltrainer-senti.de", true },
{ "personcar.com.br", true },
{ "perspectivum.com", true },
@@ -26388,9 +26835,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pescco.com.br", true },
{ "pestici.de", true },
{ "pestkill.info", true },
+ { "pesyun.cn", true },
{ "pet-hotel-mura.net", true },
{ "petabits.de", true },
- { "petangen.se", true },
+ { "petalkr.com", true },
{ "petcarvers.com", true },
{ "petdesign.pet", true },
{ "peteboc.com", true },
@@ -26398,16 +26846,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "petelew.is", true },
{ "peter.org.ua", true },
{ "peterandjoelle.co.uk", true },
+ { "peterboers.info", true },
{ "peterborgapps.com", true },
{ "peterbruceharvey.com", true },
{ "peterdavehello.org", true },
{ "peterfiorella.com", true },
- { "peterfolta.net", true },
{ "peterhuetz.at", true },
{ "peterhuetz.com", true },
{ "peterjohnson.io", true },
{ "peterlew.is", true },
- { "petermazur.com", true },
{ "peters.consulting", true },
{ "petersontoscano.com", true },
{ "petervanleeuwentweewielers.nl", true },
@@ -26423,9 +26870,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "petplus.com", true },
{ "petpost.co.nz", false },
{ "petpower.eu", true },
- { "petrachuk.ru", true },
{ "petrasestakova.cz", true },
- { "petravdbos.nl", true },
+ { "petresort.pt", true },
{ "petroscand.eu", true },
{ "petrostathis.com", true },
{ "petrpikora.com", true },
@@ -26437,12 +26883,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pew.ninja", true },
{ "pex.digital", true },
{ "peyote.com", true },
- { "peyote.org", true },
{ "pf.dk", true },
{ "pfa.or.jp", true },
{ "pfadfinder-aurich.de", true },
{ "pfadfinder-grossauheim.de", true },
{ "pfarchimedes-pensioen123.nl", true },
+ { "pfarre-kremsmuenster.at", true },
{ "pfcafeen.dk", true },
{ "pfd-nz.com", false },
{ "pferdekauf.de", true },
@@ -26459,7 +26905,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pfudor.tk", true },
{ "pg-forum.de", true },
{ "pg-mana.net", true },
+ { "pglandscapingpaving.com", true },
{ "pgmann.cf", true },
+ { "pgnetwork.net", true },
{ "pgp.guru", true },
{ "pgp.network", true },
{ "pgpmail.cc", true },
@@ -26471,6 +26919,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pharma-display.com", true },
{ "pharmaabsoluta.com.br", true },
{ "pharmaboard.de", true },
+ { "pharmaboard.org", true },
{ "pharmacie-fr.org", true },
{ "pharmacieplusfm.ch", true },
{ "pharmafoto.ch", true },
@@ -26511,7 +26960,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "philippinedroneassociation.org", true },
{ "philippkeschl.at", true },
{ "phillipgoldfarb.com", true },
- { "phillipsuk.com", true },
{ "phillyinjurylawyer.com", true },
{ "philna.sh", true },
{ "philosoftware.com.br", true },
@@ -26522,13 +26970,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "philsown.de", true },
{ "philsturgeon.uk", true },
{ "philux.ch", true },
- { "phippsreporting.com", true },
{ "phishing-studie.org", true },
{ "phishing.rs", true },
{ "phishingusertraining.com", true },
{ "phligence.com", true },
{ "phocean.net", true },
+ { "phoenixlogan.com", true },
{ "phone-service-center.de", true },
+ { "phonix-company.fr", true },
{ "phormance.com", true },
{ "phosagro.biz", false },
{ "phosagro.com", false },
@@ -26544,6 +26993,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "photodeal.fr", true },
{ "photographe-reims.com", true },
{ "photographersdaydream.com", true },
+ { "photography-workshops.net", true },
{ "photolium.net", true },
{ "photomodelcasting.com", true },
{ "photon.sh", true },
@@ -26564,18 +27014,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "phpprime.com", true },
{ "phpsecure.info", true },
{ "phpunit.de", true },
+ { "phr34kz.pw", true },
{ "phra.gs", true },
{ "phrive.space", true },
{ "phryanjr.com", false },
{ "phryneas.de", true },
{ "phuket-idc.com", true },
{ "phuket-idc.de", true },
+ { "phumin.in.th", true },
{ "phunehehe.net", true },
{ "phurl.de", true },
{ "phurl.io", true },
{ "phus.lu", true },
{ "physicalism.com", true },
{ "physicalist.com", true },
+ { "physicaltherapist.com", false },
{ "physicpezeshki.com", true },
{ "physiotherapie-seiwald.de", true },
{ "physiovesenaz.ch", true },
@@ -26587,9 +27040,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pianetaottica.com", true },
{ "pianetaottica.it", true },
{ "pianetatatuaggi.it", true },
+ { "pianomover.co.uk", true },
{ "pianyigou.com", true },
{ "piatabrasil.com.br", true },
- { "piatanoua.md", true },
{ "piboubes.me", true },
{ "pic.gov", true },
{ "pic.sr", true },
@@ -26619,8 +27072,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "picturingjordan.com", true },
{ "pidginhost.com", true },
{ "pidjipi.com", true },
+ { "pie-express.xxx", true },
{ "pieces-or.com", true },
- { "piedfeed.com", true },
{ "pieinsurance.com", true },
{ "piekacz.eu.org", true },
{ "piekacz.net", true },
@@ -26644,13 +27097,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pietermaene.be", false },
{ "pietz.uk", true },
{ "pigritia.de", true },
- { "piils.fr", true },
+ { "pigs.pictures", true },
{ "pijuice.com", true },
{ "pik.bzh", true },
{ "pikeitservices.com.au", true },
{ "pikimusic.moe", true },
{ "pilani.ch", true },
{ "pilarguineagil.com", true },
+ { "pilatescenteraz.com", true },
{ "pildat.org", true },
{ "pileofgarbage.net", true },
{ "piliszek.net", true },
@@ -26671,7 +27125,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pineapplesapp.com", true },
{ "pinemountainnursery.com.au", true },
{ "pinemountbaptistchurch.org", true },
- { "pinesandneedles.com", true },
{ "pingworks.com", true },
{ "pingworks.de", true },
{ "pingworks.eu", true },
@@ -26688,13 +27141,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pinklecfest.org", true },
{ "pinklittlenotebook.com", true },
{ "pinkwalk.co.nz", true },
- { "pinkyf.com", true },
{ "pinnaclelife.co.nz", true },
{ "pinnaclelife.nz", true },
{ "pinnacles.com", true },
{ "pinner.io", true },
{ "pinoydailytvshow.net", true },
- { "pinoylinux.org", true },
+ { "pinoyonlinetv.com", true },
{ "pinoytech.ph", true },
{ "pinpayments.com", true },
{ "pinpointengineer.co.uk", true },
@@ -26708,7 +27160,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pinterest.ie", true },
{ "pinterest.info", true },
{ "pinterest.jp", true },
- { "pintoselectrician.co.za", true },
+ { "pintosplumbing.co.za", true },
{ "pioneer-car.eu", true },
{ "pioneer-rus.ru", true },
{ "pipocao.com", true },
@@ -26720,6 +27172,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pirateproxy.cam", true },
{ "pirateproxy.cat", true },
{ "pirateproxy.cc", true },
+ { "pirateproxy.gdn", true },
{ "pirateproxy.ist", true },
{ "pirateproxy.la", true },
{ "pirateproxy.one", true },
@@ -26749,12 +27202,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pittmantraffic.co.uk", true },
{ "pivotaltracker.com", true },
{ "pivotanimation.org", true },
+ { "piwko.co", true },
{ "pix5.de", true },
{ "pixabay.com", true },
+ { "pixe2019.org", true },
{ "pixel.facebook.com", false },
{ "pixel.google.com", true },
{ "pixelbash.de", true },
- { "pixelesque.uk", true },
+ { "pixelcubed.com", true },
{ "pixelfou.com", true },
{ "pixelminers.net", true },
{ "pixelpirat.ch", true },
@@ -26768,6 +27223,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pixivimg.me", true },
{ "pixloc.fr", true },
{ "pizala.de", true },
+ { "pizza-show.fr", true },
{ "pizzabesteld.nl", true },
{ "pizzabottle.com", false },
{ "pizzacook.ch", true },
@@ -26776,6 +27232,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pizzagigant.hu", true },
{ "pizzahut.ru", true },
{ "pizzalongaway.it", true },
+ { "pizzamc.eu", true },
{ "pizzeria-mehrhoog.de", true },
{ "pizzeriaamadeus.hr", true },
{ "pizzeriacolore.com", true },
@@ -26786,7 +27243,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pj00600.com", true },
{ "pj00700.com", true },
{ "pj00800.com", true },
+ { "pj009.com", true },
{ "pj00900.com", true },
+ { "pj02.com", true },
{ "pj539999.com", true },
{ "pjentertainments.co.uk", true },
{ "pjili.com", true },
@@ -26798,10 +27257,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pkbjateng.or.id", true },
{ "pkgt.de", false },
{ "pkirwan.com", true },
+ { "pkisolutions.com", true },
{ "pko.ch", true },
{ "pkov.cz", true },
{ "pkphotobooths.co.uk", true },
- { "pksps.com", true },
{ "pl-cours.ch", true },
{ "pl.search.yahoo.com", false },
{ "placasonline.com.br", true },
@@ -26819,11 +27278,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "plainmark.com", true },
{ "plaintech.net.au", true },
{ "plaintray.com", true },
+ { "plaisirdumouvement.com", true },
{ "plan-immobilier.fr", true },
{ "planboardapp.com", true },
{ "planecon.nz", true },
{ "planeexplanation.com", true },
{ "planer.me", true },
+ { "planespotterblog.de", true },
{ "planet-laas.de", true },
{ "planet-work.com", true },
{ "planetanim.fr", true },
@@ -26837,8 +27298,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "planeteroliste.fr", true },
{ "planetknauer.net", true },
{ "planetofthegames.tv", true },
- { "planetromeo.com", true },
{ "planetromeofoundation.org", true },
+ { "planetsoftware.com.au", true },
{ "planformation.com", true },
{ "planify.io", true },
{ "planitz.com", true },
@@ -26852,11 +27313,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "plant-gift.jp", true },
{ "plantarum.com.br", true },
{ "plantastique.ch", true },
+ { "plantastique.com", true },
{ "planteforum.no", true },
{ "plantes.ch", true },
{ "plantezcheznous.com", true },
{ "plantrustler.com", true },
{ "planujemywesele.pl", true },
+ { "planup.fr", true },
{ "plaque-funeraire.fr", true },
{ "plassmann.ws", true },
{ "plasti-pac.ch", true },
@@ -26879,24 +27342,25 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "playanka.com", true },
{ "playawaycastles.co.uk", true },
{ "playdaysparties.co.uk", true },
+ { "playerdb.co", true },
{ "playerscout.net", true },
{ "playform.cloud", true },
{ "playhappywheelsunblocked.com", true },
{ "playkh.com", true },
{ "playkinder.com", true },
+ { "playnation.io", true },
{ "playocean.net", true },
{ "playpirates.com", true },
{ "playreal.city", true },
{ "playsharp.com", true },
{ "playsnake.org", true },
- { "playsoundevents.be", true },
{ "playtictactoe.org", true },
{ "playtimebouncycastles.co.uk", true },
- { "playyou.be", true },
+ { "playupnow.com", true },
{ "playzonecastles.co.uk", true },
+ { "plazasummerlin.com", true },
{ "pld-entertainment.co.uk", true },
{ "pldx.org", true },
- { "pleaseuseansnisupportedbrowser.ml", true },
{ "plegro.com", true },
{ "pleiades.com.tr", true },
{ "pleier-it.de", false },
@@ -26912,8 +27376,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "plissee-experte.de", true },
{ "plitu.de", true },
{ "plixer.com", true },
+ { "plny.eu", true },
{ "plob.org", true },
{ "plochka.bg", true },
+ { "plokko.com", true },
{ "plongee-phuket.fr", true },
{ "ploofer.com", true },
{ "plot.ly", true },
@@ -26933,21 +27399,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "plumbingbenoni.co.za", true },
{ "plumbingcentral.com.au", true },
{ "plumbingglenvista.co.za", true },
- { "plumbingman.com.au", true },
{ "plumlocosoft.com", true },
{ "plumnet.ch", true },
{ "plumpie.net", false },
{ "plumplat.com", true },
{ "plur.com.au", true },
{ "plural.cafe", true },
+ { "plurr.me", true },
{ "plus-5.com", true },
{ "plus.google.com", false },
{ "plus.sandbox.google.com", true },
- { "pluscbdoil.com", false },
+ { "pluscbdoil.com", true },
{ "plushev.com", true },
{ "pluslink.co.jp", true },
{ "plusstreamfeed.appspot.com", true },
+ { "plustech.id", true },
{ "pluta.net", true },
+ { "plutiedev.com", true },
{ "pluto.life", true },
{ "plutokorea.com", true },
{ "plutopia.ch", true },
@@ -26975,7 +27443,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pmg-purchase.com", true },
{ "pmg-purchase.net", true },
{ "pmgnet.de", true },
+ { "pmheart.site", true },
{ "pmklaassen.com", true },
+ { "pmnaish.co.uk", true },
{ "pmoreau.org", true },
{ "pmp-art.com", true },
{ "pmponline.de", true },
@@ -27002,7 +27472,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pochaneko.com", true },
{ "pocitacezababku.cz", true },
{ "pocketfruity.com", true },
- { "pocketfullofapps.com", true },
+ { "pocketinsure.com", true },
{ "podemos.info", true },
{ "podia.com.gr", false },
{ "podroof.com", true },
@@ -27016,7 +27486,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "poezja.com.pl", true },
{ "poezjagala.pl", true },
{ "poffenhouse.ddns.net", true },
- { "pogoswine.com", true },
+ { "pogera.com", true },
{ "pogrebisky.net", true },
{ "pohlmann.io", true },
{ "poinsot.info", true },
@@ -27030,6 +27500,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "poitiers-ttacc-86.eu.org", true },
{ "pojer.me", true },
{ "pokalsocial.de", true },
+ { "pokazy-iluzji.pl", true },
{ "pokefarm.com", true },
{ "pokeinthe.io", true },
{ "pokemondb.net", true },
@@ -27041,7 +27512,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "polanda.com", true },
{ "polar.uk.com", true },
{ "pole-emotion.ch", true },
- { "pole.net.nz", true },
{ "poleacademie.com", true },
{ "poles4pilots.com", true },
{ "policedriver.com", true },
@@ -27063,6 +27533,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "polishwomen.com", true },
{ "polit.im", true },
{ "politic.org.ua", true },
+ { "politicachubut.com.ar", true },
{ "politiezoneriho.be", true },
{ "politik-bei-uns.de", true },
{ "polizeiwallis.ch", true },
@@ -27073,21 +27544,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "polletmera.com", true },
{ "polleverywhere.com", true },
{ "pollingplace.uk", true },
+ { "polly.spdns.org", true },
{ "poloniainfo.com", true },
{ "poloniex.co.za", true },
+ { "polska-robota.com.ua", true },
{ "polskiemalzenstwo.org", true },
{ "poly-fast.com", true },
{ "polycraftual.co.uk", true },
{ "polyfill.io", true },
- { "polyfluoroltd.com", true },
+ { "polyfluoroltd.com", false },
{ "polygamer.net", true },
{ "polymake.org", true },
{ "polymathematician.com", true },
{ "polynomapp.com", true },
{ "polypane.rocks", true },
{ "polypet.com.sg", true },
+ { "polyr.xyz", true },
{ "polytarian.com", true },
- { "polytechecosystem.vc", true },
{ "polytekniskforening.dk", true },
{ "pomar.club", false },
{ "pomardaserra.com", true },
@@ -27110,6 +27583,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ponydesignclub.nl", true },
{ "ponyfoo.com", true },
{ "ponzi.life", true },
+ { "poodlefan.net", true },
{ "pookl.com", true },
{ "poolspondsandwaterscapes.com", true },
{ "poolvilla-margarita.net", false },
@@ -27120,7 +27594,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pop3.jp", true },
{ "popcat.ru", true },
{ "popcornpalacefundraising.com", true },
- { "popcultureshack.com", true },
{ "popeyes.com", true },
{ "popinga.it", true },
{ "popmagz.com", true },
@@ -27134,18 +27607,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "porg.es", true },
{ "pork.org.uk", true },
{ "porkel.de", true },
- { "porn77.info", true },
- { "pornbay.org", true },
- { "porncandi.com", true },
- { "pornfacefinder.com", true },
+ { "pornfacefinder.com", false },
{ "pornhubhd.biz", true },
{ "porniwi.com", true },
{ "pornloupe.com", true },
- { "porno-gif.ru", true },
- { "pornohub.su", true },
- { "pornolab-net.appspot.com", false },
{ "pornomens.be", true },
- { "pornoserver.eu", true },
{ "pornspider.to", true },
{ "porpcr.com", true },
{ "pors-sw.cz", true },
@@ -27156,11 +27622,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "port80.hamburg", true },
{ "portablebuildingsales.co.uk", true },
{ "portablespeakersfinder.com", true },
+ { "portailevangelique.ca", true },
{ "portal.tirol.gv.at", true },
{ "portalcarriers.com", true },
{ "portalcentric.net", true },
- { "portalhubnuti.cz", false },
{ "portalkla.com.br", true },
+ { "portalveneza.com.br", true },
{ "portalzine.de", true },
{ "portamiinpista.it", true },
{ "porte.roma.it", true },
@@ -27168,6 +27635,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "porterranchelectrical.com", true },
{ "portofacil.com", true },
{ "portofala.pt", true },
+ { "portofrotterdam.com", false },
{ "portosonline.pl", true },
{ "portraitsystem.biz", true },
{ "portsdebalears.gob.es", true },
@@ -27175,11 +27643,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "portsmoutheic.com", true },
{ "portugal-a-programar.pt", true },
{ "portugalsko.net", true },
+ { "portvincentcaravanpark.com.au", true },
{ "porybox.com", true },
{ "pos.co.tz", true },
{ "posalji.me", true },
{ "posaunenchor-senden.de", true },
- { "posbank.co.uk", true },
{ "poseidonwaterproofing.com", true },
{ "poshcastles.co.uk", true },
{ "poshlashes.se", true },
@@ -27187,7 +27655,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "posijson.stream", true },
{ "positionus.io", true },
{ "positive.com.cy", true },
- { "positivesobrietyinstitute.com", true },
+ { "positivenames.net", true },
{ "posobota.cz", true },
{ "posoiu.net", true },
{ "post-darwinian.com", true },
@@ -27199,7 +27667,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "postblue.info", true },
{ "postbox.life", true },
{ "postcode.nl", true },
- { "postcodewise.co.uk", true },
{ "postdarwinian.com", true },
{ "postdarwinism.com", true },
{ "postdeck.de", true },
@@ -27219,10 +27686,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "potature.rimini.it", true },
{ "potature.roma.it", true },
{ "potentialproject.com", false },
- { "potenzmittel-levitra.com", true },
- { "potenzmittel-webshop.com", true },
- { "potenzmittelblog.info", true },
- { "potenzpillen-kaufen.biz", true },
{ "potenzprobleme-info.net", true },
{ "pothe.com", true },
{ "pothe.de", true },
@@ -27232,12 +27695,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pottersheartministry.org", true },
{ "pottshome.co.uk", true },
{ "potworowski.de", true },
+ { "potzwonen.nl", true },
{ "poudlard.fr", true },
+ { "poundwholesale.co.uk", true },
{ "pour-la-culture-aulnay.fr", true },
{ "pourlesenfants.info", true },
{ "pouwels-oss.nl", true },
{ "povareschka.ru", true },
{ "povesham.tk", true },
+ { "pow-s.com", true },
+ { "pow.jp", true },
{ "powelljones.co.uk", true },
{ "power-coonies.de", true },
{ "power-fit.org", true },
@@ -27252,10 +27719,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "powermatic7.com", true },
{ "powermeter.at", true },
{ "powermint.de", true },
+ { "powerplaywashers.com", true },
{ "powerpointschool.com", true },
{ "powerserg.org", true },
{ "powersergdatasystems.com", true },
{ "powersergholdings.com", true },
+ { "powersergthisisthewebsitefuckyouscott.com", true },
{ "powersergusercontent.com", true },
{ "powertothebuilder.com", true },
{ "powerwellness-korecki.de", true },
@@ -27264,13 +27733,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pozzitiv.ro", true },
{ "pp3345.net", true },
{ "ppcrestaurants.com", true },
- { "ppembed.com", true },
{ "ppipe.net", true },
+ { "pplsoft.nl", true },
{ "pplsvc.com", true },
{ "ppmathis.ch", true },
{ "ppmathis.com", true },
{ "ppmoon.com", true },
+ { "ppoozl.com", true },
{ "ppro.com", true },
+ { "ppsvcs2.com", true },
{ "pptavmdata.org", true },
{ "ppy.la", true },
{ "ppy.sh", true },
@@ -27297,6 +27768,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "praxino.de", true },
{ "praxis-dingeldey.de", true },
{ "praxis-familienglueck.de", true },
+ { "praxis-odermath.de", true },
{ "prayerrequest.com", true },
{ "prazeresdavida.com.br", true },
{ "prazynka.pl", true },
@@ -27313,6 +27785,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pregono.com", true },
{ "pregunteleakaren.gov", true },
{ "preigu.de", true },
+ { "preio.cn", true },
{ "preis-alarm.info", true },
{ "preis-alarm.org", true },
{ "preloaded-hsts.badssl.com", true },
@@ -27326,7 +27799,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "prelved.nl", true },
{ "prelved.pl", true },
{ "prelved.se", true },
- { "premaritalsex.info", true },
{ "prematureacceleration.club", true },
{ "premierbouncycastles.co.uk", true },
{ "premieresloges.ca", false },
@@ -27339,19 +27811,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "prenatalgeboortekaartjes.nl", true },
{ "prepaid-cards.xyz", true },
{ "prepaid-voip.nl", true },
- { "prepaidgirl.com", true },
{ "prepaidkredietkaart.be", true },
{ "prepare-job-hunting.com", true },
{ "presbee.com", true },
{ "prescotonline.co.uk", true },
- { "prescriptionrex.com", true },
{ "present-m.com", true },
{ "presentesdegrife.com.br", true },
{ "president.bg", true },
{ "prespanok.sk", true },
+ { "pressakey.com", true },
+ { "pressakey.de", true },
{ "presscenter.jp", true },
{ "pressertech.com", true },
{ "presses.ch", true },
+ { "presskr.com", true },
{ "pressography.org", true },
{ "pressrush.com", true },
{ "pressup.it", true },
@@ -27373,18 +27846,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pretzelx.com", true },
{ "prevenir.ch", true },
{ "preview-it-now.com", true },
- { "priceremoval.net", true },
{ "pricesniffer.co", true },
{ "prideindomination.com", true },
- { "pridetechdesign.com", true },
{ "prielwurmjaeger.de", true },
{ "primaconsulting.net", true },
{ "primalbase.com", true },
{ "primalinea.pro", true },
{ "primates.com", true },
{ "primewho.org", true },
- { "primordialsnooze.com", true },
{ "primorus.lt", true },
+ { "primotilesandbathrooms.co.uk", false },
{ "princeagency.com", true },
{ "princesparktouch.com", true },
{ "princessefoulard.com", true },
@@ -27403,7 +27874,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "printerleasing.be", true },
{ "printexpress.cloud", true },
{ "printf.de", true },
- { "printler.com", true },
{ "printmet.com", true },
{ "printus.de", true },
{ "prior-it.be", true },
@@ -27430,6 +27900,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "prioritynissannewportnewsparts.com", true },
{ "prismacloud.com", true },
{ "prismacloud.green", true },
+ { "prismacloud.xyz", true },
{ "pristal.eu", true },
{ "pristinegreenlandscaping.com", true },
{ "priv.im", true },
@@ -27437,6 +27908,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "privacy-week.at", true },
{ "privacy.com", true },
{ "privacybadger.org", true },
+ { "privacychick.com", true },
+ { "privacychick.io", true },
{ "privacyforjournalists.org.au", true },
{ "privacyinternational.org", true },
{ "privacyscore.org", true },
@@ -27449,7 +27922,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "privatebanks.uk", true },
{ "privatebin.info", true },
{ "privatecapsecurity.org", true },
- { "privategiant.com", true },
{ "privateideas.de", true },
{ "privateimarketing.com", true },
{ "privatepokertour.com", true },
@@ -27458,6 +27930,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "privatewolke.com", true },
{ "privatfrei.de", true },
{ "privatpatient-krankenhaus.de", true },
+ { "privcloud.cc", true },
{ "privea.fr", true },
{ "privelust.nl", true },
{ "priverify.com", true },
@@ -27476,11 +27949,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pro-mile.pl", true },
{ "pro-netz.de", false },
{ "pro-wiert.pl", true },
+ { "proadvanced.com", true },
{ "proautorepairs.com.au", true },
{ "probase.ph", true },
{ "probely.com", true },
{ "probiv.biz", true },
{ "probiv.cc", true },
+ { "procarservices.com", true },
{ "procens.us", true },
{ "procensus.com", true },
{ "procert.ch", true },
@@ -27488,6 +27963,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "procharter.com", true },
{ "procinorte.net", true },
{ "proclib.org", true },
+ { "procrastinatingengineer.co.uk", true },
{ "procrastinationland.com", true },
{ "procreditbank.com.al", true },
{ "proctorio.com", true },
@@ -27496,6 +27972,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "prodietix.cz", true },
{ "prodigia.com", false },
{ "prodinger.com", true },
+ { "prodottogiusto.com", true },
{ "prodsim.ninja", true },
{ "producepromotions.com", true },
{ "producertools.io", true },
@@ -27539,35 +28016,38 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "progiscad.com", true },
{ "programistka.com", true },
{ "programlama.tk", true },
- { "programmaticmagic.com", true },
{ "programsupport300procent.com", true },
{ "progreso.pl", true },
{ "progress-linux.org", true },
{ "progress.photos", true },
{ "progressive.work", true },
{ "progressiveplanning.com", true },
+ { "progressnet.nl", true },
{ "prohrcloud.com", true },
{ "proimpact.it", true },
- { "project-rune.tech", true },
- { "project-splash.com", true },
{ "project.supply", true },
{ "projectarmy.net", false },
{ "projectblackbook.us", true },
+ { "projectborealisgitlab.site", true },
{ "projectcastle.tech", true },
{ "projectforge.org", true },
+ { "projectlinuseasttn.org", true },
{ "projectnom.com", true },
{ "projectsecretidentity.com", true },
{ "projectsecretidentity.org", true },
{ "projectunity.io", true },
{ "projektarbeit-projektplanung.de", true },
- { "projektzentrisch.de", true },
{ "projest.ch", true },
{ "projet-fly.ch", true },
{ "prok.pw", true },
+ { "prolan.pw", true },
{ "prolearningcentre.com", true },
{ "prometheanfire.net", true },
{ "prometheanfire.org", true },
{ "promisesaplus.com", true },
+ { "promo-brille.at", true },
+ { "promo-brille.ch", true },
+ { "promo-brille.de", true },
{ "promo-computers.nl", true },
{ "promo-matelas.com", true },
{ "promods.net", true },
@@ -27575,11 +28055,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "promolover.com", true },
{ "promopony.com", true },
{ "promoscuola.net", true },
+ { "promoteiq.com", true },
{ "promoterms.com.au", true },
{ "promotioncentre.co.uk", true },
{ "promozione.info", true },
{ "pronostic-king.fr", true },
{ "pronto-intervento.net", true },
+ { "prontointerventoimmediato.it", true },
{ "prontossl.com", true },
{ "proobec.cz", true },
{ "proofwiki.org", true },
@@ -27592,6 +28074,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "properticons.com", true },
{ "property-catalogue.eu", true },
{ "propertygroup.pl", true },
+ { "propertyinside.id", true },
{ "propertyone.mk", true },
{ "prophiler.de", true },
{ "propipesystem.com", true },
@@ -27600,17 +28083,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "proprietairesmaisons.fr", true },
{ "propseller.com", true },
{ "proseandleprechauns.com", true },
+ { "prosharp.com.au", true },
{ "prospanek.cz", true },
{ "prosperontheweb.com", true },
{ "prospo.co", true },
{ "prostohobby.ru", true },
- { "prostoporno.net", true },
{ "prostoporno.sexy", true },
{ "prostye-recepty.com", true },
{ "prosurveillancegear.com", true },
{ "prot.ch", true },
{ "protectem.de", true },
{ "protectoraanimalesalicante.org", true },
+ { "protectr.de", true },
{ "protege.moi", true },
{ "protegetudescanso.com", true },
{ "protein-riegel-test.de", true },
@@ -27632,15 +28116,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "provectus.de", true },
{ "proveits.me", false },
{ "provence-appartements.com", true },
+ { "providencecmc.com", true },
{ "providerlijst.com", true },
{ "providerlijst.nl", true },
{ "provision-isr.nl", true },
- { "provisionircd.tk", true },
{ "provitec.com", true },
{ "provitec.de", true },
{ "provokator.co.il", true },
{ "prowebcenter.com", true },
{ "prowise.com", true },
+ { "prowise.me", true },
{ "proximityradio.fr", true },
{ "proxybay.bz", true },
{ "proxybay.co", true },
@@ -27683,9 +28168,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "psdsuc.com", true },
{ "pself.net", true },
{ "pseta.ru", true },
- { "pseudo.coffee", true },
{ "psg.bg", true },
+ { "pshostpk.com", true },
+ { "psici.eu", true },
{ "psicoexpansao.com.br", true },
+ { "psicologajanainapresotto.com.br", true },
{ "psicologasandrabernal.es", true },
{ "psicologoforensemadrid.com", true },
{ "psm.org.ph", true },
@@ -27696,6 +28183,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pssgcsim.org", true },
{ "pst.moe", true },
{ "pste.pw", true },
+ { "pstrozniak.com", true },
{ "psu.je", true },
{ "psw-consulting.de", true },
{ "psw-group.de", true },
@@ -27710,25 +28198,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "psycho-lobby.com", true },
{ "psycho.space", true },
{ "psychoactive.com", true },
+ { "psychologie-hofner.at", true },
{ "psychotherapie-kp.de", true },
{ "psydix.org", true },
{ "psylab.cc", true },
{ "psylab.re", true },
{ "psylab.vip", true },
{ "psytrance-pro.com", true },
+ { "pt-d.ru", true },
{ "pt-server.de", true },
{ "ptal.eu", true },
{ "ptbi.org.pl", true },
{ "ptbx.co", true },
{ "pterodactylus.cz", true },
+ { "ptfiber.com", true },
+ { "ptfiber.ru", true },
+ { "ptfiber.spb.ru", true },
{ "ptgoldensun.com", true },
{ "pthsec.com", true },
{ "ptm.ro", false },
{ "ptmarquees.ie", true },
+ { "ptrbrs.nl", true },
{ "ptrl.ws", true },
{ "ptron.org", true },
+ { "pty.gg", true },
{ "puac.de", true },
- { "pub-online.ro", true },
{ "pubean.com", true },
{ "pubi.me", true },
{ "publanda.nl", true },
@@ -27744,12 +28238,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "publicrea.com", true },
{ "publicsuffix.org", true },
{ "publiq.space", true },
- { "publishingshack.com", true },
+ { "pubmire.com", true },
{ "pubreview.com.au", true },
{ "pubreviews.com", true },
{ "pucchi.net", true },
{ "pucssa.org", true },
{ "puddis.de", true },
+ { "puggan.se", true },
{ "pugovka72.ru", true },
{ "puhka.me", true },
{ "puissancemac.ch", true },
@@ -27773,7 +28268,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pure-gmbh.com", true },
{ "purecabo.com", true },
{ "pureessentialoil.biz", true },
- { "pureholisticliving.me", true },
+ { "purefkh.xyz", true },
{ "pureitsolutionsllp.com", true },
{ "purelunch.co.uk", true },
{ "purevapeofficial.com", true },
@@ -27783,6 +28278,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "purplebricks.com", true },
{ "purplebricks.com.au", true },
{ "purplebricksplc.com", true },
+ { "purplegrapegames.com", true },
{ "purplemet.com", true },
{ "purplemoon.ch", true },
{ "purplemoon.mobi", true },
@@ -27799,12 +28295,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pusatinkubatorbayi.com", true },
{ "pushers.com.mx", true },
{ "pushrax.com", true },
+ { "pusichatka.ddns.net", true },
{ "put.moe", true },
{ "put.re", true },
{ "putatara.net", true },
{ "putman-it.nl", true },
{ "putney.io", true },
{ "putomani.rs", true },
+ { "putrock.be", true },
{ "puurwonengeldrop.nl", false },
{ "puxlit.net", true },
{ "puyallupnissanparts.com", true },
@@ -27820,10 +28318,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pvpcraft.ca", true },
{ "pvpctutorials.de", true },
{ "pvtschlag.com", true },
+ { "pwaresume.com", true },
{ "pwdsafe.com", true },
{ "pwe.vision", true },
+ { "pwnedpass.tk", true },
{ "pwnies.dk", true },
{ "pwolk.com", true },
+ { "pxl.cl", true },
{ "pxx.io", true },
{ "py-amf.org", true },
{ "py.search.yahoo.com", false },
@@ -27836,12 +28337,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "pypi.io", true },
{ "pypi.org", true },
{ "pypi.python.org", true },
+ { "pyramidsofchi.com", true },
+ { "pyrios.pro", true },
{ "pyrotechnologie.de", true },
{ "pysays.net", true },
{ "pyspace.org", true },
{ "python-hyper.org", true },
{ "python.org", false },
{ "pyzlnar.com", true },
+ { "pzpittsburgh.com", true },
{ "pzsearch.nl", true },
{ "q-inn.com", true },
{ "q-inn.nl", true },
@@ -27856,8 +28360,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qaconstrucciones.com", true },
{ "qadmium.com", true },
{ "qambarraza.com", true },
- { "qamrulhaque.com", true },
{ "qapital.com", true },
+ { "qaz.cloud", true },
{ "qbeing.info", true },
{ "qbiju.com.br", true },
{ "qbus.pl", true },
@@ -27873,7 +28377,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qcstudentcenter.com", true },
{ "qcstyleacademy.com", true },
{ "qctravelschool.com", true },
- { "qdon.space", true },
+ { "qdon.space", false },
{ "qedcon.org", false },
{ "qelectrotech.org", true },
{ "qetesh.de", true },
@@ -27883,10 +28387,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qhse-professionals.nl", true },
{ "qianalysis.com", true },
{ "qianqiao.me", true },
+ { "qiaohong.org", true },
{ "qicomidadeverdade.com.br", true },
{ "qifu.me", true },
- { "qifu.org.cn", true },
{ "qiliang.wang", true },
+ { "qingcao.org", true },
{ "qingpat.com", true },
{ "qingpei.me", true },
{ "qionouu.cn", true },
@@ -27898,10 +28403,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qiwi.be", true },
{ "qixi.biz", true },
{ "qkka.org", true },
+ { "qkmortgage.com", true },
{ "qldconservation.org.au", true },
{ "qldformulaford.org", true },
+ { "qledtech.com", false },
{ "qlrace.com", false },
{ "qm-marzahnnordwest.de", true },
+ { "qnq.moe", true },
{ "qochealth.com", true },
{ "qoml.net", true },
{ "qonto.eu", true },
@@ -27911,9 +28419,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qq-navi.com", true },
{ "qq52o.me", true },
{ "qqrss.com", true },
- { "qqvips.com", true },
- { "qqvrsmart.cn", true },
{ "qr-city.org", true },
+ { "qr.cl", true },
+ { "qrbird.com", true },
{ "qrcontagion.com", true },
{ "qrpth.eu", true },
{ "qruiser.com", true },
@@ -27921,7 +28429,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qtacairsoft.com", true },
{ "qtl.me", true },
{ "qtn.net", true },
- { "qto.com", true },
{ "qto.net", true },
{ "qtpass.org", true },
{ "qtpower.co.uk", true },
@@ -27939,6 +28446,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qualityhomesystems.com", true },
{ "qualityofcourse.com", true },
{ "qualitypropertycare.co.uk", true },
+ { "qualpay.biz", true },
{ "qualtrics.com", true },
{ "quant-labs.de", true },
{ "quantaloupe.tech", true },
@@ -27965,23 +28473,28 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qubes-os.org", true },
{ "qubyte.codes", true },
{ "quchao.com", true },
+ { "queene.eu", true },
{ "queensrdapartments.com.au", true },
{ "queer.party", true },
{ "queercinema.ch", true },
{ "queercoders.com", false },
+ { "queextensiones.com", true },
{ "quehacerencusco.com", true },
+ { "quelle.at", true },
+ { "quelle.ch", true },
+ { "quelle.de", true },
{ "quelleformation.net", true },
{ "quemeloquitan.com", true },
{ "queminventou.com.br", true },
{ "quemmeliga.com", true },
{ "quenotejodan.cl", true },
{ "quentinchevre.ch", true },
+ { "queo.com.co", true },
{ "quera.ir", true },
{ "querkommentar.de", true },
{ "query-massage.com", true },
{ "question.com", true },
{ "questionable.host", true },
- { "questionyu.com", true },
{ "questsocial.it", true },
{ "quevisiongrafica.com", true },
{ "quic.stream", true },
@@ -28001,22 +28514,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "quire.io", true },
{ "quisido.com", true },
{ "quitarlasmanchasde.com", true },
+ { "quitimes.com", true },
{ "quizogames.com", true },
+ { "quizstore.net", true },
{ "qul.link", true },
{ "quli.nl", false },
{ "qunzi.la", true },
{ "quocdesign.ch", true },
+ { "quoteidiot.com", true },
{ "quotev.com", true },
{ "quppa.net", true },
{ "quuz.org", true },
{ "qvggroup.com", true },
{ "qvi.st", true },
{ "qvitoo.com", true },
- { "qwallet.ca", true },
{ "qwans.nl", true },
{ "qwant.com", true },
{ "qwant.fr", true },
- { "qwaser.fr", true },
{ "qwdqwd.de", true },
{ "qwe7002.com", true },
{ "qweepi.de", false },
@@ -28028,20 +28542,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "qx.fi", true },
{ "qx.se", true },
{ "qxy.ch", true },
+ { "r-ay.cn", true },
{ "r-rwebdesign.com", true },
{ "r-t-b.fr", true },
- { "r0t.co", true },
{ "r0uzic.net", true },
{ "r1ch.net", true },
{ "r2d2pc.com", true },
{ "r33.space", true },
+ { "r3bl.blog", true },
+ { "r3bl.me", true },
{ "r3nt3r.com", true },
{ "r3s1stanc3.me", true },
{ "r40.us", true },
{ "r6-team.ru", true },
+ { "r7.com.au", true },
{ "r7h.at", true },
{ "r811.de", true },
{ "ra-micro-koeln.de", true },
+ { "ra-schaal.de", false },
{ "ra.co.ke", true },
{ "ra.vc", true },
{ "ra4wvpn.com", true },
@@ -28052,6 +28570,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rabotaescort.com", true },
{ "rabynska.eu", true },
{ "raccoltarifiuti.com", true },
+ { "racdek.com", true },
+ { "racdek.nl", true },
{ "racermaster.xyz", true },
{ "racesport.nl", false },
{ "raceviewcycles.com", true },
@@ -28068,9 +28588,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "raclet.co.uk", true },
{ "raconconsulting.co.uk", true },
{ "racoo.net", true },
+ { "racozo.com", true },
{ "racunovodstvo-prina.si", true },
{ "radar.sx", true },
{ "radaravia.ru", true },
+ { "radarnext.com", true },
{ "radartatska.se", true },
{ "radartek.com", true },
{ "radcube.hu", true },
@@ -28091,7 +28613,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "radionicabg.com", true },
{ "radiopolarniki.spb.ru", true },
{ "radiormi.com", true },
- { "radiorsvp.com", true },
+ { "radiosendungen.com", true },
{ "radis-adopt.com", true },
{ "radiumtree.com", true },
{ "radondetectionandcontrol.com", true },
@@ -28104,6 +28626,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rafaelmagalhaesweb.com", true },
{ "rafey.xyz", true },
{ "raffaellaosti.com", true },
+ { "raft.pub", true },
{ "rafting-japan.com", true },
{ "ragasto.nl", true },
{ "rage-overload.ch", true },
@@ -28111,14 +28634,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rage4.com", true },
{ "raghavdua.in", true },
{ "rahulpnath.com", true },
- { "rai-co.net", true },
{ "raidensnakesden.co.uk", true },
{ "raidensnakesden.com", true },
{ "raidensnakesden.net", true },
+ { "raidstone.net", true },
{ "raiffeisen-kosovo.com", true },
+ { "rail-o-rama.nl", true },
+ { "rail24.nl", true },
+ { "rail360.nl", true },
+ { "railbird.nl", true },
{ "railgun.ac", true },
{ "railjob.cn", true },
+ { "railorama.nl", true },
+ { "railpassie.nl", true },
{ "railtoo.com", true },
+ { "railvideo.co.uk", true },
+ { "railvideo.net", true },
+ { "railvideo.nl", true },
{ "railwaytech.net", true },
{ "railyardurgentcare.com", true },
{ "raimixmotoparts.com.br", true },
@@ -28155,11 +28687,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "raltha.com", true },
{ "ram-it.nl", true },
{ "ram.nl", true },
- { "ramatola.uk", true },
{ "rambii.de", true },
- { "ramblingrf.tech", true },
{ "rambo.codes", true },
- { "ramezanloo.com", false },
+ { "ramitmittal.com", true },
{ "rammstein-portugal.com", true },
{ "ramrecha.com", true },
{ "ramsor-gaming.de", true },
@@ -28177,6 +28707,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rangsmo.se", true },
{ "rank-net.de", true },
{ "ranking-deli.jp", true },
+ { "ranktopay.com", true },
{ "ranson.com.au", true },
{ "rantanda.com", true },
{ "rante.com", true },
@@ -28206,6 +28737,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rascalscastles.co.uk", true },
{ "rascalscastlesdoncaster.co.uk", true },
{ "rasebo.ro", true },
+ { "raspii.tech", true },
{ "rastreie.net", true },
{ "rasty.cz", true },
{ "ratd.net", true },
@@ -28230,6 +28762,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "raviparekh.co.uk", true },
{ "ravis.org", true },
{ "rawdutch.nl", true },
+ { "rawinfosec.com", true },
{ "rawsec.net", true },
{ "raxion.cf", true },
{ "raxion.tk", true },
@@ -28250,6 +28783,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "razeen.me", true },
{ "razeencheng.com", true },
{ "raziskovalec-resnice.com", true },
+ { "rbcservicehub-uat.azurewebsites.net", true },
{ "rbensch.com", true },
{ "rbflote.lv", true },
{ "rbltracker.com", true },
@@ -28261,12 +28795,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rc-offi.net", true },
{ "rc-rp.com", true },
{ "rc-shop.ch", true },
- { "rc7.ch", true },
{ "rca.fr", true },
{ "rcd.cz", true },
{ "rcdocuments.com", true },
{ "rchrdsn.uk", true },
+ { "rcifsgapinsurance.co.uk", true },
{ "rclsm.net", true },
+ { "rcmlinx.com", true },
{ "rcmurphy.com", true },
{ "rcnitrotalk.com", true },
{ "rcorporation.be", true },
@@ -28276,10 +28811,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rct.sk", true },
{ "rctalk.com", true },
{ "rdfproject.it", true },
+ { "rdjb2b.com", true },
{ "rdl.at", false },
{ "rdmrotterdam.nl", true },
{ "rdmtaxservice.com", true },
{ "rdns.cc", true },
+ { "rdplumbingsolutions.com.au", true },
{ "rdv-prefecture.com", true },
{ "rdwh.tech", true },
{ "re-curi.com", true },
@@ -28290,6 +28827,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "react-db.com", true },
{ "reactivarte.es", true },
{ "reactive-press.com", true },
+ { "reactpwa.com", true },
{ "read.sc", true },
{ "reades.co.uk", true },
{ "readheadcopywriting.com", true },
@@ -28298,8 +28836,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "readingrats.de", true },
{ "readonly.de", true },
{ "readouble.com", false },
- { "readtldr.com", true },
{ "readysell.net", true },
+ { "readytobattle.net", true },
{ "readytongue.com", true },
{ "readytowear.es", true },
{ "reaganlibrary.gov", true },
@@ -28308,7 +28846,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "realcapoeira.ru", true },
{ "realestateonehowell.com", true },
{ "realestateradioshow.com", true },
- { "realfamilyincest.com", true },
{ "realfreedom.city", true },
{ "realgarant-shop.de", false },
{ "realhorsegirls.net", true },
@@ -28322,10 +28859,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "really-simple-plugins.com", true },
{ "really-simple-ssl.com", true },
{ "really.ai", true },
+ { "reallytrusted.com", true },
{ "realme.govt.nz", true },
{ "realmofespionage.xyz", true },
{ "realoteam.ddns.net", true },
- { "realraghavgupta.com", true },
{ "realum.com", true },
{ "realum.de", true },
{ "realum.eu", true },
@@ -28349,12 +28886,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "recantoshop.com", true },
{ "recantoshop.com.br", true },
{ "recapp.ch", true },
+ { "recaptcha-demo.appspot.com", true },
{ "receiliart.com", true },
{ "receptionsbook.com", true },
{ "recepty.eu", false },
+ { "recetasdecocinaideal.com", true },
{ "rechenknaecht.de", true },
- { "recht-freundlich.de", true },
- { "rechtenliteratuurleiden.nl", false },
{ "rechtsanwaeltin-vollmer.de", true },
{ "rechtsanwalt-koeppen-feucht.de", true },
{ "rechtschreibpruefung24.de", true },
@@ -28416,7 +28953,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "redelectrical.co.uk", true },
{ "redessantaluzia.com.br", true },
{ "redfox-infosec.de", true },
- { "redgatesoftware.co.uk", true },
{ "redgoose.ca", true },
{ "redhandedsecurity.com.au", true },
{ "redheeler.com.br", true },
@@ -28431,15 +28967,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "redletter.link", true },
{ "redlinelap.com", true },
{ "redlink.de", true },
+ { "redmind.se", true },
{ "redmore.me", true },
{ "redneragenturen.org", true },
{ "rednsx.org", true },
- { "redporno.cz", true },
{ "redprice.by", true },
{ "redshield.co", true },
{ "redshiftlabs.com.au", true },
{ "redshoeswalking.net", true },
{ "redsicom.com", true },
+ { "redsquirrelcampsite.co.uk", true },
{ "redstoner.com", true },
{ "redteam-pentesting.de", true },
{ "redwaterhost.com", true },
@@ -28457,16 +28994,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "reevu.net", true },
{ "reezer.org", true },
{ "referdell.com", true },
- { "refficience.com", true },
{ "refill-roboter.de", true },
+ { "refinansiering.no", true },
{ "reflectivity.io", true },
{ "reflectores.net", true },
+ { "refletindosaude.com.br", true },
{ "reflexions.co", true },
{ "reflexive-engineering.com", true },
{ "reflexive.xyz", true },
{ "refood-cascaiscpr.eu", true },
- { "reforesttheplanet.com", true },
- { "reformatreality.com", true },
{ "refresh-media.nl", true },
{ "refreshliving.us", true },
{ "refuelcollective.com", true },
@@ -28493,7 +29029,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "regiovertrieb.de", false },
{ "regis.tech", true },
{ "regisearch.co.uk", true },
- { "register.gov.uk", true },
{ "registerex.me", true },
{ "registerforevent.co.uk", true },
{ "registerra.nl", true },
@@ -28532,7 +29067,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "reinaertvandecruys.com", true },
{ "reinaldudras.ee", true },
{ "reinaldudrasfamily.ee", true },
- { "reineberthe.ch", true },
{ "reinencaressa.be", true },
{ "reinfer.io", true },
{ "reinhard.codes", true },
@@ -28546,6 +29080,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "reisenbauer.ee", true },
{ "reiseversicherung-werner-hahn.de", true },
{ "reishunger.de", true },
+ { "reisslittle.com", true },
{ "rejahrehim.com", true },
{ "rejects.email", true },
{ "rejsehuskelisten.dk", true },
@@ -28553,6 +29088,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rekisuta.com", true },
{ "reklamjog.hu", true },
{ "rekorsanat.com.tr", true },
+ { "rekyou.com", false },
{ "relates.link", true },
{ "relax.hn", true },
{ "relaxdom.net", true },
@@ -28563,22 +29099,30 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "releasetimes.io", true },
{ "reliancebank.bank", true },
{ "reliant3sixty.com", true },
- { "religiousforums.com", true },
{ "relocatefeds.gov", false },
{ "relojeriajoyeria.com", true },
+ { "relojes-online.com", true },
+ { "relojesseiko.es", true },
{ "relvan.com", true },
{ "rem0te.net", true },
+ { "remaimodern.org", true },
{ "remambo.jp", true },
{ "remedi.tokyo", true },
+ { "remedionaturales.com", true },
{ "remedioparaherpes.com", true },
{ "remedios-caserospara.com", true },
{ "remedioscaserosparalacistitis.com", true },
+ { "remedioskaseros.com", false },
{ "remejeanne.com", true },
{ "rememberthemilk.com", false },
{ "remi-saurel.com", true },
+ { "remilner.co.uk", true },
+ { "remirampin.com", true },
{ "remissan.com", true },
+ { "remitatm.com", false },
{ "remonti.info", true },
{ "remote.so", true },
+ { "remoteham.com", true },
{ "remoteutilities.com", true },
{ "removalcellulite.com", true },
{ "removedrepo.com", true },
@@ -28592,6 +29136,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rene-schwarz.com", true },
{ "rene-stolp.de", true },
{ "renearends.nl", true },
+ { "reneclemens.nl", true },
+ { "renedekoeijer.com", true },
+ { "renedekoeijer.nl", true },
{ "reneleu.ch", true },
{ "renem.net", false },
{ "renemayrhofer.com", true },
@@ -28604,7 +29151,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "renezuo.com", true },
{ "renkenlaw.com", true },
{ "renlen.nl", true },
- { "rennfire.org", true },
{ "renov8sa.co.za", true },
{ "renovum.es", true },
{ "renrenche.com", false },
@@ -28613,6 +29159,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rent-a-c.io", true },
{ "rent-a-coder.de", true },
{ "rentacaramerica.com", true },
+ { "rentalmed.com.br", true },
{ "rentasweb.gob.ar", true },
{ "renthelper.us", true },
{ "rentinsingapore.com.sg", true },
@@ -28623,7 +29170,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "repaik.com", true },
{ "repair.by", true },
{ "repaper.org", true },
- { "reparo.pe", true },
{ "repaxan.com", true },
{ "repkord.com", true },
{ "replicaswiss.nl", true },
@@ -28637,19 +29183,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "reprogrammingpredators.com", true },
{ "reprozip.org", true },
{ "repsomelt.com", true },
- { "reptilauksjonen.no", true },
{ "reptrax.com", true },
{ "republic.gr", true },
{ "republictelecom.net", true },
{ "republique.org", true },
{ "repugnant-conclusion.com", true },
{ "repugnantconclusion.com", true },
- { "repustate.com", true },
+ { "reputationweaver.com", true },
{ "reqrut.net", true },
- { "request-trent.com", true },
{ "requestr.co.uk", true },
{ "res-kc.com", true },
{ "resama.eu", true },
+ { "resc.la", true },
{ "rescms-secure.com", true },
{ "research-panel.jp", true },
{ "research.facebook.com", false },
@@ -28658,7 +29203,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "reseausyndic.ca", true },
{ "reservar-un-hotel.com", true },
{ "reservetonshift.com", true },
- { "reservoirtp.fr", true },
{ "resfriatech.com.br", true },
{ "residence-simoncelli.com", true },
{ "residentiallocksmithsanantoniotx.com", true },
@@ -28668,6 +29212,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "resolvefa.com", true },
{ "resolving.com", true },
{ "resoplus.ch", true },
+ { "resort-islands.net", true },
{ "resortohshima.com", true },
{ "resourceconnect.com", true },
{ "resourceguruapp.com", true },
@@ -28695,6 +29240,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "restoruns.xyz", true },
{ "restrealitaet.de", true },
{ "restrito.org", true },
+ { "resultsatretail.com", true },
{ "resursedigitale.ro", true },
{ "retefarmaciecostadamalfi.it", true },
{ "retetenoi.net", true },
@@ -28705,7 +29251,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "reto.ch", true },
{ "reto.com", true },
{ "reto.io", true },
- { "retogroup.com", true },
{ "retokromer.ch", true },
{ "retractableawningssydney.com.au", true },
{ "retro.rocks", true },
@@ -28715,6 +29260,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "retrocdn.net", true },
{ "retrofitlab.com", true },
{ "retroity.net", true },
+ { "retronet.nl", true },
{ "retroroundup.com", true },
{ "retrotracks.net", true },
{ "retrovideospiele.com", true },
@@ -28747,10 +29293,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "revisit.date", true },
{ "revivalinhisword.com", true },
{ "revivingtheredeemed.org", true },
+ { "revlect.com", true },
{ "revolt.tv", true },
{ "revthefox.co.uk", true },
{ "rewardingexcellence.com", true },
{ "rewrite3.com", true },
+ { "rewtherealtor.com", true },
{ "rex.tc", true },
{ "rexdf.net", true },
{ "rexskz.info", true },
@@ -28766,7 +29314,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rgavmf.ru", true },
{ "rgbinnovation.com", true },
{ "rgcomportement.fr", true },
- { "rgservers.com", true },
{ "rhaegal.me", true },
{ "rhd-instruments.com", true },
{ "rhd-instruments.de", true },
@@ -28790,6 +29337,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rhymix.org", true },
{ "rhynl.io", true },
{ "riajenaka.com", true },
+ { "riaki.net", true },
{ "rial.space", true },
{ "ribs.com", true },
{ "ricardo.nu", true },
@@ -28798,8 +29346,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "riccardopiccioni.it", true },
{ "riccy.org", true },
{ "riceadvice.info", true },
+ { "richadams.me", true },
{ "richardbloomfield.blog", true },
{ "richardcrosby.co.uk", true },
+ { "richardharpur.com", true },
{ "richardhering.de", true },
{ "richardhicks.us", true },
{ "richardjgreen.net", true },
@@ -28813,11 +29363,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "richardwarrender.com", true },
{ "richie.fi", true },
{ "richie.link", true },
- { "richmtdriver.com", true },
{ "richonrails.com", true },
{ "ricketyspace.net", true },
{ "ricki-z.com", true },
- { "ricknox.com", true },
{ "rickrongen.nl", true },
{ "rickscastles.co.uk", true },
{ "rickvanderzwet.nl", true },
@@ -28827,10 +29375,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rico.ovh", true },
{ "ricobaldegger.ch", true },
{ "ricochet.im", true },
+ { "ricoydesign.com", true },
{ "ricozienke.de", true },
- { "riddims.co", true },
{ "ride-up.com", true },
{ "rideyourdamn.bike", true },
+ { "ridgelandchurch.org", true },
{ "ridingboutique.de", true },
{ "riederle.com", true },
{ "riemer.ml", true },
@@ -28848,6 +29397,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rightnetworks.com", true },
{ "rightstuff.link", true },
{ "righttobuy.gov.uk", true },
+ { "rigolitch.fr", true },
+ { "rigsalesaustralia.com", true },
{ "rijk-catering.nl", false },
{ "rijsinkunst.nl", true },
{ "rik.onl", true },
@@ -28856,14 +29407,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rileyevans.co.uk", true },
{ "rimax.vn", true },
{ "rimcountrymuseum.org", true },
+ { "rimediogiusto.com", true },
{ "rimeto.io", true },
{ "rimo.site", true },
+ { "rimorrecherche.nl", true },
{ "ring.com", true },
{ "ringingliberty.com", true },
{ "ringjewellery.co.uk", true },
{ "rinvex.com", true },
{ "rio-weimar.de", true },
- { "rioshop.com.br", true },
+ { "rioxmarketing.com", true },
{ "rip-sport.cz", true },
{ "ripaton.fr", true },
{ "ripmixmake.org", true },
@@ -28877,16 +29430,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rise-technologies.com", true },
{ "riseup.net", true },
{ "rishikeshyoga.in", true },
- { "risi-china.com", true },
{ "risiinfo.com", true },
{ "riskmitigation.ch", true },
{ "risparmiare.info", true },
- { "rissato.com.br", true },
{ "ristioja.ee", true },
{ "ristoarea.it", true },
{ "ristorantefattoamano.it", true },
{ "ristoviitanen.fi", true },
{ "ristrutturazioneappartamento.roma.it", true },
+ { "rit.space", true },
{ "rittau.biz", true },
{ "rittau.org", true },
{ "ritzlux.com.tw", true },
@@ -28901,6 +29453,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "riverviewcourtapts.com", true },
{ "riverweb.gr", true },
{ "rivierasaints.ch", true },
+ { "rivoflor.it", true },
{ "rivus.net", true },
{ "rivy.org", true },
{ "rix.ninja", true },
@@ -28912,7 +29465,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rj-onderneemt.nl", true },
{ "rkfp.cz", true },
{ "rkkhok.hu", true },
- { "rkmedia.no", true },
+ { "rkmns.edu.in", true },
{ "rlalique.com", true },
{ "rld.org", true },
{ "rlds.ch", true },
@@ -28923,15 +29476,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rm-it.de", true },
{ "rmb.li", true },
{ "rmcbs.de", true },
+ { "rmeuropean.com", true },
{ "rmf.io", true },
{ "rmit.me", true },
- { "rmk.si", true },
{ "rmm-i.com", true },
{ "rmmanfredi.com", true },
{ "rmpsolution.de", true },
{ "rmrig.org", true },
{ "rms.sexy", true },
- { "rmsides.com", true },
{ "rmstudio.tw", true },
{ "rmsupply.nl", true },
{ "rn29.me", true },
@@ -28951,17 +29503,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "robandjanine.com", true },
{ "robbertt.com", false },
{ "robdavidson.network", true },
- { "robert-flynn.de", true },
{ "robertattfield.com", true },
{ "robertayamashita.com", true },
{ "robertayamashita.com.br", true },
{ "robertbln.com", true },
{ "robertg.me", true },
+ { "robertglastra.com", true },
{ "roberthurlbut.com", true },
{ "robertkrueger.de", true },
{ "robertlysik.com", true },
{ "robertnemec.com", true },
- { "robertocasares.no-ip.biz", true },
{ "robertoentringer.com", true },
{ "robertof.ovh", true },
{ "robertopazeller.ch", true },
@@ -28980,6 +29531,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "robinlinden.eu", true },
{ "robinsonstrategy.com", true },
{ "robinsonyu.com", true },
+ { "robinwill.de", true },
{ "robinwinslow.uk", true },
{ "robjager-fotografie.nl", true },
{ "robocop.no", true },
@@ -28987,6 +29539,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "robohash.org", true },
{ "robokits.co.in", true },
{ "robot.car", true },
+ { "robot.works", true },
{ "robotattack.org", true },
{ "roboth.am", true },
{ "robotham.org", true },
@@ -29036,7 +29589,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rody-design.com", true },
{ "rodzina-kupiec.eu.org", true },
{ "roeckx.be", true },
- { "roeitijd.nl", true },
+ { "roeitijd.nl", false },
{ "roelbazuin.com", true },
{ "roeldevries.me", true },
{ "roeleveld.nl", true },
@@ -29059,14 +29612,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rogoff.xyz", true },
{ "rogue-e.xyz", true },
{ "roguefinancial.com", true },
- { "roguefortgame.com", true },
{ "roguenation.space", true },
{ "roguenetworks.me", true },
{ "roguesignal.net", true },
{ "roguetechhub.org", true },
- { "rohanbassett.com", true },
{ "rohedaten.de", true },
{ "rohitagr.com", true },
+ { "rohlik.cz", true },
{ "rointe.online", true },
{ "roiscroll.com", true },
{ "roka9.de", true },
@@ -29075,8 +29627,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "roksolana.be", true },
{ "rokudenashi.de", true },
{ "roland.io", true },
- { "rolandreed.cn", true },
{ "rolandszabo.com", true },
+ { "roleplayhome.com", true },
{ "roligprylar.se", true },
{ "rollatorweb.nl", true },
{ "rollercoasteritalia.it", true },
@@ -29097,6 +29649,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "romanticfirstdance.com", true },
{ "romanticschemer.com", true },
{ "romanticsexshopguatemala.com", true },
+ { "romanticvillas.com.au", false },
{ "romapa.com", true },
{ "romar-bos.nl", true },
{ "romarin.es", true },
@@ -29104,7 +29657,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "romatrip.it", true },
{ "rome.dating", true },
{ "rommelwood.de", true },
- { "roms.fun", true },
{ "ronanrbr.com", true },
{ "rondommen.nl", true },
{ "rondouin.fr", true },
@@ -29114,7 +29666,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ronniegane.kiwi", true },
{ "ronnylindner.de", true },
{ "ronomon.com", true },
+ { "ronzertnert.xyz", true },
{ "roodfruit.studio", true },
+ { "roodhealth.co.uk", true },
{ "roof.ai", false },
{ "roofingomaha.com", true },
{ "roofsandbasements.com", true },
@@ -29129,7 +29683,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rooneytours.nl", true },
{ "roopakv.com", true },
{ "roosabels.nl", false },
- { "roosteroriginals.com", false },
{ "roosterpgplus.nl", true },
{ "root-space.eu", true },
{ "root.bg", true },
@@ -29141,6 +29694,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rootedlifemontessori.com", true },
{ "rootkea.me", true },
{ "rootlair.com", true },
+ { "rootonline.de", true },
{ "roots-example-project.com", true },
{ "roots.io", true },
{ "rootsandrain.com", true },
@@ -29174,8 +29728,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rosset.me", true },
{ "rosset.net", true },
{ "rossfrancis.co.uk", true },
- { "rosslug.org.uk", true },
{ "rossmacphee.com", true },
+ { "rostclub.ro", true },
{ "rostov-avia.ru", true },
{ "rot47.net", true },
{ "rotek.at", true },
@@ -29187,14 +29741,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rotol.me", true },
{ "rottweil-hilft.de", true },
{ "rotunneling.net", true },
- { "rotzonline.com", true },
{ "rougechocolat.fr", true },
{ "roughcopy.com.au", true },
{ "roughgrain.com", true },
{ "roulinfo.ch", true },
{ "roulons-autrement.com", true },
{ "rounda.it", true },
- { "roundaboutweb.info", true },
{ "roundcube.mayfirst.org", false },
{ "roundrock-locksmith.com", true },
{ "roussos.cc", true },
@@ -29212,6 +29764,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "roxiesbouncycastlehire.co.uk", true },
{ "roxtri.cz", true },
{ "royal-rangers.de", true },
+ { "royal812.com", true },
+ { "royal818.com", true },
+ { "royal850.com", true },
+ { "royal853.com", true },
+ { "royal857.com", true },
+ { "royal859.com", true },
+ { "royal862.com", true },
+ { "royal863.com", true },
+ { "royal865.com", true },
+ { "royal867.com", true },
+ { "royal868.com", true },
+ { "royal871.com", true },
+ { "royal876.com", true },
{ "royalacademy.org.uk", true },
{ "royalasianescorts.co.uk", true },
{ "royalbluewa3.cc", true },
@@ -29224,9 +29789,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "royalty-market.com", true },
{ "royceandsteph.com", true },
{ "roycewilliams.net", true },
- { "rozalynne-dawn.ga", true },
{ "rozhodce.cz", true },
{ "rpadovani.com", true },
+ { "rpgcampaign.website", true },
{ "rpgmaker.es", true },
{ "rpherbig.com", true },
{ "rphl.net", true },
@@ -29244,18 +29809,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rro.rs", true },
{ "rrudnik.com", true },
{ "rrwolfe.com", true },
+ { "rsanahuano.com", true },
{ "rsap.ca", true },
{ "rsauget.fr", true },
+ { "rsblake.net", true },
{ "rsgcard.com", true },
{ "rsingermd.com", true },
{ "rsl.gd", true },
{ "rsldb.com", true },
{ "rsm-intern.de", true },
{ "rsm-liga.de", true },
+ { "rsmith.io", true },
{ "rsmmail.com", true },
{ "rsp-blogs.de", true },
{ "rss.sh", false },
- { "rsships.com", true },
{ "rssr.se", true },
{ "rsttraining.co.uk", true },
{ "rsync.eu", false },
@@ -29264,6 +29831,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rtate.se", true },
{ "rtcx.net", true },
{ "rtd.uk.com", true },
+ { "rte.eu", true },
{ "rte2fm.ie", true },
{ "rteaertel.ie", true },
{ "rtechservices.io", true },
@@ -29278,9 +29846,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rtrappman.com", true },
{ "rtrinflatables.co.uk", true },
{ "rtsr.ch", true },
+ { "rttvvip.com", true },
{ "rtwcourse.com", true },
{ "rtzoeller.com", true },
- { "ru-music.com", true },
{ "ru-sprachstudio.ch", true },
{ "ru.search.yahoo.com", false },
{ "ruaneattorneys.com", true },
@@ -29289,9 +29857,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rubberlegscastles.co.uk", true },
{ "rubbermaidoutlet.com", true },
{ "rubbleremovalsbenoni.co.za", true },
+ { "ruben.am", false },
{ "rubenbarbero.com", true },
{ "rubenkruisselbrink.nl", true },
- { "rubens.cloud", true },
{ "rublacklist.net", true },
{ "ruby-auf-schienen.de", true },
{ "rubyist.today", true },
@@ -29314,9 +29882,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rudolphmarketing.com", true },
{ "rudrastyh.com", true },
{ "ruediger-voigt.eu", true },
- { "ruedigervoigt.de", true },
{ "ruedirrenggli.ch", true },
- { "rueduparticulier.tk", true },
+ { "rueduparticulier.tk", false },
+ { "rueegger.me", true },
+ { "rueg.eu", true },
{ "ruerte.net", true },
{ "rufabula-com.appspot.com", true },
{ "ruffbeatz.com", true },
@@ -29331,11 +29900,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ruin.one", true },
{ "ruiruigeblog.com", true },
{ "ruk.ca", true },
- { "rullzer.com", true },
{ "rulu.co", true },
{ "rulu.tv", true },
{ "rulutv.com", true },
- { "rumlager.de", true },
{ "rummage4property.co.uk", true },
{ "rumplesinflatables.co.uk", true },
{ "rumtaste.com", true },
@@ -29344,25 +29911,29 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "runagain.ch", true },
{ "runebet.com", true },
{ "runefake.com", true },
+ { "runementors.com", false },
{ "runklesecurity.com", true },
{ "runnergrapher.com", true },
{ "runreport.fr", true },
{ "runschrauger.com", true },
{ "runvs.io", true },
+ { "ruobiyi.com", true },
{ "ruobr.ru", true },
{ "ruquay.com", true },
+ { "ruralink.com.ar", true },
{ "ruralsuppliesdirect.co.uk", true },
{ "ruri.io", false },
{ "rusempire.ru", true },
- { "rushball.net", true },
{ "rushiiworks.com", true },
{ "rushpoppershop.co.uk", true },
+ { "rushter.com", true },
{ "rushyo.com", true },
{ "rusi-ns.ca", true },
{ "ruska-modra.cz", true },
{ "ruskamodra.cz", true },
{ "ruskod.net", true },
{ "rusl.net", true },
+ { "rusmolotok.ru", true },
{ "russellupevents.co.uk", true },
{ "russia.dating", true },
{ "russianorthodoxchurch.co.uk", true },
@@ -29378,13 +29949,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rutiger.com", true },
{ "ruudkoot.nl", true },
{ "ruwhof.net", true },
+ { "ruya.com", true },
{ "ruyatabirleri.com", true },
{ "rv-jpshop.com", true },
{ "rva-asbestgroep.nl", true },
{ "rvender.cz", true },
+ { "rvfu98.com", true },
{ "rvnoel.net", true },
- { "rvoigt.eu", true },
- { "rvolve.net", true },
{ "rvsa2bevestigingen.nl", true },
{ "rvsa4bevestigingen.nl", true },
{ "rvsbevestigingen.nl", true },
@@ -29400,6 +29971,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "rxgroup.io", true },
{ "rxight.com", true },
{ "ryan-design.com", true },
+ { "ryan-gehring.com", true },
{ "ryan-goldstein.com", true },
{ "ryanbritton.com", true },
{ "ryancarter.co.uk", true },
@@ -29414,12 +29986,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ryois.me", true },
{ "ryu22e.org", true },
{ "ryuu.es", true },
+ { "ryzex.de", true },
{ "ryzhov.me", true },
{ "rzentarzewski.net", true },
{ "s-a.xyz", true },
{ "s-c.se", true },
{ "s-cubed.net", true },
{ "s-huset.dk", true },
+ { "s-ip-media.de", true },
{ "s-mainte.com", true },
{ "s-mdb.com", true },
{ "s-n-unso.com", true },
@@ -29427,18 +30001,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "s-s-paint.com", true },
{ "s007.co", true },
{ "s10y.eu", true },
+ { "s13d.fr", true },
{ "s16e.no", true },
{ "s2member.com", true },
- { "s3cases.com", true },
{ "s3cur3.it", true },
{ "s3gfault.com", true },
{ "s3robertomarini.it", true },
{ "s404.de", true },
{ "s44.eu", true },
{ "s4db.net", true },
+ { "s4media.org", true },
{ "s4tips.com", true },
{ "s4ur0n.com", true },
{ "s5118.com", true },
+ { "s64.cz", true },
{ "s8a.us", true },
{ "s95.de", true },
{ "sa-blog.net", true },
@@ -29450,9 +30026,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "saba-piserver.info", true },
{ "sabahattin-gucukoglu.com", true },
{ "sabe.cz", true },
+ { "sabine-forschbach.de", true },
+ { "sabineforschbach.de", true },
{ "sabrinajoias.com.br", true },
{ "sabrinajoiasprontaentrega.com.br", true },
- { "sac-shop.com", true },
+ { "sabtunes.com", true },
{ "sacaentradas.com", true },
{ "saccani.net", true },
{ "sachk.com", true },
@@ -29469,17 +30047,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sadhawkict.org", true },
{ "sadmansh.com", true },
{ "sadou.kyoto.jp", true },
- { "sadsu.com", true },
{ "saenforcement.agency", true },
{ "saengsook.com", true },
{ "saengsuk.com", true },
{ "safar.sk", true },
{ "safaritenten.nl", true },
{ "safcstore.com", true },
+ { "safe.moe", true },
{ "safe.space", true },
{ "safebaseflorida.com", true },
{ "safebasements.com", true },
{ "safebasementsnorthdakota.com", true },
+ { "safebasementsofindiana.com", true },
{ "safebuyerscheme.co.uk", true },
{ "safecar.gov", false },
{ "safeex.com", true },
@@ -29490,7 +30069,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "safematix.com", true },
{ "safeme.ga", true },
{ "safeocs.gov", true },
- { "safer-networking.org", true },
+ { "safer-networking.org", false },
{ "saferpost.com", true },
{ "safescan.com", true },
{ "safestore.io", true },
@@ -29504,6 +30083,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sagedocumentmanager.com", true },
{ "sagemontchurch.org", true },
{ "sagerus.com", true },
+ { "saggiocc.com", true },
{ "sagracefarms.com", true },
{ "sagsmarseille.com", true },
{ "sahajbooks.com", true },
@@ -29523,17 +30103,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "saikouji.tokushima.jp", true },
{ "sailingonward.com", true },
{ "sailormoonevents.org", true },
+ { "sailormoonlibrary.org", true },
{ "saimoe.moe", true },
{ "saimoe.org", true },
{ "sainetworks.net", true },
+ { "saint-bernard-gouesch.fr", true },
{ "saintaardvarkthecarpeted.com", true },
{ "saintanthonyscorner.com", true },
{ "sainth.de", true },
+ { "saintmichelqud.com", true },
{ "saintsrobotics.com", true },
- { "saintw.com", true },
{ "saipariwar.com", true },
{ "saiputra.com", true },
{ "saitrance.com", true },
+ { "saitv.org", true },
{ "saiyasu-search.com", true },
{ "sajamstudija.info", true },
{ "sajdowski.de", true },
@@ -29541,39 +30124,42 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sakostacloud.de", true },
{ "sakura-paris.org", true },
{ "sakuraflores.com.br", true },
- { "sakuraplay.com", true },
{ "salamon-it.de", false },
{ "salde.net", true },
{ "sale4ru.ru", true },
{ "saleaks.org", true },
+ { "saleduck.at", true },
+ { "saleduck.ch", true },
{ "saleduck.co.id", true },
{ "saleduck.co.th", true },
{ "saleduck.com.my", true },
{ "saleduck.com.ph", true },
{ "saleduck.com.sg", true },
{ "saleduck.com.vn", true },
+ { "saleduck.dk", true },
+ { "saleduck.fi", true },
+ { "saleduck.se", true },
+ { "salemedia.pro", true },
{ "salensmotors-usedcars.be", true },
{ "salesflare.com", true },
{ "salesmachine.io", true },
{ "salexy.kz", true },
- { "salishseawhalewatching.ca", true },
{ "salixcode.com", true },
{ "salland1.nl", true },
{ "salle-quali.fr", true },
{ "sallydowns.name", true },
- { "salmo23.com.br", true },
{ "salmododia.net", true },
{ "salmonella.co.uk", true },
{ "salmonrecovery.gov", true },
{ "salmonvision.com.tw", true },
{ "salmos91.com", true },
{ "salmotierra-salvatierra.com", true },
- { "salon-claudia.ch", true },
{ "salon-minipli.de", true },
{ "salon.io", false },
{ "salon1.ee", true },
+ { "salonasymetria.com", true },
+ { "salonasymetria.pl", true },
{ "salonsantebienetre.ch", true },
- { "salrosadohimalaia.com", true },
{ "salsa-straubing.de", true },
{ "saltbythesea.com", true },
{ "saltercane.com", false },
@@ -29583,6 +30169,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "salud.top", false },
{ "saludsexualmasculina.org", true },
{ "saludsis.mil.co", true },
+ { "salutethefish.com", true },
+ { "salutethegrains.com", true },
{ "salutethepig.com", true },
{ "salvagedfurnitureparlour.com", true },
{ "sam-football.fr", true },
@@ -29608,10 +30196,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "samifar.in", true },
{ "samip.fi", true },
{ "samizdat.cz", true },
+ { "samkelleher.com", true },
{ "saml-gateway.org", true },
+ { "samm.com.au", true },
{ "sammenlignakasser.dk", true },
{ "sammyservers.com", true },
+ { "sammyservers.net", true },
{ "samnya.cn", true },
+ { "samrobertson.co.uk", true },
{ "samsungmobile.it", true },
{ "samsungphonegenerator.xyz", true },
{ "samtalen.nl", true },
@@ -29622,30 +30214,28 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "samuirehabcenter.com", true },
{ "samwilberforce.com", true },
{ "samwrigley.co.uk", true },
+ { "samwu.tw", true },
{ "samyerkes.com", true },
+ { "san-mian-ka.ml", true },
{ "san.ac.th", true },
{ "sana-store.com", true },
{ "sana-store.cz", true },
{ "sana-store.sk", true },
{ "sanalbayrak.com", true },
- { "sanandreasstories.com", true },
{ "sanantoniolocksmithinc.com", true },
{ "sanasport.cz", true },
{ "sanasport.sk", true },
{ "sanatorii-sverdlovskoy-oblasti.ru", true },
{ "sanatorionosti.com.ar", true },
{ "sanchez.adv.br", true },
- { "sand-islets.de", true },
{ "sandalj.com", true },
{ "sandbagexpress.com", true },
{ "sandbox.mydigipass.com", false },
{ "sandburner.net", true },
{ "sanderdorigo.nl", true },
- { "sanderknape.com", true },
{ "sanderkoenders.eu", true },
{ "sanderkoenders.nl", true },
{ "sandervankasteel.nl", false },
- { "sandhaufen.tk", true },
{ "sandiegotown.com", true },
{ "sandmanintel.com", true },
{ "sandmarc.cz", true },
@@ -29658,7 +30248,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sandrolittke.de", true },
{ "sandtears.com", true },
{ "sandtonescorts.com", true },
- { "sandtonplumber24-7.co.za", true },
{ "sandtonvipcompanions.com", true },
{ "sandyrobsonhypnotherapy.co.uk", true },
{ "sanepsychologen.nl", true },
@@ -29667,19 +30256,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sangwon.io", true },
{ "sanilodge.com", true },
{ "sanipousse.com", true },
+ { "sanissimo.com.mx", false },
{ "sanitairwinkel.be", true },
{ "sanitairwinkel.com", true },
{ "sanitairwinkel.nl", true },
{ "sanitrak.cz", true },
{ "sanmuding.com", true },
+ { "sannesfotklinikk.no", true },
{ "sanpham-balea.org", true },
{ "sanskritiyoga.com", true },
{ "sansonehowell.com", true },
{ "santafemacas.com.br", true },
+ { "santamonicapost123.org", true },
+ { "santanderideas.com", true },
{ "santenatureetcie.com", true },
{ "santensautomatics.be", true },
{ "santevie.ch", true },
- { "santing.net", true },
{ "santojuken.co.jp", true },
{ "santoshpandit.com", true },
{ "sanvitolocapobus.com", true },
@@ -29699,27 +30291,25 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "saposute-s.jp", true },
{ "sapphireblue.me", true },
{ "sapphirepearl.com.sg", true },
- { "sapporobeer.com", true },
{ "sapprendre.ch", true },
{ "saprima.de", true },
- { "saq.com", true },
{ "sarahbeckettharpist.com", true },
{ "sarahlicity.co.uk", true },
{ "sarahlicity.me.uk", true },
{ "sarahplusdrei.de", true },
{ "sarahvictor.co.uk", true },
{ "sarahwikeley.co.uk", true },
+ { "saraleebread.com", false },
{ "sarariman.com", true },
{ "sarasturdivant.com", true },
{ "sardegnatirocini.it", true },
{ "sarink.eu", true },
- { "sarkarikhoj.com", true },
- { "saro.me", true },
{ "saronno5stelle.it", true },
{ "sarpsb.org", true },
{ "sarumtechnologies.com", true },
{ "sas-snowboarding.sk", true },
{ "sasanika.org", true },
+ { "sash.pw", true },
{ "sashaokun.com", true },
{ "sashascollections.com", true },
{ "sasioglu.co.uk", true },
@@ -29737,7 +30327,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "satmd.de", true },
{ "satoshinumbers.com", true },
{ "sattamatkachart.in", true },
- { "sattamatkadpboss.mobi", true },
{ "sattamatkamobi.mobi", true },
{ "saturn.pl", true },
{ "satyanarayana.xyz", true },
@@ -29745,6 +30334,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "saudeealimentos.com", true },
{ "saudeintimadamulher.com.br", true },
{ "saudenoclique.com.br", true },
+ { "sauenytt.no", true },
{ "sauer-systems.net", true },
{ "sauerbrey.eu", true },
{ "sauerland-schnittgruen.de", true },
@@ -29765,7 +30355,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "savecrypto.org", true },
{ "savenet.org", true },
{ "saveora.com", true },
- { "saveora.shop", true },
{ "savetheinternet.eu", true },
{ "saveya.com", true },
{ "savic.com", true },
@@ -29799,11 +30388,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sbf888.com", true },
{ "sbiewald.de", true },
{ "sbir.gov", true },
+ { "sbirecruitment.co.in", true },
{ "sbit.com.br", true },
{ "sblum.de", true },
{ "sbo-dresden.de", true },
{ "sbr.red", true },
{ "sbrouwer.org", true },
+ { "sbrownbourne.com", true },
{ "sbsavings.bank", true },
{ "sbsbaits.com", true },
{ "sbsnursery.co.uk", true },
@@ -29813,8 +30404,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sc5.jp", true },
{ "scaarus.com", true },
{ "scaffalature.roma.it", true },
- { "scaffoldhireeastrand.co.za", true },
- { "scaffoldhiresandton.co.za", true },
{ "scalacollege.nl", true },
{ "scalaire.com", true },
{ "scalaire.fr", true },
@@ -29823,6 +30412,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "scallywagsbouncycastles.co.uk", true },
{ "scallywagskids.co.uk", true },
{ "scamblockplus.org", true },
+ { "scan.co.uk", true },
{ "scandicom.fi", true },
{ "scandinavia.dating", true },
{ "scangeo.net", true },
@@ -29832,6 +30422,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "scatsbouncingcastles.ie", true },
{ "scelec.com.au", true },
{ "scenastu.pl", true },
+ { "scene.mx", true },
{ "scenester.tv", true },
{ "scenicbyways.info", true },
{ "scepticism.com", true },
@@ -29843,6 +30434,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "schatmeester.be", true },
{ "schatzibaers.de", true },
{ "schawe.me", true },
+ { "schbebtv.fr", true },
{ "scheduleme.io", true },
{ "scheemadigital.com", true },
{ "schefczyk.com", true },
@@ -29858,7 +30450,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "scherfke.de", true },
{ "scheuchenstuel.at", true },
{ "schier.info", true },
- { "schil.li", true },
{ "schildbach.de", true },
{ "schillers-friedberg.de", true },
{ "schimmel-test.info", true },
@@ -29888,7 +30479,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "schnapke.name", true },
{ "schneeketten-ratgeber.de", true },
{ "schnegg.name", true },
- { "schneider-electric.tg", true },
{ "schneids.me", true },
{ "schnellno.de", true },
{ "schnellsuche.de", true },
@@ -29901,7 +30491,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "schokokeks.org", true },
{ "scholarly.com.ph", true },
{ "scholarly.ph", true },
- { "scholarnet.cn", true },
+ { "scholarnet.cn", false },
{ "scholierenvervoerzeeland.nl", true },
{ "schollbox.de", false },
{ "scholz-kallies.de", true },
@@ -29913,10 +30503,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "schoolotzyv.ru", true },
{ "schoolsonice.nl", true },
{ "schopenhauer-institut.de", true },
- { "schorel.ovh", true },
{ "schorelweb.nl", true },
{ "schorers.org", true },
{ "schoring.com", true },
+ { "schottenland.de", true },
{ "schrauger.com", true },
{ "schrauger.info", true },
{ "schrauger.net", true },
@@ -29952,8 +30542,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "schummar.de", true },
{ "schunako.ch", true },
{ "schuppentier.org", true },
- { "schur-it.de", true },
{ "schurkenstaat.net", true },
+ { "schutterijschinveld.nl", true },
{ "schutz-vor-schmutz.de", true },
{ "schutznetze24.de", false },
{ "schutzwerk.com", true },
@@ -29966,7 +30556,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "schwarzhenri.ch", true },
{ "schwarztrade.cz", true },
{ "schwarzwald-flirt.de", true },
- { "schwarzwaldcon.de", true },
{ "schwedenhaus.ag", true },
{ "schwerkraftlabor.de", true },
{ "schwinabart.com", true },
@@ -29978,12 +30567,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "science-questions.org", true },
{ "science-texts.de", true },
{ "science360.gov", true },
+ { "sciencebase.gov", true },
{ "scienceexploits.com", true },
+ { "sciencehouse.jp", true },
{ "scienceminnesota.com", true },
{ "sciencesolutions.eu", true },
{ "sciencex.com", true },
- { "scientific.boston", true },
- { "scifi.fyi", true },
{ "scijinks.gov", true },
{ "scimage.com", true },
{ "scintilla.nl", true },
@@ -29993,12 +30582,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "scitopia.net", true },
{ "sckc.stream", false },
{ "sclns.co", true },
+ { "scontogiusto.com", true },
{ "scoolcode.com", true },
{ "scoop6.co.uk", true },
{ "scootaloo.co.uk", true },
{ "scooterservis.com", true },
{ "scootfleet.com", true },
- { "scorobudem.ru", true },
{ "scorocode.ru", true },
{ "scorp13.com", true },
{ "scottgruber.me", true },
@@ -30030,7 +30619,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "screenlight.tv", true },
{ "screenmachine.com", true },
{ "screenparadigm.com", true },
- { "screenplay.jp", true },
{ "scripo-bay.com", true },
{ "script.google.com", true },
{ "scripter.co", true },
@@ -30040,7 +30628,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "scrod.me", true },
{ "scroll.in", true },
{ "scrumbleship.com", true },
- { "scrumplex.net", true },
{ "scrumstack.co.uk", true },
{ "scryfall.com", true },
{ "scs-simulatoren.de", true },
@@ -30050,6 +30637,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sctiger.ml", true },
{ "sctrainingllc.com", true },
{ "scubadiving-phuket.com", true },
+ { "scubaland.hu", true },
{ "scul.net", true },
{ "sculpture.support", true },
{ "scuolaguidalame.ch", true },
@@ -30071,13 +30659,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sdvigpress.org", true },
{ "sdvx.net", true },
{ "sdxcentral.com", true },
- { "se-theories.org", true },
{ "se.com", true },
{ "se.search.yahoo.com", false },
{ "sea-godzilla.com", false },
{ "seac.me", true },
{ "seacam-store.com", true },
- { "seadus.ee", true },
{ "seafood.co.nz", true },
{ "seaholmwines.com", true },
{ "sealaw.com", true },
@@ -30088,6 +30674,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sean-wright.com", true },
{ "seanholcroft.co.uk", true },
{ "seankilgarriff.com", true },
+ { "seanrodda.com", true },
{ "seaplayhomes.com", true },
{ "search-job-in.com", true },
{ "search-one.de", true },
@@ -30105,6 +30692,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "searchbrothers.nl", true },
{ "searchbrothers.ru", true },
{ "searchbrothers.uk", true },
+ { "searchcandy.nl", true },
+ { "searchcandy.uk", true },
{ "searchdatalogy.com", true },
{ "seareytraining.com", true },
{ "searx.ru", true },
@@ -30120,6 +30709,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "seattlewalkinbathtubs.com", true },
{ "seavancouver.com", true },
{ "seb-mgl.de", true },
+ { "sebald.com", true },
+ { "sebald.org", true },
{ "sebascelis.com", true },
{ "sebastiaandouma.co.uk", true },
{ "sebastiaandouma.com", true },
@@ -30133,6 +30724,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sebastiaperis.com", true },
{ "sebasveeke.nl", true },
{ "sebi.org", true },
+ { "seby.io", true },
{ "sec-mails.de", true },
{ "sec-research.com", true },
{ "sec-wiki.com", true },
@@ -30141,13 +30733,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sec.gov", true },
{ "sec.red", true },
{ "sec3ure.co.uk", true },
- { "sec44.com", true },
- { "sec44.net", true },
- { "sec44.org", true },
{ "sec455.com", true },
+ { "sec4share.me", true },
{ "sec530.com", true },
{ "sec555.com", true },
- { "secanje.nl", true },
{ "secbone.com", true },
{ "secboom.com", true },
{ "seccom.ch", true },
@@ -30155,14 +30744,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "secgui.de", true },
{ "sech.me", true },
{ "sechat.one", true },
- { "secitem.at", true },
- { "secitem.eu", true },
{ "secnews.gr", true },
{ "secomo.org", true },
+ { "secondchancejobsforfelons.com", true },
{ "seconfig.sytes.net", true },
{ "secpatrol.de", true },
{ "secretar.is", true },
- { "secretpanties.com", true },
+ { "secretsanta.fr", true },
{ "secretsdujeu.com", true },
{ "secretserveronline.com", true },
{ "secretum.tech", true },
@@ -30189,11 +30777,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "secureesolutions.com", true },
{ "secureheaders.com", true },
{ "secureim.de", true },
+ { "securejabber.me", true },
{ "securelect-inspection.com", true },
{ "secureobscure.com", true },
{ "secureonline.co", false },
{ "securethe.news", true },
{ "securetheorem.com", true },
+ { "securetronic.ch", true },
{ "securi-tay.co.uk", true },
{ "securify.nl", true },
{ "securipy.com", true },
@@ -30212,6 +30802,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "securitycamerasaustin.net", true },
{ "securityfest.com", true },
{ "securityheaders.com", true },
+ { "securityheaders.io", true },
+ { "securityheaders.nl", true },
{ "securityinet.com", false },
{ "securitykey.co", true },
{ "securitypluspro.com", true },
@@ -30238,6 +30830,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "see.wtf", true },
{ "seeclop.ch", true },
{ "seedandleisure.co.uk", true },
+ { "seednode.co", true },
{ "seedsofangelica.net", true },
{ "seekers.ch", true },
{ "seeks.ru", true },
@@ -30259,6 +30852,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "seguroviagem.srv.br", false },
{ "sehnenweh.org", true },
{ "seibert.ninja", true },
+ { "seibu-kikaku.co.jp", true },
{ "seifried.org", true },
{ "seikatu-navi.com", true },
{ "seinfeldquote.com", true },
@@ -30276,18 +30870,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "selectel.com", false },
{ "selectel.ru", true },
{ "selectorders.com", true },
+ { "selectsplat.com", true },
{ "selegiline.com", true },
{ "selent.me", true },
{ "self-evident.org", true },
{ "self-signed.com", true },
{ "self-xss.info", true },
- { "self.nu", true },
{ "selfassess.govt.nz", true },
{ "selfdestruct.net", true },
{ "selfici.com", true },
{ "selfici.cz", true },
{ "selfishness.com", true },
{ "selfloath.in", true },
+ { "selfmade4u.de", true },
{ "selfoutlet.com", true },
{ "selkiemckatrick.com", true },
{ "sellajoch.com", true },
@@ -30299,10 +30894,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "semacode.com", true },
{ "semaf.at", true },
{ "semaflex.it", true },
+ { "semantica.cz", true },
{ "semaphore-studios.com", true },
+ { "semenov.su", false },
{ "semianalog.com", true },
{ "seminariruum.ee", true },
{ "semiocast.com", true },
+ { "semiread.com", true },
{ "semjonov.de", true },
{ "semmlers.com", true },
{ "semox.de", true },
@@ -30315,6 +30913,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "semyonov.us", true },
{ "senarius.de", true },
{ "sendai-sisters.com", true },
+ { "sendaiouji.com", true },
{ "sendbox.cz", true },
{ "sendc.at", true },
{ "sendcat.com", true },
@@ -30334,10 +30933,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sensepixel.com", true },
{ "senshudo.tv", true },
{ "sensoft-int.net", true },
- { "sensualism.com", true },
{ "sentandsecure.com", true },
- { "sentic.info", true },
{ "sentidosdelatierra.org", true },
+ { "sentinel.gov", true },
{ "sentinelproject.io", true },
{ "sentry.io", true },
{ "sentry.nu", true },
@@ -30350,7 +30948,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "seo.london", true },
{ "seo.tl", true },
{ "seoagentur2go.de", true },
- { "seoarchive.org", true },
{ "seobutler.com", true },
{ "seocomposer.com", true },
{ "seoenmexico.com.mx", true },
@@ -30370,11 +30967,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "seostepbysteplab.com", true },
{ "seoul.dating", true },
{ "seouniversity.org", true },
- { "sepakbola.win", true },
{ "sepalandseed.com", true },
{ "seppelec.com", true },
- { "seproco.com", true },
{ "septakkordeon.de", true },
+ { "septentrionalist.org", true },
{ "septfinance.ch", true },
{ "septicrepairspecialists.com", true },
{ "septillion.cn", true },
@@ -30384,8 +30980,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sera.jp", true },
{ "seraph.tokyo", true },
{ "serbanpaun.ro", true },
+ { "serbianclimbing.com", true },
{ "sereema.com", true },
{ "serenaden.at", true },
+ { "serendeputy.com", true },
{ "serf.io", true },
{ "sergeemond.ca", true },
{ "sergefonville.nl", true },
@@ -30426,6 +31024,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "serveroffline.net", false },
{ "serverpedia.de", true },
{ "servers4all.co.uk", true },
+ { "serversfrom.space", true },
{ "serversftw.com", true },
{ "serverstuff.info", true },
{ "serversuit.com", true },
@@ -30433,17 +31032,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "servethecity-karlsruhe.de", true },
{ "servettorna.com", true },
{ "servgate.jp", true },
- { "service.gov.uk", true },
{ "servicebeaute.fr", true },
{ "serviceboss.de", true },
{ "servida.ch", true },
{ "serviettenhaus.de", true },
{ "servingbaby.com", true },
+ { "servious.org", true },
{ "servitek.de", true },
{ "serviziourgente.it", true },
- { "servpanel.de", true },
{ "servx.org", true },
- { "servx.ru", true },
{ "serw.org", true },
{ "serwis-wroclaw.pl", true },
{ "seryox.com", true },
@@ -30454,12 +31051,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "setenforce.one", true },
{ "setfix.de", true },
{ "sethcaplan.com", true },
+ { "sethjust.com", true },
{ "sethvargo.com", true },
{ "setphaserstostun.org", true },
{ "setsailanddive.com", true },
{ "settberg.de", true },
{ "setterirlandes.com.br", true },
{ "settleapp.co", true },
+ { "setuid0.kr", true },
{ "setyoursite.nl", true },
{ "seva.fashion", true },
{ "seven-purple.com", true },
@@ -30468,6 +31067,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sevenhillsapartments.com.au", true },
{ "sevenicealimentos.com.br", true },
{ "sevenmatches.com", true },
+ { "seventwentynine.com", true },
{ "severine-trousselard.com", true },
{ "severntrentinsuranceportal.com", true },
{ "sevinci.ch", true },
@@ -30475,24 +31075,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sevsopr.ru", true },
{ "sewafineseam.com", true },
{ "sewinginsight.com", true },
- { "sewoo.co.uk", true },
- { "sex-education.com", true },
{ "sexaki.com", true },
{ "sexdocka.nu", true },
- { "sexgarage.de", true },
{ "sexmobil.de", true },
- { "sexocomgravidas.com", true },
- { "sexoyrelax.com", true },
- { "sexpay.net", true },
{ "sexplicit.co.uk", true },
{ "sexservice.io", true },
{ "sexshopnet.com.br", true },
- { "sexwork.net", true },
{ "sexy-store.nl", true },
{ "seyfarth.de", true },
+ { "seyr.it", true },
{ "seyr.me", true },
{ "sfa.sk", true },
- { "sfaturiit.ro", true },
{ "sfcomercio.com.br", true },
{ "sfdev.ovh", true },
{ "sfg-nordholz.de", true },
@@ -30505,9 +31098,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sg-elektro.de", true },
{ "sg.search.yahoo.com", false },
{ "sgb.co", true },
+ { "sgcaccounts.co.uk", true },
+ { "sgi.org", true },
{ "sglibellen.de", true },
{ "sgroup-hitoduma.com", true },
{ "sgroup-rec.com", true },
+ { "sgs.camera", true },
{ "sgsp.nl", true },
{ "sgtcodfish.com", true },
{ "sgtsnookums.net", true },
@@ -30523,7 +31119,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shadesofgraylaw.com", true },
{ "shadex.net", true },
{ "shadigee.org", true },
+ { "shadowict.net", true },
{ "shadowict.tech", true },
+ { "shadowkingdomrecords.com", true },
{ "shadowkitsune.net", true },
{ "shadowlurker.com.au", true },
{ "shadowsing.com", true },
@@ -30555,16 +31153,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shan.io", false },
{ "shan.si", true },
{ "shanahanstrategy.com", true },
- { "shandonsg.co.uk", true },
{ "shanekoster.net", true },
{ "shanetully.com", true },
{ "shanewadleigh.com", true },
+ { "shankangke.com", true },
{ "shannoneichorn.com", true },
{ "shansing.cn", true },
{ "shansing.com", true },
{ "shansing.net", true },
{ "shansing.space", true },
- { "shanyhs.com", true },
{ "shaobin.wang", true },
{ "sharanyamunsi.net", true },
{ "share.works", true },
@@ -30573,7 +31170,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shareeri.com", true },
{ "sharekey.com", false },
{ "sharelovenotsecrets.com", true },
- { "sharemessage.net", true },
{ "shareoffice.ch", true },
{ "sharepointdrive.com", true },
{ "sharescope.co.uk", false },
@@ -30615,10 +31211,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shelleystoybox.com", true },
{ "shellfire.de", true },
{ "shellgame.io", true },
- { "shelljuggler.com", true },
+ { "shelljuggler.com", false },
{ "shellshock.eu", true },
{ "shellvatore.us", true },
- { "shemissed.me", true },
{ "shemsconseils.ma", true },
{ "shena.co.uk", true },
{ "shenghaiautoparts.com", true },
@@ -30627,7 +31222,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shenyuqi.com", false },
{ "sherbers.de", true },
{ "sherrikehoetherapy.com", true },
- { "shethbox.com", true },
{ "shft.cl", true },
{ "shgt.jp", true },
{ "shh-listen.com", true },
@@ -30635,6 +31229,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shichibukai.net", true },
{ "shico.org", true },
{ "shieldcomputer.com", true },
+ { "shieldfe.com", true },
+ { "shieldofachilles.in", true },
{ "shift-record.com", true },
{ "shift-to.co.jp", true },
{ "shiftdevices.com", true },
@@ -30662,6 +31258,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shirtsdelivered.com", true },
{ "shirtsofholland.com", true },
{ "shishamania.de", true },
+ { "shishkabobnc.com", true },
{ "shishkin.us", true },
{ "shishlik.net", true },
{ "shitagi-shop.com", true },
@@ -30680,10 +31277,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shockercityservices.com", true },
{ "shodan.io", true },
{ "shoemuse.com", true },
+ { "shoeracks.uk", true },
{ "shoestringeventing.co.uk", true },
{ "shokola.com", true },
{ "shome.de", true },
{ "shooter.dog", true },
+ { "shop-hellsheadbangers.com", true },
{ "shop-s.net", true },
{ "shop.fr", true },
{ "shopadvies.nl", true },
@@ -30699,12 +31298,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shopalike.se", true },
{ "shopalike.sk", true },
{ "shopapi.cz", true },
+ { "shopatkei.com", true },
{ "shopbakersnook.com", true },
{ "shopcoupon.co.za", true },
{ "shopcoupons.co.id", true },
{ "shopcoupons.my", true },
{ "shopcoupons.ph", true },
{ "shopcoupons.sg", true },
+ { "shophisway.com", true },
{ "shopifycloud.com", true },
{ "shopkini.com", true },
{ "shoplandia.co", true },
@@ -30721,10 +31322,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shortdiary.me", true },
{ "shorten.ninja", true },
{ "shoshin-aikido.de", true },
+ { "shoshin.technology", true },
+ { "shota.vip", true },
{ "shotbow.net", true },
{ "shotonwhat.com", true },
{ "shouldihookupwithmybarista.com", true },
{ "shouttag.com", true },
+ { "shovonhasan.com", true },
{ "show-saratov.ru", false },
{ "showbits.net", true },
{ "showdepiscinas.com.br", true },
@@ -30737,7 +31341,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "showroom.uk", true },
{ "showroom113.ru", true },
{ "showsonar.com", true },
- { "shoxmusic.net", true },
{ "shredriteservices.com", true },
{ "shreyansh26.me", true },
{ "shrike.me", false },
@@ -30749,6 +31352,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "shu-fu.net", true },
{ "shuffleradio.nl", true },
{ "shugo.net", true },
+ { "shukatsu-support.jp", true },
{ "shulan.moe", true },
{ "shuletime.ml", true },
{ "shura.eu.org", true },
@@ -30763,8 +31367,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "si-benelux.nl", true },
{ "si.to", true },
{ "si2b.fr", true },
+ { "siaggiusta.com", true },
{ "siamsnus.com", true },
{ "sianbryn.co.uk", true },
+ { "sianjhon.com", true },
{ "sibfk.org", true },
{ "sibiutourguide.com", true },
{ "sibrenvasse.nl", true },
@@ -30778,9 +31384,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "siconnect.us", true },
{ "sidelka-tver.ru", true },
{ "sidema.be", true },
+ { "sidemount-forum.com", true },
+ { "sidemount-tauchen.com", true },
{ "sidepodcast.com", true },
{ "sidepodcastdaily.com", true },
{ "sidepodcastextra.com", true },
+ { "sideropolisnoticias.com.br", true },
{ "sideshowbarker.net", true },
{ "sidium.de", true },
{ "sidnicio.us", true },
@@ -30788,8 +31397,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sidongkim.com", true },
{ "sidpod.ru", true },
{ "siegemund-frankfurt.de", true },
- { "sieh.es", true },
{ "siel.nl", true },
+ { "sielsystems.nl", true },
{ "sientemendoza.com.ar", true },
{ "sieulog.com", true },
{ "siewert-kau.de", true },
@@ -30797,6 +31406,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sig6.org", true },
{ "sigabrt.org", true },
{ "siggerudklatreklubb.no", true },
+ { "sight-sound.com", true },
{ "sightcure.jp", true },
{ "sighup.nz", true },
{ "sigismonda.ch", true },
@@ -30816,6 +31426,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "signix.net", true },
{ "signtul.com", false },
{ "sigsrv.net", true },
+ { "sigterm.no", true },
{ "sigterm.sh", true },
{ "siirtutkusu.com", true },
{ "sikayetvar.com", false },
@@ -30826,13 +31437,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "silashes.ru", true },
{ "silaslova-ekb.ru", true },
{ "silent-clean.de", true },
+ { "silent.live", false },
{ "silentkernel.fr", false },
{ "silentundo.org", true },
{ "silerfamily.net", true },
+ { "silicon-north.com", true },
+ { "silicon-vision.com", true },
{ "siliconchip.me", true },
- { "silke-hunde.de", true },
{ "silkebaekken.no", true },
{ "silkebeckmann.de", true },
+ { "silkon.net", true },
+ { "sillisalaatti.fi", true },
{ "sillysnapz.co.uk", true },
{ "silo.org.br", true },
{ "siloportem.net", true },
@@ -30903,6 +31518,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "silvergoldbull.pt", true },
{ "silvergoldbull.qa", true },
{ "silvergoldbull.rs", true },
+ { "silvergoldbull.ru", true },
{ "silvergoldbull.se", true },
{ "silvergoldbull.si", true },
{ "silvergoldbull.sn", true },
@@ -30919,11 +31535,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "silverseen.com", true },
{ "silverwind.io", true },
{ "silvine.xyz", true },
+ { "silvobeat.blog", true },
{ "silvobeat.com", true },
{ "sim-karten.net", true },
{ "sim-minaoshi.jp", true },
- { "sim-sim.appspot.com", true },
- { "sim4seed.org", true },
{ "simam.de", true },
{ "simark.ca", true },
{ "simbeton.nl", true },
@@ -30956,11 +31571,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "simonmaddox.com", true },
{ "simonpaarlberg.com", true },
{ "simonreich.de", true },
- { "simonschmitt.ch", true },
{ "simonshine.dk", true },
{ "simonspeich.ch", true },
{ "simonsreich.de", true },
{ "simontaite.com", true },
+ { "simonweil.com", true },
{ "simonwessel.net", true },
{ "simonwoodside.com", true },
{ "simpbx.net", true },
@@ -30997,9 +31612,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "simplystudio.com", true },
{ "simpte.com", true },
{ "simpul.nl", true },
+ { "simrail.nl", true },
{ "simsnieuws.nl", true },
{ "simukti.net", true },
- { "simumiehet.com", true },
{ "sin-nombre-alleria.de", true },
{ "sin.swiss", true },
{ "sinaryuda.web.id", true },
@@ -31014,27 +31629,27 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "singel.ch", true },
{ "single-in-stuttgart.de", true },
{ "singles-aus-hamburg.de", true },
- { "singles-berlin.de", true },
{ "singleuse.link", true },
{ "singlu10.org", false },
{ "sinktank.de", true },
{ "sinn.io", true },
{ "sinnersprojects.ro", true },
{ "sinomod.com", true },
- { "sinon.org", true },
{ "sinonimos.com.br", true },
{ "sinonimosonline.com", true },
{ "sinonimosonline.com.br", true },
{ "sinquin.eu", true },
+ { "sinronet.com", true },
{ "sint-joris.nl", true },
{ "sintaxis.org", true },
{ "sinterama.biz", true },
{ "sinuelovirtual.com.br", true },
{ "sioeckes.hu", true },
+ { "sipc.org", true },
+ { "siratalmustaqim.com", true },
{ "siraweb.org", true },
{ "sirbouncealotcastles.co.uk", true },
{ "sirbouncelot.co.uk", true },
- { "sirburton.com", true },
{ "sirchuk.net", true },
{ "sircon.no", true },
{ "sirena.co.jp", true },
@@ -31044,7 +31659,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sirtaptap.com", true },
{ "sirtuins.com", true },
{ "sirvoy.com", true },
- { "sisgopro.com", true },
+ { "sisseastumine.ee", true },
{ "sistel.es", true },
{ "sistem-maklumat.com", true },
{ "sistem-maklumat.com.my", true },
@@ -31057,13 +31672,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sisver.mx", true },
{ "sit-brn.ru", true },
{ "sit.ec", true },
+ { "sitc.sk", true },
{ "sitebuilderreport.com", true },
{ "sitedrive.fi", true },
{ "sitehoster.org", true },
{ "sitenv.org", true },
{ "siterencontre.me", true },
{ "sites.google.com", true },
- { "sitesko.de", true },
{ "sitesuccessful.com", true },
{ "sitevandaag.nl", true },
{ "sitischu.com", true },
@@ -31071,18 +31686,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sivale.mx", true },
{ "sivyerge.com", true },
{ "siw64.com", true },
+ { "sixcorners.info", true },
+ { "sixcorners.net", true },
{ "sixpackholubice.cz", true },
{ "sixtwentyten.com", true },
{ "sj-leisure.com", true },
- { "sja-se-training.com", true },
{ "sjaakgilsingfashion.nl", true },
{ "sjatsh.com", true },
{ "sjd.is", true },
- { "sjdaws.com", true },
- { "sjdtaxi.com", true },
{ "sjis.me", true },
{ "sjleisure.co.uk", true },
{ "sjoorm.com", true },
+ { "sjsmith.id.au", true },
{ "sjv4u.ch", true },
{ "sk-net.cz", true },
{ "skala.io", true },
@@ -31094,7 +31709,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "skatingchina.com", true },
{ "skatn.de", true },
{ "skazka.ru", true },
- { "skday.com", true },
{ "skedda.com", true },
{ "skedr.io", false },
{ "skeeley.com", true },
@@ -31109,6 +31723,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "skia.org", false },
{ "skid.church", true },
{ "skiddle.com", true },
+ { "skifairview.com", true },
{ "skifttiljutlanderbank.dk", true },
{ "skigebied.nl", true },
{ "skigebiete-test.de", true },
@@ -31119,6 +31734,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "skillseo.com", true },
{ "skimming.net", true },
{ "skin-cosmetic.eu", true },
+ { "skincare-note.com", true },
{ "skincases.co", true },
{ "skincontracts.co", true },
{ "sking.io", true },
@@ -31133,6 +31749,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "skizzen-zeichnungen.de", true },
{ "skks.cz", true },
{ "sklepsamsung.pl", true },
+ { "sklepwielobranzowymd.com", true },
{ "sklotechnik.cz", true },
{ "sknclinics.co.uk", true },
{ "skogsbruket.fi", true },
@@ -31142,14 +31759,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "skolem.de", true },
{ "skoleniphp.cz", true },
{ "skommettiamo.it", true },
- { "skomski.org", true },
{ "skontakt.cz", true },
{ "skontorp-enterprise.no", true },
{ "skortekaas.nl", false },
{ "skory.us", true },
{ "skou.dk", false },
{ "skram.de", true },
- { "skrimix.tk", true },
+ { "skrimix.tk", false },
{ "skryptersi.pl", true },
{ "sksdrivingschool.com.au", true },
{ "sktan.com", true },
@@ -31157,36 +31773,37 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "skwile-cafe.com", true },
{ "skwitko.com", true },
{ "sky-live.fr", true },
+ { "sky-universe.net", true },
{ "skyanchor.com", true },
- { "skybloom.com", true },
- { "skybloom.io", false },
+ { "skybloom.io", true },
+ { "skybound.link", true },
+ { "skycmd.net", true },
{ "skyderby.ru", true },
{ "skydragoness.com", true },
{ "skydrive.live.com", false },
+ { "skyem.co.uk", true },
{ "skylgenet.nl", true },
{ "skylightcreative.com.au", true },
{ "skylinertech.com", true },
{ "skylineservers.com", true },
- { "skylocker.nl", true },
{ "skyloisirs.ch", true },
{ "skyminds.net", true },
{ "skynet233.ch", true },
- { "skynethk.com", false },
+ { "skynethk.com", true },
{ "skynetnetwork.eu.org", true },
{ "skynetz.tk", true },
{ "skype.com", true },
- { "skypoker.com", true },
{ "skyquid.co.uk", true },
{ "skyris.co", true },
{ "skys-entertainment.com", true },
{ "skysuite.nl", true },
- { "skytec.host", true },
+ { "skyynet.de", true },
{ "skyzimba.com.br", true },
{ "sl-bildermacher.de", true },
{ "sl0.us", true },
{ "sl899.com", true },
{ "sl998.com", true },
- { "slab.com", true },
+ { "slab.com", false },
{ "slack-files.com", true },
{ "slack.com", true },
{ "sladic.si", false },
@@ -31210,11 +31827,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sleeping.town", true },
{ "sleeplessbeastie.eu", true },
{ "sleepmap.de", true },
+ { "sleeps.jp", true },
{ "sleepstar.co.uk", true },
{ "sleepstar.de", true },
{ "sleepstar.fr", true },
{ "sleestak.net", true },
{ "sleio.com", true },
+ { "sletat.ru", true },
{ "slever.cz", true },
{ "slevermann.de", true },
{ "slevomat.cz", true },
@@ -31223,6 +31842,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "slidebatch.com", true },
{ "slides.zone", true },
{ "slik.ai", true },
+ { "slim-slender.com", true },
{ "slimk1nd.nl", true },
{ "slimspots.com", true },
{ "slingo-sta.com", true },
@@ -31247,12 +31867,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "slovenskycestovatel.sk", true },
{ "slow.zone", true },
{ "slowb.ro", true },
- { "slowfood.es", true },
{ "slowgames.xyz", true },
{ "slpower.com", true },
{ "slrd-isperih.com", true },
{ "sluciaconstruccion.com", true },
- { "sluimann.de", true },
{ "sluitkampzeist.nl", false },
{ "slusham.com", true },
{ "slvh.fr", true },
@@ -31266,6 +31884,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "smablo.com", true },
{ "smackhappy.com", true },
{ "smadav.ml", true },
+ { "smakassen.no", true },
{ "smallcloudsolutions.co.za", true },
{ "smalldogbreeds.net", true },
{ "smalle-voet.de", true },
@@ -31315,24 +31934,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "smartservices.nl", true },
{ "smartshiftme.com", true },
{ "smartship.co.jp", true },
- { "smartshoppers.es", true },
{ "smartsparrow.com", true },
{ "smartvideo.io", true },
{ "smartviewing.com", true },
+ { "smartwank.com", true },
{ "smartwelve.com", true },
{ "smartwoodczech.cz", true },
{ "smartwritingservice.com", true },
- { "smartwurk.nl", true },
+ { "smartwurk.nl", false },
{ "smash-gg.club", true },
{ "smatch.com", true },
{ "smb445.com", true },
- { "smcbox.com", true },
{ "smdavis.us", true },
{ "smdcn.net", true },
{ "sme-gmbh.net", true },
{ "smeetsengraas.com", true },
{ "smeso.it", true },
- { "smiatek.name", true },
{ "smileandpay.com", true },
{ "smiledirectsales.com", true },
{ "smilessoftplay.co.uk", true },
@@ -31349,10 +31966,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "smithchow.com", true },
{ "smithfieldbaptist.org", true },
{ "smm.im", true },
- { "smmcab.website", true },
{ "smmlaba.io", true },
{ "smokeandmirrors.agency", true },
- { "smokinghunks.com", true },
+ { "smol.cat", true },
{ "smoo.st", true },
{ "smoothcomp.com", true },
{ "smoothgesturesplus.com", true },
@@ -31376,6 +31992,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "smskeywords.co.uk", true },
{ "smskmail.com", true },
{ "smsprivacy.org", true },
+ { "smtpdev.com", true },
{ "smuncensored.com", true },
{ "smutba.se", true },
{ "smutek.net", true },
@@ -31390,13 +32007,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "snapfinance.com", true },
{ "snapserv.ch", true },
{ "snapserv.net", true },
+ { "snaptier.co", true },
{ "snaptools.io", true },
{ "snatch.com.ua", true },
{ "snazel.co.uk", true },
{ "snazzie.nl", true },
{ "sncdn.com", true },
{ "sndbouncycastles.co.uk", true },
- { "sneak.berlin", true },
{ "sneakpod.de", true },
{ "sneakynote.com", true },
{ "sneakypaw.com", true },
@@ -31413,6 +32030,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "snelxboxlivegold.nl", true },
{ "snerith.com", true },
{ "snfdata.com", false },
+ { "sngallery.co.uk", true },
{ "sniderman.eu.org", true },
{ "sniderman.pro", true },
{ "sniderman.us", true },
@@ -31427,7 +32045,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "snote.io", true },
{ "snoupon.com", true },
{ "snow-online.com", true },
- { "snow-online.de", true },
{ "snow.dog", true },
{ "snowalerts.eu", true },
{ "snowalerts.nl", true },
@@ -31437,8 +32054,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "snowhaze.ch", true },
{ "snowhaze.com", true },
{ "snowpak.com", true },
- { "snowplane.net", true },
- { "snowraven.de", true },
+ { "snowpaws.de", true },
+ { "snowyluma.com", true },
{ "snowyluma.me", true },
{ "snrat.com", true },
{ "snrub.co", true },
@@ -31451,24 +32068,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "soapitup.com.au", true },
{ "soaringtoglory.com", true },
{ "sobaya-gohei.com", true },
+ { "sobeau.com", true },
{ "sobelift.com", true },
{ "sobersys.com", true },
{ "sobie.ch", true },
{ "sobieray.dyndns.org", true },
{ "sobotkama.eu", true },
- { "sobreporcentagem.com", true },
{ "soc.net", true },
- { "socal-babes.com", true },
- { "soccersavings.com", true },
{ "soccorso-stradale.org", true },
{ "sochi-sochno.ru", true },
{ "sociability.dk", true },
{ "social-events.net", false },
{ "social-media-strategies.it", true },
+ { "social-media-strategy.org.uk", true },
{ "socialhams.net", true },
{ "socializam.com", true },
+ { "socialmarketingday.nl", true },
{ "socialmedia.ro", true },
- { "socialmirror.app", true },
+ { "socialnitro.com", true },
{ "socialnous.co", true },
{ "socialrank.com", true },
{ "socialsecurity.gov", false },
@@ -31500,6 +32117,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "softart.club", true },
{ "softballrampage.com", true },
{ "softcreatr.de", false },
+ { "softonic.com", true },
{ "softplay4hire.co.uk", true },
{ "softplaynation.co.uk", true },
{ "softprayog.in", true },
@@ -31510,6 +32128,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "softwarebetrieb.de", true },
{ "softwaredesign.foundation", false },
{ "softwarevoortherapeuten.nl", true },
+ { "softwaylancing.com", true },
{ "softwerk-edv.de", true },
{ "sogola.com", true },
{ "sogravatas.com.br", true },
@@ -31517,7 +32136,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sohamroy.me", true },
{ "soia.ca", true },
{ "soinvett.com", true },
- { "soju.fi", true },
+ { "sokaissues.info", true },
{ "sokche.com", true },
{ "sokietech.com", true },
{ "sokkenhoek.nl", true },
@@ -31535,6 +32154,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "solarplan-berlin.de", true },
{ "solarstrom.net", true },
{ "soldecom.com", true },
+ { "solden.be", true },
+ { "soldesduck.be", true },
+ { "soldesduck.ch", true },
{ "soldout-app.com", true },
{ "sole-erdwaermetauscher.de", true },
{ "sole-software.de", true },
@@ -31542,14 +32164,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "soledadpenades.com", true },
{ "solentbasketball.co.uk", true },
{ "solentbubblesandbounce.co.uk", true },
- { "soleria.eu", true },
{ "solesoftware.de", true },
{ "soleus.nu", false },
{ "solfegiator.ch", true },
{ "soli.cafe", true },
{ "solicafe.at", true },
+ { "solidarita-kosovo.net", true },
{ "solidshield.com", true },
- { "solidtuesday.com", true },
{ "solihullcarnival.co.uk", true },
{ "solihullinflatables.com", true },
{ "solihulllionsclub.org.uk", true },
@@ -31560,6 +32181,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "solomisael.com", true },
{ "solomo.pt", true },
{ "solonotizie24.it", true },
+ { "solos.im", true },
{ "solsocog.de", true },
{ "soluphant.de", true },
{ "solus-project.com", true },
@@ -31568,7 +32190,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "solve-it.se", true },
{ "solved.tips", true },
{ "solvemethod.com", true },
- { "solvingproblems.com.au", true },
{ "solvops.com", true },
{ "somaini.li", true },
{ "somali-derp.com", true },
@@ -31579,7 +32200,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "somecrazy.com", true },
{ "somersetscr.nhs.uk", true },
{ "somersetwellbeing.nhs.uk", true },
- { "somewherein.jp", true },
{ "sommefeldt.com", true },
{ "somosnoticia.com.br", true },
{ "sompani.com", true },
@@ -31596,13 +32216,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "songsmp3.com", true },
{ "songsmp3.info", true },
{ "songsmp3.io", true },
+ { "songsmp3.live", true },
{ "songsmp3.me", true },
{ "songsmp3.net", true },
{ "songsthatsavedyourlife.com", true },
{ "songtianyi.com", true },
{ "songzhuolun.com", true },
+ { "sonia.com.au", true },
{ "soniafauville.com", true },
- { "sonialive.com", true },
{ "sonic.studio", true },
{ "sonicdoe.com", true },
{ "sonixonline.com", true },
@@ -31630,13 +32251,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sorenstudios.com", true },
{ "sorever.online", true },
{ "sorex.photo", true },
+ { "sorincocorada.ro", true },
{ "sorrowfulunfounded.com", true },
{ "sortesim.com.br", true },
{ "soruly.com", true },
{ "sorz.org", true },
{ "sos-falegname.it", true },
{ "sos-idraulico.it", true },
- { "sos.de", true },
{ "sosoftplay.co.uk", true },
{ "sospromotions.com.au", true },
{ "sostacancun.com", true },
@@ -31657,24 +32278,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "soulmate.dating", true },
{ "soulmating.de", true },
{ "soulogic.com", true },
- { "soumikghosh.com", true },
+ { "souly.cc", true },
{ "soumya92.me", true },
{ "soundabout.nl", true },
- { "soundbytemedia.com", true },
{ "soundedj.com.br", true },
{ "soundeo.com", true },
{ "soundeo.net", true },
- { "soundgasm.net", true },
{ "soundhunter.xyz", false },
+ { "soundonsound.com", true },
+ { "soundprotectionllc.com", true },
{ "soundscrate.com", true },
- { "soundsecurity.io", true },
- { "souqtajmeel.com", true },
{ "sour.is", true },
- { "sourcebox.be", true },
+ { "souravsaha.com", true },
+ { "sourcebox.be", false },
{ "sourcely.net", true },
{ "sourceway.de", true },
{ "souris.ch", true },
- { "sous-surveillance.net", false },
{ "southafrican.dating", true },
{ "southambouncycastle.co.uk", true },
{ "southamerican.dating", true },
@@ -31697,7 +32316,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sozai-good.com", true },
{ "sozialy.com", true },
{ "sozon.ca", true },
- { "sp-sephiroth.jp", true },
+ { "sp-sites.com.au", true },
{ "sp.com.pl", true },
{ "sp8ce.co", true },
{ "space-it.de", true },
@@ -31716,7 +32335,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "spakurort.eu", true },
{ "spamdrain.com", true },
{ "spamwc.de", true },
- { "spanda.io", true },
{ "spanjeflydrive.nl", true },
{ "spanyolul.hu", true },
{ "spar-ni.co.uk", true },
@@ -31728,6 +32346,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sparklebastard.com", true },
{ "sparkresearch.net", true },
{ "sparkreviewcenter.com", true },
+ { "sparkz.no", true },
{ "sparprofi.at", true },
{ "sparta-en.org", true },
{ "sparta-solutions.de", true },
@@ -31749,8 +32368,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "speargames.net", true },
{ "specialtyalloys.ca", true },
{ "speciesism.com", true },
- { "spectreattack.com", true },
{ "spectrosoftware.de", true },
+ { "spedition-transport-umzug.de", true },
{ "speech-balloon.com", true },
{ "speechdrop.net", true },
{ "speechmate.com", true },
@@ -31762,7 +32381,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "speedsportofhull.co.uk", true },
{ "speedtailors.com", true },
{ "speedtest-russia.com", true },
- { "speedychat.it", true },
{ "speeltoneel.nl", true },
{ "speerpunt.info", true },
{ "speets.ca", true },
@@ -31778,14 +32396,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "spesys-services.fr", true },
{ "spha.info", true },
{ "sphereblur.com", true },
+ { "spherenix.org", true },
{ "sphido.org", true },
{ "spicydog.org", true },
{ "spicymatch.com", true },
+ { "spidermail.tk", true },
+ { "spidernet.tk", true },
{ "spideroak.com", true },
{ "spiders.org.ua", true },
+ { "spiel-teppich.de", true },
{ "spielezar.ch", true },
{ "spielland.ch", true },
{ "spiellawine.de", true },
+ { "spiet.nl", true },
{ "spiff.eu", true },
{ "spiga.ch", true },
{ "spillersfamily.net", true },
@@ -31795,7 +32418,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "spindle.com.ph", true },
{ "spindrift.com", true },
{ "spingenie.com", true },
- { "spinner.dnshome.de", true },
+ { "spinor.im", true },
{ "spins.fedoraproject.org", true },
{ "spinspin.wtf", true },
{ "spiralschneiderkaufen.de", true },
@@ -31826,19 +32449,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "spongepowered.org", true },
{ "sponsor.network", true },
{ "sponsormatch.eu", true },
- { "sponsorowani.pl", true },
{ "spoofhaus.com", true },
{ "spookbook.net", true },
{ "spookquest.com", true },
- { "spookyinternet.com", true },
{ "spoopy.link", true },
+ { "spoorcam.nl", true },
{ "sporcard.com", true },
{ "spornkuller.de", true },
{ "sport-in-sundern.de", true },
{ "sport-potreby.cz", true },
{ "sport-potreby.sk", true },
{ "sport-socken.net", true },
- { "sport247.bet", true },
{ "sportakrobatik.at", true },
{ "sportbetuwe.nl", true },
{ "sporter.com", true },
@@ -31847,10 +32468,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sportovnidum.cz", true },
{ "sportparks.com", true },
{ "sportparks.org", true },
- { "sportressofblogitude.com", true },
{ "sports.dating", true },
{ "sportsjaw.com", true },
- { "sportsmanadvisor.com", false },
{ "sportsmansblog.com", true },
{ "sportstraineradvisor.com", true },
{ "sporttown.it", true },
@@ -31878,19 +32497,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sprinklermanohio.com", true },
{ "spritmonitor.de", true },
{ "spritsail.io", true },
- { "sproing.ca", true },
+ { "sproktz.com", true },
{ "sprucecreekclubs.com", true },
{ "sprucecreekgcc.com", true },
{ "sps-lehrgang.de", true },
+ { "spslawoffice.com", true },
+ { "spsnewengland.org", true },
{ "sptk.org", true },
{ "spuffin.com", true },
{ "spufpowered.com", true },
{ "spunkt.fr", true },
{ "spur.com.br", true },
+ { "sputnik1net.org", true },
{ "spydar007.com", true },
{ "spydar007.net", true },
{ "spydersec.com", true },
- { "spykedigital.com", true },
{ "spyprofit.ru", true },
{ "spyroszarzonis.com", true },
{ "sqkaccountancy.co.uk", true },
@@ -31899,6 +32520,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sqlfeatures.com", true },
{ "sqr-training.com", true },
{ "sqroot.eu", true },
+ { "squadlinx.com", true },
{ "square-gaming.org", true },
{ "square-src.de", false },
{ "square.com", false },
@@ -31916,6 +32538,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "srbija-nekretnine.org", true },
{ "src.fedoraproject.org", true },
{ "srchub.org", true },
+ { "srigc.com", true },
{ "srihash.org", true },
{ "srinivasan.io", true },
{ "sro.center", true },
@@ -31967,12 +32590,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sslmate.com", true },
{ "sslok.com", true },
{ "sslping.com", true },
- { "sslpoint.com", true },
{ "ssls.cz", true },
{ "sslsurvey.de", true },
{ "ssmato.me", true },
{ "ssmca.com", true },
{ "ssnet.vip", true },
+ { "sso.to", false },
{ "ssready.io", true },
{ "ssready.org", true },
{ "sstaging.com", true },
@@ -31997,28 +32620,29 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stadm.com", true },
{ "stadsbygd.info", true },
{ "stadt-apotheke-muensingen.de", true },
- { "stadtbuecherei-bad-wurzach.de", true },
{ "stadterneuerung-hwb.de", true },
{ "stadtpapa.de", true },
{ "stadtplan-ilmenau.de", true },
{ "staff.direct", true },
+ { "staffordlabour.org.uk", true },
{ "stage.wepay.com", false },
{ "stage4.ch", true },
{ "stageirites.com", true },
{ "stageirites.fr", true },
{ "stageirites.org", true },
- { "stahlfors.com", false },
+ { "stahlfors.com", true },
{ "stainedglass.net.au", true },
{ "stair.ch", true },
{ "stairfallgames.com", true },
{ "stairlin.com", true },
+ { "stakestrategy.com", true },
{ "staklim-malang.info", true },
{ "stako.jp", true },
{ "staktrace.com", true },
{ "stalder.work", true },
+ { "staljedevledder.nl", true },
{ "stalker-shop.com", true },
{ "stalkr.net", true },
- { "stall-zur-linde.de", true },
{ "stamboommuller.nl", true },
{ "stamboomvanderwal.nl", true },
{ "stameystreet.com", true },
@@ -32027,10 +32651,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stamonicatourandtravel.com", true },
{ "stamparmakarije.me", true },
{ "stampederadon.com", true },
+ { "stampsbar.co.uk", true },
{ "standagainstspying.org", true },
{ "standard.co.uk", true },
{ "standardequipment.com", true },
{ "standards.gov", true },
+ { "stanron.com", true },
{ "stanthonymaryclaret.org", true },
{ "star-citizen.wiki", true },
{ "star-clean.it", true },
@@ -32045,6 +32671,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stargarder-jungs.de", true },
{ "stargatelrp.co.uk", true },
{ "stargazer.de", true },
+ { "starina.ru", true },
{ "starinvestors.in", true },
{ "starka.st", true },
{ "starkbim.com", true },
@@ -32055,21 +32682,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "starmtech.fr", true },
{ "starpeak.org", true },
{ "starphotoboothsni.co.uk", true },
- { "starsam80.net", true },
{ "starskim.cn", true },
- { "starstreak.net", true },
+ { "starstreak.net", false },
{ "startaninflatablebusiness.com", true },
- { "starteesforsale.co.za", true },
{ "startergen.com", true },
{ "startlab.sk", true },
{ "startle.cloud", true },
{ "startpage.com", true },
{ "startpage.info", true },
{ "startrek.in", true },
+ { "startsamenvitaal.nu", true },
{ "starttraffic.com", true },
{ "starttraffic.uk", true },
{ "startupgenius.org", true },
- { "startuppeople.co.uk", true },
{ "starwatches.eu", true },
{ "starwins.co.uk", true },
{ "stassi.ch", true },
@@ -32088,10 +32713,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stationatlyndhurst.com", true },
{ "stationatwillowgrove.com", true },
{ "stationcharlie.co.za", true },
+ { "statistik-seminare.de", true },
{ "statistikian.com", true },
{ "statofus.com", true },
{ "stats.g.doubleclick.net", true },
- { "status.coffee", true },
{ "statuscode.ch", true },
{ "stav.io", true },
{ "stavros.ovh", true },
@@ -32101,10 +32726,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stb-schefczyk.de", true },
{ "stb-strzyzewski.de", true },
{ "stbennett.org", true },
+ { "stcplasticsurgery.com", true },
{ "stcu.org", false },
{ "std-home-test.com", true },
{ "stderr.cc", true },
- { "stdev.org", true },
+ { "stdrc.cc", false },
{ "steakhaus-zumdorfbrunnen.de", true },
{ "steakovercooked.com", true },
{ "stealingheather.com", true },
@@ -32118,8 +32744,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "steamtrades.com", true },
{ "steamwhale.com", true },
{ "stebet.net", true },
+ { "steborio.pw", true },
{ "steckel.cc", true },
{ "stedb.eu", true },
+ { "stedbg.net", true },
{ "steef389.eu", true },
{ "steel-roses.de", true },
{ "steelephys.com.au", true },
@@ -32162,10 +32790,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stephane-huc.net", false },
{ "stephaniedeady.ie", true },
{ "stephanieschreiber.com", true },
+ { "stephencreilly.com", true },
{ "stephenhaunts.com", true },
{ "stephenhorler.com.au", true },
{ "stephenj.co.uk", true },
- { "stephenjvoiceovers.com", true },
{ "stephenperreira.com", true },
{ "stephenschrauger.com", true },
{ "stephenschrauger.info", true },
@@ -32191,7 +32819,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sternen-sitzberg.ch", true },
{ "sternenbund.info", true },
{ "sternplastic.com", true },
- { "stesti.cz", true },
{ "stetspa.it", true },
{ "steuer-voss.de", true },
{ "steuerberater-essen-steele.com", true },
@@ -32201,6 +32828,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "steuertipps-sonderausgaben.de", true },
{ "steve.kiwi", true },
{ "steveborba.com", true },
+ { "stevecostar.com", true },
{ "stevedesmond.ca", true },
{ "stevedoggett.com", true },
{ "stevegrav.es", true },
@@ -32219,11 +32847,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stevenz.xyz", true },
{ "stevesdrivingschooltyneside.com", true },
{ "stewartswines.com", true },
- { "stewonet.nl", true },
{ "steyaert.be", false },
- { "stforex.com", true },
+ { "stforex.com", false },
{ "stfw.info", true },
- { "stge.uk", true },
{ "stichtingliab.nl", true },
{ "stichtingscholierenvervoerzeeland.nl", true },
{ "stichtingsticky.nl", true },
@@ -32238,10 +32864,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stiffordacademy.org.uk", true },
{ "stift-kremsmuenster.at", true },
{ "stiftemaskinen.no", true },
- { "stig.io", false },
{ "stigharder.com", true },
{ "stigviewer.com", true },
- { "stijnbelmans.be", true },
{ "stijncrevits.be", true },
{ "stijnodink.nl", true },
{ "stikic.me", true },
@@ -32250,6 +32874,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stilecop.com", true },
{ "stillnessproject.com", true },
{ "stilmobil.se", true },
+ { "stiltmedia.com", true },
{ "stimmgabel.lu", true },
{ "stin.hr", true },
{ "stinaspiegelberg.com", true },
@@ -32260,13 +32885,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stirling.co", true },
{ "stirlingpoon.com", true },
{ "stitchfiddle.com", true },
+ { "stitchinprogress.com", true },
{ "stivesbouncycastlehire.co.uk", true },
{ "stjohnin.com", true },
{ "stln.ml", true },
{ "stlu.de", true },
{ "stlukesbrandon.org", true },
{ "stm-net.de", true },
+ { "stma.is", true },
+ { "stmarthachurch.com", true },
{ "stmaryextra.uk", true },
+ { "stmkza.net", true },
{ "stmlearning.com", true },
{ "stmsolutions.pl", true },
{ "stneotsbouncycastlehire.co.uk", true },
@@ -32286,10 +32915,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stolkschepen.nl", true },
{ "stolpi.is", true },
{ "stomt.com", true },
+ { "stoneagehealth.com.au", true },
{ "stonedworms.de", true },
{ "stonefusion.org.uk", true },
{ "stonehammerhead.org", true },
{ "stonemain.eu", true },
+ { "stonewuu.com", true },
{ "stony.com", true },
{ "stonystratford.org", true },
{ "stopbreakupnow.org", true },
@@ -32299,6 +32930,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "storageideas.uk", true },
{ "stordbatlag.no", true },
{ "storedsafe.com", true },
+ { "storeit.co.uk", true },
{ "storillo.com", true },
{ "storm-family.com", true },
{ "stormi.io", true },
@@ -32310,7 +32942,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "storysift.news", true },
{ "storytea.top", true },
{ "storytell.com", true },
- { "storytime.hu", true },
{ "stouter.nl", true },
{ "stoxford.com", true },
{ "straatderzotten.nl", true },
@@ -32326,6 +32957,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "strategiccapital.com", true },
{ "strategiclivingblog.com", true },
{ "strategie-zone.de", true },
+ { "strathewerd.de", true },
{ "stratmann-b.de", true },
{ "stratuscloud.co.za", true },
{ "stratuscloudconsulting.cn", true },
@@ -32340,17 +32972,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "strauser.com", true },
{ "stravers.shoes", true },
{ "streamchan.org", true },
+ { "streamelements.com", true },
{ "streamlineautogroup.com", true },
+ { "streampleasure.xyz", true },
{ "streams.dyndns.org", true },
- { "street-smart-home.de", true },
+ { "street-medics.fr", true },
{ "street-tek.com", true },
{ "streetdancecenter.com", true },
+ { "streetmarket.ru", true },
{ "streets.mn", true },
{ "streetshirts.co.uk", true },
{ "streetspotr.com", true },
{ "streetview.wien", true },
{ "strefapi.com", true },
- { "strelitzia02.com", true },
+ { "streklhof.at", true },
{ "strengthroots.com", true },
{ "stretchmyan.us", true },
{ "stretchpc.com", true },
@@ -32363,6 +32998,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stringtoolbox.com", true },
{ "stringvox.com", true },
{ "stripe.com", true },
+ { "striped.horse", true },
{ "strivephysmed.com", false },
{ "strm.hu", true },
{ "strming.com", true },
@@ -32372,8 +33008,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stroeerdigital.de", true },
{ "stroginohelp.ru", true },
{ "strom.family", true },
+ { "stromaci.sk", true },
{ "stromberger.org", true },
- { "strommenhome.com", true },
+ { "stromzivota.sk", true },
{ "strongpassword.club", true },
{ "strongrandom.com", false },
{ "strongsalpinesucculents.com", true },
@@ -32389,12 +33026,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "stsolarenerji.com", true },
{ "stt.wiki", true },
{ "stuartbell.co.uk", true },
+ { "stuarteggerton.com", true },
{ "stuartmorris.id.au", true },
{ "stuartmorris.me", true },
{ "stuartmorris.name", true },
{ "stuartmorris.tel", true },
{ "stuarts.xyz", false },
{ "stuco.co", true },
+ { "stucorweb.com", true },
{ "stucydee.nl", true },
{ "studenckiemetody.pl", true },
{ "student-eshop.cz", true },
@@ -32414,6 +33053,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "studio-architetto.com", true },
{ "studio-fotografico.ru", true },
{ "studio-webdigi.com", true },
+ { "studiobergaminloja.com.br", true },
{ "studiodentisticosanmarco.it", true },
{ "studiodewit.nl", true },
{ "studiogavioli.com", true },
@@ -32423,6 +33063,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "studiolegalepaternostro.it", true },
{ "studiomarcella.com", true },
{ "studionowystyl.pl", true },
+ { "studiopirrate.com", true },
{ "studiopop.com.br", true },
{ "studioproapp.com", true },
{ "studioriehl.com", true },
@@ -32435,10 +33076,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "studipro-marketing.fr", true },
{ "studium.cz", true },
{ "studlan.no", true },
- { "studport.rv.ua", true },
{ "studyin.jp", true },
- { "studying-neet.com", true },
+ { "studyspy.ac.nz", true },
{ "studytactics.com", true },
+ { "studytale.com", true },
{ "stuermer.me", true },
{ "stuetzredli.ch", true },
{ "stuff-fibre.co.nz", true },
@@ -32475,7 +33116,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "su1ph3r.io", true },
{ "suaudeau.fr", true },
{ "suaudeau.org", true },
- { "suave.io", true },
{ "sub-net.at", true },
{ "sub.media", true },
{ "subastasdecarros.net", true },
@@ -32495,10 +33135,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "suburban-landscape.net", true },
{ "suburbaninfinitioftroyparts.com", true },
{ "subversive-tech.com", true },
- { "subzerotech.co.uk", true },
{ "succ.in", true },
{ "succesprojekter.dk", true },
- { "suche.org", true },
{ "suchmaschinen-werkstatt.de", true },
{ "suckmyan.us", false },
{ "sucretown.net", true },
@@ -32515,18 +33153,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "suevia-ka.de", true },
{ "suffa.ac", true },
{ "suffix.ru", true },
- { "suffts.de", true },
{ "sufix.cz", true },
{ "sugarandcloth.com", true },
{ "sugarbrother.com", true },
{ "sugarfactory.cz", true },
+ { "sugarmillmanagement.com", true },
{ "sugarshin.net", true },
{ "suggea.com", true },
{ "suggestim.ch", true },
{ "suisui.stream", true },
+ { "suited21.com", true },
{ "suitesapp.com", true },
{ "sujatadev.in", true },
{ "sujoydhar.in", true },
+ { "suka.moe", true },
+ { "suke3.jp", true },
{ "suki.moe", true },
{ "suko.pe", true },
{ "sukrie.net", true },
@@ -32542,36 +33183,39 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sumoatm.com", false },
{ "sumthing.com", true },
{ "sun-leo.co.jp", true },
+ { "sun-wellness-online.com.vn", true },
{ "sunboxstore.jp", true },
{ "sunbritetv.com", true },
{ "sunchasercats.com", true },
{ "sundanceusa.com", true },
{ "sundayfundayjapan.com", true },
- { "sunfeathers.net", true },
+ { "sundayrest.com", true },
+ { "sundragon.se", true },
+ { "sunfiregold.com", true },
{ "sunflyer.cn", false },
{ "sunfox.cz", true },
{ "sunfulong.blog", true },
{ "sunfulong.me", true },
+ { "sunjaydhama.com", true },
{ "sunjiutuo.com", true },
{ "sunlit.cloud", true },
{ "sunn.ie", true },
{ "sunoikisis.org", true },
+ { "sunset.im", true },
{ "sunsetwx.com", true },
{ "sunshinesf.org", true },
{ "sunsmartresorts.com", true },
+ { "sunsong.org", true },
{ "sunstar.bg", true },
{ "sunwolf.studio", true },
- { "sunyataherb.com", true },
{ "suool.net", true },
{ "supa.sexy", true },
{ "supastuds.com", true },
- { "super-erotica.ru", true },
{ "superaficionados.com", true },
{ "superbart.nl", true },
{ "superbdistribute.com", true },
{ "superbouncebouncycastles.com", true },
{ "superbowlkneel.com", true },
- { "superbshare.com", true },
{ "supercalorias.com", true },
{ "supercastlesadelaide.com.au", true },
{ "supercastlesbrisbane.com.au", true },
@@ -32580,10 +33224,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "supercastlessydney.com.au", true },
{ "supercentenarian.com", true },
{ "supercinebattle.fr", true },
+ { "superdaddy.club", true },
{ "supereight.net", true },
{ "superguide.com.au", true },
{ "superhappiness.com", true },
{ "superhome.com.au", true },
+ { "supermae.pt", true },
{ "supermarx.nl", true },
{ "supermercadosdia.com.ar", true },
{ "supermercato24.it", true },
@@ -32591,7 +33237,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "supern0va.net", true },
{ "supernaut.info", true },
{ "supernt.lt", true },
- { "supersahnetorten.de", true },
{ "supersec.es", true },
{ "supersole.net", true },
{ "supersonnig-festival.de", true },
@@ -32605,7 +33250,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "supertutorial.com.br", true },
{ "supervisionassist.com", true },
{ "supeuro.com", true },
- { "supperclub.es", false },
{ "supplementler.com", true },
{ "supplies24.at", true },
{ "supplies24.es", true },
@@ -32619,43 +33263,53 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sur-v.com", true },
{ "surao.cz", true },
{ "surasak.io", true },
+ { "surasak.net", true },
+ { "surasak.org", true },
{ "surdam.casa", false },
{ "sure-it.de", true },
+ { "surefit-oms.com", true },
{ "suretone.co.za", true },
+ { "surfnetkids.com", true },
{ "surfocal.com", true },
{ "surgenet.nl", true },
{ "surgeongeneral.gov", true },
{ "surgicalassociateswny.com", true },
+ { "surgiclinic.gr", true },
{ "suroil.com", true },
{ "surpreem.com", true },
+ { "surreyheathyc.org.uk", true },
+ { "suruifu.com", true },
+ { "suruifu.tk", true },
{ "survature.com", true },
{ "surveyhealthcare.com", true },
{ "surveyinstrumentsales.com", true },
{ "surveymill.co.uk", true },
+ { "survivalistplanet.com", true },
{ "survivalmonkey.com", true },
{ "survivebox.fr", true },
{ "susanbpilates.co", true },
{ "susanbpilates.com", true },
{ "susann-kerk.de", true },
{ "susanna-komischke.de", true },
+ { "susanvelez.com", true },
{ "susc.org.uk", true },
{ "sush.us", true },
{ "sushi.roma.it", true },
{ "sushibesteld.nl", true },
- { "sushifrick.de", true },
{ "sushikatze.de", true },
- { "sushiwereld.be", true },
+ { "susoccm.org", true },
{ "susosudon.com", true },
{ "suspension-shop.com", true },
- { "sussexwebsites.info", false },
{ "sustainabilityknowledgegroup.com", true },
{ "sustainoss.org", true },
{ "sustsol.com", true },
{ "sutas.market", true },
{ "suurhelsinki.cf", true },
{ "suuria.de", true },
+ { "suv4.net", true },
{ "suwalls.com", true },
{ "suzi3d.com", true },
+ { "suziekovner.com", true },
{ "suzukimarinepress.com", true },
{ "sv-1966-medenbach.de", true },
{ "sv-turm-hohenlimburg.de", true },
@@ -32681,10 +33335,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "svetandroida.cz", true },
{ "svetlilo.com", true },
{ "svetzitrka.cz", false },
+ { "svht.nl", true },
{ "svijet-medija.hr", true },
{ "svinformatica.es", true },
{ "svm-basketball.de", true },
{ "svm-it.eu", true },
+ { "svobodnyblog.cz", true },
{ "sw-servers.net", true },
{ "sw33tp34.com", true },
{ "swagsocial.net", true },
@@ -32697,8 +33353,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "swat4stats.com", true },
{ "swattransport.ae", true },
{ "sway-cdn.com", true },
- { "sway.com", true },
{ "swd.agency", true },
+ { "sweak.net", true },
{ "swedishhost.com", true },
{ "swedishhost.se", true },
{ "sweep-me.net", true },
@@ -32709,13 +33365,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sweetgood.de", true },
{ "sweets-mimatsu.com", true },
{ "swehack.org", true },
+ { "sweharris.org", true },
{ "swerve-media-testbed-03.co.uk", true },
{ "swetrust.com", true },
{ "swfmax.com", true },
- { "swiftpk.net", true },
+ { "swiftpcbassembly.com", true },
{ "swiftqueue.com", true },
{ "swilly.org", true },
{ "swimbee.nl", true },
+ { "swimmingpoolaccidentattorney.net", true },
{ "swimready.net", true },
{ "swimwear365.co.uk", true },
{ "swineson.me", true },
@@ -32734,13 +33392,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "swisslinux.org", true },
{ "swisstechassociation.ch", true },
{ "swisstechtalks.ch", true },
- { "swissxperts.ch", true },
{ "switch-trader.com", true },
{ "switch.moe", true },
{ "switcheo.exchange", true },
{ "switcheo.rocks", true },
{ "switzerland-family-office.com", true },
{ "swordfeng.xyz", true },
+ { "swuosa.org", false },
{ "swvaux.com", true },
{ "swyn.net", true },
{ "sx8.ovh", true },
@@ -32748,6 +33406,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sy-anduril.de", true },
{ "sy24.ru", true },
{ "syajvo.if.ua", true },
+ { "syamutodon.xyz", true },
+ { "syamuwatching.xyz", true },
{ "sycamorememphis.org", true },
{ "sychov.pro", true },
{ "sydney-sehen.com", true },
@@ -32756,6 +33416,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sydneylawnandturf.com.au", true },
{ "syenar.net", true },
{ "syezd.com.au", true },
+ { "syha.org.uk", true },
{ "syhost.at", true },
{ "syhost.ch", true },
{ "syhost.de", true },
@@ -32764,7 +33425,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "syleam.in", true },
{ "sylfie.net", true },
{ "syllogi.xyz", true },
- { "sylvaincombe.net", true },
{ "sylvaindurand.fr", true },
{ "sylvaindurand.org", true },
{ "sylvaloir.fr", true },
@@ -32779,10 +33439,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "symbiose.com", true },
{ "symbiosecom.ch", true },
{ "symeda.de", true },
- { "symetria.io", true },
{ "symfora-meander.nl", true },
{ "symlnk.de", true },
{ "symphonos.it", true },
+ { "sympmarc.com", true },
+ { "sympraxisconsulting.com", true },
{ "symptome-erklaert.de", true },
{ "synabi.com", true },
{ "synaptickz.me", true },
@@ -32790,7 +33451,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sync-it.no", true },
{ "synccentre.com", true },
{ "syncflare.com", true },
- { "synchrocube.com", true },
{ "synchrolarity.com", true },
{ "synchronyse.com", true },
{ "synchtu.be", true },
@@ -32820,7 +33480,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "sysmike.de", true },
{ "systea.fr", true },
{ "system-m.de", true },
- { "system-online.cz", true },
{ "system.cf", true },
{ "system.is", true },
{ "system12.pl", true },
@@ -32828,28 +33487,35 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "systemadmin.uk", true },
{ "systematic-momo.com", true },
{ "systematic-momo.dk", true },
+ { "systemchile.com", true },
{ "systemd.ch", true },
{ "systemd.eu.org", true },
{ "systemeprod.fr", true },
{ "systemintegra.ru", true },
{ "systemli.org", true },
+ { "systemonthego.com", true },
{ "systemreboot.net", true },
{ "systemspace.link", true },
- { "systemweb.no", true },
{ "systemzeit.info", true },
{ "systoolbox.net", true },
{ "sysystems.cz", true },
{ "syt3.net", true },
{ "sytk.me", true },
+ { "syukatsu-net.jp", true },
{ "syy.im", true },
{ "syzygy-tables.info", true },
{ "szafkirtv.pl", true },
{ "szagun.net", true },
+ { "szaloneigly.com", true },
{ "szamitogepdepo.com", true },
{ "szaydon.me", false },
+ { "szclsya.me", true },
+ { "szczot3k.pl", true },
{ "szechenyi2020.hu", true },
{ "szentistvanpt.sk", true },
{ "szerelem.love", true },
+ { "szetowah.org.hk", true },
+ { "szunia.com", true },
{ "szybkiebieganie.pl", true },
{ "szyndler.ch", true },
{ "t-hawk.com", true },
@@ -32875,6 +33541,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tabarnak.ga", true },
{ "tabernadovinho.com.br", true },
{ "tabhui.com", true },
+ { "tabi-news.com", true },
+ { "tabi-runrun.com", true },
{ "tabithawebb.co.uk", true },
{ "tabledusud.be", true },
{ "tabledusud.nl", true },
@@ -32885,13 +33553,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "taborsky.cz", true },
{ "tac-volley.com", true },
{ "tachi.uk", true },
- { "tachyonapp.com", true },
{ "tacklinglife.com", true },
{ "tacklog.com", true },
{ "tacomafia.net", false },
{ "tacostea.net", true },
{ "tacticalsquare.com", true },
- { "tadata.me", true },
{ "taddiestales.com", true },
{ "tadeo.ca", true },
{ "tadluedtke.com", true },
@@ -32899,19 +33565,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tadu.de", true },
{ "tagabrand.co.uk", true },
{ "tagdocumentary.com", true },
+ { "tagesmutter-zwitscherlinge.de", true },
{ "taggedpdf.com", false },
{ "taglioepiega.com", true },
{ "taglioepiega.eu", true },
{ "taglioepiega.it", true },
{ "tagpay.com", true },
+ { "tahavu.com", true },
{ "tahosa.co", true },
{ "tahosalodge.org", true },
{ "tai-in.com", true },
{ "tai-in.net", true },
- { "tailandfur.com", true },
- { "tailpuff.net", true },
{ "tails.boum.org", true },
{ "taimane.com", true },
+ { "taiphanmem.net", true },
{ "taishon.nagoya", true },
{ "taitmacleod.com", true },
{ "taiwan.dating", true },
@@ -32920,9 +33587,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "taizegroep.nl", true },
{ "tajper.pl", true },
{ "take1give1.com", false },
- { "takebackyourstate.com", true },
- { "takebackyourstate.net", true },
- { "takebackyourstate.org", true },
{ "takeitoffline.co.uk", true },
{ "takemoto-ped.com", true },
{ "taken.pl", true },
@@ -32941,7 +33605,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "taler.net", true },
{ "talideon.com", false },
{ "talk.google.com", true },
- { "talk.xyz", true },
{ "talkgadget.google.com", true },
{ "talking12.com", true },
{ "talkingmoose.net", true },
@@ -32957,9 +33620,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tallyfy.com", true },
{ "talon.rip", true },
{ "talroo.com", true },
- { "talsi.eu", true },
{ "talun.de", true },
- { "tamaraboutique.com", true },
{ "tamashimx.net", true },
{ "tambre.ee", true },
{ "tamchunho.com", true },
@@ -32968,12 +33629,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tampabaybusinesslistings.com", true },
{ "tamposign.fr", true },
{ "tamriel-rebuilt.org", true },
- { "tanak3n.xyz", true },
+ { "tanak3n.xyz", false },
{ "tancredi.nl", true },
{ "tandem-trade.ru", false },
{ "tandempartnerships.com", true },
+ { "tandilmap.com.ar", true },
+ { "tandk.com.vn", true },
{ "tandzorg.link", true },
- { "tangel.me", true },
{ "tangemann.org", true },
{ "tango-cats.de", true },
{ "tango-ouest.com", true },
@@ -32987,9 +33649,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tankski.co.uk", true },
{ "tannenhof-moelln.de", true },
{ "tannerryan.ca", true },
+ { "tannerwj.com", true },
{ "tantalos.nl", true },
{ "tantei100.net", true },
- { "tantetilli.de", true },
{ "tanto259.name", false },
{ "tanyanama.com", true },
{ "tanz.info", true },
@@ -32998,12 +33660,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "taoburee.com", true },
{ "taoways.com", true },
{ "tapakgram.com", true },
+ { "taplamvan.net", true },
{ "taplemon.at", true },
{ "taplemon.com", true },
{ "taprix.org", true },
- { "taqsim.jp", true },
+ { "tapsnapp.co", true },
{ "taquilla.com", true },
{ "taqun.club", true },
+ { "tarantul.org.ua", true },
{ "tarasecurity.co.uk", true },
{ "tarasecurity.com", true },
{ "tarasevich.by", true },
@@ -33014,6 +33678,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tariff.cc", true },
{ "tarik.io", true },
{ "tarmexico.com", true },
+ { "tarots-et-oracles.com", true },
{ "tarsan.cz", true },
{ "tartaneagle.org.uk", true },
{ "tartanhamedshop.com.br", true },
@@ -33051,12 +33716,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "taxi-puck.pl", true },
{ "taxi-waregem.be", true },
{ "taxicollectif.ch", true },
- { "taxiindenbosch.nl", true },
+ { "taxid-k.be", true },
{ "taxis-collectifs.ch", true },
{ "taxisafmatosinhos.pt", true },
{ "taxiscollectifs.ch", true },
{ "taxlab.co.nz", true },
- { "taxspeaker.com", true },
+ { "taxsquirrel.com", true },
{ "taylorpearson.me", false },
{ "taylors-castles.co.uk", true },
{ "taylorstauss.com", true },
@@ -33064,6 +33729,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tb-devel.de", true },
{ "tb-itf.de", true },
{ "tba.bm", true },
+ { "tbejos.com", true },
{ "tbfocus.com", true },
{ "tbitc.ch", true },
{ "tbonejs.org", true },
@@ -33071,9 +33737,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tbrindus.ca", true },
{ "tbs-certificates.co.uk", true },
{ "tbspace.de", true },
- { "tbtech.cz", true },
{ "tbuchloh.de", true },
- { "tbys.us", true },
{ "tc-st-leonard.ch", true },
{ "tc.nz", true },
{ "tcacademy.co.uk", true },
@@ -33083,6 +33747,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tcf.org", true },
{ "tcgforum.pl", true },
{ "tcgrepublic.com", true },
+ { "tchaka.top", true },
{ "tchannels.tv", true },
{ "tchebb.me", true },
{ "tchebotarev.com", true },
@@ -33093,9 +33758,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tcptun.com", true },
{ "tcpweb.net", true },
{ "tcspartner.net", true },
+ { "tcvvip.com", true },
+ { "tcwis.com", true },
{ "tdchrom.com", true },
{ "tdfbfoundation.org", true },
- { "tdpblog.site", true },
{ "tdrcartuchos.com.br", true },
{ "tdrs.info", true },
{ "tdsf.io", true },
@@ -33118,7 +33784,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "team-bbd.com", true },
{ "team.house", true },
{ "team3482.com", true },
- { "teamassists.com", true },
{ "teambeam.at", true },
{ "teambeam.ch", true },
{ "teambeam.com", true },
@@ -33127,6 +33792,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "teambodyproject.com", true },
{ "teamcombat.com", true },
{ "teamliquidpro.com", true },
+ { "teammateworld.com", true },
{ "teammathics.com", true },
{ "teamnetsol.com", true },
{ "teamninjaapp.com", true },
@@ -33141,7 +33807,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "teamupturn.org", true },
{ "teamusec.de", true },
{ "tearoomlints.be", true },
- { "teasenetwork.com", true },
{ "teaser-trailer.com", true },
{ "teatrarium.com", true },
{ "teb-akademia.pl", true },
@@ -33158,6 +33823,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tech-seminar.jp", true },
{ "tech-value.eu", true },
{ "tech-zealots.com", true },
+ { "techableme.com", true },
{ "techace.jp", true },
{ "techademy.nl", true },
{ "techarea.fr", true },
@@ -33183,18 +33849,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "techmajesty.com", true },
{ "techmasters.io", true },
{ "techmunchies.net", false },
+ { "technic3000.com", true },
{ "technicabv.nl", true },
{ "technicalbrothers.cf", true },
{ "technicallyeasy.net", true },
{ "technicalsystemsprocessing.com", true },
- { "techniclab.net", true },
- { "techniclab.org", true },
- { "techniclab.ru", true },
{ "technifocal.com", true },
{ "technik-boeckmann.de", true },
{ "technikblase.fm", true },
+ { "technikman.de", true },
{ "technoinfogroup.it", true },
{ "technologie-innovation.fr", true },
+ { "technologyand.me", true },
{ "technologysi.com", true },
{ "technoparcepsilon.fr", true },
{ "technoscoots.com", true },
@@ -33212,6 +33878,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "techsolvency.com", true },
{ "techsys.cz", true },
{ "techtalks.no", true },
+ { "techtrader.ai", true },
+ { "techtrader.io", true },
{ "techtuts.info", true },
{ "techvalue.gr", true },
{ "techview.link", true },
@@ -33220,6 +33888,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "techwithcromulent.com", true },
{ "techwords.io", true },
{ "teckids.org", true },
+ { "tecma.com", true },
{ "tecmarkdig.com", true },
{ "tecne.ws", true },
{ "tecnicoelettrodomestici.roma.it", true },
@@ -33243,7 +33912,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "teemperor.de", true },
{ "teemulintula.fi", true },
{ "teencounseling.com", true },
- { "teenerotic.net", true },
{ "teengirl.pub", true },
{ "teensexgo.com", true },
{ "teesypeesy.com", true },
@@ -33253,7 +33921,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tehcrayz.com", true },
{ "tehrabbitt.com", false },
{ "tehrankey.ir", true },
- { "tehranperfume.com", true },
{ "teixobactin.com", true },
{ "tejarat98.com", true },
{ "teknemodus.com.au", true },
@@ -33263,7 +33930,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "teknoforums.com", true },
{ "teknolit.com", true },
{ "tekstschrijvers.net", true },
- { "teksuperior.com", true },
{ "tektuts.com", true },
{ "tekuteku.jp", true },
{ "telamon.eu", true },
@@ -33281,6 +33947,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "telefoncek.si", true },
{ "telefonkonferenz.ch", true },
{ "telefonni-ustredna.cz", true },
+ { "telefonogratuito.com", true },
{ "telefonseelsorge-paderborn.de", true },
{ "telefoon.nl", true },
{ "telefoonabonnement.nl", true },
@@ -33292,8 +33959,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "telepass.me", true },
{ "telephonedirectories.us", true },
{ "telepons.com", true },
- { "teleshop.be", true },
{ "telework.gov", true },
+ { "tellcorpassessoria.com.br", true },
{ "telling.xyz", true },
{ "tellusaboutus.com", true },
{ "telly.site", true },
@@ -33302,7 +33969,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "telos-analytics.com", true },
{ "teltonica.com", true },
{ "teltru.com", true },
- { "telugu4u.net", true },
{ "tem.li", true },
{ "tematicas.org", true },
{ "temizmama.com", true },
@@ -33343,20 +34009,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tepitus.de", true },
{ "teplofom.ru", true },
{ "teplomash24.ru", true },
- { "tequilazor.com", true },
{ "terabyte.services", true },
{ "terabyteharddrive.net", true },
{ "terabyteit.co.uk", true },
{ "teracloud.at", true },
{ "teranacreative.com", true },
- { "tercerapuertoaysen.cl", true },
{ "teriiphotography.com", true },
{ "terlindung.com", true },
{ "termax.me", true },
- { "termino.eu", true },
{ "termitemounds.org", true },
{ "termitinitus.org", true },
{ "termografiranje.si", true },
+ { "termux.com", true },
{ "terra.fitness", true },
{ "terrab.de", false },
{ "terracloud.de", false },
@@ -33369,6 +34033,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "terralimno.eu", true },
{ "terraluna.space", true },
{ "terranova-nutrition.dk", true },
+ { "terrapay.com", true },
{ "terrastaffinggroup.com", false },
{ "terraweb.net", true },
{ "terresmagiques.com", true },
@@ -33385,18 +34050,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tessai.ga", true },
{ "test-textbooks.com", true },
{ "test.de", true },
+ { "test.support", true },
{ "testadren.com", true },
{ "testgeomed.ro", true },
{ "testi.info", true },
{ "testomato.com", true },
+ { "testosterone-complex.com", true },
{ "testosteronedetective.com", true },
{ "testpornsite.com", true },
{ "testsuite.org", true },
{ "testuje.net", true },
{ "tetedelacourse.ch", true },
{ "teto.nu", true },
+ { "tetraetc.com", true },
{ "tetraktus.org", true },
- { "tetrarch.co", true },
{ "tetsugakunomichi.jp", true },
{ "tetsumaki.net", true },
{ "teufel.dk", true },
@@ -33446,6 +34113,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tgbyte.de", true },
{ "tgexport.eu", true },
{ "tgmkanis.com", true },
+ { "tgtv.tn", true },
{ "tgui.eu", true },
{ "tgui.net", true },
{ "tgw.com", true },
@@ -33460,11 +34128,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thailandpharmacy.net", true },
{ "thairehabassociation.com", true },
{ "thajskyraj.com", true },
- { "thala.fr", false },
+ { "thala.fr", true },
{ "thalan.fr", true },
{ "thalgott.net", true },
{ "thalhammer.it", true },
{ "thalia.nu", true },
+ { "thaliagetaway.com.au", true },
{ "thallinger.me", true },
{ "thamesfamilydentistry.com", true },
{ "thanabh.at", true },
@@ -33472,8 +34141,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thanhthinhbui.com", true },
{ "thatdarkplace.com", true },
{ "thatquiz.org", true },
+ { "thatsme.io", true },
{ "thca.ca", true },
{ "thcpbees.co.uk", true },
+ { "the-bermanns.com", true },
{ "the-body-shop.hu", false },
{ "the-fermenter.com", true },
{ "the-gdn.net", true },
@@ -33482,6 +34153,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "the-nash-education-program.com", true },
{ "the-pcca.org", true },
{ "the-webmaster.com", true },
+ { "the-woods.org.uk", true },
+ { "the-zenti.de", true },
{ "the2f.de", true },
{ "the3musketeers.biz", true },
{ "theactuary.ninja", true },
@@ -33493,16 +34166,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thebakers.com.br", true },
{ "thebakery2go.de", true },
{ "thebannerstore.com", true },
+ { "thebarrens.nu", true },
{ "thebasebk.org", true },
{ "thebcm.co.uk", true },
{ "thebest.ch", true },
{ "thebestfun.co.uk", true },
+ { "thebestpersonin.ml", true },
{ "thebestsavingsplan.com", true },
{ "thebigbitch.nl", true },
{ "thebigdatacompany.com", true },
{ "thebigwave.de", true },
{ "thebikeinsurer.co.uk", true },
{ "thebimhub.com", true },
+ { "thebinarys.com", true },
{ "thebirthdaysite.co.uk", true },
{ "thebit.link", true },
{ "theblackknightsings.com", true },
@@ -33515,18 +34191,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thebreakroom.org", true },
{ "thebrightons.co.uk", true },
{ "thebrightons.uk", true },
+ { "thebulletin.io", true },
{ "thebusinessofgoodfilm.com", true },
{ "thecamels.org", true },
{ "thecameradivision.com", true },
- { "thecandidforum.com", true },
{ "thecarolingconnection.com", true },
{ "thecellulitediet.com", true },
{ "thecherryship.ch", true },
{ "thechunk.net", true },
{ "theciderlink.com.au", true },
- { "thecitizens.com", true },
{ "thecitywarehouse.clothing", true },
- { "thecloudmigrator.com", true },
{ "thecloudshelter.com", true },
{ "thecoffeecamp.com", true },
{ "thecoffeesuperstore.com", true },
@@ -33534,6 +34208,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thecompany.pl", true },
{ "theconcordbridge.azurewebsites.net", true },
{ "thecondobuyers.com", true },
+ { "thecookiejar.me", true },
{ "thecozycastle.com", true },
{ "thecrazytravel.com", true },
{ "thecrew-exchange.com", true },
@@ -33543,13 +34218,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thecuriousdev.com", true },
{ "thecurvyfashionista.com", true },
{ "thecustomdroid.com", true },
- { "thecustomizewindows.com", true },
{ "thedark1337.com", true },
{ "thedebug.life", true },
{ "thederminstitute.com", true },
{ "thediaryofadam.com", true },
+ { "thedisc.nl", true },
{ "thediscovine.com", true },
{ "thedocumentrefinery.com", true },
+ { "thedom.site", true },
{ "thedreamtravelgroup.co.uk", true },
{ "thedronechart.com", true },
{ "thedutchmarketers.com", true },
@@ -33557,23 +34233,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "theeducationchannel.info", true },
{ "theeducationdirectory.org", true },
{ "theeighthbit.com", true },
- { "theel0ja.info", true },
{ "theel0ja.ovh", true },
{ "theemasphere.com", true },
+ { "thefairieswantmedead.com", true },
{ "thefanimatrix.net", true },
{ "thefasterweb.com", true },
{ "thefbstalker.com", true },
{ "thefengshuioffice.com", true },
{ "theferrarista.com", true },
{ "theflowerbasketonline.com", true },
+ { "theflowershopdeddington.com", true },
{ "theflyingbear.net", true },
{ "thefnafarchive.org", true },
- { "thefox.com.fr", true },
+ { "thefourthmoira.com", true },
{ "thefrk.pw", true },
+ { "thefuckingtide.com", true },
{ "thefunfirm.co.uk", true },
{ "thefurnitureco.uk", true },
{ "thegarrowcompany.com", true },
- { "thegcccoin.com", true },
{ "thegeekdiary.com", true },
{ "thegioinano.com", true },
{ "thegrape.ro", true },
@@ -33582,7 +34259,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thegreenfields.se", true },
{ "thegreenmanpottery.com", true },
{ "thegreenpark.co.uk", true },
- { "thegreens.us", true },
+ { "thegrs.com", true },
{ "theguitarcompany.nl", true },
{ "thegvoffice.net", true },
{ "thegym.org", true },
@@ -33590,12 +34267,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thehairrepublic.net", true },
{ "thehairstandard.com", true },
{ "thehaxbys.co.uk", true },
- { "thehiddenbay.fi", true },
{ "thehiddenbay.info", true },
- { "thehiddenbay.ws", true },
{ "thehivedesign.org", true },
{ "thehomeicreate.com", true },
{ "thehookup.be", true },
+ { "thehoryzon.com", true },
+ { "thehotfix.net", true },
{ "thehotness.tech", true },
{ "thehouseofgod.org.nz", true },
{ "thehowtohome.com", true },
@@ -33616,6 +34293,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thelaimlife.com", true },
{ "thelanscape.com", true },
{ "thelastsurprise.com", true },
+ { "thelatedcult.com", true },
+ { "thelearningenterprise.co.uk", true },
{ "thelegionshirley.co.uk", true },
{ "thelinuxtree.net", true },
{ "thelittlecraft.com", true },
@@ -33625,7 +34304,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "themacoaching.nl", true },
{ "themallards.info", true },
{ "themarshallproject.org", true },
- { "themeaudit.com", true },
+ { "themaster.site", true },
{ "themecraft.studio", true },
{ "themefoxx.com", true },
{ "themetacity.com", true },
@@ -33633,6 +34312,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "themillerslive.com", true },
{ "themimitoof.fr", true },
{ "themist.cz", true },
+ { "themobilestuffs.com", true },
{ "themoep.at", true },
{ "themoneyconverter.com", true },
{ "themonkeytrail.co.uk", true },
@@ -33644,7 +34324,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thenarcissisticlife.com", true },
{ "thenexwork.com", true },
{ "thenib.com", true },
- { "thenichecast.com", true },
{ "thenocman.com", true },
{ "thenovaclinic.com", true },
{ "thenowheremen.com", true },
@@ -33669,6 +34348,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thepaulagcompany.com", true },
{ "thepaymentscompany.com", true },
{ "thepb.in", true },
+ { "thepeninsulaires.com", true },
{ "thephonecaseplace.com", true },
{ "thephp.cc", true },
{ "thepiabo.ovh", true },
@@ -33679,9 +34359,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "theplaydaysbus.co.uk", true },
{ "theplayspot.co.uk", true },
{ "theploughharborne.co.uk", true },
+ { "thepoplarswines.com.au", true },
{ "thepostoffice.ro", true },
{ "thepriorybandbsyresham.co.uk", true },
+ { "theproductpoet.com", true },
{ "thepromisemusic.com", true },
+ { "thepurem.com", true },
+ { "thepythianseed.com", true },
{ "theragran.co.id", true },
{ "theralino.de", true },
{ "theramo.re", true },
@@ -33691,25 +34375,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "therapysxm.com", true },
{ "therealcost.gov", true },
{ "thereaper.net.au", true },
+ { "thereisnocloud.fr", true },
+ { "therepublicofliverpool.com", true },
{ "theresa-mayer.eu", true },
{ "therevenge.me", true },
{ "therewill.be", true },
{ "thermalbad-therme.de", true },
{ "thermity.com", true },
{ "thermolamina.nl", true },
- { "theroamingnotary.com", true },
{ "theroks.com", true },
{ "theroyalmarinescharity.org.uk", true },
+ { "therugswarehouse.co.uk", true },
{ "theruizes.com", true },
{ "theruleslawyer.net", true },
{ "therumfordcitizen.com", true },
{ "thesalonthing.com", false },
- { "thesassynut.com", true },
{ "thesaturdaypaper.com.au", true },
{ "thesaurus.net", true },
{ "theschool.jp", true },
{ "thescientists.nl", true },
- { "thesecondsposts.com", true },
+ { "thesecondsposts.com", false },
{ "theseed.io", true },
{ "theseedbox.xyz", true },
{ "theseletarmall.com", true },
@@ -33732,10 +34417,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thesmokingcuban.com", true },
{ "thesocialmediacentral.com", true },
{ "thesplashlab.com", true },
+ { "thesslstore.com", true },
{ "thestationatwillowgrove.com", true },
{ "thesteins.org", false },
{ "thestoneage.de", true },
- { "thestoritplace.com", true },
{ "thestory.ie", true },
{ "thestoryshack.com", true },
{ "thestral.pro", true },
@@ -33747,10 +34432,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "theswissbay.ch", true },
{ "thetechnical.me", true },
{ "thetenscrolls.com", true },
+ { "thethreepercent.marketing", true },
{ "thetomharling.com", true },
+ { "thetradinghall.com", true },
{ "thetree.ro", true },
{ "thetrendspotter.net", true },
{ "thetuxkeeper.de", false },
+ { "thetvtraveler.com", true },
{ "theunitedstates.io", true },
{ "thevacweb.com", true },
{ "thevalentineconstitution.com", true },
@@ -33760,6 +34448,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thewaxhouse.academy", true },
{ "thewaxhouse.de", true },
{ "thewaxhouse.shop", true },
+ { "thewebdexter.com", true },
{ "thewebflash.com", true },
{ "thewebsitedoctors.co.uk", true },
{ "thewebsitemarketingagency.com", true },
@@ -33769,6 +34458,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thewinstonatlyndhurst.com", true },
{ "thewoodkid.com.au", true },
{ "thewoolroom.com.au", true },
+ { "theworldexchange.com", true },
+ { "theworldexchange.net", true },
+ { "theworldexchange.org", true },
{ "theworldsend.eu", true },
{ "thexfactorgames.com", true },
{ "thexme.de", true },
@@ -33777,10 +34469,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "theyear199x.org", true },
{ "theyearinpictures.co.uk", true },
{ "theyosh.nl", true },
+ { "thezero.org", true },
{ "thezillersathenshotel.com", true },
{ "thiagohersan.com", true },
{ "thibaultwalle.com", true },
- { "thibautcharles.net", true },
{ "thienteakee.com", true },
{ "thiepcuoidep.com", true },
{ "thiepxinh.net", true },
@@ -33801,21 +34493,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thinkingandcomputing.com", true },
{ "thinkingliberty.com", true },
{ "thinkingplanet.net", true },
- { "thinklikeanentrepreneur.com", true },
{ "thinkmarketing.ca", true },
{ "thinkquality.nl", true },
{ "thinkrealty.com", true },
{ "thinktux.net", true },
{ "thirdbearsolutions.com", true },
{ "thirdworld.moe", true },
- { "thirtyspot.com", true },
{ "thiry-automobiles.net", true },
{ "thisbrownman.com", true },
{ "thiscloudiscrap.com", false },
{ "thiscode.works", true },
{ "thisdot.site", true },
{ "thisfreelife.gov", true },
+ { "thisisgrey.com", true },
{ "thisishugo.com", true },
+ { "thisisthefinalact.com", true },
{ "thisistheserver.com", true },
{ "thisiswhywemom.com", true },
{ "thismatter.com", true },
@@ -33833,12 +34525,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thomas-suchon.fr", true },
{ "thomas.love", false },
{ "thomasbeckers.be", true },
+ { "thomasbreads.com", false },
+ { "thomasduerlund.com", true },
{ "thomasduerlund.dk", true },
+ { "thomasetsophie.fr", true },
{ "thomaseyck.com", true },
{ "thomasfoster.co", true },
- { "thomasgriffin.io", true },
{ "thomashunter.name", false },
{ "thomasmcfly.com", true },
+ { "thomasmeester.nl", false },
+ { "thomasmerritt.de", true },
{ "thomassen.sh", false },
{ "thomasstevensmusic.com", true },
{ "thomastimepieces.com.au", true },
@@ -33852,6 +34548,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thor.edu", true },
{ "thor.re", true },
{ "thoroquel.org", true },
+ { "thoroughbreddiesel.com", true },
{ "thorsten-schaefer.com", true },
{ "thorstenschaefer.name", true },
{ "thosci.com", true },
@@ -33893,11 +34590,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thunderkeys.net", true },
{ "thundr.eu", true },
{ "thunraz.com", true },
- { "thusoy.com", false },
+ { "thusoy.com", true },
{ "thuthuatios.com", true },
{ "thuviensoft.com", true },
{ "thuviensoft.net", true },
- { "thuybich.com", false },
{ "thw-bernburg.de", true },
{ "thxandbye.de", true },
{ "thycotic.ru", true },
@@ -33906,7 +34602,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "thzone.net", true },
{ "ti-pla.net", true },
{ "ti-planet.org", true },
- { "tiacollection.com", true },
{ "tiagonunes.pt", true },
{ "tiaki.org", true },
{ "tianeptine.com", true },
@@ -33915,14 +34610,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tibipg.com", true },
{ "tibovanheule.space", true },
{ "ticfleet.com", true },
+ { "tichieru.pw", true },
{ "ticketassist.nl", true },
{ "ticketluck.com", true },
{ "ticketmates.com.au", true },
+ { "ticketmaze.com", true },
{ "ticketpro.ca", true },
+ { "ticketrunway.com", true },
{ "ticketslover.com", true },
{ "ticketsmate.com", true },
{ "ticketsource.co.uk", true },
{ "ticketsource.eu", true },
+ { "ticketsource.io", true },
{ "ticketsource.us", true },
{ "ticketsourcebeta.co.uk", true },
{ "ticketsvergleichen.de", true },
@@ -33930,14 +34629,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tid.jp", true },
{ "tidycustoms.net", true },
{ "tielectric.ch", true },
- { "tiendafetichista.com", true },
{ "tiendavertigo.com", true },
{ "tiens-ib.cz", true },
{ "tier-1-entrepreneur.com", true },
{ "tierarztpraxis-bogenhausen.de", true },
- { "tierarztpraxis-illerwinkel.de", true },
{ "tierarztpraxis-weinert.de", true },
{ "tiernanx.com", true },
+ { "tierraprohibida.net", true },
{ "ties.com", true },
{ "tiew.pl", true },
{ "tifan.net", true },
@@ -33965,13 +34663,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tiliaze.eu", true },
{ "tiliaze.info", true },
{ "tiliaze.net", true },
+ { "tilikum.io", true },
{ "till.im", true },
{ "tillberg.us", true },
{ "tilleysbouncycastles.co.uk", true },
{ "tillseasyscore.com", true },
+ { "tilosp.de", true },
+ { "tilta.com", true },
{ "tiltedwindmillcrafts.com", true },
{ "timbarlotta.com", true },
{ "timberkel.com", true },
+ { "timbers.space", true },
{ "timbishopartist.com", true },
{ "timbrust.de", true },
{ "timco.cloud", true },
@@ -33992,22 +34694,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "timetotrade.com", true },
{ "timewasters.nl", true },
{ "timfiedler.net", true },
+ { "timhieuthuoc.com", true },
{ "timing.com.br", true },
{ "timjk.de", true },
- { "timklefisch.de", true },
{ "timmersgems.com", true },
- { "timmy.im", true },
{ "timmyrs.de", true },
{ "timnash.co.uk", true },
{ "timonengelke.de", true },
{ "timoso.de", true },
{ "timothybjacobs.com", true },
{ "timoxbrow.com", true },
+ { "timsayedmd.com", true },
{ "timtaubert.de", true },
{ "timtelfer.com", true },
{ "timtj.ca", true },
{ "timvivian.ca", true },
{ "timweb.ca", true },
+ { "tina.media", true },
{ "tinastahlschmidt.de", true },
{ "tindallriley.co.uk", true },
{ "tinf15b4.de", true },
@@ -34035,6 +34738,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tioat.net", true },
{ "tipaki.gr", true },
{ "tipbox.is", true },
+ { "tipe.io", false },
{ "tiplanet.org", true },
{ "tipoftheday.tips", true },
{ "tippytoad.com", true },
@@ -34047,10 +34751,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tirlins.com", true },
{ "tiroler-kupferschmiede.com", true },
{ "tirs4ne.ch", true },
+ { "tis.ph", true },
{ "tischlerei-klettke.de", true },
- { "tism.in", true },
{ "tissot-mayenfisch.com", true },
{ "tit-cdn.de", true },
+ { "tit-dev.de", true },
{ "tit-dns.de", true },
{ "tit-mail.de", true },
{ "tit.systems", true },
@@ -34068,7 +34773,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tiwag.at", true },
{ "tixeconsulting.com", true },
{ "tjampoer.com", true },
- { "tjandpals.com", true },
{ "tjenestetorvet.dk", true },
{ "tjkcastles.uk", true },
{ "tjl.rocks", true },
@@ -34085,6 +34789,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tkn.tokyo", true },
{ "tkusano.jp", true },
{ "tkw01536.de", false },
+ { "tl.gg", true },
{ "tlca.org", true },
{ "tlcnet.info", true },
{ "tlehseasyads.com", true },
@@ -34099,13 +34804,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tlthings.net", true },
{ "tlumaczenie.com", true },
{ "tlys.de", true },
+ { "tmakiguchi.org", true },
{ "tmberg.cf", true },
{ "tmberg.ga", true },
{ "tmberg.gq", true },
{ "tmberg.ml", true },
{ "tmberg.tk", true },
{ "tmc.com.mt", true },
- { "tmconnects.com", true },
{ "tmcpromotions.co.uk", true },
{ "tmcreationweb.com", true },
{ "tmdb.biz", true },
@@ -34126,10 +34831,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tnl.cloud", true },
{ "tntmobi.com", true },
{ "tny.link", true },
- { "to2mbn.org", true },
+ { "toabsentfamily.com", true },
{ "toad.ga", true },
{ "toast.al", false },
+ { "tob-rulez.de", true },
{ "tobacco.gov", true },
+ { "tobaccolocker.com", true },
{ "tobedo.net", true },
{ "tober-cpag.de", true },
{ "tobi-mayer.de", true },
@@ -34146,9 +34853,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tobiasconradi.com", true },
{ "tobiashorvath.com", true },
{ "tobiashorvath.de", true },
+ { "tobiaskorf.de", true },
{ "tobiaspahlings.de", true },
{ "tobiassachs.de", true },
{ "tobiassattler.com", true },
+ { "tobiaswiese.com", true },
{ "tobiemilford.com", true },
{ "tobis-rundfluege.de", true },
{ "tobis-webservice.de", true },
@@ -34184,16 +34893,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tofu.cf", true },
{ "togech.jp", true },
{ "togetter.com", true },
- { "toheb.de", true },
+ { "toheb.de", false },
{ "tohokinemakan.tk", true },
- { "tohokufd.com", true },
{ "tokaido-kun.jp", true },
{ "tokaido.com", true },
{ "tokainafb.net", true },
{ "tokainakurasi.net", true },
{ "tokbijouxs.com.br", true },
+ { "tokenmarket.net", true },
{ "tokens.net", true },
- { "tokfun.com", true },
{ "tokic.hr", true },
{ "tokinoha.net", true },
{ "tokio.fi", true },
@@ -34219,8 +34927,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tom-kunze.de", true },
{ "tom-maxwell.com", true },
{ "tom.horse", true },
+ { "tom.je", true },
{ "tomabrafix.de", true },
- { "tomandshirley.com", true },
+ { "tomahawk.ca", true },
+ { "tomandmara.com", true },
{ "tomarns.nl", true },
{ "tomasjacik.cz", true },
{ "tomaskavalek.cz", true },
@@ -34251,13 +34961,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tomjonsson.se", true },
{ "tomkunze.de", true },
{ "tomkwok.com", true },
- { "tomli.blog", true },
{ "tomlowenthal.com", true },
{ "tomm.yt", true },
{ "tommic.eu", true },
{ "tomnatt.com", true },
{ "tomo.gr", false },
- { "tomochun.net", true },
{ "tomosm.net", true },
{ "tomoyaf.com", true },
{ "tomravinmd.com", true },
@@ -34266,6 +34974,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "toms.ovh", true },
{ "tomschlick.com", true },
{ "tomsdevsn.me", true },
+ { "tomspdblog.com", true },
{ "tomssl.com", true },
{ "tomticket.com", true },
{ "tomudding.com", true },
@@ -34275,7 +34984,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tomwassenberg.nl", true },
{ "tomwiggers.nl", false },
{ "tomwilson.io", true },
- { "tomy.icu", true },
{ "tomyork.net", true },
{ "tonabor.ru", true },
{ "tonage.de", true },
@@ -34304,7 +35012,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tonkinson.com", true },
{ "tonkinwilsonvillenissanparts.com", true },
{ "tonnycat.com", true },
- { "tono.us", true },
{ "tonsit.com", true },
{ "tonsit.org", true },
{ "tontonnews.net", true },
@@ -34328,14 +35035,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "toool.nl", true },
{ "toool.org", true },
{ "tooolroc.org", false },
+ { "toot.center", true },
{ "toothdoc.ca", true },
{ "tooti.biz", true },
{ "top-esb.com", true },
{ "top-obaly.cz", true },
{ "top-opakowania.pl", true },
+ { "top-solar-info.de", true },
{ "top9.fr", true },
{ "topaxi.ch", true },
{ "topaxi.codes", true },
+ { "topbigdeals.com", true },
{ "topbounce.com", true },
{ "topbouncycastles.co.uk", true },
{ "topbrakes.com", true },
@@ -34351,28 +35061,28 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "topicit.net", true },
{ "topirishcasinos.com", true },
{ "topjobs.ch", true },
+ { "toplist.cz", true },
{ "toplist.eu", true },
{ "topnotepad.com", true },
{ "topodin.com", true },
{ "toponlinecasinosites.co.uk", true },
{ "topprice.ua", true },
+ { "topsailtechnologies.com", true },
{ "topservercccam.tv", true },
{ "topshelfcommercial.com", true },
- { "topshoptools.com", true },
{ "topsteaks-daun.de", true },
{ "toptec.net.br", true },
{ "toptexture.com", true },
{ "toptheto.com", true },
{ "topvertimai.lt", true },
- { "topwin.la", true },
{ "topwindowcleaners.co.uk", true },
{ "topworktops.co.uk", true },
{ "toracon.org", true },
{ "torahanytime.com", true },
- { "torbe.es", true },
{ "torchantifa.org", true },
{ "toreni.us", true },
{ "toretame.jp", true },
+ { "torg-room.ru", true },
{ "torkware.com", true },
{ "tormakristof.eu", true },
{ "tormentedradio.com", false },
@@ -34397,7 +35107,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tortoises-turtles.com", true },
{ "tortugan.com.br", true },
{ "tosainu.com.br", true },
- { "toscer.me", false },
{ "toschool.com.br", true },
{ "toshen.com", true },
{ "toshkov.com", true },
@@ -34425,7 +35134,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "touch.facebook.com", false },
{ "touch.mail.ru", true },
{ "touchoflife.in", true },
- { "touchscreentills.com", true },
{ "touchtable.nl", true },
{ "touchweb.fr", true },
{ "touchwoodtrees.com.au", true },
@@ -34456,13 +35164,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tovare.com", true },
{ "toverland-tickets.nl", true },
{ "tovp.org", true },
+ { "towandalibrary.org", true },
{ "townandcountryus.com", true },
{ "townhousedevelopments.com.au", true },
{ "townhouseregister.com.au", true },
{ "townofbridgewater.ca", true },
{ "towsonroofers.com", true },
{ "towywebdesigns.uk", true },
- { "tox.im", true },
{ "tox21.gov", false },
{ "toymagazine.com.br", true },
{ "toyota-kinenkan.com", true },
@@ -34471,6 +35179,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tp-kabushiki.com", true },
{ "tp-kyouyufudousan.com", true },
{ "tp-law.jp", true },
+ { "tpansino.com", true },
{ "tpbproxy.co", true },
{ "tpci.biz", true },
{ "tpidg.us", true },
@@ -34482,7 +35191,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tr.search.yahoo.com", false },
{ "tr0n.net", true },
{ "traas.org", true },
- { "trabajarenperu.com", true },
{ "trabajarenremoto.com", true },
{ "trabbel.org", true },
{ "tracalada.cl", true },
@@ -34494,14 +35202,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "traceroute.link", true },
{ "traceroute.network", true },
{ "traces.ml", true },
- { "tracewind.top", true },
{ "tracfinancialservices.com", true },
{ "tracinsurance.com", true },
{ "trackchair.com", true },
{ "trackdomains.com", true },
{ "trackersimulator.org", true },
{ "trackeye.dk", true },
- { "trackmeet.io", true },
+ { "trackingstream.com", true },
{ "trackrecordpro.co.uk", true },
{ "tracksa.com.ar", true },
{ "trackyourlogs.com", true },
@@ -34521,7 +35228,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "traditions.nl", true },
{ "traditionskapperscollege.nl", true },
{ "traditionsvivantesenimages.ch", true },
- { "tradiz.org", false },
{ "trafarm.ro", true },
{ "trafas.nl", true },
{ "traffic.az", true },
@@ -34536,28 +35242,25 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trailforks.com", true },
{ "trainex.org", true },
{ "trainhornforums.com", true },
- { "trainhorns.us", true },
{ "trainiac.com.au", true },
{ "trainings-handschuhe-test.de", true },
- { "trainline.at", true },
- { "trainline.cn", true },
- { "trainline.com.br", true },
- { "trainline.com.pt", true },
- { "trainline.cz", true },
{ "trainline.de", true },
- { "trainline.dk", true },
{ "trainline.es", true },
{ "trainline.eu", true },
{ "trainline.fr", true },
{ "trainline.it", true },
- { "trainline.nl", true },
- { "trainline.no", true },
- { "trainline.pl", true },
- { "trainline.se", true },
+ { "trainmagazine.be", true },
+ { "trainmagazine.de", true },
+ { "trainmagazine.nl", true },
+ { "trainplaza.be", true },
+ { "trainplaza.net", true },
+ { "trainplaza.nl", true },
{ "trainsgoodplanesbad.com", true },
{ "traista.ru", true },
{ "traiteurpapillonevents.be", true },
{ "trajano.net", true },
+ { "trajectfoto.nl", true },
+ { "trajectvideo.nl", true },
{ "tran.pw", true },
{ "trance-heal.com", true },
{ "trance-heal.de", true },
@@ -34569,6 +35272,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trangcongnghe.com", true },
{ "trangell.com", true },
{ "tranglenull.xyz", true },
+ { "tranhsondau.net", false },
{ "transacid.de", true },
{ "transappealrights.com", true },
{ "transcend.org", true },
@@ -34586,7 +35290,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "transformations-magazin.com", true },
{ "transgendergedenkdag.nl", true },
{ "transgenderinfo.nl", true },
- { "transgendernetwerk.nl", true },
{ "transgendernetwerk.org", true },
{ "transglobaltravel.com", true },
{ "transhumanism.co.uk", true },
@@ -34595,6 +35298,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "transhumanist.net", true },
{ "transhumanist.org", true },
{ "transhumanist.uk", true },
+ { "transitmoe.io", true },
{ "transitownplaza.com", true },
{ "transitpoint.us", true },
{ "translate-polish.com", true },
@@ -34606,18 +35310,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "transmarttouring.com", true },
{ "transmisjeonline.pl", true },
{ "transnexus.com", true },
+ { "transoil.co.uk", true },
{ "transparentcorp.com", true },
{ "transport.eu", true },
{ "transporta.it", true },
{ "transporterlock.com", true },
{ "transverify.com", true },
+ { "trappednerve.org", true },
{ "trashnothing.com", true },
{ "trashwagon.club", true },
{ "traslocare.roma.it", true },
{ "traslochi-trasporti-facchinaggio.it", true },
{ "trasloco.milano.it", true },
- { "tratamentoparacelulite.biz", true },
- { "tratamentoparacelulite.net", true },
{ "trattamenti.biz", true },
{ "trattamento-cotto.it", true },
{ "trauer-beileid.de", true },
@@ -34630,8 +35334,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "travel365.it", true },
{ "travelarmenia.org", true },
{ "traveling-thailand.info", true },
+ { "travelinsurance.co.nz", true },
{ "travellers.dating", true },
- { "travelling.expert", true },
{ "travellovers.fr", true },
{ "travelmyth.ie", true },
{ "travelogue.jp", true },
@@ -34657,6 +35361,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trefcon.cz", true },
{ "trefpuntdemeent.nl", true },
{ "treinaweb.com.br", false },
+ { "treinmagazine.be", true },
+ { "treinmagazine.nl", true },
{ "treinonerd.com", true },
{ "trek-planet.ru", true },
{ "trekfriend.com", true },
@@ -34666,12 +35372,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trendkraft.de", true },
{ "trendykids.cz", true },
{ "trenta.io", true },
- { "trentmaydew.com", true },
{ "tresorit.com", true },
{ "tresorsecurity.com", true },
{ "tretail.net", true },
- { "tretkowski.de", true },
- { "trewe.eu", true },
+ { "trevsanders.co.uk", true },
{ "trezy.me", true },
{ "trezy.net", true },
{ "trhastane.com", true },
@@ -34685,6 +35389,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trianon.xyz", true },
{ "tribac.de", true },
{ "tribaldos.com", true },
+ { "tribe.rs", true },
+ { "tribetrails.com", true },
{ "tribly.de", true },
{ "tribut.de", true },
{ "tributh.cf", true },
@@ -34731,7 +35437,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trollingeffects.org", true },
{ "trollmoa.se", true },
{ "trollope-apollo.com", true },
- { "trollscave.xyz", true },
{ "trommelwirbel.com", true },
{ "tronatic-studio.com", true },
{ "trondelan.no", true },
@@ -34744,6 +35449,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trouweninoverijssel.nl", true },
{ "trovaprezzi.it", true },
{ "troyfawkes.com", true },
+ { "troyhunt.com", true },
{ "troyhuntsucks.com", true },
{ "troykelly.com", true },
{ "trpg.wiki", true },
@@ -34751,10 +35457,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trtltravel.com", true },
{ "trtruijens.com", true },
{ "tru.ltd", true },
+ { "trucchibellezza.com", true },
{ "trucchibellezza.it", true },
{ "truckersmp.com", true },
{ "truckerswereld.nl", false },
- { "truckgpsreviews.com", true },
{ "truckstop-magazin.de", false },
{ "true-itk.de", true },
{ "trueblueessentials.com", true },
@@ -34773,7 +35479,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "trulance.com", true },
{ "truly-madly-happiness.de", true },
{ "trumanlibrary.org", true },
- { "trumeet.top", true },
+ { "truncus-encephali.co.uk", true },
{ "trunk-show.net", true },
{ "truong.fi", true },
{ "truqu.com", true },
@@ -34788,7 +35494,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "truvisory.com", true },
{ "trw-reseller.com", true },
{ "try2admin.pw", true },
- { "try2services.cm", true },
{ "trybabyschoice.com", true },
{ "trybooking.com", true },
{ "tryfabulousskincream.com", true },
@@ -34799,15 +35504,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tryndraze.com", true },
{ "trynta.com", true },
{ "trynta.net", true },
- { "tryretool.com", true },
+ { "tryretool.com", false },
{ "tryupdates.com", true },
{ "trywesayyes.com", true },
{ "trzepak.pl", true },
{ "ts-publishers.com", true },
{ "ts3-dns.com", true },
{ "ts3-dns.net", false },
+ { "ts3-legenda.tech", true },
{ "tsa-sucks.com", true },
{ "tsab.moe", true },
+ { "tsai.com.de", true },
{ "tsatestprep.com", true },
{ "tschuermans.be", true },
{ "tscqmalawi.info", true },
@@ -34819,7 +35526,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tsng.co.jp", true },
{ "tss.am", true },
{ "tstrubberstamp.com", false },
- { "tsu-ku-ro.com", true },
{ "tsugi.fr", true },
{ "tsukhani.com", true },
{ "tsuki.moe", true },
@@ -34836,8 +35542,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ttcaarberg.ch", true },
{ "ttcf.ca", true },
{ "ttchan.org", true },
+ { "ttclub.fr", true },
{ "ttdsevaonline.com", true },
{ "ttll.de", true },
+ { "ttrade.ga", true },
{ "ttsoft.pl", true },
{ "ttspttsp.com", true },
{ "ttsweb.org", true },
@@ -34863,16 +35571,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tudiennhakhoa.com", true },
{ "tudorproject.org", true },
{ "tufashionista.com", true },
- { "tufilo.com", true },
- { "tugers.com", true },
+ { "tuffclassified.com", true },
+ { "tuffsruffs.se", true },
{ "tuincentersnaet.be", true },
+ { "tuingereedschappen.net", false },
{ "tuitle.com", true },
- { "tulenceria.es", true },
{ "tumagiri.net", true },
{ "tumblenfun.com", true },
{ "tumedico.es", true },
{ "tumelum.de", true },
{ "tumutanzi.com", true },
+ { "tunai.id", true },
{ "tunaut.com", true },
{ "tune-web.de", true },
{ "tunefish-entertainment.de", true },
@@ -34886,6 +35595,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tunnelwatch.com", true },
{ "tuntitili.fi", true },
{ "tuotteet.org", true },
+ { "tuou.xyz", true },
{ "tupa-germania.ru", true },
{ "tupeuxpastest.ch", true },
{ "tuppenceworth.ie", true },
@@ -34893,7 +35603,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "turdnagel.com", true },
{ "turigum.com", true },
{ "turkish.dating", true },
- { "turkrock.com", true },
+ { "turl.pl", true },
{ "turnaroundforum.de", true },
{ "turncircles.com", true },
{ "turnoffthelights.com", true },
@@ -34905,10 +35615,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "turtlepwr.com", true },
{ "turunculevye.com", true },
{ "tuscanyleather.it", true },
+ { "tusi.co", true },
{ "tusksol.com", true },
{ "tutanota.com", true },
- { "tutiendaroja.com", true },
- { "tutiendarosa.com", true },
{ "tuto-craft.com", true },
{ "tutoragency.org", true },
{ "tutorat-tect.org", true },
@@ -34936,7 +35645,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tvcal.net", true },
{ "tvcmarketing.com", true },
{ "tver-msk.ru", true },
- { "tverdohleb.com", true },
{ "tverskaya-outlet.ru", true },
{ "tvhshop.be", true },
{ "tvipper.com", true },
@@ -34956,19 +35664,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tweakers.net", true },
{ "tweakersbadge.nl", true },
{ "tweaktown.com", true },
- { "twelve.rocks", true },
+ { "tweetfinity.com", true },
+ { "tweetfinityapp.com", true },
{ "twem.ddns.net", true },
{ "twenty71.com", true },
{ "twentymilliseconds.com", true },
{ "twilleys.com", true },
{ "twincitynissantxparts.com", true },
+ { "twinkseason.com", true },
{ "twinztech.com", true },
{ "twisata.com", true },
{ "twistapp.com", true },
{ "twistdevelopment.co.uk", true },
- { "twisted-brains.org", true },
{ "twistedwave.com", true },
{ "twisto.cz", true },
+ { "twisto.pl", true },
+ { "twistopay.com", true },
{ "twit-guide.com", true },
{ "twitchplaysleaderboard.info", true },
{ "twittelzie.nl", true },
@@ -34982,7 +35693,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "twohuo.com", true },
{ "twojfaktum.pl", true },
{ "twolanedesign.com", true },
- { "twoo.com", true },
{ "twopif.net", true },
{ "tworaz.net", true },
{ "twun.io", true },
@@ -35000,21 +35710,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tyler.rs", true },
{ "tylerdavies.net", true },
{ "tylerfreedman.com", true },
+ { "tylerharcourt.net", true },
{ "tyleromeara.com", true },
{ "tylerschmidtke.com", true },
{ "typcn.com", true },
- { "type1joe.com", true },
- { "type1joe.net", true },
- { "type1joe.org", true },
{ "typeblog.net", true },
{ "typecodes.com", true },
{ "typehub.net", true },
{ "typeof.pw", true },
- { "typeonejoe.com", true },
- { "typeonejoe.net", true },
- { "typeonejoe.org", true },
{ "typeria.net", true },
{ "typewolf.com", true },
+ { "typewritten.net", true },
{ "typing.com", true },
{ "typist.tech", true },
{ "typo3.com", true },
@@ -35025,9 +35731,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "tyroremotes.nl", true },
{ "tyroremotes.no", true },
{ "tysox.de", true },
- { "tyuo-keibi.co.jp", true },
+ { "tz56789.com", true },
+ { "tzermias.gr", true },
{ "tzifas.com", true },
{ "u-metals.com", true },
+ { "u-tokyo.club", true },
{ "u.nu", true },
{ "u0010.com", true },
{ "u0020.com", true },
@@ -35051,6 +35759,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "uangteman.com", true },
{ "uasmi.com", true },
{ "uat-activesg.com", true },
+ { "uatgootax.ru", false },
{ "ub3rk1tten.com", false },
{ "ubanquity.com", true },
{ "uberbkk.com", true },
@@ -35068,41 +35777,39 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ublaboo.org", true },
{ "uborcare.com", true },
{ "ubun.net", true },
- { "uc.ac.id", true },
{ "ucac.nz", false },
{ "ucangiller.com", true },
{ "ucch.be", true },
{ "ucfirst.nl", true },
{ "uchargeapp.com", true },
- { "uclanmasterplan.co.uk", true },
+ { "uclf.de", true },
{ "uclip.club", true },
{ "ucppe.org", true },
{ "ucrdatatool.gov", true },
{ "uctarna.online", true },
- { "udbhav.me", true },
+ { "udancy.com", true },
{ "uddi.ng", true },
{ "udo-luetkemeier.de", true },
{ "udomain.net", true },
{ "udp.sh", false },
+ { "udruga-point.hr", true },
{ "udvoukocek.eu", true },
{ "ueberdosis.io", true },
{ "ueberwachungspaket.at", true },
{ "uedaviolin.com", true },
{ "uel-thompson-okanagan.ca", true },
{ "ueni.com", true },
- { "uerdingen.info", true },
{ "uex.im", true },
{ "ufanisi.mx", true },
{ "ufindme.at", true },
- { "ufo.moe", true },
{ "ufplanets.com", true },
{ "uggedal.com", true },
{ "ugx-mods.com", true },
{ "uhappy30.com", true },
{ "uhasseltodin.be", true },
{ "uhc.gg", true },
- { "uhlhosting.ch", true },
{ "uhrenlux.de", true },
+ { "uhssl.com", true },
{ "uhurl.net", true },
{ "ui8.net", true },
{ "uiberlay.cz", true },
@@ -35133,6 +35840,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ulabox.com", true },
{ "uldsh.de", true },
{ "ulen.me", true },
+ { "ulgc.cz", true },
{ "uli-eckhardt.de", true },
{ "ullah.se", true },
{ "ulmer-schneesport.de", true },
@@ -35149,17 +35857,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ultratech.software", true },
{ "ultratechlp.com", true },
{ "umanityracing.com", true },
- { "umassfive.coop", true },
{ "umbricht.li", true },
{ "umbriel.fr", true },
{ "umenlisam.com", true },
{ "umisonoda.com", true },
{ "umkmjogja.com", true },
+ { "umsapi.com", true },
{ "umsolugar.com.br", true },
{ "umwandeln-online.de", true },
{ "un-framed.co.za", true },
{ "un-zero-un.fr", true },
{ "un.fo", true },
+ { "unapolegetic.co", true },
{ "unapp.me", true },
{ "unatco.noip.me", true },
{ "unausa.com.br", true },
@@ -35178,9 +35887,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "unblocked.pl", true },
{ "unblocked.pro", true },
{ "unblocked.pub", true },
- { "unblocked.sh", true },
{ "unblocked.uno", true },
- { "unblocked.vc", true },
{ "unblocked.vet", true },
{ "unblocked.vip", true },
{ "unblockweb.co", true },
@@ -35190,15 +35897,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "unccelearn.org", true },
{ "uncensoreddns.dk", true },
{ "uncensoreddns.org", true },
- { "undeadbrains.de", true },
{ "undecidable.de", true },
{ "undeductive.media", true },
{ "underbridgeleisure.co.uk", true },
{ "undercovercondoms.co.uk", true },
- { "undercovercondoms.com", true },
{ "underfloorheating-uk.co.uk", true },
{ "underlined.fr", true },
{ "undernet.uy", false },
+ { "underskatten.tk", true },
{ "underwearoffer.com", true },
{ "undo.co.il", true },
{ "undone.me", true },
@@ -35226,6 +35932,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "unicefkepeslapok.hu", true },
{ "unicefvoscilnice.si", true },
{ "unicolabo.jp", true },
+ { "unicorn-systems.net", true },
{ "unicorn.melbourne", true },
{ "unicorntooling.eu", true },
{ "unicredit.ba", true },
@@ -35240,12 +35947,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "uniform-agri.com", true },
{ "uniformebateriasheliar.com.br", true },
{ "unikoingold.com", true },
- { "unikrn.com", true },
{ "unila.edu.br", true },
{ "uninet.cf", true },
{ "uniojeda.ml", true },
{ "unionplat.ru", true },
- { "unipig.de", true },
+ { "uniontestprep.com", true },
{ "uniprimebr.com.br", false },
{ "uniq.site", true },
{ "unique-bouncy-castles.co.uk", true },
@@ -35265,12 +35971,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "unitel2000.de", true },
{ "unityconsciousnessbooks.com", true },
{ "univercite.ch", true },
- { "univeril.com", true },
+ { "univeril.com", false },
{ "universal-happiness.com", true },
+ { "universal.at", true },
{ "universalcarremote.com", true },
{ "universalpaymentgateway.com", true },
{ "universeinform.com", true },
- { "universogay.com", true },
{ "univitale.fr", true },
{ "unix.se", true },
{ "unixadm.org", true },
@@ -35279,6 +35985,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "unixforum.org", true },
{ "unixfox.eu", true },
{ "unixtime.date", true },
+ { "unknownbreakup.com", true },
{ "unkrn.com", true },
{ "unlax.com", true },
{ "unleash.pw", true },
@@ -35286,8 +35993,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "unlocken.nl", true },
{ "unlocktalent.gov", true },
{ "unlogis.ch", true },
- { "unmanaged.space", true },
{ "unmarkdocs.co", true },
+ { "unmonito.red", true },
{ "unn-edu.info", true },
{ "uno-pizza.ru", true },
{ "uno.fi", true },
@@ -35324,14 +36031,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "unworthy.ml", true },
{ "unx.dk", true },
{ "unxicdellum.cat", true },
+ { "upaknship.com", true },
{ "upandclear.org", true },
{ "upay.ru", true },
+ { "upbad.com", true },
{ "upbeatrobot.com", true },
{ "upbeatrobot.eu", true },
{ "upd.jp", true },
{ "upgamerengine.com", true },
{ "upgamerengine.com.br", true },
{ "upgamerengine.net", true },
+ { "upgauged.com", true },
+ { "upholsterydesign.com.au", true },
{ "upitnik.rs", true },
{ "uplaqui.com.br", true },
{ "uplinklabs.net", true },
@@ -35348,6 +36059,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "uprouteyou.com", true },
{ "upsettunnel.com", true },
{ "upsiteseo.com", true },
+ { "uptakedigital.com.au", true },
{ "uptimed.com", true },
{ "uptimenotguaranteed.com", true },
{ "uptodateinteriors.com", true },
@@ -35357,17 +36069,22 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "uptrends.com", true },
{ "uptrends.de", true },
{ "uptrex.co.uk", true },
+ { "upturn.org", true },
{ "upundit.com", true },
+ { "upwardtraining.co.uk", true },
{ "upwork.com", true },
+ { "upyourfinances.com", true },
{ "ur.nl", true },
{ "ur2.pw", true },
{ "uradisam.rs", true },
+ { "uraimo.com", true },
{ "urbackups.com", true },
{ "urbalex.ch", true },
{ "urban-culture.fr", true },
{ "urban-karuizawa.co.jp", true },
{ "urban.melbourne", true },
{ "urbancreators.dk", true },
+ { "urbandance.club", true },
{ "urbanesecurity.com", true },
{ "urbanfi.sh", true },
{ "urbanguerillas.de", true },
@@ -35375,8 +36092,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "urbanietz-immobilien.de", true },
{ "urbanmelbourne.info", true },
{ "urbannewsservice.com", true },
- { "urbansparrow.in", true },
- { "urbanstylestaging.com", true },
{ "urbansurvival.com", true },
{ "urbanwaters.gov", false },
{ "urbanwildlifealliance.org", false },
@@ -35385,6 +36100,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "urcentral.net", true },
{ "urcentral.nl", true },
{ "ureka.org", true },
+ { "urep.us", true },
{ "urgences-valais.ch", true },
{ "urinedrugtesthq.com", true },
{ "uripura.de", true },
@@ -35440,13 +36156,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "usimmigration.us", true },
{ "usipvd.ch", true },
{ "usitcolours.bg", true },
+ { "uskaria.com", true },
{ "usleep.net", true },
{ "usmint.gov", true },
{ "usninosnikrcni.eu", true },
{ "usnti.com", true },
- { "usparklodging.com", true },
{ "uspsoig.gov", true },
- { "ussm.gov", true },
+ { "ussm.gov", false },
{ "ussuka.com", true },
{ "ust.space", true },
{ "ustensiles-cuisine.boutique", true },
@@ -35454,13 +36170,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "usualbeings.com", true },
{ "usuan.net", true },
{ "usuluddin.ga", true },
+ { "usweme.info", true },
{ "uswitch.com", true },
{ "ut-addicted.com", true },
{ "utahfireinfo.gov", true },
{ "utahlocal.net", true },
{ "utazas-nyaralas.info", true },
{ "utcast-mate.com", true },
- { "utdscanner.com", true },
{ "utdsgda.com", true },
{ "uteam.it", true },
{ "utepils.de", true },
@@ -35474,12 +36190,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "utilitarismo.com", true },
{ "utilitronium.com", true },
{ "utilityapi.com", true },
- { "utilityreport.eu", true },
{ "utitreatment.com", true },
{ "utonia.ch", true },
- { "utopialgb.org.uk", true },
{ "utopicestudios.com", true },
{ "utox.io", true },
+ { "utterberry.io", true },
{ "utugnn.ru", true },
{ "utw.me", true },
{ "utwente.io", true },
@@ -35488,15 +36203,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "uvenuse.cz", true },
{ "uvocorp.com", true },
{ "uvolejniku.cz", true },
+ { "uw1008.com", true },
{ "uw2333.com", true },
{ "uwac.co.uk", false },
{ "uwekoetter.com", true },
{ "uwelilienthal.de", true },
+ { "uwimonacs.org.jm", true },
{ "uwvloereruit.nl", true },
+ { "uxp-it.nl", true },
+ { "uxteam.com", true },
{ "uxtechnologist.com", true },
{ "uy.search.yahoo.com", false },
{ "uz.search.yahoo.com", false },
{ "uzaymedya.com.tr", true },
+ { "uziregister.nl", true },
{ "uzsvm.cz", true },
{ "v-d-p.net", true },
{ "v-spin.cz", true },
@@ -35508,7 +36228,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "v2cn.win", true },
{ "v2ex.com", true },
{ "va-reitartikel.com", true },
- { "va.gov", true },
+ { "va.gov", false },
{ "vacationsbyvip.com", true },
{ "vaccines.gov", true },
{ "vacuumpump.co.id", true },
@@ -35530,14 +36250,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vakantiedetective.nl", true },
{ "vakantienet.nl", true },
{ "vakuutuskanava.fi", true },
- { "val-sec.com", true },
{ "valasi.eu", true },
{ "valbonne-consulting.com", true },
{ "valcano-krd.ru", true },
{ "valcano.ru", true },
+ { "valcardiesel.com", true },
{ "valenciadevops.me", true },
{ "valentin-ochs.de", true },
{ "valentin-sundermann.de", true },
+ { "valentin.ml", true },
{ "valentinberclaz.com", true },
{ "valentineapparel.com", true },
{ "valentineforpresident.com", true },
@@ -35559,6 +36280,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "valleyautofair.com", true },
{ "valleyautoloan.com", true },
{ "valleycode.net", true },
+ { "valleydalecottage.com.au", true },
{ "valleyshop.ca", true },
{ "vallutaja.eu", true },
{ "valokuva-albumi.fi", true },
@@ -35570,6 +36292,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "valsk.is", false },
{ "valskis.lt", true },
{ "valtlai.fi", true },
+ { "valtoaho.com", true },
{ "valudo.st", true },
{ "valueng.com", true },
{ "valueseed.net", true },
@@ -35587,9 +36310,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vandermeer.frl", true },
{ "vanderrijt.nl", false },
{ "vanderziel.org", true },
+ { "vandorenscholars.org", true },
+ { "vandyhacks.org", true },
{ "vaneigenkweek.be", true },
- { "vanetv.com", true },
- { "vangeluwedeberlaere.be", true },
+ { "vangoghcoaching.nl", true },
{ "vanhaos.com", true },
{ "vanhoudt-usedcars.be", true },
{ "vanhoutte.be", false },
@@ -35598,7 +36322,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vannaos.com", true },
{ "vannaos.net", true },
{ "vanohaker.ru", true },
+ { "vanouwerkerk.net", true },
{ "vantagepointpreneed.com", true },
+ { "vantaio.com", true },
{ "vante.me", true },
{ "vantien.com", true },
{ "vantru.is", true },
@@ -35613,24 +36339,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vaphone.co", true },
{ "vapor.cloud", false },
{ "vapordepot.jp", true },
+ { "varalwamp.com", true },
{ "varcare.jp", true },
{ "varden.info", true },
{ "vareillefoundation.fr", true },
{ "vareillefoundation.org", true },
{ "varghese.de", true },
- { "variable.agency", true },
+ { "variable.agency", false },
{ "variag-group.ru", true },
{ "variag-montazh.ru", true },
{ "varicoseveinssolution.com", true },
{ "varimedoma.com", true },
{ "varshathacker.com", true },
+ { "varunagw.com", true },
{ "varunpriolkar.com", true },
{ "varvy.com", true },
{ "varztupasaulis.com", true },
{ "varztupasaulis.eu", true },
{ "varztupasaulis.lt", true },
{ "varztupasaulis.net", true },
- { "vase-eroticke-povidky.cz", true },
+ { "vascomm.co.id", true },
{ "vasel.de", true },
{ "vasel.eu", true },
{ "vashel.us", true },
@@ -35643,7 +36371,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vat-eu.com", true },
{ "vat.direct", true },
{ "vatelecom.dk", true },
- { "vati.pw", true },
{ "vats.im", true },
{ "vatsalyagoel.com", true },
{ "vatsim-uk.co.uk", true },
@@ -35671,7 +36398,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vc.gg", true },
{ "vcam.org", true },
{ "vccmurah.net", true },
- { "vcdn.xyz", true },
{ "vcelin-na-doliku.cz", true },
{ "vcf.gov", true },
{ "vcientertainment.com", false },
@@ -35690,7 +36416,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vdesc.com", true },
{ "vdisk24.de", true },
{ "vdmeij.com", true },
- { "vdownloader.com", true },
{ "vdzwan.net", true },
{ "ve.search.yahoo.com", false },
{ "ve3oat.ca", true },
@@ -35703,13 +36428,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vectorwish.com", true },
{ "vedma-praktik.com", true },
{ "veg-leiden.nl", true },
+ { "vega-rumia.com.pl", true },
{ "vegalitarian.org", true },
{ "vegane-proteine.com", true },
{ "veganforum.org", true },
{ "vegangaymer.blog", true },
{ "veganism.co.uk", true },
{ "veganism.com", true },
- { "vegasdocs.com", true },
{ "vegepa.com", true },
{ "vegetariantokyo.net", true },
{ "veggie-treff.de", true },
@@ -35721,12 +36446,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "velen.io", true },
{ "venalytics.com", true },
{ "venclave.com", true },
+ { "vendermicasarapido.com.mx", true },
{ "vendigital.com", true },
{ "vendorconnect.nyc", true },
{ "vendserve.eu", true },
{ "venenum.org", true },
{ "venev.name", true },
- { "venirextra.com", true },
{ "venje.pro", true },
{ "ventajasdesventajas.com", true },
{ "ventesprivees-fr.com", true },
@@ -35740,6 +36465,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "venturum.de", true },
{ "venturum.eu", true },
{ "venturum.net", true },
+ { "ventzke.com", true },
{ "ver.ma", true },
{ "vera.bg", true },
{ "veramagazine.jp", true },
@@ -35755,8 +36481,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "verfassungsklage.at", true },
{ "vergeaccessories.com", true },
{ "vergelijksimonly.nl", true },
+ { "vergessen.cn", true },
{ "verhovs.ky", true },
{ "verifalia.com", true },
+ { "verifiedjoseph.com", true },
+ { "verifiny.com", true },
{ "verifyos.com", true },
{ "verifyyourip.com", true },
{ "veriny.tf", true },
@@ -35767,7 +36496,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "verizonguidelines.com", true },
{ "verliebt-in-bw.de", true },
{ "verliebt-in-niedersachsen.de", true },
- { "verliefde-jongens.nl", true },
{ "vermeerdealers.com", true },
{ "vermiliontaxiservice.com", true },
{ "vermogeninkaart.nl", true },
@@ -35809,6 +36537,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "veslosada.com", true },
{ "vespacascadia.com", true },
{ "vestingbar.nl", true },
+ { "vetbits.com", true },
{ "veterinario.roma.it", true },
{ "veterinarioaltea.com", true },
{ "vetforum.co", true },
@@ -35825,16 +36554,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vgropp.de", true },
{ "vh.net", true },
{ "vhummel.nl", true },
- { "vi.photo", true },
{ "via-shire-krug.ru", true },
{ "viacdn.org", true },
{ "viafinance.cz", false },
{ "viaggio-in-cina.it", true },
- { "viagra-kaufen.biz", true },
{ "viagraonlinebestellen.org", true },
+ { "viagusto.pl", true },
{ "viajandoporelmundo.com.ar", true },
{ "viaje-a-china.com", true },
- { "vialibido.com.br", true },
{ "vialorran.com", true },
{ "viaprinto.de", true },
{ "viato.fr", true },
@@ -35845,6 +36572,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vicicode.com", true },
{ "viciousflora.com", true },
{ "vicjuwelen-annelore.be", true },
+ { "victora.com", true },
{ "victorcanera.com", true },
{ "victordiaz.me", true },
{ "victoreriksson.ch", true },
@@ -35885,13 +36613,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "videosqr.com", true },
{ "videov.tk", true },
{ "vidister.de", true },
- { "vidkovaomara.si", true },
{ "vieaw.com", true },
{ "vieclam24h.vn", false },
{ "viekelis.lt", false },
{ "viemeister.com", true },
{ "viemontante.be", true },
- { "vientos.coop", true },
+ { "vientos.coop", false },
{ "viepixel.at", true },
{ "vierdaagsehotel.nl", true },
{ "vierna.ga", true },
@@ -35921,6 +36648,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vijverbenodigdheden.nl", true },
{ "vik.im", true },
{ "vikalbino.com.br", true },
+ { "vikalpgupta.com", true },
{ "vikapaula.com", true },
{ "vikashkumar.me", true },
{ "viking-style.ru", true },
@@ -35930,12 +36658,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vilabiamodas.com.br", true },
{ "viljatori.fi", true },
{ "villa-anna-cilento.de", true },
- { "villa-bellarte.de", true },
{ "villa-gockel.de", true },
+ { "villa-romantica-zillertal.at", true },
{ "villafiore.com.br", true },
{ "villageunique.com.br", true },
{ "villagockel.de", true },
- { "villalaskowa.pl", true },
{ "villamariaamalfi.it", true },
{ "villasfinistere.fr", true },
{ "villasforsale-bali.com", true },
@@ -35955,12 +36682,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vincentpancol.com", true },
{ "vincitraining.com", true },
{ "vineright.com", true },
+ { "vinetech.co.nz", true },
{ "vinilosdecorativos.net", true },
{ "vinner.com.au", true },
{ "vinnie.gq", true },
- { "vinogradovka.com", true },
{ "vinolli.de", true },
{ "vinovum.net", true },
+ { "vinsation.com", true },
{ "vinsetchampagne.fr", true },
{ "vintagebandfestival.org", true },
{ "vintagecaskandbarrel.com", true },
@@ -35977,27 +36705,29 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "violin4fun.nl", true },
{ "vionicbeach.com", true },
{ "vionicshoes.com", true },
- { "vioye.com", true },
+ { "vip-9649.com", true },
{ "vip4553.com", true },
{ "vip8522.com", true },
+ { "vip9649.com", true },
{ "vipesball.cc", true },
{ "vipesball.info", true },
{ "vipesball.me", true },
- { "vipesball.net", true },
{ "vipi.es", true },
{ "viptamin.eu", true },
{ "viptamol.com", true },
+ { "viqo.pl", true },
{ "vir-tec.eu", true },
{ "vir2.me", true },
{ "viral32111.com", true },
{ "viralboombox.xyz", true },
{ "viralpop.it", true },
{ "viralsouls.in", true },
+ { "viralsv.com", true },
{ "virgopolymer.com", true },
- { "virial.de", true },
{ "viridis-milites.cz", true },
{ "virtit.fr", true },
{ "virtualcloud.ddns.net", true },
+ { "virtualcommodities.org", true },
{ "virtuality4d.com", true },
{ "virtuallifestyle.nl", true },
{ "virtualmt2.pl", true },
@@ -36007,6 +36737,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "virtusaero.com", true },
{ "virvum.ch", true },
{ "visaexpert.co.za", true },
+ { "visalist.io", true },
{ "visalogy.com", true },
{ "visaop.com", true },
{ "visapourailleurs.fr", true },
@@ -36020,6 +36751,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "visioflux-premium.com", true },
{ "visionarymedia.nl", true },
{ "visiondigitalsog.com", true },
+ { "visiondirectionaldrilling.com", true },
{ "visionexpress.com", true },
{ "visionexpress.ie", true },
{ "visionexpresscareers.com", true },
@@ -36052,7 +36784,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vitalthrills.com", true },
{ "vitalware.com", true },
{ "vitalyzhukphoto.com", true },
- { "vitamaxxi.com.br", true },
{ "vitamineproteine.com", true },
{ "vitaminler.com", true },
{ "vitastic.nl", true },
@@ -36061,6 +36792,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vitkutny.cz", true },
{ "vitoye.com", true },
{ "vitpeyr.com", true },
+ { "vitra-showrooms.co.uk", true },
{ "vitra-vcare.co.uk", true },
{ "vitrado.de", true },
{ "vitsoft.by", true },
@@ -36078,7 +36810,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vivirenelmundo.com", true },
{ "vivo.sx", true },
{ "vivoitaliankitchen.com", true },
- { "vivoseg.com", true },
{ "vixrapedia.org", true },
{ "viyf.org", true },
{ "viza.io", true },
@@ -36119,21 +36850,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vmc.co.id", true },
{ "vmem.jp", false },
{ "vmgirls.com", true },
- { "vmhydro.ru", false },
{ "vmis.nl", true },
{ "vmoagents.com", false },
{ "vmoe.info", true },
{ "vmug.pl", true },
- { "vmzone.de", true },
{ "vn.search.yahoo.com", false },
{ "vncg.org", true },
{ "vnd.cloud", true },
- { "vndb.org", true },
{ "vnfs-team.com", true },
+ { "vnpem.org", true },
{ "vnvisa.center", true },
{ "vnvisa.ru", true },
{ "vocaloid.my", true },
- { "vocalsynth.space", true },
{ "vocalviews.com", true },
{ "vocus.aero", true },
{ "vocustest.aero", true },
@@ -36144,7 +36872,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vodpay.org", true },
{ "vogler.name", true },
{ "voicu.ch", true },
- { "void-it.nl", true },
{ "void-zero.com", true },
{ "voidcore.org", true },
{ "voidpay.com", true },
@@ -36152,7 +36879,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "voidpay.org", true },
{ "voidptr.eu", true },
{ "voids.org", true },
- { "voidshift.com", true },
{ "voidzehn.com", true },
{ "voipsun.com", true },
{ "vojtechpavelka.cz", true },
@@ -36173,13 +36899,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "volkerwesselstransfer.nl", false },
{ "volkerwesselswave.nl", false },
{ "volksvorschlagpmar.ch", true },
- { "volkswurst.de", true },
{ "vollans.id.au", true },
{ "voloevents.com", true },
{ "volta.io", true },
{ "volto.io", true },
{ "volunteeringmatters.org.uk", true },
- { "volvipress.gr", true },
{ "vomitb.in", true },
{ "von-lien-aluprofile.de", true },
{ "von-lien-dachrinnen.de", true },
@@ -36197,7 +36921,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vorlagen-geburtstagsgruesse.de", true },
{ "vorlicek.de", true },
{ "vorlif.org", true },
- { "vorm2.com", true },
{ "vorodevops.com", true },
{ "vos-fleurs.ch", true },
{ "vos-fleurs.com", true },
@@ -36209,7 +36932,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vosser.de", true },
{ "vostronet.com", true },
{ "voter-info.uk", true },
- { "votercircle.com", true },
{ "votesandymurman.com", true },
{ "votocek.cz", true },
{ "votockova.cz", true },
@@ -36225,7 +36947,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "voyagesaufildespages.be", true },
{ "voyageschine.com", true },
{ "voyagesdetective.fr", true },
- { "vozami.com", true },
{ "vpc-display.com", true },
{ "vpn.black", true },
{ "vpn.ht", true },
@@ -36240,20 +36961,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vreaulafacultate.ro", true },
{ "vreeman.com", true },
{ "vriesdonkow.be", true },
+ { "vrij-links.nl", true },
{ "vrijgezellen-feest.com", true },
{ "vrijgezellenfeestzwolle.com", true },
- { "vrlaid.com", false },
+ { "vrjetpackgame.com", true },
{ "vroedvrouwella.be", true },
{ "vrsgames.com.mx", true },
{ "vrsystem.com.br", true },
- { "vrtak-cz.net", true },
{ "vrtouring.org", true },
- { "vsamsonov.com", true },
{ "vscale.io", true },
{ "vsean.net", true },
{ "vserver-preis-vergleich.de", true },
{ "vsesrazu-raiffeisen.ru", true },
- { "vsestiralnie.com", true },
+ { "vsestoki.com", true },
{ "vsl-defi.ch", true },
{ "vssnederland.nl", true },
{ "vstehn.ru", true },
@@ -36269,28 +36989,30 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "vullriede-multimedia.de", true },
{ "vulndetect.com", true },
{ "vulndetect.org", true },
- { "vulnerabilities.io", true },
{ "vulnerability.ch", true },
{ "vulners.com", true },
{ "vulns.sexy", true },
{ "vulnscan.org", true },
{ "vulpine.club", true },
{ "vumetric.com", true },
+ { "vuojolahti.com", true },
{ "vuojolahti.fi", true },
{ "vuotila.eu", true },
{ "vuvanhon.com", true },
{ "vux.li", true },
{ "vuzi.fr", true },
+ { "vv1234.cn", true },
{ "vvactivia.nl", true },
{ "vvdbronckhorst.nl", true },
{ "vvoip.org.uk", true },
{ "vvw-8522.com", true },
{ "vw-touranclub.cz", true },
{ "vwbusje.com", true },
+ { "vwfsrentacar.co.uk", true },
{ "vwhcare.com", true },
{ "vwittich.de", true },
+ { "vwo.com", true },
{ "vwsoft.de", true },
- { "vwt-event.nl", true },
{ "vww-8522.com", true },
{ "vx.hn", true },
{ "vxst.org", true },
@@ -36311,10 +37033,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "w-spotlight.appspot.com", true },
{ "w-w-auto.de", true },
{ "w.wiki", true },
+ { "w1221.com", true },
{ "w2n.me", true },
{ "w3ctag.org", true },
{ "w3n.org", true },
- { "w4b.in", true },
{ "w4eg.de", true },
{ "w4nvu.org", true },
{ "w50.co.uk", true },
@@ -36330,7 +37052,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wadsworth.gallery", true },
{ "wadvisor.com", true },
{ "waelisch.de", true },
- { "waelti.xxx", true },
{ "waf.ninja", true },
{ "waf.sexy", true },
{ "wafa4hw.com", true },
@@ -36339,11 +37060,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "waffle.at", false },
{ "wafuton.com", true },
{ "wagyu-bader.de", true },
+ { "wahhoi.net", true },
{ "wahidhasan.com", true },
{ "wahlman.org", true },
{ "wahrnehmungswelt.de", true },
{ "wahrnehmungswelten.de", true },
- { "wai-in.com", true },
{ "wai-in.net", true },
{ "waidfrau.de", true },
{ "waidu.de", true },
@@ -36352,11 +37073,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "waigel.org", true },
{ "waikatowebdesigners.com", true },
{ "wail.net", true },
- { "wains.be", true },
+ { "wains.be", false },
{ "wait.jp", true },
{ "waiterwheels.com", true },
{ "waits.io", true },
- { "waixingrenfuli.vip", true },
{ "wak.io", true },
{ "waka-mono.com", true },
{ "waka168.com", true },
@@ -36368,14 +37088,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wakatime.com", true },
{ "wakiminblog.com", true },
{ "wala-floor.de", true },
+ { "waldkinder-ilmenau.de", true },
{ "waldvogel.family", true },
{ "walent.in", true },
{ "walentin.co", true },
+ { "waligorska.pl", true },
{ "walk.onl", true },
{ "walkera-fans.de", true },
{ "walkhighlandsandislands.com", true },
{ "walkingrehabilitation.com", true },
{ "walksedona.com", true },
+ { "walksfourpaws.co.uk", true },
{ "wallabet.fr", true },
{ "wallabies.org", true },
{ "wallace-group.net", true },
@@ -36386,7 +37109,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "walletnames.com", true },
{ "wallinger-online.at", true },
{ "wallingford.cc", true },
- { "wallpapers.pub", true },
{ "wallpaperup.com", true },
{ "walls.de", true },
{ "walls.io", true },
@@ -36409,7 +37131,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wandercue.com", true },
{ "wandervoll.ch", true },
{ "wanderzoom.co", true },
+ { "wandystan.eu", true },
{ "wane.co", true },
+ { "wangbangyu.cf", true },
+ { "wangbangyu.ga", true },
+ { "wangbangyu.gq", true },
+ { "wangbangyu.ml", true },
+ { "wangbangyu.tk", true },
{ "wangjun.me", true },
{ "wangqiliang.cn", false },
{ "wangqiliang.com", false },
@@ -36417,12 +37145,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wangql.net", true },
{ "wangqr.tk", true },
{ "wangtanzhang.com", true },
+ { "wangyubao.cn", true },
{ "wangyue.blog", true },
{ "wangzuan168.cc", true },
+ { "wanlieyan.com", true },
{ "wannaridecostarica.com", true },
- { "wanquanojbk.com", false },
- { "wanybug.cn", true },
- { "wanybug.com", true },
+ { "wanybug.cf", true },
+ { "wanybug.ga", true },
+ { "wanybug.gq", true },
+ { "wanybug.tk", true },
{ "waonui.io", true },
{ "wapgu.cc", true },
{ "wardow.com", true },
@@ -36440,7 +37171,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "warp-radio.net", true },
{ "warp-radio.tv", true },
{ "warr.ath.cx", true },
- { "warren.sh", true },
{ "warringtonkidsbouncycastles.co.uk", true },
{ "warschild.org", true },
{ "warsh.moe", true },
@@ -36468,6 +37198,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "watchpci.com", true },
{ "watchstyle.com", true },
{ "water-addict.com", true },
+ { "waterbrook.com.au", true },
+ { "waterdogsmokedfish.com", true },
{ "waterdrop.tk", true },
{ "waterfedpole.com", true },
{ "waterleeftinbeek.nl", true },
@@ -36486,11 +37218,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "waukeect.com", true },
{ "wave-ola.es", true },
{ "wave.is", true },
+ { "waverlysecuritycameras.com", true },
{ "wavesboardshop.com", true },
{ "wavesoftime.com", true },
{ "waveum.com", true },
{ "wawak.pl", true },
{ "waxdramatic.com", true },
+ { "waycraze.com", true },
{ "wayfair.de", true },
{ "wayohoo.com", true },
{ "wayohoo.net", true },
@@ -36498,6 +37232,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "waze.com", true },
{ "wbci.us", false },
{ "wbg-vs.de", true },
+ { "wblinks.com", true },
{ "wbt-solutions.ch", true },
{ "wbt-solutions.net", true },
{ "wbudd.com", true },
@@ -36505,18 +37240,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wbvb.nl", true },
{ "wbx.support", true },
{ "wby.gd", true },
+ { "wby.tw", true },
{ "wcbook.ru", false },
{ "wcn.life", false },
+ { "wcwcg.net", true },
{ "wd627.com", true },
{ "wd976.com", true },
{ "wdbflowersevents.co.uk", true },
{ "wdbgroup.co.uk", true },
{ "wdic.org", true },
- { "wdmg.com.ua", true },
{ "wdodelta.nl", true },
{ "wdol.gov", true },
{ "wdrl.info", true },
{ "wdt.cz", false },
+ { "we-bb.com", true },
{ "we-run-linux.de", true },
{ "we-use-linux.de", true },
{ "weacceptbitcoin.gr", true },
@@ -36532,16 +37269,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wearepapermill.co", true },
{ "wearesouthafricans.com", true },
{ "wearvr.com", true },
+ { "weaspireusa.com", true },
{ "weather-and-climate.com", false },
{ "weathermyway.rocks", true },
- { "web-adminy.co.uk", true },
{ "web-advisor.co.uk", true },
{ "web-art.cz", true },
{ "web-design.co.il", true },
{ "web-dl.cc", true },
{ "web-hotel.gr", true },
{ "web-kouza.com", true },
+ { "web-mail.info", true },
+ { "web-odyssey.com", true },
{ "web-redacteuren.nl", true },
+ { "web-siena.it", true },
+ { "web-smart.com", true },
{ "web-wave.jp", true },
{ "web.bzh", true },
{ "web.cc", false },
@@ -36550,6 +37291,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "web2ldap.de", true },
{ "web2screen.tv", true },
{ "web404.net", true },
+ { "webadiccion.net", true },
+ { "webadicta.net", true },
+ { "webadicto.net", true },
{ "webaeon.org", true },
{ "webaholic.co.in", true },
{ "webais.ru", true },
@@ -36558,6 +37302,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "webandmore.de", false },
{ "webappky.cz", true },
{ "webartex.ru", true },
+ { "webauthority.co.uk", true },
{ "webbiz.co.uk", true },
{ "webbson.net", false },
{ "webbx.se", true },
@@ -36569,7 +37314,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "webcontentspinning.com", true },
{ "webcookies.org", true },
{ "webcrm.com", true },
+ { "webcurtaincall.com", true },
{ "webdeflect.com", true },
+ { "webdemaestrias.com", true },
{ "webdesign-st.de", true },
{ "webdesigneauclaire.com", true },
{ "webdesignerinwarwickshire.co.uk", true },
@@ -36580,6 +37327,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "webdevops.io", true },
{ "webdevxp.com", true },
{ "webdl.org", true },
+ { "webdollarvpn.io", true },
{ "webduck.nl", false },
{ "webeast.eu", true },
{ "webeau.com", true },
@@ -36588,6 +37336,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "webev.ru", true },
{ "webexample.win", true },
{ "webexp.biz", true },
+ { "webexpertsdirect.com.au", true },
{ "webfilings-eu-mirror.appspot.com", true },
{ "webfilings-eu.appspot.com", true },
{ "webfilings-mirror-hrd.appspot.com", true },
@@ -36607,7 +37356,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "webkeks.org", true },
{ "weblagring.se", true },
{ "weblate.org", true },
- { "webless.com", true },
{ "webliberty.ru", true },
{ "webline.ch", true },
{ "weblogic.pl", true },
@@ -36625,6 +37373,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "webministeriet.net", true },
{ "webmotelli.fi", true },
{ "webnames.ca", true },
+ { "webnexty.com", true },
{ "webnoob.net", true },
{ "webogram.org", false },
{ "webpinoytambayan.net", true },
@@ -36636,14 +37385,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "webproxy.pw", true },
{ "webpubsub.com", true },
{ "webqualitat.com.br", true },
- { "webqueens.com", true },
{ "webrebels.org", false },
{ "webrentcars.com", true },
{ "webreport.fr", true },
- { "webreslist.com", true },
{ "webscale.nl", false },
{ "websec.nl", true },
- { "websectools.com", true },
{ "websecurity.is", true },
{ "webseitendesigner.com", false },
{ "webseitenserver.com", true },
@@ -36660,6 +37406,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "websitesdallas.com", true },
{ "websiteservice.pro", true },
{ "webslake.com", true },
+ { "websouthdesign.com", true },
{ "webspiral.jp", true },
{ "webspire.tech", true },
{ "webstijlen.nl", true },
@@ -36688,7 +37435,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wechatify.com", true },
{ "wecleanbins.com", true },
{ "wecobble.com", true },
- { "wedding-m.jp", true },
{ "weddingalbumsdesign.com", true },
{ "weddingfantasy.ru", true },
{ "weddingsbynoon.co.uk", true },
@@ -36740,10 +37486,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wein.cc", true },
{ "wein.co.kr", true },
{ "weinbergerlawgroup.com", true },
- { "weinhandel-preissler.de", true },
{ "weinundsein.com", true },
{ "weirdesigns.com", true },
- { "weirdserver.com", true },
{ "weisse-liste.de", true },
{ "weissman.agency", true },
{ "weiterbildung-vdz.de", true },
@@ -36765,13 +37509,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wellensteyn.ru", true },
{ "weller.pm", true },
{ "wellist.com", true },
- { "wellmarts.com", true },
{ "wellness-gutschein.de", true },
{ "wellnesscheck.net", true },
- { "wellsplasticsurgery.com", true },
- { "wellspringcamps.com", true },
+ { "wellsolveit.com", false },
{ "welovecatsandkittens.com", true },
- { "welovemail.com", true },
{ "welpo.me", true },
{ "welsh.com.br", true },
{ "welshccf.org.uk", true },
@@ -36792,7 +37533,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wener.me", false },
{ "wenger-shop.ch", true },
{ "wenjs.me", true },
- { "wensing-und-koenig.de", true },
{ "wepay.com", false },
{ "wepay.in.th", true },
{ "wepay.vn", true },
@@ -36843,6 +37583,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wessner.org", true },
{ "west-contemporary.com", true },
{ "west-trans.com.au", true },
+ { "west-wind.net", true },
{ "westcanal.net", true },
{ "westcarrollton.org", true },
{ "westcentenaryscouts.org.au", true },
@@ -36872,14 +37613,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "westwood.no", true },
{ "wetofu.top", true },
{ "wevenues.com", true },
- { "wevg.org", true },
{ "wewitro.de", true },
{ "wewitro.net", true },
{ "wexfordbouncycastles.ie", true },
{ "wexilapp.com", true },
{ "weyland-yutani.org", true },
{ "weyland.tech", true },
- { "wezl.net", true },
+ { "weynaphotography.com", true },
{ "wf-bigsky-master.appspot.com", true },
{ "wf-demo-eu.appspot.com", true },
{ "wf-demo-hrd.appspot.com", true },
@@ -36897,7 +37637,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wg3k.us", false },
{ "wgom.org", true },
{ "wgplatform.co.uk", true },
- { "wgraphics.ru", true },
{ "wgsi-friesland.nl", true },
{ "wh-guide.de", true },
{ "whanau.org", true },
@@ -36924,6 +37663,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "whatsupgold.com.tw", true },
{ "whatsupoutdoor.com", true },
{ "whatthingsweigh.com", true },
+ { "whatusb.com", true },
{ "whatwebcando.today", true },
{ "whatwg.org", true },
{ "whd-guide.de", true },
@@ -36933,10 +37673,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wheelwide.co.uk", true },
{ "wheelwork.org", true },
{ "wheelwright.org", true },
+ { "wheezie.be", true },
{ "when.fm", false },
{ "where2trip.com", true },
{ "whereiszakir.com", true },
- { "whexit.nl", true },
{ "whey-protein.ch", true },
{ "whiletrue.run", true },
{ "whimtrip.fr", false },
@@ -36970,10 +37710,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "whitepharmacy.co.uk", true },
{ "whiteready.it", true },
{ "whiterose.goip.de", true },
- { "whiteshadowimperium.com", true },
{ "whitewebhosting.co.za", true },
{ "whitewebhosting.com", true },
{ "whitewinterwolf.com", true },
+ { "whitkirk.com", true },
{ "whitkirkartsguild.com", true },
{ "whitkirkchurch.org.uk", true },
{ "whittome.com", true },
@@ -36988,12 +37728,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "whocalled.us", true },
{ "whocybered.me", true },
{ "whoimg.com", true },
- { "whoisamitsingh.com", true },
+ { "whoiscuter.ml", true },
+ { "whoiscutest.ml", true },
{ "whoisthenightking.com", true },
{ "whoiswp.com", true },
{ "wholelotofbounce.co.uk", false },
{ "wholesalecbd.com", true },
- { "whonix.org", true },
+ { "wholesomeharvestbread.com", false },
{ "whosyourdaddy.ml", true },
{ "whoturgled.com", true },
{ "whqtravel.org", false },
@@ -37002,6 +37743,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "whub.io", true },
{ "why-brexit.uk", true },
{ "whychoosebob.net.au", true },
+ { "whynohttps.com", true },
{ "whyopencomputing.ch", true },
{ "whyopencomputing.com", true },
{ "whytls.com", true },
@@ -37042,7 +37784,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wijnbesteld.nl", true },
{ "wijnservices.nl", false },
{ "wijzijnwolf.nl", true },
- { "wiki-play.ru", true },
{ "wiki.python.org", true },
{ "wikibooks.org", true },
{ "wikibulz.com", true },
@@ -37072,6 +37813,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wildnisfamilie.net", true },
{ "wildtrip.blog", true },
{ "wildwildtravel.com", true },
+ { "wildwind.world", true },
{ "wildzoopark.co.uk", true },
{ "wildzoopark.com", true },
{ "wili.li", true },
@@ -37085,7 +37827,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "willfarrell.ca", true },
{ "willi-graf-gymnasium.de", true },
{ "willi-graf-os.de", true },
- { "william.gg", true },
{ "williamboulton.co.uk", true },
{ "williamfeely.info", true },
{ "williamjohngauthier.net", true },
@@ -37113,6 +37854,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "winbignow.click", true },
{ "winbuzzer.com", true },
{ "wincasinowin.click", true },
+ { "winch-center.de", true },
{ "wind.moe", true },
{ "winddan.nz", true },
{ "windelnkaufen24.de", true },
@@ -37128,10 +37870,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "windsorspi.com", true },
{ "windycitydubfest.com", true },
{ "wine-tapa.com", true },
- { "winebid.com", true },
{ "wineonthewall.com", true },
{ "winepress.org", true },
- { "wineworksonline.com", true },
{ "winghill.com", true },
{ "wingify.com", true },
{ "wingmin.net", true },
@@ -37153,17 +37893,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wintermeyer.de", true },
{ "winterschoen.nl", true },
{ "wintodoor.com", true },
+ { "winwitharval.co.uk", true },
{ "wipswiss.ch", true },
{ "wir-bewegen.sh", true },
{ "wircon-int.net", true },
{ "wire.com", true },
- { "wiredcut.com", true },
{ "wireframesoftware.com", true },
{ "wireheading.com", true },
{ "wirelesswatch.com.au", true },
{ "wireshark.org", true },
{ "wiretime.de", true },
- { "wiretrip.io", false },
{ "wirhabenspass.de", true },
{ "wirkstoffreich.de", true },
{ "wirralbouncycastles.co.uk", true },
@@ -37172,6 +37911,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wis.no", true },
{ "wisak.me", true },
{ "wisal.org", true },
+ { "wischu.com", true },
+ { "wisedog.eu", true },
{ "wiseflat.com", true },
{ "wispapp.com", false },
{ "wisper.net.au", true },
@@ -37199,10 +37940,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wizzr.nl", true },
{ "wj0666.com", true },
{ "wjbolles.com", true },
+ { "wjcainc.com", true },
{ "wjci.com", true },
{ "wje-online.de", true },
{ "wjg.ca", true },
{ "wjg.dk", true },
+ { "wjglerum.nl", true },
{ "wjm2038.me", true },
{ "wjr.io", true },
{ "wjwieland.dvrdns.org", false },
@@ -37218,7 +37961,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wlwlwx.com", true },
{ "wm-access.com", true },
{ "wm-access.de", true },
- { "wm-talk.net", true },
{ "wmaccess.com", true },
{ "wmaccess.de", true },
{ "wmfusercontent.org", true },
@@ -37245,7 +37987,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wohnsitz-ausland.com", true },
{ "woi.vision", true },
{ "wokinghammotorhomes.com", true },
- { "woktoss.com", true },
{ "wolfachtal-alpaka.de", true },
{ "wolfarth.info", true },
{ "wolfermann.org", true },
@@ -37260,7 +38001,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wolfsden.cz", true },
{ "wolfwings.us", true },
{ "wolfy1339.com", false },
- { "wolkenspeicher.org", true },
{ "wolkoopjes.nl", true },
{ "wollgredel.de", true },
{ "wollongongbaptist.hopto.org", true },
@@ -37270,10 +38010,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "womb.city", true },
{ "wombatalla.com.au", true },
{ "wombats.net", true },
+ { "womcom.nl", true },
{ "women-only.net", true },
{ "womensalespros.com", true },
{ "womenshairlossproject.com", true },
{ "wonabo.com", true },
+ { "wonder.com.mx", false },
{ "wonderbill.com", true },
{ "wonderfuleducation.eu", true },
{ "wonderfuleducation.nl", true },
@@ -37288,7 +38030,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "woodcoin.org", true },
{ "woodev.us", true },
{ "woodlandhillselectrical.com", true },
- { "woodlandsmetro.church", true },
+ { "woodlandsmetro.church", false },
{ "woodlandsvale.uk", true },
{ "woodlandwindows.com", true },
{ "woodomat.com", true },
@@ -37296,7 +38038,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "woof.gq", true },
{ "woofsbakery.com", true },
{ "woohooyeah.nl", true },
- { "woomai.net", true },
{ "woonboulevardvolendam.nl", true },
{ "woontegelwinkel.nl", true },
{ "wooplagaming.com", true },
@@ -37310,6 +38051,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wordcounter.net", true },
{ "wordher.com", true },
{ "wordlessecho.com", true },
+ { "wordpress-test.site", true },
{ "wordpress.com", false },
{ "wordsmart.it", true },
{ "wordspy.com", true },
@@ -37329,13 +38071,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "workoptions.com", true },
{ "workplaces.online", true },
{ "workraw.com", true },
+ { "workray.com", true },
{ "works-ginan.jp", true },
{ "workshopszwolle.nl", true },
{ "workshopzwolle.com", true },
{ "worksitevr.com", true },
{ "world-in-my-eyes.com", true },
+ { "world-lolo.com", true },
{ "worldcareers.dk", true },
- { "worldchess.london", true },
{ "worldcigars.com.br", true },
{ "worldcrafts.org", true },
{ "worldcubeassociation.org", true },
@@ -37362,12 +38105,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wot-tudasbazis.hu", true },
{ "wotra-register.com", true },
{ "woudenberg.nl", true },
+ { "woudenbergsedrukkerij.nl", true },
{ "woufbox.com", true },
{ "woutergeraedts.nl", true },
{ "wouterslop.com", true },
{ "wouterslop.eu", true },
{ "wouterslop.nl", true },
- { "wow-foederation.de", true },
{ "wow-screenshots.net", true },
{ "wow202y5.com", true },
{ "wowaffixes.info", true },
@@ -37389,6 +38132,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wpac.de", true },
{ "wpandup.org", true },
{ "wpcanban.com", true },
+ { "wpcdn.bid", true },
{ "wpcharged.nz", true },
{ "wpdirecto.com", true },
{ "wpdublin.com", true },
@@ -37420,6 +38164,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wq.ro", true },
{ "wr.su", true },
{ "wrara.org", true },
+ { "wrathofgeek.com", true },
{ "wrc-results.com", true },
{ "wrdcfiles.ca", true },
{ "wrdx.io", true },
@@ -37439,7 +38184,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "writepride.com", true },
{ "writepro.net", true },
{ "writereditor.com", true },
- { "writing-expert.com", true },
{ "writing-job-online.com", true },
{ "writingcities.net", true },
{ "writingtoserve.net", true },
@@ -37482,7 +38226,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wug.news", true },
{ "wuifan.com", true },
{ "wuji.cz", true },
- { "wumai.cloud", true },
+ { "wumai-p.cn", true },
{ "wumbo.cf", true },
{ "wumbo.co.nz", true },
{ "wumbo.ga", true },
@@ -37510,15 +38254,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wweforums.net", true },
{ "wweichen.com.cn", true },
{ "wwgc2011.se", true },
+ { "wwjd.dynu.net", true },
{ "wwv-8522.com", true },
{ "wwv-8722.com", true },
{ "www-33445.com", true },
{ "www-49889.com", true },
+ { "www-66136.com", true },
+ { "www-7570.com", true },
+ { "www-80036.com", true },
{ "www-8522.am", true },
{ "www-8522.com", true },
{ "www-86499.com", true },
{ "www-8722.com", true },
+ { "www-9649.com", true },
{ "www-9822.com", true },
+ { "www-pj009.com", true },
{ "www.aclu.org", false },
{ "www.airbnb.com", true },
{ "www.amazon.cn", true },
@@ -37567,6 +38317,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "www.rememberthemilk.com", true },
{ "www.sb", true },
{ "www.simple.com", false },
+ { "www.techrepublic.com", true },
{ "www.theguardian.com", true },
{ "www.therapynotes.com", true },
{ "www.tinfoilsecurity.com", false },
@@ -37578,19 +38329,24 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "www.vino75.com", false },
{ "www.wepay.com", false },
{ "www.wordpress.com", false },
+ { "www.zdnet.com", true },
{ "www68277.com", true },
{ "wxcafe.net", true },
+ { "wxdisco.com", true },
+ { "wxforums.com", true },
{ "wxh.jp", true },
{ "wxster.com", true },
- { "wxyz.buzz", true },
{ "wyam.io", true },
{ "wybar.uk", true },
+ { "wycrow.com", true },
{ "wyday.com", true },
{ "wygibanki.pl", true },
{ "wygodnie.pl", true },
+ { "wylog.ph", true },
{ "wynterhill.co.uk", true },
{ "wyo.cam", true },
{ "wypemagazine.se", true },
+ { "wyrickstaxidermy.com", true },
{ "wyrihaximus.net", true },
{ "wyrimaps.net", true },
{ "wyssmuller.ch", true },
@@ -37598,7 +38354,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "wzfou.com", true },
{ "wzrd.in", true },
{ "wzyboy.org", true },
- { "x-iweb.ru", true },
{ "x-lan.be", true },
{ "x-one.co.jp", true },
{ "x.io", true },
@@ -37606,15 +38361,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "x0r.be", true },
{ "x13.com", true },
{ "x1616.tk", true },
- { "x1be.win", true },
{ "x2d2.de", true },
{ "x378.ch", true },
{ "x509.io", true },
- { "x69.biz", true },
- { "x69x.net", true },
+ { "x64architecture.com", true },
{ "x7plus.com", true },
{ "xa.search.yahoo.com", false },
+ { "xa1.uk", true },
{ "xanadu-taxi.cz", true },
+ { "xanax.pro", false },
{ "xants.de", true },
{ "xatr0z.org", false },
{ "xavier.is", true },
@@ -37632,19 +38387,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xbtce.com", true },
{ "xbtmusic.org", false },
{ "xcentricmold.com", true },
+ { "xcler8.com", true },
{ "xclirion-support.de", true },
{ "xcorpsolutions.com", true },
{ "xcvb.xyz", true },
{ "xd.cm", true },
- { "xd.fi", true },
{ "xdavidhu.me", true },
{ "xdawn.cn", true },
{ "xdeftor.com", true },
- { "xecure.zone", true },
- { "xecureit.com", true },
+ { "xdos.io", true },
{ "xeedbeam.me", true },
{ "xega.org", true },
{ "xehost.com", true },
+ { "xeiropraktiki.gr", true },
{ "xelesante.jp", true },
{ "xendo.net", true },
{ "xenomedia.nl", true },
@@ -37656,6 +38411,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xentox.com", true },
{ "xerblade.com", true },
{ "xerhost.de", true },
+ { "xerownia.eu", true },
{ "xetown.com", true },
{ "xf-liam.com", true },
{ "xfce.space", true },
@@ -37681,6 +38437,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xiaofengsky.com", true },
{ "xiaoguo.net", false },
{ "xiaolanglang.net", true },
+ { "xiaolong.link", true },
+ { "xiaomao.tk", true },
{ "xiaomi.eu", true },
{ "xiaoniaoyou.com", true },
{ "xiaoyu.net", true },
@@ -37693,14 +38451,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xif.at", true },
{ "xight.org", true },
{ "xilef.org", true },
- { "xilegames.com", true },
{ "xilkoi.net", true },
{ "xilou.org", true },
{ "ximbo.net", true },
{ "xin-in.com", true },
{ "xin-in.net", true },
- { "xinex.cz", true },
{ "xing-in.net", true },
+ { "xinj.com", true },
{ "xinnixdeuren-shop.be", true },
{ "xinuspeed.com", true },
{ "xinuspeedtest.com", true },
@@ -37708,8 +38465,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xiongx.cn", true },
{ "xj8876.com", true },
{ "xjd.vision", true },
+ { "xjf6.com", true },
{ "xjjeeps.com", true },
- { "xjoin.de", true },
{ "xjpvictor.info", true },
{ "xkblog.xyz", true },
{ "xkcd.pw", true },
@@ -37738,7 +38495,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xn--0kq33cz5c8wmwrqqw1d.com", true },
{ "xn--24-6kch4bfqee.xn--p1ai", true },
{ "xn--24-glcia8dc.xn--p1ai", true },
- { "xn--3lqp21gwna.cn", true },
+ { "xn--48jwg508p.net", true },
+ { "xn--4kro7fswi.xn--6qq986b3xl", true },
{ "xn--4pv80kkz8auzf.jp", true },
{ "xn--5dbkjqb0d.com", true },
{ "xn--5dbkjqb0d.net", true },
@@ -37747,10 +38505,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xn--79q87uvkclvgd56ahq5a.net", true },
{ "xn--7ca.co", true },
{ "xn--7xa.google.com", true },
- { "xn--80aaagmgvmvmcuoq7r.xn--p1ai", true },
{ "xn--80adb4aeode.xn--p1ai", true },
+ { "xn--80adbevek3air0ee9b8d.com", true },
{ "xn--80aejljbfwxn.xn--p1ai", true },
- { "xn--80anogxed.xn--p1ai", true },
{ "xn--80azelb.xn--p1ai", true },
{ "xn--8dry00a7se89ay98epsgxxq.com", true },
{ "xn--90accgba6bldkcbb7a.xn--p1acf", true },
@@ -37779,11 +38536,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xn--e1aoahhqgn.xn--p1ai", true },
{ "xn--ecki0cd0bu9a4nsjb.com", true },
{ "xn--eckle6c0exa0b0modc7054g7h8ajw6f.com", true },
+ { "xn--ehq13kgw4e.ml", true },
{ "xn--elsignificadodesoar-c4b.com", true },
{ "xn--erklderbarenben-slbh.dk", true },
{ "xn--f9jh4f4b4993b66s.tokyo", true },
{ "xn--familie-pppinghaus-l3b.de", true },
{ "xn--feuerlscher-arten-4zb.de", true },
+ { "xn--fiqwix98h.jp", true },
{ "xn--fischereiverein-mnsterhausen-i7c.de", true },
{ "xn--fp8h58f.ws", true },
{ "xn--frankierknig-djb.de", true },
@@ -37801,7 +38560,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xn--jp8hx8f.ws", true },
{ "xn--kckd0bd4a8tp27yee2e.com", true },
{ "xn--kda.tk", true },
+ { "xn--keditr-0xa.biz", true },
+ { "xn--klmek-0sa.com", true },
{ "xn--knstler-n2a.tips", false },
+ { "xn--krpto-lva.de", true },
{ "xn--ktha-kamrater-pfba.se", true },
{ "xn--lckwg.net", true },
{ "xn--love-un4c7e0d4a.com", true },
@@ -37811,7 +38573,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xn--martnvillalba-zib.com", true },
{ "xn--martnvillalba-zib.net", true },
{ "xn--mein-kchenhelfer-ozb.de", true },
- { "xn--mensenges-o1a8c.gq", true },
{ "xn--mensengesss-t8a.gq", true },
{ "xn--mentaltraining-fr-musiker-uwc.ch", true },
{ "xn--mgbbh2a9fub.xn--ngbc5azd", false },
@@ -37827,16 +38588,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xn--nf1a578axkh.xn--fiqs8s", true },
{ "xn--nrrdetval-v2ab.se", true },
{ "xn--o38h.tk", true },
+ { "xn--p8j9a0d9c9a.xn--q9jyb4c", true },
{ "xn--pbt947am3ab71g.com", true },
{ "xn--pe-bka.ee", true },
{ "xn--pq1a637b.xn--6qq986b3xl", true },
{ "xn--q9jb1h5dvcspke3218b9mn4p0c.com", true },
+ { "xn--q9ji3c6d.xn--q9jyb4c", true },
{ "xn--qckss0j.tk", true },
{ "xn--qfun83b.ga", true },
{ "xn--r8jzaf7977b09e.com", true },
{ "xn--rdiger-kuhlmann-zvb.de", true },
{ "xn--reisebro-herrsching-bbc.de", true },
- { "xn--rlcus7b3d.xn--xkc2dl3a5ee0h", true },
{ "xn--roselire-60a.ch", true },
{ "xn--roselire-60a.com", true },
{ "xn--rt-cja.ie", true },
@@ -37876,19 +38638,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xnu.kr", true },
{ "xo.tc", true },
{ "xo7.ovh", true },
- { "xoda.pw", true },
{ "xolphin.nl", true },
{ "xombitgames.com", true },
{ "xombitmusic.com", true },
{ "xone.cz", true },
{ "xonn.de", true },
- { "xotika.tv", true },
+ { "xoonth.net", true },
{ "xp2.de", true },
{ "xpbytes.com", true },
{ "xpd.se", true },
- { "xpenology-fr.net", true },
{ "xperidia.com", true },
- { "xpj.bet", true },
{ "xpjcunkuan.com", true },
{ "xpletus.nl", true },
{ "xplore-dna.net", true },
@@ -37896,23 +38655,26 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xposedornot.com", true },
{ "xps2pdf.co.uk", true },
{ "xps2pdf.info", true },
- { "xq55.com", true },
{ "xqk7.com", true },
{ "xr.cx", true },
+ { "xrg.cz", true },
{ "xrippedhd.com", true },
{ "xrockx.de", true },
{ "xroot.org", false },
{ "xrwracing-france.com", true },
{ "xs2a.no", true },
- { "xscancun.com", true },
{ "xsec.me", true },
+ { "xserownia.com.pl", true },
+ { "xserownia.eu", true },
{ "xserownia.net", true },
+ { "xserownia.pl", true },
{ "xsmobile.de", true },
{ "xss.ht", true },
{ "xss.sk", true },
{ "xsz.jp", true },
{ "xtarget.ru", true },
{ "xtips.us", true },
+ { "xtom.africa", true },
{ "xtom.chat", true },
{ "xtom.com", true },
{ "xtom.com.hk", true },
@@ -37929,33 +38691,31 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "xuan-li88.com", true },
{ "xuan-li88.net", true },
{ "xuanmeishe.net", true },
+ { "xuanmeishe.top", true },
{ "xubo666.com", true },
{ "xuc.me", true },
{ "xuedianshang.com", true },
- { "xujan.com", true },
{ "xuming.studio", true },
{ "xunn.io", true },
{ "xuntier.ch", true },
{ "xviimusic.com", true },
{ "xvt-blog.tk", true },
{ "xwaretech.info", true },
+ { "xx0r.eu", true },
{ "xxffo.com", true },
{ "xxiz.com", true },
- { "xxx3dbdsm.com", true },
- { "xxxladyboysporn.com", true },
{ "xxxlbox.com", true },
- { "xyfun.net", true },
+ { "xyenon.bid", true },
+ { "xyfun.net", false },
{ "xyngular-health.com", true },
{ "xywing.com", true },
{ "xyyp.mn", true },
{ "xyzulu.hosting", true },
{ "xza.fr", true },
{ "xzclip.cn", true },
- { "xzoneadventure.com", true },
{ "xzy.es", true },
{ "xzy.one", true },
{ "y11n.net", true },
- { "yabrt.cn", true },
{ "yabuisha.jp", true },
{ "yachigoya.com", true },
{ "yacineboumaza.fr", true },
@@ -37998,12 +38758,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yao-in.net", true },
{ "yapbreak.fr", true },
{ "yarcom.ru", false },
- { "yarogneva.ru", true },
{ "yarravilletownhouses.com.au", true },
{ "yaru.one", true },
{ "yassine-ayari.com", true },
{ "yatesun.com", true },
{ "yatorie.net", true },
+ { "yatstudios.com", true },
{ "yatsuenpoon.com", true },
{ "yaup.tk", true },
{ "yawen.me", true },
@@ -38020,11 +38780,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ychon.com", true },
{ "ychong.com", true },
{ "yclan.net", true },
+ { "ycnrg.org", true },
{ "yd.io", true },
{ "yeapdata.com", true },
{ "yeesker.com", true },
{ "yell.ml", true },
+ { "yellowfly.co.uk", true },
{ "yellowpages.ee", true },
+ { "yellowtree.co.za", true },
{ "yelon.hu", true },
{ "yelp.at", true },
{ "yelp.be", true },
@@ -38060,11 +38823,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yelp.se", true },
{ "yemektarifleri.com", true },
{ "yenibilgi.net", true },
- { "yennhi.co", true },
+ { "yenpape.com", true },
{ "yep-pro.ch", true },
{ "yephy.com", true },
- { "yeshu.org", true },
{ "yesiammaisey.me", true },
+ { "yeswecan.co.bw", true },
{ "yeswehack.com", true },
{ "yetanalytics.io", true },
{ "yetii.net", true },
@@ -38072,13 +38835,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yeu.io", true },
{ "yex.nz", true },
{ "yex.trade", true },
+ { "yeyi.site", true },
{ "yfengs.moe", true },
{ "ygobbs.com", true },
- { "yh35.net", true },
{ "yh599.cc", true },
{ "yhaupenthal.org", true },
{ "yhb.io", true },
{ "yhe.me", true },
+ { "yhfou.com", true },
{ "yhndnzj.com", true },
{ "yhong.me", true },
{ "yhrd.org", true },
@@ -38087,6 +38851,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yiffy.tips", false },
{ "yiffy.zone", false },
{ "yigujin.cn", true },
+ { "yiheng.moe", true },
{ "yii2.cc", true },
{ "yikeyong.com", true },
{ "yimgo.fr", true },
@@ -38102,7 +38867,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yjsw.sh.cn", true },
{ "yksityisyydensuoja.fi", true },
{ "ylde.de", true },
- { "ylilauta.org", true },
{ "ylinternal.com", true },
{ "ymarion.de", true },
{ "ymblaw.com", true },
@@ -38110,7 +38874,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ynnovasport.be", true },
{ "yobai-grouprec.jp", true },
{ "yobai28.com", true },
- { "yobbelwobbel.de", true },
+ { "yobbelwobbel.de", false },
{ "yobify.com", true },
{ "yocchan1513.net", true },
{ "yoga-alliance-teacher-training.com", true },
@@ -38121,6 +38885,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yoga-zentrum-narayani.de", true },
{ "yogabhawnamission.com", true },
{ "yogacentric.co.uk", true },
+ { "yogahealsinc.org", true },
{ "yogananda-roma.org", true },
{ "yogaschoolrishikesh.com", true },
{ "yoibyoin.info", true },
@@ -38129,7 +38894,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yokohama-legaloffice.jp", true },
{ "yolo.jetzt", true },
{ "yolobert.de", true },
- { "yoloboatrentals.com", false },
+ { "yoloboatrentals.com", true },
{ "yolops.net", true },
{ "yombo.net", true },
{ "yongbin.org", true },
@@ -38141,39 +38906,35 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yorcool.nl", true },
{ "yorkshiredalesinflatables.co.uk", true },
{ "yorkshireinflatables.co.uk", true },
- { "yorname.ml", true },
{ "yosbeda.com", true },
{ "yosemo.de", true },
{ "yosheenetwork.fr", true },
{ "yoshibaworks.com", true },
{ "yoshitsugu.net", true },
{ "yospos.org", true },
+ { "yoticonnections.com", true },
{ "yotilab.com", true },
{ "yotta-zetta.com", true },
{ "yotubaiotona.net", true },
{ "you.com.br", true },
{ "youareme.ca", true },
{ "youc.ir", true },
- { "youcanmakeit.at", true },
{ "youcruit.com", true },
- { "youdowell.com", true },
{ "youdungoofd.com", true },
{ "youftp.tk", true },
{ "yougee.ml", true },
+ { "yougot.pw", true },
{ "youhacked.me", true },
{ "youhavewords.com", true },
{ "youhua.ru", true },
- { "youjizz.bz", true },
{ "youkaryote.com", true },
{ "youkaryote.org", true },
{ "youked.com", true },
{ "youkok2.com", true },
- { "youlend.com", true },
{ "youlovehers.com", true },
{ "youmonit.me", true },
{ "youms.de", true },
{ "young-sheldon.com", true },
- { "youngdogs.org", true },
{ "youngfree.cn", true },
{ "youngpeopleunited.co.uk", true },
{ "youngsook.com", true },
@@ -38181,40 +38942,42 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "youpark.no", true },
{ "your-erotic-stories.com", true },
{ "your-out.com", true },
+ { "youracnepro.com", true },
{ "youran.me", true },
{ "yourbonus.click", true },
{ "yourciso.com", true },
+ { "yourcomputer.expert", true },
{ "yourcopywriter.it", true },
{ "yourforex.org", true },
{ "yourfriendlytech.com", true },
{ "yourfuturestrategy.com.au", true },
{ "yourgames.tv", true },
{ "yourhair.net", true },
- { "yourname.xyz", true },
+ { "yourmemorykeeper.co.uk", true },
{ "yourneighborhub.com", true },
{ "yourskin.nl", true },
{ "yourticketbooking.com", true },
{ "yousei.ne.jp", true },
{ "yout.com", true },
{ "youth.gov", true },
+ { "youthovation.org", true },
{ "youtous.me", true },
{ "youtsuu-raku.com", true },
{ "youtube.com", true },
{ "youtubedownloader.com", true },
{ "youtuberis.lt", true },
- { "youwatchporn.com", true },
+ { "youyoulemon.com", true },
{ "yoxall.me.uk", true },
{ "yoyoost.duckdns.org", true },
{ "ypart.eu", true },
{ "ypid.de", true },
{ "ypiresia.fr", false },
{ "yplanapp.com", true },
- { "yqjf68.com", true },
{ "yr166166.com", true },
+ { "yrjanheikki.com", true },
{ "ys-shop.biz", true },
- { "ysicing.net", true },
{ "ysicorp.com", true },
- { "yslbeauty.com", true },
+ { "yspeo.biz", true },
{ "ysun.xyz", true },
{ "ysx.me.uk", true },
{ "ytb.zone", true },
@@ -38225,11 +38988,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "ytpak.pk", true },
{ "ytreza.fr", true },
{ "ytuquelees.net", true },
+ { "ytx588.com", true },
{ "yu.gg", false },
{ "yu.vc", true },
{ "yuan.ga", true },
{ "yuanben.io", true },
- { "yuanbenlian.com", true },
+ { "yuanjiazhao.com", true },
{ "yuanjiazhao.tk", true },
{ "yubi.co", true },
{ "yubicloud.io", true },
@@ -38286,10 +39050,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yubikeyservices.eu", true },
{ "yubiking.com", true },
{ "yue.la", true },
- { "yuema.net.cn", true },
+ { "yugasun.com", true },
{ "yuka.one", true },
{ "yukari.cafe", true },
+ { "yukari.cloud", true },
{ "yuki-nagato.com", true },
+ { "yuki-portfolio.com", true },
{ "yuki.xyz", true },
{ "yukimochi.com", true },
{ "yukimochi.io", true },
@@ -38298,8 +39064,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yukonlip.com", true },
{ "yukontec.com", true },
{ "yumeconcert.com", true },
- { "yumli.net", true },
- { "yummylooks.com", true },
{ "yunity.org", true },
{ "yunjishou.pro", true },
{ "yunzhu.li", true },
@@ -38310,13 +39074,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yurisviridov.com", true },
{ "yusa.me", true },
{ "yushi.moe", true },
+ { "yusu.org", true },
{ "yutakato.net", true },
+ { "yutang.vn", true },
{ "yutangyun.com", true },
+ { "yutaron.tokyo", true },
{ "yutuo.net", true },
{ "yuwei.org", true },
{ "yuweiyang.xyz", true },
{ "yuxingxin.com", true },
{ "yuxuan.org", true },
+ { "yuyo.com", true },
{ "yuyu.io", true },
{ "yuzei.tk", true },
{ "yveshield.com", true },
@@ -38331,17 +39099,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "yya.me", true },
{ "yya.men", true },
{ "yyc.city", true },
+ { "yyrss.com", false },
{ "yyyy.xyz", true },
{ "yzal.io", true },
+ { "yzcloud.me", true },
{ "yzer.club", true },
{ "yzimroni.net", true },
{ "z-konzept-nutrition.ru", true },
{ "z-latko.info", true },
+ { "z-to-a.com", true },
{ "z-vector.com", true },
{ "z.ai", true },
{ "z1h.de", true },
- { "z33.ch", true },
- { "z33.co", true },
{ "z4k.de", true },
{ "z99944x.xyz", true },
{ "za.search.yahoo.com", false },
@@ -38353,15 +39122,15 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zacadam.com", true },
{ "zacarias.com.ar", true },
{ "zacavi.com.br", true },
+ { "zacchaeus.co.uk", true },
{ "zach.codes", true },
{ "zacharopoulos.eu", true },
{ "zacharopoulos.org", false },
{ "zacharydubois.me", true },
{ "zacharyschneider.com", true },
+ { "zacharyseguin.ca", true },
{ "zachaysan.com", true },
{ "zachborboa.com", true },
- { "zachgibbens.org", true },
- { "zachpeters.org", true },
{ "zachschneider.ca", true },
{ "zaclys.com", false },
{ "zadroweb.com", true },
@@ -38370,10 +39139,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zahe.me", true },
{ "zahnaerzte-bohne.de", true },
{ "zahnarzt-duempten.de", true },
- { "zahnarzt-hofer.de", true },
{ "zahnarzt-kramer.ch", true },
- { "zahnarzt-muenich.de", true },
{ "zajazd.biz", true },
+ { "zakariya.blog", true },
{ "zakcutner.uk", true },
{ "zakladam.cz", true },
{ "zakmccrac.de", true },
@@ -38382,6 +39150,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zakspartiesandevents.com", true },
{ "zalamea.ph", true },
{ "zaloghaz.ro", true },
+ { "zalvus.com", true },
{ "zamalektoday.com", true },
{ "zamocosmeticos.com.br", true },
{ "zamow.co", true },
@@ -38390,8 +39159,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zanellidesigns.co.uk", true },
{ "zanthra.com", true },
{ "zanzabar.it", true },
- { "zapatoshechoamano.pe", true },
{ "zapier.com", true },
+ { "zapmaster14.com", true },
{ "zappbuildapps.com", false },
{ "zappos.com", true },
{ "zaptan.info", false },
@@ -38413,16 +39182,20 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zberger.com", true },
{ "zbetcheck.in", true },
{ "zbrane-doplnky.cz", true },
+ { "zbut.bg", true },
{ "zbyga.cz", true },
{ "zbyte.it", true },
{ "zcarot.com", true },
{ "zcarrot.com", true },
{ "zcgram.com", true },
{ "zcon.nl", true },
+ { "zcore.org", true },
{ "zcr.ca", true },
{ "zdbl.de", true },
{ "zdenekspacek.cz", true },
{ "zdorovayasimya.com", true },
+ { "zdrave-konzultace.cz", true },
+ { "zdravekonzultace.cz", true },
{ "zdravesteny.cz", true },
{ "zdrojak.cz", true },
{ "ze3kr.com", true },
@@ -38430,7 +39203,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zealworks.jp", true },
{ "zebbra.ro", true },
{ "zebedeescastles.co.uk", true },
- { "zebibyte.cn", true },
{ "zebulon.fr", true },
{ "zeds-official.com", true },
{ "zeebrieshoekvanholland.nl", true },
@@ -38450,33 +39222,37 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zemlova.cz", true },
{ "zen-diez.de", true },
{ "zen-ume.com", true },
+ { "zena.cx", false },
{ "zenchain.com", true },
{ "zenevents.ro", true },
{ "zenfusion.fr", true },
- { "zengdong.ren", true },
{ "zenics.co.uk", true },
{ "zenithmedia.ca", true },
{ "zenk-security.com", true },
{ "zenlogic.com", true },
{ "zenmate.com.tr", true },
+ { "zennzimie.be", true },
+ { "zennzimie.com", true },
{ "zenofa.co.id", true },
{ "zentask.io", true },
- { "zentiweb.nl", true },
+ { "zenti.cloud", true },
{ "zenvideocloud.com", true },
+ { "zeparadox.com", true },
{ "zephyrbk.com", true },
{ "zephyrbookkeeping.com", true },
+ { "zephyretcoraline.com", true },
{ "zeplin.io", true },
{ "zer0-day.pw", true },
{ "zer0.de", false },
{ "zerg.uk", true },
{ "zerobounce.net", true },
{ "zerofy.de", true },
- { "zerolab.org", true },
{ "zeronet.io", true },
{ "zeropoint.bg", true },
{ "zeropush.com", true },
{ "zeroseteatacado.com.br", true },
{ "zerossl.com", true },
+ { "zerotoone.de", true },
{ "zertif.info", true },
{ "zertitude.com", true },
{ "zeryn.net", true },
@@ -38484,21 +39260,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zestylemon.co.uk", true },
{ "zetamode.com", true },
{ "zetorzeszow.pl", false },
- { "zetrov.pl", true },
{ "zettaplan.ru", true },
{ "zettlmeissl.de", true },
{ "zevelev.net", true },
{ "zfast.com.br", true },
{ "zfg.li", true },
{ "zfly.me", true },
- { "zfo.gg", true },
{ "zfree.co.nz", true },
{ "zg-dyw.net", true },
{ "zgrep.org", true },
{ "zh.search.yahoo.com", false },
{ "zhang-hao.com", true },
{ "zhang.nz", true },
- { "zhangcheng.org", true },
{ "zhangfangzhou.com", true },
{ "zhangge.net", true },
{ "zhanghao.me", true },
@@ -38511,21 +39284,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zhcexo.com", true },
{ "zhen-chen.com", true },
{ "zhengjie.com", true },
+ { "zhenyan.org", true },
+ { "zhi.ci", true },
{ "zhiku8.com", true },
{ "zhima.io", true },
{ "zhitanska.com", true },
{ "zhiwei.me", true },
{ "zhl123.com", true },
- { "zhome.info", true },
+ { "zhongzicili.ws", true },
{ "zhoushuo.me", true },
{ "zhoutiancai.cn", true },
{ "zhovner.com", true },
{ "zhthings.com", true },
{ "zhuihoude.com", true },
- { "zhuji.com", true },
- { "zhuji.com.cn", true },
- { "zhuji5.com", true },
- { "zhuweiyou.com", true },
{ "zi.is", true },
{ "ziegler-family.com", true },
{ "ziegler-heizung-frankfurt.de", true },
@@ -38537,7 +39308,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zigottos.fr", true },
{ "zigzagmart.com", true },
{ "zihao.me", false },
- { "zii.bz", true },
{ "zijung.me", true },
{ "zikinf.com", true },
{ "ziktime.com", true },
@@ -38554,11 +39324,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zinniamay.com", true },
{ "zinoui.com", true },
{ "ziondrive.com.br", true },
+ { "zionsvillelocksmiths.com", true },
{ "zip.ch", true },
{ "zipkey.de", true },
{ "ziptie.com", true },
{ "zircode.com", true },
{ "ziroh.be", true },
+ { "zirtek.ie", true },
{ "zirtual.com", true },
{ "zitrone44.de", true },
{ "zitseng.com", true },
@@ -38567,10 +39339,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zivmergers.com", true },
{ "zivyruzenec.cz", false },
{ "zixiao.wang", true },
- { "zixo.sk", true },
- { "ziz.exchange", true },
+ { "zjv.me", true },
{ "zk.gd", true },
{ "zk9.nl", true },
+ { "zkontrolujsiauto.cz", true },
{ "zkrypt.cc", true },
{ "zkzone.net", true },
{ "zlatakus.cz", true },
@@ -38578,7 +39350,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zlaty-tyden.cz", true },
{ "zlatytyden.cz", true },
{ "zlavomat.sk", true },
- { "zlc1994.com", true },
{ "zlima12.com", true },
{ "zlypi.com", true },
{ "zmala.com", true },
@@ -38594,6 +39365,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zmartagroup.se", true },
{ "znation.nl", true },
{ "zny.pw", true },
+ { "zoarcampsite.uk", true },
{ "zobraz.cz", true },
{ "zobworks.com", true },
{ "zoccarato.ovh", true },
@@ -38606,23 +39378,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zoigl.club", true },
{ "zojadravai.com", true },
{ "zoki.art", true },
+ { "zollihood.ch", true },
{ "zolokar.xyz", true },
- { "zombiesecured.com", true },
{ "zomerschoen.nl", true },
{ "zonadigital.co", true },
{ "zone-produkte.de", false },
{ "zone39.com", true },
- { "zone403.net", true },
{ "zonecb.com", true },
{ "zonehomesolutions.com", true },
{ "zonemaster.fr", true },
{ "zonemaster.net", true },
+ { "zonesec.org", true },
{ "zonewatcher.com", true },
{ "zonglovani.info", true },
{ "zonky.cz", true },
{ "zonkysetkani.cz", true },
- { "zoo.city", false },
- { "zoofit.com.au", true },
{ "zooish.net", true },
{ "zook.systems", true },
{ "zoola.io", true },
@@ -38637,7 +39407,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zootime.net", true },
{ "zootime.org", true },
{ "zoowiki.us", true },
- { "zooxdata.com", true },
{ "zopy.com.br", true },
{ "zopyx.com", true },
{ "zor.com", true },
@@ -38647,10 +39416,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zorium.org", true },
{ "zorki.nl", true },
{ "zorntt.fr", true },
+ { "zotero.org", true },
{ "zouk.info", true },
{ "zouyaoji.top", true },
+ { "zozo.com", true },
{ "zozzle.co.uk", true },
- { "zqwqz.com", true },
{ "zravypapir.cz", true },
{ "zrhdwz.cn", true },
{ "zrkr.de", true },
@@ -38667,7 +39437,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zsrbcs.com", true },
{ "zten.org", true },
{ "ztjuh.tk", true },
- { "zuan-in.com", true },
{ "zuan-in.net", true },
{ "zubel.it", false },
{ "zubora.co", true },
@@ -38682,6 +39451,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zula.africa", true },
{ "zulu.ro", true },
{ "zum-baur.de", true },
+ { "zumazar.ru", true },
{ "zund-app.com", true },
{ "zundapp529.nl", true },
{ "zundappachterhoek.nl", true },
@@ -38706,8 +39476,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zwollemag.nl", true },
{ "zwollemagazine.nl", true },
{ "zwy.ch", true },
- { "zx1168.com", true },
- { "zx2268.com", true },
{ "zx6rninja.de", true },
{ "zx7r.de", true },
{ "zxavier.com", true },
@@ -38726,5 +39494,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
{ "zyul.ddns.net", true },
{ "zyzardx.com", true },
{ "zzekj.net", true },
+ { "zzpd.nl", false },
{ "zzsec.org", true },
};
diff --git a/security/manager/ssl/tests/unit/test_weak_crypto.js b/security/manager/ssl/tests/unit/test_weak_crypto.js
index effedf8e3a..3367e90677 100644
--- a/security/manager/ssl/tests/unit/test_weak_crypto.js
+++ b/security/manager/ssl/tests/unit/test_weak_crypto.js
@@ -77,7 +77,6 @@ function startServer(cert, rc4only) {
onStopListening: function() {}
};
- tlsServer.setSessionCache(false);
tlsServer.setSessionTickets(false);
tlsServer.setRequestClientCertificate(Ci.nsITLSServerSocket.REQUEST_NEVER);
if (rc4only) {
diff --git a/security/nss/TAG-INFO b/security/nss/TAG-INFO
index 1d96321b3c..a004fa449d 100644
--- a/security/nss/TAG-INFO
+++ b/security/nss/TAG-INFO
@@ -1 +1 @@
-NSS_3_36_4_RTM
+NSS_3_38_RTM
diff --git a/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt b/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt
index e69de29bb2..efc7d6d677 100644
--- a/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt
+++ b/security/nss/automation/abi-check/expected-report-libnssutil3.so.txt
@@ -0,0 +1,4 @@
+
+1 Added function:
+
+ 'function SECStatus SECITEM_MakeItem(PLArenaPool*, SECItem*, unsigned char*, unsigned int)' {SECITEM_MakeItem@@NSSUTIL_3.38}
diff --git a/security/nss/automation/abi-check/expected-report-libssl3.so.txt b/security/nss/automation/abi-check/expected-report-libssl3.so.txt
index ad818d0aaa..e69de29bb2 100644
--- a/security/nss/automation/abi-check/expected-report-libssl3.so.txt
+++ b/security/nss/automation/abi-check/expected-report-libssl3.so.txt
@@ -1,28 +0,0 @@
-
-1 function with some indirect sub-type change:
-
- [C]'function SECStatus SSL_GetChannelInfo(PRFileDesc*, SSLChannelInfo*, PRUintn)' at sslinfo.c:12:1 has some indirect sub-type changes:
- parameter 2 of type 'SSLChannelInfo*' has sub-type changes:
- in pointed to type 'typedef SSLChannelInfo' at sslt.h:318:1:
- underlying type 'struct SSLChannelInfoStr' at sslt.h:251:1 changed:
- type size hasn't changed
- 1 data member change:
- type of 'SSLSignatureScheme SSLChannelInfoStr::signatureScheme' changed:
- underlying type 'enum __anonymous_enum__' at sslt.h:115:1 changed:
- type size hasn't changed
- 3 enumerator deletions:
- '__anonymous_enum__::ssl_sig_rsa_pss_sha256' value '2052'
- '__anonymous_enum__::ssl_sig_rsa_pss_sha384' value '2053'
- '__anonymous_enum__::ssl_sig_rsa_pss_sha512' value '2054'
-
- 6 enumerator insertions:
- '__anonymous_enum__::ssl_sig_rsa_pss_rsae_sha256' value '2052'
- '__anonymous_enum__::ssl_sig_rsa_pss_rsae_sha384' value '2053'
- '__anonymous_enum__::ssl_sig_rsa_pss_rsae_sha512' value '2054'
- '__anonymous_enum__::ssl_sig_rsa_pss_pss_sha256' value '2057'
- '__anonymous_enum__::ssl_sig_rsa_pss_pss_sha384' value '2058'
- '__anonymous_enum__::ssl_sig_rsa_pss_pss_sha512' value '2059'
-
-
-
-
diff --git a/security/nss/automation/abi-check/previous-nss-release b/security/nss/automation/abi-check/previous-nss-release
index c213ca3f88..c52061e7e2 100644
--- a/security/nss/automation/abi-check/previous-nss-release
+++ b/security/nss/automation/abi-check/previous-nss-release
@@ -1 +1 @@
-NSS_3_35_BRANCH
+NSS_3_37_BRANCH
diff --git a/security/nss/automation/taskcluster/docker-hacl/Dockerfile b/security/nss/automation/taskcluster/docker-hacl/Dockerfile
index 63f9a24e25..50f2be239c 100644
--- a/security/nss/automation/taskcluster/docker-hacl/Dockerfile
+++ b/security/nss/automation/taskcluster/docker-hacl/Dockerfile
@@ -5,11 +5,11 @@ MAINTAINER Franziskus Kiefer <franziskuskiefer@gmail.com>
# the original F* formula with Daniel Fabian
# Pinned versions of HACL* (F* and KreMLin are pinned as submodules)
-ENV haclrepo https://github.com/franziskuskiefer/hacl-star.git
+ENV haclrepo https://github.com/mitls/hacl-star.git
# Define versions of dependencies
-ENV opamv 4.04.2
-ENV haclversion 668d6cf274c33bbe2e951e3a84b73f2b6442a51f
+ENV opamv 4.05.0
+ENV haclversion 1da331f9ef30e13269e45ae73bbe4a4bca679ae6
# Install required packages and set versions
ADD setup.sh /tmp/setup.sh
diff --git a/security/nss/automation/taskcluster/docker-hacl/setup-user.sh b/security/nss/automation/taskcluster/docker-hacl/setup-user.sh
index b8accaf584..e2c0b857bc 100644
--- a/security/nss/automation/taskcluster/docker-hacl/setup-user.sh
+++ b/security/nss/automation/taskcluster/docker-hacl/setup-user.sh
@@ -16,7 +16,6 @@ git -C hacl-star checkout ${haclversion}
# This caches the extracted c code (pins the HACL* version). All we need to do
# on CI now is comparing the code in this docker image with the one in NSS.
opam config exec -- make -C hacl-star prepare -j$(nproc)
-make -C hacl-star verify-nss -j$(nproc)
make -C hacl-star -f Makefile.build snapshots/nss -j$(nproc)
KOPTS="-funroll-loops 5" make -C hacl-star/code/curve25519 test -j$(nproc)
make -C hacl-star/code/salsa-family test -j$(nproc)
diff --git a/security/nss/automation/taskcluster/docker-saw/Dockerfile b/security/nss/automation/taskcluster/docker-saw/Dockerfile
index a481ba0486..d677870109 100644
--- a/security/nss/automation/taskcluster/docker-saw/Dockerfile
+++ b/security/nss/automation/taskcluster/docker-saw/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:latest
+FROM ubuntu:16.04
MAINTAINER Tim Taubert <ttaubert@mozilla.com>
RUN useradd -d /home/worker -s /bin/bash -m worker
diff --git a/security/nss/automation/taskcluster/docker/Dockerfile b/security/nss/automation/taskcluster/docker/Dockerfile
index 8a2256d12c..b3c2516baa 100644
--- a/security/nss/automation/taskcluster/docker/Dockerfile
+++ b/security/nss/automation/taskcluster/docker/Dockerfile
@@ -12,9 +12,6 @@ RUN chmod +x /home/worker/bin/*
ADD setup.sh /tmp/setup.sh
RUN bash /tmp/setup.sh
-# Change user.
-USER worker
-
# Env variables.
ENV HOME /home/worker
ENV SHELL /bin/bash
diff --git a/security/nss/automation/taskcluster/graph/src/extend.js b/security/nss/automation/taskcluster/graph/src/extend.js
index ee9ac9b742..5305325c52 100644
--- a/security/nss/automation/taskcluster/graph/src/extend.js
+++ b/security/nss/automation/taskcluster/graph/src/extend.js
@@ -995,13 +995,13 @@ async function scheduleTools() {
}));
queue.scheduleTask(merge(base, {
- symbol: "scan-build-5.0",
- name: "scan-build-5.0",
- image: LINUX_IMAGE,
+ symbol: "scan-build",
+ name: "scan-build",
+ image: FUZZ_IMAGE,
env: {
USE_64: "1",
- CC: "clang-5.0",
- CCC: "clang++-5.0",
+ CC: "clang",
+ CCC: "clang++",
},
artifacts: {
public: {
@@ -1092,5 +1092,17 @@ async function scheduleTools() {
]
}));
+ queue.scheduleTask(merge(base, {
+ symbol: "Coverage",
+ name: "Coverage",
+ image: FUZZ_IMAGE,
+ features: ["allowPtrace"],
+ command: [
+ "/bin/bash",
+ "-c",
+ "bin/checkout.sh && nss/automation/taskcluster/scripts/gen_coverage_report.sh"
+ ]
+ }));
+
return queue.submit();
}
diff --git a/security/nss/automation/taskcluster/graph/src/try_syntax.js b/security/nss/automation/taskcluster/graph/src/try_syntax.js
index 1c06dde133..214793bd5d 100644
--- a/security/nss/automation/taskcluster/graph/src/try_syntax.js
+++ b/security/nss/automation/taskcluster/graph/src/try_syntax.js
@@ -51,7 +51,7 @@ function parseOptions(opts) {
}
// Parse tools.
- let allTools = ["clang-format", "scan-build", "hacl", "saw", "abi"];
+ let allTools = ["clang-format", "scan-build", "hacl", "saw", "abi", "coverage"];
let tools = intersect(opts.tools.split(/\s*,\s*/), allTools);
// If the given value is "all" run all tools.
diff --git a/security/nss/automation/taskcluster/scripts/gen_coverage_report.sh b/security/nss/automation/taskcluster/scripts/gen_coverage_report.sh
new file mode 100644
index 0000000000..3907c72e89
--- /dev/null
+++ b/security/nss/automation/taskcluster/scripts/gen_coverage_report.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+source $(dirname "$0")/tools.sh
+
+# Clone NSPR.
+hg_clone https://hg.mozilla.org/projects/nspr ./nspr default
+
+out=/home/worker/artifacts
+mkdir -p $out
+
+# Generate coverage report.
+cd nss && ./mach coverage --outdir=$out ssl_gtests
diff --git a/security/nss/automation/taskcluster/scripts/run_hacl.sh b/security/nss/automation/taskcluster/scripts/run_hacl.sh
index 281075eef4..6cbda49b4b 100644
--- a/security/nss/automation/taskcluster/scripts/run_hacl.sh
+++ b/security/nss/automation/taskcluster/scripts/run_hacl.sh
@@ -12,8 +12,8 @@ set -e -x -v
# The extracted C code from HACL* is already generated and the HACL* tests were
# successfully executed.
-# Verify Poly1305 (doesn't work in docker image build)
-make verify -C ~/hacl-star/code/poly1305 -j$(nproc)
+# Verify HACL*. Taskcluster fails when we do this in the image build.
+make -C hacl-star verify-nss -j$(nproc)
# Add license header to specs
spec_files=($(find ~/hacl-star/specs -type f -name '*.fst'))
diff --git a/security/nss/automation/taskcluster/scripts/tools.sh b/security/nss/automation/taskcluster/scripts/tools.sh
index 46d567e3a2..534cb32ce6 100644
--- a/security/nss/automation/taskcluster/scripts/tools.sh
+++ b/security/nss/automation/taskcluster/scripts/tools.sh
@@ -3,11 +3,16 @@
set -v -e -x
if [[ $(id -u) -eq 0 ]]; then
+ # Stupid Docker. It works without sometimes... But not always.
+ echo "127.0.0.1 localhost.localdomain" >> /etc/hosts
+
# Drop privileges by re-running this script.
# Note: this mangles arguments, better to avoid running scripts as root.
exec su worker -c "$0 $*"
fi
+export PATH="${PATH}:/home/worker/.cargo/bin/:/usr/lib/go-1.6/bin"
+
# Usage: hg_clone repo dir [revision=@]
hg_clone() {
repo=$1
diff --git a/security/nss/cmd/bltest/blapitest.c b/security/nss/cmd/bltest/blapitest.c
index ca3d6f3144..ef8fdd8021 100644
--- a/security/nss/cmd/bltest/blapitest.c
+++ b/security/nss/cmd/bltest/blapitest.c
@@ -3724,7 +3724,7 @@ main(int argc, char **argv)
/* test the RSA_PopulatePrivateKey function */
if (bltest.commands[cmd_RSAPopulate].activated) {
unsigned int keySize = 1024;
- unsigned long exponent = 65537;
+ unsigned long keyExponent = 65537;
int rounds = 1;
int ret = -1;
@@ -3735,12 +3735,12 @@ main(int argc, char **argv)
rounds = PORT_Atoi(bltest.options[opt_Rounds].arg);
}
if (bltest.options[opt_Exponent].activated) {
- exponent = PORT_Atoi(bltest.options[opt_Exponent].arg);
+ keyExponent = PORT_Atoi(bltest.options[opt_Exponent].arg);
}
for (i = 0; i < rounds; i++) {
printf("Running RSA Populate test round %d\n", i);
- ret = doRSAPopulateTest(keySize, exponent);
+ ret = doRSAPopulateTest(keySize, keyExponent);
if (ret != 0) {
break;
}
diff --git a/security/nss/cmd/certutil/certutil.c b/security/nss/cmd/certutil/certutil.c
index 20722ae782..dbb93c9220 100644
--- a/security/nss/cmd/certutil/certutil.c
+++ b/security/nss/cmd/certutil/certutil.c
@@ -36,9 +36,11 @@
#include "certdb.h"
#include "nss.h"
#include "certutil.h"
+#include "basicutil.h"
+#include "ssl.h"
#define MIN_KEY_BITS 512
-/* MAX_KEY_BITS should agree with MAX_RSA_MODULUS in freebl */
+/* MAX_KEY_BITS should agree with RSA_MAX_MODULUS_BITS in freebl */
#define MAX_KEY_BITS 8192
#define DEFAULT_KEY_BITS 2048
@@ -447,7 +449,8 @@ ChangeTrustAttributes(CERTCertDBHandle *handle, PK11SlotInfo *slot,
}
static SECStatus
-DumpChain(CERTCertDBHandle *handle, char *name, PRBool ascii)
+DumpChain(CERTCertDBHandle *handle, char *name, PRBool ascii,
+ PRBool simpleSelfSigned)
{
CERTCertificate *the_cert;
CERTCertificateList *chain;
@@ -458,6 +461,14 @@ DumpChain(CERTCertDBHandle *handle, char *name, PRBool ascii)
SECU_PrintError(progName, "Could not find: %s\n", name);
return SECFailure;
}
+ if (simpleSelfSigned &&
+ SECEqual == SECITEM_CompareItem(&the_cert->derIssuer,
+ &the_cert->derSubject)) {
+ printf("\"%s\" [%s]\n\n", the_cert->nickname, the_cert->subjectName);
+ CERT_DestroyCertificate(the_cert);
+ return SECSuccess;
+ }
+
chain = CERT_CertChainFromCert(the_cert, 0, PR_TRUE);
CERT_DestroyCertificate(the_cert);
if (!chain) {
@@ -782,17 +793,17 @@ ValidateCert(CERTCertDBHandle *handle, char *name, char *date,
fprintf(stdout, "%s: certificate is valid\n", progName);
GEN_BREAK(SECSuccess)
} else {
- char *name;
+ char *nick;
CERTVerifyLogNode *node;
node = log->head;
while (node) {
if (node->cert->nickname != NULL) {
- name = node->cert->nickname;
+ nick = node->cert->nickname;
} else {
- name = node->cert->subjectName;
+ nick = node->cert->subjectName;
}
- fprintf(stderr, "%s : %s\n", name,
+ fprintf(stderr, "%s : %s\n", nick,
SECU_Strerror(node->error));
CERT_DestroyCertificate(node->cert);
node = node->next;
@@ -845,7 +856,7 @@ SECItemToHex(const SECItem *item, char *dst)
}
static const char *const keyTypeName[] = {
- "null", "rsa", "dsa", "fortezza", "dh", "kea", "ec"
+ "null", "rsa", "dsa", "fortezza", "dh", "kea", "ec", "rsaPss"
};
#define MAX_CKA_ID_BIN_LEN 20
@@ -999,7 +1010,7 @@ DeleteKey(char *nickname, secuPWData *pwdata)
slot = PK11_GetInternalKeySlot();
if (PK11_NeedLogin(slot)) {
- SECStatus rv = PK11_Authenticate(slot, PR_TRUE, pwdata);
+ rv = PK11_Authenticate(slot, PR_TRUE, pwdata);
if (rv != SECSuccess) {
SECU_PrintError(progName, "could not authenticate to token %s.",
PK11_GetTokenName(slot));
@@ -1066,7 +1077,7 @@ PrintBuildFlags()
}
static void
-PrintSyntax(char *progName)
+PrintSyntax()
{
#define FPS fprintf(stderr,
FPS "Type %s -H for more detailed descriptions\n", progName);
@@ -1115,7 +1126,9 @@ PrintSyntax(char *progName)
FPS "\t%s --build-flags\n", progName);
FPS "\t%s -M -n cert-name -t trustargs [-d certdir] [-P dbprefix]\n",
progName);
- FPS "\t%s -O -n cert-name [-X] [-d certdir] [-a] [-P dbprefix]\n", progName);
+ FPS "\t%s -O -n cert-name [-X] [-d certdir] [-a] [-P dbprefix]\n"
+ "\t\t [--simple-self-signed]\n",
+ progName);
FPS "\t%s -R -s subj -o cert-request-file [-d certdir] [-P dbprefix] [-p phone] [-a]\n"
"\t\t [-7 emailAddrs] [-k key-type-or-id] [-h token-name] [-f pwfile]\n"
"\t\t [-g key-size] [-Z hashAlg]\n",
@@ -1542,6 +1555,8 @@ luO(enum usage_level ul, const char *command)
" -P dbprefix");
FPS "%-20s force the database to open R/W\n",
" -X");
+ FPS "%-20s don't search for a chain if issuer name equals subject name\n",
+ " --simple-self-signed");
FPS "\n");
}
@@ -1560,7 +1575,7 @@ luR(enum usage_level ul, const char *command)
" -o output-req");
FPS "%-20s Type of key pair to generate (\"dsa\", \"ec\", \"rsa\" (default))\n",
" -k key-type-or-id");
- FPS "%-20s or nickname of the cert key to use \n",
+ FPS "%-20s or nickname of the cert key to use, or key id obtained using -K\n",
"");
FPS "%-20s Name of token in which to generate key (default is internal)\n",
" -h token-name");
@@ -1838,7 +1853,7 @@ luBuildFlags(enum usage_level ul, const char *command)
}
static void
-LongUsage(char *progName, enum usage_level ul, const char *command)
+LongUsage(enum usage_level ul, const char *command)
{
luA(ul, command);
luB(ul, command);
@@ -1866,14 +1881,14 @@ LongUsage(char *progName, enum usage_level ul, const char *command)
}
static void
-Usage(char *progName)
+Usage()
{
PR_fprintf(PR_STDERR,
"%s - Utility to manipulate NSS certificate databases\n\n"
"Usage: %s <command> -d <database-directory> <options>\n\n"
"Valid commands:\n",
progName, progName);
- LongUsage(progName, usage_selected, NULL);
+ LongUsage(usage_selected, NULL);
PR_fprintf(PR_STDERR, "\n"
"%s -H <command> : Print available options for the given command\n"
"%s -H : Print complete help output of all commands and options\n"
@@ -2269,10 +2284,10 @@ flagArray opFlagsArray[] =
{ NAME_SIZE(verify_recover), CKF_VERIFY_RECOVER },
{ NAME_SIZE(wrap), CKF_WRAP },
{ NAME_SIZE(unwrap), CKF_UNWRAP },
- { NAME_SIZE(derive), CKF_DERIVE },
+ { NAME_SIZE(derive), CKF_DERIVE }
};
-int opFlagsCount = sizeof(opFlagsArray) / sizeof(flagArray);
+int opFlagsCount = PR_ARRAY_SIZE(opFlagsArray);
flagArray attrFlagsArray[] =
{
@@ -2286,14 +2301,13 @@ flagArray attrFlagsArray[] =
{ NAME_SIZE(insensitive), PK11_ATTR_INSENSITIVE },
{ NAME_SIZE(extractable), PK11_ATTR_EXTRACTABLE },
{ NAME_SIZE(unextractable), PK11_ATTR_UNEXTRACTABLE }
-
};
-int attrFlagsCount = sizeof(attrFlagsArray) / sizeof(flagArray);
+int attrFlagsCount = PR_ARRAY_SIZE(attrFlagsArray);
#define MAX_STRING 30
CK_ULONG
-GetFlags(char *flagsString, flagArray *flagArray, int count)
+GetFlags(char *flagsString, flagArray *flags, int count)
{
CK_ULONG flagsValue = strtol(flagsString, NULL, 0);
int i;
@@ -2303,10 +2317,10 @@ GetFlags(char *flagsString, flagArray *flagArray, int count)
}
while (*flagsString) {
for (i = 0; i < count; i++) {
- if (strncmp(flagsString, flagArray[i].name, flagArray[i].nameSize) ==
+ if (strncmp(flagsString, flags[i].name, flags[i].nameSize) ==
0) {
- flagsValue |= flagArray[i].value;
- flagsString += flagArray[i].nameSize;
+ flagsValue |= flags[i].value;
+ flagsString += flags[i].nameSize;
if (*flagsString != 0) {
flagsString++;
}
@@ -2499,6 +2513,7 @@ enum certutilOpts {
opt_NewNickname,
opt_Pss,
opt_PssSign,
+ opt_SimpleSelfSigned,
opt_Help
};
@@ -2623,6 +2638,8 @@ static const secuCommandFlag options_init[] =
"pss" },
{ /* opt_PssSign */ 0, PR_FALSE, 0, PR_FALSE,
"pss-sign" },
+ { /* opt_SimpleSelfSigned */ 0, PR_FALSE, 0, PR_FALSE,
+ "simple-self-signed" },
};
#define NUM_OPTIONS ((sizeof options_init) / (sizeof options_init[0]))
@@ -2691,14 +2708,13 @@ certutil_main(int argc, char **argv, PRBool initialize)
rv = SECU_ParseCommandLine(argc, argv, progName, &certutil);
if (rv != SECSuccess)
- Usage(progName);
+ Usage();
if (certutil.commands[cmd_PrintSyntax].activated) {
- PrintSyntax(progName);
+ PrintSyntax();
}
if (certutil.commands[cmd_PrintHelp].activated) {
- int i;
char buf[2];
const char *command = NULL;
for (i = 0; i < max_cmd; i++) {
@@ -2715,7 +2731,7 @@ certutil_main(int argc, char **argv, PRBool initialize)
break;
}
}
- LongUsage(progName, (command ? usage_selected : usage_all), command);
+ LongUsage((command ? usage_selected : usage_all), command);
exit(1);
}
@@ -2823,7 +2839,7 @@ certutil_main(int argc, char **argv, PRBool initialize)
if (certutil.options[opt_DBPrefix].arg) {
certPrefix = certutil.options[opt_DBPrefix].arg;
} else {
- Usage(progName);
+ Usage();
}
}
@@ -2832,7 +2848,7 @@ certutil_main(int argc, char **argv, PRBool initialize)
if (certutil.options[opt_SourcePrefix].arg) {
srcCertPrefix = certutil.options[opt_SourcePrefix].arg;
} else {
- Usage(progName);
+ Usage();
}
}
@@ -2916,7 +2932,7 @@ certutil_main(int argc, char **argv, PRBool initialize)
return 255;
}
if (commandsEntered == 0) {
- Usage(progName);
+ Usage();
}
if (certutil.commands[cmd_ListCerts].activated ||
@@ -3124,6 +3140,8 @@ certutil_main(int argc, char **argv, PRBool initialize)
}
initialized = PR_TRUE;
SECU_RegisterDynamicOids();
+ /* Ensure the SSL error code table has been registered. Bug 1460284. */
+ SSL_OptionSetDefault(-1, 0);
}
certHandle = CERT_GetDefaultCertDB();
@@ -3350,7 +3368,8 @@ certutil_main(int argc, char **argv, PRBool initialize)
}
if (certutil.commands[cmd_DumpChain].activated) {
rv = DumpChain(certHandle, name,
- certutil.options[opt_ASCIIForIO].activated);
+ certutil.options[opt_ASCIIForIO].activated,
+ certutil.options[opt_SimpleSelfSigned].activated);
goto shutdown;
}
/* XXX needs work */
@@ -3444,37 +3463,80 @@ certutil_main(int argc, char **argv, PRBool initialize)
keycert = CERT_FindCertByNicknameOrEmailAddr(certHandle, keysource);
if (!keycert) {
keycert = PK11_FindCertFromNickname(keysource, NULL);
- if (!keycert) {
- SECU_PrintError(progName,
- "%s is neither a key-type nor a nickname", keysource);
+ }
+
+ if (keycert) {
+ privkey = PK11_FindKeyByDERCert(slot, keycert, &pwdata);
+ } else {
+ PLArenaPool *arena = NULL;
+ SECItem keyidItem = { 0 };
+ char *keysourcePtr = keysource;
+ /* Interpret keysource as CKA_ID */
+ if (PK11_NeedLogin(slot)) {
+ rv = PK11_Authenticate(slot, PR_TRUE, &pwdata);
+ if (rv != SECSuccess) {
+ SECU_PrintError(progName, "could not authenticate to token %s.",
+ PK11_GetTokenName(slot));
+ return SECFailure;
+ }
+ }
+ if (0 == PL_strncasecmp("0x", keysource, 2)) {
+ keysourcePtr = keysource + 2; // skip leading "0x"
+ }
+ arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
+ if (!arena) {
+ SECU_PrintError(progName, "unable to allocate arena");
return SECFailure;
}
+ if (SECU_HexString2SECItem(arena, &keyidItem, keysourcePtr)) {
+ privkey = PK11_FindKeyByKeyID(slot, &keyidItem, &pwdata);
+ }
+ PORT_FreeArena(arena, PR_FALSE);
+ }
+
+ if (!privkey) {
+ SECU_PrintError(
+ progName,
+ "%s is neither a key-type nor a nickname nor a key-id", keysource);
+ return SECFailure;
}
- privkey = PK11_FindKeyByDERCert(slot, keycert, &pwdata);
- if (privkey)
- pubkey = CERT_ExtractPublicKey(keycert);
+
+ pubkey = SECKEY_ConvertToPublicKey(privkey);
if (!pubkey) {
SECU_PrintError(progName,
"Could not get keys from cert %s", keysource);
+ if (keycert) {
+ CERT_DestroyCertificate(keycert);
+ }
rv = SECFailure;
- CERT_DestroyCertificate(keycert);
goto shutdown;
}
keytype = privkey->keyType;
+
/* On CertReq for renewal if no subject has been
* specified obtain it from the certificate.
*/
if (certutil.commands[cmd_CertReq].activated && !subject) {
- subject = CERT_AsciiToName(keycert->subjectName);
- if (!subject) {
- SECU_PrintError(progName,
- "Could not get subject from certificate %s", keysource);
- CERT_DestroyCertificate(keycert);
+ if (keycert) {
+ subject = CERT_AsciiToName(keycert->subjectName);
+ if (!subject) {
+ SECU_PrintError(
+ progName,
+ "Could not get subject from certificate %s",
+ keysource);
+ CERT_DestroyCertificate(keycert);
+ rv = SECFailure;
+ goto shutdown;
+ }
+ } else {
+ SECU_PrintError(progName, "Subject name not provided");
rv = SECFailure;
goto shutdown;
}
}
- CERT_DestroyCertificate(keycert);
+ if (keycert) {
+ CERT_DestroyCertificate(keycert);
+ }
} else {
privkey =
CERTUTIL_GeneratePrivateKey(keytype, slot, keysize,
@@ -3537,6 +3599,14 @@ certutil_main(int argc, char **argv, PRBool initialize)
}
}
+ if (certutil.options[opt_SimpleSelfSigned].activated &&
+ !certutil.commands[cmd_DumpChain].activated) {
+ PR_fprintf(PR_STDERR,
+ "%s -%c: --simple-self-signed only works with -O.\n",
+ progName, commandToRun);
+ return 255;
+ }
+
/* If we need a list of extensions convert the flags into list format */
if (certutil.commands[cmd_CertReq].activated ||
certutil.commands[cmd_CreateAndAddCert].activated ||
diff --git a/security/nss/cmd/crlutil/crlutil.c b/security/nss/cmd/crlutil/crlutil.c
index c008ecc01a..c5527fc932 100644
--- a/security/nss/cmd/crlutil/crlutil.c
+++ b/security/nss/cmd/crlutil/crlutil.c
@@ -770,7 +770,7 @@ loser:
}
static void
-Usage(char *progName)
+Usage()
{
fprintf(stderr,
"Usage: %s -L [-n nickname] [-d keydir] [-P dbprefix] [-t crlType]\n"
@@ -908,7 +908,7 @@ main(int argc, char **argv)
while ((status = PL_GetNextOpt(optstate)) == PL_OPT_OK) {
switch (optstate->option) {
case '?':
- Usage(progName);
+ Usage();
break;
case 'T':
@@ -1038,17 +1038,17 @@ main(int argc, char **argv)
}
if (deleteCRL && !nickName)
- Usage(progName);
+ Usage();
if (importCRL && !inFile)
- Usage(progName);
+ Usage();
if (showFileCRL && !inFile)
- Usage(progName);
+ Usage();
if ((generateCRL && !nickName) ||
(modifyCRL && !inFile && !nickName))
- Usage(progName);
+ Usage();
if (!(listCRL || deleteCRL || importCRL || showFileCRL || generateCRL ||
modifyCRL || test || erase))
- Usage(progName);
+ Usage();
if (listCRL || showFileCRL) {
readonly = PR_TRUE;
diff --git a/security/nss/cmd/crmftest/testcrmf.c b/security/nss/cmd/crmftest/testcrmf.c
index cbc680b08f..1c1359b1bc 100644
--- a/security/nss/cmd/crmftest/testcrmf.c
+++ b/security/nss/cmd/crmftest/testcrmf.c
@@ -577,7 +577,6 @@ Decode(void)
printf("WARNING: The DER contained %d messages.\n", numMsgs);
}
for (i = 0; i < numMsgs; i++) {
- SECStatus rv;
printf("crmftest: Processing cert request %d\n", i);
certReqMsg = CRMF_CertReqMessagesGetCertReqMsgAtIndex(certReqMsgs, i);
if (certReqMsg == NULL) {
diff --git a/security/nss/cmd/dbtest/dbtest.c b/security/nss/cmd/dbtest/dbtest.c
index 9a6a034a69..11713c23fb 100644
--- a/security/nss/cmd/dbtest/dbtest.c
+++ b/security/nss/cmd/dbtest/dbtest.c
@@ -58,7 +58,7 @@ getPassword(PK11SlotInfo *slot, PRBool retry, void *arg)
}
static void
-Usage(const char *progName)
+Usage()
{
printf("Usage: %s [-r] [-f] [-i] [-d dbdir ] \n",
progName);
@@ -96,7 +96,7 @@ main(int argc, char **argv)
switch (optstate->option) {
case 'h':
default:
- Usage(progName);
+ Usage();
break;
case 'r':
@@ -122,7 +122,7 @@ main(int argc, char **argv)
}
PL_DestroyOptState(optstate);
if (optstatus == PL_OPT_BAD)
- Usage(progName);
+ Usage();
if (dbDir) {
char *tmp = dbDir;
@@ -181,7 +181,6 @@ main(int argc, char **argv)
ret = SUCCESS;
if (doInitTest) {
PK11SlotInfo *slot = PK11_GetInternalKeySlot();
- SECStatus rv;
int passwordSuccess = 0;
int type = CKM_DES3_CBC;
SECItem keyid = { 0, NULL, 0 };
diff --git a/security/nss/cmd/httpserv/httpserv.c b/security/nss/cmd/httpserv/httpserv.c
index 7cf28c65a0..71e2ab88d9 100644
--- a/security/nss/cmd/httpserv/httpserv.c
+++ b/security/nss/cmd/httpserv/httpserv.c
@@ -682,6 +682,7 @@ handle_connection(
}
if (arena) {
PORT_FreeArena(arena, PR_FALSE);
+ arena = NULL;
}
if (!request || !request->tbsRequest ||
!request->tbsRequest->requestList ||
@@ -753,11 +754,11 @@ handle_connection(
{
PRTime now = PR_Now();
- PLArenaPool *arena = NULL;
CERTOCSPSingleResponse *sr;
CERTOCSPSingleResponse **singleResponses;
SECItem *ocspResponse;
+ PORT_Assert(!arena);
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if (unknown) {
@@ -787,8 +788,8 @@ handle_connection(
} else {
PR_Write(ssl_sock, outOcspHeader, strlen(outOcspHeader));
PR_Write(ssl_sock, ocspResponse->data, ocspResponse->len);
- PORT_FreeArena(arena, PR_FALSE);
}
+ PORT_FreeArena(arena, PR_FALSE);
}
CERT_DestroyOCSPRequest(request);
break;
@@ -1357,7 +1358,6 @@ main(int argc, char **argv)
caRevoIter = &caRevoInfos->link;
do {
PRFileDesc *inFile;
- int rv = SECFailure;
SECItem crlDER;
crlDER.data = NULL;
@@ -1413,11 +1413,9 @@ main(int argc, char **argv)
if (provideOcsp) {
if (caRevoInfos) {
- PRCList *caRevoIter;
-
caRevoIter = &caRevoInfos->link;
do {
- caRevoInfo *revoInfo = (caRevoInfo *)caRevoIter;
+ revoInfo = (caRevoInfo *)caRevoIter;
if (revoInfo->nickname)
PORT_Free(revoInfo->nickname);
if (revoInfo->crlFilename)
diff --git a/security/nss/cmd/lib/secutil.c b/security/nss/cmd/lib/secutil.c
index 2b33f89633..6be2df432a 100644
--- a/security/nss/cmd/lib/secutil.c
+++ b/security/nss/cmd/lib/secutil.c
@@ -1528,9 +1528,9 @@ SECU_PrintDumpDerIssuerAndSerial(FILE *out, SECItem *der, char *m,
unsigned int i;
for (i = 0; i < c->serialNumber.len; ++i) {
unsigned char *chardata = (unsigned char *)(c->serialNumber.data);
- unsigned char c = *(chardata + i);
+ unsigned char ch = *(chardata + i);
- fprintf(out, "\\x%02x", c);
+ fprintf(out, "\\x%02x", ch);
}
fprintf(out, "\" }\n");
}
@@ -3137,7 +3137,7 @@ typedef enum {
static int
secu_PrintSignedDataSigOpt(FILE *out, SECItem *der, const char *m,
int level, SECU_PPFunc inner,
- SignatureOptionType withSignature)
+ SignatureOptionType signatureOption)
{
PLArenaPool *arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
CERTSignedData *sd;
@@ -3164,7 +3164,7 @@ secu_PrintSignedDataSigOpt(FILE *out, SECItem *der, const char *m,
}
rv = (*inner)(out, &sd->data, "Data", level + 1);
- if (withSignature) {
+ if (signatureOption == withSignature) {
SECU_PrintAlgorithmID(out, &sd->signatureAlgorithm, "Signature Algorithm",
level + 1);
DER_ConvertBitString(&sd->signature);
diff --git a/security/nss/cmd/listsuites/listsuites.c b/security/nss/cmd/listsuites/listsuites.c
index 8eb2c3553e..b49f2d8cf4 100644
--- a/security/nss/cmd/listsuites/listsuites.c
+++ b/security/nss/cmd/listsuites/listsuites.c
@@ -64,9 +64,7 @@ main(int argc, char **argv)
/* disable all the SSL3 cipher suites */
for (i = 0; i < SSL_NumImplementedCiphers; i++) {
PRUint16 suite = cipherSuites[i];
- SECStatus rv;
PRBool enabled;
- PRErrorCode err;
SSLCipherSuiteInfo info;
rv = SSL_CipherPrefGetDefault(suite, &enabled);
diff --git a/security/nss/cmd/lowhashtest/lowhashtest.c b/security/nss/cmd/lowhashtest/lowhashtest.c
index 29d6ff4fd1..fcc06a86ee 100644
--- a/security/nss/cmd/lowhashtest/lowhashtest.c
+++ b/security/nss/cmd/lowhashtest/lowhashtest.c
@@ -390,7 +390,7 @@ testSHA512(NSSLOWInitContext *initCtx)
}
static void
-Usage(char *progName)
+Usage()
{
fprintf(stderr, "Usage: %s [algorithm]\n",
progName);
@@ -436,7 +436,7 @@ main(int argc, char **argv)
rv += testSHA512(initCtx);
} else {
SECU_PrintError(progName, "Unsupported hash type %s\n", argv[0]);
- Usage(progName);
+ Usage();
}
NSSLOW_Shutdown(initCtx);
diff --git a/security/nss/cmd/modutil/install-ds.c b/security/nss/cmd/modutil/install-ds.c
index 0305687626..576839f8f5 100644
--- a/security/nss/cmd/modutil/install-ds.c
+++ b/security/nss/cmd/modutil/install-ds.c
@@ -88,11 +88,11 @@ static const char* errString[] = {
static char* PR_Strdup(const char* str);
-#define PAD(x) \
- { \
- int i; \
- for (i = 0; i < x; i++) \
- printf(" "); \
+#define PAD(x) \
+ { \
+ int pad_i; \
+ for (pad_i = 0; pad_i < (x); pad_i++) \
+ printf(" "); \
}
#define PADINC 4
diff --git a/security/nss/cmd/mpitests/mpi-test.c b/security/nss/cmd/mpitests/mpi-test.c
index 3a1f5d6c2e..b7953b6f66 100644
--- a/security/nss/cmd/mpitests/mpi-test.c
+++ b/security/nss/cmd/mpitests/mpi-test.c
@@ -375,14 +375,14 @@ void reason(char *fmt, ...);
char g_intbuf[4096]; /* buffer for integer comparison */
char a_intbuf[4096]; /* buffer for integer comparison */
int g_verbose = 1; /* print out reasons for failure? */
-int res;
-
-#define IFOK(x) \
- { \
- if (MP_OKAY > (res = (x))) { \
- reason("test %s failed: error %d\n", #x, res); \
- return 1; \
- } \
+
+#define IFOK(x) \
+ { \
+ int ifok_res = (x); \
+ if (MP_OKAY > ifok_res) { \
+ reason("test %s failed: error %d\n", #x, ifok_res); \
+ return 1; \
+ } \
}
int
diff --git a/security/nss/cmd/ocspclnt/ocspclnt.c b/security/nss/cmd/ocspclnt/ocspclnt.c
index afcb7e13fb..0927f8ef63 100644
--- a/security/nss/cmd/ocspclnt/ocspclnt.c
+++ b/security/nss/cmd/ocspclnt/ocspclnt.c
@@ -38,7 +38,7 @@
char *program_name;
static void
-synopsis(char *program_name)
+synopsis(char *progname)
{
PRFileDesc *pr_stderr;
@@ -46,44 +46,44 @@ synopsis(char *program_name)
PR_fprintf(pr_stderr, "Usage:");
PR_fprintf(pr_stderr,
"\t%s -p [-d <dir>]\n",
- program_name);
+ progname);
PR_fprintf(pr_stderr,
"\t%s -P [-d <dir>]\n",
- program_name);
+ progname);
PR_fprintf(pr_stderr,
"\t%s -r <name> [-a] [-L] [-s <name>] [-d <dir>]\n",
- program_name);
+ progname);
PR_fprintf(pr_stderr,
"\t%s -R <name> [-a] [-l <location>] [-s <name>] [-d <dir>]\n",
- program_name);
+ progname);
PR_fprintf(pr_stderr,
"\t%s -S <name> [-a] [-l <location> -t <name>]\n",
- program_name);
+ progname);
PR_fprintf(pr_stderr,
"\t\t [-s <name>] [-w <time>] [-d <dir>]\n");
PR_fprintf(pr_stderr,
"\t%s -V <name> [-a] -u <usage> [-l <location> -t <name>]\n",
- program_name);
+ progname);
PR_fprintf(pr_stderr,
"\t\t [-s <name>] [-w <time>] [-d <dir>]\n");
}
static void
-short_usage(char *program_name)
+short_usage(char *progname)
{
PR_fprintf(PR_STDERR,
"Type %s -H for more detailed descriptions\n",
- program_name);
- synopsis(program_name);
+ progname);
+ synopsis(progname);
}
static void
-long_usage(char *program_name)
+long_usage(char *progname)
{
PRFileDesc *pr_stderr;
pr_stderr = PR_STDERR;
- synopsis(program_name);
+ synopsis(progname);
PR_fprintf(pr_stderr, "\nCommands (must specify exactly one):\n");
PR_fprintf(pr_stderr,
" %-13s Pretty-print a binary request read from stdin\n",
diff --git a/security/nss/cmd/ocspresp/ocspresp.c b/security/nss/cmd/ocspresp/ocspresp.c
index 632623c97c..d18d32e18e 100644
--- a/security/nss/cmd/ocspresp/ocspresp.c
+++ b/security/nss/cmd/ocspresp/ocspresp.c
@@ -194,8 +194,8 @@ main(int argc, char **argv)
&obtainedSignerCert, caCert));
#ifdef DEBUG
{
- SECStatus rv = CERT_GetOCSPStatusForCertID(certHandle, decodedRev, cid,
- obtainedSignerCert, now);
+ rv = CERT_GetOCSPStatusForCertID(certHandle, decodedRev, cid,
+ obtainedSignerCert, now);
PORT_Assert(rv == SECFailure);
PORT_Assert(PORT_GetError() == SEC_ERROR_REVOKED_CERTIFICATE);
}
@@ -211,7 +211,7 @@ main(int argc, char **argv)
decodedFail = CERT_DecodeOCSPResponse(encodedFail);
#ifdef DEBUG
{
- SECStatus rv = CERT_GetOCSPResponseStatus(decodedFail);
+ rv = CERT_GetOCSPResponseStatus(decodedFail);
PORT_Assert(rv == SECFailure);
PORT_Assert(PORT_GetError() == SEC_ERROR_OCSP_TRY_SERVER_LATER);
}
diff --git a/security/nss/cmd/pk12util/pk12util.c b/security/nss/cmd/pk12util/pk12util.c
index 70454a0d8f..5884713e3c 100644
--- a/security/nss/cmd/pk12util/pk12util.c
+++ b/security/nss/cmd/pk12util/pk12util.c
@@ -28,7 +28,7 @@ static PRBool pk12uForceUnicode;
PRIntn pk12uErrno = 0;
static void
-Usage(char *progName)
+Usage()
{
#define FPS PR_fprintf(PR_STDERR,
FPS "Usage: %s -i importfile [-d certdir] [-P dbprefix] [-h tokenname]\n",
@@ -1020,26 +1020,26 @@ main(int argc, char **argv)
rv = SECU_ParseCommandLine(argc, argv, progName, &pk12util);
if (rv != SECSuccess)
- Usage(progName);
+ Usage();
pk12_debugging = pk12util.options[opt_Debug].activated;
if ((pk12util.options[opt_Import].activated +
pk12util.options[opt_Export].activated +
pk12util.options[opt_List].activated) != 1) {
- Usage(progName);
+ Usage();
}
if (pk12util.options[opt_Export].activated &&
!pk12util.options[opt_Nickname].activated) {
- Usage(progName);
+ Usage();
}
rv = NSS_OptionGet(__NSS_PKCS12_DECODE_FORCE_UNICODE, &forceUnicode);
if (rv != SECSuccess) {
SECU_PrintError(progName,
"Failed to get NSS_PKCS12_DECODE_FORCE_UNICODE option");
- Usage(progName);
+ Usage();
}
pk12uForceUnicode = forceUnicode;
@@ -1144,7 +1144,7 @@ main(int argc, char **argv)
P12U_ListPKCS12File(import_file, slot, &slotPw, &p12FilePw);
} else {
- Usage(progName);
+ Usage();
pk12uErrno = PK12UERR_USAGE;
}
diff --git a/security/nss/cmd/pk1sign/pk1sign.c b/security/nss/cmd/pk1sign/pk1sign.c
index 085aa16598..d5524c149b 100644
--- a/security/nss/cmd/pk1sign/pk1sign.c
+++ b/security/nss/cmd/pk1sign/pk1sign.c
@@ -178,7 +178,7 @@ loser:
SECKEY_DestroyPrivateKey(privKey);
}
if (data) {
- PORT_Free(data);
+ PR_Free(data);
}
PORT_FreeArena(arena, PR_FALSE);
diff --git a/security/nss/cmd/rsaperf/rsaperf.c b/security/nss/cmd/rsaperf/rsaperf.c
index 2bb23856e7..7762a465b8 100644
--- a/security/nss/cmd/rsaperf/rsaperf.c
+++ b/security/nss/cmd/rsaperf/rsaperf.c
@@ -313,7 +313,7 @@ main(int argc, char **argv)
char *slotname = NULL;
long keybits = 0;
RSAOp fn;
- void *rsaKey = NULL;
+ void *rsaKeyPtr = NULL;
PLOptState *optstate;
PLOptStatus optstatus;
long iters = DEFAULT_ITERS;
@@ -464,7 +464,7 @@ main(int argc, char **argv)
if (doPub) {
/* do public key ops */
fn = (RSAOp)PK11_PublicKeyOp;
- rsaKey = (void *)pubHighKey;
+ rsaKeyPtr = (void *)pubHighKey;
kh = PK11_ImportPublicKey(cert->slot, pubHighKey, PR_FALSE);
if (CK_INVALID_HANDLE == kh) {
@@ -489,7 +489,7 @@ main(int argc, char **argv)
fn = (RSAOp)PK11_PrivateKeyOp;
keys.privKey = privHighKey;
keys.pubKey = pubHighKey;
- rsaKey = (void *)&keys;
+ rsaKeyPtr = (void *)&keys;
printf("Using PKCS#11 for RSA decryption with token %s.\n",
PK11_GetTokenName(privHighKey->pkcs11Slot));
}
@@ -537,13 +537,13 @@ main(int argc, char **argv)
if (doPub) {
/* do public key operations */
fn = (RSAOp)PK11_PublicKeyOp;
- rsaKey = (void *)pubHighKey;
+ rsaKeyPtr = (void *)pubHighKey;
} else {
/* do private key operations */
fn = (RSAOp)PK11_PrivateKeyOp;
keys.privKey = privHighKey;
keys.pubKey = pubHighKey;
- rsaKey = (void *)&keys;
+ rsaKeyPtr = (void *)&keys;
}
} else
@@ -574,7 +574,7 @@ main(int argc, char **argv)
pe.data = &pubEx[0];
pe.type = siBuffer;
- rsaKey = RSA_NewKey(keybits, &pe);
+ rsaKeyPtr = RSA_NewKey(keybits, &pe);
fprintf(stderr, "Keygen completed.\n");
} else {
/* use a hardcoded key */
@@ -589,31 +589,31 @@ main(int argc, char **argv)
if (doPub) {
/* do public key operations */
fn = (RSAOp)RSA_PublicKeyOp;
- if (rsaKey) {
+ if (rsaKeyPtr) {
/* convert the RSAPrivateKey to RSAPublicKey */
pubKeyStr.arena = NULL;
- pubKeyStr.modulus = ((RSAPrivateKey *)rsaKey)->modulus;
+ pubKeyStr.modulus = ((RSAPrivateKey *)rsaKeyPtr)->modulus;
pubKeyStr.publicExponent =
- ((RSAPrivateKey *)rsaKey)->publicExponent;
- rsaKey = &pubKeyStr;
+ ((RSAPrivateKey *)rsaKeyPtr)->publicExponent;
+ rsaKeyPtr = &pubKeyStr;
} else {
/* convert NSSLOWKeyPublicKey to RSAPublicKey */
- rsaKey = (void *)(&pubKey->u.rsa);
+ rsaKeyPtr = (void *)(&pubKey->u.rsa);
}
- PORT_Assert(rsaKey);
+ PORT_Assert(rsaKeyPtr);
} else {
/* do private key operations */
fn = (RSAOp)RSA_PrivateKeyOp;
if (privKey) {
/* convert NSSLOWKeyPrivateKey to RSAPrivateKey */
- rsaKey = (void *)(&privKey->u.rsa);
+ rsaKeyPtr = (void *)(&privKey->u.rsa);
}
- PORT_Assert(rsaKey);
+ PORT_Assert(rsaKeyPtr);
}
}
memset(buf, 1, sizeof buf);
- rv = fn(rsaKey, buf2, buf);
+ rv = fn(rsaKeyPtr, buf2, buf);
if (rv != SECSuccess) {
PRErrorCode errNum;
const char *errStr = NULL;
@@ -638,7 +638,7 @@ main(int argc, char **argv)
runDataArr[i]->fn = fn;
runDataArr[i]->buf = buf;
runDataArr[i]->doIters = &doIters;
- runDataArr[i]->rsaKey = rsaKey;
+ runDataArr[i]->rsaKey = rsaKeyPtr;
runDataArr[i]->seconds = seconds;
runDataArr[i]->iters = iters;
threadsArr[i] =
diff --git a/security/nss/cmd/selfserv/selfserv.c b/security/nss/cmd/selfserv/selfserv.c
index fac428e101..c372ec9b83 100644
--- a/security/nss/cmd/selfserv/selfserv.c
+++ b/security/nss/cmd/selfserv/selfserv.c
@@ -57,7 +57,7 @@
int NumSidCacheEntries = 1024;
-static int handle_connection(PRFileDesc *, PRFileDesc *, int);
+static int handle_connection(PRFileDesc *, PRFileDesc *);
static const char envVarName[] = { SSL_ENV_VAR_NAME };
static const char inheritableSockName[] = { "SELFSERV_LISTEN_SOCKET" };
@@ -509,7 +509,6 @@ typedef struct jobStr {
PRCList link;
PRFileDesc *tcp_sock;
PRFileDesc *model_sock;
- int requestCert;
} JOB;
static PZLock *qLock; /* this lock protects all data immediately below */
@@ -541,7 +540,7 @@ setupJobs(int maxJobs)
return SECSuccess;
}
-typedef int startFn(PRFileDesc *a, PRFileDesc *b, int c);
+typedef int startFn(PRFileDesc *a, PRFileDesc *b);
typedef enum { rs_idle = 0,
rs_running = 1,
@@ -550,7 +549,6 @@ typedef enum { rs_idle = 0,
typedef struct perThreadStr {
PRFileDesc *a;
PRFileDesc *b;
- int c;
int rv;
startFn *startFunc;
PRThread *prThread;
@@ -564,7 +562,7 @@ thread_wrapper(void *arg)
{
perThread *slot = (perThread *)arg;
- slot->rv = (*slot->startFunc)(slot->a, slot->b, slot->c);
+ slot->rv = (*slot->startFunc)(slot->a, slot->b);
/* notify the thread exit handler. */
PZ_Lock(qLock);
@@ -575,7 +573,7 @@ thread_wrapper(void *arg)
}
int
-jobLoop(PRFileDesc *a, PRFileDesc *b, int c)
+jobLoop(PRFileDesc *a, PRFileDesc *b)
{
PRCList *myLink = 0;
JOB *myJob;
@@ -595,8 +593,7 @@ jobLoop(PRFileDesc *a, PRFileDesc *b, int c)
/* myJob will be null when stopping is true and jobQ is empty */
if (!myJob)
break;
- handle_connection(myJob->tcp_sock, myJob->model_sock,
- myJob->requestCert);
+ handle_connection(myJob->tcp_sock, myJob->model_sock);
PZ_Lock(qLock);
PR_APPEND_LINK(myLink, &freeJobs);
PZ_NotifyCondVar(freeListNotEmptyCv);
@@ -609,7 +606,6 @@ launch_threads(
startFn *startFunc,
PRFileDesc *a,
PRFileDesc *b,
- int c,
PRBool local)
{
int i;
@@ -645,7 +641,6 @@ launch_threads(
slot->state = rs_running;
slot->a = a;
slot->b = b;
- slot->c = c;
slot->startFunc = startFunc;
slot->prThread = PR_CreateThread(PR_USER_THREAD,
thread_wrapper, slot, PR_PRIORITY_NORMAL,
@@ -893,8 +888,7 @@ int /* returns count */
int
do_writes(
PRFileDesc *ssl_sock,
- PRFileDesc *model_sock,
- int requestCert)
+ PRFileDesc *model_sock)
{
int sent = 0;
int count = 0;
@@ -925,8 +919,7 @@ do_writes(
static int
handle_fdx_connection(
PRFileDesc *tcp_sock,
- PRFileDesc *model_sock,
- int requestCert)
+ PRFileDesc *model_sock)
{
PRFileDesc *ssl_sock = NULL;
SECStatus result;
@@ -960,8 +953,7 @@ handle_fdx_connection(
lockedVars_AddToCount(&lv, 1);
/* Attempt to launch the writer thread. */
- result = launch_thread(do_writes, ssl_sock, (PRFileDesc *)&lv,
- requestCert);
+ result = launch_thread(do_writes, ssl_sock, (PRFileDesc *)&lv);
if (result == SECSuccess)
do {
@@ -1093,7 +1085,7 @@ makeCorruptedOCSPResponse(PLArenaPool *arena)
}
SECItemArray *
-makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm,
+makeSignedOCSPResponse(PLArenaPool *arena,
CERTCertificate *cert, secuPWData *pwdata)
{
SECItemArray *result = NULL;
@@ -1117,7 +1109,7 @@ makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm,
nextUpdate = now + (PRTime)60 * 60 * 24 * PR_USEC_PER_SEC; /* plus 1 day */
- switch (osm) {
+ switch (ocspStaplingMode) {
case osm_good:
case osm_badsig:
sr = CERT_CreateOCSPSingleResponseGood(arena, cid, now,
@@ -1150,7 +1142,7 @@ makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm,
singleResponses[1] = NULL;
ocspResponse = CERT_CreateEncodedOCSPSuccessResponse(arena,
- (osm == osm_badsig)
+ (ocspStaplingMode == osm_badsig)
? NULL
: ca,
ocspResponderID_byName, now, singleResponses,
@@ -1175,7 +1167,7 @@ makeSignedOCSPResponse(PLArenaPool *arena, ocspStaplingModeType osm,
}
void
-setupCertStatus(PLArenaPool *arena, enum ocspStaplingModeEnum ocspStaplingMode,
+setupCertStatus(PLArenaPool *arena,
CERTCertificate *cert, int index, secuPWData *pwdata)
{
if (ocspStaplingMode == osm_random) {
@@ -1213,7 +1205,7 @@ setupCertStatus(PLArenaPool *arena, enum ocspStaplingModeEnum ocspStaplingMode,
case osm_unknown:
case osm_badsig:
multiOcspResponses =
- makeSignedOCSPResponse(arena, ocspStaplingMode, cert,
+ makeSignedOCSPResponse(arena, cert,
pwdata);
break;
case osm_corrupted:
@@ -1236,10 +1228,7 @@ setupCertStatus(PLArenaPool *arena, enum ocspStaplingModeEnum ocspStaplingMode,
}
int
-handle_connection(
- PRFileDesc *tcp_sock,
- PRFileDesc *model_sock,
- int requestCert)
+handle_connection(PRFileDesc *tcp_sock, PRFileDesc *model_sock)
{
PRFileDesc *ssl_sock = NULL;
PRFileDesc *local_file_fd = NULL;
@@ -1272,7 +1261,6 @@ handle_connection(
VLOG(("selfserv: handle_connection: starting\n"));
if (useModelSocket && model_sock) {
- SECStatus rv;
ssl_sock = SSL_ImportFD(model_sock, tcp_sock);
if (!ssl_sock) {
errWarn("SSL_ImportFD with model");
@@ -1588,8 +1576,7 @@ sigusr1_handler(int sig)
SECStatus
do_accepts(
PRFileDesc *listen_sock,
- PRFileDesc *model_sock,
- int requestCert)
+ PRFileDesc *model_sock)
{
PRNetAddr addr;
PRErrorCode perr;
@@ -1659,7 +1646,6 @@ do_accepts(
JOB *myJob = (JOB *)myLink;
myJob->tcp_sock = tcp_sock;
myJob->model_sock = model_sock;
- myJob->requestCert = requestCert;
}
PR_APPEND_LINK(myLink, &jobQ);
@@ -1818,7 +1804,6 @@ handshakeCallback(PRFileDesc *fd, void *client_data)
void
server_main(
PRFileDesc *listen_sock,
- int requestCert,
SECKEYPrivateKey **privKey,
CERTCertificate **cert,
const char *expectedHostNameVal)
@@ -2021,7 +2006,7 @@ server_main(
/* end of ssl configuration. */
/* Now, do the accepting, here in the main thread. */
- rv = do_accepts(listen_sock, model_sock, requestCert);
+ rv = do_accepts(listen_sock, model_sock);
terminateWorkerThreads();
@@ -2654,9 +2639,8 @@ main(int argc, char **argv)
}
}
if (cipher > 0) {
- SECStatus status;
- status = SSL_CipherPrefSetDefault(cipher, SSL_ALLOWED);
- if (status != SECSuccess)
+ rv = SSL_CipherPrefSetDefault(cipher, SSL_ALLOWED);
+ if (rv != SECSuccess)
SECU_PrintError(progName, "SSL_CipherPrefSet()");
} else {
fprintf(stderr,
@@ -2684,7 +2668,7 @@ main(int argc, char **argv)
exit(11);
}
if (privKey[i]->keyType != ecKey)
- setupCertStatus(certStatusArena, ocspStaplingMode, cert[i], i, &pwdata);
+ setupCertStatus(certStatusArena, cert[i], i, &pwdata);
}
if (configureWeakDHE > 0) {
@@ -2697,7 +2681,7 @@ main(int argc, char **argv)
}
/* allocate the array of thread slots, and launch the worker threads. */
- rv = launch_threads(&jobLoop, 0, 0, requestCert, useLocalThreads);
+ rv = launch_threads(&jobLoop, 0, 0, useLocalThreads);
if (rv == SECSuccess && logStats) {
loggerThread = PR_CreateThread(PR_SYSTEM_THREAD,
@@ -2712,7 +2696,7 @@ main(int argc, char **argv)
}
if (rv == SECSuccess) {
- server_main(listen_sock, requestCert, privKey, cert,
+ server_main(listen_sock, privKey, cert,
expectedHostNameVal);
}
@@ -2731,7 +2715,6 @@ cleanup:
}
{
- int i;
for (i = 0; i < certNicknameIndex; i++) {
if (cert[i]) {
CERT_DestroyCertificate(cert[i]);
diff --git a/security/nss/cmd/shlibsign/shlibsign.c b/security/nss/cmd/shlibsign/shlibsign.c
index d93fc422d5..221d1e67ed 100644
--- a/security/nss/cmd/shlibsign/shlibsign.c
+++ b/security/nss/cmd/shlibsign/shlibsign.c
@@ -148,7 +148,7 @@ writeItem(PRFileDesc *fd, CK_VOID_PTR pValue,
return PR_FAILURE;
}
bytesWritten = PR_Write(fd, pValue, ulValueLen);
- if (bytesWritten != ulValueLen) {
+ if (bytesWritten < 0 || (CK_ULONG)bytesWritten != ulValueLen) {
lperror(file);
return PR_FAILURE;
}
diff --git a/security/nss/cmd/signtool/javascript.c b/security/nss/cmd/signtool/javascript.c
index ffff2db592..58869aa619 100644
--- a/security/nss/cmd/signtool/javascript.c
+++ b/security/nss/cmd/signtool/javascript.c
@@ -1300,7 +1300,6 @@ extract_js(char *filename)
* Now we have a stream of tags and text. Go through and deal with each.
*/
for (curitem = head; curitem; curitem = curitem->next) {
- TagItem *tagp = NULL;
AVPair *pairp = NULL;
char *src = NULL, *id = NULL, *codebase = NULL;
PRBool hasEventHandler = PR_FALSE;
@@ -1669,11 +1668,14 @@ loser:
* Returns PR_SUCCESS if the directory is present, PR_FAILURE otherwise.
*/
static PRStatus
-ensureExists(char *base, char *path)
+ensureExists(char *basepath, char *path)
{
char fn[FNSIZE];
PRDir *dir;
- sprintf(fn, "%s/%s", base, path);
+ int c = snprintf(fn, sizeof(fn), "%s/%s", basepath, path);
+ if (c >= sizeof(fn)) {
+ return PR_FAILURE;
+ }
/*PR_fprintf(outputFD, "Trying to open directory %s.\n", fn);*/
diff --git a/security/nss/cmd/signtool/sign.c b/security/nss/cmd/signtool/sign.c
index 6f8e439467..5345309472 100644
--- a/security/nss/cmd/signtool/sign.c
+++ b/security/nss/cmd/signtool/sign.c
@@ -175,16 +175,16 @@ typedef struct {
*
*/
int
-SignAllArc(char *jartree, char *keyName, int javascript, char *metafile,
- char *install_script, int optimize, PRBool recurse)
+SignAllArc(char *jartree, char *keyName, int javascript, char *metafilename,
+ char *install_script, int optimize_level, PRBool recurse)
{
SignArcInfo info;
info.keyName = keyName;
info.javascript = javascript;
- info.metafile = metafile;
+ info.metafile = metafilename;
info.install_script = install_script;
- info.optimize = optimize;
+ info.optimize = optimize_level;
return foreach (jartree, "", sign_all_arc_fn, recurse,
PR_TRUE /*include dirs*/, (void *)&info);
@@ -194,7 +194,7 @@ static int
sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename,
void *arg)
{
- char *zipfile = NULL;
+ char *zipfilename = NULL;
char *arc = NULL, *archive = NULL;
int retval = 0;
SignArcInfo *infop = (SignArcInfo *)arg;
@@ -212,8 +212,8 @@ sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename,
}
archive = PR_smprintf("%s/%s", basedir, relpath);
- zipfile = PL_strdup(archive);
- arc = PORT_Strrchr(zipfile, '.');
+ zipfilename = PL_strdup(archive);
+ arc = PORT_Strrchr(zipfilename, '.');
if (arc == NULL) {
PR_fprintf(errorFD, "%s: Internal failure\n", PROGRAM_NAME);
@@ -225,17 +225,17 @@ sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename,
PL_strcpy(arc, ".jar");
if (verbosity >= 0) {
- PR_fprintf(outputFD, "\nsigning: %s\n", zipfile);
+ PR_fprintf(outputFD, "\nsigning: %s\n", zipfilename);
}
- retval = SignArchive(archive, infop->keyName, zipfile,
+ retval = SignArchive(archive, infop->keyName, zipfilename,
infop->javascript, infop->metafile, infop->install_script,
infop->optimize, PR_TRUE /* recurse */);
}
finish:
if (archive)
PR_Free(archive);
- if (zipfile)
- PR_Free(zipfile);
+ if (zipfilename)
+ PR_Free(zipfilename);
return retval;
}
@@ -707,8 +707,8 @@ SignFile(FILE *outFile, FILE *inFile, CERTCertificate *cert)
static int
generate_SF_file(char *manifile, char *who)
{
- FILE *sf;
- FILE *mf;
+ FILE *sfFile;
+ FILE *mfFile;
long r1, r2, r3;
char whofile[FNSIZE];
char *buf, *name = NULL;
@@ -718,12 +718,12 @@ generate_SF_file(char *manifile, char *who)
strcpy(whofile, who);
- if ((mf = fopen(manifile, "rb")) == NULL) {
+ if ((mfFile = fopen(manifile, "rb")) == NULL) {
perror(manifile);
exit(ERRX);
}
- if ((sf = fopen(whofile, "wb")) == NULL) {
+ if ((sfFile = fopen(whofile, "wb")) == NULL) {
perror(who);
exit(ERRX);
}
@@ -736,11 +736,11 @@ generate_SF_file(char *manifile, char *who)
if (buf == NULL || name == NULL)
out_of_memory();
- fprintf(sf, "Signature-Version: 1.0\n");
- fprintf(sf, "Created-By: %s\n", CREATOR);
- fprintf(sf, "Comments: %s\n", BREAKAGE);
+ fprintf(sfFile, "Signature-Version: 1.0\n");
+ fprintf(sfFile, "Created-By: %s\n", CREATOR);
+ fprintf(sfFile, "Comments: %s\n", BREAKAGE);
- if (fgets(buf, BUFSIZ, mf) == NULL) {
+ if (fgets(buf, BUFSIZ, mfFile) == NULL) {
PR_fprintf(errorFD, "%s: empty manifest file!\n", PROGRAM_NAME);
errorCount++;
exit(ERRX);
@@ -752,15 +752,15 @@ generate_SF_file(char *manifile, char *who)
exit(ERRX);
}
- fseek(mf, 0L, SEEK_SET);
+ fseek(mfFile, 0L, SEEK_SET);
/* Process blocks of headers, and calculate their hashen */
while (1) {
/* Beginning range */
- r1 = ftell(mf);
+ r1 = ftell(mfFile);
- if (fgets(name, BUFSIZ, mf) == NULL)
+ if (fgets(name, BUFSIZ, mfFile) == NULL)
break;
line++;
@@ -774,46 +774,46 @@ generate_SF_file(char *manifile, char *who)
}
r2 = r1;
- while (fgets(buf, BUFSIZ, mf)) {
+ while (fgets(buf, BUFSIZ, mfFile)) {
if (*buf == 0 || *buf == '\n' || *buf == '\r')
break;
line++;
/* Ending range for hashing */
- r2 = ftell(mf);
+ r2 = ftell(mfFile);
}
- r3 = ftell(mf);
+ r3 = ftell(mfFile);
if (r1) {
- fprintf(sf, "\n");
- fprintf(sf, "%s", name);
+ fprintf(sfFile, "\n");
+ fprintf(sfFile, "%s", name);
}
- calculate_MD5_range(mf, r1, r2, &dig);
+ calculate_MD5_range(mfFile, r1, r2, &dig);
if (optimize == 0) {
- fprintf(sf, "Digest-Algorithms: MD5 SHA1\n");
+ fprintf(sfFile, "Digest-Algorithms: MD5 SHA1\n");
md5 = BTOA_DataToAscii(dig.md5, MD5_LENGTH);
- fprintf(sf, "MD5-Digest: %s\n", md5);
+ fprintf(sfFile, "MD5-Digest: %s\n", md5);
PORT_Free(md5);
}
sha1 = BTOA_DataToAscii(dig.sha1, SHA1_LENGTH);
- fprintf(sf, "SHA1-Digest: %s\n", sha1);
+ fprintf(sfFile, "SHA1-Digest: %s\n", sha1);
PORT_Free(sha1);
/* restore normalcy after changing offset position */
- fseek(mf, r3, SEEK_SET);
+ fseek(mfFile, r3, SEEK_SET);
}
PORT_Free(buf);
PORT_Free(name);
- fclose(sf);
- fclose(mf);
+ fclose(sfFile);
+ fclose(mfFile);
return 0;
}
diff --git a/security/nss/cmd/signtool/zip.c b/security/nss/cmd/signtool/zip.c
index 35d5f5733f..aeb5d6c541 100644
--- a/security/nss/cmd/signtool/zip.c
+++ b/security/nss/cmd/signtool/zip.c
@@ -129,7 +129,7 @@ handle_zerror(int err, char *msg)
* been opened with JzipOpen.
*/
int
-JzipAdd(char *fullname, char *filename, ZIPfile *zipfile, int compression_level)
+JzipAdd(char *fullname, char *filename, ZIPfile *zipfile, int lvl)
{
ZIPentry *entry;
PRFileDesc *readfp;
@@ -319,7 +319,7 @@ JzipAdd(char *fullname, char *filename, ZIPfile *zipfile, int compression_level)
* It causes zlib to leave out its headers and footers, which don't
* work in PKZIP files.
*/
- err = deflateInit2(&zstream, compression_level, Z_DEFLATED,
+ err = deflateInit2(&zstream, lvl, Z_DEFLATED,
-MAX_WBITS, 8 /*default*/, Z_DEFAULT_STRATEGY);
if (err != Z_OK) {
handle_zerror(err, zstream.msg);
diff --git a/security/nss/cmd/smimetools/cmsutil.c b/security/nss/cmd/smimetools/cmsutil.c
index fe17f26a48..7106521c12 100644
--- a/security/nss/cmd/smimetools/cmsutil.c
+++ b/security/nss/cmd/smimetools/cmsutil.c
@@ -68,7 +68,7 @@ DigestFile(PLArenaPool *poolp, SECItem ***digests, SECItem *input,
}
static void
-Usage(char *progName)
+Usage(void)
{
fprintf(stderr,
"Usage: %s [-C|-D|-E|-O|-S] [<options>] [-d dbdir] [-u certusage]\n"
@@ -280,7 +280,6 @@ decode(FILE *out, SECItem *input, const struct decodeOptionsStr *decodeOptions)
** or might be an invalid message, such as a QA test message
** or a message from an attacker.
*/
- SECStatus rv;
rv = NSS_CMSSignedData_VerifyCertsOnly(sigd,
decodeOptions->options->certHandle,
decodeOptions->options->certUsage);
@@ -1127,7 +1126,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -G only supported with option -S.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
signOptions.signingTime = PR_TRUE;
@@ -1137,7 +1136,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -H only supported with option -S.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
decodeOptions.suppressContent = PR_TRUE;
@@ -1167,7 +1166,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -N only supported with option -S.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
signOptions.nickname = PORT_Strdup(optstate->value);
@@ -1180,7 +1179,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -P only supported with option -S.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
signOptions.smimeProfile = PR_TRUE;
@@ -1193,7 +1192,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -T only supported with option -S.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
signOptions.detached = PR_TRUE;
@@ -1203,7 +1202,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -Y only supported with option -S.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
signOptions.encryptionKeyPreferenceNick = strdup(optstate->value);
@@ -1214,7 +1213,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -b only supported with option -D.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
batch = PR_TRUE;
@@ -1225,7 +1224,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -c only supported with option -D.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
contentFile = PR_Open(optstate->value, PR_RDONLY, 006600);
@@ -1261,7 +1260,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -h only supported with option -D.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
decodeOptions.headerLevel = atoi(optstate->value);
@@ -1288,7 +1287,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -k only supported with option -D.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
decodeOptions.keepCerts = PR_TRUE;
@@ -1299,7 +1298,7 @@ main(int argc, char **argv)
fprintf(stderr,
"%s: option -n only supported with option -D.\n",
progName);
- Usage(progName);
+ Usage();
exit(1);
}
decodeOptions.suppressContent = PR_TRUE;
@@ -1315,7 +1314,7 @@ main(int argc, char **argv)
case 'p':
if (!optstate->value) {
fprintf(stderr, "%s: option -p must have a value.\n", progName);
- Usage(progName);
+ Usage();
exit(1);
}
@@ -1325,7 +1324,7 @@ main(int argc, char **argv)
case 'f':
if (!optstate->value) {
fprintf(stderr, "%s: option -f must have a value.\n", progName);
- Usage(progName);
+ Usage();
exit(1);
}
@@ -1335,7 +1334,7 @@ main(int argc, char **argv)
case 'r':
if (!optstate->value) {
fprintf(stderr, "%s: option -r must have a value.\n", progName);
- Usage(progName);
+ Usage();
exit(1);
}
envelopeOptions.recipients = ptrarray;
@@ -1368,11 +1367,11 @@ main(int argc, char **argv)
}
}
if (status == PL_OPT_BAD)
- Usage(progName);
+ Usage();
PL_DestroyOptState(optstate);
if (mode == UNKNOWN)
- Usage(progName);
+ Usage();
if (mode != CERTSONLY && !batch) {
rv = SECU_FileToItem(&input, inFile);
@@ -1529,7 +1528,7 @@ main(int argc, char **argv)
break;
default:
fprintf(stderr, "One of options -D, -S or -E must be set.\n");
- Usage(progName);
+ Usage();
exitstatus = 1;
}
diff --git a/security/nss/cmd/strsclnt/strsclnt.c b/security/nss/cmd/strsclnt/strsclnt.c
index 7d259bd0aa..bba53efac6 100644
--- a/security/nss/cmd/strsclnt/strsclnt.c
+++ b/security/nss/cmd/strsclnt/strsclnt.c
@@ -137,7 +137,7 @@ SECItem bigBuf;
fprintf
static void
-Usage(const char *progName)
+Usage(void)
{
fprintf(stderr,
"Usage: %s [-n nickname] [-p port] [-d dbdir] [-c connections]\n"
@@ -260,7 +260,6 @@ void
printSecurityInfo(PRFileDesc *fd)
{
CERTCertificate *cert = NULL;
- SSL3Statistics *ssl3stats = SSL_GetStatistics();
SECStatus result;
SSLChannelInfo channel;
SSLCipherSuiteInfo suite;
@@ -1095,7 +1094,6 @@ client_main(
while (0 != (ndx = *cipherString)) {
const char *startCipher = cipherString++;
int cipher = 0;
- SECStatus rv;
if (ndx == ':') {
cipher = hexchar_to_int(*cipherString++);
@@ -1353,7 +1351,7 @@ main(int argc, char **argv)
enabledVersions, &enabledVersions) !=
SECSuccess) {
fprintf(stderr, "Bad version specified.\n");
- Usage(progName);
+ Usage();
}
break;
@@ -1431,27 +1429,27 @@ main(int argc, char **argv)
case 0: /* positional parameter */
if (hostName) {
- Usage(progName);
+ Usage();
}
hostName = PL_strdup(optstate->value);
break;
default:
case '?':
- Usage(progName);
+ Usage();
break;
}
}
PL_DestroyOptState(optstate);
if (!hostName || status == PL_OPT_BAD)
- Usage(progName);
+ Usage();
if (fullhs != NO_FULLHS_PERCENTAGE && (fullhs < 0 || fullhs > 100 || NoReuse))
- Usage(progName);
+ Usage();
if (port == 0)
- Usage(progName);
+ Usage();
if (fileName)
readBigFile(fileName);
diff --git a/security/nss/cmd/symkeyutil/symkeyutil.c b/security/nss/cmd/symkeyutil/symkeyutil.c
index 4444568083..31ab4dda4c 100644
--- a/security/nss/cmd/symkeyutil/symkeyutil.c
+++ b/security/nss/cmd/symkeyutil/symkeyutil.c
@@ -1034,10 +1034,10 @@ main(int argc, char **argv)
char *targetName = symKeyUtil.options[opt_TargetToken].arg;
PK11SymKey *newKey;
PK11SymKey *symKey = FindKey(slot, name, &keyID, &pwdata);
- char *keyName = PK11_GetSymKeyNickname(symKey);
+ char *keyName;
if (!symKey) {
- char *keyName = keyID.data ? BufToHex(&keyID) : PORT_Strdup(name);
+ keyName = keyID.data ? BufToHex(&keyID) : PORT_Strdup(name);
PR_fprintf(PR_STDERR, "%s: Couldn't find key %s on %s\n",
progName, keyName, PK11_GetTokenName(slot));
PORT_Free(keyName);
@@ -1061,6 +1061,7 @@ main(int argc, char **argv)
PR_fprintf(PR_STDERR, "%s: Couldn't move the key \n", progName);
goto shutdown;
}
+ keyName = PK11_GetSymKeyNickname(symKey);
if (keyName) {
rv = PK11_SetSymKeyNickname(newKey, keyName);
if (rv != SECSuccess) {
diff --git a/security/nss/cmd/tstclnt/tstclnt.c b/security/nss/cmd/tstclnt/tstclnt.c
index 1ad99502bb..6f5a43146a 100644
--- a/security/nss/cmd/tstclnt/tstclnt.c
+++ b/security/nss/cmd/tstclnt/tstclnt.c
@@ -51,6 +51,7 @@
#define MAX_WAIT_FOR_SERVER 600
#define WAIT_INTERVAL 100
+#define ZERO_RTT_MAX (2 << 16)
#define EXIT_CODE_HANDSHAKE_FAILED 254
@@ -99,6 +100,7 @@ int renegotiationsDone = 0;
PRBool initializedServerSessionCache = PR_FALSE;
static char *progName;
+static const char *requestFile;
secuPWData pwdata = { PW_NONE, 0 };
@@ -172,7 +174,7 @@ printSecurityInfo(PRFileDesc *fd)
}
static void
-PrintUsageHeader(const char *progName)
+PrintUsageHeader()
{
fprintf(stderr,
"Usage: %s -h host [-a 1st_hs_name ] [-a 2nd_hs_name ] [-p port]\n"
@@ -186,7 +188,7 @@ PrintUsageHeader(const char *progName)
}
static void
-PrintParameterUsage(void)
+PrintParameterUsage()
{
fprintf(stderr, "%-20s Send different SNI name. 1st_hs_name - at first\n"
"%-20s handshake, 2nd_hs_name - at second handshake.\n"
@@ -259,17 +261,17 @@ PrintParameterUsage(void)
}
static void
-Usage(const char *progName)
+Usage()
{
- PrintUsageHeader(progName);
+ PrintUsageHeader();
PrintParameterUsage();
exit(1);
}
static void
-PrintCipherUsage(const char *progName)
+PrintCipherUsage()
{
- PrintUsageHeader(progName);
+ PrintUsageHeader();
fprintf(stderr, "%-20s Letter(s) chosen from the following list\n",
"-c ciphers");
fprintf(stderr,
@@ -303,7 +305,7 @@ milliPause(PRUint32 milli)
}
void
-disableAllSSLCiphers(void)
+disableAllSSLCiphers()
{
const PRUint16 *cipherSuites = SSL_GetImplementedCiphers();
int i = SSL_GetNumImplementedCiphers();
@@ -711,12 +713,18 @@ void
thread_main(void *arg)
{
PRFileDesc *ps = (PRFileDesc *)arg;
- PRFileDesc *std_in = PR_GetSpecialFD(PR_StandardInput);
+ PRFileDesc *std_in;
int wc, rc;
char buf[256];
+ if (requestFile) {
+ std_in = PR_Open(requestFile, PR_RDONLY, 0);
+ } else {
+ std_in = PR_GetSpecialFD(PR_StandardInput);
+ }
+
#ifdef WIN32
- {
+ if (!requestFile) {
/* Put stdin into O_BINARY mode
** or else incoming \r\n's will become \n's.
*/
@@ -737,6 +745,9 @@ thread_main(void *arg)
wc = PR_Send(ps, buf, rc, 0, maxInterval);
} while (wc == rc);
PR_Close(ps);
+ if (requestFile) {
+ PR_Close(std_in);
+ }
}
#endif
@@ -844,7 +855,7 @@ separateReqHeader(const PRFileDesc *outFd, const char *buf, const int nb,
} else if (((c) >= 'A') && ((c) <= 'F')) { \
i = (c) - 'A' + 10; \
} else { \
- Usage(progName); \
+ Usage(); \
}
static SECStatus
@@ -915,22 +926,22 @@ char *hs1SniHostName = NULL;
char *hs2SniHostName = NULL;
PRUint16 portno = 443;
int override = 0;
-char *requestString = NULL;
-PRInt32 requestStringLen = 0;
-PRBool requestSent = PR_FALSE;
PRBool enableZeroRtt = PR_FALSE;
+PRUint8 *zeroRttData;
+unsigned int zeroRttLen = 0;
PRBool enableAltServerHello = PR_FALSE;
PRBool useDTLS = PR_FALSE;
PRBool actAsServer = PR_FALSE;
PRBool stopAfterHandshake = PR_FALSE;
PRBool requestToExit = PR_FALSE;
char *versionString = NULL;
+PRBool handshakeComplete = PR_FALSE;
static int
-writeBytesToServer(PRFileDesc *s, const char *buf, int nb)
+writeBytesToServer(PRFileDesc *s, const PRUint8 *buf, int nb)
{
SECStatus rv;
- const char *bufp = buf;
+ const PRUint8 *bufp = buf;
PRPollDesc pollDesc;
pollDesc.in_flags = PR_POLL_WRITE | PR_POLL_EXCEPT;
@@ -944,12 +955,20 @@ writeBytesToServer(PRFileDesc *s, const char *buf, int nb)
if (cc < 0) {
PRErrorCode err = PR_GetError();
if (err != PR_WOULD_BLOCK_ERROR) {
- SECU_PrintError(progName,
- "write to SSL socket failed");
+ SECU_PrintError(progName, "write to SSL socket failed");
return 254;
}
cc = 0;
}
+ FPRINTF(stderr, "%s: %d bytes written\n", progName, cc);
+ if (enableZeroRtt && !handshakeComplete) {
+ if (zeroRttLen + cc > ZERO_RTT_MAX) {
+ SECU_PrintError(progName, "too much early data to save");
+ return -1;
+ }
+ PORT_Memcpy(zeroRttData + zeroRttLen, bufp, cc);
+ zeroRttLen += cc;
+ }
bufp += cc;
nb -= cc;
if (nb <= 0)
@@ -969,8 +988,7 @@ writeBytesToServer(PRFileDesc *s, const char *buf, int nb)
progName);
cc = PR_Poll(&pollDesc, 1, PR_INTERVAL_NO_TIMEOUT);
if (cc < 0) {
- SECU_PrintError(progName,
- "PR_Poll failed");
+ SECU_PrintError(progName, "PR_Poll failed");
return -1;
}
FPRINTF(stderr,
@@ -993,7 +1011,7 @@ handshakeCallback(PRFileDesc *fd, void *client_data)
SSL_ReHandshake(fd, (renegotiationsToDo < 2));
++renegotiationsDone;
}
- if (requestString && requestSent) {
+ if (zeroRttLen) {
/* This data was sent in 0-RTT. */
SSLChannelInfo info;
SECStatus rv;
@@ -1003,29 +1021,30 @@ handshakeCallback(PRFileDesc *fd, void *client_data)
return;
if (!info.earlyDataAccepted) {
- FPRINTF(stderr, "Early data rejected. Re-sending\n");
- writeBytesToServer(fd, requestString, requestStringLen);
+ FPRINTF(stderr, "Early data rejected. Re-sending %d bytes\n",
+ zeroRttLen);
+ writeBytesToServer(fd, zeroRttData, zeroRttLen);
+ zeroRttLen = 0;
}
}
if (stopAfterHandshake) {
requestToExit = PR_TRUE;
}
+ handshakeComplete = PR_TRUE;
}
-#define REQUEST_WAITING (requestString && !requestSent)
-
static SECStatus
-installServerCertificate(PRFileDesc *s, char *nickname)
+installServerCertificate(PRFileDesc *s, char *nick)
{
CERTCertificate *cert;
SECKEYPrivateKey *privKey = NULL;
- if (!nickname) {
+ if (!nick) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
- cert = PK11_FindCertFromNickname(nickname, &pwdata);
+ cert = PK11_FindCertFromNickname(nick, &pwdata);
if (cert == NULL) {
return SECFailure;
}
@@ -1129,20 +1148,19 @@ connectToServer(PRFileDesc *s, PRPollDesc *pollset)
}
static int
-run(void)
+run()
{
int headerSeparatorPtrnId = 0;
int error = 0;
SECStatus rv;
PRStatus status;
PRInt32 filesReady;
- int npds;
PRFileDesc *s = NULL;
PRFileDesc *std_out;
- PRPollDesc pollset[2];
+ PRPollDesc pollset[2] = { { 0 }, { 0 } };
PRBool wrStarted = PR_FALSE;
- requestSent = PR_FALSE;
+ handshakeComplete = PR_FALSE;
/* Create socket */
if (useDTLS) {
@@ -1225,19 +1243,18 @@ run(void)
cipherString++;
} else {
if (!isalpha(ndx))
- Usage(progName);
+ Usage();
ndx = tolower(ndx) - 'a';
if (ndx < PR_ARRAY_SIZE(ssl3CipherSuites)) {
cipher = ssl3CipherSuites[ndx];
}
}
if (cipher > 0) {
- SECStatus status;
- status = SSL_CipherPrefSet(s, cipher, SSL_ALLOWED);
- if (status != SECSuccess)
+ rv = SSL_CipherPrefSet(s, cipher, SSL_ALLOWED);
+ if (rv != SECSuccess)
SECU_PrintError(progName, "SSL_CipherPrefSet()");
} else {
- Usage(progName);
+ Usage();
}
}
PORT_Free(cstringSaved);
@@ -1394,7 +1411,6 @@ run(void)
/* Try to connect to the server */
rv = connectToServer(s, pollset);
if (rv != SECSuccess) {
- ;
error = 1;
goto done;
}
@@ -1406,13 +1422,18 @@ run(void)
pollset[SSOCK_FD].in_flags |= (clientSpeaksFirst ? 0 : PR_POLL_READ);
else
pollset[SSOCK_FD].in_flags |= PR_POLL_READ;
- pollset[STDIN_FD].fd = PR_GetSpecialFD(PR_StandardInput);
- if (!REQUEST_WAITING) {
- pollset[STDIN_FD].in_flags = PR_POLL_READ;
- npds = 2;
+ if (requestFile) {
+ pollset[STDIN_FD].fd = PR_Open(requestFile, PR_RDONLY, 0);
+ if (!pollset[STDIN_FD].fd) {
+ fprintf(stderr, "%s: unable to open input file: %s\n",
+ progName, requestFile);
+ error = 1;
+ goto done;
+ }
} else {
- npds = 1;
+ pollset[STDIN_FD].fd = PR_GetSpecialFD(PR_StandardInput);
}
+ pollset[STDIN_FD].in_flags = PR_POLL_READ;
std_out = PR_GetSpecialFD(PR_StandardOutput);
#if defined(WIN32) || defined(OS2)
@@ -1458,10 +1479,9 @@ run(void)
requestToExit = PR_FALSE;
FPRINTF(stderr, "%s: ready...\n", progName);
while (!requestToExit &&
- ((pollset[SSOCK_FD].in_flags | pollset[STDIN_FD].in_flags) ||
- REQUEST_WAITING)) {
- char buf[4000]; /* buffer for stdin */
- int nb; /* num bytes read from stdin. */
+ (pollset[SSOCK_FD].in_flags || pollset[STDIN_FD].in_flags)) {
+ PRUint8 buf[4000]; /* buffer for stdin */
+ int nb; /* num bytes read from stdin. */
rv = restartHandshakeAfterServerCertIfNeeded(s, &serverCertAuth,
override);
@@ -1475,7 +1495,8 @@ run(void)
pollset[STDIN_FD].out_flags = 0;
FPRINTF(stderr, "%s: about to call PR_Poll !\n", progName);
- filesReady = PR_Poll(pollset, npds, PR_INTERVAL_NO_TIMEOUT);
+ filesReady = PR_Poll(pollset, PR_ARRAY_SIZE(pollset),
+ PR_INTERVAL_NO_TIMEOUT);
if (filesReady < 0) {
SECU_PrintError(progName, "select failed");
error = 1;
@@ -1497,14 +1518,6 @@ run(void)
"%s: PR_Poll returned 0x%02x for socket out_flags.\n",
progName, pollset[SSOCK_FD].out_flags);
}
- if (REQUEST_WAITING) {
- error = writeBytesToServer(s, requestString, requestStringLen);
- if (error) {
- goto done;
- }
- requestSent = PR_TRUE;
- pollset[SSOCK_FD].in_flags = PR_POLL_READ;
- }
if (pollset[STDIN_FD].out_flags & PR_POLL_READ) {
/* Read from stdin and write to socket */
nb = PR_Read(pollset[STDIN_FD].fd, buf, sizeof(buf));
@@ -1518,6 +1531,8 @@ run(void)
} else if (nb == 0) {
/* EOF on stdin, stop polling stdin for read. */
pollset[STDIN_FD].in_flags = 0;
+ if (actAsServer)
+ requestToExit = PR_TRUE;
} else {
error = writeBytesToServer(s, buf, nb);
if (error) {
@@ -1532,12 +1547,12 @@ run(void)
"%s: PR_Poll returned 0x%02x for socket out_flags.\n",
progName, pollset[SSOCK_FD].out_flags);
}
- if ((pollset[SSOCK_FD].out_flags & PR_POLL_READ) ||
- (pollset[SSOCK_FD].out_flags & PR_POLL_ERR)
#ifdef PR_POLL_HUP
- || (pollset[SSOCK_FD].out_flags & PR_POLL_HUP)
+#define POLL_RECV_FLAGS (PR_POLL_READ | PR_POLL_ERR | PR_POLL_HUP)
+#else
+#define POLL_RECV_FLAGS (PR_POLL_READ | PR_POLL_ERR)
#endif
- ) {
+ if (pollset[SSOCK_FD].out_flags & POLL_RECV_FLAGS) {
/* Read from socket and write to stdout */
nb = PR_Recv(pollset[SSOCK_FD].fd, buf, sizeof buf, 0, maxInterval);
FPRINTF(stderr, "%s: Read from server %d bytes\n", progName, nb);
@@ -1554,7 +1569,7 @@ run(void)
if (skipProtoHeader != PR_TRUE || wrStarted == PR_TRUE) {
PR_Write(std_out, buf, nb);
} else {
- separateReqHeader(std_out, buf, nb, &wrStarted,
+ separateReqHeader(std_out, (char *)buf, nb, &wrStarted,
&headerSeparatorPtrnId);
}
if (verbose)
@@ -1568,42 +1583,10 @@ done:
if (s) {
PR_Close(s);
}
-
- return error;
-}
-
-PRInt32
-ReadFile(const char *filename, char **data)
-{
- char *ret = NULL;
- char buf[8192];
- unsigned int len = 0;
- PRStatus rv;
-
- PRFileDesc *fd = PR_Open(filename, PR_RDONLY, 0);
- if (!fd)
- return -1;
-
- for (;;) {
- rv = PR_Read(fd, buf, sizeof(buf));
- if (rv < 0) {
- PR_Free(ret);
- return rv;
- }
-
- if (!rv)
- break;
-
- ret = PR_Realloc(ret, len + rv);
- if (!ret) {
- return -1;
- }
- PORT_Memcpy(ret + len, buf, rv);
- len += rv;
+ if (requestFile && pollset[STDIN_FD].fd) {
+ PR_Close(pollset[STDIN_FD].fd);
}
-
- *data = ret;
- return len;
+ return error;
}
int
@@ -1653,26 +1636,22 @@ main(int argc, char **argv)
switch (optstate->option) {
case '?':
default:
- Usage(progName);
+ Usage();
break;
case '4':
allowIPv6 = PR_FALSE;
if (!allowIPv4)
- Usage(progName);
+ Usage();
break;
case '6':
allowIPv4 = PR_FALSE;
if (!allowIPv6)
- Usage(progName);
+ Usage();
break;
case 'A':
- requestStringLen = ReadFile(optstate->value, &requestString);
- if (requestStringLen < 0) {
- fprintf(stderr, "Couldn't read file %s\n", optstate->value);
- exit(1);
- }
+ requestFile = PORT_Strdup(optstate->value);
break;
case 'C':
@@ -1735,7 +1714,7 @@ main(int argc, char **argv)
actAsServer = 1;
} else {
if (strcmp(optstate->value, "client")) {
- Usage(progName);
+ Usage();
}
}
break;
@@ -1768,16 +1747,21 @@ main(int argc, char **argv)
if (!strcmp(optstate->value, "alt-server-hello")) {
enableAltServerHello = PR_TRUE;
} else {
- Usage(progName);
+ Usage();
}
break;
case 'Y':
- PrintCipherUsage(progName);
+ PrintCipherUsage();
exit(0);
break;
case 'Z':
enableZeroRtt = PR_TRUE;
+ zeroRttData = PORT_ZAlloc(ZERO_RTT_MAX);
+ if (!zeroRttData) {
+ fprintf(stderr, "Unable to allocate buffer for 0-RTT\n");
+ exit(1);
+ }
break;
case 'a':
@@ -1786,7 +1770,7 @@ main(int argc, char **argv)
} else if (!hs2SniHostName) {
hs2SniHostName = PORT_Strdup(optstate->value);
} else {
- Usage(progName);
+ Usage();
}
break;
@@ -1875,7 +1859,7 @@ main(int argc, char **argv)
if (rv != SECSuccess) {
PL_DestroyOptState(optstate);
fprintf(stderr, "Bad group specified.\n");
- Usage(progName);
+ Usage();
}
break;
}
@@ -1889,18 +1873,18 @@ main(int argc, char **argv)
enabledVersions, &enabledVersions) !=
SECSuccess) {
fprintf(stderr, "Bad version specified.\n");
- Usage(progName);
+ Usage();
}
PORT_Free(versionString);
}
if (optstatus == PL_OPT_BAD) {
- Usage(progName);
+ Usage();
}
if (!host || !portno) {
fprintf(stderr, "%s: parameters -h and -p are mandatory\n", progName);
- Usage(progName);
+ Usage();
}
if (serverCertAuth.testFreshStatusFromSideChannel &&
@@ -2060,20 +2044,13 @@ done:
PR_Close(s);
}
- if (hs1SniHostName) {
- PORT_Free(hs1SniHostName);
- }
- if (hs2SniHostName) {
- PORT_Free(hs2SniHostName);
- }
- if (nickname) {
- PORT_Free(nickname);
- }
- if (pwdata.data) {
- PORT_Free(pwdata.data);
- }
+ PORT_Free((void *)requestFile);
+ PORT_Free(hs1SniHostName);
+ PORT_Free(hs2SniHostName);
+ PORT_Free(nickname);
+ PORT_Free(pwdata.data);
PORT_Free(host);
- PORT_Free(requestString);
+ PORT_Free(zeroRttData);
if (enabledGroups) {
PORT_Free(enabledGroups);
diff --git a/security/nss/cmd/vfyserv/vfyserv.c b/security/nss/cmd/vfyserv/vfyserv.c
index aa648ad8c2..4234ecd09d 100644
--- a/security/nss/cmd/vfyserv/vfyserv.c
+++ b/security/nss/cmd/vfyserv/vfyserv.c
@@ -327,9 +327,7 @@ do_connects(void *a, int connection)
}
void
-client_main(unsigned short port,
- int connections,
- const char *hostName)
+client_main(int connections)
{
int i;
SECStatus secStatus;
@@ -553,7 +551,7 @@ main(int argc, char **argv)
}
}
- client_main(port, connections, hostName);
+ client_main(connections);
cleanup:
if (doOcspCheck) {
diff --git a/security/nss/cmd/vfyserv/vfyutil.c b/security/nss/cmd/vfyserv/vfyutil.c
index 2f1b532620..d3d8a206e7 100644
--- a/security/nss/cmd/vfyserv/vfyutil.c
+++ b/security/nss/cmd/vfyserv/vfyutil.c
@@ -310,13 +310,13 @@ myHandshakeCallback(PRFileDesc *socket, void *arg)
void
disableAllSSLCiphers(void)
{
- const PRUint16 *cipherSuites = SSL_ImplementedCiphers;
+ const PRUint16 *allSuites = SSL_ImplementedCiphers;
int i = SSL_NumImplementedCiphers;
SECStatus rv;
/* disable all the SSL3 cipher suites */
while (--i >= 0) {
- PRUint16 suite = cipherSuites[i];
+ PRUint16 suite = allSuites[i];
rv = SSL_CipherPrefSetDefault(suite, PR_FALSE);
if (rv != SECSuccess) {
fprintf(stderr,
diff --git a/security/nss/coreconf/Werror.mk b/security/nss/coreconf/Werror.mk
index 69155eb145..a569a497ce 100644
--- a/security/nss/coreconf/Werror.mk
+++ b/security/nss/coreconf/Werror.mk
@@ -48,9 +48,11 @@ ifndef WARNING_CFLAGS
else
# This tests to see if enabling the warning is possible before
# setting an option to disable it.
- disable_warning = $(shell $(CC) -x c -E -Werror -W$(1) /dev/null >/dev/null 2>&1 && echo -Wno-$(1))
+ set_warning = $(shell $(CC) -x c -E -Werror -W$(1) /dev/null >/dev/null 2>&1 && echo -W$(2)$(1))
+ enable_warning = $(call set_warning,$(1),)
+ disable_warning = $(call set_warning,$(1),no-)
- WARNING_CFLAGS = -Wall
+ WARNING_CFLAGS = -Wall $(call enable_warning,shadow)
ifdef CC_IS_CLANG
# -Qunused-arguments : clang objects to arguments that it doesn't understand
# and fixing this would require rearchitecture
diff --git a/security/nss/coreconf/config.mk b/security/nss/coreconf/config.mk
index 55d95c30ea..b62f6cef42 100644
--- a/security/nss/coreconf/config.mk
+++ b/security/nss/coreconf/config.mk
@@ -181,6 +181,10 @@ ifndef NSS_FORCE_FIPS
DEFINES += -DNSS_NO_INIT_SUPPORT
endif
+ifdef NSS_SEED_ONLY_DEV_URANDOM
+DEFINES += -DSEED_ONLY_DEV_URANDOM
+endif
+
# Avoid building object leak test code for optimized library
ifndef BUILD_OPT
ifdef PKIX_OBJECT_LEAK_TEST
diff --git a/security/nss/coreconf/coreconf.dep b/security/nss/coreconf/coreconf.dep
index 5182f75552..590d1bfaee 100644
--- a/security/nss/coreconf/coreconf.dep
+++ b/security/nss/coreconf/coreconf.dep
@@ -10,3 +10,4 @@
*/
#error "Do not include this header file."
+
diff --git a/security/nss/coreconf/nsinstall/pathsub.c b/security/nss/coreconf/nsinstall/pathsub.c
index a42a9f30a5..c31a946f0d 100644
--- a/security/nss/coreconf/nsinstall/pathsub.c
+++ b/security/nss/coreconf/nsinstall/pathsub.c
@@ -212,7 +212,7 @@ reversepath(char *inpath, char *name, int len, char *outpath)
xchdir("..");
} else {
cp -= 3;
- strncpy(cp, "../", 3);
+ memcpy(cp, "../", 3);
xchdir(buf);
}
}
diff --git a/security/nss/coreconf/werror.py b/security/nss/coreconf/werror.py
index c469c40029..0e2d41c63c 100644
--- a/security/nss/coreconf/werror.py
+++ b/security/nss/coreconf/werror.py
@@ -54,7 +54,7 @@ def main():
set_warning(w, 'no-')
print('-Qunused-arguments')
- # set_warning('shadow') # Bug 1309068
+ set_warning('shadow')
if __name__ == '__main__':
main()
diff --git a/security/nss/cpputil/databuffer.cc b/security/nss/cpputil/databuffer.cc
index d60ebccb34..1420d76b45 100644
--- a/security/nss/cpputil/databuffer.cc
+++ b/security/nss/cpputil/databuffer.cc
@@ -18,12 +18,12 @@
namespace nss_test {
-void DataBuffer::Assign(const uint8_t* data, size_t len) {
- if (data) {
- Allocate(len);
- memcpy(static_cast<void*>(data_), static_cast<const void*>(data), len);
+void DataBuffer::Assign(const uint8_t* d, size_t l) {
+ if (d) {
+ Allocate(l);
+ memcpy(static_cast<void*>(data_), static_cast<const void*>(d), l);
} else {
- assert(len == 0);
+ assert(l == 0);
data_ = nullptr;
len_ = 0;
}
diff --git a/security/nss/cpputil/databuffer.h b/security/nss/cpputil/databuffer.h
index 58e07efe19..5ec0350986 100644
--- a/security/nss/cpputil/databuffer.h
+++ b/security/nss/cpputil/databuffer.h
@@ -17,8 +17,8 @@ namespace nss_test {
class DataBuffer {
public:
DataBuffer() : data_(nullptr), len_(0) {}
- DataBuffer(const uint8_t* data, size_t len) : data_(nullptr), len_(0) {
- Assign(data, len);
+ DataBuffer(const uint8_t* d, size_t l) : data_(nullptr), len_(0) {
+ Assign(d, l);
}
DataBuffer(const DataBuffer& other) : data_(nullptr), len_(0) {
Assign(other);
@@ -32,17 +32,17 @@ class DataBuffer {
return *this;
}
- void Allocate(size_t len) {
+ void Allocate(size_t l) {
delete[] data_;
- data_ = new uint8_t[len ? len : 1]; // Don't depend on new [0].
- len_ = len;
+ data_ = new uint8_t[l ? l : 1]; // Don't depend on new [0].
+ len_ = l;
}
- void Truncate(size_t len) { len_ = (std::min)(len_, len); }
+ void Truncate(size_t l) { len_ = (std::min)(len_, l); }
void Assign(const DataBuffer& other) { Assign(other.data(), other.len()); }
- void Assign(const uint8_t* data, size_t len);
+ void Assign(const uint8_t* d, size_t l);
// Write will do a new allocation and expand the size of the buffer if needed.
// Returns the offset of the end of the write.
diff --git a/security/nss/cpputil/scoped_ptrs.h b/security/nss/cpputil/scoped_ptrs.h
index 8a0b4f5abe..6ffef4dd3f 100644
--- a/security/nss/cpputil/scoped_ptrs.h
+++ b/security/nss/cpputil/scoped_ptrs.h
@@ -45,6 +45,7 @@ struct ScopedDelete {
void operator()(SEC_PKCS12DecoderContext* dcx) {
SEC_PKCS12DecoderFinish(dcx);
}
+ void operator()(CERTDistNames* names) { CERT_FreeDistNames(names); }
};
template <class T>
@@ -78,6 +79,7 @@ SCOPED(PK11Context);
SCOPED(PK11GenericObject);
SCOPED(SSLResumptionTokenInfo);
SCOPED(SEC_PKCS12DecoderContext);
+SCOPED(CERTDistNames);
#undef SCOPED
diff --git a/security/nss/cpputil/tls_parser.cc b/security/nss/cpputil/tls_parser.cc
index e4c06aa910..efedd7a658 100644
--- a/security/nss/cpputil/tls_parser.cc
+++ b/security/nss/cpputil/tls_parser.cc
@@ -46,6 +46,21 @@ bool TlsParser::Read(DataBuffer* val, size_t len) {
return true;
}
+bool TlsParser::ReadFromMark(DataBuffer* val, size_t len, size_t mark) {
+ auto saved = offset_;
+ offset_ = mark;
+
+ if (remaining() < len) {
+ offset_ = saved;
+ return false;
+ }
+
+ val->Assign(ptr(), len);
+
+ offset_ = saved;
+ return true;
+}
+
bool TlsParser::ReadVariable(DataBuffer* val, size_t len_size) {
uint32_t len;
if (!Read(&len, len_size)) {
diff --git a/security/nss/cpputil/tls_parser.h b/security/nss/cpputil/tls_parser.h
index 436c11e765..56f562e073 100644
--- a/security/nss/cpputil/tls_parser.h
+++ b/security/nss/cpputil/tls_parser.h
@@ -123,6 +123,7 @@ class TlsParser {
bool Read(uint32_t* val, size_t size);
// Reads len bytes into dest buffer, overwriting it.
bool Read(DataBuffer* dest, size_t len);
+ bool ReadFromMark(DataBuffer* val, size_t len, size_t mark);
// Reads bytes into dest buffer, overwriting it. The number of bytes is
// determined by reading from len_size bytes from the stream first.
bool ReadVariable(DataBuffer* dest, size_t len_size);
diff --git a/security/nss/fuzz/fuzz.gyp b/security/nss/fuzz/fuzz.gyp
index ed1f53d585..69e1783190 100644
--- a/security/nss/fuzz/fuzz.gyp
+++ b/security/nss/fuzz/fuzz.gyp
@@ -44,6 +44,9 @@
# This is a static build of pk11wrap, softoken, and freebl.
'<(DEPTH)/lib/pk11wrap/pk11wrap.gyp:pk11wrap_static',
],
+ 'cflags_cc': [
+ '-Wno-error=shadow',
+ ],
'conditions': [
['fuzz_oss==0', {
'sources': [
diff --git a/security/nss/fuzz/tls_client_target.cc b/security/nss/fuzz/tls_client_target.cc
index e595509845..a5b2a2c5ff 100644
--- a/security/nss/fuzz/tls_client_target.cc
+++ b/security/nss/fuzz/tls_client_target.cc
@@ -87,15 +87,12 @@ static void SetupCallbacks(PRFileDesc* fd, ClientConfig* config) {
}
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t len) {
- static std::unique_ptr<NSSDatabase> db(new NSSDatabase());
+ std::unique_ptr<NSSDatabase> db(new NSSDatabase());
assert(db != nullptr);
EnableAllProtocolVersions();
std::unique_ptr<ClientConfig> config(new ClientConfig(data, len));
- // Clear the cache. We never want to resume as we couldn't reproduce that.
- SSL_ClearSessionCache();
-
// Reset the RNG state.
assert(RNG_RandomUpdate(NULL, 0) == SECSuccess);
@@ -114,6 +111,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t len) {
SetupCallbacks(ssl_fd, config.get());
DoHandshake(ssl_fd, false);
+ // Release all SIDs.
+ SSL_ClearSessionCache();
+
return 0;
}
diff --git a/security/nss/gtests/freebl_gtest/blake2b_unittest.cc b/security/nss/gtests/freebl_gtest/blake2b_unittest.cc
index e6b0c11576..ac9cca83fd 100644
--- a/security/nss/gtests/freebl_gtest/blake2b_unittest.cc
+++ b/security/nss/gtests/freebl_gtest/blake2b_unittest.cc
@@ -50,7 +50,7 @@ TEST_P(Blake2BKATUnkeyed, Unkeyed) {
TEST_P(Blake2BKATKeyed, Keyed) {
std::vector<uint8_t> values(BLAKE2B512_LENGTH);
SECStatus rv = BLAKE2B_MAC_HashBuf(values.data(), kat_data.data(),
- std::get<0>(GetParam()), key.data(),
+ std::get<0>(GetParam()), kat_key.data(),
BLAKE2B_KEY_SIZE);
ASSERT_EQ(SECSuccess, rv);
EXPECT_EQ(values, std::get<1>(GetParam()));
@@ -139,7 +139,7 @@ TEST_F(Blake2BTests, NullTest) {
EXPECT_EQ(std::get<1>(TestcasesUnkeyed[0]), digest);
digest = std::vector<uint8_t>(BLAKE2B512_LENGTH);
- rv = BLAKE2B_MAC_HashBuf(digest.data(), nullptr, 0, key.data(),
+ rv = BLAKE2B_MAC_HashBuf(digest.data(), nullptr, 0, kat_key.data(),
BLAKE2B_KEY_SIZE);
ASSERT_EQ(SECSuccess, rv);
EXPECT_EQ(std::get<1>(TestcasesKeyed[0]), digest);
diff --git a/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h b/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h
index 28921cc945..2d73a4ab55 100644
--- a/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h
+++ b/security/nss/gtests/freebl_gtest/kat/blake2b_kat.h
@@ -7,7 +7,7 @@
#include <vector>
#include <stdint.h>
-const std::vector<uint8_t> key = {
+const std::vector<uint8_t> kat_key = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
diff --git a/security/nss/gtests/nss_bogo_shim/config.cc b/security/nss/gtests/nss_bogo_shim/config.cc
index 2e6f7f7752..603bb60296 100644
--- a/security/nss/gtests/nss_bogo_shim/config.cc
+++ b/security/nss/gtests/nss_bogo_shim/config.cc
@@ -9,26 +9,37 @@
#include <queue>
#include <string>
-bool ConfigEntryBase::ParseInternal(std::queue<const char *> *args,
- std::string *out) {
- if (args->empty()) return false;
- *out = args->front();
- args->pop();
+bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args,
+ std::vector<int> &out) {
+ if (args.empty()) return false;
+
+ char *endptr;
+ out.push_back(strtol(args.front(), &endptr, 10));
+ args.pop();
+
+ return !*endptr;
+}
+
+bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args,
+ std::string &out) {
+ if (args.empty()) return false;
+ out = args.front();
+ args.pop();
return true;
}
-bool ConfigEntryBase::ParseInternal(std::queue<const char *> *args, int *out) {
- if (args->empty()) return false;
+bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args, int &out) {
+ if (args.empty()) return false;
char *endptr;
- *out = strtol(args->front(), &endptr, 10);
- args->pop();
+ out = strtol(args.front(), &endptr, 10);
+ args.pop();
return !*endptr;
}
-bool ConfigEntryBase::ParseInternal(std::queue<const char *> *args, bool *out) {
- *out = true;
+bool ConfigEntryBase::ParseInternal(std::queue<const char *> &args, bool &out) {
+ out = true;
return true;
}
@@ -51,7 +62,7 @@ Config::Status Config::ParseArgs(int argc, char **argv) {
if (e == entries_.end()) {
return kUnknownFlag;
}
- if (!e->second->Parse(&args)) return kMalformedArgument;
+ if (!e->second->Parse(args)) return kMalformedArgument;
}
return kOK;
diff --git a/security/nss/gtests/nss_bogo_shim/config.h b/security/nss/gtests/nss_bogo_shim/config.h
index 822df65b3a..0e7fb5ed58 100644
--- a/security/nss/gtests/nss_bogo_shim/config.h
+++ b/security/nss/gtests/nss_bogo_shim/config.h
@@ -23,18 +23,19 @@
// Abstract base class for a given config flag.
class ConfigEntryBase {
public:
- ConfigEntryBase(const std::string& name, const std::string& type)
- : name_(name), type_(type) {}
+ ConfigEntryBase(const std::string& nm, const std::string& typ)
+ : name_(nm), type_(typ) {}
virtual ~ConfigEntryBase() {}
const std::string& type() const { return type_; }
- virtual bool Parse(std::queue<const char*>* args) = 0;
+ virtual bool Parse(std::queue<const char*>& args) = 0;
protected:
- bool ParseInternal(std::queue<const char*>* args, std::string* out);
- bool ParseInternal(std::queue<const char*>* args, int* out);
- bool ParseInternal(std::queue<const char*>* args, bool* out);
+ bool ParseInternal(std::queue<const char*>& args, std::vector<int>& out);
+ bool ParseInternal(std::queue<const char*>& args, std::string& out);
+ bool ParseInternal(std::queue<const char*>& args, int& out);
+ bool ParseInternal(std::queue<const char*>& args, bool& out);
const std::string name_;
const std::string type_;
@@ -48,8 +49,8 @@ class ConfigEntry : public ConfigEntryBase {
: ConfigEntryBase(name, typeid(T).name()), value_(init) {}
T get() const { return value_; }
- bool Parse(std::queue<const char*>* args) {
- return ParseInternal(args, &value_);
+ bool Parse(std::queue<const char*>& args) {
+ return ParseInternal(args, value_);
}
private:
diff --git a/security/nss/gtests/nss_bogo_shim/config.json b/security/nss/gtests/nss_bogo_shim/config.json
index 03f8754662..6dc155befa 100644
--- a/security/nss/gtests/nss_bogo_shim/config.json
+++ b/security/nss/gtests/nss_bogo_shim/config.json
@@ -1,69 +1,16 @@
{
"DisabledTests": {
"### These tests break whenever we rev versions, so just leave them here for easy uncommenting":"",
- "SendWarningAlerts-Pass":"BoringSSL updated",
- "SendBogusAlertType":"BoringSSL updated",
- "SendEmptyRecords-Pass":"BoringSSL updated",
- "ExtraCompressionMethods-TLS12":"BoringSSL updated",
- "SendSNIWarningAlert":"BoringSSL updated",
- "NoNullCompression-TLS12":"BoringSSL updated",
- "InvalidCompressionMethod":"BoringSSL updated",
- "SupportTicketsWithSessionID":"BoringSSL updated",
- "NoSharedCipher":"BoringSSL updated",
- "ServerHelloBogusCipher":"BoringSSL updated",
- "ClientHelloVersionTooHigh":"BoringSSL updated",
- "ServerAuth-SignatureType":"BoringSSL updated",
- "ECDSACurveMismatch-Verify-TLS12":"BoringSSL updated",
- "UnknownExtension-Client":"BoringSSL updated",
- "UnofferedExtension-Client":"BoringSSL updated",
- "SendClientVersion-RSA":"BoringSSL updated",
- "SupportedCurves-ServerHello-TLS12":"BoringSSL updated",
- "Basic-Client*Sync":"BoringSSL updated",
- "Resume-Client-CipherMismatch":"BoringSSL updated",
- "ClientAuth-SignatureType":"BoringSSL updated",
- "Agree-Digest-Default":"BoringSSL updated",
- "Basic-Server*Sync":"BoringSSL updated",
- "ClientAuth-*-Sync":"BoringSSL updated",
- "RSA-PSS-Default*":"BoringSSL updated",
- "Renegotiate-Server-NoExt*":"BoringSSL updated",
- "Downgrade-TLS12*":"BoringSSL updated",
- "MaxCBCPadding":"BoringSSL updated",
- "UnknownCipher":"BoringSSL updated",
- "LargeMessage":"BoringSSL updated",
- "NoCommonCurves":"BoringSSL updated",
- "UnknownCurve":"BoringSSL updated",
- "SessionTicketsDisabled*":"BoringSSL updated",
- "BadFinished-*":"BoringSSL updated",
- "ServerSkipCertificateVerify":"BoringSSL updated",
- "*VersionTolerance":"BoringSSL updated",
- "ConflictingVersionNegotiation*":"BoringSSL updated",
- "Ed25519DefaultDisable*":"BoringSSL updated",
- "*SHA1-Fallback*":"BoringSSL updated",
- "ExtendedMasterSecret-NoToNo*":"BoringSSL updated",
- "ServerNameExtensionClientMissing*":"BoringSSL updated",
- "NoClientCertificate*":"BoringSSL updated",
- "ServerCipherFilter*":"BoringSSL updated",
- "*FallbackSCSV*":"BoringSSL updated",
- "LooseInitialRecordVersion*":"BoringSSL updated",
- "ALPNClient*":"BoringSSL updated",
- "MinimumVersion*":"BoringSSL updated",
- "VersionNegotiation*":"BoringSSL updated",
- "*Client-ClientAuth*":"BoringSSL updated",
- "*Server-ClientAuth*":"BoringSSL updated",
- "NoExtendedMasterSecret*":"BoringSSL updated",
- "PointFormat*":"BoringSSL updated",
- "*Sync-SplitHandshakeRecords*":"BoringSSL updated",
- "*Sync-PackHandshakeFlight*":"BoringSSL updated",
- "TicketSessionIDLength*":"BoringSSL updated",
- "*LargeRecord*":"BoringSSL updated",
- "WrongMessageType-NewSessionTicket":"BoringSSL updated",
- "WrongMessageType*Certificate*":"BoringSSL updated",
- "WrongMessageType*Client*":"BoringSSL updated",
- "WrongMessageType*Server*":"BoringSSL updated",
- "WrongMessageType*DTLS":"BoringSSL updated",
- "GarbageCertificate*":"BoringSSL updated",
- "EmptyExtensions*":"BoringSSL updated",
- "*OmitExtensions*":"BoringSSL updated",
+ "ServerBogusVersion":"Check that SH.legacy_version=TLS12 when the server picks TLS 1.3 (Bug 1443761)",
+ "DummyPQPadding-Server*":"Boring is testing a dummy PQ padding extension",
+ "VerifyPreferences-Enforced":"NSS sends alerts in response to errors in protected handshake messages in the clear",
+ "Draft-Downgrade-Server":"Boring implements a draft downgrade sentinel used for measurements.",
+ "FilterExtraAlgorithms":"NSS doesn't allow sending unsupported signature algorithms",
+ "SendBogusAlertType":"Unexpected TLS alerts should abort connections (Bug 1438263)",
+ "VerifyPreferences-Ed25519":"Add Ed25519 support (Bug 1325335)",
+ "Ed25519DefaultDisable*":"Add Ed25519 support (Bug 1325335)",
+ "ServerCipherFilter*":"Add Ed25519 support (Bug 1325335)",
+ "GarbageCertificate*":"Send bad_certificate alert when certificate parsing fails (Bug 1441565)",
"SupportedVersionSelection-TLS12":"Should maybe reject TLS 1.2 in SH.supported_versions (Bug 1438266)",
"*TLS13*":"(NSS=19, BoGo=18)",
"*HelloRetryRequest*":"(NSS=19, BoGo=18)",
@@ -108,7 +55,6 @@
"WrongMessageType-TLS13-ServerCertificateVerify":"nss updated/broken",
"WrongMessageType-TLS13-ServerCertificate":"nss updated/broken",
"WrongMessageType-TLS13-ServerFinished":"nss updated/broken",
- "EncryptedExtensionsWithKeyShare":"nss updated/broken",
"EmptyEncryptedExtensions":"nss updated/broken",
"TrailingMessageData-*": "Bug 1304575",
"DuplicateKeyShares":"Bug 1304578",
diff --git a/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc b/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc
index e12714e8d1..72dbd57711 100644
--- a/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc
+++ b/security/nss/gtests/nss_bogo_shim/nss_bogo_shim.cc
@@ -5,6 +5,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "config.h"
+#include <algorithm>
#include <cstdlib>
#include <iostream>
#include <memory>
@@ -90,9 +91,14 @@ class TestAgent {
PRStatus prv;
PRNetAddr addr;
- prv = PR_StringToNetAddr("127.0.0.1", &addr);
+ // Try IPv6 first.
+ prv = PR_StringToNetAddr("::1", &addr);
if (prv != PR_SUCCESS) {
- return false;
+ // If that fails, try IPv4.
+ prv = PR_StringToNetAddr("127.0.0.1", &addr);
+ if (prv != PR_SUCCESS) {
+ return false;
+ }
}
addr.inet.port = PR_htons(cfg_.get<int>("port"));
@@ -256,7 +262,11 @@ class TestAgent {
}
bool SetupOptions() {
- SECStatus rv = SSL_OptionSet(ssl_fd_, SSL_ENABLE_SESSION_TICKETS, PR_TRUE);
+ SECStatus rv =
+ SSL_OptionSet(ssl_fd_, SSL_ENABLE_TLS13_COMPAT_MODE, PR_TRUE);
+ if (rv != SECSuccess) return false;
+
+ rv = SSL_OptionSet(ssl_fd_, SSL_ENABLE_SESSION_TICKETS, PR_TRUE);
if (rv != SECSuccess) return false;
SSLVersionRange vrange;
@@ -287,6 +297,26 @@ class TestAgent {
if (rv != SECSuccess) return false;
}
+ // Set supported signature schemes.
+ auto sign_prefs = cfg_.get<std::vector<int>>("signing-prefs");
+ auto verify_prefs = cfg_.get<std::vector<int>>("verify-prefs");
+ if (sign_prefs.empty()) {
+ sign_prefs = verify_prefs;
+ } else if (!verify_prefs.empty()) {
+ return false; // Both shouldn't be set.
+ }
+ if (!sign_prefs.empty()) {
+ std::vector<SSLSignatureScheme> sig_schemes;
+ std::transform(
+ sign_prefs.begin(), sign_prefs.end(), std::back_inserter(sig_schemes),
+ [](int scheme) { return static_cast<SSLSignatureScheme>(scheme); });
+
+ rv = SSL_SignatureSchemePrefSet(
+ ssl_fd_, sig_schemes.data(),
+ static_cast<unsigned int>(sig_schemes.size()));
+ if (rv != SECSuccess) return false;
+ }
+
if (cfg_.get<bool>("fallback-scsv")) {
rv = SSL_OptionSet(ssl_fd_, SSL_ENABLE_FALLBACK_SCSV, PR_TRUE);
if (rv != SECSuccess) return false;
@@ -410,7 +440,7 @@ class TestAgent {
size_t left = sizeof(block);
while (left) {
- int32_t rv = PR_Read(ssl_fd_, block, left);
+ rv = PR_Read(ssl_fd_, block, left);
if (rv < 0) {
std::cerr << "Failure reading\n";
return SECFailure;
@@ -481,6 +511,24 @@ class TestAgent {
}
}
+ auto sig_alg = cfg_.get<int>("expect-peer-signature-algorithm");
+ if (sig_alg) {
+ SSLChannelInfo info;
+ rv = SSL_GetChannelInfo(ssl_fd_, &info, sizeof(info));
+ if (rv != SECSuccess) {
+ PRErrorCode err = PR_GetError();
+ std::cerr << "SSL_GetChannelInfo failed with error=" << FormatError(err)
+ << std::endl;
+ return SECFailure;
+ }
+
+ auto expected = static_cast<SSLSignatureScheme>(sig_alg);
+ if (info.signatureScheme != expected) {
+ std::cerr << "Unexpected signature scheme" << std::endl;
+ return SECFailure;
+ }
+ }
+
return SECSuccess;
}
@@ -513,6 +561,9 @@ std::unique_ptr<const Config> ReadConfig(int argc, char** argv) {
cfg->AddEntry<bool>("verify-peer", false);
cfg->AddEntry<std::string>("advertise-alpn", "");
cfg->AddEntry<std::string>("expect-alpn", "");
+ cfg->AddEntry<std::vector<int>>("signing-prefs", std::vector<int>());
+ cfg->AddEntry<std::vector<int>>("verify-prefs", std::vector<int>());
+ cfg->AddEntry<int>("expect-peer-signature-algorithm", 0);
auto rv = cfg->ParseArgs(argc, argv);
switch (rv) {
diff --git a/security/nss/gtests/pk11_gtest/pk11_signature_test.h b/security/nss/gtests/pk11_gtest/pk11_signature_test.h
index b141043716..8a12171a0a 100644
--- a/security/nss/gtests/pk11_gtest/pk11_signature_test.h
+++ b/security/nss/gtests/pk11_gtest/pk11_signature_test.h
@@ -25,8 +25,8 @@ struct Pkcs11SignatureTestParams {
class Pk11SignatureTest : public ::testing::Test {
protected:
- Pk11SignatureTest(CK_MECHANISM_TYPE mechanism, SECOidTag hash_oid)
- : mechanism_(mechanism), hash_oid_(hash_oid) {}
+ Pk11SignatureTest(CK_MECHANISM_TYPE mech, SECOidTag hash_oid)
+ : mechanism_(mech), hash_oid_(hash_oid) {}
virtual const SECItem* parameters() const { return nullptr; }
CK_MECHANISM_TYPE mechanism() const { return mechanism_; }
diff --git a/security/nss/gtests/ssl_gtest/libssl_internals.c b/security/nss/gtests/ssl_gtest/libssl_internals.c
index 17b4ffe49a..e43113de42 100644
--- a/security/nss/gtests/ssl_gtest/libssl_internals.c
+++ b/security/nss/gtests/ssl_gtest/libssl_internals.c
@@ -237,22 +237,23 @@ SECStatus SSLInt_AdvanceReadSeqNum(PRFileDesc *fd, PRUint64 to) {
if (!ss) {
return SECFailure;
}
- if (to >= RECORD_SEQ_MAX) {
+ if (to > RECORD_SEQ_MAX) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
ssl_GetSpecWriteLock(ss);
spec = ss->ssl3.crSpec;
- spec->seqNum = to;
+ spec->nextSeqNum = to;
/* For DTLS, we need to fix the record sequence number. For this, we can just
* scrub the entire structure on the assumption that the new sequence number
* is far enough past the last received sequence number. */
- if (spec->seqNum <= spec->recvdRecords.right + DTLS_RECVD_RECORDS_WINDOW) {
+ if (spec->nextSeqNum <=
+ spec->recvdRecords.right + DTLS_RECVD_RECORDS_WINDOW) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
- dtls_RecordSetRecvd(&spec->recvdRecords, spec->seqNum);
+ dtls_RecordSetRecvd(&spec->recvdRecords, spec->nextSeqNum - 1);
ssl_ReleaseSpecWriteLock(ss);
return SECSuccess;
@@ -270,7 +271,7 @@ SECStatus SSLInt_AdvanceWriteSeqNum(PRFileDesc *fd, PRUint64 to) {
return SECFailure;
}
ssl_GetSpecWriteLock(ss);
- ss->ssl3.cwSpec->seqNum = to;
+ ss->ssl3.cwSpec->nextSeqNum = to;
ssl_ReleaseSpecWriteLock(ss);
return SECSuccess;
}
@@ -284,7 +285,7 @@ SECStatus SSLInt_AdvanceWriteSeqByAWindow(PRFileDesc *fd, PRInt32 extra) {
return SECFailure;
}
ssl_GetSpecReadLock(ss);
- to = ss->ssl3.cwSpec->seqNum + DTLS_RECVD_RECORDS_WINDOW + extra;
+ to = ss->ssl3.cwSpec->nextSeqNum + DTLS_RECVD_RECORDS_WINDOW + extra;
ssl_ReleaseSpecReadLock(ss);
return SSLInt_AdvanceWriteSeqNum(fd, to);
}
diff --git a/security/nss/gtests/ssl_gtest/manifest.mn b/security/nss/gtests/ssl_gtest/manifest.mn
index 5d893bab35..8547e56d1d 100644
--- a/security/nss/gtests/ssl_gtest/manifest.mn
+++ b/security/nss/gtests/ssl_gtest/manifest.mn
@@ -36,6 +36,7 @@ CPPSRCS = \
ssl_loopback_unittest.cc \
ssl_misc_unittest.cc \
ssl_record_unittest.cc \
+ ssl_recordsize_unittest.cc \
ssl_resumption_unittest.cc \
ssl_renegotiation_unittest.cc \
ssl_skip_unittest.cc \
diff --git a/security/nss/gtests/ssl_gtest/rsa8193.h b/security/nss/gtests/ssl_gtest/rsa8193.h
new file mode 100644
index 0000000000..6265163896
--- /dev/null
+++ b/security/nss/gtests/ssl_gtest/rsa8193.h
@@ -0,0 +1,209 @@
+/* -*- Mode: C++; tab-width: 8; 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/. */
+
+// openssl req -nodes -x509 -newkey rsa:8193 -out cert.pem -days 365
+static const uint8_t rsa8193[] = {
+ 0x30, 0x82, 0x09, 0x61, 0x30, 0x82, 0x05, 0x48, 0xa0, 0x03, 0x02, 0x01,
+ 0x02, 0x02, 0x09, 0x00, 0xaf, 0xff, 0x37, 0x91, 0x3e, 0x44, 0xae, 0x57,
+ 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
+ 0x0b, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
+ 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
+ 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a,
+ 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57,
+ 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c,
+ 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x35, 0x31, 0x37,
+ 0x30, 0x39, 0x34, 0x32, 0x32, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x30,
+ 0x35, 0x31, 0x37, 0x30, 0x39, 0x34, 0x32, 0x32, 0x39, 0x5a, 0x30, 0x45,
+ 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41,
+ 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a,
+ 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21,
+ 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x18, 0x49, 0x6e, 0x74,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74,
+ 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x04,
+ 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
+ 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x04, 0x0f, 0x00, 0x30, 0x82, 0x04,
+ 0x0a, 0x02, 0x82, 0x04, 0x01, 0x01, 0x77, 0xd6, 0xa9, 0x93, 0x4e, 0x15,
+ 0xb5, 0x67, 0x70, 0x8e, 0xc3, 0x77, 0x4f, 0xc9, 0x8a, 0x06, 0xd9, 0xb9,
+ 0xa6, 0x41, 0xb8, 0xfa, 0x4a, 0x13, 0x26, 0xdc, 0x2b, 0xc5, 0x82, 0xa0,
+ 0x74, 0x8c, 0x1e, 0xe9, 0xc0, 0x70, 0x15, 0x56, 0xec, 0x1f, 0x7e, 0x91,
+ 0x6e, 0x31, 0x42, 0x8b, 0xd5, 0xe2, 0x0e, 0x9c, 0xeb, 0xff, 0xbc, 0xf9,
+ 0x42, 0xd3, 0xb9, 0x1c, 0x5e, 0x46, 0x80, 0x90, 0x5f, 0xe1, 0x59, 0x22,
+ 0x13, 0x71, 0xd3, 0xd6, 0x66, 0x7a, 0xe0, 0x56, 0x04, 0x10, 0x59, 0x01,
+ 0xb3, 0xb6, 0xd2, 0xc7, 0xa7, 0x3b, 0xbc, 0xe6, 0x38, 0x44, 0xd5, 0x71,
+ 0x66, 0x1d, 0xb2, 0x63, 0x2f, 0xa9, 0x5e, 0x80, 0x92, 0x3c, 0x21, 0x0e,
+ 0xe1, 0xda, 0xd6, 0x1d, 0xcb, 0xce, 0xac, 0xe1, 0x5f, 0x97, 0x45, 0x8f,
+ 0xc1, 0x64, 0x16, 0xa6, 0x88, 0x2a, 0x36, 0x4a, 0x76, 0x64, 0x8f, 0x83,
+ 0x7a, 0x1d, 0xd8, 0x91, 0x90, 0x7b, 0x58, 0xb8, 0x1c, 0x7f, 0x56, 0x57,
+ 0x35, 0xfb, 0xf3, 0x1a, 0xcb, 0x7c, 0x66, 0x66, 0x04, 0x95, 0xee, 0x3a,
+ 0x80, 0xf0, 0xd4, 0x12, 0x3a, 0x7e, 0x7e, 0x5e, 0xb8, 0x55, 0x29, 0x23,
+ 0x06, 0xd3, 0x85, 0x0c, 0x99, 0x91, 0x42, 0xee, 0x5a, 0x30, 0x7f, 0x52,
+ 0x20, 0xb3, 0xe2, 0xe7, 0x39, 0x69, 0xb6, 0xfc, 0x42, 0x1e, 0x98, 0xd3,
+ 0x31, 0xa2, 0xfa, 0x81, 0x52, 0x69, 0x6d, 0x23, 0xf8, 0xc4, 0xc3, 0x3c,
+ 0x9b, 0x48, 0x75, 0xa8, 0xc7, 0xe7, 0x61, 0x81, 0x1f, 0xf7, 0xce, 0x10,
+ 0xaa, 0x13, 0xcb, 0x6e, 0x19, 0xc0, 0x4f, 0x6f, 0x90, 0xa8, 0x41, 0xea,
+ 0x49, 0xdf, 0xe4, 0xef, 0x84, 0x54, 0xb5, 0x37, 0xaf, 0x12, 0x75, 0x1a,
+ 0x11, 0x4b, 0x58, 0x7f, 0x63, 0x22, 0x33, 0xb1, 0xc8, 0x4d, 0xf2, 0x41,
+ 0x10, 0xbc, 0x37, 0xb5, 0xd5, 0xb2, 0x21, 0x32, 0x35, 0x9d, 0xf3, 0x8d,
+ 0xab, 0x66, 0x9d, 0x19, 0x12, 0x71, 0x45, 0xb3, 0x82, 0x5a, 0x5c, 0xff,
+ 0x2d, 0xcf, 0xf4, 0x5b, 0x56, 0xb8, 0x08, 0xb3, 0xd2, 0x43, 0x8c, 0xac,
+ 0xd2, 0xf8, 0xcc, 0x6d, 0x90, 0x97, 0xff, 0x12, 0x74, 0x97, 0xf8, 0xa4,
+ 0xe3, 0x95, 0xae, 0x92, 0xdc, 0x7e, 0x9d, 0x2b, 0xb4, 0x94, 0xc3, 0x8d,
+ 0x80, 0xe7, 0x77, 0x5c, 0x5b, 0xbb, 0x43, 0xdc, 0xa6, 0xe9, 0xbe, 0x20,
+ 0xcc, 0x9d, 0x8e, 0xa4, 0x2b, 0xf2, 0x72, 0xdc, 0x44, 0x61, 0x0f, 0xad,
+ 0x1a, 0x5e, 0xa5, 0x48, 0xe4, 0x42, 0xc5, 0xe4, 0xf1, 0x6d, 0x33, 0xdb,
+ 0xb2, 0x1b, 0x9f, 0xb2, 0xff, 0x18, 0x0e, 0x62, 0x35, 0x99, 0xed, 0x22,
+ 0x19, 0x4a, 0x5e, 0xb3, 0x3c, 0x07, 0x8f, 0x6e, 0x22, 0x5b, 0x16, 0x4a,
+ 0x9f, 0xef, 0xf3, 0xe7, 0xd6, 0x48, 0xe1, 0xb4, 0x3b, 0xab, 0x1b, 0x9e,
+ 0x53, 0xd7, 0x1b, 0xd9, 0x2d, 0x51, 0x8f, 0xe4, 0x1c, 0xab, 0xdd, 0xb9,
+ 0xe2, 0xee, 0xe4, 0xdd, 0x60, 0x04, 0x86, 0x6b, 0x4e, 0x7a, 0xc8, 0x09,
+ 0x51, 0xd1, 0x9b, 0x36, 0x9a, 0x36, 0x7f, 0xe8, 0x6b, 0x09, 0x6c, 0xee,
+ 0xad, 0x3a, 0x2f, 0xa8, 0x63, 0x92, 0x23, 0x2f, 0x7e, 0x00, 0xe2, 0xd1,
+ 0xbb, 0xd9, 0x5b, 0x5b, 0xfa, 0x4b, 0x83, 0x00, 0x19, 0x28, 0xfb, 0x7e,
+ 0xfe, 0x58, 0xab, 0xb7, 0x33, 0x45, 0x8f, 0x75, 0x9a, 0x54, 0x3d, 0x77,
+ 0x06, 0x75, 0x61, 0x4f, 0x5c, 0x93, 0xa0, 0xf9, 0xe8, 0xcf, 0xf6, 0x04,
+ 0x14, 0xda, 0x1b, 0x2e, 0x79, 0x35, 0xb8, 0xb4, 0xfa, 0x08, 0x27, 0x9a,
+ 0x03, 0x70, 0x78, 0x97, 0x8f, 0xae, 0x2e, 0xd5, 0x1c, 0xe0, 0x4d, 0x91,
+ 0x3a, 0xfe, 0x1a, 0x64, 0xd8, 0x49, 0xdf, 0x6c, 0x66, 0xac, 0xc9, 0x57,
+ 0x06, 0x72, 0xc0, 0xc0, 0x09, 0x71, 0x6a, 0xd0, 0xb0, 0x7d, 0x35, 0x3f,
+ 0x53, 0x17, 0x49, 0x38, 0x92, 0x22, 0x55, 0xf6, 0x58, 0x56, 0xa2, 0x42,
+ 0x77, 0x94, 0xb7, 0x28, 0x0a, 0xa0, 0xd2, 0xda, 0x25, 0xc1, 0xcc, 0x52,
+ 0x51, 0xd6, 0xba, 0x18, 0x0f, 0x0d, 0xe3, 0x7d, 0xd1, 0xda, 0xd9, 0x0c,
+ 0x5e, 0x3a, 0xca, 0xe9, 0xf1, 0xf5, 0x65, 0xfc, 0xc3, 0x99, 0x72, 0x25,
+ 0xf2, 0xc0, 0xa1, 0x8c, 0x43, 0x9d, 0xb2, 0xc9, 0xb1, 0x1a, 0x24, 0x34,
+ 0x57, 0xd8, 0xa7, 0x52, 0xa3, 0x39, 0x6e, 0x0b, 0xec, 0xbd, 0x5e, 0xc9,
+ 0x1f, 0x74, 0xed, 0xae, 0xe6, 0x4e, 0x49, 0xe8, 0x87, 0x3e, 0x46, 0x0d,
+ 0x40, 0x30, 0xda, 0x9d, 0xcf, 0xf5, 0x03, 0x1f, 0x38, 0x29, 0x3b, 0x66,
+ 0xe5, 0xc0, 0x89, 0x4c, 0xfc, 0x09, 0x62, 0x37, 0x01, 0xf9, 0x01, 0xab,
+ 0x8d, 0x53, 0x9c, 0x36, 0x5d, 0x36, 0x66, 0x8d, 0x87, 0xf4, 0xab, 0x37,
+ 0xb7, 0xf7, 0xe3, 0xdf, 0xc1, 0x52, 0xc0, 0x1d, 0x09, 0x92, 0x21, 0x47,
+ 0x49, 0x9a, 0x19, 0x38, 0x05, 0x62, 0xf3, 0x47, 0x80, 0x89, 0x1e, 0x70,
+ 0xa1, 0x57, 0xb7, 0x72, 0xd0, 0x41, 0x7a, 0x5c, 0x6a, 0x13, 0x8b, 0x6c,
+ 0xda, 0xdf, 0x6b, 0x01, 0x15, 0x20, 0xfa, 0xc8, 0x67, 0xee, 0xb2, 0x13,
+ 0xd8, 0x5f, 0x84, 0x30, 0x44, 0x8e, 0xf9, 0x2a, 0xae, 0x17, 0x53, 0x49,
+ 0xaa, 0x34, 0x31, 0x12, 0x31, 0xec, 0xf3, 0x25, 0x27, 0x53, 0x6b, 0xb5,
+ 0x63, 0xa6, 0xbc, 0xf1, 0x77, 0xd4, 0xb4, 0x77, 0xd1, 0xee, 0xad, 0x62,
+ 0x9d, 0x2c, 0x2e, 0x11, 0x0a, 0xd1, 0x87, 0xfe, 0xef, 0x77, 0x0e, 0xd1,
+ 0x38, 0xfe, 0xcc, 0x88, 0xaa, 0x1c, 0x06, 0x93, 0x25, 0x56, 0xfe, 0x0c,
+ 0x52, 0xe9, 0x7f, 0x4c, 0x3b, 0x2a, 0xfb, 0x40, 0x62, 0x29, 0x0a, 0x1d,
+ 0x58, 0x78, 0x8b, 0x09, 0x25, 0xaa, 0xc6, 0x8f, 0x66, 0x8f, 0xd1, 0x93,
+ 0x5a, 0xd6, 0x68, 0x35, 0x69, 0x13, 0x5d, 0x42, 0x35, 0x95, 0xcb, 0xc4,
+ 0xec, 0x17, 0x92, 0x96, 0xcb, 0x4a, 0xb9, 0x8f, 0xe5, 0xc4, 0x4a, 0xe7,
+ 0x54, 0x52, 0x4c, 0x64, 0x06, 0xac, 0x2f, 0x13, 0x32, 0x02, 0x47, 0x13,
+ 0x5c, 0xa2, 0x66, 0xdc, 0x36, 0x0c, 0x4f, 0xbb, 0x89, 0x58, 0x85, 0x16,
+ 0xf1, 0xf1, 0xff, 0xd2, 0x86, 0x54, 0x29, 0xb3, 0x7e, 0x2a, 0xbd, 0xf9,
+ 0x53, 0x8c, 0xa0, 0x60, 0x60, 0xb2, 0x90, 0x7f, 0x3a, 0x11, 0x5f, 0x2a,
+ 0x50, 0x74, 0x2a, 0xd1, 0x68, 0x78, 0xdb, 0x31, 0x1b, 0x8b, 0xee, 0xee,
+ 0x18, 0x97, 0xf3, 0x50, 0x84, 0xc1, 0x8f, 0xe1, 0xc6, 0x01, 0xb4, 0x16,
+ 0x65, 0x25, 0x0c, 0x03, 0xab, 0xed, 0x4f, 0xd6, 0xe6, 0x16, 0x23, 0xcc,
+ 0x42, 0x93, 0xff, 0xfa, 0x92, 0x63, 0x33, 0x9e, 0x36, 0xb0, 0xdc, 0x9a,
+ 0xb6, 0xaa, 0xd7, 0x48, 0xfe, 0x27, 0x01, 0xcf, 0x67, 0xc0, 0x75, 0xa0,
+ 0x86, 0x9a, 0xec, 0xa7, 0x2e, 0xb8, 0x7b, 0x00, 0x7f, 0xd4, 0xe3, 0xb3,
+ 0xfc, 0x48, 0xab, 0x50, 0x20, 0xd4, 0x0d, 0x58, 0x26, 0xc0, 0x3c, 0x09,
+ 0x0b, 0x80, 0x9e, 0xaf, 0x14, 0x3c, 0x0c, 0x6e, 0x69, 0xbc, 0x6c, 0x4e,
+ 0x50, 0x33, 0xb0, 0x07, 0x64, 0x6e, 0x77, 0x96, 0xc2, 0xe6, 0x3b, 0xd7,
+ 0xfe, 0xdc, 0xa4, 0x2f, 0x18, 0x5b, 0x53, 0xe5, 0xdd, 0xb6, 0xce, 0xeb,
+ 0x16, 0xb4, 0x25, 0xc6, 0xcb, 0xf2, 0x65, 0x3c, 0x4f, 0x94, 0xa5, 0x11,
+ 0x18, 0xeb, 0x7b, 0x62, 0x1d, 0xd5, 0x02, 0x35, 0x76, 0xf6, 0xb5, 0x20,
+ 0x27, 0x21, 0x9b, 0xab, 0xf4, 0xb6, 0x8f, 0x1a, 0x70, 0x1d, 0x12, 0xe3,
+ 0xb9, 0x8e, 0x29, 0x52, 0x25, 0xf4, 0xba, 0xb4, 0x25, 0x2c, 0x91, 0x11,
+ 0xf2, 0xae, 0x7b, 0xbe, 0xb6, 0x67, 0xd6, 0x08, 0xf8, 0x6f, 0xe7, 0xb0,
+ 0x16, 0xc5, 0xf6, 0xd5, 0xfb, 0x07, 0x71, 0x5b, 0x0e, 0xe1, 0x02, 0x03,
+ 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55,
+ 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xaa, 0xe7, 0x7f, 0xcf, 0xf8, 0xb4,
+ 0xe0, 0x8d, 0x39, 0x9a, 0x1d, 0x4f, 0x86, 0xa2, 0xac, 0x56, 0x32, 0xd9,
+ 0x58, 0xe3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
+ 0x16, 0x80, 0x14, 0xaa, 0xe7, 0x7f, 0xcf, 0xf8, 0xb4, 0xe0, 0x8d, 0x39,
+ 0x9a, 0x1d, 0x4f, 0x86, 0xa2, 0xac, 0x56, 0x32, 0xd9, 0x58, 0xe3, 0x30,
+ 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30,
+ 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
+ 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x04, 0x02, 0x00,
+ 0x00, 0x0a, 0x0a, 0x81, 0xb5, 0x2e, 0xac, 0x52, 0xab, 0x0f, 0xeb, 0xad,
+ 0x96, 0xd6, 0xd6, 0x59, 0x8f, 0x55, 0x15, 0x56, 0x70, 0xda, 0xd5, 0x75,
+ 0x47, 0x12, 0x9a, 0x0e, 0xd1, 0x65, 0x68, 0xe0, 0x51, 0x89, 0x59, 0xcc,
+ 0xe3, 0x5a, 0x1b, 0x85, 0x14, 0xa3, 0x1d, 0x9b, 0x3f, 0xd1, 0xa4, 0x42,
+ 0xb0, 0x89, 0x12, 0x93, 0xd3, 0x54, 0x19, 0x04, 0xa2, 0xaf, 0xaa, 0x60,
+ 0xca, 0x03, 0xc2, 0xae, 0x62, 0x8c, 0xb6, 0x31, 0x03, 0xd6, 0xa5, 0xf3,
+ 0x5e, 0x8d, 0x5c, 0x69, 0x4c, 0x7d, 0x81, 0x49, 0x20, 0x25, 0x41, 0xa4,
+ 0x2a, 0x95, 0x87, 0x36, 0xa3, 0x9b, 0x9e, 0x9f, 0xed, 0x85, 0xf3, 0xb1,
+ 0xf1, 0xe9, 0x1b, 0xbb, 0xe3, 0xbc, 0x3b, 0x11, 0x36, 0xca, 0xb9, 0x5f,
+ 0xee, 0x64, 0xde, 0x2a, 0x99, 0x27, 0x91, 0xc0, 0x54, 0x9e, 0x7a, 0xd4,
+ 0x89, 0x8c, 0xa0, 0xe3, 0xfd, 0x44, 0x6f, 0x02, 0x38, 0x3c, 0xee, 0x52,
+ 0x48, 0x1b, 0xd4, 0x25, 0x2b, 0xcb, 0x8e, 0xa8, 0x1b, 0x09, 0xd6, 0x30,
+ 0x51, 0x15, 0x6c, 0x5c, 0x03, 0x76, 0xad, 0x64, 0x45, 0x50, 0xa2, 0xe1,
+ 0x3c, 0x5a, 0x67, 0x87, 0xff, 0x8c, 0xed, 0x9a, 0x8d, 0x04, 0xc1, 0xac,
+ 0xf9, 0xca, 0xf5, 0x2a, 0x05, 0x9c, 0xdd, 0x78, 0xce, 0x99, 0x78, 0x7b,
+ 0xcd, 0x43, 0x10, 0x40, 0xf7, 0xb5, 0x27, 0x12, 0xec, 0xe9, 0xb2, 0x3f,
+ 0xf4, 0x5d, 0xd9, 0xbb, 0xf8, 0xc4, 0xc9, 0xa4, 0x46, 0x20, 0x41, 0x7f,
+ 0xeb, 0x79, 0xb0, 0x51, 0x8c, 0xf7, 0xc3, 0x2c, 0x16, 0xfe, 0x42, 0x59,
+ 0x77, 0xfe, 0x53, 0xfe, 0x19, 0x57, 0x58, 0x44, 0x6d, 0x12, 0xe2, 0x95,
+ 0xd0, 0xd3, 0x5a, 0xb5, 0x2d, 0xe5, 0x7e, 0xb4, 0xb3, 0xa9, 0xcc, 0x7d,
+ 0x53, 0x77, 0x81, 0x01, 0x0f, 0x0a, 0xf6, 0x86, 0x3c, 0x7d, 0xb5, 0x2c,
+ 0xbf, 0x62, 0xc3, 0xf5, 0x38, 0x89, 0x13, 0x84, 0x1f, 0x44, 0x2d, 0x87,
+ 0x5c, 0x23, 0x9e, 0x05, 0x62, 0x56, 0x3d, 0x71, 0x4d, 0xd0, 0xe3, 0x15,
+ 0xe9, 0x09, 0x9c, 0x1a, 0xc0, 0x9a, 0x19, 0x8b, 0x9c, 0xe9, 0xae, 0xde,
+ 0x62, 0x05, 0x23, 0xe2, 0xd0, 0x3f, 0xf5, 0xef, 0x04, 0x96, 0x4c, 0x87,
+ 0x34, 0x2f, 0xd5, 0x90, 0xde, 0xbf, 0x4b, 0x56, 0x12, 0x5f, 0xc6, 0xdc,
+ 0xa4, 0x1c, 0xc4, 0x53, 0x0c, 0xf9, 0xb4, 0xe4, 0x2c, 0xe7, 0x48, 0xbd,
+ 0xb1, 0xac, 0xf1, 0xc1, 0x8d, 0x53, 0x47, 0x84, 0xc0, 0x78, 0x0a, 0x5e,
+ 0xc2, 0x16, 0xff, 0xef, 0x97, 0x5b, 0x33, 0x85, 0x92, 0xcd, 0xd4, 0xbb,
+ 0x64, 0xee, 0xed, 0x17, 0x18, 0x43, 0x32, 0x99, 0x32, 0x36, 0x25, 0xf4,
+ 0x21, 0x3c, 0x2f, 0x55, 0xdc, 0x16, 0x06, 0x4d, 0x86, 0xa3, 0xa9, 0x34,
+ 0x22, 0xd5, 0xc3, 0xc8, 0x64, 0x3c, 0x4e, 0x3a, 0x69, 0xbd, 0xcf, 0xd7,
+ 0xee, 0x3f, 0x0d, 0x15, 0xeb, 0xfb, 0xbd, 0x91, 0x7f, 0xef, 0x48, 0xec,
+ 0x86, 0xb2, 0x78, 0xf7, 0x53, 0x90, 0x38, 0xb5, 0x04, 0x9c, 0xb7, 0xd7,
+ 0x9e, 0xaa, 0x15, 0xf7, 0xcd, 0xc2, 0x17, 0xd5, 0x8f, 0x82, 0x98, 0xa3,
+ 0xaf, 0x59, 0xf1, 0x71, 0xda, 0x6e, 0xaf, 0x97, 0x6d, 0x77, 0x72, 0xfd,
+ 0xa8, 0x80, 0x25, 0xce, 0x46, 0x04, 0x6e, 0x40, 0x15, 0x24, 0xc0, 0xf9,
+ 0xbf, 0x13, 0x16, 0x72, 0xcb, 0xb7, 0x10, 0xc7, 0x0a, 0xd6, 0x66, 0x96,
+ 0x5b, 0x27, 0x4d, 0x66, 0xc4, 0x2f, 0x21, 0x90, 0x9f, 0x8c, 0x24, 0xa0,
+ 0x0e, 0xa2, 0x89, 0x92, 0xd2, 0x44, 0x63, 0x06, 0xb2, 0xab, 0x07, 0x26,
+ 0xde, 0x03, 0x1d, 0xdb, 0x2a, 0x42, 0x5b, 0x4c, 0xf6, 0xfe, 0x53, 0xfa,
+ 0x80, 0x45, 0x8d, 0x75, 0xf6, 0x0e, 0x1d, 0xcc, 0x4c, 0x3b, 0xb0, 0x80,
+ 0x6d, 0x4c, 0xed, 0x7c, 0xe0, 0xd2, 0xe7, 0x62, 0x59, 0xb1, 0x5a, 0x5d,
+ 0x3a, 0xec, 0x86, 0x04, 0xfe, 0x26, 0xd1, 0x18, 0xed, 0x56, 0x7d, 0x67,
+ 0x56, 0x24, 0x6d, 0x7c, 0x6e, 0x8f, 0xc8, 0xa0, 0xba, 0x42, 0x0a, 0x33,
+ 0x38, 0x7a, 0x09, 0x03, 0xc2, 0xbf, 0x9b, 0x01, 0xdd, 0x03, 0x5a, 0xba,
+ 0x76, 0x04, 0xb1, 0xc3, 0x40, 0x23, 0x53, 0xbd, 0x64, 0x4e, 0x0f, 0xe7,
+ 0xc3, 0x4e, 0x48, 0xea, 0x19, 0x2b, 0x1c, 0xe4, 0x3d, 0x93, 0xd8, 0xf6,
+ 0xfb, 0xda, 0x3d, 0xeb, 0xed, 0xc2, 0xbd, 0x14, 0x57, 0x40, 0xde, 0xd1,
+ 0x74, 0x54, 0x1b, 0xa8, 0x39, 0xda, 0x73, 0x56, 0xd4, 0xbe, 0xab, 0xec,
+ 0xc7, 0x17, 0x4f, 0x91, 0xb6, 0xf6, 0xcb, 0x24, 0xc6, 0x1c, 0x07, 0xc4,
+ 0xf3, 0xd0, 0x5e, 0x8d, 0xfa, 0x44, 0x98, 0x5c, 0x87, 0x36, 0x75, 0xb6,
+ 0xa5, 0x31, 0xaa, 0xab, 0x7d, 0x38, 0x66, 0xb3, 0x18, 0x58, 0x65, 0x97,
+ 0x06, 0xfd, 0x61, 0x81, 0x71, 0xc5, 0x17, 0x8b, 0x19, 0x03, 0xc8, 0x58,
+ 0xec, 0x05, 0xca, 0x7b, 0x0f, 0xec, 0x9d, 0xb4, 0xbc, 0xa3, 0x20, 0x2e,
+ 0xf8, 0xe4, 0xb1, 0x82, 0xdc, 0x5a, 0xd2, 0x92, 0x9c, 0x43, 0x5d, 0x16,
+ 0x5b, 0x90, 0x80, 0xe4, 0xfb, 0x6e, 0x24, 0x6b, 0x8c, 0x1a, 0x35, 0xab,
+ 0xbd, 0x77, 0x7f, 0xf9, 0x61, 0x80, 0xa5, 0xab, 0xa3, 0x39, 0xc2, 0xc9,
+ 0x69, 0x3c, 0xfc, 0xb3, 0x9a, 0x05, 0x45, 0x03, 0x88, 0x8f, 0x8e, 0x23,
+ 0xf2, 0x0c, 0x4c, 0x54, 0xb9, 0x40, 0x3a, 0x31, 0x1a, 0x22, 0x67, 0x43,
+ 0x4a, 0x3e, 0xa0, 0x8c, 0x2d, 0x4d, 0x4f, 0xfc, 0xb5, 0x9b, 0x1f, 0xe1,
+ 0xef, 0x02, 0x54, 0xab, 0x8d, 0x75, 0x4d, 0x93, 0xba, 0x76, 0xe1, 0xbc,
+ 0x42, 0x7f, 0x6c, 0xcb, 0xf5, 0x47, 0xd6, 0x8a, 0xac, 0x5d, 0xe9, 0xbb,
+ 0x3a, 0x65, 0x2c, 0x81, 0xe5, 0xff, 0x27, 0x7e, 0x60, 0x64, 0x80, 0x42,
+ 0x8d, 0x36, 0x6b, 0x07, 0x76, 0x6a, 0xf1, 0xdf, 0x96, 0x17, 0x93, 0x21,
+ 0x5d, 0xe4, 0x6c, 0xce, 0x1c, 0xb9, 0x82, 0x45, 0x05, 0x61, 0xe2, 0x41,
+ 0x96, 0x03, 0x7d, 0x10, 0x8b, 0x3e, 0xc7, 0xe5, 0xcf, 0x08, 0xeb, 0x81,
+ 0xd3, 0x82, 0x1b, 0x04, 0x96, 0x93, 0x5a, 0xe2, 0x8c, 0x8e, 0x50, 0x33,
+ 0xf6, 0xf9, 0xf0, 0xfb, 0xb1, 0xd7, 0xc6, 0x97, 0xaa, 0xef, 0x0b, 0x87,
+ 0xe1, 0x34, 0x97, 0x78, 0x2e, 0x7c, 0x46, 0x11, 0xd5, 0x3c, 0xec, 0x38,
+ 0x70, 0x59, 0x14, 0x65, 0x4d, 0x0e, 0xd1, 0xeb, 0x49, 0xb3, 0x99, 0x6f,
+ 0x87, 0xf1, 0x79, 0x21, 0xd9, 0x5c, 0x37, 0xb2, 0xfe, 0xc4, 0x7a, 0xc1,
+ 0x67, 0xbd, 0x02, 0xfc, 0x02, 0xab, 0x2f, 0xf5, 0x0f, 0xa7, 0xae, 0x90,
+ 0xc2, 0xaf, 0xdb, 0xd1, 0x96, 0xb2, 0x92, 0x5a, 0xfb, 0xca, 0x28, 0x74,
+ 0x17, 0xed, 0xda, 0x2c, 0x9f, 0xb4, 0x2d, 0xf5, 0x71, 0x20, 0x64, 0x2d,
+ 0x44, 0xe5, 0xa3, 0xa0, 0x94, 0x6f, 0x20, 0xb3, 0x73, 0x96, 0x40, 0x06,
+ 0x9b, 0x25, 0x47, 0x4b, 0xe0, 0x63, 0x91, 0xd9, 0xda, 0xf3, 0xc3, 0xe5,
+ 0x3a, 0x3c, 0xb7, 0x5f, 0xab, 0x1e, 0x51, 0x17, 0x4f, 0xec, 0xc1, 0x6d,
+ 0x82, 0x79, 0x8e, 0xba, 0x7c, 0x47, 0x8e, 0x99, 0x00, 0x17, 0x9e, 0xda,
+ 0x10, 0x42, 0x70, 0x25, 0x42, 0x84, 0xc8, 0xb1, 0x95, 0x56, 0xb2, 0x08,
+ 0xa0, 0x4f, 0xdc, 0xcd, 0x9e, 0x31, 0x4b, 0x0c, 0x0b, 0x03, 0x5d, 0x2c,
+ 0x26, 0xbc, 0xa9, 0x4b, 0x19, 0xdf, 0x90, 0x01, 0x9a, 0xe0, 0x06, 0x05,
+ 0x13, 0x34, 0x9d, 0x34, 0xb8, 0xef, 0x13, 0x3a, 0x20, 0xf5, 0x74, 0x02,
+ 0x70, 0x3b, 0x41, 0x60, 0x1f, 0x5e, 0x76, 0x0a, 0xb1, 0x17, 0xd5, 0xcf,
+ 0x79, 0xef, 0xf7, 0xab, 0xe7, 0xd6, 0x0f, 0xad, 0x85, 0x2c, 0x52, 0x67,
+ 0xb5, 0xa0, 0x4a, 0xfd, 0xaf}; \ No newline at end of file
diff --git a/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc
index 08781af711..28fdc66318 100644
--- a/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_0rtt_unittest.cc
@@ -345,8 +345,8 @@ TEST_P(TlsConnectTls13, TestTls13ZeroRttNoAlpnClient) {
TEST_P(TlsConnectTls13, TestTls13ZeroRttAlpnChangeBoth) {
EnableAlpn();
SetupForZeroRtt();
- static const uint8_t alpn[] = {0x01, 0x62}; // "b"
- EnableAlpn(alpn, sizeof(alpn));
+ static const std::vector<uint8_t> alpn({0x01, 0x62}); // "b"
+ EnableAlpn(alpn);
client_->Set0RttEnabled(true);
server_->Set0RttEnabled(true);
ExpectResumption(RESUME_TICKET);
diff --git a/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc
index f0c57e8b10..6be3b61f8d 100644
--- a/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_agent_unittest.cc
@@ -8,9 +8,6 @@
#include "sslerr.h"
#include "sslproto.h"
-// This is an internal header, used to get TLS_1_3_DRAFT_VERSION.
-#include "ssl3prot.h"
-
#include <memory>
#include "databuffer.h"
@@ -21,7 +18,6 @@
namespace nss_test {
-static const uint8_t kD13 = TLS_1_3_DRAFT_VERSION;
// This is a 1-RTT ClientHello with ECDHE.
const static uint8_t kCannedTls13ClientHello[] = {
0x01, 0x00, 0x00, 0xcf, 0x03, 0x03, 0x6c, 0xb3, 0x46, 0x81, 0xc8, 0x1a,
@@ -42,16 +38,7 @@ const static uint8_t kCannedTls13ClientHello[] = {
0x1e, 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x02, 0x03, 0x08, 0x04, 0x08,
0x05, 0x08, 0x06, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02, 0x01, 0x04,
0x02, 0x05, 0x02, 0x06, 0x02, 0x02, 0x02};
-
-const static uint8_t kCannedTls13ServerHello[] = {
- 0x03, 0x03, 0x9c, 0xbc, 0x14, 0x9b, 0x0e, 0x2e, 0xfa, 0x0d, 0xf3,
- 0xf0, 0x5c, 0x70, 0x7a, 0xe0, 0xd1, 0x9b, 0x3e, 0x5a, 0x44, 0x6b,
- 0xdf, 0xe5, 0xc2, 0x28, 0x64, 0xf7, 0x00, 0xc1, 0x9c, 0x08, 0x76,
- 0x08, 0x00, 0x13, 0x01, 0x00, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x24,
- 0x00, 0x1d, 0x00, 0x20, 0xc2, 0xcf, 0x23, 0x17, 0x64, 0x23, 0x03,
- 0xf0, 0xfb, 0x45, 0x98, 0x26, 0xd1, 0x65, 0x24, 0xa1, 0x6c, 0xa9,
- 0x80, 0x8f, 0x2c, 0xac, 0x0a, 0xea, 0x53, 0x3a, 0xcb, 0xe3, 0x08,
- 0x84, 0xae, 0x19, 0x00, 0x2b, 0x00, 0x02, 0x7f, kD13};
+static const size_t kFirstFragmentSize = 20;
static const char *k0RttData = "ABCDEF";
TEST_P(TlsAgentTest, EarlyFinished) {
@@ -74,8 +61,9 @@ TEST_P(TlsAgentTestClient13, CannedHello) {
DataBuffer buffer;
EnsureInit();
DataBuffer server_hello;
- MakeHandshakeMessage(kTlsHandshakeServerHello, kCannedTls13ServerHello,
- sizeof(kCannedTls13ServerHello), &server_hello);
+ auto sh = MakeCannedTls13ServerHello();
+ MakeHandshakeMessage(kTlsHandshakeServerHello, sh.data(), sh.len(),
+ &server_hello);
MakeRecord(kTlsHandshakeType, SSL_LIBRARY_VERSION_TLS_1_3,
server_hello.data(), server_hello.len(), &buffer);
ProcessMessage(buffer, TlsAgent::STATE_CONNECTING);
@@ -83,8 +71,9 @@ TEST_P(TlsAgentTestClient13, CannedHello) {
TEST_P(TlsAgentTestClient13, EncryptedExtensionsInClear) {
DataBuffer server_hello;
- MakeHandshakeMessage(kTlsHandshakeServerHello, kCannedTls13ServerHello,
- sizeof(kCannedTls13ServerHello), &server_hello);
+ auto sh = MakeCannedTls13ServerHello();
+ MakeHandshakeMessage(kTlsHandshakeServerHello, sh.data(), sh.len(),
+ &server_hello);
DataBuffer encrypted_extensions;
MakeHandshakeMessage(kTlsHandshakeEncryptedExtensions, nullptr, 0,
&encrypted_extensions, 1);
@@ -100,19 +89,21 @@ TEST_P(TlsAgentTestClient13, EncryptedExtensionsInClear) {
TEST_F(TlsAgentStreamTestClient, EncryptedExtensionsInClearTwoPieces) {
DataBuffer server_hello;
- MakeHandshakeMessage(kTlsHandshakeServerHello, kCannedTls13ServerHello,
- sizeof(kCannedTls13ServerHello), &server_hello);
+ auto sh = MakeCannedTls13ServerHello();
+ MakeHandshakeMessage(kTlsHandshakeServerHello, sh.data(), sh.len(),
+ &server_hello);
DataBuffer encrypted_extensions;
MakeHandshakeMessage(kTlsHandshakeEncryptedExtensions, nullptr, 0,
&encrypted_extensions, 1);
server_hello.Append(encrypted_extensions);
DataBuffer buffer;
MakeRecord(kTlsHandshakeType, SSL_LIBRARY_VERSION_TLS_1_3,
- server_hello.data(), 20, &buffer);
+ server_hello.data(), kFirstFragmentSize, &buffer);
DataBuffer buffer2;
MakeRecord(kTlsHandshakeType, SSL_LIBRARY_VERSION_TLS_1_3,
- server_hello.data() + 20, server_hello.len() - 20, &buffer2);
+ server_hello.data() + kFirstFragmentSize,
+ server_hello.len() - kFirstFragmentSize, &buffer2);
EnsureInit();
agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_3,
@@ -124,15 +115,15 @@ TEST_F(TlsAgentStreamTestClient, EncryptedExtensionsInClearTwoPieces) {
}
TEST_F(TlsAgentDgramTestClient, EncryptedExtensionsInClearTwoPieces) {
+ auto sh = MakeCannedTls13ServerHello();
DataBuffer server_hello_frag1;
- MakeHandshakeMessageFragment(
- kTlsHandshakeServerHello, kCannedTls13ServerHello,
- sizeof(kCannedTls13ServerHello), &server_hello_frag1, 0, 0, 20);
+ MakeHandshakeMessageFragment(kTlsHandshakeServerHello, sh.data(), sh.len(),
+ &server_hello_frag1, 0, 0, kFirstFragmentSize);
DataBuffer server_hello_frag2;
- MakeHandshakeMessageFragment(
- kTlsHandshakeServerHello, kCannedTls13ServerHello + 20,
- sizeof(kCannedTls13ServerHello), &server_hello_frag2, 0, 20,
- sizeof(kCannedTls13ServerHello) - 20);
+ MakeHandshakeMessageFragment(kTlsHandshakeServerHello,
+ sh.data() + kFirstFragmentSize, sh.len(),
+ &server_hello_frag2, 0, kFirstFragmentSize,
+ sh.len() - kFirstFragmentSize);
DataBuffer encrypted_extensions;
MakeHandshakeMessage(kTlsHandshakeEncryptedExtensions, nullptr, 0,
&encrypted_extensions, 1);
@@ -154,6 +145,35 @@ TEST_F(TlsAgentDgramTestClient, EncryptedExtensionsInClearTwoPieces) {
SSL_ERROR_RX_UNEXPECTED_HANDSHAKE);
}
+TEST_F(TlsAgentDgramTestClient, AckWithBogusLengthField) {
+ EnsureInit();
+ // Length doesn't match
+ const uint8_t ackBuf[] = {0x00, 0x08, 0x00};
+ DataBuffer record;
+ MakeRecord(variant_, kTlsAckType, SSL_LIBRARY_VERSION_TLS_1_2, ackBuf,
+ sizeof(ackBuf), &record, 0);
+ agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_3,
+ SSL_LIBRARY_VERSION_TLS_1_3);
+ ExpectAlert(kTlsAlertDecodeError);
+ ProcessMessage(record, TlsAgent::STATE_ERROR,
+ SSL_ERROR_RX_MALFORMED_DTLS_ACK);
+}
+
+TEST_F(TlsAgentDgramTestClient, AckWithNonEvenLength) {
+ EnsureInit();
+ // Length isn't a multiple of 8
+ const uint8_t ackBuf[] = {0x00, 0x01, 0x00};
+ DataBuffer record;
+ MakeRecord(variant_, kTlsAckType, SSL_LIBRARY_VERSION_TLS_1_2, ackBuf,
+ sizeof(ackBuf), &record, 0);
+ agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_3,
+ SSL_LIBRARY_VERSION_TLS_1_3);
+ // Because we haven't negotiated the version,
+ // ssl3_DecodeError() sends an older (pre-TLS error).
+ ExpectAlert(kTlsAlertIllegalParameter);
+ ProcessMessage(record, TlsAgent::STATE_ERROR, SSL_ERROR_BAD_SERVER);
+}
+
TEST_F(TlsAgentStreamTestClient, Set0RttOptionThenWrite) {
EnsureInit();
agent_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_1,
diff --git a/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc
index 7f2b2840d5..e2a30e6bcb 100644
--- a/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc
@@ -155,8 +155,8 @@ TEST_P(TlsConnectTls12, ClientAuthBigRsaCheckSigAlg) {
class TlsZeroCertificateRequestSigAlgsFilter : public TlsHandshakeFilter {
public:
- TlsZeroCertificateRequestSigAlgsFilter(const std::shared_ptr<TlsAgent>& agent)
- : TlsHandshakeFilter(agent, {kTlsHandshakeCertificateRequest}) {}
+ TlsZeroCertificateRequestSigAlgsFilter(const std::shared_ptr<TlsAgent>& a)
+ : TlsHandshakeFilter(a, {kTlsHandshakeCertificateRequest}) {}
virtual PacketFilter::Action FilterHandshake(
const TlsHandshakeFilter::HandshakeHeader& header,
const DataBuffer& input, DataBuffer* output) {
@@ -366,6 +366,50 @@ TEST_P(TlsConnectTls12, SignatureAlgorithmDrop) {
server_->CheckErrorCode(SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE);
}
+// Replaces the signature scheme in a TLS 1.3 CertificateVerify message.
+class TlsReplaceSignatureSchemeFilter : public TlsHandshakeFilter {
+ public:
+ TlsReplaceSignatureSchemeFilter(const std::shared_ptr<TlsAgent>& a,
+ SSLSignatureScheme scheme)
+ : TlsHandshakeFilter(a, {kTlsHandshakeCertificateVerify}),
+ scheme_(scheme) {
+ EnableDecryption();
+ }
+
+ protected:
+ virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
+ const DataBuffer& input,
+ DataBuffer* output) {
+ *output = input;
+ output->Write(0, scheme_, 2);
+ return CHANGE;
+ }
+
+ private:
+ SSLSignatureScheme scheme_;
+};
+
+TEST_P(TlsConnectTls13, UnsupportedSignatureSchemeAlert) {
+ EnsureTlsSetup();
+ MakeTlsFilter<TlsReplaceSignatureSchemeFilter>(server_, ssl_sig_none);
+
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+ server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT);
+ client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CERT_VERIFY);
+}
+
+TEST_P(TlsConnectTls13, InconsistentSignatureSchemeAlert) {
+ EnsureTlsSetup();
+
+ // This won't work because we use an RSA cert by default.
+ MakeTlsFilter<TlsReplaceSignatureSchemeFilter>(
+ server_, ssl_sig_ecdsa_secp256r1_sha256);
+
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+ server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT);
+ client_->CheckErrorCode(SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM);
+}
+
TEST_P(TlsConnectTls12Plus, RequestClientAuthWithSha384) {
server_->SetSignatureSchemes(SignatureSchemeRsaSha384,
PR_ARRAY_SIZE(SignatureSchemeRsaSha384));
diff --git a/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc
index fa2238be7d..ec289bdd69 100644
--- a/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_ciphersuite_unittest.cc
@@ -166,8 +166,8 @@ class TlsCipherSuiteTestBase : public TlsConnectTestBase {
case ssl_calg_seed:
break;
}
- EXPECT_TRUE(false) << "No limit for " << csinfo_.cipherSuiteName;
- return 1ULL < 48;
+ ADD_FAILURE() << "No limit for " << csinfo_.cipherSuiteName;
+ return 0;
}
uint64_t last_safe_write() const {
@@ -246,12 +246,13 @@ TEST_P(TlsCipherSuiteTest, ReadLimit) {
client_->SendData(10, 10);
server_->ReadBytes(); // This should be OK.
+ server_->ReadBytes(); // Read twice to flush any 1,N-1 record splitting.
} else {
// In TLS 1.3, reading or writing triggers a KeyUpdate. That would mean
// that the sequence numbers would reset and we wouldn't hit the limit. So
- // we move the sequence number to one less than the limit directly and don't
- // test sending and receiving just before the limit.
- uint64_t last = record_limit() - 1;
+ // move the sequence number to the limit directly and don't test sending and
+ // receiving just before the limit.
+ uint64_t last = record_limit();
EXPECT_EQ(SECSuccess, SSLInt_AdvanceReadSeqNum(server_->ssl_fd(), last));
}
diff --git a/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc
index c2f582a93a..5be62e5065 100644
--- a/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_custext_unittest.cc
@@ -68,6 +68,7 @@ static const uint16_t kManyExtensions[] = {
ssl_next_proto_nego_xtn,
ssl_renegotiation_info_xtn,
ssl_tls13_short_header_xtn,
+ ssl_record_size_limit_xtn,
1,
0xffff};
// The list here includes all extensions we expect to use (SSL_MAX_EXTENSIONS),
diff --git a/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc
index cdafa7a84f..b99461632c 100644
--- a/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_dhe_unittest.cc
@@ -103,8 +103,8 @@ TEST_P(TlsConnectGenericPre13, ConnectFfdheServer) {
class TlsDheServerKeyExchangeDamager : public TlsHandshakeFilter {
public:
- TlsDheServerKeyExchangeDamager(const std::shared_ptr<TlsAgent>& agent)
- : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}) {}
+ TlsDheServerKeyExchangeDamager(const std::shared_ptr<TlsAgent>& a)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}) {}
virtual PacketFilter::Action FilterHandshake(
const TlsHandshakeFilter::HandshakeHeader& header,
const DataBuffer& input, DataBuffer* output) {
@@ -141,9 +141,9 @@ class TlsDheSkeChangeY : public TlsHandshakeFilter {
kYZeroPad
};
- TlsDheSkeChangeY(const std::shared_ptr<TlsAgent>& agent,
- uint8_t handshake_type, ChangeYTo change)
- : TlsHandshakeFilter(agent, {handshake_type}), change_Y_(change) {}
+ TlsDheSkeChangeY(const std::shared_ptr<TlsAgent>& a, uint8_t handshake_type,
+ ChangeYTo change)
+ : TlsHandshakeFilter(a, {handshake_type}), change_Y_(change) {}
protected:
void ChangeY(const DataBuffer& input, DataBuffer* output, size_t offset,
@@ -208,9 +208,9 @@ class TlsDheSkeChangeY : public TlsHandshakeFilter {
class TlsDheSkeChangeYServer : public TlsDheSkeChangeY {
public:
- TlsDheSkeChangeYServer(const std::shared_ptr<TlsAgent>& agent,
- ChangeYTo change, bool modify)
- : TlsDheSkeChangeY(agent, kTlsHandshakeServerKeyExchange, change),
+ TlsDheSkeChangeYServer(const std::shared_ptr<TlsAgent>& a, ChangeYTo change,
+ bool modify)
+ : TlsDheSkeChangeY(a, kTlsHandshakeServerKeyExchange, change),
modify_(modify),
p_() {}
@@ -247,9 +247,9 @@ class TlsDheSkeChangeYServer : public TlsDheSkeChangeY {
class TlsDheSkeChangeYClient : public TlsDheSkeChangeY {
public:
TlsDheSkeChangeYClient(
- const std::shared_ptr<TlsAgent>& agent, ChangeYTo change,
+ const std::shared_ptr<TlsAgent>& a, ChangeYTo change,
std::shared_ptr<const TlsDheSkeChangeYServer> server_filter)
- : TlsDheSkeChangeY(agent, kTlsHandshakeClientKeyExchange, change),
+ : TlsDheSkeChangeY(a, kTlsHandshakeClientKeyExchange, change),
server_filter_(server_filter) {}
protected:
@@ -357,8 +357,8 @@ INSTANTIATE_TEST_CASE_P(
class TlsDheSkeMakePEven : public TlsHandshakeFilter {
public:
- TlsDheSkeMakePEven(const std::shared_ptr<TlsAgent>& agent)
- : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}) {}
+ TlsDheSkeMakePEven(const std::shared_ptr<TlsAgent>& a)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}) {}
virtual PacketFilter::Action FilterHandshake(
const TlsHandshakeFilter::HandshakeHeader& header,
@@ -390,8 +390,8 @@ TEST_P(TlsConnectGenericPre13, MakeDhePEven) {
class TlsDheSkeZeroPadP : public TlsHandshakeFilter {
public:
- TlsDheSkeZeroPadP(const std::shared_ptr<TlsAgent>& agent)
- : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}) {}
+ TlsDheSkeZeroPadP(const std::shared_ptr<TlsAgent>& a)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}) {}
virtual PacketFilter::Action FilterHandshake(
const TlsHandshakeFilter::HandshakeHeader& header,
@@ -475,6 +475,45 @@ TEST_P(TlsConnectTls13, NamedGroupMismatch13) {
client_->CheckErrorCode(SSL_ERROR_NO_CYPHER_OVERLAP);
}
+// Replace the key share in the server key exchange message with one that's
+// larger than 8192 bits.
+class TooLongDHEServerKEXFilter : public TlsHandshakeFilter {
+ public:
+ TooLongDHEServerKEXFilter(const std::shared_ptr<TlsAgent>& server)
+ : TlsHandshakeFilter(server, {kTlsHandshakeServerKeyExchange}) {}
+
+ protected:
+ virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
+ const DataBuffer& input,
+ DataBuffer* output) {
+ // Replace the server key exchange message very large DH shares that are
+ // not supported by NSS.
+ const uint32_t share_len = 0x401;
+ const uint8_t zero_share[share_len] = {0x80};
+ size_t offset = 0;
+ // Write dh_p.
+ offset = output->Write(offset, share_len, 2);
+ offset = output->Write(offset, zero_share, share_len);
+ // Write dh_g.
+ offset = output->Write(offset, share_len, 2);
+ offset = output->Write(offset, zero_share, share_len);
+ // Write dh_Y.
+ offset = output->Write(offset, share_len, 2);
+ offset = output->Write(offset, zero_share, share_len);
+
+ return CHANGE;
+ }
+};
+
+TEST_P(TlsConnectGenericPre13, TooBigDHGroup) {
+ EnableOnlyDheCiphers();
+ MakeTlsFilter<TooLongDHEServerKEXFilter>(server_);
+ client_->SetOption(SSL_REQUIRE_DH_NAMED_GROUPS, PR_FALSE);
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+ server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT);
+ client_->CheckErrorCode(SSL_ERROR_DH_KEY_TOO_LONG);
+}
+
// Even though the client doesn't have DHE groups enabled the server assumes it
// does. The client requires named groups and thus does not accept FF3072 as
// custom group in contrast to the previous test.
@@ -546,9 +585,9 @@ TEST_P(TlsConnectTls13, ResumeFfdhe) {
class TlsDheSkeChangeSignature : public TlsHandshakeFilter {
public:
- TlsDheSkeChangeSignature(const std::shared_ptr<TlsAgent>& agent,
- uint16_t version, const uint8_t* data, size_t len)
- : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}),
+ TlsDheSkeChangeSignature(const std::shared_ptr<TlsAgent>& a, uint16_t version,
+ const uint8_t* data, size_t len)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}),
version_(version),
data_(data),
len_(len) {}
diff --git a/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc
index ee8906deb5..e5b52ff06b 100644
--- a/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_drop_unittest.cc
@@ -66,7 +66,8 @@ TEST_P(TlsConnectDatagramPre13, DropServerSecondFlightThrice) {
Connect();
}
-class TlsDropDatagram13 : public TlsConnectDatagram13 {
+class TlsDropDatagram13 : public TlsConnectDatagram13,
+ public ::testing::WithParamInterface<bool> {
public:
TlsDropDatagram13()
: client_filters_(),
@@ -77,6 +78,9 @@ class TlsDropDatagram13 : public TlsConnectDatagram13 {
void SetUp() override {
TlsConnectDatagram13::SetUp();
ConfigureSessionCache(RESUME_NONE, RESUME_NONE);
+ int short_header = GetParam() ? PR_TRUE : PR_FALSE;
+ client_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, short_header);
+ server_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, short_header);
SetFilters();
}
@@ -138,10 +142,13 @@ class TlsDropDatagram13 : public TlsConnectDatagram13 {
void CheckAcks(const DropAckChain& chain, size_t index,
std::vector<uint64_t> acks) {
const DataBuffer& buf = chain.ack_->record(index).buffer;
- size_t offset = 0;
+ size_t offset = 2;
+ uint64_t len;
- EXPECT_EQ(acks.size() * 8, buf.len());
- if ((acks.size() * 8) != buf.len()) {
+ EXPECT_EQ(2 + acks.size() * 8, buf.len());
+ ASSERT_TRUE(buf.Read(0, 2, &len));
+ ASSERT_EQ(static_cast<size_t>(len + 2), buf.len());
+ if ((2 + acks.size() * 8) != buf.len()) {
while (offset < buf.len()) {
uint64_t ack;
ASSERT_TRUE(buf.Read(offset, 8, &ack));
@@ -186,7 +193,7 @@ class TlsDropDatagram13 : public TlsConnectDatagram13 {
// to the client upon receiving the client Finished.
// Dropping complete first and second flights does not produce
// ACKs
-TEST_F(TlsDropDatagram13, DropClientFirstFlightOnce) {
+TEST_P(TlsDropDatagram13, DropClientFirstFlightOnce) {
client_filters_.drop_->Reset({0});
StartConnect();
client_->Handshake();
@@ -195,7 +202,7 @@ TEST_F(TlsDropDatagram13, DropClientFirstFlightOnce) {
CheckAcks(server_filters_, 0, {0x0002000000000000ULL});
}
-TEST_F(TlsDropDatagram13, DropServerFirstFlightOnce) {
+TEST_P(TlsDropDatagram13, DropServerFirstFlightOnce) {
server_filters_.drop_->Reset(0xff);
StartConnect();
client_->Handshake();
@@ -209,7 +216,7 @@ TEST_F(TlsDropDatagram13, DropServerFirstFlightOnce) {
// Dropping the server's first record also does not produce
// an ACK because the next record is ignored.
// TODO(ekr@rtfm.com): We should generate an empty ACK.
-TEST_F(TlsDropDatagram13, DropServerFirstRecordOnce) {
+TEST_P(TlsDropDatagram13, DropServerFirstRecordOnce) {
server_filters_.drop_->Reset({0});
StartConnect();
client_->Handshake();
@@ -221,7 +228,7 @@ TEST_F(TlsDropDatagram13, DropServerFirstRecordOnce) {
// Dropping the second packet of the server's flight should
// produce an ACK.
-TEST_F(TlsDropDatagram13, DropServerSecondRecordOnce) {
+TEST_P(TlsDropDatagram13, DropServerSecondRecordOnce) {
server_filters_.drop_->Reset({1});
StartConnect();
client_->Handshake();
@@ -235,7 +242,7 @@ TEST_F(TlsDropDatagram13, DropServerSecondRecordOnce) {
// Drop the server ACK and verify that the client retransmits
// the ClientHello.
-TEST_F(TlsDropDatagram13, DropServerAckOnce) {
+TEST_P(TlsDropDatagram13, DropServerAckOnce) {
StartConnect();
client_->Handshake();
server_->Handshake();
@@ -263,7 +270,7 @@ TEST_F(TlsDropDatagram13, DropServerAckOnce) {
}
// Drop the client certificate verify.
-TEST_F(TlsDropDatagram13, DropClientCertVerify) {
+TEST_P(TlsDropDatagram13, DropClientCertVerify) {
StartConnect();
client_->SetupClientAuth();
server_->RequestClientAuth(true);
@@ -284,7 +291,7 @@ TEST_F(TlsDropDatagram13, DropClientCertVerify) {
}
// Shrink the MTU down so that certs get split and drop the first piece.
-TEST_F(TlsDropDatagram13, DropFirstHalfOfServerCertificate) {
+TEST_P(TlsDropDatagram13, DropFirstHalfOfServerCertificate) {
server_filters_.drop_->Reset({2});
StartConnect();
ShrinkPostServerHelloMtu();
@@ -311,7 +318,7 @@ TEST_F(TlsDropDatagram13, DropFirstHalfOfServerCertificate) {
}
// Shrink the MTU down so that certs get split and drop the second piece.
-TEST_F(TlsDropDatagram13, DropSecondHalfOfServerCertificate) {
+TEST_P(TlsDropDatagram13, DropSecondHalfOfServerCertificate) {
server_filters_.drop_->Reset({3});
StartConnect();
ShrinkPostServerHelloMtu();
@@ -524,11 +531,11 @@ class TlsFragmentationAndRecoveryTest : public TlsDropDatagram13 {
size_t cert_len_;
};
-TEST_F(TlsFragmentationAndRecoveryTest, DropFirstHalf) { RunTest(0); }
+TEST_P(TlsFragmentationAndRecoveryTest, DropFirstHalf) { RunTest(0); }
-TEST_F(TlsFragmentationAndRecoveryTest, DropSecondHalf) { RunTest(1); }
+TEST_P(TlsFragmentationAndRecoveryTest, DropSecondHalf) { RunTest(1); }
-TEST_F(TlsDropDatagram13, NoDropsDuringZeroRtt) {
+TEST_P(TlsDropDatagram13, NoDropsDuringZeroRtt) {
SetupForZeroRtt();
SetFilters();
std::cerr << "Starting second handshake" << std::endl;
@@ -546,7 +553,7 @@ TEST_F(TlsDropDatagram13, NoDropsDuringZeroRtt) {
0x0002000000000000ULL}); // Finished
}
-TEST_F(TlsDropDatagram13, DropEEDuringZeroRtt) {
+TEST_P(TlsDropDatagram13, DropEEDuringZeroRtt) {
SetupForZeroRtt();
SetFilters();
std::cerr << "Starting second handshake" << std::endl;
@@ -591,7 +598,7 @@ class TlsReorderDatagram13 : public TlsDropDatagram13 {
// Reorder the server records so that EE comes at the end
// of the flight and will still produce an ACK.
-TEST_F(TlsDropDatagram13, ReorderServerEE) {
+TEST_P(TlsDropDatagram13, ReorderServerEE) {
server_filters_.drop_->Reset({1});
StartConnect();
client_->Handshake();
@@ -647,7 +654,7 @@ class TlsSendCipherSpecCapturer {
std::vector<std::shared_ptr<TlsCipherSpec>> send_cipher_specs_;
};
-TEST_F(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) {
+TEST_P(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) {
StartConnect();
TlsSendCipherSpecCapturer capturer(client_);
client_->Handshake();
@@ -662,9 +669,9 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) {
auto spec = capturer.spec(0);
ASSERT_NE(nullptr, spec.get());
ASSERT_EQ(2, spec->epoch());
- ASSERT_TRUE(client_->SendEncryptedRecord(
- spec, SSL_LIBRARY_VERSION_DTLS_1_2_WIRE, 0x0002000000000002,
- kTlsApplicationDataType, DataBuffer(buf, sizeof(buf))));
+ ASSERT_TRUE(client_->SendEncryptedRecord(spec, 0x0002000000000002,
+ kTlsApplicationDataType,
+ DataBuffer(buf, sizeof(buf))));
// Now have the server consume the bogus message.
server_->ExpectSendAlert(illegal_parameter, kTlsAlertFatal);
@@ -673,7 +680,7 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderAppWithHandshakeKey) {
EXPECT_EQ(SSL_ERROR_RX_UNKNOWN_RECORD_TYPE, PORT_GetError());
}
-TEST_F(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) {
+TEST_P(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) {
StartConnect();
TlsSendCipherSpecCapturer capturer(client_);
client_->Handshake();
@@ -688,9 +695,9 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) {
auto spec = capturer.spec(0);
ASSERT_NE(nullptr, spec.get());
ASSERT_EQ(2, spec->epoch());
- ASSERT_TRUE(client_->SendEncryptedRecord(
- spec, SSL_LIBRARY_VERSION_DTLS_1_2_WIRE, 0x0002000000000002,
- kTlsHandshakeType, DataBuffer(buf, sizeof(buf))));
+ ASSERT_TRUE(client_->SendEncryptedRecord(spec, 0x0002000000000002,
+ kTlsHandshakeType,
+ DataBuffer(buf, sizeof(buf))));
server_->Handshake();
EXPECT_EQ(2UL, server_filters_.ack_->count());
// The server acknowledges client Finished twice.
@@ -700,7 +707,7 @@ TEST_F(TlsDropDatagram13, SendOutOfOrderHsNonsenseWithHandshakeKey) {
// Shrink the MTU down so that certs get split and then swap the first and
// second pieces of the server certificate.
-TEST_F(TlsReorderDatagram13, ReorderServerCertificate) {
+TEST_P(TlsReorderDatagram13, ReorderServerCertificate) {
StartConnect();
ShrinkPostServerHelloMtu();
client_->Handshake();
@@ -722,7 +729,7 @@ TEST_F(TlsReorderDatagram13, ReorderServerCertificate) {
CheckAcks(server_filters_, 0, {0x0002000000000000ULL});
}
-TEST_F(TlsReorderDatagram13, DataAfterEOEDDuringZeroRtt) {
+TEST_P(TlsReorderDatagram13, DataAfterEOEDDuringZeroRtt) {
SetupForZeroRtt();
SetFilters();
std::cerr << "Starting second handshake" << std::endl;
@@ -761,7 +768,7 @@ TEST_F(TlsReorderDatagram13, DataAfterEOEDDuringZeroRtt) {
EXPECT_EQ(PR_WOULD_BLOCK_ERROR, PORT_GetError());
}
-TEST_F(TlsReorderDatagram13, DataAfterFinDuringZeroRtt) {
+TEST_P(TlsReorderDatagram13, DataAfterFinDuringZeroRtt) {
SetupForZeroRtt();
SetFilters();
std::cerr << "Starting second handshake" << std::endl;
@@ -812,12 +819,17 @@ static void GetCipherAndLimit(uint16_t version, uint16_t* cipher,
*cipher = TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256;
*limit = (1ULL << 48) - 1;
} else {
+ // This test probably isn't especially useful for TLS 1.3, which has a much
+ // shorter sequence number encoding. That space can probably be searched in
+ // a reasonable amount of time.
*cipher = TLS_CHACHA20_POLY1305_SHA256;
- *limit = (1ULL << 48) - 1;
+ // Assume that we are starting with an expected sequence number of 0.
+ *limit = (1ULL << 29) - 1;
}
}
// This simulates a huge number of drops on one side.
+// See Bug 12965514 where a large gap was handled very inefficiently.
TEST_P(TlsConnectDatagram, MissLotsOfPackets) {
uint16_t cipher;
uint64_t limit;
@@ -834,6 +846,17 @@ TEST_P(TlsConnectDatagram, MissLotsOfPackets) {
SendReceive();
}
+// Send a sequence number of 0xfffffffd and it should be interpreted as that
+// (and not -3 or UINT64_MAX - 2).
+TEST_F(TlsConnectDatagram13, UnderflowSequenceNumber) {
+ Connect();
+ // This is only valid if short headers are disabled.
+ client_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, PR_FALSE);
+ EXPECT_EQ(SECSuccess,
+ SSLInt_AdvanceWriteSeqNum(client_->ssl_fd(), (1ULL << 30) - 3));
+ SendReceive();
+}
+
class TlsConnectDatagram12Plus : public TlsConnectDatagram {
public:
TlsConnectDatagram12Plus() : TlsConnectDatagram() {}
@@ -861,9 +884,54 @@ TEST_P(TlsConnectDatagram12Plus, MissAWindowAndOne) {
SendReceive();
}
+// This filter replaces the first record it sees with junk application data.
+class TlsReplaceFirstRecordWithJunk : public TlsRecordFilter {
+ public:
+ TlsReplaceFirstRecordWithJunk(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a), replaced_(false) {}
+
+ protected:
+ PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
+ const DataBuffer& record, size_t* offset,
+ DataBuffer* output) override {
+ if (replaced_) {
+ return KEEP;
+ }
+ replaced_ = true;
+ TlsRecordHeader out_header(header.variant(), header.version(),
+ kTlsApplicationDataType,
+ header.sequence_number());
+
+ static const uint8_t junk[] = {1, 2, 3, 4};
+ *offset = out_header.Write(output, *offset, DataBuffer(junk, sizeof(junk)));
+ return CHANGE;
+ }
+
+ private:
+ bool replaced_;
+};
+
+// DTLS needs to discard application_data that it receives prior to handshake
+// completion, not generate an error.
+TEST_P(TlsConnectDatagram, ReplaceFirstServerRecordWithApplicationData) {
+ MakeTlsFilter<TlsReplaceFirstRecordWithJunk>(server_);
+ Connect();
+}
+
+TEST_P(TlsConnectDatagram, ReplaceFirstClientRecordWithApplicationData) {
+ MakeTlsFilter<TlsReplaceFirstRecordWithJunk>(client_);
+ Connect();
+}
+
INSTANTIATE_TEST_CASE_P(Datagram12Plus, TlsConnectDatagram12Plus,
TlsConnectTestBase::kTlsV12Plus);
INSTANTIATE_TEST_CASE_P(DatagramPre13, TlsConnectDatagramPre13,
TlsConnectTestBase::kTlsV11V12);
+INSTANTIATE_TEST_CASE_P(DatagramDrop13, TlsDropDatagram13,
+ ::testing::Values(true, false));
+INSTANTIATE_TEST_CASE_P(DatagramReorder13, TlsReorderDatagram13,
+ ::testing::Values(true, false));
+INSTANTIATE_TEST_CASE_P(DatagramFragment13, TlsFragmentationAndRecoveryTest,
+ ::testing::Values(true, false));
} // namespace nss_test
diff --git a/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc
index 3c7cd2ecfa..12c6e8516c 100644
--- a/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_ecdh_unittest.cc
@@ -192,8 +192,8 @@ TEST_P(TlsConnectGenericPre13, P384PriorityFromModelSocket) {
class TlsKeyExchangeGroupCapture : public TlsHandshakeFilter {
public:
- TlsKeyExchangeGroupCapture(const std::shared_ptr<TlsAgent> &agent)
- : TlsHandshakeFilter(agent, {kTlsHandshakeServerKeyExchange}),
+ TlsKeyExchangeGroupCapture(const std::shared_ptr<TlsAgent> &a)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerKeyExchange}),
group_(ssl_grp_none) {}
SSLNamedGroup group() const { return group_; }
@@ -559,6 +559,113 @@ TEST_P(TlsConnectGenericPre13, ConnectECDHEmptyClientPoint) {
server_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH);
}
+// Damage ECParams/ECPoint of a SKE.
+class ECCServerKEXDamager : public TlsHandshakeFilter {
+ public:
+ ECCServerKEXDamager(const std::shared_ptr<TlsAgent> &server, ECType ec_type,
+ SSLNamedGroup named_curve)
+ : TlsHandshakeFilter(server, {kTlsHandshakeServerKeyExchange}),
+ ec_type_(ec_type),
+ named_curve_(named_curve) {}
+
+ protected:
+ virtual PacketFilter::Action FilterHandshake(const HandshakeHeader &header,
+ const DataBuffer &input,
+ DataBuffer *output) {
+ size_t offset = 0;
+ output->Allocate(5);
+ offset = output->Write(offset, ec_type_, 1);
+ offset = output->Write(offset, named_curve_, 2);
+ // Write a point with fmt != EC_POINT_FORM_UNCOMPRESSED.
+ offset = output->Write(offset, 1U, 1);
+ (void)output->Write(offset, 0x02, 1); // EC_POINT_FORM_COMPRESSED_Y0
+ return CHANGE;
+ }
+
+ private:
+ ECType ec_type_;
+ SSLNamedGroup named_curve_;
+};
+
+TEST_P(TlsConnectGenericPre13, ConnectUnsupportedCurveType) {
+ EnsureTlsSetup();
+ client_->DisableAllCiphers();
+ client_->EnableCiphersByKeyExchange(ssl_kea_ecdh);
+
+ MakeTlsFilter<ECCServerKEXDamager>(server_, ec_type_explicitPrime,
+ ssl_grp_none);
+ ConnectExpectAlert(client_, kTlsAlertHandshakeFailure);
+ client_->CheckErrorCode(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE);
+}
+
+TEST_P(TlsConnectGenericPre13, ConnectUnsupportedCurve) {
+ EnsureTlsSetup();
+ client_->DisableAllCiphers();
+ client_->EnableCiphersByKeyExchange(ssl_kea_ecdh);
+
+ MakeTlsFilter<ECCServerKEXDamager>(server_, ec_type_named,
+ ssl_grp_ffdhe_2048);
+ ConnectExpectAlert(client_, kTlsAlertHandshakeFailure);
+ client_->CheckErrorCode(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE);
+}
+
+TEST_P(TlsConnectGenericPre13, ConnectUnsupportedPointFormat) {
+ EnsureTlsSetup();
+ client_->DisableAllCiphers();
+ client_->EnableCiphersByKeyExchange(ssl_kea_ecdh);
+
+ MakeTlsFilter<ECCServerKEXDamager>(server_, ec_type_named,
+ ssl_grp_ec_secp256r1);
+ ConnectExpectAlert(client_, kTlsAlertHandshakeFailure);
+ client_->CheckErrorCode(SEC_ERROR_UNSUPPORTED_EC_POINT_FORM);
+}
+
+// Replace SignatureAndHashAlgorithm of a SKE.
+class ECCServerKEXSigAlgReplacer : public TlsHandshakeFilter {
+ public:
+ ECCServerKEXSigAlgReplacer(const std::shared_ptr<TlsAgent> &server,
+ SSLSignatureScheme sig_scheme)
+ : TlsHandshakeFilter(server, {kTlsHandshakeServerKeyExchange}),
+ sig_scheme_(sig_scheme) {}
+
+ protected:
+ virtual PacketFilter::Action FilterHandshake(const HandshakeHeader &header,
+ const DataBuffer &input,
+ DataBuffer *output) {
+ *output = input;
+
+ uint32_t point_len;
+ EXPECT_TRUE(output->Read(3, 1, &point_len));
+ output->Write(4 + point_len, sig_scheme_, 2);
+
+ return CHANGE;
+ }
+
+ private:
+ SSLSignatureScheme sig_scheme_;
+};
+
+TEST_P(TlsConnectTls12, ConnectUnsupportedSigAlg) {
+ EnsureTlsSetup();
+ client_->DisableAllCiphers();
+ client_->EnableCiphersByKeyExchange(ssl_kea_ecdh);
+
+ MakeTlsFilter<ECCServerKEXSigAlgReplacer>(server_, ssl_sig_none);
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+ client_->CheckErrorCode(SSL_ERROR_UNSUPPORTED_SIGNATURE_ALGORITHM);
+}
+
+TEST_P(TlsConnectTls12, ConnectIncorrectSigAlg) {
+ EnsureTlsSetup();
+ client_->DisableAllCiphers();
+ client_->EnableCiphersByKeyExchange(ssl_kea_ecdh);
+
+ MakeTlsFilter<ECCServerKEXSigAlgReplacer>(server_,
+ ssl_sig_ecdsa_secp256r1_sha256);
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+ client_->CheckErrorCode(SSL_ERROR_INCORRECT_SIGNATURE_ALGORITHM);
+}
+
INSTANTIATE_TEST_CASE_P(KeyExchangeTest, TlsKeyExchangeTest,
::testing::Combine(TlsConnectTestBase::kTlsVariantsAll,
TlsConnectTestBase::kTlsV11Plus));
diff --git a/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc
index 0453dabdb6..6965e9ca75 100644
--- a/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc
@@ -19,9 +19,9 @@ namespace nss_test {
class TlsExtensionTruncator : public TlsExtensionFilter {
public:
- TlsExtensionTruncator(const std::shared_ptr<TlsAgent>& agent,
- uint16_t extension, size_t length)
- : TlsExtensionFilter(agent), extension_(extension), length_(length) {}
+ TlsExtensionTruncator(const std::shared_ptr<TlsAgent>& a, uint16_t extension,
+ size_t length)
+ : TlsExtensionFilter(a), extension_(extension), length_(length) {}
virtual PacketFilter::Action FilterExtension(uint16_t extension_type,
const DataBuffer& input,
DataBuffer* output) {
@@ -43,9 +43,9 @@ class TlsExtensionTruncator : public TlsExtensionFilter {
class TlsExtensionDamager : public TlsExtensionFilter {
public:
- TlsExtensionDamager(const std::shared_ptr<TlsAgent>& agent,
- uint16_t extension, size_t index)
- : TlsExtensionFilter(agent), extension_(extension), index_(index) {}
+ TlsExtensionDamager(const std::shared_ptr<TlsAgent>& a, uint16_t extension,
+ size_t index)
+ : TlsExtensionFilter(a), extension_(extension), index_(index) {}
virtual PacketFilter::Action FilterExtension(uint16_t extension_type,
const DataBuffer& input,
DataBuffer* output) {
@@ -65,11 +65,9 @@ class TlsExtensionDamager : public TlsExtensionFilter {
class TlsExtensionAppender : public TlsHandshakeFilter {
public:
- TlsExtensionAppender(const std::shared_ptr<TlsAgent>& agent,
+ TlsExtensionAppender(const std::shared_ptr<TlsAgent>& a,
uint8_t handshake_type, uint16_t ext, DataBuffer& data)
- : TlsHandshakeFilter(agent, {handshake_type}),
- extension_(ext),
- data_(data) {}
+ : TlsHandshakeFilter(a, {handshake_type}), extension_(ext), data_(data) {}
virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
const DataBuffer& input,
@@ -323,7 +321,15 @@ TEST_P(TlsExtensionTestGeneric, AlpnMissingValue) {
TEST_P(TlsExtensionTestGeneric, AlpnZeroLength) {
EnableAlpn();
- const uint8_t val[] = {0x01, 0x61, 0x00};
+ const uint8_t val[] = {0x00, 0x03, 0x01, 0x61, 0x00};
+ DataBuffer extension(val, sizeof(val));
+ ClientHelloErrorTest(std::make_shared<TlsExtensionReplacer>(
+ client_, ssl_app_layer_protocol_xtn, extension));
+}
+
+TEST_P(TlsExtensionTestGeneric, AlpnLengthOverflow) {
+ EnableAlpn();
+ const uint8_t val[] = {0x00, 0x03, 0x01, 0x61, 0x01};
DataBuffer extension(val, sizeof(val));
ClientHelloErrorTest(std::make_shared<TlsExtensionReplacer>(
client_, ssl_app_layer_protocol_xtn, extension));
@@ -628,12 +634,9 @@ typedef std::function<void(TlsPreSharedKeyReplacer*)>
class TlsPreSharedKeyReplacer : public TlsExtensionFilter {
public:
- TlsPreSharedKeyReplacer(const std::shared_ptr<TlsAgent>& agent,
+ TlsPreSharedKeyReplacer(const std::shared_ptr<TlsAgent>& a,
TlsPreSharedKeyReplacerFunc function)
- : TlsExtensionFilter(agent),
- identities_(),
- binders_(),
- function_(function) {}
+ : TlsExtensionFilter(a), identities_(), binders_(), function_(function) {}
static size_t CopyAndMaybeReplace(TlsParser* parser, size_t size,
const std::unique_ptr<DataBuffer>& replace,
diff --git a/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc
index f4940bf282..92947c2c70 100644
--- a/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_fragment_unittest.cc
@@ -20,14 +20,16 @@ namespace nss_test {
// This class cuts every unencrypted handshake record into two parts.
class RecordFragmenter : public PacketFilter {
public:
- RecordFragmenter() : sequence_number_(0), splitting_(true) {}
+ RecordFragmenter(bool is_dtls13)
+ : is_dtls13_(is_dtls13), sequence_number_(0), splitting_(true) {}
private:
class HandshakeSplitter {
public:
- HandshakeSplitter(const DataBuffer& input, DataBuffer* output,
- uint64_t* sequence_number)
- : input_(input),
+ HandshakeSplitter(bool is_dtls13, const DataBuffer& input,
+ DataBuffer* output, uint64_t* sequence_number)
+ : is_dtls13_(is_dtls13),
+ input_(input),
output_(output),
cursor_(0),
sequence_number_(sequence_number) {}
@@ -35,9 +37,9 @@ class RecordFragmenter : public PacketFilter {
private:
void WriteRecord(TlsRecordHeader& record_header,
DataBuffer& record_fragment) {
- TlsRecordHeader fragment_header(record_header.version(),
- record_header.content_type(),
- *sequence_number_);
+ TlsRecordHeader fragment_header(
+ record_header.variant(), record_header.version(),
+ record_header.content_type(), *sequence_number_);
++*sequence_number_;
if (::g_ssl_gtest_verbose) {
std::cerr << "Fragment: " << fragment_header << ' ' << record_fragment
@@ -88,7 +90,7 @@ class RecordFragmenter : public PacketFilter {
while (parser.remaining()) {
TlsRecordHeader header;
DataBuffer record;
- if (!header.Parse(0, &parser, &record)) {
+ if (!header.Parse(is_dtls13_, 0, &parser, &record)) {
ADD_FAILURE() << "bad record header";
return false;
}
@@ -118,6 +120,7 @@ class RecordFragmenter : public PacketFilter {
}
private:
+ bool is_dtls13_;
const DataBuffer& input_;
DataBuffer* output_;
size_t cursor_;
@@ -132,7 +135,7 @@ class RecordFragmenter : public PacketFilter {
}
output->Allocate(input.len());
- HandshakeSplitter splitter(input, output, &sequence_number_);
+ HandshakeSplitter splitter(is_dtls13_, input, output, &sequence_number_);
if (!splitter.Split()) {
// If splitting fails, we obviously reached encrypted packets.
// Stop splitting from that point onward.
@@ -144,18 +147,21 @@ class RecordFragmenter : public PacketFilter {
}
private:
+ bool is_dtls13_;
uint64_t sequence_number_;
bool splitting_;
};
TEST_P(TlsConnectDatagram, FragmentClientPackets) {
- client_->SetFilter(std::make_shared<RecordFragmenter>());
+ bool is_dtls13 = version_ >= SSL_LIBRARY_VERSION_TLS_1_3;
+ client_->SetFilter(std::make_shared<RecordFragmenter>(is_dtls13));
Connect();
SendReceive();
}
TEST_P(TlsConnectDatagram, FragmentServerPackets) {
- server_->SetFilter(std::make_shared<RecordFragmenter>());
+ bool is_dtls13 = version_ >= SSL_LIBRARY_VERSION_TLS_1_3;
+ server_->SetFilter(std::make_shared<RecordFragmenter>(is_dtls13));
Connect();
SendReceive();
}
diff --git a/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc
index 99448321c5..f0afc9118a 100644
--- a/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_fuzz_unittest.cc
@@ -27,8 +27,8 @@ class TlsFuzzTest : public ::testing::Test {};
// Record the application data stream.
class TlsApplicationDataRecorder : public TlsRecordFilter {
public:
- TlsApplicationDataRecorder(const std::shared_ptr<TlsAgent>& agent)
- : TlsRecordFilter(agent), buffer_() {}
+ TlsApplicationDataRecorder(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a), buffer_() {}
virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
const DataBuffer& input,
diff --git a/security/nss/gtests/ssl_gtest/ssl_gtest.gyp b/security/nss/gtests/ssl_gtest/ssl_gtest.gyp
index e2a8d830ac..17677713d6 100644
--- a/security/nss/gtests/ssl_gtest/ssl_gtest.gyp
+++ b/security/nss/gtests/ssl_gtest/ssl_gtest.gyp
@@ -37,6 +37,7 @@
'ssl_loopback_unittest.cc',
'ssl_misc_unittest.cc',
'ssl_record_unittest.cc',
+ 'ssl_recordsize_unittest.cc',
'ssl_resumption_unittest.cc',
'ssl_renegotiation_unittest.cc',
'ssl_skip_unittest.cc',
diff --git a/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc
index 05ae870348..77b335e86b 100644
--- a/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_hrr_unittest.cc
@@ -69,8 +69,8 @@ TEST_P(TlsConnectTls13, HelloRetryRequestAbortsZeroRtt) {
// handshake packets, this will break.
class CorrectMessageSeqAfterHrrFilter : public TlsRecordFilter {
public:
- CorrectMessageSeqAfterHrrFilter(const std::shared_ptr<TlsAgent>& agent)
- : TlsRecordFilter(agent) {}
+ CorrectMessageSeqAfterHrrFilter(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a) {}
protected:
PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
@@ -81,8 +81,9 @@ class CorrectMessageSeqAfterHrrFilter : public TlsRecordFilter {
}
DataBuffer buffer(record);
- TlsRecordHeader new_header = {header.version(), header.content_type(),
- header.sequence_number() + 1};
+ TlsRecordHeader new_header(header.variant(), header.version(),
+ header.content_type(),
+ header.sequence_number() + 1);
// Correct message_seq.
buffer.Write(4, 1U, 2);
@@ -151,8 +152,8 @@ TEST_P(TlsConnectTls13, SecondClientHelloRejectEarlyDataXtn) {
class KeyShareReplayer : public TlsExtensionFilter {
public:
- KeyShareReplayer(const std::shared_ptr<TlsAgent>& agent)
- : TlsExtensionFilter(agent) {}
+ KeyShareReplayer(const std::shared_ptr<TlsAgent>& a)
+ : TlsExtensionFilter(a) {}
virtual PacketFilter::Action FilterExtension(uint16_t extension_type,
const DataBuffer& input,
@@ -567,6 +568,28 @@ void TriggerHelloRetryRequest(std::shared_ptr<TlsAgent>& client,
client->Handshake();
server->Handshake();
EXPECT_EQ(1U, cb_called);
+ // Stop the callback from being called in future handshakes.
+ EXPECT_EQ(SECSuccess,
+ SSL_HelloRetryRequestCallback(server->ssl_fd(), nullptr, nullptr));
+}
+
+TEST_P(TlsConnectTls13, VersionNumbersAfterRetry) {
+ ConfigureSelfEncrypt();
+ EnsureTlsSetup();
+ auto r = MakeTlsFilter<TlsRecordRecorder>(client_);
+ TriggerHelloRetryRequest(client_, server_);
+ Handshake();
+ ASSERT_GT(r->count(), 1UL);
+ auto ch1 = r->record(0);
+ if (ch1.header.is_dtls()) {
+ ASSERT_EQ(SSL_LIBRARY_VERSION_TLS_1_1, ch1.header.version());
+ } else {
+ ASSERT_EQ(SSL_LIBRARY_VERSION_TLS_1_0, ch1.header.version());
+ }
+ auto ch2 = r->record(1);
+ ASSERT_EQ(SSL_LIBRARY_VERSION_TLS_1_2, ch2.header.version());
+
+ CheckConnected();
}
TEST_P(TlsConnectTls13, RetryStateless) {
@@ -577,6 +600,7 @@ TEST_P(TlsConnectTls13, RetryStateless) {
MakeNewServer();
Handshake();
+ CheckConnected();
SendReceive();
}
@@ -593,6 +617,68 @@ TEST_P(TlsConnectTls13, RetryStatefulDropCookie) {
server_->CheckErrorCode(SSL_ERROR_MISSING_COOKIE_EXTENSION);
}
+class TruncateHrrCookie : public TlsExtensionFilter {
+ public:
+ TruncateHrrCookie(const std::shared_ptr<TlsAgent>& a)
+ : TlsExtensionFilter(a) {}
+ virtual PacketFilter::Action FilterExtension(uint16_t extension_type,
+ const DataBuffer& input,
+ DataBuffer* output) {
+ if (extension_type != ssl_tls13_cookie_xtn) {
+ return KEEP;
+ }
+
+ // Claim a zero-length cookie.
+ output->Allocate(2);
+ output->Write(0, static_cast<uint32_t>(0), 2);
+ return CHANGE;
+ }
+};
+
+TEST_P(TlsConnectTls13, RetryCookieEmpty) {
+ ConfigureSelfEncrypt();
+ EnsureTlsSetup();
+
+ TriggerHelloRetryRequest(client_, server_);
+ MakeTlsFilter<TruncateHrrCookie>(client_);
+
+ ExpectAlert(server_, kTlsAlertHandshakeFailure);
+ Handshake();
+ client_->CheckErrorCode(SSL_ERROR_NO_CYPHER_OVERLAP);
+ server_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO);
+}
+
+class AddJunkToCookie : public TlsExtensionFilter {
+ public:
+ AddJunkToCookie(const std::shared_ptr<TlsAgent>& a) : TlsExtensionFilter(a) {}
+ virtual PacketFilter::Action FilterExtension(uint16_t extension_type,
+ const DataBuffer& input,
+ DataBuffer* output) {
+ if (extension_type != ssl_tls13_cookie_xtn) {
+ return KEEP;
+ }
+
+ *output = input;
+ // Add junk after the cookie.
+ static const uint8_t junk[2] = {1, 2};
+ output->Append(DataBuffer(junk, sizeof(junk)));
+ return CHANGE;
+ }
+};
+
+TEST_P(TlsConnectTls13, RetryCookieWithExtras) {
+ ConfigureSelfEncrypt();
+ EnsureTlsSetup();
+
+ TriggerHelloRetryRequest(client_, server_);
+ MakeTlsFilter<AddJunkToCookie>(client_);
+
+ ExpectAlert(server_, kTlsAlertHandshakeFailure);
+ Handshake();
+ client_->CheckErrorCode(SSL_ERROR_NO_CYPHER_OVERLAP);
+ server_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO);
+}
+
// Stream only because DTLS drops bad packets.
TEST_F(TlsConnectStreamTls13, RetryStatelessDamageFirstClientHello) {
ConfigureSelfEncrypt();
@@ -907,7 +993,10 @@ class HelloRetryRequestAgentTest : public TlsAgentTestClient {
hrr_data.Allocate(len + 6);
size_t i = 0;
- i = hrr_data.Write(i, 0x0303, 2);
+ i = hrr_data.Write(i, variant_ == ssl_variant_datagram
+ ? SSL_LIBRARY_VERSION_DTLS_1_2_WIRE
+ : SSL_LIBRARY_VERSION_TLS_1_2,
+ 2);
i = hrr_data.Write(i, ssl_hello_retry_random,
sizeof(ssl_hello_retry_random));
i = hrr_data.Write(i, static_cast<uint32_t>(0), 1); // session_id
@@ -973,6 +1062,39 @@ TEST_P(HelloRetryRequestAgentTest, HandleNoopHelloRetryRequest) {
SSL_ERROR_RX_MALFORMED_HELLO_RETRY_REQUEST);
}
+class ReplaceRandom : public TlsHandshakeFilter {
+ public:
+ ReplaceRandom(const std::shared_ptr<TlsAgent>& a, const DataBuffer& r)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}), random_(r) {}
+
+ PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
+ const DataBuffer& input,
+ DataBuffer* output) override {
+ output->Assign(input);
+ output->Write(2, random_);
+ return CHANGE;
+ }
+
+ private:
+ DataBuffer random_;
+};
+
+// Make sure that the TLS 1.3 special value for the ServerHello.random
+// is rejected by earlier versions.
+TEST_P(TlsConnectStreamPre13, HrrRandomOnTls10) {
+ static const uint8_t hrr_random[] = {
+ 0xCF, 0x21, 0xAD, 0x74, 0xE5, 0x9A, 0x61, 0x11, 0xBE, 0x1D, 0x8C,
+ 0x02, 0x1E, 0x65, 0xB8, 0x91, 0xC2, 0xA2, 0x11, 0x16, 0x7A, 0xBB,
+ 0x8C, 0x5E, 0x07, 0x9E, 0x09, 0xE2, 0xC8, 0xA8, 0x33, 0x9C};
+
+ EnsureTlsSetup();
+ MakeTlsFilter<ReplaceRandom>(server_,
+ DataBuffer(hrr_random, sizeof(hrr_random)));
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+ client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO);
+ server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT);
+}
+
INSTANTIATE_TEST_CASE_P(HelloRetryRequestAgentTests, HelloRetryRequestAgentTest,
::testing::Combine(TlsConnectTestBase::kTlsVariantsAll,
TlsConnectTestBase::kTlsV13));
diff --git a/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc
index f1b78f52fd..5adbd9dc71 100644
--- a/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_loopback_unittest.cc
@@ -56,8 +56,8 @@ TEST_P(TlsConnectGeneric, CipherSuiteMismatch) {
class TlsAlertRecorder : public TlsRecordFilter {
public:
- TlsAlertRecorder(const std::shared_ptr<TlsAgent>& agent)
- : TlsRecordFilter(agent), level_(255), description_(255) {}
+ TlsAlertRecorder(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a), level_(255), description_(255) {}
PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
const DataBuffer& input,
@@ -87,9 +87,9 @@ class TlsAlertRecorder : public TlsRecordFilter {
class HelloTruncator : public TlsHandshakeFilter {
public:
- HelloTruncator(const std::shared_ptr<TlsAgent>& agent)
+ HelloTruncator(const std::shared_ptr<TlsAgent>& a)
: TlsHandshakeFilter(
- agent, {kTlsHandshakeClientHello, kTlsHandshakeServerHello}) {}
+ a, {kTlsHandshakeClientHello, kTlsHandshakeServerHello}) {}
PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
const DataBuffer& input,
DataBuffer* output) override {
@@ -149,6 +149,27 @@ TEST_P(TlsConnectGeneric, ConnectAlpn) {
CheckAlpn("a");
}
+TEST_P(TlsConnectGeneric, ConnectAlpnPriorityA) {
+ // "alpn" "npn"
+ // alpn is the fallback here. npn has the highest priority and should be
+ // picked.
+ const std::vector<uint8_t> alpn = {0x04, 0x61, 0x6c, 0x70, 0x6e,
+ 0x03, 0x6e, 0x70, 0x6e};
+ EnableAlpn(alpn);
+ Connect();
+ CheckAlpn("npn");
+}
+
+TEST_P(TlsConnectGeneric, ConnectAlpnPriorityB) {
+ // "alpn" "npn" "http"
+ // npn has the highest priority and should be picked.
+ const std::vector<uint8_t> alpn = {0x04, 0x61, 0x6c, 0x70, 0x6e, 0x03, 0x6e,
+ 0x70, 0x6e, 0x04, 0x68, 0x74, 0x74, 0x70};
+ EnableAlpn(alpn);
+ Connect();
+ CheckAlpn("npn");
+}
+
TEST_P(TlsConnectGeneric, ConnectAlpnClone) {
EnsureModelSockets();
client_model_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_));
@@ -157,6 +178,33 @@ TEST_P(TlsConnectGeneric, ConnectAlpnClone) {
CheckAlpn("a");
}
+TEST_P(TlsConnectGeneric, ConnectAlpnWithCustomCallbackA) {
+ // "ab" "alpn"
+ const std::vector<uint8_t> client_alpn = {0x02, 0x61, 0x62, 0x04,
+ 0x61, 0x6c, 0x70, 0x6e};
+ EnableAlpnWithCallback(client_alpn, "alpn");
+ Connect();
+ CheckAlpn("alpn");
+}
+
+TEST_P(TlsConnectGeneric, ConnectAlpnWithCustomCallbackB) {
+ // "ab" "alpn"
+ const std::vector<uint8_t> client_alpn = {0x02, 0x61, 0x62, 0x04,
+ 0x61, 0x6c, 0x70, 0x6e};
+ EnableAlpnWithCallback(client_alpn, "ab");
+ Connect();
+ CheckAlpn("ab");
+}
+
+TEST_P(TlsConnectGeneric, ConnectAlpnWithCustomCallbackC) {
+ // "cd" "npn" "alpn"
+ const std::vector<uint8_t> client_alpn = {0x02, 0x63, 0x64, 0x03, 0x6e, 0x70,
+ 0x6e, 0x04, 0x61, 0x6c, 0x70, 0x6e};
+ EnableAlpnWithCallback(client_alpn, "npn");
+ Connect();
+ CheckAlpn("npn");
+}
+
TEST_P(TlsConnectDatagram, ConnectSrtp) {
EnableSrtp();
Connect();
@@ -171,8 +219,8 @@ TEST_P(TlsConnectGeneric, ConnectSendReceive) {
class SaveTlsRecord : public TlsRecordFilter {
public:
- SaveTlsRecord(const std::shared_ptr<TlsAgent>& agent, size_t index)
- : TlsRecordFilter(agent), index_(index), count_(0), contents_() {}
+ SaveTlsRecord(const std::shared_ptr<TlsAgent>& a, size_t index)
+ : TlsRecordFilter(a), index_(index), count_(0), contents_() {}
const DataBuffer& contents() const { return contents_; }
@@ -227,8 +275,8 @@ TEST_F(TlsConnectStreamTls13, DecryptRecordServer) {
class DropTlsRecord : public TlsRecordFilter {
public:
- DropTlsRecord(const std::shared_ptr<TlsAgent>& agent, size_t index)
- : TlsRecordFilter(agent), index_(index), count_(0) {}
+ DropTlsRecord(const std::shared_ptr<TlsAgent>& a, size_t index)
+ : TlsRecordFilter(a), index_(index), count_(0) {}
protected:
PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
@@ -373,8 +421,8 @@ TEST_P(TlsHolddownTest, TestDtlsHolddownExpiryResumption) {
class TlsPreCCSHeaderInjector : public TlsRecordFilter {
public:
- TlsPreCCSHeaderInjector(const std::shared_ptr<TlsAgent>& agent)
- : TlsRecordFilter(agent) {}
+ TlsPreCCSHeaderInjector(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a) {}
virtual PacketFilter::Action FilterRecord(
const TlsRecordHeader& record_header, const DataBuffer& input,
size_t* offset, DataBuffer* output) override {
@@ -383,7 +431,8 @@ class TlsPreCCSHeaderInjector : public TlsRecordFilter {
std::cerr << "Injecting Finished header before CCS\n";
const uint8_t hhdr[] = {kTlsHandshakeFinished, 0x00, 0x00, 0x0c};
DataBuffer hhdr_buf(hhdr, sizeof(hhdr));
- TlsRecordHeader nhdr(record_header.version(), kTlsHandshakeType, 0);
+ TlsRecordHeader nhdr(record_header.variant(), record_header.version(),
+ kTlsHandshakeType, 0);
*offset = nhdr.Write(output, *offset, hhdr_buf);
*offset = record_header.Write(output, *offset, input);
return CHANGE;
diff --git a/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc
index 3b87278501..53b11c61a5 100644
--- a/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_record_unittest.cc
@@ -103,16 +103,14 @@ TEST_P(TlsPaddingTest, LastByteOfPadWrong) {
class RecordReplacer : public TlsRecordFilter {
public:
- RecordReplacer(const std::shared_ptr<TlsAgent>& agent, size_t size)
- : TlsRecordFilter(agent), enabled_(false), size_(size) {}
+ RecordReplacer(const std::shared_ptr<TlsAgent>& a, size_t size)
+ : TlsRecordFilter(a), size_(size) {
+ Disable();
+ }
PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
const DataBuffer& data,
DataBuffer* changed) override {
- if (!enabled_) {
- return KEEP;
- }
-
EXPECT_EQ(kTlsApplicationDataType, header.content_type());
changed->Allocate(size_);
@@ -120,17 +118,33 @@ class RecordReplacer : public TlsRecordFilter {
changed->data()[i] = i & 0xff;
}
- enabled_ = false;
+ Disable();
return CHANGE;
}
- void Enable() { enabled_ = true; }
-
private:
- bool enabled_;
size_t size_;
};
+TEST_P(TlsConnectStream, BadRecordMac) {
+ EnsureTlsSetup();
+ Connect();
+ client_->SetFilter(std::make_shared<TlsRecordLastByteDamager>(client_));
+ ExpectAlert(server_, kTlsAlertBadRecordMac);
+ client_->SendData(10);
+
+ // Read from the client, get error.
+ uint8_t buf[10];
+ PRInt32 rv = PR_Read(server_->ssl_fd(), buf, sizeof(buf));
+ EXPECT_GT(0, rv);
+ EXPECT_EQ(SSL_ERROR_BAD_MAC_READ, PORT_GetError());
+
+ // Read the server alert.
+ rv = PR_Read(client_->ssl_fd(), buf, sizeof(buf));
+ EXPECT_GT(0, rv);
+ EXPECT_EQ(SSL_ERROR_BAD_MAC_ALERT, PORT_GetError());
+}
+
TEST_F(TlsConnectStreamTls13, LargeRecord) {
EnsureTlsSetup();
@@ -168,6 +182,29 @@ TEST_F(TlsConnectStreamTls13, TooLargeRecord) {
EXPECT_EQ(SSL_ERROR_RECORD_OVERFLOW_ALERT, PORT_GetError());
}
+class ShortHeaderChecker : public PacketFilter {
+ public:
+ PacketFilter::Action Filter(const DataBuffer& input, DataBuffer* output) {
+ // The first octet should be 0b001xxxxx.
+ EXPECT_EQ(1, input.data()[0] >> 5);
+ return KEEP;
+ }
+};
+
+TEST_F(TlsConnectDatagram13, ShortHeadersClient) {
+ Connect();
+ client_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, PR_TRUE);
+ client_->SetFilter(std::make_shared<ShortHeaderChecker>());
+ SendReceive();
+}
+
+TEST_F(TlsConnectDatagram13, ShortHeadersServer) {
+ Connect();
+ server_->SetOption(SSL_ENABLE_DTLS_SHORT_HEADER, PR_TRUE);
+ server_->SetFilter(std::make_shared<ShortHeaderChecker>());
+ SendReceive();
+}
+
const static size_t kContentSizesArr[] = {
1, kMacSize - 1, kMacSize, 30, 31, 32, 36, 256, 257, 287, 288};
diff --git a/security/nss/gtests/ssl_gtest/ssl_recordsize_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_recordsize_unittest.cc
new file mode 100644
index 0000000000..00651aec5f
--- /dev/null
+++ b/security/nss/gtests/ssl_gtest/ssl_recordsize_unittest.cc
@@ -0,0 +1,431 @@
+/* -*- Mode: C++; tab-width: 8; 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 "secerr.h"
+#include "ssl.h"
+#include "sslerr.h"
+#include "sslproto.h"
+
+#include "gtest_utils.h"
+#include "scoped_ptrs.h"
+#include "tls_connect.h"
+#include "tls_filter.h"
+#include "tls_parser.h"
+
+namespace nss_test {
+
+// This class tracks the maximum size of record that was sent, both cleartext
+// and plain. It only tracks records that have an outer type of
+// application_data. In TLS 1.3, this includes handshake messages.
+class TlsRecordMaximum : public TlsRecordFilter {
+ public:
+ TlsRecordMaximum(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a), max_ciphertext_(0), max_plaintext_(0) {}
+
+ size_t max_ciphertext() const { return max_ciphertext_; }
+ size_t max_plaintext() const { return max_plaintext_; }
+
+ protected:
+ PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
+ const DataBuffer& record, size_t* offset,
+ DataBuffer* output) override {
+ std::cerr << "max: " << record << std::endl;
+ // Ignore unprotected packets.
+ if (header.content_type() != kTlsApplicationDataType) {
+ return KEEP;
+ }
+
+ max_ciphertext_ = (std::max)(max_ciphertext_, record.len());
+ return TlsRecordFilter::FilterRecord(header, record, offset, output);
+ }
+
+ PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
+ const DataBuffer& data,
+ DataBuffer* changed) override {
+ max_plaintext_ = (std::max)(max_plaintext_, data.len());
+ return KEEP;
+ }
+
+ private:
+ size_t max_ciphertext_;
+ size_t max_plaintext_;
+};
+
+void CheckRecordSizes(const std::shared_ptr<TlsAgent>& agent,
+ const std::shared_ptr<TlsRecordMaximum>& record_max,
+ size_t config) {
+ uint16_t cipher_suite;
+ ASSERT_TRUE(agent->cipher_suite(&cipher_suite));
+
+ size_t expansion;
+ size_t iv;
+ switch (cipher_suite) {
+ case TLS_AES_128_GCM_SHA256:
+ case TLS_AES_256_GCM_SHA384:
+ case TLS_CHACHA20_POLY1305_SHA256:
+ expansion = 16;
+ iv = 0;
+ break;
+
+ case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:
+ expansion = 16;
+ iv = 8;
+ break;
+
+ case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:
+ // Expansion is 20 for the MAC. Maximum block padding is 16. Maximum
+ // padding is added when the input plus the MAC is an exact multiple of
+ // the block size.
+ expansion = 20 + 16 - ((config + 20) % 16);
+ iv = 16;
+ break;
+
+ default:
+ ADD_FAILURE() << "No expansion set for ciphersuite "
+ << agent->cipher_suite_name();
+ return;
+ }
+
+ switch (agent->version()) {
+ case SSL_LIBRARY_VERSION_TLS_1_3:
+ EXPECT_EQ(0U, iv) << "No IV for TLS 1.3";
+ // We only have decryption in TLS 1.3.
+ EXPECT_EQ(config - 1, record_max->max_plaintext())
+ << "bad plaintext length for " << agent->role_str();
+ break;
+
+ case SSL_LIBRARY_VERSION_TLS_1_2:
+ case SSL_LIBRARY_VERSION_TLS_1_1:
+ expansion += iv;
+ break;
+
+ case SSL_LIBRARY_VERSION_TLS_1_0:
+ break;
+
+ default:
+ ADD_FAILURE() << "Unexpected version " << agent->version();
+ return;
+ }
+
+ EXPECT_EQ(config + expansion, record_max->max_ciphertext())
+ << "bad ciphertext length for " << agent->role_str();
+}
+
+TEST_P(TlsConnectGeneric, RecordSizeMaximum) {
+ uint16_t max_record_size =
+ (version_ >= SSL_LIBRARY_VERSION_TLS_1_3) ? 16385 : 16384;
+ size_t send_size = (version_ >= SSL_LIBRARY_VERSION_TLS_1_3)
+ ? max_record_size
+ : max_record_size + 1;
+
+ EnsureTlsSetup();
+ auto client_max = MakeTlsFilter<TlsRecordMaximum>(client_);
+ client_max->EnableDecryption();
+ auto server_max = MakeTlsFilter<TlsRecordMaximum>(server_);
+ server_max->EnableDecryption();
+
+ Connect();
+ client_->SendData(send_size, send_size);
+ server_->SendData(send_size, send_size);
+ server_->ReadBytes(send_size);
+ client_->ReadBytes(send_size);
+
+ CheckRecordSizes(client_, client_max, max_record_size);
+ CheckRecordSizes(server_, server_max, max_record_size);
+}
+
+TEST_P(TlsConnectGeneric, RecordSizeMinimumClient) {
+ EnsureTlsSetup();
+ auto server_max = MakeTlsFilter<TlsRecordMaximum>(server_);
+ server_max->EnableDecryption();
+
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64);
+ Connect();
+ SendReceive(127); // Big enough for one record, allowing for 1+N splitting.
+
+ CheckRecordSizes(server_, server_max, 64);
+}
+
+TEST_P(TlsConnectGeneric, RecordSizeMinimumServer) {
+ EnsureTlsSetup();
+ auto client_max = MakeTlsFilter<TlsRecordMaximum>(client_);
+ client_max->EnableDecryption();
+
+ server_->SetOption(SSL_RECORD_SIZE_LIMIT, 64);
+ Connect();
+ SendReceive(127);
+
+ CheckRecordSizes(client_, client_max, 64);
+}
+
+TEST_P(TlsConnectGeneric, RecordSizeAsymmetric) {
+ EnsureTlsSetup();
+ auto client_max = MakeTlsFilter<TlsRecordMaximum>(client_);
+ client_max->EnableDecryption();
+ auto server_max = MakeTlsFilter<TlsRecordMaximum>(server_);
+ server_max->EnableDecryption();
+
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64);
+ server_->SetOption(SSL_RECORD_SIZE_LIMIT, 100);
+ Connect();
+ SendReceive(127);
+
+ CheckRecordSizes(client_, client_max, 100);
+ CheckRecordSizes(server_, server_max, 64);
+}
+
+// This just modifies the encrypted payload so to include a few extra zeros.
+class TlsRecordExpander : public TlsRecordFilter {
+ public:
+ TlsRecordExpander(const std::shared_ptr<TlsAgent>& a, size_t expansion)
+ : TlsRecordFilter(a), expansion_(expansion) {}
+
+ protected:
+ virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
+ const DataBuffer& data,
+ DataBuffer* changed) {
+ if (header.content_type() != kTlsApplicationDataType) {
+ return KEEP;
+ }
+ changed->Allocate(data.len() + expansion_);
+ changed->Write(0, data.data(), data.len());
+ return CHANGE;
+ }
+
+ private:
+ size_t expansion_;
+};
+
+// Tweak the plaintext of server records so that they exceed the client's limit.
+TEST_P(TlsConnectTls13, RecordSizePlaintextExceed) {
+ EnsureTlsSetup();
+ auto server_expand = MakeTlsFilter<TlsRecordExpander>(server_, 1);
+ server_expand->EnableDecryption();
+
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64);
+ Connect();
+
+ server_->SendData(100);
+
+ client_->ExpectReadWriteError();
+ ExpectAlert(client_, kTlsAlertRecordOverflow);
+ client_->ReadBytes(100);
+ EXPECT_EQ(SSL_ERROR_RX_RECORD_TOO_LONG, client_->error_code());
+
+ // Consume the alert at the server.
+ server_->Handshake();
+ server_->CheckErrorCode(SSL_ERROR_RECORD_OVERFLOW_ALERT);
+}
+
+// Tweak the ciphertext of server records so that they greatly exceed the limit.
+// This requires a much larger expansion than for plaintext to trigger the
+// guard, which runs before decryption (current allowance is 304 octets).
+TEST_P(TlsConnectTls13, RecordSizeCiphertextExceed) {
+ EnsureTlsSetup();
+
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64);
+ Connect();
+
+ auto server_expand = MakeTlsFilter<TlsRecordExpander>(server_, 320);
+ server_->SendData(100);
+
+ client_->ExpectReadWriteError();
+ ExpectAlert(client_, kTlsAlertRecordOverflow);
+ client_->ReadBytes(100);
+ EXPECT_EQ(SSL_ERROR_RX_RECORD_TOO_LONG, client_->error_code());
+
+ // Consume the alert at the server.
+ server_->Handshake();
+ server_->CheckErrorCode(SSL_ERROR_RECORD_OVERFLOW_ALERT);
+}
+
+// This indiscriminately adds padding to application data records.
+class TlsRecordPadder : public TlsRecordFilter {
+ public:
+ TlsRecordPadder(const std::shared_ptr<TlsAgent>& a, size_t padding)
+ : TlsRecordFilter(a), padding_(padding) {}
+
+ protected:
+ PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
+ const DataBuffer& record, size_t* offset,
+ DataBuffer* output) override {
+ if (header.content_type() != kTlsApplicationDataType) {
+ return KEEP;
+ }
+
+ uint8_t inner_content_type;
+ DataBuffer plaintext;
+ if (!Unprotect(header, record, &inner_content_type, &plaintext)) {
+ return KEEP;
+ }
+
+ if (inner_content_type != kTlsApplicationDataType) {
+ return KEEP;
+ }
+
+ DataBuffer ciphertext;
+ bool ok =
+ Protect(header, inner_content_type, plaintext, &ciphertext, padding_);
+ EXPECT_TRUE(ok);
+ if (!ok) {
+ return KEEP;
+ }
+ *offset = header.Write(output, *offset, ciphertext);
+ return CHANGE;
+ }
+
+ private:
+ size_t padding_;
+};
+
+TEST_P(TlsConnectTls13, RecordSizeExceedPad) {
+ EnsureTlsSetup();
+ auto server_max = std::make_shared<TlsRecordMaximum>(server_);
+ auto server_expand = std::make_shared<TlsRecordPadder>(server_, 1);
+ server_->SetFilter(std::make_shared<ChainedPacketFilter>(
+ ChainedPacketFilterInit({server_max, server_expand})));
+ server_expand->EnableDecryption();
+
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 64);
+ Connect();
+
+ server_->SendData(100);
+
+ client_->ExpectReadWriteError();
+ ExpectAlert(client_, kTlsAlertRecordOverflow);
+ client_->ReadBytes(100);
+ EXPECT_EQ(SSL_ERROR_RX_RECORD_TOO_LONG, client_->error_code());
+
+ // Consume the alert at the server.
+ server_->Handshake();
+ server_->CheckErrorCode(SSL_ERROR_RECORD_OVERFLOW_ALERT);
+}
+
+TEST_P(TlsConnectGeneric, RecordSizeBadValues) {
+ EnsureTlsSetup();
+ EXPECT_EQ(SECFailure,
+ SSL_OptionSet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, 63));
+ EXPECT_EQ(SECFailure,
+ SSL_OptionSet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, -1));
+ EXPECT_EQ(SECFailure,
+ SSL_OptionSet(server_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, 16386));
+ Connect();
+}
+
+TEST_P(TlsConnectGeneric, RecordSizeGetValues) {
+ EnsureTlsSetup();
+ int v;
+ EXPECT_EQ(SECSuccess,
+ SSL_OptionGet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, &v));
+ EXPECT_EQ(16385, v);
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 300);
+ EXPECT_EQ(SECSuccess,
+ SSL_OptionGet(client_->ssl_fd(), SSL_RECORD_SIZE_LIMIT, &v));
+ EXPECT_EQ(300, v);
+ Connect();
+}
+
+// The value of the extension is capped by the maximum version of the client.
+TEST_P(TlsConnectGeneric, RecordSizeCapExtensionClient) {
+ EnsureTlsSetup();
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 16385);
+ auto capture =
+ MakeTlsFilter<TlsExtensionCapture>(client_, ssl_record_size_limit_xtn);
+ capture->EnableDecryption();
+ Connect();
+
+ uint64_t val = 0;
+ EXPECT_TRUE(capture->extension().Read(0, 2, &val));
+ if (version_ < SSL_LIBRARY_VERSION_TLS_1_3) {
+ EXPECT_EQ(16384U, val) << "Extension should be capped";
+ } else {
+ EXPECT_EQ(16385U, val);
+ }
+}
+
+// The value of the extension is capped by the maximum version of the server.
+TEST_P(TlsConnectGeneric, RecordSizeCapExtensionServer) {
+ EnsureTlsSetup();
+ server_->SetOption(SSL_RECORD_SIZE_LIMIT, 16385);
+ auto capture =
+ MakeTlsFilter<TlsExtensionCapture>(server_, ssl_record_size_limit_xtn);
+ capture->EnableDecryption();
+ Connect();
+
+ uint64_t val = 0;
+ EXPECT_TRUE(capture->extension().Read(0, 2, &val));
+ if (version_ < SSL_LIBRARY_VERSION_TLS_1_3) {
+ EXPECT_EQ(16384U, val) << "Extension should be capped";
+ } else {
+ EXPECT_EQ(16385U, val);
+ }
+}
+
+// Damage the client extension and the handshake fails, but the server
+// doesn't generate a validation error.
+TEST_P(TlsConnectGenericPre13, RecordSizeClientExtensionInvalid) {
+ EnsureTlsSetup();
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 1000);
+ static const uint8_t v[] = {0xf4, 0x1f};
+ MakeTlsFilter<TlsExtensionReplacer>(client_, ssl_record_size_limit_xtn,
+ DataBuffer(v, sizeof(v)));
+ ConnectExpectAlert(server_, kTlsAlertDecryptError);
+}
+
+// Special handling for TLS 1.3, where the alert isn't read.
+TEST_F(TlsConnectStreamTls13, RecordSizeClientExtensionInvalid) {
+ EnsureTlsSetup();
+ client_->SetOption(SSL_RECORD_SIZE_LIMIT, 1000);
+ static const uint8_t v[] = {0xf4, 0x1f};
+ MakeTlsFilter<TlsExtensionReplacer>(client_, ssl_record_size_limit_xtn,
+ DataBuffer(v, sizeof(v)));
+ client_->ExpectSendAlert(kTlsAlertBadRecordMac);
+ server_->ExpectSendAlert(kTlsAlertBadRecordMac);
+ ConnectExpectFail();
+}
+
+TEST_P(TlsConnectGeneric, RecordSizeServerExtensionInvalid) {
+ EnsureTlsSetup();
+ server_->SetOption(SSL_RECORD_SIZE_LIMIT, 1000);
+ static const uint8_t v[] = {0xf4, 0x1f};
+ auto replace = MakeTlsFilter<TlsExtensionReplacer>(
+ server_, ssl_record_size_limit_xtn, DataBuffer(v, sizeof(v)));
+ replace->EnableDecryption();
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+}
+
+class RecordSizeDefaultsTest : public ::testing::Test {
+ public:
+ void SetUp() {
+ EXPECT_EQ(SECSuccess,
+ SSL_OptionGetDefault(SSL_RECORD_SIZE_LIMIT, &default_));
+ }
+ void TearDown() {
+ // Make sure to restore the default value at the end.
+ EXPECT_EQ(SECSuccess,
+ SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, default_));
+ }
+
+ private:
+ PRIntn default_ = 0;
+};
+
+TEST_F(RecordSizeDefaultsTest, RecordSizeBadValues) {
+ EXPECT_EQ(SECFailure, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, 63));
+ EXPECT_EQ(SECFailure, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, -1));
+ EXPECT_EQ(SECFailure, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, 16386));
+}
+
+TEST_F(RecordSizeDefaultsTest, RecordSizeGetValue) {
+ int v;
+ EXPECT_EQ(SECSuccess, SSL_OptionGetDefault(SSL_RECORD_SIZE_LIMIT, &v));
+ EXPECT_EQ(16385, v);
+ EXPECT_EQ(SECSuccess, SSL_OptionSetDefault(SSL_RECORD_SIZE_LIMIT, 3000));
+ EXPECT_EQ(SECSuccess, SSL_OptionGetDefault(SSL_RECORD_SIZE_LIMIT, &v));
+ EXPECT_EQ(3000, v);
+}
+
+} // namespace nss_test
diff --git a/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc
index eb78c05851..2cc98a3278 100644
--- a/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_resumption_unittest.cc
@@ -484,10 +484,8 @@ TEST_P(TlsConnectStream, TestResumptionOverrideCipher) {
class SelectedVersionReplacer : public TlsHandshakeFilter {
public:
- SelectedVersionReplacer(const std::shared_ptr<TlsAgent>& agent,
- uint16_t version)
- : TlsHandshakeFilter(agent, {kTlsHandshakeServerHello}),
- version_(version) {}
+ SelectedVersionReplacer(const std::shared_ptr<TlsAgent>& a, uint16_t version)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}), version_(version) {}
protected:
PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
diff --git a/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc
index e4a9e5aed7..9ef19653bc 100644
--- a/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_skip_unittest.cc
@@ -22,11 +22,9 @@ namespace nss_test {
class TlsHandshakeSkipFilter : public TlsRecordFilter {
public:
// A TLS record filter that skips handshake messages of the identified type.
- TlsHandshakeSkipFilter(const std::shared_ptr<TlsAgent>& agent,
+ TlsHandshakeSkipFilter(const std::shared_ptr<TlsAgent>& a,
uint8_t handshake_type)
- : TlsRecordFilter(agent),
- handshake_type_(handshake_type),
- skipped_(false) {}
+ : TlsRecordFilter(a), handshake_type_(handshake_type), skipped_(false) {}
protected:
// Takes a record; if it is a handshake record, it removes the first handshake
diff --git a/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc
index e5fccc12b6..ff4091b9a3 100644
--- a/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_staticrsa_unittest.cc
@@ -21,6 +21,7 @@ extern "C" {
#include "tls_connect.h"
#include "tls_filter.h"
#include "tls_parser.h"
+#include "rsa8193.h"
namespace nss_test {
@@ -100,4 +101,39 @@ TEST_P(TlsConnectStreamPre13,
Connect();
}
+// Replace the server certificate with one that uses 8193-bit RSA.
+class TooLargeRSACertFilter : public TlsHandshakeFilter {
+ public:
+ TooLargeRSACertFilter(const std::shared_ptr<TlsAgent> &server)
+ : TlsHandshakeFilter(server, {kTlsHandshakeCertificate}) {}
+
+ protected:
+ virtual PacketFilter::Action FilterHandshake(const HandshakeHeader &header,
+ const DataBuffer &input,
+ DataBuffer *output) {
+ const uint32_t cert_len = sizeof(rsa8193);
+ const uint32_t outer_len = cert_len + 3;
+ size_t offset = 0;
+ offset = output->Write(offset, outer_len, 3);
+ offset = output->Write(offset, cert_len, 3);
+ offset = output->Write(offset, rsa8193, cert_len);
+
+ return CHANGE;
+ }
+};
+
+TEST_P(TlsConnectGenericPre13, TooLargeRSAKeyInCert) {
+ EnableOnlyStaticRsaCiphers();
+ MakeTlsFilter<TooLargeRSACertFilter>(server_);
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+ client_->CheckErrorCode(SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE);
+ server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT);
+}
+
+TEST_P(TlsConnectGeneric, ServerAuthBiggestRsa) {
+ Reset(TlsAgent::kRsa8192);
+ Connect();
+ CheckKeys();
+}
+
} // namespace nss_test
diff --git a/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc
index f5ccf096b8..42f1065f6e 100644
--- a/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_tls13compat_unittest.cc
@@ -214,6 +214,98 @@ TEST_F(Tls13CompatTest, EnabledHrrZeroRtt) {
CheckForCompatHandshake();
}
+class TlsSessionIDEchoFilter : public TlsHandshakeFilter {
+ public:
+ TlsSessionIDEchoFilter(const std::shared_ptr<TlsAgent>& a)
+ : TlsHandshakeFilter(
+ a, {kTlsHandshakeClientHello, kTlsHandshakeServerHello}) {}
+
+ protected:
+ virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
+ const DataBuffer& input,
+ DataBuffer* output) {
+ TlsParser parser(input);
+
+ // Skip version + random.
+ EXPECT_TRUE(parser.Skip(2 + 32));
+
+ // Capture CH.legacy_session_id.
+ if (header.handshake_type() == kTlsHandshakeClientHello) {
+ EXPECT_TRUE(parser.ReadVariable(&sid_, 1));
+ return KEEP;
+ }
+
+ // Check that server sends one too.
+ uint32_t sid_len = 0;
+ EXPECT_TRUE(parser.Read(&sid_len, 1));
+ EXPECT_EQ(sid_len, sid_.len());
+
+ // Echo the one we captured.
+ *output = input;
+ output->Write(parser.consumed(), sid_.data(), sid_.len());
+
+ return CHANGE;
+ }
+
+ private:
+ DataBuffer sid_;
+};
+
+TEST_F(TlsConnectTest, EchoTLS13CompatibilitySessionID) {
+ ConfigureSessionCache(RESUME_SESSIONID, RESUME_SESSIONID);
+
+ client_->SetOption(SSL_ENABLE_TLS13_COMPAT_MODE, PR_TRUE);
+
+ client_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2,
+ SSL_LIBRARY_VERSION_TLS_1_3);
+
+ server_->SetVersionRange(SSL_LIBRARY_VERSION_TLS_1_2,
+ SSL_LIBRARY_VERSION_TLS_1_2);
+
+ server_->SetFilter(MakeTlsFilter<TlsSessionIDEchoFilter>(client_));
+ ConnectExpectAlert(client_, kTlsAlertIllegalParameter);
+
+ client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO);
+ server_->CheckErrorCode(SSL_ERROR_ILLEGAL_PARAMETER_ALERT);
+}
+
+class TlsSessionIDInjectFilter : public TlsHandshakeFilter {
+ public:
+ TlsSessionIDInjectFilter(const std::shared_ptr<TlsAgent>& a)
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}) {}
+
+ protected:
+ virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
+ const DataBuffer& input,
+ DataBuffer* output) {
+ TlsParser parser(input);
+
+ // Skip version + random.
+ EXPECT_TRUE(parser.Skip(2 + 32));
+
+ *output = input;
+
+ // Inject a Session ID.
+ const uint8_t fake_sid[SSL3_SESSIONID_BYTES] = {0xff};
+ output->Write(parser.consumed(), sizeof(fake_sid), 1);
+ output->Splice(fake_sid, sizeof(fake_sid), parser.consumed() + 1, 0);
+
+ return CHANGE;
+ }
+};
+
+TEST_F(TlsConnectTest, TLS13NonCompatModeSessionID) {
+ ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3);
+
+ MakeTlsFilter<TlsSessionIDInjectFilter>(server_);
+ client_->ExpectSendAlert(kTlsAlertIllegalParameter);
+ server_->ExpectSendAlert(kTlsAlertBadRecordMac);
+ ConnectExpectFail();
+
+ client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_SERVER_HELLO);
+ server_->CheckErrorCode(SSL_ERROR_BAD_MAC_READ);
+}
+
static const uint8_t kCannedCcs[] = {
kTlsChangeCipherSpecType,
SSL_LIBRARY_VERSION_TLS_1_2 >> 8,
diff --git a/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc
index 7f3c4a8964..09d7801e9a 100644
--- a/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc
+++ b/security/nss/gtests/ssl_gtest/ssl_versionpolicy_unittest.cc
@@ -50,12 +50,12 @@ inline std::ostream& operator<<(std::ostream& stream,
class VersionRangeWithLabel {
public:
- VersionRangeWithLabel(const std::string& label, const SSLVersionRange& vr)
- : label_(label), vr_(vr) {}
- VersionRangeWithLabel(const std::string& label, uint16_t min, uint16_t max)
- : label_(label) {
- vr_.min = min;
- vr_.max = max;
+ VersionRangeWithLabel(const std::string& txt, const SSLVersionRange& vr)
+ : label_(txt), vr_(vr) {}
+ VersionRangeWithLabel(const std::string& txt, uint16_t start, uint16_t end)
+ : label_(txt) {
+ vr_.min = start;
+ vr_.max = end;
}
VersionRangeWithLabel(const std::string& label) : label_(label) {
vr_.min = vr_.max = SSL_LIBRARY_VERSION_NONE;
diff --git a/security/nss/gtests/ssl_gtest/test_io.cc b/security/nss/gtests/ssl_gtest/test_io.cc
index 7282178515..d76b3526c6 100644
--- a/security/nss/gtests/ssl_gtest/test_io.cc
+++ b/security/nss/gtests/ssl_gtest/test_io.cc
@@ -99,8 +99,8 @@ int32_t DummyPrSocket::Write(PRFileDesc *f, const void *buf, int32_t length) {
return -1;
}
- auto peer = peer_.lock();
- if (!peer) {
+ auto dst = peer_.lock();
+ if (!dst) {
PR_SetError(PR_IO_ERROR, 0);
return -1;
}
@@ -116,14 +116,14 @@ int32_t DummyPrSocket::Write(PRFileDesc *f, const void *buf, int32_t length) {
case PacketFilter::CHANGE:
LOG("Original packet: " << packet);
LOG("Filtered packet: " << filtered);
- peer->PacketReceived(filtered);
+ dst->PacketReceived(filtered);
break;
case PacketFilter::DROP:
LOG("Droppped packet: " << packet);
break;
case PacketFilter::KEEP:
LOGV("Packet: " << packet);
- peer->PacketReceived(packet);
+ dst->PacketReceived(packet);
break;
}
// libssl can't handle it if this reports something other than the length
diff --git a/security/nss/gtests/ssl_gtest/test_io.h b/security/nss/gtests/ssl_gtest/test_io.h
index dbeb6b9d4c..8327373ce5 100644
--- a/security/nss/gtests/ssl_gtest/test_io.h
+++ b/security/nss/gtests/ssl_gtest/test_io.h
@@ -59,9 +59,9 @@ class PacketFilter {
class DummyPrSocket : public DummyIOLayerMethods {
public:
- DummyPrSocket(const std::string& name, SSLProtocolVariant variant)
+ DummyPrSocket(const std::string& name, SSLProtocolVariant var)
: name_(name),
- variant_(variant),
+ variant_(var),
peer_(),
input_(),
filter_(nullptr),
@@ -73,7 +73,7 @@ class DummyPrSocket : public DummyIOLayerMethods {
ScopedPRFileDesc CreateFD();
std::weak_ptr<DummyPrSocket>& peer() { return peer_; }
- void SetPeer(const std::shared_ptr<DummyPrSocket>& peer) { peer_ = peer; }
+ void SetPeer(const std::shared_ptr<DummyPrSocket>& p) { peer_ = p; }
void SetPacketFilter(const std::shared_ptr<PacketFilter>& filter) {
filter_ = filter;
}
diff --git a/security/nss/gtests/ssl_gtest/tls_agent.cc b/security/nss/gtests/ssl_gtest/tls_agent.cc
index 2f71caedb0..9bed1ce1b7 100644
--- a/security/nss/gtests/ssl_gtest/tls_agent.cc
+++ b/security/nss/gtests/ssl_gtest/tls_agent.cc
@@ -33,6 +33,7 @@ const char* TlsAgent::states[] = {"INIT", "CONNECTING", "CONNECTED", "ERROR"};
const std::string TlsAgent::kClient = "client"; // both sign and encrypt
const std::string TlsAgent::kRsa2048 = "rsa2048"; // bigger
+const std::string TlsAgent::kRsa8192 = "rsa8192"; // biggest allowed
const std::string TlsAgent::kServerRsa = "rsa"; // both sign and encrypt
const std::string TlsAgent::kServerRsaSign = "rsa_sign";
const std::string TlsAgent::kServerRsaPss = "rsa_pss";
@@ -44,13 +45,22 @@ const std::string TlsAgent::kServerEcdhRsa = "ecdh_rsa";
const std::string TlsAgent::kServerEcdhEcdsa = "ecdh_ecdsa";
const std::string TlsAgent::kServerDsa = "dsa";
-TlsAgent::TlsAgent(const std::string& name, Role role,
- SSLProtocolVariant variant)
- : name_(name),
- variant_(variant),
- role_(role),
+static const uint8_t kCannedTls13ServerHello[] = {
+ 0x03, 0x03, 0x9c, 0xbc, 0x14, 0x9b, 0x0e, 0x2e, 0xfa, 0x0d, 0xf3,
+ 0xf0, 0x5c, 0x70, 0x7a, 0xe0, 0xd1, 0x9b, 0x3e, 0x5a, 0x44, 0x6b,
+ 0xdf, 0xe5, 0xc2, 0x28, 0x64, 0xf7, 0x00, 0xc1, 0x9c, 0x08, 0x76,
+ 0x08, 0x00, 0x13, 0x01, 0x00, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x24,
+ 0x00, 0x1d, 0x00, 0x20, 0xc2, 0xcf, 0x23, 0x17, 0x64, 0x23, 0x03,
+ 0xf0, 0xfb, 0x45, 0x98, 0x26, 0xd1, 0x65, 0x24, 0xa1, 0x6c, 0xa9,
+ 0x80, 0x8f, 0x2c, 0xac, 0x0a, 0xea, 0x53, 0x3a, 0xcb, 0xe3, 0x08,
+ 0x84, 0xae, 0x19, 0x00, 0x2b, 0x00, 0x02, 0x7f, kD13};
+
+TlsAgent::TlsAgent(const std::string& nm, Role rl, SSLProtocolVariant var)
+ : name_(nm),
+ variant_(var),
+ role_(rl),
server_key_bits_(0),
- adapter_(new DummyPrSocket(role_str(), variant)),
+ adapter_(new DummyPrSocket(role_str(), var)),
ssl_fd_(nullptr),
state_(STATE_INIT),
timer_handle_(nullptr),
@@ -103,11 +113,11 @@ TlsAgent::~TlsAgent() {
}
}
-void TlsAgent::SetState(State state) {
- if (state_ == state) return;
+void TlsAgent::SetState(State s) {
+ if (state_ == s) return;
- LOG("Changing state from " << state_ << " to " << state);
- state_ = state;
+ LOG("Changing state from " << state_ << " to " << s);
+ state_ = s;
}
/*static*/ bool TlsAgent::LoadCertificate(const std::string& name,
@@ -124,11 +134,11 @@ void TlsAgent::SetState(State state) {
return true;
}
-bool TlsAgent::ConfigServerCert(const std::string& name, bool updateKeyBits,
+bool TlsAgent::ConfigServerCert(const std::string& id, bool updateKeyBits,
const SSLExtraServerCertData* serverCertData) {
ScopedCERTCertificate cert;
ScopedSECKEYPrivateKey priv;
- if (!TlsAgent::LoadCertificate(name, &cert, &priv)) {
+ if (!TlsAgent::LoadCertificate(id, &cert, &priv)) {
return false;
}
@@ -175,6 +185,10 @@ bool TlsAgent::EnsureTlsSetup(PRFileDesc* modelSocket) {
if (rv != SECSuccess) return false;
}
+ ScopedCERTCertList anchors(CERT_NewCertList());
+ rv = SSL_SetTrustAnchors(ssl_fd(), anchors.get());
+ if (rv != SECSuccess) return false;
+
if (role_ == SERVER) {
EXPECT_TRUE(ConfigServerCert(name_, true));
@@ -182,10 +196,6 @@ bool TlsAgent::EnsureTlsSetup(PRFileDesc* modelSocket) {
EXPECT_EQ(SECSuccess, rv);
if (rv != SECSuccess) return false;
- ScopedCERTCertList anchors(CERT_NewCertList());
- rv = SSL_SetTrustAnchors(ssl_fd(), anchors.get());
- if (rv != SECSuccess) return false;
-
rv = SSL_SetMaxEarlyDataSize(ssl_fd(), 1024);
EXPECT_EQ(SECSuccess, rv);
if (rv != SECSuccess) return false;
@@ -246,6 +256,17 @@ void TlsAgent::SetupClientAuth() {
reinterpret_cast<void*>(this)));
}
+void CheckCertReqAgainstDefaultCAs(const CERTDistNames* caNames) {
+ ScopedCERTDistNames expected(CERT_GetSSLCACerts(nullptr));
+
+ ASSERT_EQ(expected->nnames, caNames->nnames);
+
+ for (size_t i = 0; i < static_cast<size_t>(expected->nnames); ++i) {
+ EXPECT_EQ(SECEqual,
+ SECITEM_CompareItem(&(expected->names[i]), &(caNames->names[i])));
+ }
+}
+
SECStatus TlsAgent::GetClientAuthDataHook(void* self, PRFileDesc* fd,
CERTDistNames* caNames,
CERTCertificate** clientCert,
@@ -254,6 +275,9 @@ SECStatus TlsAgent::GetClientAuthDataHook(void* self, PRFileDesc* fd,
ScopedCERTCertificate peerCert(SSL_PeerCertificate(agent->ssl_fd()));
EXPECT_TRUE(peerCert) << "Client should be able to see the server cert";
+ // See bug 1457716
+ // CheckCertReqAgainstDefaultCAs(caNames);
+
ScopedCERTCertificate cert;
ScopedSECKEYPrivateKey priv;
if (!TlsAgent::LoadCertificate(agent->name(), &cert, &priv)) {
@@ -282,8 +306,8 @@ bool TlsAgent::GetPeerChainLength(size_t* count) {
return true;
}
-void TlsAgent::CheckCipherSuite(uint16_t cipher_suite) {
- EXPECT_EQ(csinfo_.cipherSuite, cipher_suite);
+void TlsAgent::CheckCipherSuite(uint16_t suite) {
+ EXPECT_EQ(csinfo_.cipherSuite, suite);
}
void TlsAgent::RequestClientAuth(bool requireAuth) {
@@ -442,9 +466,7 @@ void TlsAgent::GetVersionRange(uint16_t* minver, uint16_t* maxver) {
*maxver = vrange_.max;
}
-void TlsAgent::SetExpectedVersion(uint16_t version) {
- expected_version_ = version;
-}
+void TlsAgent::SetExpectedVersion(uint16_t ver) { expected_version_ = ver; }
void TlsAgent::SetServerKeyBits(uint16_t bits) { server_key_bits_ = bits; }
@@ -491,10 +513,10 @@ void TlsAgent::SetSignatureSchemes(const SSLSignatureScheme* schemes,
EXPECT_EQ(i, configuredCount) << "schemes in use were all set";
}
-void TlsAgent::CheckKEA(SSLKEAType kea_type, SSLNamedGroup kea_group,
+void TlsAgent::CheckKEA(SSLKEAType kea, SSLNamedGroup kea_group,
size_t kea_size) const {
EXPECT_EQ(STATE_CONNECTED, state_);
- EXPECT_EQ(kea_type, info_.keaType);
+ EXPECT_EQ(kea, info_.keaType);
if (kea_size == 0) {
switch (kea_group) {
case ssl_grp_ec_curve25519:
@@ -515,7 +537,7 @@ void TlsAgent::CheckKEA(SSLKEAType kea_type, SSLNamedGroup kea_group,
case ssl_grp_ffdhe_custom:
break;
default:
- if (kea_type == ssl_kea_rsa) {
+ if (kea == ssl_kea_rsa) {
kea_size = server_key_bits_;
} else {
EXPECT_TRUE(false) << "need to update group sizes";
@@ -534,13 +556,13 @@ void TlsAgent::CheckOriginalKEA(SSLNamedGroup kea_group) const {
}
}
-void TlsAgent::CheckAuthType(SSLAuthType auth_type,
+void TlsAgent::CheckAuthType(SSLAuthType auth,
SSLSignatureScheme sig_scheme) const {
EXPECT_EQ(STATE_CONNECTED, state_);
- EXPECT_EQ(auth_type, info_.authType);
+ EXPECT_EQ(auth, info_.authType);
EXPECT_EQ(server_key_bits_, info_.authKeyBits);
if (expected_version_ < SSL_LIBRARY_VERSION_TLS_1_2) {
- switch (auth_type) {
+ switch (auth) {
case ssl_auth_rsa_sign:
sig_scheme = ssl_sig_rsa_pkcs1_sha1md5;
break;
@@ -558,9 +580,8 @@ void TlsAgent::CheckAuthType(SSLAuthType auth_type,
}
// Check authAlgorithm, which is the old value for authType. This is a second
- // switch
- // statement because default label is different.
- switch (auth_type) {
+ // switch statement because default label is different.
+ switch (auth) {
case ssl_auth_rsa_sign:
EXPECT_EQ(ssl_auth_rsa_decrypt, csinfo_.authAlgorithm)
<< "authAlgorithm for RSA is always decrypt";
@@ -574,7 +595,7 @@ void TlsAgent::CheckAuthType(SSLAuthType auth_type,
<< "authAlgorithm for ECDH_ECDSA is ECDSA (i.e., wrong)";
break;
default:
- EXPECT_EQ(auth_type, csinfo_.authAlgorithm)
+ EXPECT_EQ(auth, csinfo_.authAlgorithm)
<< "authAlgorithm is (usually) the same as authType";
break;
}
@@ -593,22 +614,20 @@ void TlsAgent::ExpectResumption() { expect_resumption_ = true; }
void TlsAgent::EnableAlpn(const uint8_t* val, size_t len) {
EXPECT_TRUE(EnsureTlsSetup());
-
- SetOption(SSL_ENABLE_ALPN, PR_TRUE);
EXPECT_EQ(SECSuccess, SSL_SetNextProtoNego(ssl_fd(), val, len));
}
void TlsAgent::CheckAlpn(SSLNextProtoState expected_state,
const std::string& expected) const {
- SSLNextProtoState state;
+ SSLNextProtoState alpn_state;
char chosen[10];
unsigned int chosen_len;
- SECStatus rv = SSL_GetNextProto(ssl_fd(), &state,
+ SECStatus rv = SSL_GetNextProto(ssl_fd(), &alpn_state,
reinterpret_cast<unsigned char*>(chosen),
&chosen_len, sizeof(chosen));
EXPECT_EQ(SECSuccess, rv);
- EXPECT_EQ(expected_state, state);
- if (state == SSL_NEXT_PROTO_NO_SUPPORT) {
+ EXPECT_EQ(expected_state, alpn_state);
+ if (alpn_state == SSL_NEXT_PROTO_NO_SUPPORT) {
EXPECT_EQ("", expected);
} else {
EXPECT_NE("", expected);
@@ -840,10 +859,10 @@ void TlsAgent::CheckSecretsDestroyed() {
ASSERT_EQ(PR_TRUE, SSLInt_CheckSecretsDestroyed(ssl_fd()));
}
-void TlsAgent::SetDowngradeCheckVersion(uint16_t version) {
+void TlsAgent::SetDowngradeCheckVersion(uint16_t ver) {
ASSERT_TRUE(EnsureTlsSetup());
- SECStatus rv = SSL_SetDowngradeCheckVersion(ssl_fd(), version);
+ SECStatus rv = SSL_SetDowngradeCheckVersion(ssl_fd(), ver);
ASSERT_EQ(SECSuccess, rv);
}
@@ -920,9 +939,9 @@ static bool ErrorIsNonFatal(PRErrorCode code) {
}
void TlsAgent::SendData(size_t bytes, size_t blocksize) {
- uint8_t block[4096];
+ uint8_t block[16385]; // One larger than the maximum record size.
- ASSERT_LT(blocksize, sizeof(block));
+ ASSERT_LE(blocksize, sizeof(block));
while (bytes) {
size_t tosend = std::min(blocksize, bytes);
@@ -951,12 +970,13 @@ void TlsAgent::SendBuffer(const DataBuffer& buf) {
}
bool TlsAgent::SendEncryptedRecord(const std::shared_ptr<TlsCipherSpec>& spec,
- uint16_t wireVersion, uint64_t seq,
- uint8_t ct, const DataBuffer& buf) {
- LOGV("Writing " << buf.len() << " bytes");
- // Ensure we are a TLS 1.3 cipher agent.
+ uint64_t seq, uint8_t ct,
+ const DataBuffer& buf) {
+ LOGV("Encrypting " << buf.len() << " bytes");
+ // Ensure that we are doing TLS 1.3.
EXPECT_GE(expected_version_, SSL_LIBRARY_VERSION_TLS_1_3);
- TlsRecordHeader header(wireVersion, kTlsApplicationDataType, seq);
+ TlsRecordHeader header(variant_, expected_version_, kTlsApplicationDataType,
+ seq);
DataBuffer padded = buf;
padded.Write(padded.len(), ct, 1);
DataBuffer ciphertext;
@@ -1078,15 +1098,20 @@ void TlsAgentTestBase::ProcessMessage(const DataBuffer& buffer,
void TlsAgentTestBase::MakeRecord(SSLProtocolVariant variant, uint8_t type,
uint16_t version, const uint8_t* buf,
size_t len, DataBuffer* out,
- uint64_t seq_num) {
+ uint64_t sequence_number) {
size_t index = 0;
index = out->Write(index, type, 1);
if (variant == ssl_variant_stream) {
index = out->Write(index, version, 2);
+ } else if (version >= SSL_LIBRARY_VERSION_TLS_1_3 &&
+ type == kTlsApplicationDataType) {
+ uint32_t epoch = (sequence_number >> 48) & 0x3;
+ uint32_t seqno = sequence_number & ((1ULL << 30) - 1);
+ index = out->Write(index, (epoch << 30) | seqno, 4);
} else {
index = out->Write(index, TlsVersionToDtlsVersion(version), 2);
- index = out->Write(index, seq_num >> 32, 4);
- index = out->Write(index, seq_num & PR_UINT32_MAX, 4);
+ index = out->Write(index, sequence_number >> 32, 4);
+ index = out->Write(index, sequence_number & PR_UINT32_MAX, 4);
}
index = out->Write(index, len, 2);
out->Write(index, buf, len);
@@ -1144,4 +1169,12 @@ void TlsAgentTestBase::MakeTrivialHandshakeRecord(uint8_t hs_type,
}
}
+DataBuffer TlsAgentTestBase::MakeCannedTls13ServerHello() {
+ DataBuffer sh(kCannedTls13ServerHello, sizeof(kCannedTls13ServerHello));
+ if (variant_ == ssl_variant_datagram) {
+ sh.Write(0, SSL_LIBRARY_VERSION_DTLS_1_2_WIRE, 2);
+ }
+ return sh;
+}
+
} // namespace nss_test
diff --git a/security/nss/gtests/ssl_gtest/tls_agent.h b/security/nss/gtests/ssl_gtest/tls_agent.h
index 6cd6d5073b..a93d0c6ee5 100644
--- a/security/nss/gtests/ssl_gtest/tls_agent.h
+++ b/security/nss/gtests/ssl_gtest/tls_agent.h
@@ -10,6 +10,9 @@
#include "prio.h"
#include "ssl.h"
+// This is an internal header, used to get TLS_1_3_DRAFT_VERSION.
+#include "ssl3prot.h"
+
#include <functional>
#include <iostream>
@@ -57,6 +60,8 @@ typedef std::function<int32_t(TlsAgent* agent, const SECItem* srvNameArr,
PRUint32 srvNameArrSize)>
SniCallbackFunction;
+static const uint8_t kD13 = TLS_1_3_DRAFT_VERSION;
+
class TlsAgent : public PollTarget {
public:
enum Role { CLIENT, SERVER };
@@ -64,6 +69,7 @@ class TlsAgent : public PollTarget {
static const std::string kClient; // the client key is sign only
static const std::string kRsa2048; // bigger sign and encrypt for either
+ static const std::string kRsa8192; // biggest sign and encrypt for either
static const std::string kServerRsa; // both sign and encrypt
static const std::string kServerRsaSign;
static const std::string kServerRsaPss;
@@ -143,8 +149,7 @@ class TlsAgent : public PollTarget {
void SendData(size_t bytes, size_t blocksize = 1024);
void SendBuffer(const DataBuffer& buf);
bool SendEncryptedRecord(const std::shared_ptr<TlsCipherSpec>& spec,
- uint16_t wireVersion, uint64_t seq, uint8_t ct,
- const DataBuffer& buf);
+ uint64_t seq, uint8_t ct, const DataBuffer& buf);
// Send data directly to the underlying socket, skipping the TLS layer.
void SendDirect(const DataBuffer& buf);
void SendRecordDirect(const TlsRecord& record);
@@ -209,10 +214,10 @@ class TlsAgent : public PollTarget {
return info_.protocolVersion;
}
- bool cipher_suite(uint16_t* cipher_suite) const {
+ bool cipher_suite(uint16_t* suite) const {
if (state_ != STATE_CONNECTED) return false;
- *cipher_suite = info_.cipherSuite;
+ *suite = info_.cipherSuite;
return true;
}
@@ -227,17 +232,17 @@ class TlsAgent : public PollTarget {
info_.sessionID + info_.sessionIDLength);
}
- bool auth_type(SSLAuthType* auth_type) const {
+ bool auth_type(SSLAuthType* a) const {
if (state_ != STATE_CONNECTED) return false;
- *auth_type = info_.authType;
+ *a = info_.authType;
return true;
}
- bool kea_type(SSLKEAType* kea_type) const {
+ bool kea_type(SSLKEAType* k) const {
if (state_ != STATE_CONNECTED) return false;
- *kea_type = info_.keaType;
+ *k = info_.keaType;
return true;
}
@@ -264,6 +269,8 @@ class TlsAgent : public PollTarget {
void ExpectReceiveAlert(uint8_t alert, uint8_t level = 0);
void ExpectSendAlert(uint8_t alert, uint8_t level = 0);
+ std::string alpn_value_to_use_ = "";
+
private:
const static char* states[];
@@ -443,6 +450,7 @@ class TlsAgentTestBase : public ::testing::Test {
size_t hs_len, DataBuffer* out,
uint64_t seq_num, uint32_t fragment_offset,
uint32_t fragment_length) const;
+ DataBuffer MakeCannedTls13ServerHello();
static void MakeTrivialHandshakeRecord(uint8_t hs_type, size_t hs_len,
DataBuffer* out);
static inline TlsAgent::Role ToRole(const std::string& str) {
diff --git a/security/nss/gtests/ssl_gtest/tls_connect.cc b/security/nss/gtests/ssl_gtest/tls_connect.cc
index 8567b392fd..68f6d21e9c 100644
--- a/security/nss/gtests/ssl_gtest/tls_connect.cc
+++ b/security/nss/gtests/ssl_gtest/tls_connect.cc
@@ -571,14 +571,57 @@ void TlsConnectTestBase::CheckResumption(SessionResumptionMode expected) {
}
}
+static SECStatus NextProtoCallbackServer(void* arg, PRFileDesc* fd,
+ const unsigned char* protos,
+ unsigned int protos_len,
+ unsigned char* protoOut,
+ unsigned int* protoOutLen,
+ unsigned int protoMaxLen) {
+ EXPECT_EQ(protoMaxLen, 255U);
+ TlsAgent* agent = reinterpret_cast<TlsAgent*>(arg);
+ // Check that agent->alpn_value_to_use_ is in protos.
+ if (protos_len < 1) {
+ return SECFailure;
+ }
+ for (size_t i = 0; i < protos_len;) {
+ size_t l = protos[i];
+ EXPECT_LT(i + l, protos_len);
+ if (i + l >= protos_len) {
+ return SECFailure;
+ }
+ std::string protos_s(reinterpret_cast<const char*>(protos + i + 1), l);
+ if (protos_s == agent->alpn_value_to_use_) {
+ size_t s_len = agent->alpn_value_to_use_.size();
+ EXPECT_LE(s_len, 255U);
+ memcpy(protoOut, &agent->alpn_value_to_use_[0], s_len);
+ *protoOutLen = s_len;
+ return SECSuccess;
+ }
+ i += l + 1;
+ }
+ return SECFailure;
+}
+
void TlsConnectTestBase::EnableAlpn() {
client_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_));
server_->EnableAlpn(alpn_dummy_val_, sizeof(alpn_dummy_val_));
}
-void TlsConnectTestBase::EnableAlpn(const uint8_t* val, size_t len) {
- client_->EnableAlpn(val, len);
- server_->EnableAlpn(val, len);
+void TlsConnectTestBase::EnableAlpnWithCallback(
+ const std::vector<uint8_t>& client_vals, std::string server_choice) {
+ EnsureTlsSetup();
+ server_->alpn_value_to_use_ = server_choice;
+ EXPECT_EQ(SECSuccess,
+ SSL_SetNextProtoNego(client_->ssl_fd(), client_vals.data(),
+ client_vals.size()));
+ SECStatus rv = SSL_SetNextProtoCallback(
+ server_->ssl_fd(), NextProtoCallbackServer, server_.get());
+ EXPECT_EQ(SECSuccess, rv);
+}
+
+void TlsConnectTestBase::EnableAlpn(const std::vector<uint8_t>& vals) {
+ client_->EnableAlpn(vals.data(), vals.size());
+ server_->EnableAlpn(vals.data(), vals.size());
}
void TlsConnectTestBase::EnsureModelSockets() {
diff --git a/security/nss/gtests/ssl_gtest/tls_connect.h b/security/nss/gtests/ssl_gtest/tls_connect.h
index 7dffe7f8aa..0004945011 100644
--- a/security/nss/gtests/ssl_gtest/tls_connect.h
+++ b/security/nss/gtests/ssl_gtest/tls_connect.h
@@ -110,7 +110,9 @@ class TlsConnectTestBase : public ::testing::Test {
void ConfigureSessionCache(SessionResumptionMode client,
SessionResumptionMode server);
void EnableAlpn();
- void EnableAlpn(const uint8_t* val, size_t len);
+ void EnableAlpnWithCallback(const std::vector<uint8_t>& client,
+ std::string server_choice);
+ void EnableAlpn(const std::vector<uint8_t>& vals);
void EnsureModelSockets();
void CheckAlpn(const std::string& val);
void EnableSrtp();
diff --git a/security/nss/gtests/ssl_gtest/tls_filter.cc b/security/nss/gtests/ssl_gtest/tls_filter.cc
index d34b13bcb5..aa03cba70b 100644
--- a/security/nss/gtests/ssl_gtest/tls_filter.cc
+++ b/security/nss/gtests/ssl_gtest/tls_filter.cc
@@ -30,11 +30,9 @@ void TlsVersioned::WriteStream(std::ostream& stream) const {
case SSL_LIBRARY_VERSION_TLS_1_0:
stream << "1.0";
break;
- case SSL_LIBRARY_VERSION_DTLS_1_0_WIRE:
case SSL_LIBRARY_VERSION_TLS_1_1:
stream << (is_dtls() ? "1.0" : "1.1");
break;
- case SSL_LIBRARY_VERSION_DTLS_1_2_WIRE:
case SSL_LIBRARY_VERSION_TLS_1_2:
stream << "1.2";
break;
@@ -67,8 +65,14 @@ void TlsRecordFilter::CipherSpecChanged(void* arg, PRBool sending,
return;
}
- self->in_sequence_number_ = 0;
- self->out_sequence_number_ = 0;
+ uint64_t seq_no;
+ if (self->agent()->variant() == ssl_variant_datagram) {
+ seq_no = static_cast<uint64_t>(SSLInt_CipherSpecToEpoch(newSpec)) << 48;
+ } else {
+ seq_no = 0;
+ }
+ self->in_sequence_number_ = seq_no;
+ self->out_sequence_number_ = seq_no;
self->dropped_record_ = false;
self->cipher_spec_.reset(new TlsCipherSpec());
bool ret = self->cipher_spec_->Init(
@@ -77,33 +81,59 @@ void TlsRecordFilter::CipherSpecChanged(void* arg, PRBool sending,
EXPECT_EQ(true, ret);
}
+bool TlsRecordFilter::is_dtls13() const {
+ if (agent()->variant() != ssl_variant_datagram) {
+ return false;
+ }
+ if (agent()->state() == TlsAgent::STATE_CONNECTED) {
+ return agent()->version() >= SSL_LIBRARY_VERSION_TLS_1_3;
+ }
+ SSLPreliminaryChannelInfo info;
+ EXPECT_EQ(SECSuccess, SSL_GetPreliminaryChannelInfo(agent()->ssl_fd(), &info,
+ sizeof(info)));
+ return (info.protocolVersion >= SSL_LIBRARY_VERSION_TLS_1_3) ||
+ info.canSendEarlyData;
+}
+
PacketFilter::Action TlsRecordFilter::Filter(const DataBuffer& input,
DataBuffer* output) {
+ // Disable during shutdown.
+ if (!agent()) {
+ return KEEP;
+ }
+
bool changed = false;
size_t offset = 0U;
- output->Allocate(input.len());
+ output->Allocate(input.len());
TlsParser parser(input);
while (parser.remaining()) {
TlsRecordHeader header;
DataBuffer record;
- if (!header.Parse(in_sequence_number_, &parser, &record)) {
+ if (!header.Parse(is_dtls13(), in_sequence_number_, &parser, &record)) {
ADD_FAILURE() << "not a valid record";
return KEEP;
}
- // Track the sequence number, which is necessary for stream mode (the
- // sequence number is in the header for datagram).
+ // Track the sequence number, which is necessary for stream mode when
+ // decrypting and for TLS 1.3 datagram to recover the sequence number.
+ //
+ // We reset the counter when the cipher spec changes, but that notification
+ // appears before a record is sent. If multiple records are sent with
+ // different cipher specs, this would fail. This filters out cleartext
+ // records, so we don't get confused by handshake messages that are sent at
+ // the same time as encrypted records. Sequence numbers are therefore
+ // likely to be incorrect for cleartext records.
//
- // This isn't perfectly robust. If there is a change from an active cipher
+ // This isn't perfectly robust: if there is a change from an active cipher
// spec to another active cipher spec (KeyUpdate for instance) AND writes
- // are consolidated across that change AND packets were dropped from the
- // older epoch, we will not correctly re-encrypt records in the old epoch to
- // update their sequence numbers.
- if (cipher_spec_ && header.content_type() == kTlsApplicationDataType) {
- ++in_sequence_number_;
+ // are consolidated across that change, this code could use the wrong
+ // sequence numbers when re-encrypting records with the old keys.
+ if (header.content_type() == kTlsApplicationDataType) {
+ in_sequence_number_ =
+ (std::max)(in_sequence_number_, header.sequence_number() + 1);
}
if (FilterRecord(header, record, &offset, output) != KEEP) {
@@ -131,11 +161,14 @@ PacketFilter::Action TlsRecordFilter::FilterRecord(
DataBuffer plaintext;
if (!Unprotect(header, record, &inner_content_type, &plaintext)) {
+ if (g_ssl_gtest_verbose) {
+ std::cerr << "unprotect failed: " << header << ":" << record << std::endl;
+ }
return KEEP;
}
- TlsRecordHeader real_header = {header.version(), inner_content_type,
- header.sequence_number()};
+ TlsRecordHeader real_header(header.variant(), header.version(),
+ inner_content_type, header.sequence_number());
PacketFilter::Action action = FilterRecord(real_header, plaintext, &filtered);
// In stream mode, even if something doesn't change we need to re-encrypt if
@@ -166,8 +199,8 @@ PacketFilter::Action TlsRecordFilter::FilterRecord(
} else {
seq_num = out_sequence_number_++;
}
- TlsRecordHeader out_header = {header.version(), header.content_type(),
- seq_num};
+ TlsRecordHeader out_header(header.variant(), header.version(),
+ header.content_type(), seq_num);
DataBuffer ciphertext;
bool rv = Protect(out_header, inner_content_type, filtered, &ciphertext);
@@ -179,20 +212,119 @@ PacketFilter::Action TlsRecordFilter::FilterRecord(
return CHANGE;
}
-bool TlsRecordHeader::Parse(uint64_t sequence_number, TlsParser* parser,
+size_t TlsRecordHeader::header_length() const {
+ // If we have a header, return it's length.
+ if (header_.len()) {
+ return header_.len();
+ }
+
+ // Otherwise make a dummy header and return the length.
+ DataBuffer buf;
+ return WriteHeader(&buf, 0, 0);
+}
+
+uint64_t TlsRecordHeader::RecoverSequenceNumber(uint64_t expected,
+ uint32_t partial,
+ size_t partial_bits) {
+ EXPECT_GE(32U, partial_bits);
+ uint64_t mask = (1 << partial_bits) - 1;
+ // First we determine the highest possible value. This is half the
+ // expressible range above the expected value.
+ uint64_t cap = expected + (1ULL << (partial_bits - 1));
+ // Add the partial piece in. e.g., xxxx789a and 1234 becomes xxxx1234.
+ uint64_t seq_no = (cap & ~mask) | partial;
+ // If the partial value is higher than the same partial piece from the cap,
+ // then the real value has to be lower. e.g., xxxx1234 can't become xxxx5678.
+ if (partial > (cap & mask)) {
+ seq_no -= 1ULL << partial_bits;
+ }
+ return seq_no;
+}
+
+// Determine the full epoch and sequence number from an expected and raw value.
+// The expected and output values are packed as they are in DTLS 1.2 and
+// earlier: with 16 bits of epoch and 48 bits of sequence number.
+uint64_t TlsRecordHeader::ParseSequenceNumber(uint64_t expected, uint32_t raw,
+ size_t seq_no_bits,
+ size_t epoch_bits) {
+ uint64_t epoch_mask = (1ULL << epoch_bits) - 1;
+ uint64_t epoch = RecoverSequenceNumber(
+ expected >> 48, (raw >> seq_no_bits) & epoch_mask, epoch_bits);
+ if (epoch > (expected >> 48)) {
+ // If the epoch has changed, reset the expected sequence number.
+ expected = 0;
+ } else {
+ // Otherwise, retain just the sequence number part.
+ expected &= (1ULL << 48) - 1;
+ }
+ uint64_t seq_no_mask = (1ULL << seq_no_bits) - 1;
+ uint64_t seq_no =
+ RecoverSequenceNumber(expected, raw & seq_no_mask, seq_no_bits);
+ return (epoch << 48) | seq_no;
+}
+
+bool TlsRecordHeader::Parse(bool is_dtls13, uint64_t seqno, TlsParser* parser,
DataBuffer* body) {
+ auto mark = parser->consumed();
+
if (!parser->Read(&content_type_)) {
return false;
}
- uint32_t version;
- if (!parser->Read(&version, 2)) {
+ if (is_dtls13) {
+ variant_ = ssl_variant_datagram;
+ version_ = SSL_LIBRARY_VERSION_TLS_1_3;
+
+#ifndef UNSAFE_FUZZER_MODE
+ // Deal with the 7 octet header.
+ if (content_type_ == kTlsApplicationDataType) {
+ uint32_t tmp;
+ if (!parser->Read(&tmp, 4)) {
+ return false;
+ }
+ sequence_number_ = ParseSequenceNumber(seqno, tmp, 30, 2);
+ if (!parser->ReadFromMark(&header_, parser->consumed() + 2 - mark,
+ mark)) {
+ return false;
+ }
+ return parser->ReadVariable(body, 2);
+ }
+
+ // The short, 2 octet header.
+ if ((content_type_ & 0xe0) == 0x20) {
+ uint32_t tmp;
+ if (!parser->Read(&tmp, 1)) {
+ return false;
+ }
+ // Need to use the low 5 bits of the first octet too.
+ tmp |= (content_type_ & 0x1f) << 8;
+ content_type_ = kTlsApplicationDataType;
+ sequence_number_ = ParseSequenceNumber(seqno, tmp, 12, 1);
+
+ if (!parser->ReadFromMark(&header_, parser->consumed() - mark, mark)) {
+ return false;
+ }
+ return parser->Read(body, parser->remaining());
+ }
+
+ // The full 13 octet header can only be used for a few types.
+ EXPECT_TRUE(content_type_ == kTlsAlertType ||
+ content_type_ == kTlsHandshakeType ||
+ content_type_ == kTlsAckType);
+#endif
+ }
+
+ uint32_t ver;
+ if (!parser->Read(&ver, 2)) {
return false;
}
- version_ = version;
+ if (!is_dtls13) {
+ variant_ = IsDtls(ver) ? ssl_variant_datagram : ssl_variant_stream;
+ }
+ version_ = NormalizeTlsVersion(ver);
- // If this is DTLS, overwrite the sequence number.
- if (IsDtls(version)) {
+ if (is_dtls()) {
+ // If this is DTLS, read the sequence number.
uint32_t tmp;
if (!parser->Read(&tmp, 4)) {
return false;
@@ -203,21 +335,40 @@ bool TlsRecordHeader::Parse(uint64_t sequence_number, TlsParser* parser,
}
sequence_number_ |= static_cast<uint64_t>(tmp);
} else {
- sequence_number_ = sequence_number;
+ sequence_number_ = seqno;
+ }
+ if (!parser->ReadFromMark(&header_, parser->consumed() + 2 - mark, mark)) {
+ return false;
}
return parser->ReadVariable(body, 2);
}
-size_t TlsRecordHeader::Write(DataBuffer* buffer, size_t offset,
- const DataBuffer& body) const {
+size_t TlsRecordHeader::WriteHeader(DataBuffer* buffer, size_t offset,
+ size_t body_len) const {
offset = buffer->Write(offset, content_type_, 1);
- offset = buffer->Write(offset, version_, 2);
- if (is_dtls()) {
- // write epoch (2 octet), and seqnum (6 octet)
- offset = buffer->Write(offset, sequence_number_ >> 32, 4);
- offset = buffer->Write(offset, sequence_number_ & 0xffffffff, 4);
+ if (is_dtls() && version_ >= SSL_LIBRARY_VERSION_TLS_1_3 &&
+ content_type() == kTlsApplicationDataType) {
+ // application_data records in TLS 1.3 have a different header format.
+ // Always use the long header here for simplicity.
+ uint32_t e = (sequence_number_ >> 48) & 0x3;
+ uint32_t seqno = sequence_number_ & ((1ULL << 30) - 1);
+ offset = buffer->Write(offset, (e << 30) | seqno, 4);
+ } else {
+ uint16_t v = is_dtls() ? TlsVersionToDtlsVersion(version_) : version_;
+ offset = buffer->Write(offset, v, 2);
+ if (is_dtls()) {
+ // write epoch (2 octet), and seqnum (6 octet)
+ offset = buffer->Write(offset, sequence_number_ >> 32, 4);
+ offset = buffer->Write(offset, sequence_number_ & 0xffffffff, 4);
+ }
}
- offset = buffer->Write(offset, body.len(), 2);
+ offset = buffer->Write(offset, body_len, 2);
+ return offset;
+}
+
+size_t TlsRecordHeader::Write(DataBuffer* buffer, size_t offset,
+ const DataBuffer& body) const {
+ offset = WriteHeader(buffer, offset, body.len());
offset = buffer->Write(offset, body);
return offset;
}
@@ -259,7 +410,7 @@ bool TlsRecordFilter::Unprotect(const TlsRecordHeader& header,
bool TlsRecordFilter::Protect(const TlsRecordHeader& header,
uint8_t inner_content_type,
const DataBuffer& plaintext,
- DataBuffer* ciphertext) {
+ DataBuffer* ciphertext, size_t padding) {
if (!cipher_spec_ || header.content_type() != kTlsApplicationDataType) {
*ciphertext = plaintext;
return true;
@@ -267,8 +418,10 @@ bool TlsRecordFilter::Protect(const TlsRecordHeader& header,
if (g_ssl_gtest_verbose) {
std::cerr << "protect: " << header.sequence_number() << std::endl;
}
- DataBuffer padded = plaintext;
- padded.Write(padded.len(), inner_content_type, 1);
+ DataBuffer padded;
+ padded.Allocate(plaintext.len() + 1 + padding);
+ size_t offset = padded.Write(0, plaintext.data(), plaintext.len());
+ padded.Write(offset, inner_content_type, 1);
return cipher_spec_->Protect(header, padded, ciphertext);
}
@@ -406,6 +559,7 @@ bool TlsHandshakeFilter::HandshakeHeader::Parse(
const DataBuffer& preceding_fragment, DataBuffer* body, bool* complete) {
*complete = false;
+ variant_ = record_header.variant();
version_ = record_header.version();
if (!parser->Read(&handshake_type_)) {
return false; // malformed
@@ -487,10 +641,10 @@ PacketFilter::Action TlsConversationRecorder::FilterRecord(
return KEEP;
}
-PacketFilter::Action TlsHeaderRecorder::FilterRecord(
- const TlsRecordHeader& header, const DataBuffer& input,
- DataBuffer* output) {
- headers_.push_back(header);
+PacketFilter::Action TlsHeaderRecorder::FilterRecord(const TlsRecordHeader& hdr,
+ const DataBuffer& input,
+ DataBuffer* output) {
+ headers_.push_back(hdr);
return KEEP;
}
diff --git a/security/nss/gtests/ssl_gtest/tls_filter.h b/security/nss/gtests/ssl_gtest/tls_filter.h
index 1bbe190abe..effda4aa06 100644
--- a/security/nss/gtests/ssl_gtest/tls_filter.h
+++ b/security/nss/gtests/ssl_gtest/tls_filter.h
@@ -11,7 +11,7 @@
#include <memory>
#include <set>
#include <vector>
-
+#include "sslt.h"
#include "test_io.h"
#include "tls_agent.h"
#include "tls_parser.h"
@@ -27,43 +27,57 @@ class TlsCipherSpec;
class TlsVersioned {
public:
- TlsVersioned() : version_(0) {}
- explicit TlsVersioned(uint16_t version) : version_(version) {}
+ TlsVersioned() : variant_(ssl_variant_stream), version_(0) {}
+ TlsVersioned(SSLProtocolVariant var, uint16_t ver)
+ : variant_(var), version_(ver) {}
- bool is_dtls() const { return IsDtls(version_); }
+ bool is_dtls() const { return variant_ == ssl_variant_datagram; }
+ SSLProtocolVariant variant() const { return variant_; }
uint16_t version() const { return version_; }
void WriteStream(std::ostream& stream) const;
protected:
+ SSLProtocolVariant variant_;
uint16_t version_;
};
class TlsRecordHeader : public TlsVersioned {
public:
- TlsRecordHeader() : TlsVersioned(), content_type_(0), sequence_number_(0) {}
- TlsRecordHeader(uint16_t version, uint8_t content_type,
- uint64_t sequence_number)
- : TlsVersioned(version),
- content_type_(content_type),
- sequence_number_(sequence_number) {}
+ TlsRecordHeader()
+ : TlsVersioned(), content_type_(0), sequence_number_(0), header_() {}
+ TlsRecordHeader(SSLProtocolVariant var, uint16_t ver, uint8_t ct,
+ uint64_t seqno)
+ : TlsVersioned(var, ver),
+ content_type_(ct),
+ sequence_number_(seqno),
+ header_() {}
uint8_t content_type() const { return content_type_; }
uint64_t sequence_number() const { return sequence_number_; }
uint16_t epoch() const {
return static_cast<uint16_t>(sequence_number_ >> 48);
}
- size_t header_length() const { return is_dtls() ? 13 : 5; }
+ size_t header_length() const;
+ const DataBuffer& header() const { return header_; }
// Parse the header; return true if successful; body in an outparam if OK.
- bool Parse(uint64_t sequence_number, TlsParser* parser, DataBuffer* body);
+ bool Parse(bool is_dtls13, uint64_t sequence_number, TlsParser* parser,
+ DataBuffer* body);
// Write the header and body to a buffer at the given offset.
// Return the offset of the end of the write.
size_t Write(DataBuffer* buffer, size_t offset, const DataBuffer& body) const;
+ size_t WriteHeader(DataBuffer* buffer, size_t offset, size_t body_len) const;
private:
+ static uint64_t RecoverSequenceNumber(uint64_t expected, uint32_t partial,
+ size_t partial_bits);
+ static uint64_t ParseSequenceNumber(uint64_t expected, uint32_t raw,
+ size_t seq_no_bits, size_t epoch_bits);
+
uint8_t content_type_;
uint64_t sequence_number_;
+ DataBuffer header_;
};
struct TlsRecord {
@@ -83,8 +97,8 @@ inline std::shared_ptr<T> MakeTlsFilter(const std::shared_ptr<TlsAgent>& agent,
// Abstract filter that operates on entire (D)TLS records.
class TlsRecordFilter : public PacketFilter {
public:
- TlsRecordFilter(const std::shared_ptr<TlsAgent>& agent)
- : agent_(agent),
+ TlsRecordFilter(const std::shared_ptr<TlsAgent>& a)
+ : agent_(a),
count_(0),
cipher_spec_(),
dropped_record_(false),
@@ -106,7 +120,8 @@ class TlsRecordFilter : public PacketFilter {
bool Unprotect(const TlsRecordHeader& header, const DataBuffer& cipherText,
uint8_t* inner_content_type, DataBuffer* plaintext);
bool Protect(const TlsRecordHeader& header, uint8_t inner_content_type,
- const DataBuffer& plaintext, DataBuffer* ciphertext);
+ const DataBuffer& plaintext, DataBuffer* ciphertext,
+ size_t padding = 0);
protected:
// There are two filter functions which can be overriden. Both are
@@ -130,6 +145,8 @@ class TlsRecordFilter : public PacketFilter {
return KEEP;
}
+ bool is_dtls13() const;
+
private:
static void CipherSpecChanged(void* arg, PRBool sending,
ssl3CipherSpec* newSpec);
@@ -183,13 +200,11 @@ inline std::ostream& operator<<(std::ostream& stream,
// records and that they don't span records or anything crazy like that.
class TlsHandshakeFilter : public TlsRecordFilter {
public:
- TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& agent)
- : TlsRecordFilter(agent), handshake_types_(), preceding_fragment_() {}
- TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& agent,
+ TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a), handshake_types_(), preceding_fragment_() {}
+ TlsHandshakeFilter(const std::shared_ptr<TlsAgent>& a,
const std::set<uint8_t>& types)
- : TlsRecordFilter(agent),
- handshake_types_(types),
- preceding_fragment_() {}
+ : TlsRecordFilter(a), handshake_types_(types), preceding_fragment_() {}
// This filter can be set to be selective based on handshake message type. If
// this function isn't used (or the set is empty), then all handshake messages
@@ -243,12 +258,12 @@ class TlsHandshakeFilter : public TlsRecordFilter {
// Make a copy of the first instance of a handshake message.
class TlsHandshakeRecorder : public TlsHandshakeFilter {
public:
- TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& agent,
+ TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& a,
uint8_t handshake_type)
- : TlsHandshakeFilter(agent, {handshake_type}), buffer_() {}
- TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& agent,
+ : TlsHandshakeFilter(a, {handshake_type}), buffer_() {}
+ TlsHandshakeRecorder(const std::shared_ptr<TlsAgent>& a,
const std::set<uint8_t>& handshake_types)
- : TlsHandshakeFilter(agent, handshake_types), buffer_() {}
+ : TlsHandshakeFilter(a, handshake_types), buffer_() {}
virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
const DataBuffer& input,
@@ -265,10 +280,10 @@ class TlsHandshakeRecorder : public TlsHandshakeFilter {
// Replace all instances of a handshake message.
class TlsInspectorReplaceHandshakeMessage : public TlsHandshakeFilter {
public:
- TlsInspectorReplaceHandshakeMessage(const std::shared_ptr<TlsAgent>& agent,
+ TlsInspectorReplaceHandshakeMessage(const std::shared_ptr<TlsAgent>& a,
uint8_t handshake_type,
const DataBuffer& replacement)
- : TlsHandshakeFilter(agent, {handshake_type}), buffer_(replacement) {}
+ : TlsHandshakeFilter(a, {handshake_type}), buffer_(replacement) {}
virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
const DataBuffer& input,
@@ -281,10 +296,10 @@ class TlsInspectorReplaceHandshakeMessage : public TlsHandshakeFilter {
// Make a copy of each record of a given type.
class TlsRecordRecorder : public TlsRecordFilter {
public:
- TlsRecordRecorder(const std::shared_ptr<TlsAgent>& agent, uint8_t ct)
- : TlsRecordFilter(agent), filter_(true), ct_(ct), records_() {}
- TlsRecordRecorder(const std::shared_ptr<TlsAgent>& agent)
- : TlsRecordFilter(agent),
+ TlsRecordRecorder(const std::shared_ptr<TlsAgent>& a, uint8_t ct)
+ : TlsRecordFilter(a), filter_(true), ct_(ct), records_() {}
+ TlsRecordRecorder(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a),
filter_(false),
ct_(content_handshake), // dummy (<optional> is C++14)
records_() {}
@@ -306,9 +321,9 @@ class TlsRecordRecorder : public TlsRecordFilter {
// Make a copy of the complete conversation.
class TlsConversationRecorder : public TlsRecordFilter {
public:
- TlsConversationRecorder(const std::shared_ptr<TlsAgent>& agent,
+ TlsConversationRecorder(const std::shared_ptr<TlsAgent>& a,
DataBuffer& buffer)
- : TlsRecordFilter(agent), buffer_(buffer) {}
+ : TlsRecordFilter(a), buffer_(buffer) {}
virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
const DataBuffer& input,
@@ -321,8 +336,7 @@ class TlsConversationRecorder : public TlsRecordFilter {
// Make a copy of the records
class TlsHeaderRecorder : public TlsRecordFilter {
public:
- TlsHeaderRecorder(const std::shared_ptr<TlsAgent>& agent)
- : TlsRecordFilter(agent) {}
+ TlsHeaderRecorder(const std::shared_ptr<TlsAgent>& a) : TlsRecordFilter(a) {}
virtual PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
const DataBuffer& input,
DataBuffer* output);
@@ -359,15 +373,15 @@ typedef std::function<bool(TlsParser* parser, const TlsVersioned& header)>
class TlsExtensionFilter : public TlsHandshakeFilter {
public:
- TlsExtensionFilter(const std::shared_ptr<TlsAgent>& agent)
- : TlsHandshakeFilter(agent,
+ TlsExtensionFilter(const std::shared_ptr<TlsAgent>& a)
+ : TlsHandshakeFilter(a,
{kTlsHandshakeClientHello, kTlsHandshakeServerHello,
kTlsHandshakeHelloRetryRequest,
kTlsHandshakeEncryptedExtensions}) {}
- TlsExtensionFilter(const std::shared_ptr<TlsAgent>& agent,
+ TlsExtensionFilter(const std::shared_ptr<TlsAgent>& a,
const std::set<uint8_t>& types)
- : TlsHandshakeFilter(agent, types) {}
+ : TlsHandshakeFilter(a, types) {}
static bool FindExtensions(TlsParser* parser, const HandshakeHeader& header);
@@ -388,9 +402,9 @@ class TlsExtensionFilter : public TlsHandshakeFilter {
class TlsExtensionCapture : public TlsExtensionFilter {
public:
- TlsExtensionCapture(const std::shared_ptr<TlsAgent>& agent, uint16_t ext,
+ TlsExtensionCapture(const std::shared_ptr<TlsAgent>& a, uint16_t ext,
bool last = false)
- : TlsExtensionFilter(agent),
+ : TlsExtensionFilter(a),
extension_(ext),
captured_(false),
last_(last),
@@ -413,9 +427,9 @@ class TlsExtensionCapture : public TlsExtensionFilter {
class TlsExtensionReplacer : public TlsExtensionFilter {
public:
- TlsExtensionReplacer(const std::shared_ptr<TlsAgent>& agent,
- uint16_t extension, const DataBuffer& data)
- : TlsExtensionFilter(agent), extension_(extension), data_(data) {}
+ TlsExtensionReplacer(const std::shared_ptr<TlsAgent>& a, uint16_t extension,
+ const DataBuffer& data)
+ : TlsExtensionFilter(a), extension_(extension), data_(data) {}
PacketFilter::Action FilterExtension(uint16_t extension_type,
const DataBuffer& input,
DataBuffer* output) override;
@@ -427,9 +441,8 @@ class TlsExtensionReplacer : public TlsExtensionFilter {
class TlsExtensionDropper : public TlsExtensionFilter {
public:
- TlsExtensionDropper(const std::shared_ptr<TlsAgent>& agent,
- uint16_t extension)
- : TlsExtensionFilter(agent), extension_(extension) {}
+ TlsExtensionDropper(const std::shared_ptr<TlsAgent>& a, uint16_t extension)
+ : TlsExtensionFilter(a), extension_(extension) {}
PacketFilter::Action FilterExtension(uint16_t extension_type,
const DataBuffer&, DataBuffer*) override;
@@ -439,9 +452,9 @@ class TlsExtensionDropper : public TlsExtensionFilter {
class TlsExtensionInjector : public TlsHandshakeFilter {
public:
- TlsExtensionInjector(const std::shared_ptr<TlsAgent>& agent, uint16_t ext,
+ TlsExtensionInjector(const std::shared_ptr<TlsAgent>& a, uint16_t ext,
const DataBuffer& data)
- : TlsHandshakeFilter(agent), extension_(ext), data_(data) {}
+ : TlsHandshakeFilter(a), extension_(ext), data_(data) {}
protected:
PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
@@ -453,7 +466,6 @@ class TlsExtensionInjector : public TlsHandshakeFilter {
const DataBuffer data_;
};
-class TlsAgent;
typedef std::function<void(void)> VoidFunction;
class AfterRecordN : public TlsRecordFilter {
@@ -495,6 +507,22 @@ class TlsClientHelloVersionChanger : public TlsHandshakeFilter {
std::weak_ptr<TlsAgent> server_;
};
+// Damage a record.
+class TlsRecordLastByteDamager : public TlsRecordFilter {
+ public:
+ TlsRecordLastByteDamager(const std::shared_ptr<TlsAgent>& a)
+ : TlsRecordFilter(a) {}
+
+ protected:
+ PacketFilter::Action FilterRecord(const TlsRecordHeader& header,
+ const DataBuffer& data,
+ DataBuffer* changed) override {
+ *changed = data;
+ changed->data()[changed->len() - 1]++;
+ return CHANGE;
+ }
+};
+
// This class selectively drops complete writes. This relies on the fact that
// writes in libssl are on record boundaries.
class SelectiveDropFilter : public PacketFilter {
@@ -515,16 +543,16 @@ class SelectiveDropFilter : public PacketFilter {
// datagram, we just drop one.
class SelectiveRecordDropFilter : public TlsRecordFilter {
public:
- SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& agent,
+ SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& a,
uint32_t pattern, bool enabled = true)
- : TlsRecordFilter(agent), pattern_(pattern), counter_(0) {
+ : TlsRecordFilter(a), pattern_(pattern), counter_(0) {
if (!enabled) {
Disable();
}
}
- SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& agent,
+ SelectiveRecordDropFilter(const std::shared_ptr<TlsAgent>& a,
std::initializer_list<size_t> records)
- : SelectiveRecordDropFilter(agent, ToPattern(records), true) {}
+ : SelectiveRecordDropFilter(a, ToPattern(records), true) {}
void Reset(uint32_t pattern) {
counter_ = 0;
@@ -551,10 +579,9 @@ class SelectiveRecordDropFilter : public TlsRecordFilter {
// Set the version number in the ClientHello.
class TlsClientHelloVersionSetter : public TlsHandshakeFilter {
public:
- TlsClientHelloVersionSetter(const std::shared_ptr<TlsAgent>& agent,
+ TlsClientHelloVersionSetter(const std::shared_ptr<TlsAgent>& a,
uint16_t version)
- : TlsHandshakeFilter(agent, {kTlsHandshakeClientHello}),
- version_(version) {}
+ : TlsHandshakeFilter(a, {kTlsHandshakeClientHello}), version_(version) {}
virtual PacketFilter::Action FilterHandshake(const HandshakeHeader& header,
const DataBuffer& input,
@@ -567,8 +594,8 @@ class TlsClientHelloVersionSetter : public TlsHandshakeFilter {
// Damages the last byte of a handshake message.
class TlsLastByteDamager : public TlsHandshakeFilter {
public:
- TlsLastByteDamager(const std::shared_ptr<TlsAgent>& agent, uint8_t type)
- : TlsHandshakeFilter(agent), type_(type) {}
+ TlsLastByteDamager(const std::shared_ptr<TlsAgent>& a, uint8_t type)
+ : TlsHandshakeFilter(a), type_(type) {}
PacketFilter::Action FilterHandshake(
const TlsHandshakeFilter::HandshakeHeader& header,
const DataBuffer& input, DataBuffer* output) override {
@@ -588,9 +615,9 @@ class TlsLastByteDamager : public TlsHandshakeFilter {
class SelectedCipherSuiteReplacer : public TlsHandshakeFilter {
public:
- SelectedCipherSuiteReplacer(const std::shared_ptr<TlsAgent>& agent,
+ SelectedCipherSuiteReplacer(const std::shared_ptr<TlsAgent>& a,
uint16_t suite)
- : TlsHandshakeFilter(agent, {kTlsHandshakeServerHello}),
+ : TlsHandshakeFilter(a, {kTlsHandshakeServerHello}),
cipher_suite_(suite) {}
protected:
diff --git a/security/nss/gtests/ssl_gtest/tls_protect.cc b/security/nss/gtests/ssl_gtest/tls_protect.cc
index 6c945f66eb..c715a36a6b 100644
--- a/security/nss/gtests/ssl_gtest/tls_protect.cc
+++ b/security/nss/gtests/ssl_gtest/tls_protect.cc
@@ -54,17 +54,17 @@ bool AeadCipher::AeadInner(bool decrypt, void *params, size_t param_length,
return rv == SECSuccess;
}
-bool AeadCipherAesGcm::Aead(bool decrypt, uint64_t seq, const uint8_t *in,
- size_t inlen, uint8_t *out, size_t *outlen,
- size_t maxlen) {
+bool AeadCipherAesGcm::Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len,
+ uint64_t seq, const uint8_t *in, size_t inlen,
+ uint8_t *out, size_t *outlen, size_t maxlen) {
CK_GCM_PARAMS aeadParams;
unsigned char nonce[12];
memset(&aeadParams, 0, sizeof(aeadParams));
aeadParams.pIv = nonce;
aeadParams.ulIvLen = sizeof(nonce);
- aeadParams.pAAD = NULL;
- aeadParams.ulAADLen = 0;
+ aeadParams.pAAD = const_cast<uint8_t *>(hdr);
+ aeadParams.ulAADLen = hdr_len;
aeadParams.ulTagBits = 128;
FormatNonce(seq, nonce);
@@ -72,7 +72,8 @@ bool AeadCipherAesGcm::Aead(bool decrypt, uint64_t seq, const uint8_t *in,
in, inlen, out, outlen, maxlen);
}
-bool AeadCipherChacha20Poly1305::Aead(bool decrypt, uint64_t seq,
+bool AeadCipherChacha20Poly1305::Aead(bool decrypt, const uint8_t *hdr,
+ size_t hdr_len, uint64_t seq,
const uint8_t *in, size_t inlen,
uint8_t *out, size_t *outlen,
size_t maxlen) {
@@ -82,8 +83,8 @@ bool AeadCipherChacha20Poly1305::Aead(bool decrypt, uint64_t seq,
memset(&aeadParams, 0, sizeof(aeadParams));
aeadParams.pNonce = nonce;
aeadParams.ulNonceLen = sizeof(nonce);
- aeadParams.pAAD = NULL;
- aeadParams.ulAADLen = 0;
+ aeadParams.pAAD = const_cast<uint8_t *>(hdr);
+ aeadParams.ulAADLen = hdr_len;
aeadParams.ulTagLen = 16;
FormatNonce(seq, nonce);
@@ -91,9 +92,9 @@ bool AeadCipherChacha20Poly1305::Aead(bool decrypt, uint64_t seq,
in, inlen, out, outlen, maxlen);
}
-bool TlsCipherSpec::Init(uint16_t epoch, SSLCipherAlgorithm cipher,
+bool TlsCipherSpec::Init(uint16_t epoc, SSLCipherAlgorithm cipher,
PK11SymKey *key, const uint8_t *iv) {
- epoch_ = epoch;
+ epoch_ = epoc;
switch (cipher) {
case ssl_calg_aes_gcm:
aead_.reset(new AeadCipherAesGcm());
@@ -114,10 +115,12 @@ bool TlsCipherSpec::Unprotect(const TlsRecordHeader &header,
// Make space.
plaintext->Allocate(ciphertext.len());
+ auto header_bytes = header.header();
size_t len;
bool ret =
- aead_->Aead(true, header.sequence_number(), ciphertext.data(),
- ciphertext.len(), plaintext->data(), &len, plaintext->len());
+ aead_->Aead(true, header_bytes.data(), header_bytes.len(),
+ header.sequence_number(), ciphertext.data(), ciphertext.len(),
+ plaintext->data(), &len, plaintext->len());
if (!ret) return false;
plaintext->Truncate(len);
@@ -133,9 +136,13 @@ bool TlsCipherSpec::Protect(const TlsRecordHeader &header,
ciphertext->Allocate(plaintext.len() +
32); // Room for any plausible auth tag
size_t len;
+
+ DataBuffer header_bytes;
+ (void)header.WriteHeader(&header_bytes, 0, plaintext.len() + 16);
bool ret =
- aead_->Aead(false, header.sequence_number(), plaintext.data(),
- plaintext.len(), ciphertext->data(), &len, ciphertext->len());
+ aead_->Aead(false, header_bytes.data(), header_bytes.len(),
+ header.sequence_number(), plaintext.data(), plaintext.len(),
+ ciphertext->data(), &len, ciphertext->len());
if (!ret) return false;
ciphertext->Truncate(len);
diff --git a/security/nss/gtests/ssl_gtest/tls_protect.h b/security/nss/gtests/ssl_gtest/tls_protect.h
index 93ffd63227..6f129a4eb6 100644
--- a/security/nss/gtests/ssl_gtest/tls_protect.h
+++ b/security/nss/gtests/ssl_gtest/tls_protect.h
@@ -23,8 +23,9 @@ class AeadCipher {
virtual ~AeadCipher();
bool Init(PK11SymKey *key, const uint8_t *iv);
- virtual bool Aead(bool decrypt, uint64_t seq, const uint8_t *in, size_t inlen,
- uint8_t *out, size_t *outlen, size_t maxlen) = 0;
+ virtual bool Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len,
+ uint64_t seq, const uint8_t *in, size_t inlen, uint8_t *out,
+ size_t *outlen, size_t maxlen) = 0;
protected:
void FormatNonce(uint64_t seq, uint8_t *nonce);
@@ -42,8 +43,9 @@ class AeadCipherChacha20Poly1305 : public AeadCipher {
AeadCipherChacha20Poly1305() : AeadCipher(CKM_NSS_CHACHA20_POLY1305) {}
protected:
- bool Aead(bool decrypt, uint64_t seq, const uint8_t *in, size_t inlen,
- uint8_t *out, size_t *outlen, size_t maxlen);
+ bool Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len, uint64_t seq,
+ const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen,
+ size_t maxlen);
};
class AeadCipherAesGcm : public AeadCipher {
@@ -51,8 +53,9 @@ class AeadCipherAesGcm : public AeadCipher {
AeadCipherAesGcm() : AeadCipher(CKM_AES_GCM) {}
protected:
- bool Aead(bool decrypt, uint64_t seq, const uint8_t *in, size_t inlen,
- uint8_t *out, size_t *outlen, size_t maxlen);
+ bool Aead(bool decrypt, const uint8_t *hdr, size_t hdr_len, uint64_t seq,
+ const uint8_t *in, size_t inlen, uint8_t *out, size_t *outlen,
+ size_t maxlen);
};
// Our analog of ssl3CipherSpec
diff --git a/security/nss/lib/certdb/crl.c b/security/nss/lib/certdb/crl.c
index d1c48dfba6..63adcad46d 100644
--- a/security/nss/lib/certdb/crl.c
+++ b/security/nss/lib/certdb/crl.c
@@ -898,13 +898,13 @@ static PLHashAllocOps preAllocOps = { PreAllocTable, PreFreeTable,
/* destructor for PreAllocator object */
void
-PreAllocator_Destroy(PreAllocator* PreAllocator)
+PreAllocator_Destroy(PreAllocator* allocator)
{
- if (!PreAllocator) {
+ if (!allocator) {
return;
}
- if (PreAllocator->arena) {
- PORT_FreeArena(PreAllocator->arena, PR_TRUE);
+ if (allocator->arena) {
+ PORT_FreeArena(allocator->arena, PR_TRUE);
}
}
diff --git a/security/nss/lib/ckfw/Makefile b/security/nss/lib/ckfw/Makefile
index 484dbb511a..2902bef48b 100644
--- a/security/nss/lib/ckfw/Makefile
+++ b/security/nss/lib/ckfw/Makefile
@@ -33,7 +33,3 @@ ifdef NSS_BUILD_CAPI
DIRS += capi
endif
endif
-
-#ifeq ($(OS_ARCH), Darwin)
-#DIRS += nssmkey
-#endif
diff --git a/security/nss/lib/ckfw/builtins/certdata.txt b/security/nss/lib/ckfw/builtins/certdata.txt
index 5d2baf3a56..d291f28a5d 100644
--- a/security/nss/lib/ckfw/builtins/certdata.txt
+++ b/security/nss/lib/ckfw/builtins/certdata.txt
@@ -7241,163 +7241,6 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
#
-# Certificate "TC TrustCenter Class 3 CA II"
-#
-# Issuer: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE
-# Serial Number:4a:47:00:01:00:02:e5:a0:5d:d6:3f:00:51:bf
-# Subject: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE
-# Not Valid Before: Thu Jan 12 14:41:57 2006
-# Not Valid After : Wed Dec 31 22:59:59 2025
-# Fingerprint (MD5): 56:5F:AA:80:61:12:17:F6:67:21:E6:2B:6D:61:56:8E
-# Fingerprint (SHA1): 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5
-CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "TC TrustCenter Class 3 CA II"
-CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
-CKA_SUBJECT MULTILINE_OCTAL
-\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
-\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
-\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
-\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
-\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
-\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
-\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
-\040\063\040\103\101\040\111\111
-END
-CKA_ID UTF8 "0"
-CKA_ISSUER MULTILINE_OCTAL
-\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
-\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
-\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
-\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
-\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
-\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
-\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
-\040\063\040\103\101\040\111\111
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\016\112\107\000\001\000\002\345\240\135\326\077\000\121\277
-END
-CKA_VALUE MULTILINE_OCTAL
-\060\202\004\252\060\202\003\222\240\003\002\001\002\002\016\112
-\107\000\001\000\002\345\240\135\326\077\000\121\277\060\015\006
-\011\052\206\110\206\367\015\001\001\005\005\000\060\166\061\013
-\060\011\006\003\125\004\006\023\002\104\105\061\034\060\032\006
-\003\125\004\012\023\023\124\103\040\124\162\165\163\164\103\145
-\156\164\145\162\040\107\155\142\110\061\042\060\040\006\003\125
-\004\013\023\031\124\103\040\124\162\165\163\164\103\145\156\164
-\145\162\040\103\154\141\163\163\040\063\040\103\101\061\045\060
-\043\006\003\125\004\003\023\034\124\103\040\124\162\165\163\164
-\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
-\101\040\111\111\060\036\027\015\060\066\060\061\061\062\061\064
-\064\061\065\067\132\027\015\062\065\061\062\063\061\062\062\065
-\071\065\071\132\060\166\061\013\060\011\006\003\125\004\006\023
-\002\104\105\061\034\060\032\006\003\125\004\012\023\023\124\103
-\040\124\162\165\163\164\103\145\156\164\145\162\040\107\155\142
-\110\061\042\060\040\006\003\125\004\013\023\031\124\103\040\124
-\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
-\040\063\040\103\101\061\045\060\043\006\003\125\004\003\023\034
-\124\103\040\124\162\165\163\164\103\145\156\164\145\162\040\103
-\154\141\163\163\040\063\040\103\101\040\111\111\060\202\001\042
-\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003
-\202\001\017\000\060\202\001\012\002\202\001\001\000\264\340\273
-\121\273\071\134\213\004\305\114\171\034\043\206\061\020\143\103
-\125\047\077\306\105\307\244\075\354\011\015\032\036\040\302\126
-\036\336\033\067\007\060\042\057\157\361\006\361\253\255\326\310
-\253\141\243\057\103\304\260\262\055\374\303\226\151\173\176\212
-\344\314\300\071\022\220\102\140\311\314\065\150\356\332\137\220
-\126\137\315\034\115\133\130\111\353\016\001\117\144\372\054\074
-\211\130\330\057\056\342\260\150\351\042\073\165\211\326\104\032
-\145\362\033\227\046\035\050\155\254\350\275\131\035\053\044\366
-\326\204\003\146\210\044\000\170\140\361\370\253\376\002\262\153
-\373\042\373\065\346\026\321\255\366\056\022\344\372\065\152\345
-\031\271\135\333\073\036\032\373\323\377\025\024\010\330\011\152
-\272\105\235\024\171\140\175\257\100\212\007\163\263\223\226\323
-\164\064\215\072\067\051\336\134\354\365\356\056\061\302\040\334
-\276\361\117\177\043\122\331\133\342\144\331\234\252\007\010\265
-\105\275\321\320\061\301\253\124\237\251\322\303\142\140\003\361
-\273\071\112\222\112\075\012\271\235\305\240\376\067\002\003\001
-\000\001\243\202\001\064\060\202\001\060\060\017\006\003\125\035
-\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125
-\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125
-\035\016\004\026\004\024\324\242\374\237\263\303\330\003\323\127
-\134\007\244\320\044\247\300\362\000\324\060\201\355\006\003\125
-\035\037\004\201\345\060\201\342\060\201\337\240\201\334\240\201
-\331\206\065\150\164\164\160\072\057\057\167\167\167\056\164\162
-\165\163\164\143\145\156\164\145\162\056\144\145\057\143\162\154
-\057\166\062\057\164\143\137\143\154\141\163\163\137\063\137\143
-\141\137\111\111\056\143\162\154\206\201\237\154\144\141\160\072
-\057\057\167\167\167\056\164\162\165\163\164\143\145\156\164\145
-\162\056\144\145\057\103\116\075\124\103\045\062\060\124\162\165
-\163\164\103\145\156\164\145\162\045\062\060\103\154\141\163\163
-\045\062\060\063\045\062\060\103\101\045\062\060\111\111\054\117
-\075\124\103\045\062\060\124\162\165\163\164\103\145\156\164\145
-\162\045\062\060\107\155\142\110\054\117\125\075\162\157\157\164
-\143\145\162\164\163\054\104\103\075\164\162\165\163\164\143\145
-\156\164\145\162\054\104\103\075\144\145\077\143\145\162\164\151
-\146\151\143\141\164\145\122\145\166\157\143\141\164\151\157\156
-\114\151\163\164\077\142\141\163\145\077\060\015\006\011\052\206
-\110\206\367\015\001\001\005\005\000\003\202\001\001\000\066\140
-\344\160\367\006\040\103\331\043\032\102\362\370\243\262\271\115
-\212\264\363\302\232\125\061\174\304\073\147\232\264\337\115\016
-\212\223\112\027\213\033\215\312\211\341\317\072\036\254\035\361
-\234\062\264\216\131\166\242\101\205\045\067\240\023\320\365\174
-\116\325\352\226\342\156\162\301\273\052\376\154\156\370\221\230
-\106\374\311\033\127\133\352\310\032\073\077\260\121\230\074\007
-\332\054\131\001\332\213\104\350\341\164\375\247\150\335\124\272
-\203\106\354\310\106\265\370\257\227\300\073\011\034\217\316\162
-\226\075\063\126\160\274\226\313\330\325\175\040\232\203\237\032
-\334\071\361\305\162\243\021\003\375\073\102\122\051\333\350\001
-\367\233\136\214\326\215\206\116\031\372\274\034\276\305\041\245
-\207\236\170\056\066\333\011\161\243\162\064\370\154\343\006\011
-\362\136\126\245\323\335\230\372\324\346\006\364\360\266\040\143
-\113\352\051\275\252\202\146\036\373\201\252\247\067\255\023\030
-\346\222\303\201\301\063\273\210\036\241\347\342\264\275\061\154
-\016\121\075\157\373\226\126\200\342\066\027\321\334\344
-END
-CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
-
-# Trust for Certificate "TC TrustCenter Class 3 CA II"
-# Issuer: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE
-# Serial Number:4a:47:00:01:00:02:e5:a0:5d:d6:3f:00:51:bf
-# Subject: CN=TC TrustCenter Class 3 CA II,OU=TC TrustCenter Class 3 CA,O=TC TrustCenter GmbH,C=DE
-# Not Valid Before: Thu Jan 12 14:41:57 2006
-# Not Valid After : Wed Dec 31 22:59:59 2025
-# Fingerprint (MD5): 56:5F:AA:80:61:12:17:F6:67:21:E6:2B:6D:61:56:8E
-# Fingerprint (SHA1): 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5
-CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "TC TrustCenter Class 3 CA II"
-CKA_CERT_SHA1_HASH MULTILINE_OCTAL
-\200\045\357\364\156\160\310\324\162\044\145\204\376\100\073\212
-\215\152\333\365
-END
-CKA_CERT_MD5_HASH MULTILINE_OCTAL
-\126\137\252\200\141\022\027\366\147\041\346\053\155\141\126\216
-END
-CKA_ISSUER MULTILINE_OCTAL
-\060\166\061\013\060\011\006\003\125\004\006\023\002\104\105\061
-\034\060\032\006\003\125\004\012\023\023\124\103\040\124\162\165
-\163\164\103\145\156\164\145\162\040\107\155\142\110\061\042\060
-\040\006\003\125\004\013\023\031\124\103\040\124\162\165\163\164
-\103\145\156\164\145\162\040\103\154\141\163\163\040\063\040\103
-\101\061\045\060\043\006\003\125\004\003\023\034\124\103\040\124
-\162\165\163\164\103\145\156\164\145\162\040\103\154\141\163\163
-\040\063\040\103\101\040\111\111
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\016\112\107\000\001\000\002\345\240\135\326\077\000\121\277
-END
-CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
-
-#
# Certificate "Deutsche Telekom Root CA 2"
#
# Issuer: CN=Deutsche Telekom Root CA 2,OU=T-TeleSec Trust Center,O=Deutsche Telekom AG,C=DE
@@ -17883,155 +17726,6 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
#
-# Certificate "S-TRUST Universal Root CA"
-#
-# Issuer: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE
-# Serial Number:60:56:c5:4b:23:40:5b:64:d4:ed:25:da:d9:d6:1e:1e
-# Subject: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE
-# Not Valid Before: Tue Oct 22 00:00:00 2013
-# Not Valid After : Thu Oct 21 23:59:59 2038
-# Fingerprint (SHA-256): D8:0F:EF:91:0A:E3:F1:04:72:3B:04:5C:EC:2D:01:9F:44:1C:E6:21:3A:DF:15:67:91:E7:0C:17:90:11:0A:31
-# Fingerprint (SHA1): 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A
-CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "S-TRUST Universal Root CA"
-CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
-CKA_SUBJECT MULTILINE_OCTAL
-\060\201\205\061\013\060\011\006\003\125\004\006\023\002\104\105
-\061\051\060\047\006\003\125\004\012\023\040\104\145\165\164\163
-\143\150\145\162\040\123\160\141\162\153\141\163\163\145\156\040
-\126\145\162\154\141\147\040\107\155\142\110\061\047\060\045\006
-\003\125\004\013\023\036\123\055\124\122\125\123\124\040\103\145
-\162\164\151\146\151\143\141\164\151\157\156\040\123\145\162\166
-\151\143\145\163\061\042\060\040\006\003\125\004\003\023\031\123
-\055\124\122\125\123\124\040\125\156\151\166\145\162\163\141\154
-\040\122\157\157\164\040\103\101
-END
-CKA_ID UTF8 "0"
-CKA_ISSUER MULTILINE_OCTAL
-\060\201\205\061\013\060\011\006\003\125\004\006\023\002\104\105
-\061\051\060\047\006\003\125\004\012\023\040\104\145\165\164\163
-\143\150\145\162\040\123\160\141\162\153\141\163\163\145\156\040
-\126\145\162\154\141\147\040\107\155\142\110\061\047\060\045\006
-\003\125\004\013\023\036\123\055\124\122\125\123\124\040\103\145
-\162\164\151\146\151\143\141\164\151\157\156\040\123\145\162\166
-\151\143\145\163\061\042\060\040\006\003\125\004\003\023\031\123
-\055\124\122\125\123\124\040\125\156\151\166\145\162\163\141\154
-\040\122\157\157\164\040\103\101
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\020\140\126\305\113\043\100\133\144\324\355\045\332\331\326
-\036\036
-END
-CKA_VALUE MULTILINE_OCTAL
-\060\202\003\330\060\202\002\300\240\003\002\001\002\002\020\140
-\126\305\113\043\100\133\144\324\355\045\332\331\326\036\036\060
-\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\201
-\205\061\013\060\011\006\003\125\004\006\023\002\104\105\061\051
-\060\047\006\003\125\004\012\023\040\104\145\165\164\163\143\150
-\145\162\040\123\160\141\162\153\141\163\163\145\156\040\126\145
-\162\154\141\147\040\107\155\142\110\061\047\060\045\006\003\125
-\004\013\023\036\123\055\124\122\125\123\124\040\103\145\162\164
-\151\146\151\143\141\164\151\157\156\040\123\145\162\166\151\143
-\145\163\061\042\060\040\006\003\125\004\003\023\031\123\055\124
-\122\125\123\124\040\125\156\151\166\145\162\163\141\154\040\122
-\157\157\164\040\103\101\060\036\027\015\061\063\061\060\062\062
-\060\060\060\060\060\060\132\027\015\063\070\061\060\062\061\062
-\063\065\071\065\071\132\060\201\205\061\013\060\011\006\003\125
-\004\006\023\002\104\105\061\051\060\047\006\003\125\004\012\023
-\040\104\145\165\164\163\143\150\145\162\040\123\160\141\162\153
-\141\163\163\145\156\040\126\145\162\154\141\147\040\107\155\142
-\110\061\047\060\045\006\003\125\004\013\023\036\123\055\124\122
-\125\123\124\040\103\145\162\164\151\146\151\143\141\164\151\157
-\156\040\123\145\162\166\151\143\145\163\061\042\060\040\006\003
-\125\004\003\023\031\123\055\124\122\125\123\124\040\125\156\151
-\166\145\162\163\141\154\040\122\157\157\164\040\103\101\060\202
-\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005
-\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000\250
-\343\013\337\021\067\205\202\232\265\154\146\174\141\077\300\107
-\032\035\106\343\260\125\144\345\270\202\071\050\007\176\027\377
-\364\233\212\360\221\201\352\070\077\041\170\154\110\354\153\057
-\242\323\212\162\262\247\327\331\352\177\264\300\111\153\060\045
-\211\214\353\267\325\100\141\230\342\334\074\040\222\315\145\112
-\162\237\032\216\214\372\045\025\277\363\041\203\050\015\213\257
-\131\021\202\103\134\233\115\045\121\177\130\030\143\140\073\263
-\265\212\213\130\143\067\110\110\220\104\302\100\335\135\367\103
-\151\051\230\134\022\145\136\253\220\222\113\146\337\325\165\022
-\123\124\030\246\336\212\326\273\127\003\071\131\231\030\005\014
-\371\375\025\306\220\144\106\027\202\327\302\112\101\075\375\000
-\276\127\162\030\224\167\033\123\132\211\001\366\063\162\016\223
-\072\334\350\036\375\005\005\326\274\163\340\210\334\253\117\354
-\265\030\206\117\171\204\016\110\052\146\052\335\062\310\170\145
-\310\013\235\130\001\005\161\355\201\365\150\027\156\313\015\264
-\113\330\241\354\256\070\353\034\130\057\241\145\003\064\057\002
-\003\001\000\001\243\102\060\100\060\017\006\003\125\035\023\001
-\001\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017
-\001\001\377\004\004\003\002\001\006\060\035\006\003\125\035\016
-\004\026\004\024\232\175\327\353\353\177\124\230\105\051\264\040
-\253\155\013\226\043\031\244\302\060\015\006\011\052\206\110\206
-\367\015\001\001\013\005\000\003\202\001\001\000\116\226\022\333
-\176\167\136\222\047\236\041\027\030\202\166\330\077\274\245\011
-\004\146\210\211\255\333\125\263\063\152\306\145\304\217\115\363
-\062\066\334\171\004\226\251\167\062\321\227\365\030\153\214\272
-\355\316\021\320\104\307\222\361\264\104\216\355\210\122\110\236
-\325\375\131\370\243\036\121\373\001\122\345\137\345\172\335\252
-\044\117\042\213\335\166\106\366\245\240\017\065\330\312\017\230
-\271\060\135\040\157\302\201\036\275\275\300\376\025\323\070\052
-\011\223\230\047\033\223\173\320\053\064\136\150\245\025\117\321
-\122\303\240\312\240\203\105\035\365\365\267\131\163\135\131\001
-\217\252\302\107\057\024\161\325\051\343\020\265\107\223\045\314
-\043\051\332\267\162\330\221\324\354\033\110\212\042\344\301\052
-\367\072\150\223\237\105\031\156\103\267\314\376\270\221\232\141
-\032\066\151\143\144\222\050\363\157\141\222\205\023\237\311\007
-\054\213\127\334\353\236\171\325\302\336\010\325\124\262\127\116
-\052\062\215\241\342\072\321\020\040\042\071\175\064\105\157\161
-\073\303\035\374\377\262\117\250\342\366\060\036
-END
-CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
-
-# Trust for "S-TRUST Universal Root CA"
-# Issuer: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE
-# Serial Number:60:56:c5:4b:23:40:5b:64:d4:ed:25:da:d9:d6:1e:1e
-# Subject: CN=S-TRUST Universal Root CA,OU=S-TRUST Certification Services,O=Deutscher Sparkassen Verlag GmbH,C=DE
-# Not Valid Before: Tue Oct 22 00:00:00 2013
-# Not Valid After : Thu Oct 21 23:59:59 2038
-# Fingerprint (SHA-256): D8:0F:EF:91:0A:E3:F1:04:72:3B:04:5C:EC:2D:01:9F:44:1C:E6:21:3A:DF:15:67:91:E7:0C:17:90:11:0A:31
-# Fingerprint (SHA1): 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A
-CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "S-TRUST Universal Root CA"
-CKA_CERT_SHA1_HASH MULTILINE_OCTAL
-\033\075\021\024\352\172\017\225\130\124\101\225\277\153\045\202
-\253\100\316\232
-END
-CKA_CERT_MD5_HASH MULTILINE_OCTAL
-\130\366\101\001\256\365\133\121\231\116\134\041\350\117\324\146
-END
-CKA_ISSUER MULTILINE_OCTAL
-\060\201\205\061\013\060\011\006\003\125\004\006\023\002\104\105
-\061\051\060\047\006\003\125\004\012\023\040\104\145\165\164\163
-\143\150\145\162\040\123\160\141\162\153\141\163\163\145\156\040
-\126\145\162\154\141\147\040\107\155\142\110\061\047\060\045\006
-\003\125\004\013\023\036\123\055\124\122\125\123\124\040\103\145
-\162\164\151\146\151\143\141\164\151\157\156\040\123\145\162\166
-\151\143\145\163\061\042\060\040\006\003\125\004\003\023\031\123
-\055\124\122\125\123\124\040\125\156\151\166\145\162\163\141\154
-\040\122\157\157\164\040\103\101
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\020\140\126\305\113\043\100\133\144\324\355\045\332\331\326
-\036\036
-END
-CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
-
-#
# Certificate "Entrust Root Certification Authority - G2"
#
# Issuer: CN=Entrust Root Certification Authority - G2,OU="(c) 2009 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US
@@ -18509,167 +18203,6 @@ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
#
-# Certificate "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5"
-#
-# Issuer: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR
-# Serial Number:00:8e:17:fe:24:20:81
-# Subject: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR
-# Not Valid Before: Tue Apr 30 08:07:01 2013
-# Not Valid After : Fri Apr 28 08:07:01 2023
-# Fingerprint (SHA-256): 49:35:1B:90:34:44:C1:85:CC:DC:5C:69:3D:24:D8:55:5C:B2:08:D6:A8:14:13:07:69:9F:4A:F0:63:19:9D:78
-# Fingerprint (SHA1): C4:18:F6:4D:46:D1:DF:00:3D:27:30:13:72:43:A9:12:11:C6:75:FB
-CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5"
-CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
-CKA_SUBJECT MULTILINE_OCTAL
-\060\201\261\061\013\060\011\006\003\125\004\006\023\002\124\122
-\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141\162
-\141\061\115\060\113\006\003\125\004\012\014\104\124\303\234\122
-\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260\154
-\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151\305
-\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151\040
-\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236\056
-\061\102\060\100\006\003\125\004\003\014\071\124\303\234\122\113
-\124\122\125\123\124\040\105\154\145\153\164\162\157\156\151\153
-\040\123\145\162\164\151\146\151\153\141\040\110\151\172\155\145
-\164\040\123\141\304\237\154\141\171\304\261\143\304\261\163\304
-\261\040\110\065
-END
-CKA_ID UTF8 "0"
-CKA_ISSUER MULTILINE_OCTAL
-\060\201\261\061\013\060\011\006\003\125\004\006\023\002\124\122
-\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141\162
-\141\061\115\060\113\006\003\125\004\012\014\104\124\303\234\122
-\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260\154
-\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151\305
-\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151\040
-\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236\056
-\061\102\060\100\006\003\125\004\003\014\071\124\303\234\122\113
-\124\122\125\123\124\040\105\154\145\153\164\162\157\156\151\153
-\040\123\145\162\164\151\146\151\153\141\040\110\151\172\155\145
-\164\040\123\141\304\237\154\141\171\304\261\143\304\261\163\304
-\261\040\110\065
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\007\000\216\027\376\044\040\201
-END
-CKA_VALUE MULTILINE_OCTAL
-\060\202\004\047\060\202\003\017\240\003\002\001\002\002\007\000
-\216\027\376\044\040\201\060\015\006\011\052\206\110\206\367\015
-\001\001\013\005\000\060\201\261\061\013\060\011\006\003\125\004
-\006\023\002\124\122\061\017\060\015\006\003\125\004\007\014\006
-\101\156\153\141\162\141\061\115\060\113\006\003\125\004\012\014
-\104\124\303\234\122\113\124\122\125\123\124\040\102\151\154\147
-\151\040\304\260\154\145\164\151\305\237\151\155\040\166\145\040
-\102\151\154\151\305\237\151\155\040\107\303\274\166\145\156\154
-\151\304\237\151\040\110\151\172\155\145\164\154\145\162\151\040
-\101\056\305\236\056\061\102\060\100\006\003\125\004\003\014\071
-\124\303\234\122\113\124\122\125\123\124\040\105\154\145\153\164
-\162\157\156\151\153\040\123\145\162\164\151\146\151\153\141\040
-\110\151\172\155\145\164\040\123\141\304\237\154\141\171\304\261
-\143\304\261\163\304\261\040\110\065\060\036\027\015\061\063\060
-\064\063\060\060\070\060\067\060\061\132\027\015\062\063\060\064
-\062\070\060\070\060\067\060\061\132\060\201\261\061\013\060\011
-\006\003\125\004\006\023\002\124\122\061\017\060\015\006\003\125
-\004\007\014\006\101\156\153\141\162\141\061\115\060\113\006\003
-\125\004\012\014\104\124\303\234\122\113\124\122\125\123\124\040
-\102\151\154\147\151\040\304\260\154\145\164\151\305\237\151\155
-\040\166\145\040\102\151\154\151\305\237\151\155\040\107\303\274
-\166\145\156\154\151\304\237\151\040\110\151\172\155\145\164\154
-\145\162\151\040\101\056\305\236\056\061\102\060\100\006\003\125
-\004\003\014\071\124\303\234\122\113\124\122\125\123\124\040\105
-\154\145\153\164\162\157\156\151\153\040\123\145\162\164\151\146
-\151\153\141\040\110\151\172\155\145\164\040\123\141\304\237\154
-\141\171\304\261\143\304\261\163\304\261\040\110\065\060\202\001
-\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000
-\003\202\001\017\000\060\202\001\012\002\202\001\001\000\244\045
-\031\341\145\236\353\110\041\120\112\010\345\021\360\132\272\046
-\377\203\131\316\104\052\057\376\341\316\140\003\374\215\003\245
-\355\377\153\250\272\314\064\006\237\131\065\366\354\054\273\235
-\373\215\122\151\343\234\047\020\123\363\244\002\305\247\371\021
-\032\151\165\156\303\035\213\321\230\215\223\207\247\161\227\015
-\041\307\231\371\122\323\054\143\135\125\274\350\037\001\110\271
-\140\376\102\112\366\310\200\256\315\146\172\236\105\212\150\167
-\342\110\150\237\242\332\361\341\301\020\237\353\074\051\201\247
-\341\062\010\324\240\005\261\214\373\215\226\000\016\076\045\337
-\123\206\042\073\374\364\275\363\011\176\167\354\206\353\017\063
-\345\103\117\364\124\165\155\051\231\056\146\132\103\337\313\134
-\312\310\345\070\361\176\073\065\235\017\364\305\132\241\314\363
-\040\200\044\323\127\354\025\272\165\045\233\350\144\113\263\064
-\204\357\004\270\366\311\154\252\002\076\266\125\342\062\067\137
-\374\146\227\137\315\326\236\307\040\277\115\306\254\077\165\137
-\034\355\062\234\174\151\000\151\221\343\043\030\123\351\002\003
-\001\000\001\243\102\060\100\060\035\006\003\125\035\016\004\026
-\004\024\126\231\007\036\323\254\014\151\144\264\014\120\107\336
-\103\054\276\040\300\373\060\016\006\003\125\035\017\001\001\377
-\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377
-\004\005\060\003\001\001\377\060\015\006\011\052\206\110\206\367
-\015\001\001\013\005\000\003\202\001\001\000\236\105\166\173\027
-\110\062\362\070\213\051\275\356\226\112\116\201\030\261\121\107
-\040\315\320\144\261\016\311\331\001\331\011\316\310\231\334\150
-\045\023\324\134\362\243\350\004\376\162\011\307\013\252\035\045
-\125\176\226\232\127\267\272\305\021\172\031\346\247\176\075\205
-\016\365\371\056\051\057\347\371\154\130\026\127\120\045\366\076
-\056\076\252\355\167\161\252\252\231\226\106\012\256\216\354\052
-\121\026\260\136\315\352\147\004\034\130\060\365\140\212\275\246
-\275\115\345\226\264\374\102\211\001\153\366\160\310\120\071\014
-\055\325\146\331\310\322\263\062\267\033\031\155\313\063\371\337
-\245\346\025\204\067\360\302\362\145\226\222\220\167\360\255\364
-\220\351\021\170\327\223\211\300\075\013\272\051\364\350\231\235
-\162\216\355\235\057\356\222\175\241\361\377\135\272\063\140\205
-\142\376\007\002\241\204\126\106\276\226\012\232\023\327\041\114
-\267\174\007\237\116\116\077\221\164\373\047\235\021\314\335\346
-\261\312\161\115\023\027\071\046\305\051\041\053\223\051\152\226
-\372\253\101\341\113\266\065\013\300\233\025
-END
-CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE
-
-# Trust for "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5"
-# Issuer: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR
-# Serial Number:00:8e:17:fe:24:20:81
-# Subject: CN=T..RKTRUST Elektronik Sertifika Hizmet Sa..lay..c..s.. H5,O=T..RKTRUST Bilgi ..leti..im ve Bili..im G..venli..i Hizmetleri A....,L=Ankara,C=TR
-# Not Valid Before: Tue Apr 30 08:07:01 2013
-# Not Valid After : Fri Apr 28 08:07:01 2023
-# Fingerprint (SHA-256): 49:35:1B:90:34:44:C1:85:CC:DC:5C:69:3D:24:D8:55:5C:B2:08:D6:A8:14:13:07:69:9F:4A:F0:63:19:9D:78
-# Fingerprint (SHA1): C4:18:F6:4D:46:D1:DF:00:3D:27:30:13:72:43:A9:12:11:C6:75:FB
-CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
-CKA_TOKEN CK_BBOOL CK_TRUE
-CKA_PRIVATE CK_BBOOL CK_FALSE
-CKA_MODIFIABLE CK_BBOOL CK_FALSE
-CKA_LABEL UTF8 "TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5"
-CKA_CERT_SHA1_HASH MULTILINE_OCTAL
-\304\030\366\115\106\321\337\000\075\047\060\023\162\103\251\022
-\021\306\165\373
-END
-CKA_CERT_MD5_HASH MULTILINE_OCTAL
-\332\160\216\360\042\337\223\046\366\137\237\323\025\006\122\116
-END
-CKA_ISSUER MULTILINE_OCTAL
-\060\201\261\061\013\060\011\006\003\125\004\006\023\002\124\122
-\061\017\060\015\006\003\125\004\007\014\006\101\156\153\141\162
-\141\061\115\060\113\006\003\125\004\012\014\104\124\303\234\122
-\113\124\122\125\123\124\040\102\151\154\147\151\040\304\260\154
-\145\164\151\305\237\151\155\040\166\145\040\102\151\154\151\305
-\237\151\155\040\107\303\274\166\145\156\154\151\304\237\151\040
-\110\151\172\155\145\164\154\145\162\151\040\101\056\305\236\056
-\061\102\060\100\006\003\125\004\003\014\071\124\303\234\122\113
-\124\122\125\123\124\040\105\154\145\153\164\162\157\156\151\153
-\040\123\145\162\164\151\146\151\153\141\040\110\151\172\155\145
-\164\040\123\141\304\237\154\141\171\304\261\143\304\261\163\304
-\261\040\110\065
-END
-CKA_SERIAL_NUMBER MULTILINE_OCTAL
-\002\007\000\216\027\376\044\040\201
-END
-CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
-CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
-CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
-
-#
# Certificate "Certinomis - Root CA"
#
# Issuer: CN=Certinomis - Root CA,OU=0002 433998903,O=Certinomis,C=FR
diff --git a/security/nss/lib/ckfw/builtins/nssckbi.h b/security/nss/lib/ckfw/builtins/nssckbi.h
index 0189369b1b..d40c8080eb 100644
--- a/security/nss/lib/ckfw/builtins/nssckbi.h
+++ b/security/nss/lib/ckfw/builtins/nssckbi.h
@@ -32,7 +32,7 @@
* - whenever possible, if older branches require a modification to the
* list, these changes should be made on the main line of development (trunk),
* and the older branches should update to the most recent list.
- *
+ *
* - ODD minor version numbers are reserved to indicate a snapshot that has
* deviated from the main line of development, e.g. if it was necessary
* to modify the list on a stable branch.
@@ -46,8 +46,8 @@
* It's recommend to switch back to 0 after having reached version 98/99.
*/
#define NSS_BUILTINS_LIBRARY_VERSION_MAJOR 2
-#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 22
-#define NSS_BUILTINS_LIBRARY_VERSION "2.22"
+#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 24
+#define NSS_BUILTINS_LIBRARY_VERSION "2.24"
/* These version numbers detail the semantic changes to the ckfw engine. */
#define NSS_BUILTINS_HARDWARE_VERSION_MAJOR 1
diff --git a/security/nss/lib/ckfw/nssmkey/Makefile b/security/nss/lib/ckfw/nssmkey/Makefile
deleted file mode 100644
index e630e84b0f..0000000000
--- a/security/nss/lib/ckfw/nssmkey/Makefile
+++ /dev/null
@@ -1,72 +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 manifest.mn
-include $(CORE_DEPTH)/coreconf/config.mk
-include config.mk
-
-EXTRA_LIBS = \
- $(DIST)/lib/$(LIB_PREFIX)nssckfw.$(LIB_SUFFIX) \
- $(DIST)/lib/$(LIB_PREFIX)secutil.$(LIB_SUFFIX) \
- $(DIST)/lib/$(LIB_PREFIX)nssb.$(LIB_SUFFIX) \
- $(NULL)
-
-# can't do this in manifest.mn because OS_TARGET isn't defined there.
-ifeq (,$(filter-out WIN%,$(OS_TARGET)))
-
-ifdef NS_USE_GCC
-EXTRA_LIBS += \
- -L$(NSPR_LIB_DIR) \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
- $(NULL)
-else
-EXTRA_SHARED_LIBS += \
- $(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plc4.lib \
- $(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plds4.lib \
- $(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)nspr4.lib \
- $(NULL)
-endif # NS_USE_GCC
-else
-
-EXTRA_LIBS += \
- -L$(NSPR_LIB_DIR) \
- -lplc4 \
- -lplds4 \
- -lnspr4 \
- -framework Security \
- -framework CoreServices \
- $(NULL)
-endif
-
-
-include $(CORE_DEPTH)/coreconf/rules.mk
-
-# Generate certdata.c.
-generate:
- perl certdata.perl < certdata.txt
-
-# This'll need some help from a build person.
-
-
-ifeq ($(OS_TARGET)$(OS_RELEASE), AIX4.1)
-DSO_LDOPTS = -bM:SRE -bh:4 -bnoentry
-EXTRA_DSO_LDOPTS = -lc
-MKSHLIB = xlC $(DSO_LDOPTS)
-
-$(SHARED_LIBRARY): $(OBJS)
- @$(MAKE_OBJDIR)
- rm -f $@
- $(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(EXTRA_DSO_LDOPTS)
- chmod +x $@
-
-endif
-
-ifeq ($(OS_TARGET)$(OS_RELEASE), AIX4.2)
-LD += -G
-endif
-
-
diff --git a/security/nss/lib/ckfw/nssmkey/README b/security/nss/lib/ckfw/nssmkey/README
deleted file mode 100644
index c060d9c3c0..0000000000
--- a/security/nss/lib/ckfw/nssmkey/README
+++ /dev/null
@@ -1,21 +0,0 @@
-This Cryptoki module provides acces to certs and keys stored in
-Macintosh key Ring.
-
-- It does not yet export PKCS #12 keys. To get this to work should be
- implemented using exporting the key object in PKCS #8 wrapped format.
- PSM work needs to happen before this can be completed.
-- It does not import or export CA Root trust from the mac keychain.
-- It does not handle S/MIME objects (pkcs #7 in mac keychain terms?).
-- The AuthRoots don't show up on the default list.
-- Only RSA keys are supported currently.
-
-There are a number of things that have not been tested that other PKCS #11
-apps may need:
-- reading Modulus and Public Exponents from private keys and public keys.
-- storing public keys.
-- setting attributes other than CKA_ID and CKA_LABEL.
-
-Other TODOs:
-- Check for and plug memory leaks.
-- Need to map mac errors into something more intellegible than
- CKR_GENERAL_ERROR.
diff --git a/security/nss/lib/ckfw/nssmkey/ckmk.h b/security/nss/lib/ckfw/nssmkey/ckmk.h
deleted file mode 100644
index 4f3ab82d72..0000000000
--- a/security/nss/lib/ckfw/nssmkey/ckmk.h
+++ /dev/null
@@ -1,182 +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 CKMK_H
-#define CKMK_H 1
-
-#include <Security/SecKeychainSearch.h>
-#include <Security/SecKeychainItem.h>
-#include <Security/SecKeychain.h>
-#include <Security/cssmtype.h>
-#include <Security/cssmapi.h>
-#include <Security/SecKey.h>
-#include <Security/SecCertificate.h>
-
-#define NTO
-
-#include "nssckmdt.h"
-#include "nssckfw.h"
-/*
- * I'm including this for access to the arena functions.
- * Looks like we should publish that API.
- */
-#ifndef BASE_H
-#include "base.h"
-#endif /* BASE_H */
-/*
- * This is where the Netscape extensions live, at least for now.
- */
-#ifndef CKT_H
-#include "ckt.h"
-#endif /* CKT_H */
-
-/*
- * statically defined raw objects. Allows us to data description objects
- * to this PKCS #11 module.
- */
-struct ckmkRawObjectStr {
- CK_ULONG n;
- const CK_ATTRIBUTE_TYPE *types;
- const NSSItem *items;
-};
-typedef struct ckmkRawObjectStr ckmkRawObject;
-
-/*
- * Key/Cert Items
- */
-struct ckmkItemObjectStr {
- SecKeychainItemRef itemRef;
- SecItemClass itemClass;
- PRBool hasID;
- NSSItem modify;
- NSSItem private;
- NSSItem encrypt;
- NSSItem decrypt;
- NSSItem derive;
- NSSItem sign;
- NSSItem signRecover;
- NSSItem verify;
- NSSItem verifyRecover;
- NSSItem wrap;
- NSSItem unwrap;
- NSSItem label;
- NSSItem subject;
- NSSItem issuer;
- NSSItem serial;
- NSSItem derCert;
- NSSItem id;
- NSSItem modulus;
- NSSItem exponent;
- NSSItem privateExponent;
- NSSItem prime1;
- NSSItem prime2;
- NSSItem exponent1;
- NSSItem exponent2;
- NSSItem coefficient;
-};
-typedef struct ckmkItemObjectStr ckmkItemObject;
-
-typedef enum {
- ckmkRaw,
- ckmkItem,
-} ckmkObjectType;
-
-/*
- * all the various types of objects are abstracted away in cobject and
- * cfind as ckmkInternalObjects.
- */
-struct ckmkInternalObjectStr {
- ckmkObjectType type;
- union {
- ckmkRawObject raw;
- ckmkItemObject item;
- } u;
- CK_OBJECT_CLASS objClass;
- NSSItem hashKey;
- unsigned char hashKeyData[128];
- NSSCKMDObject mdObject;
-};
-typedef struct ckmkInternalObjectStr ckmkInternalObject;
-
-/* our raw object data array */
-NSS_EXTERN_DATA ckmkInternalObject nss_ckmk_data[];
-NSS_EXTERN_DATA const PRUint32 nss_ckmk_nObjects;
-
-NSS_EXTERN_DATA const CK_VERSION nss_ckmk_CryptokiVersion;
-NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_ManufacturerID;
-NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_LibraryDescription;
-NSS_EXTERN_DATA const CK_VERSION nss_ckmk_LibraryVersion;
-NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_SlotDescription;
-NSS_EXTERN_DATA const CK_VERSION nss_ckmk_HardwareVersion;
-NSS_EXTERN_DATA const CK_VERSION nss_ckmk_FirmwareVersion;
-NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_TokenLabel;
-NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_TokenModel;
-NSS_EXTERN_DATA const NSSUTF8 *nss_ckmk_TokenSerialNumber;
-
-NSS_EXTERN_DATA const NSSCKMDInstance nss_ckmk_mdInstance;
-NSS_EXTERN_DATA const NSSCKMDSlot nss_ckmk_mdSlot;
-NSS_EXTERN_DATA const NSSCKMDToken nss_ckmk_mdToken;
-NSS_EXTERN_DATA const NSSCKMDMechanism nss_ckmk_mdMechanismRSA;
-
-NSS_EXTERN NSSCKMDSession *
-nss_ckmk_CreateSession(
- NSSCKFWSession *fwSession,
- CK_RV *pError);
-
-NSS_EXTERN NSSCKMDFindObjects *
-nss_ckmk_FindObjectsInit(
- NSSCKFWSession *fwSession,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError);
-
-/*
- * Object Utilities
- */
-NSS_EXTERN NSSCKMDObject *
-nss_ckmk_CreateMDObject(
- NSSArena *arena,
- ckmkInternalObject *io,
- CK_RV *pError);
-
-NSS_EXTERN NSSCKMDObject *
-nss_ckmk_CreateObject(
- NSSCKFWSession *fwSession,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError);
-
-NSS_EXTERN const NSSItem *
-nss_ckmk_FetchAttribute(
- ckmkInternalObject *io,
- CK_ATTRIBUTE_TYPE type,
- CK_RV *pError);
-
-NSS_EXTERN void
-nss_ckmk_DestroyInternalObject(
- ckmkInternalObject *io);
-
-unsigned char *
-nss_ckmk_DERUnwrap(
- unsigned char *src,
- int size,
- int *outSize,
- unsigned char **next);
-
-CK_ULONG
-nss_ckmk_GetULongAttribute(
- CK_ATTRIBUTE_TYPE type,
- CK_ATTRIBUTE *template,
- CK_ULONG templateSize,
- CK_RV *pError);
-
-#define NSS_CKMK_ARRAY_SIZE(x) ((sizeof(x)) / (sizeof((x)[0])))
-
-#ifdef DEBUG
-#define CKMK_MACERR(str, err) cssmPerror(str, err)
-#else
-#define CKMK_MACERR(str, err)
-#endif
-
-#endif
diff --git a/security/nss/lib/ckfw/nssmkey/ckmkver.c b/security/nss/lib/ckfw/nssmkey/ckmkver.c
deleted file mode 100644
index 2b99f1e228..0000000000
--- a/security/nss/lib/ckfw/nssmkey/ckmkver.c
+++ /dev/null
@@ -1,17 +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/. */
-/* Library identity and versioning */
-
-#include "nssmkey.h"
-
-#if defined(DEBUG)
-#define _DEBUG_STRING " (debug)"
-#else
-#define _DEBUG_STRING ""
-#endif
-
-/*
- * Version information
- */
-const char __nss_ckmk_version[] = "Version: NSS Access to the MAC OS X Key Ring " NSS_CKMK_LIBRARY_VERSION _DEBUG_STRING;
diff --git a/security/nss/lib/ckfw/nssmkey/config.mk b/security/nss/lib/ckfw/nssmkey/config.mk
deleted file mode 100644
index 7096910679..0000000000
--- a/security/nss/lib/ckfw/nssmkey/config.mk
+++ /dev/null
@@ -1,24 +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/.
-
-ifdef BUILD_IDG
-DEFINES += -DNSSDEBUG
-endif
-
-ifdef NS_USE_CKFW_TRACE
-DEFINES += -DTRACE
-endif
-
-#
-# Override TARGETS variable so that only static libraries
-# are specifed as dependencies within rules.mk.
-#
-
-TARGETS = $(LIBRARY)
-SHARED_LIBRARY =
-IMPORT_LIBRARY =
-PROGRAM =
-
-
diff --git a/security/nss/lib/ckfw/nssmkey/manchor.c b/security/nss/lib/ckfw/nssmkey/manchor.c
deleted file mode 100644
index 3b8bc2dbbe..0000000000
--- a/security/nss/lib/ckfw/nssmkey/manchor.c
+++ /dev/null
@@ -1,17 +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/. */
-
-/*
- * nssmkey/manchor.c
- *
- * This file "anchors" the actual cryptoki entry points in this module's
- * shared library, which is required for dynamic loading. See the
- * comments in nssck.api for more information.
- */
-
-#include "ckmk.h"
-
-#define MODULE_NAME ckmk
-#define INSTANCE_NAME (NSSCKMDInstance *)&nss_ckmk_mdInstance
-#include "nssck.api"
diff --git a/security/nss/lib/ckfw/nssmkey/manifest.mn b/security/nss/lib/ckfw/nssmkey/manifest.mn
deleted file mode 100644
index 036d9bc3f4..0000000000
--- a/security/nss/lib/ckfw/nssmkey/manifest.mn
+++ /dev/null
@@ -1,33 +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/.
-
-CORE_DEPTH = ../../../..
-
-MODULE = nss
-MAPFILE = $(OBJDIR)/nssmkey.def
-
-EXPORTS = \
- nssmkey.h \
- $(NULL)
-
-CSRCS = \
- manchor.c \
- mconstants.c \
- mfind.c \
- minst.c \
- mobject.c \
- mrsa.c \
- msession.c \
- mslot.c \
- mtoken.c \
- ckmkver.c \
- staticobj.c \
- $(NULL)
-
-REQUIRES = nspr
-
-LIBRARY_NAME = nssmkey
-
-#EXTRA_SHARED_LIBS = -L$(DIST)/lib -lnssckfw -lnssb -lplc4 -lplds4
diff --git a/security/nss/lib/ckfw/nssmkey/mconstants.c b/security/nss/lib/ckfw/nssmkey/mconstants.c
deleted file mode 100644
index c26298ada3..0000000000
--- a/security/nss/lib/ckfw/nssmkey/mconstants.c
+++ /dev/null
@@ -1,61 +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/. */
-
-/*
- * nssmkey/constants.c
- *
- * Identification and other constants, all collected here in one place.
- */
-
-#ifndef NSSBASET_H
-#include "nssbaset.h"
-#endif /* NSSBASET_H */
-
-#ifndef NSSCKT_H
-#include "nssckt.h"
-#endif /* NSSCKT_H */
-
-#include "nssmkey.h"
-
-NSS_IMPLEMENT_DATA const CK_VERSION
- nss_ckmk_CryptokiVersion = {
- NSS_CKMK_CRYPTOKI_VERSION_MAJOR,
- NSS_CKMK_CRYPTOKI_VERSION_MINOR
- };
-
-NSS_IMPLEMENT_DATA const NSSUTF8 *
- nss_ckmk_ManufacturerID = (NSSUTF8 *)"Mozilla Foundation";
-
-NSS_IMPLEMENT_DATA const NSSUTF8 *
- nss_ckmk_LibraryDescription = (NSSUTF8 *)"NSS Access to Mac OS X Key Ring";
-
-NSS_IMPLEMENT_DATA const CK_VERSION
- nss_ckmk_LibraryVersion = {
- NSS_CKMK_LIBRARY_VERSION_MAJOR,
- NSS_CKMK_LIBRARY_VERSION_MINOR
- };
-
-NSS_IMPLEMENT_DATA const NSSUTF8 *
- nss_ckmk_SlotDescription = (NSSUTF8 *)"Mac OS X Key Ring";
-
-NSS_IMPLEMENT_DATA const CK_VERSION
- nss_ckmk_HardwareVersion = {
- NSS_CKMK_HARDWARE_VERSION_MAJOR,
- NSS_CKMK_HARDWARE_VERSION_MINOR
- };
-
-NSS_IMPLEMENT_DATA const CK_VERSION
- nss_ckmk_FirmwareVersion = {
- NSS_CKMK_FIRMWARE_VERSION_MAJOR,
- NSS_CKMK_FIRMWARE_VERSION_MINOR
- };
-
-NSS_IMPLEMENT_DATA const NSSUTF8 *
- nss_ckmk_TokenLabel = (NSSUTF8 *)"Mac OS X Key Ring";
-
-NSS_IMPLEMENT_DATA const NSSUTF8 *
- nss_ckmk_TokenModel = (NSSUTF8 *)"1";
-
-NSS_IMPLEMENT_DATA const NSSUTF8 *
- nss_ckmk_TokenSerialNumber = (NSSUTF8 *)"1";
diff --git a/security/nss/lib/ckfw/nssmkey/mfind.c b/security/nss/lib/ckfw/nssmkey/mfind.c
deleted file mode 100644
index d193a8de70..0000000000
--- a/security/nss/lib/ckfw/nssmkey/mfind.c
+++ /dev/null
@@ -1,352 +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 CKMK_H
-#include "ckmk.h"
-#endif /* CKMK_H */
-
-/*
- * nssmkey/mfind.c
- *
- * This file implements the NSSCKMDFindObjects object for the
- * "nssmkey" cryptoki module.
- */
-
-struct ckmkFOStr {
- NSSArena *arena;
- CK_ULONG n;
- CK_ULONG i;
- ckmkInternalObject **objs;
-};
-
-static void
-ckmk_mdFindObjects_Final(
- NSSCKMDFindObjects *mdFindObjects,
- NSSCKFWFindObjects *fwFindObjects,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- struct ckmkFOStr *fo = (struct ckmkFOStr *)mdFindObjects->etc;
- NSSArena *arena = fo->arena;
- PRUint32 i;
-
- /* walk down an free the unused 'objs' */
- for (i = fo->i; i < fo->n; i++) {
- nss_ckmk_DestroyInternalObject(fo->objs[i]);
- }
-
- nss_ZFreeIf(fo->objs);
- nss_ZFreeIf(fo);
- nss_ZFreeIf(mdFindObjects);
- if ((NSSArena *)NULL != arena) {
- NSSArena_Destroy(arena);
- }
-
- return;
-}
-
-static NSSCKMDObject *
-ckmk_mdFindObjects_Next(
- NSSCKMDFindObjects *mdFindObjects,
- NSSCKFWFindObjects *fwFindObjects,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- NSSArena *arena,
- CK_RV *pError)
-{
- struct ckmkFOStr *fo = (struct ckmkFOStr *)mdFindObjects->etc;
- ckmkInternalObject *io;
-
- if (fo->i == fo->n) {
- *pError = CKR_OK;
- return (NSSCKMDObject *)NULL;
- }
-
- io = fo->objs[fo->i];
- fo->i++;
-
- return nss_ckmk_CreateMDObject(arena, io, pError);
-}
-
-static CK_BBOOL
-ckmk_attrmatch(
- CK_ATTRIBUTE_PTR a,
- ckmkInternalObject *o)
-{
- PRBool prb;
- const NSSItem *b;
- CK_RV error;
-
- b = nss_ckmk_FetchAttribute(o, a->type, &error);
- if (b == NULL) {
- return CK_FALSE;
- }
-
- if (a->ulValueLen != b->size) {
- /* match a decoded serial number */
- if ((a->type == CKA_SERIAL_NUMBER) && (a->ulValueLen < b->size)) {
- int len;
- unsigned char *data;
-
- data = nss_ckmk_DERUnwrap(b->data, b->size, &len, NULL);
- if ((len == a->ulValueLen) &&
- nsslibc_memequal(a->pValue, data, len, (PRStatus *)NULL)) {
- return CK_TRUE;
- }
- }
- return CK_FALSE;
- }
-
- prb = nsslibc_memequal(a->pValue, b->data, b->size, (PRStatus *)NULL);
-
- if (PR_TRUE == prb) {
- return CK_TRUE;
- } else {
- return CK_FALSE;
- }
-}
-
-static CK_BBOOL
-ckmk_match(
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- ckmkInternalObject *o)
-{
- CK_ULONG i;
-
- for (i = 0; i < ulAttributeCount; i++) {
- if (CK_FALSE == ckmk_attrmatch(&pTemplate[i], o)) {
- return CK_FALSE;
- }
- }
-
- /* Every attribute passed */
- return CK_TRUE;
-}
-
-#define CKMK_ITEM_CHUNK 20
-
-#define PUT_OBJECT(obj, err, size, count, list) \
- { \
- if (count >= size) { \
- (list) = (list) ? nss_ZREALLOCARRAY(list, ckmkInternalObject *, \
- ((size) + \
- CKMK_ITEM_CHUNK)) \
- : nss_ZNEWARRAY(NULL, ckmkInternalObject *, \
- ((size) + \
- CKMK_ITEM_CHUNK)); \
- if ((ckmkInternalObject **)NULL == list) { \
- err = CKR_HOST_MEMORY; \
- goto loser; \
- } \
- (size) += CKMK_ITEM_CHUNK; \
- } \
- (list)[count] = (obj); \
- count++; \
- }
-
-/* find all the certs that represent the appropriate object (cert, priv key, or
- * pub key) in the cert store.
- */
-static PRUint32
-collect_class(
- CK_OBJECT_CLASS objClass,
- SecItemClass itemClass,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- ckmkInternalObject ***listp,
- PRUint32 *sizep,
- PRUint32 count,
- CK_RV *pError)
-{
- ckmkInternalObject *next = NULL;
- SecKeychainSearchRef searchRef = 0;
- SecKeychainItemRef itemRef = 0;
- OSStatus error;
-
- /* future, build the attribute list based on the template
- * so we can refine the search */
- error = SecKeychainSearchCreateFromAttributes(
- NULL, itemClass, NULL, &searchRef);
-
- while (noErr == SecKeychainSearchCopyNext(searchRef, &itemRef)) {
- /* if we don't have an internal object structure, get one */
- if ((ckmkInternalObject *)NULL == next) {
- next = nss_ZNEW(NULL, ckmkInternalObject);
- if ((ckmkInternalObject *)NULL == next) {
- *pError = CKR_HOST_MEMORY;
- goto loser;
- }
- }
- /* fill in the relevant object data */
- next->type = ckmkItem;
- next->objClass = objClass;
- next->u.item.itemRef = itemRef;
- next->u.item.itemClass = itemClass;
-
- /* see if this is one of the objects we are looking for */
- if (CK_TRUE == ckmk_match(pTemplate, ulAttributeCount, next)) {
- /* yes, put it on the list */
- PUT_OBJECT(next, *pError, *sizep, count, *listp);
- next = NULL; /* this one is on the list, need to allocate a new one now */
- } else {
- /* no , release the current item and clear out the structure for reuse */
- CFRelease(itemRef);
- /* don't cache the values we just loaded */
- nsslibc_memset(next, 0, sizeof(*next));
- }
- }
-loser:
- if (searchRef) {
- CFRelease(searchRef);
- }
- nss_ZFreeIf(next);
- return count;
-}
-
-static PRUint32
-collect_objects(
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- ckmkInternalObject ***listp,
- CK_RV *pError)
-{
- PRUint32 i;
- PRUint32 count = 0;
- PRUint32 size = 0;
- CK_OBJECT_CLASS objClass;
-
- /*
- * first handle the static build in objects (if any)
- */
- for (i = 0; i < nss_ckmk_nObjects; i++) {
- ckmkInternalObject *o = (ckmkInternalObject *)&nss_ckmk_data[i];
-
- if (CK_TRUE == ckmk_match(pTemplate, ulAttributeCount, o)) {
- PUT_OBJECT(o, *pError, size, count, *listp);
- }
- }
-
- /*
- * now handle the various object types
- */
- objClass = nss_ckmk_GetULongAttribute(CKA_CLASS,
- pTemplate, ulAttributeCount, pError);
- if (CKR_OK != *pError) {
- objClass = CK_INVALID_HANDLE;
- }
- *pError = CKR_OK;
- switch (objClass) {
- case CKO_CERTIFICATE:
- count = collect_class(objClass, kSecCertificateItemClass,
- pTemplate, ulAttributeCount, listp,
- &size, count, pError);
- break;
- case CKO_PUBLIC_KEY:
- count = collect_class(objClass, CSSM_DL_DB_RECORD_PUBLIC_KEY,
- pTemplate, ulAttributeCount, listp,
- &size, count, pError);
- break;
- case CKO_PRIVATE_KEY:
- count = collect_class(objClass, CSSM_DL_DB_RECORD_PRIVATE_KEY,
- pTemplate, ulAttributeCount, listp,
- &size, count, pError);
- break;
- /* all of them */
- case CK_INVALID_HANDLE:
- count = collect_class(CKO_CERTIFICATE, kSecCertificateItemClass,
- pTemplate, ulAttributeCount, listp,
- &size, count, pError);
- count = collect_class(CKO_PUBLIC_KEY, CSSM_DL_DB_RECORD_PUBLIC_KEY,
- pTemplate, ulAttributeCount, listp,
- &size, count, pError);
- count = collect_class(CKO_PUBLIC_KEY, CSSM_DL_DB_RECORD_PRIVATE_KEY,
- pTemplate, ulAttributeCount, listp,
- &size, count, pError);
- break;
- default:
- break;
- }
- if (CKR_OK != *pError) {
- goto loser;
- }
-
- return count;
-loser:
- nss_ZFreeIf(*listp);
- return 0;
-}
-
-NSS_IMPLEMENT NSSCKMDFindObjects *
-nss_ckmk_FindObjectsInit(
- NSSCKFWSession *fwSession,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError)
-{
- /* This could be made more efficient. I'm rather rushed. */
- NSSArena *arena;
- NSSCKMDFindObjects *rv = (NSSCKMDFindObjects *)NULL;
- struct ckmkFOStr *fo = (struct ckmkFOStr *)NULL;
- ckmkInternalObject **temp = (ckmkInternalObject **)NULL;
-
- arena = NSSArena_Create();
- if ((NSSArena *)NULL == arena) {
- goto loser;
- }
-
- rv = nss_ZNEW(arena, NSSCKMDFindObjects);
- if ((NSSCKMDFindObjects *)NULL == rv) {
- *pError = CKR_HOST_MEMORY;
- goto loser;
- }
-
- fo = nss_ZNEW(arena, struct ckmkFOStr);
- if ((struct ckmkFOStr *)NULL == fo) {
- *pError = CKR_HOST_MEMORY;
- goto loser;
- }
-
- fo->arena = arena;
- /* fo->n and fo->i are already zero */
-
- rv->etc = (void *)fo;
- rv->Final = ckmk_mdFindObjects_Final;
- rv->Next = ckmk_mdFindObjects_Next;
- rv->null = (void *)NULL;
-
- fo->n = collect_objects(pTemplate, ulAttributeCount, &temp, pError);
- if (*pError != CKR_OK) {
- goto loser;
- }
-
- fo->objs = nss_ZNEWARRAY(arena, ckmkInternalObject *, fo->n);
- if ((ckmkInternalObject **)NULL == fo->objs) {
- *pError = CKR_HOST_MEMORY;
- goto loser;
- }
-
- (void)nsslibc_memcpy(fo->objs, temp, sizeof(ckmkInternalObject *) * fo->n);
- nss_ZFreeIf(temp);
- temp = (ckmkInternalObject **)NULL;
-
- return rv;
-
-loser:
- nss_ZFreeIf(temp);
- nss_ZFreeIf(fo);
- nss_ZFreeIf(rv);
- if ((NSSArena *)NULL != arena) {
- NSSArena_Destroy(arena);
- }
- return (NSSCKMDFindObjects *)NULL;
-}
diff --git a/security/nss/lib/ckfw/nssmkey/minst.c b/security/nss/lib/ckfw/nssmkey/minst.c
deleted file mode 100644
index fcb96c6527..0000000000
--- a/security/nss/lib/ckfw/nssmkey/minst.c
+++ /dev/null
@@ -1,97 +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 "ckmk.h"
-
-/*
- * nssmkey/minstance.c
- *
- * This file implements the NSSCKMDInstance object for the
- * "nssmkey" cryptoki module.
- */
-
-/*
- * NSSCKMDInstance methods
- */
-
-static CK_ULONG
-ckmk_mdInstance_GetNSlots(
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (CK_ULONG)1;
-}
-
-static CK_VERSION
-ckmk_mdInstance_GetCryptokiVersion(
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return nss_ckmk_CryptokiVersion;
-}
-
-static NSSUTF8 *
-ckmk_mdInstance_GetManufacturerID(
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_ManufacturerID;
-}
-
-static NSSUTF8 *
-ckmk_mdInstance_GetLibraryDescription(
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_LibraryDescription;
-}
-
-static CK_VERSION
-ckmk_mdInstance_GetLibraryVersion(
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return nss_ckmk_LibraryVersion;
-}
-
-static CK_RV
-ckmk_mdInstance_GetSlots(
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- NSSCKMDSlot *slots[])
-{
- slots[0] = (NSSCKMDSlot *)&nss_ckmk_mdSlot;
- return CKR_OK;
-}
-
-static CK_BBOOL
-ckmk_mdInstance_ModuleHandlesSessionObjects(
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- /* we don't want to allow any session object creation, at least
- * until we can investigate whether or not we can use those objects
- */
- return CK_TRUE;
-}
-
-NSS_IMPLEMENT_DATA const NSSCKMDInstance
- nss_ckmk_mdInstance = {
- (void *)NULL, /* etc */
- NULL, /* Initialize */
- NULL, /* Finalize */
- ckmk_mdInstance_GetNSlots,
- ckmk_mdInstance_GetCryptokiVersion,
- ckmk_mdInstance_GetManufacturerID,
- ckmk_mdInstance_GetLibraryDescription,
- ckmk_mdInstance_GetLibraryVersion,
- ckmk_mdInstance_ModuleHandlesSessionObjects,
- /*NULL, /* HandleSessionObjects */
- ckmk_mdInstance_GetSlots,
- NULL, /* WaitForSlotEvent */
- (void *)NULL /* null terminator */
- };
diff --git a/security/nss/lib/ckfw/nssmkey/mobject.c b/security/nss/lib/ckfw/nssmkey/mobject.c
deleted file mode 100644
index b19a8fdbde..0000000000
--- a/security/nss/lib/ckfw/nssmkey/mobject.c
+++ /dev/null
@@ -1,1861 +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 "ckmk.h"
-#include "nssbase.h"
-
-#include "secdert.h" /* for DER_INTEGER */
-#include "string.h"
-
-/* asn1 encoder (to build pkcs#8 blobs) */
-#include <seccomon.h>
-#include <secitem.h>
-#include <blapit.h>
-#include <secoid.h>
-#include <secasn1.h>
-
-/* for importing the keys */
-#include <CoreFoundation/CoreFoundation.h>
-#include <security/SecImportExport.h>
-
-/*
- * nssmkey/mobject.c
- *
- * This file implements the NSSCKMDObject object for the
- * "nssmkey" cryptoki module.
- */
-
-const CK_ATTRIBUTE_TYPE certAttrs[] = {
- CKA_CLASS,
- CKA_TOKEN,
- CKA_PRIVATE,
- CKA_MODIFIABLE,
- CKA_LABEL,
- CKA_CERTIFICATE_TYPE,
- CKA_SUBJECT,
- CKA_ISSUER,
- CKA_SERIAL_NUMBER,
- CKA_VALUE
-};
-const PRUint32 certAttrsCount = NSS_CKMK_ARRAY_SIZE(certAttrs);
-
-/* private keys, for now only support RSA */
-const CK_ATTRIBUTE_TYPE privKeyAttrs[] = {
- CKA_CLASS,
- CKA_TOKEN,
- CKA_PRIVATE,
- CKA_MODIFIABLE,
- CKA_LABEL,
- CKA_KEY_TYPE,
- CKA_DERIVE,
- CKA_LOCAL,
- CKA_SUBJECT,
- CKA_SENSITIVE,
- CKA_DECRYPT,
- CKA_SIGN,
- CKA_SIGN_RECOVER,
- CKA_UNWRAP,
- CKA_EXTRACTABLE,
- CKA_ALWAYS_SENSITIVE,
- CKA_NEVER_EXTRACTABLE,
- CKA_MODULUS,
- CKA_PUBLIC_EXPONENT,
-};
-const PRUint32 privKeyAttrsCount = NSS_CKMK_ARRAY_SIZE(privKeyAttrs);
-
-/* public keys, for now only support RSA */
-const CK_ATTRIBUTE_TYPE pubKeyAttrs[] = {
- CKA_CLASS,
- CKA_TOKEN,
- CKA_PRIVATE,
- CKA_MODIFIABLE,
- CKA_LABEL,
- CKA_KEY_TYPE,
- CKA_DERIVE,
- CKA_LOCAL,
- CKA_SUBJECT,
- CKA_ENCRYPT,
- CKA_VERIFY,
- CKA_VERIFY_RECOVER,
- CKA_WRAP,
- CKA_MODULUS,
- CKA_PUBLIC_EXPONENT,
-};
-const PRUint32 pubKeyAttrsCount = NSS_CKMK_ARRAY_SIZE(pubKeyAttrs);
-static const CK_BBOOL ck_true = CK_TRUE;
-static const CK_BBOOL ck_false = CK_FALSE;
-static const CK_CERTIFICATE_TYPE ckc_x509 = CKC_X_509;
-static const CK_KEY_TYPE ckk_rsa = CKK_RSA;
-static const CK_OBJECT_CLASS cko_certificate = CKO_CERTIFICATE;
-static const CK_OBJECT_CLASS cko_private_key = CKO_PRIVATE_KEY;
-static const CK_OBJECT_CLASS cko_public_key = CKO_PUBLIC_KEY;
-static const NSSItem ckmk_trueItem = {
- (void *)&ck_true, (PRUint32)sizeof(CK_BBOOL)
-};
-static const NSSItem ckmk_falseItem = {
- (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL)
-};
-static const NSSItem ckmk_x509Item = {
- (void *)&ckc_x509, (PRUint32)sizeof(CK_CERTIFICATE_TYPE)
-};
-static const NSSItem ckmk_rsaItem = {
- (void *)&ckk_rsa, (PRUint32)sizeof(CK_KEY_TYPE)
-};
-static const NSSItem ckmk_certClassItem = {
- (void *)&cko_certificate, (PRUint32)sizeof(CK_OBJECT_CLASS)
-};
-static const NSSItem ckmk_privKeyClassItem = {
- (void *)&cko_private_key, (PRUint32)sizeof(CK_OBJECT_CLASS)
-};
-static const NSSItem ckmk_pubKeyClassItem = {
- (void *)&cko_public_key, (PRUint32)sizeof(CK_OBJECT_CLASS)
-};
-static const NSSItem ckmk_emptyItem = {
- (void *)&ck_true, 0
-};
-
-/*
- * these are utilities. The chould be moved to a new utilities file.
- */
-#ifdef DEBUG
-static void
-itemdump(char *str, void *data, int size, CK_RV error)
-{
- unsigned char *ptr = (unsigned char *)data;
- int i;
- fprintf(stderr, str);
- for (i = 0; i < size; i++) {
- fprintf(stderr, "%02x ", (unsigned int)ptr[i]);
- }
- fprintf(stderr, " (error = %d)\n", (int)error);
-}
-#endif
-
-/*
- * unwrap a single DER value
- * now that we have util linked in, we should probably use
- * the ANS1_Decoder for this work...
- */
-unsigned char *
-nss_ckmk_DERUnwrap(
- unsigned char *src,
- int size,
- int *outSize,
- unsigned char **next)
-{
- unsigned char *start = src;
- unsigned int len = 0;
-
- /* initialize error condition return values */
- *outSize = 0;
- if (next) {
- *next = src;
- }
-
- if (size < 2) {
- return start;
- }
- src++; /* skip the tag -- should check it against an expected value! */
- len = (unsigned)*src++;
- if (len & 0x80) {
- int count = len & 0x7f;
- len = 0;
-
- if (count + 2 > size) {
- return start;
- }
- while (count-- > 0) {
- len = (len << 8) | (unsigned)*src++;
- }
- }
- if (len + (src - start) > (unsigned int)size) {
- return start;
- }
- if (next) {
- *next = src + len;
- }
- *outSize = len;
-
- return src;
-}
-
-/*
- * get an attribute from a template. Value is returned in NSS item.
- * data for the item is owned by the template.
- */
-CK_RV
-nss_ckmk_GetAttribute(
- CK_ATTRIBUTE_TYPE type,
- CK_ATTRIBUTE *template,
- CK_ULONG templateSize,
- NSSItem *item)
-{
- CK_ULONG i;
-
- for (i = 0; i < templateSize; i++) {
- if (template[i].type == type) {
- item->data = template[i].pValue;
- item->size = template[i].ulValueLen;
- return CKR_OK;
- }
- }
- return CKR_TEMPLATE_INCOMPLETE;
-}
-
-/*
- * get an attribute which is type CK_ULONG.
- */
-CK_ULONG
-nss_ckmk_GetULongAttribute(
- CK_ATTRIBUTE_TYPE type,
- CK_ATTRIBUTE *template,
- CK_ULONG templateSize,
- CK_RV *pError)
-{
- NSSItem item;
-
- *pError = nss_ckmk_GetAttribute(type, template, templateSize, &item);
- if (CKR_OK != *pError) {
- return (CK_ULONG)0;
- }
- if (item.size != sizeof(CK_ULONG)) {
- *pError = CKR_ATTRIBUTE_VALUE_INVALID;
- return (CK_ULONG)0;
- }
- return *(CK_ULONG *)item.data;
-}
-
-/*
- * get an attribute which is type CK_BBOOL.
- */
-CK_BBOOL
-nss_ckmk_GetBoolAttribute(
- CK_ATTRIBUTE_TYPE type,
- CK_ATTRIBUTE *template,
- CK_ULONG templateSize,
- CK_BBOOL defaultBool)
-{
- NSSItem item;
- CK_RV error;
-
- error = nss_ckmk_GetAttribute(type, template, templateSize, &item);
- if (CKR_OK != error) {
- return defaultBool;
- }
- if (item.size != sizeof(CK_BBOOL)) {
- return defaultBool;
- }
- return *(CK_BBOOL *)item.data;
-}
-
-/*
- * get an attribute as a NULL terminated string. Caller is responsible to
- * free the string.
- */
-char *
-nss_ckmk_GetStringAttribute(
- CK_ATTRIBUTE_TYPE type,
- CK_ATTRIBUTE *template,
- CK_ULONG templateSize,
- CK_RV *pError)
-{
- NSSItem item;
- char *str;
-
- /* get the attribute */
- *pError = nss_ckmk_GetAttribute(type, template, templateSize, &item);
- if (CKR_OK != *pError) {
- return (char *)NULL;
- }
- /* make sure it is null terminated */
- str = nss_ZNEWARRAY(NULL, char, item.size + 1);
- if ((char *)NULL == str) {
- *pError = CKR_HOST_MEMORY;
- return (char *)NULL;
- }
-
- nsslibc_memcpy(str, item.data, item.size);
- str[item.size] = 0;
-
- return str;
-}
-
-/*
- * Apple doesn't seem to have a public interface to the DER encoder,
- * wip out a quick one for integers only (anything more complicated,
- * we should use one of the 3 in lib/util). -- especially since we
- * now link with it.
- */
-static CK_RV
-ckmk_encodeInt(NSSItem *dest, void *src, int srcLen)
-{
- int dataLen = srcLen;
- int lenLen = 1;
- int encLen;
- int isSigned = 0;
- int offset = 0;
- unsigned char *data = NULL;
- int i;
-
- if (*(unsigned char *)src & 0x80) {
- dataLen++;
- isSigned = 1;
- }
-
- /* calculate the length of the length specifier */
- /* (NOTE: destroys dataLen value) */
- if (dataLen > 0x7f) {
- do {
- lenLen++;
- dataLen >>= 8;
- } while (dataLen);
- }
-
- /* calculate our total length */
- dataLen = isSigned + srcLen;
- encLen = 1 + lenLen + dataLen;
- data = nss_ZNEWARRAY(NULL, unsigned char, encLen);
- if ((unsigned char *)NULL == data) {
- return CKR_HOST_MEMORY;
- }
- data[0] = DER_INTEGER;
- if (1 == lenLen) {
- data[1] = dataLen;
- } else {
- data[1] = 0x80 + lenLen;
- for (i = 0; i < lenLen; i++) {
- data[i + 1] = ((dataLen >> ((lenLen -
- i - 1) *
- 8)) &
- 0xff);
- }
- }
- offset = lenLen + 1;
-
- if (isSigned) {
- data[offset++] = 0;
- }
- nsslibc_memcpy(&data[offset], src, srcLen);
- dest->data = data;
- dest->size = encLen;
- return CKR_OK;
-}
-
-/*
- * Get a Keyring attribute. If content is set to true, then we get the
- * content, not the attribute.
- */
-static CK_RV
-ckmk_GetCommonAttribute(
- ckmkInternalObject *io,
- SecItemAttr itemAttr,
- PRBool content,
- NSSItem *item,
- char *dbString)
-{
- SecKeychainAttributeList *attrList = NULL;
- SecKeychainAttributeInfo attrInfo;
- PRUint32 len = 0;
- PRUint32 dataLen = 0;
- PRUint32 attrFormat = 0;
- void *dataVal = 0;
- void *out = NULL;
- CK_RV error = CKR_OK;
- OSStatus macErr;
-
- attrInfo.count = 1;
- attrInfo.tag = &itemAttr;
- attrInfo.format = &attrFormat;
-
- macErr = SecKeychainItemCopyAttributesAndData(io->u.item.itemRef,
- &attrInfo, NULL, &attrList, &len, &out);
- if (noErr != macErr) {
- CKMK_MACERR(dbString, macErr);
- return CKR_ATTRIBUTE_TYPE_INVALID;
- }
- dataLen = content ? len : attrList->attr->length;
- dataVal = content ? out : attrList->attr->data;
-
- /* Apple's documentation says this value is DER Encoded, but it clearly isn't
- * der encode it before we ship it back off to NSS
- */
- if (kSecSerialNumberItemAttr == itemAttr) {
- error = ckmk_encodeInt(item, dataVal, dataLen);
- goto loser; /* logically 'done' if error == CKR_OK */
- }
- item->data = nss_ZNEWARRAY(NULL, char, dataLen);
- if (NULL == item->data) {
- error = CKR_HOST_MEMORY;
- goto loser;
- }
- nsslibc_memcpy(item->data, dataVal, dataLen);
- item->size = dataLen;
-
-loser:
- SecKeychainItemFreeAttributesAndData(attrList, out);
- return error;
-}
-
-/*
- * change an attribute (does not operate on the content).
- */
-static CK_RV
-ckmk_updateAttribute(
- SecKeychainItemRef itemRef,
- SecItemAttr itemAttr,
- void *data,
- PRUint32 len,
- char *dbString)
-{
- SecKeychainAttributeList attrList;
- SecKeychainAttribute attrAttr;
- OSStatus macErr;
- CK_RV error = CKR_OK;
-
- attrList.count = 1;
- attrList.attr = &attrAttr;
- attrAttr.tag = itemAttr;
- attrAttr.data = data;
- attrAttr.length = len;
- macErr = SecKeychainItemModifyAttributesAndData(itemRef, &attrList, 0, NULL);
- if (noErr != macErr) {
- CKMK_MACERR(dbString, macErr);
- error = CKR_ATTRIBUTE_TYPE_INVALID;
- }
- return error;
-}
-
-/*
- * get an attribute (does not operate on the content)
- */
-static CK_RV
-ckmk_GetDataAttribute(
- ckmkInternalObject *io,
- SecItemAttr itemAttr,
- NSSItem *item,
- char *dbString)
-{
- return ckmk_GetCommonAttribute(io, itemAttr, PR_FALSE, item, dbString);
-}
-
-/*
- * get an attribute we know is a BOOL.
- */
-static CK_RV
-ckmk_GetBoolAttribute(
- ckmkInternalObject *io,
- SecItemAttr itemAttr,
- NSSItem *item,
- char *dbString)
-{
- SecKeychainAttribute attr;
- SecKeychainAttributeList attrList;
- CK_BBOOL *boolp = NULL;
- PRUint32 len = 0;
- ;
- void *out = NULL;
- CK_RV error = CKR_OK;
- OSStatus macErr;
-
- attr.tag = itemAttr;
- attr.length = 0;
- attr.data = NULL;
- attrList.count = 1;
- attrList.attr = &attr;
-
- boolp = nss_ZNEW(NULL, CK_BBOOL);
- if ((CK_BBOOL *)NULL == boolp) {
- error = CKR_HOST_MEMORY;
- goto loser;
- }
-
- macErr = SecKeychainItemCopyContent(io->u.item.itemRef, NULL,
- &attrList, &len, &out);
- if (noErr != macErr) {
- CKMK_MACERR(dbString, macErr);
- error = CKR_ATTRIBUTE_TYPE_INVALID;
- goto loser;
- }
- if (sizeof(PRUint32) != attr.length) {
- error = CKR_ATTRIBUTE_TYPE_INVALID;
- goto loser;
- }
- *boolp = *(PRUint32 *)attr.data ? 1 : 0;
- item->data = boolp;
- boolp = NULL;
- item->size = sizeof(CK_BBOOL);
-
-loser:
- nss_ZFreeIf(boolp);
- SecKeychainItemFreeContent(&attrList, out);
- return error;
-}
-
-/*
- * macros for fetching attributes into a cache and returning the
- * appropriate value. These operate inside switch statements
- */
-#define CKMK_HANDLE_ITEM(func, io, type, loc, item, error, str) \
- if (0 == (item)->loc.size) { \
- error = func(io, type, &(item)->loc, str); \
- } \
- return (CKR_OK == (error)) ? &(item)->loc : NULL;
-
-#define CKMK_HANDLE_OPT_ITEM(func, io, type, loc, item, error, str) \
- if (0 == (item)->loc.size) { \
- (void)func(io, type, &(item)->loc, str); \
- } \
- return &(item)->loc;
-
-#define CKMK_HANDLE_BOOL_ITEM(io, type, loc, item, error, str) \
- CKMK_HANDLE_ITEM(ckmk_GetBoolAttribute, io, type, loc, item, error, str)
-#define CKMK_HANDLE_DATA_ITEM(io, type, loc, item, error, str) \
- CKMK_HANDLE_ITEM(ckmk_GetDataAttribute, io, type, loc, item, error, str)
-#define CKMK_HANDLE_OPT_DATA_ITEM(io, type, loc, item, error, str) \
- CKMK_HANDLE_OPT_ITEM(ckmk_GetDataAttribute, io, type, loc, item, error, str)
-
-/*
- * fetch the unique identifier for each object type.
- */
-static void
-ckmk_FetchHashKey(
- ckmkInternalObject *io)
-{
- NSSItem *key = &io->hashKey;
-
- if (io->objClass == CKO_CERTIFICATE) {
- ckmk_GetCommonAttribute(io, kSecCertEncodingItemAttr,
- PR_TRUE, key, "Fetching HashKey (cert)");
- } else {
- ckmk_GetCommonAttribute(io, kSecKeyLabel,
- PR_FALSE, key, "Fetching HashKey (key)");
- }
-}
-
-/*
- * Apple mucks with the actual subject and issuer, so go fetch
- * the real ones ourselves.
- */
-static void
-ckmk_fetchCert(
- ckmkInternalObject *io)
-{
- CK_RV error;
- unsigned char *cert, *next;
- int certSize, thisEntrySize;
-
- error = ckmk_GetCommonAttribute(io, kSecCertEncodingItemAttr, PR_TRUE,
- &io->u.item.derCert, "Fetching Value (cert)");
- if (CKR_OK != error) {
- return;
- }
- /* unwrap the cert bundle */
- cert = nss_ckmk_DERUnwrap((unsigned char *)io->u.item.derCert.data,
- io->u.item.derCert.size,
- &certSize, NULL);
- /* unwrap the cert itself */
- /* cert == certdata */
- cert = nss_ckmk_DERUnwrap(cert, certSize, &certSize, NULL);
-
- /* skip the optional version */
- if ((cert[0] & 0xa0) == 0xa0) {
- nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next);
- certSize -= next - cert;
- cert = next;
- }
- /* skip the serial number */
- nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next);
- certSize -= next - cert;
- cert = next;
-
- /* skip the OID */
- nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next);
- certSize -= next - cert;
- cert = next;
-
- /* save the (wrapped) issuer */
- io->u.item.issuer.data = cert;
- nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next);
- io->u.item.issuer.size = next - cert;
- certSize -= io->u.item.issuer.size;
- cert = next;
-
- /* skip the OID */
- nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next);
- certSize -= next - cert;
- cert = next;
-
- /* save the (wrapped) subject */
- io->u.item.subject.data = cert;
- nss_ckmk_DERUnwrap(cert, certSize, &thisEntrySize, &next);
- io->u.item.subject.size = next - cert;
- certSize -= io->u.item.subject.size;
- cert = next;
-}
-
-static void
-ckmk_fetchModulus(
- ckmkInternalObject *io)
-{
- NSSItem item;
- PRInt32 modLen;
- CK_RV error;
-
- /* we can't reliably get the modulus for private keys through CSSM (sigh).
- * For NSS this is OK because we really only use this to get the modulus
- * length (unless we are trying to get a public key from a private keys,
- * something CSSM ALSO does not do!).
- */
- error = ckmk_GetDataAttribute(io, kSecKeyKeySizeInBits, &item,
- "Key Fetch Modulus");
- if (CKR_OK != error) {
- return;
- }
-
- modLen = *(PRInt32 *)item.data;
- modLen = modLen / 8; /* convert from bits to bytes */
-
- nss_ZFreeIf(item.data);
- io->u.item.modulus.data = nss_ZNEWARRAY(NULL, char, modLen);
- if (NULL == io->u.item.modulus.data) {
- return;
- }
- *(char *)io->u.item.modulus.data = 0x80; /* fake NSS out or it will
- * drop the first byte */
- io->u.item.modulus.size = modLen;
- return;
-}
-
-const NSSItem *
-ckmk_FetchCertAttribute(
- ckmkInternalObject *io,
- CK_ATTRIBUTE_TYPE type,
- CK_RV *pError)
-{
- ckmkItemObject *item = &io->u.item;
- *pError = CKR_OK;
- switch (type) {
- case CKA_CLASS:
- return &ckmk_certClassItem;
- case CKA_TOKEN:
- case CKA_MODIFIABLE:
- return &ckmk_trueItem;
- case CKA_PRIVATE:
- return &ckmk_falseItem;
- case CKA_CERTIFICATE_TYPE:
- return &ckmk_x509Item;
- case CKA_LABEL:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecLabelItemAttr, label, item, *pError,
- "Cert:Label attr")
- case CKA_SUBJECT:
- /* OK, well apple does provide an subject and issuer attribute, but they
- * decided to cannonicalize that value. Probably a good move for them,
- * but makes it useless for most users of PKCS #11.. Get the real subject
- * from the certificate */
- if (0 == item->derCert.size) {
- ckmk_fetchCert(io);
- }
- return &item->subject;
- case CKA_ISSUER:
- if (0 == item->derCert.size) {
- ckmk_fetchCert(io);
- }
- return &item->issuer;
- case CKA_SERIAL_NUMBER:
- CKMK_HANDLE_DATA_ITEM(io, kSecSerialNumberItemAttr, serial, item, *pError,
- "Cert:Serial Number attr")
- case CKA_VALUE:
- if (0 == item->derCert.size) {
- ckmk_fetchCert(io);
- }
- return &item->derCert;
- case CKA_ID:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecPublicKeyHashItemAttr, id, item, *pError,
- "Cert:ID attr")
- default:
- *pError = CKR_ATTRIBUTE_TYPE_INVALID;
- break;
- }
- return NULL;
-}
-
-const NSSItem *
-ckmk_FetchPubKeyAttribute(
- ckmkInternalObject *io,
- CK_ATTRIBUTE_TYPE type,
- CK_RV *pError)
-{
- ckmkItemObject *item = &io->u.item;
- *pError = CKR_OK;
-
- switch (type) {
- case CKA_CLASS:
- return &ckmk_pubKeyClassItem;
- case CKA_TOKEN:
- case CKA_LOCAL:
- return &ckmk_trueItem;
- case CKA_KEY_TYPE:
- return &ckmk_rsaItem;
- case CKA_LABEL:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyPrintName, label, item, *pError,
- "PubKey:Label attr")
- case CKA_ENCRYPT:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyEncrypt, encrypt, item, *pError,
- "PubKey:Encrypt attr")
- case CKA_VERIFY:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyVerify, verify, item, *pError,
- "PubKey:Verify attr")
- case CKA_VERIFY_RECOVER:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyVerifyRecover, verifyRecover,
- item, *pError, "PubKey:VerifyRecover attr")
- case CKA_PRIVATE:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyPrivate, private, item, *pError,
- "PubKey:Private attr")
- case CKA_MODIFIABLE:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyModifiable, modify, item, *pError,
- "PubKey:Modify attr")
- case CKA_DERIVE:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyDerive, derive, item, *pError,
- "PubKey:Derive attr")
- case CKA_WRAP:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyWrap, wrap, item, *pError,
- "PubKey:Wrap attr")
- case CKA_SUBJECT:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecSubjectItemAttr, subject, item, *pError,
- "PubKey:Subect attr")
- case CKA_MODULUS:
- return &ckmk_emptyItem;
- case CKA_PUBLIC_EXPONENT:
- return &ckmk_emptyItem;
- case CKA_ID:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyLabel, id, item, *pError,
- "PubKey:ID attr")
- default:
- *pError = CKR_ATTRIBUTE_TYPE_INVALID;
- break;
- }
- return NULL;
-}
-
-const NSSItem *
-ckmk_FetchPrivKeyAttribute(
- ckmkInternalObject *io,
- CK_ATTRIBUTE_TYPE type,
- CK_RV *pError)
-{
- ckmkItemObject *item = &io->u.item;
- *pError = CKR_OK;
-
- switch (type) {
- case CKA_CLASS:
- return &ckmk_privKeyClassItem;
- case CKA_TOKEN:
- case CKA_LOCAL:
- return &ckmk_trueItem;
- case CKA_SENSITIVE:
- case CKA_EXTRACTABLE: /* will probably move in the future */
- case CKA_ALWAYS_SENSITIVE:
- case CKA_NEVER_EXTRACTABLE:
- return &ckmk_falseItem;
- case CKA_KEY_TYPE:
- return &ckmk_rsaItem;
- case CKA_LABEL:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyPrintName, label, item, *pError,
- "PrivateKey:Label attr")
- case CKA_DECRYPT:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyDecrypt, decrypt, item, *pError,
- "PrivateKey:Decrypt attr")
- case CKA_SIGN:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeySign, sign, item, *pError,
- "PrivateKey:Sign attr")
- case CKA_SIGN_RECOVER:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeySignRecover, signRecover, item, *pError,
- "PrivateKey:Sign Recover attr")
- case CKA_PRIVATE:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyPrivate, private, item, *pError,
- "PrivateKey:Private attr")
- case CKA_MODIFIABLE:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyModifiable, modify, item, *pError,
- "PrivateKey:Modify attr")
- case CKA_DERIVE:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyDerive, derive, item, *pError,
- "PrivateKey:Derive attr")
- case CKA_UNWRAP:
- CKMK_HANDLE_BOOL_ITEM(io, kSecKeyUnwrap, unwrap, item, *pError,
- "PrivateKey:Unwrap attr")
- case CKA_SUBJECT:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecSubjectItemAttr, subject, item, *pError,
- "PrivateKey:Subject attr")
- case CKA_MODULUS:
- if (0 == item->modulus.size) {
- ckmk_fetchModulus(io);
- }
- return &item->modulus;
- case CKA_PUBLIC_EXPONENT:
- return &ckmk_emptyItem;
-#ifdef notdef
- /* the following are sensitive attributes. We could implement them for
- * sensitive keys using the key export function, but it's better to
- * just support wrap through this token. That will more reliably allow us
- * to export any private key that is truly exportable.
- */
- case CKA_PRIVATE_EXPONENT:
- CKMK_HANDLE_DATA_ITEM(io, kSecPrivateExponentItemAttr, privateExponent,
- item, *pError)
- case CKA_PRIME_1:
- CKMK_HANDLE_DATA_ITEM(io, kSecPrime1ItemAttr, prime1, item, *pError)
- case CKA_PRIME_2:
- CKMK_HANDLE_DATA_ITEM(io, kSecPrime2ItemAttr, prime2, item, *pError)
- case CKA_EXPONENT_1:
- CKMK_HANDLE_DATA_ITEM(io, kSecExponent1ItemAttr, exponent1, item, *pError)
- case CKA_EXPONENT_2:
- CKMK_HANDLE_DATA_ITEM(io, kSecExponent2ItemAttr, exponent2, item, *pError)
- case CKA_COEFFICIENT:
- CKMK_HANDLE_DATA_ITEM(io, kSecCoefficientItemAttr, coefficient,
- item, *pError)
-#endif
- case CKA_ID:
- CKMK_HANDLE_OPT_DATA_ITEM(io, kSecKeyLabel, id, item, *pError,
- "PrivateKey:ID attr")
- default:
- *pError = CKR_ATTRIBUTE_TYPE_INVALID;
- return NULL;
- }
-}
-
-const NSSItem *
-nss_ckmk_FetchAttribute(
- ckmkInternalObject *io,
- CK_ATTRIBUTE_TYPE type,
- CK_RV *pError)
-{
- CK_ULONG i;
- const NSSItem *value = NULL;
-
- if (io->type == ckmkRaw) {
- for (i = 0; i < io->u.raw.n; i++) {
- if (type == io->u.raw.types[i]) {
- return &io->u.raw.items[i];
- }
- }
- *pError = CKR_ATTRIBUTE_TYPE_INVALID;
- return NULL;
- }
- /* deal with the common attributes */
- switch (io->objClass) {
- case CKO_CERTIFICATE:
- value = ckmk_FetchCertAttribute(io, type, pError);
- break;
- case CKO_PRIVATE_KEY:
- value = ckmk_FetchPrivKeyAttribute(io, type, pError);
- break;
- case CKO_PUBLIC_KEY:
- value = ckmk_FetchPubKeyAttribute(io, type, pError);
- break;
- default:
- *pError = CKR_OBJECT_HANDLE_INVALID;
- return NULL;
- }
-
-#ifdef DEBUG
- if (CKA_ID == type) {
- itemdump("id: ", value->data, value->size, *pError);
- }
-#endif
- return value;
-}
-
-static void
-ckmk_removeObjectFromHash(
- ckmkInternalObject *io);
-
-/*
- *
- * These are the MSObject functions we need to implement
- *
- * Finalize - unneeded (actually we should clean up the hashtables)
- * Destroy
- * IsTokenObject - CK_TRUE
- * GetAttributeCount
- * GetAttributeTypes
- * GetAttributeSize
- * GetAttribute
- * SetAttribute
- * GetObjectSize
- */
-
-static CK_RV
-ckmk_mdObject_Destroy(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc;
- OSStatus macErr;
-
- if (ckmkRaw == io->type) {
- /* there is not 'object write protected' error, use the next best thing */
- return CKR_TOKEN_WRITE_PROTECTED;
- }
-
- /* This API is done well. The following 4 lines are the complete apple
- * specific part of this implementation */
- macErr = SecKeychainItemDelete(io->u.item.itemRef);
- if (noErr != macErr) {
- CKMK_MACERR("Delete object", macErr);
- }
-
- /* remove it from the hash */
- ckmk_removeObjectFromHash(io);
-
- /* free the puppy.. */
- nss_ckmk_DestroyInternalObject(io);
-
- return CKR_OK;
-}
-
-static CK_BBOOL
-ckmk_mdObject_IsTokenObject(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return CK_TRUE;
-}
-
-static CK_ULONG
-ckmk_mdObject_GetAttributeCount(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc;
-
- if (ckmkRaw == io->type) {
- return io->u.raw.n;
- }
- switch (io->objClass) {
- case CKO_CERTIFICATE:
- return certAttrsCount;
- case CKO_PUBLIC_KEY:
- return pubKeyAttrsCount;
- case CKO_PRIVATE_KEY:
- return privKeyAttrsCount;
- default:
- break;
- }
- return 0;
-}
-
-static CK_RV
-ckmk_mdObject_GetAttributeTypes(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_ATTRIBUTE_TYPE_PTR typeArray,
- CK_ULONG ulCount)
-{
- ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc;
- CK_ULONG i;
- CK_RV error = CKR_OK;
- const CK_ATTRIBUTE_TYPE *attrs = NULL;
- CK_ULONG size = ckmk_mdObject_GetAttributeCount(
- mdObject, fwObject, mdSession, fwSession,
- mdToken, fwToken, mdInstance, fwInstance, &error);
-
- if (size != ulCount) {
- return CKR_BUFFER_TOO_SMALL;
- }
- if (io->type == ckmkRaw) {
- attrs = io->u.raw.types;
- } else
- switch (io->objClass) {
- case CKO_CERTIFICATE:
- attrs =
- certAttrs;
- break;
- case CKO_PUBLIC_KEY:
- attrs =
- pubKeyAttrs;
- break;
- case CKO_PRIVATE_KEY:
- attrs =
- privKeyAttrs;
- break;
- default:
- return CKR_OK;
- }
-
- for (i = 0; i < size; i++) {
- typeArray[i] = attrs[i];
- }
-
- return CKR_OK;
-}
-
-static CK_ULONG
-ckmk_mdObject_GetAttributeSize(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_ATTRIBUTE_TYPE attribute,
- CK_RV *pError)
-{
- ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc;
-
- const NSSItem *b;
-
- b = nss_ckmk_FetchAttribute(io, attribute, pError);
-
- if ((const NSSItem *)NULL == b) {
- return 0;
- }
- return b->size;
-}
-
-static CK_RV
-ckmk_mdObject_SetAttribute(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_ATTRIBUTE_TYPE attribute,
- NSSItem *value)
-{
- ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc;
- SecKeychainItemRef itemRef;
-
- if (io->type == ckmkRaw) {
- return CKR_TOKEN_WRITE_PROTECTED;
- }
- itemRef = io->u.item.itemRef;
-
- switch (io->objClass) {
- case CKO_PRIVATE_KEY:
- case CKO_PUBLIC_KEY:
- switch (attribute) {
- case CKA_ID:
- ckmk_updateAttribute(itemRef, kSecKeyLabel,
- value->data, value->size, "Set Attr Key ID");
-#ifdef DEBUG
- itemdump("key id: ", value->data, value->size, CKR_OK);
-#endif
- break;
- case CKA_LABEL:
- ckmk_updateAttribute(itemRef, kSecKeyPrintName, value->data,
- value->size, "Set Attr Key Label");
- break;
- default:
- break;
- }
- break;
-
- case CKO_CERTIFICATE:
- switch (attribute) {
- case CKA_ID:
- ckmk_updateAttribute(itemRef, kSecPublicKeyHashItemAttr,
- value->data, value->size, "Set Attr Cert ID");
- break;
- case CKA_LABEL:
- ckmk_updateAttribute(itemRef, kSecLabelItemAttr, value->data,
- value->size, "Set Attr Cert Label");
- break;
- default:
- break;
- }
- break;
-
- default:
- break;
- }
- return CKR_OK;
-}
-
-static NSSCKFWItem
-ckmk_mdObject_GetAttribute(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_ATTRIBUTE_TYPE attribute,
- CK_RV *pError)
-{
- NSSCKFWItem mdItem;
- ckmkInternalObject *io = (ckmkInternalObject *)mdObject->etc;
-
- mdItem.needsFreeing = PR_FALSE;
- mdItem.item = (NSSItem *)nss_ckmk_FetchAttribute(io, attribute, pError);
-
- return mdItem;
-}
-
-static CK_ULONG
-ckmk_mdObject_GetObjectSize(
- NSSCKMDObject *mdObject,
- NSSCKFWObject *fwObject,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- CK_ULONG rv = 1;
-
- /* size is irrelevant to this token */
- return rv;
-}
-
-static const NSSCKMDObject
- ckmk_prototype_mdObject = {
- (void *)NULL, /* etc */
- NULL, /* Finalize */
- ckmk_mdObject_Destroy,
- ckmk_mdObject_IsTokenObject,
- ckmk_mdObject_GetAttributeCount,
- ckmk_mdObject_GetAttributeTypes,
- ckmk_mdObject_GetAttributeSize,
- ckmk_mdObject_GetAttribute,
- NULL, /* FreeAttribute */
- ckmk_mdObject_SetAttribute,
- ckmk_mdObject_GetObjectSize,
- (void *)NULL /* null terminator */
- };
-
-static nssHash *ckmkInternalObjectHash = NULL;
-
-NSS_IMPLEMENT NSSCKMDObject *
-nss_ckmk_CreateMDObject(
- NSSArena *arena,
- ckmkInternalObject *io,
- CK_RV *pError)
-{
- if ((nssHash *)NULL == ckmkInternalObjectHash) {
- ckmkInternalObjectHash = nssHash_CreateItem(NULL, 10);
- }
- if (ckmkItem == io->type) {
- /* the hash key, not a cryptographic key */
- NSSItem *key = &io->hashKey;
- ckmkInternalObject *old_o = NULL;
-
- if (key->size == 0) {
- ckmk_FetchHashKey(io);
- }
- old_o = (ckmkInternalObject *)
- nssHash_Lookup(ckmkInternalObjectHash, key);
- if (!old_o) {
- nssHash_Add(ckmkInternalObjectHash, key, io);
- } else if (old_o != io) {
- nss_ckmk_DestroyInternalObject(io);
- io = old_o;
- }
- }
-
- if ((void *)NULL == io->mdObject.etc) {
- (void)nsslibc_memcpy(&io->mdObject, &ckmk_prototype_mdObject,
- sizeof(ckmk_prototype_mdObject));
- io->mdObject.etc = (void *)io;
- }
- return &io->mdObject;
-}
-
-static void
-ckmk_removeObjectFromHash(
- ckmkInternalObject *io)
-{
- NSSItem *key = &io->hashKey;
-
- if ((nssHash *)NULL == ckmkInternalObjectHash) {
- return;
- }
- if (key->size == 0) {
- ckmk_FetchHashKey(io);
- }
- nssHash_Remove(ckmkInternalObjectHash, key);
- return;
-}
-
-void
-nss_ckmk_DestroyInternalObject(
- ckmkInternalObject *io)
-{
- switch (io->type) {
- case ckmkRaw:
- return;
- case ckmkItem:
- nss_ZFreeIf(io->u.item.modify.data);
- nss_ZFreeIf(io->u.item.private.data);
- nss_ZFreeIf(io->u.item.encrypt.data);
- nss_ZFreeIf(io->u.item.decrypt.data);
- nss_ZFreeIf(io->u.item.derive.data);
- nss_ZFreeIf(io->u.item.sign.data);
- nss_ZFreeIf(io->u.item.signRecover.data);
- nss_ZFreeIf(io->u.item.verify.data);
- nss_ZFreeIf(io->u.item.verifyRecover.data);
- nss_ZFreeIf(io->u.item.wrap.data);
- nss_ZFreeIf(io->u.item.unwrap.data);
- nss_ZFreeIf(io->u.item.label.data);
- /*nss_ZFreeIf(io->u.item.subject.data); */
- /*nss_ZFreeIf(io->u.item.issuer.data); */
- nss_ZFreeIf(io->u.item.serial.data);
- nss_ZFreeIf(io->u.item.modulus.data);
- nss_ZFreeIf(io->u.item.exponent.data);
- nss_ZFreeIf(io->u.item.privateExponent.data);
- nss_ZFreeIf(io->u.item.prime1.data);
- nss_ZFreeIf(io->u.item.prime2.data);
- nss_ZFreeIf(io->u.item.exponent1.data);
- nss_ZFreeIf(io->u.item.exponent2.data);
- nss_ZFreeIf(io->u.item.coefficient.data);
- break;
- }
- nss_ZFreeIf(io);
- return;
-}
-
-static ckmkInternalObject *
-nss_ckmk_NewInternalObject(
- CK_OBJECT_CLASS objClass,
- SecKeychainItemRef itemRef,
- SecItemClass itemClass,
- CK_RV *pError)
-{
- ckmkInternalObject *io = nss_ZNEW(NULL, ckmkInternalObject);
-
- if ((ckmkInternalObject *)NULL == io) {
- *pError = CKR_HOST_MEMORY;
- return io;
- }
- io->type = ckmkItem;
- io->objClass = objClass;
- io->u.item.itemRef = itemRef;
- io->u.item.itemClass = itemClass;
- return io;
-}
-
-/*
- * Apple doesn't alway have a default keyChain set by the OS, use the
- * SearchList to try to find one.
- */
-static CK_RV
-ckmk_GetSafeDefaultKeychain(
- SecKeychainRef *keychainRef)
-{
- OSStatus macErr;
- CFArrayRef searchList = 0;
- CK_RV error = CKR_OK;
-
- macErr = SecKeychainCopyDefault(keychainRef);
- if (noErr != macErr) {
- int searchCount = 0;
- if (errSecNoDefaultKeychain != macErr) {
- CKMK_MACERR("Getting default key chain", macErr);
- error = CKR_GENERAL_ERROR;
- goto loser;
- }
- /* ok, we don't have a default key chain, find one */
- macErr = SecKeychainCopySearchList(&searchList);
- if (noErr != macErr) {
- CKMK_MACERR("failed to find a keyring searchList", macErr);
- error = CKR_DEVICE_REMOVED;
- goto loser;
- }
- searchCount = CFArrayGetCount(searchList);
- if (searchCount < 1) {
- error = CKR_DEVICE_REMOVED;
- goto loser;
- }
- *keychainRef =
- (SecKeychainRef)CFRetain(CFArrayGetValueAtIndex(searchList, 0));
- if (0 == *keychainRef) {
- error = CKR_DEVICE_REMOVED;
- goto loser;
- }
- /* should we set it as default? */
- }
-loser:
- if (0 != searchList) {
- CFRelease(searchList);
- }
- return error;
-}
-static ckmkInternalObject *
-nss_ckmk_CreateCertificate(
- NSSCKFWSession *fwSession,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError)
-{
- NSSItem value;
- ckmkInternalObject *io = NULL;
- OSStatus macErr;
- SecCertificateRef certRef;
- SecKeychainItemRef itemRef;
- SecKeychainRef keychainRef;
- CSSM_DATA certData;
-
- *pError = nss_ckmk_GetAttribute(CKA_VALUE, pTemplate,
- ulAttributeCount, &value);
- if (CKR_OK != *pError) {
- goto loser;
- }
-
- certData.Data = value.data;
- certData.Length = value.size;
- macErr = SecCertificateCreateFromData(&certData, CSSM_CERT_X_509v3,
- CSSM_CERT_ENCODING_BER, &certRef);
- if (noErr != macErr) {
- CKMK_MACERR("Create cert from data Failed", macErr);
- *pError = CKR_GENERAL_ERROR; /* need to map macErr */
- goto loser;
- }
-
- *pError = ckmk_GetSafeDefaultKeychain(&keychainRef);
- if (CKR_OK != *pError) {
- goto loser;
- }
-
- macErr = SecCertificateAddToKeychain(certRef, keychainRef);
- itemRef = (SecKeychainItemRef)certRef;
- if (errSecDuplicateItem != macErr) {
- NSSItem keyID = { NULL, 0 };
- char *nickname = NULL;
- CK_RV dummy;
-
- if (noErr != macErr) {
- CKMK_MACERR("Add cert to keychain Failed", macErr);
- *pError = CKR_GENERAL_ERROR; /* need to map macErr */
- goto loser;
- }
- /* these two are optional */
- nickname = nss_ckmk_GetStringAttribute(CKA_LABEL, pTemplate,
- ulAttributeCount, &dummy);
- /* we've added a new one, update the attributes in the key ring */
- if (nickname) {
- ckmk_updateAttribute(itemRef, kSecLabelItemAttr, nickname,
- strlen(nickname) + 1, "Modify Cert Label");
- nss_ZFreeIf(nickname);
- }
- dummy = nss_ckmk_GetAttribute(CKA_ID, pTemplate,
- ulAttributeCount, &keyID);
- if (CKR_OK == dummy) {
- dummy = ckmk_updateAttribute(itemRef, kSecPublicKeyHashItemAttr,
- keyID.data, keyID.size, "Modify Cert ID");
- }
- }
-
- io = nss_ckmk_NewInternalObject(CKO_CERTIFICATE, itemRef,
- kSecCertificateItemClass, pError);
- if ((ckmkInternalObject *)NULL != io) {
- itemRef = 0;
- }
-
-loser:
- if (0 != itemRef) {
- CFRelease(itemRef);
- }
- if (0 != keychainRef) {
- CFRelease(keychainRef);
- }
-
- return io;
-}
-
-/*
- * PKCS #8 attributes
- */
-struct ckmk_AttributeStr {
- SECItem attrType;
- SECItem *attrValue;
-};
-typedef struct ckmk_AttributeStr ckmk_Attribute;
-
-/*
- ** A PKCS#8 private key info object
- */
-struct PrivateKeyInfoStr {
- PLArenaPool *arena;
- SECItem version;
- SECAlgorithmID algorithm;
- SECItem privateKey;
- ckmk_Attribute **attributes;
-};
-typedef struct PrivateKeyInfoStr PrivateKeyInfo;
-
-const SEC_ASN1Template ckmk_RSAPrivateKeyTemplate[] = {
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(RSAPrivateKey) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, version) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, modulus) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, publicExponent) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, privateExponent) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, prime1) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, prime2) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, exponent1) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, exponent2) },
- { SEC_ASN1_INTEGER, offsetof(RSAPrivateKey, coefficient) },
- { 0 }
-};
-
-const SEC_ASN1Template ckmk_AttributeTemplate[] = {
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(ckmk_Attribute) },
- { SEC_ASN1_OBJECT_ID, offsetof(ckmk_Attribute, attrType) },
- { SEC_ASN1_SET_OF, offsetof(ckmk_Attribute, attrValue),
- SEC_AnyTemplate },
- { 0 }
-};
-
-const SEC_ASN1Template ckmk_SetOfAttributeTemplate[] = {
- { SEC_ASN1_SET_OF, 0, ckmk_AttributeTemplate },
-};
-
-SEC_ASN1_MKSUB(SECOID_AlgorithmIDTemplate)
-
-/* ASN1 Templates for new decoder/encoder */
-const SEC_ASN1Template ckmk_PrivateKeyInfoTemplate[] = {
- { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PrivateKeyInfo) },
- { SEC_ASN1_INTEGER, offsetof(PrivateKeyInfo, version) },
- { SEC_ASN1_INLINE | SEC_ASN1_XTRN, offsetof(PrivateKeyInfo, algorithm),
- SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate) },
- { SEC_ASN1_OCTET_STRING, offsetof(PrivateKeyInfo, privateKey) },
- { SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 0,
- offsetof(PrivateKeyInfo, attributes), ckmk_SetOfAttributeTemplate },
- { 0 }
-};
-
-#define CKMK_PRIVATE_KEY_INFO_VERSION 0
-static CK_RV
-ckmk_CreateRSAKeyBlob(
- RSAPrivateKey *lk,
- NSSItem *keyBlob)
-{
- PrivateKeyInfo *pki = NULL;
- PLArenaPool *arena = NULL;
- SECOidTag algorithm = SEC_OID_UNKNOWN;
- void *dummy;
- SECStatus rv;
- SECItem *encodedKey = NULL;
- CK_RV error = CKR_OK;
-
- arena = PORT_NewArena(2048); /* XXX different size? */
- if (!arena) {
- error = CKR_HOST_MEMORY;
- goto loser;
- }
-
- pki = (PrivateKeyInfo *)PORT_ArenaZAlloc(arena, sizeof(PrivateKeyInfo));
- if (!pki) {
- error = CKR_HOST_MEMORY;
- goto loser;
- }
- pki->arena = arena;
-
- dummy = SEC_ASN1EncodeItem(arena, &pki->privateKey, lk,
- ckmk_RSAPrivateKeyTemplate);
- algorithm = SEC_OID_PKCS1_RSA_ENCRYPTION;
-
- if (!dummy) {
- error = CKR_DEVICE_ERROR; /* should map NSS SECError */
- goto loser;
- }
-
- rv = SECOID_SetAlgorithmID(arena, &pki->algorithm, algorithm,
- (SECItem *)NULL);
- if (rv != SECSuccess) {
- error = CKR_DEVICE_ERROR; /* should map NSS SECError */
- goto loser;
- }
-
- dummy = SEC_ASN1EncodeInteger(arena, &pki->version,
- CKMK_PRIVATE_KEY_INFO_VERSION);
- if (!dummy) {
- error = CKR_DEVICE_ERROR; /* should map NSS SECError */
- goto loser;
- }
-
- encodedKey = SEC_ASN1EncodeItem(NULL, NULL, pki,
- ckmk_PrivateKeyInfoTemplate);
- if (!encodedKey) {
- error = CKR_DEVICE_ERROR;
- goto loser;
- }
-
- keyBlob->data = nss_ZNEWARRAY(NULL, char, encodedKey->len);
- if (NULL == keyBlob->data) {
- error = CKR_HOST_MEMORY;
- goto loser;
- }
- nsslibc_memcpy(keyBlob->data, encodedKey->data, encodedKey->len);
- keyBlob->size = encodedKey->len;
-
-loser:
- if (arena) {
- PORT_FreeArena(arena, PR_TRUE);
- }
- if (encodedKey) {
- SECITEM_FreeItem(encodedKey, PR_TRUE);
- }
-
- return error;
-}
-/*
- * There MUST be a better way to do this. For now, find the key based on the
- * default name Apple gives it once we import.
- */
-#define IMPORTED_NAME "Imported Private Key"
-static CK_RV
-ckmk_FindImportedKey(
- SecKeychainRef keychainRef,
- SecItemClass itemClass,
- SecKeychainItemRef *outItemRef)
-{
- OSStatus macErr;
- SecKeychainSearchRef searchRef = 0;
- SecKeychainItemRef newItemRef;
-
- macErr = SecKeychainSearchCreateFromAttributes(keychainRef, itemClass,
- NULL, &searchRef);
- if (noErr != macErr) {
- CKMK_MACERR("Can't search for Key", macErr);
- return CKR_GENERAL_ERROR;
- }
- while (noErr == SecKeychainSearchCopyNext(searchRef, &newItemRef)) {
- SecKeychainAttributeList *attrList = NULL;
- SecKeychainAttributeInfo attrInfo;
- SecItemAttr itemAttr = kSecKeyPrintName;
- PRUint32 attrFormat = 0;
- OSStatus macErr;
-
- attrInfo.count = 1;
- attrInfo.tag = &itemAttr;
- attrInfo.format = &attrFormat;
-
- macErr = SecKeychainItemCopyAttributesAndData(newItemRef,
- &attrInfo, NULL, &attrList, NULL, NULL);
- if (noErr == macErr) {
- if (nsslibc_memcmp(attrList->attr->data, IMPORTED_NAME,
- attrList->attr->length, NULL) == 0) {
- *outItemRef = newItemRef;
- CFRelease(searchRef);
- SecKeychainItemFreeAttributesAndData(attrList, NULL);
- return CKR_OK;
- }
- SecKeychainItemFreeAttributesAndData(attrList, NULL);
- }
- CFRelease(newItemRef);
- }
- CFRelease(searchRef);
- return CKR_GENERAL_ERROR; /* we can come up with something better! */
-}
-
-static ckmkInternalObject *
-nss_ckmk_CreatePrivateKey(
- NSSCKFWSession *fwSession,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError)
-{
- NSSItem attribute;
- RSAPrivateKey lk;
- NSSItem keyID;
- char *nickname = NULL;
- ckmkInternalObject *io = NULL;
- CK_KEY_TYPE keyType;
- OSStatus macErr;
- SecKeychainItemRef itemRef = 0;
- NSSItem keyBlob = { NULL, 0 };
- CFDataRef dataRef = 0;
- SecExternalFormat inputFormat = kSecFormatBSAFE;
- /*SecExternalFormat inputFormat = kSecFormatOpenSSL; */
- SecExternalItemType itemType = kSecItemTypePrivateKey;
- SecKeyImportExportParameters keyParams;
- SecKeychainRef targetKeychain = 0;
- unsigned char zero = 0;
- CK_RV error;
-
- keyParams.version = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION;
- keyParams.flags = 0;
- keyParams.passphrase = 0;
- keyParams.alertTitle = 0;
- keyParams.alertPrompt = 0;
- keyParams.accessRef = 0; /* default */
- keyParams.keyUsage = 0; /* will get filled in */
- keyParams.keyAttributes = CSSM_KEYATTR_PERMANENT; /* will get filled in */
- keyType = nss_ckmk_GetULongAttribute(CKA_KEY_TYPE, pTemplate, ulAttributeCount, pError);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- if (CKK_RSA != keyType) {
- *pError = CKR_ATTRIBUTE_VALUE_INVALID;
- return (ckmkInternalObject *)NULL;
- }
- if (nss_ckmk_GetBoolAttribute(CKA_DECRYPT,
- pTemplate, ulAttributeCount, CK_TRUE)) {
- keyParams.keyUsage |= CSSM_KEYUSE_DECRYPT;
- }
- if (nss_ckmk_GetBoolAttribute(CKA_UNWRAP,
- pTemplate, ulAttributeCount, CK_TRUE)) {
- keyParams.keyUsage |= CSSM_KEYUSE_UNWRAP;
- }
- if (nss_ckmk_GetBoolAttribute(CKA_SIGN,
- pTemplate, ulAttributeCount, CK_TRUE)) {
- keyParams.keyUsage |= CSSM_KEYUSE_SIGN;
- }
- if (nss_ckmk_GetBoolAttribute(CKA_DERIVE,
- pTemplate, ulAttributeCount, CK_FALSE)) {
- keyParams.keyUsage |= CSSM_KEYUSE_DERIVE;
- }
- if (nss_ckmk_GetBoolAttribute(CKA_SENSITIVE,
- pTemplate, ulAttributeCount, CK_TRUE)) {
- keyParams.keyAttributes |= CSSM_KEYATTR_SENSITIVE;
- }
- if (nss_ckmk_GetBoolAttribute(CKA_EXTRACTABLE,
- pTemplate, ulAttributeCount, CK_TRUE)) {
- keyParams.keyAttributes |= CSSM_KEYATTR_EXTRACTABLE;
- }
-
- lk.version.type = siUnsignedInteger;
- lk.version.data = &zero;
- lk.version.len = 1;
-
- *pError = nss_ckmk_GetAttribute(CKA_MODULUS, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.modulus.type = siUnsignedInteger;
- lk.modulus.data = attribute.data;
- lk.modulus.len = attribute.size;
-
- *pError = nss_ckmk_GetAttribute(CKA_PUBLIC_EXPONENT, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.publicExponent.type = siUnsignedInteger;
- lk.publicExponent.data = attribute.data;
- lk.publicExponent.len = attribute.size;
-
- *pError = nss_ckmk_GetAttribute(CKA_PRIVATE_EXPONENT, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.privateExponent.type = siUnsignedInteger;
- lk.privateExponent.data = attribute.data;
- lk.privateExponent.len = attribute.size;
-
- *pError = nss_ckmk_GetAttribute(CKA_PRIME_1, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.prime1.type = siUnsignedInteger;
- lk.prime1.data = attribute.data;
- lk.prime1.len = attribute.size;
-
- *pError = nss_ckmk_GetAttribute(CKA_PRIME_2, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.prime2.type = siUnsignedInteger;
- lk.prime2.data = attribute.data;
- lk.prime2.len = attribute.size;
-
- *pError = nss_ckmk_GetAttribute(CKA_EXPONENT_1, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.exponent1.type = siUnsignedInteger;
- lk.exponent1.data = attribute.data;
- lk.exponent1.len = attribute.size;
-
- *pError = nss_ckmk_GetAttribute(CKA_EXPONENT_2, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.exponent2.type = siUnsignedInteger;
- lk.exponent2.data = attribute.data;
- lk.exponent2.len = attribute.size;
-
- *pError = nss_ckmk_GetAttribute(CKA_COEFFICIENT, pTemplate,
- ulAttributeCount, &attribute);
- if (CKR_OK != *pError) {
- return (ckmkInternalObject *)NULL;
- }
- lk.coefficient.type = siUnsignedInteger;
- lk.coefficient.data = attribute.data;
- lk.coefficient.len = attribute.size;
-
- /* ASN1 Encode the pkcs8 structure... look at softoken to see how this
- * is done... */
- error = ckmk_CreateRSAKeyBlob(&lk, &keyBlob);
- if (CKR_OK != error) {
- goto loser;
- }
-
- dataRef = CFDataCreate(NULL, (UInt8 *)keyBlob.data, keyBlob.size);
- if (0 == dataRef) {
- *pError = CKR_HOST_MEMORY;
- goto loser;
- }
-
- *pError == ckmk_GetSafeDefaultKeychain(&targetKeychain);
- if (CKR_OK != *pError) {
- goto loser;
- }
-
- /* the itemArray that is returned is useless. the item does not
- * is 'not on the key chain' so none of the modify calls work on it.
- * It also has a key that isn't the same key as the one in the actual
- * key chain. In short it isn't the item we want, and it gives us zero
- * information about the item we want, so don't even bother with it...
- */
- macErr = SecKeychainItemImport(dataRef, NULL, &inputFormat, &itemType, 0,
- &keyParams, targetKeychain, NULL);
- if (noErr != macErr) {
- CKMK_MACERR("Import Private Key", macErr);
- *pError = CKR_GENERAL_ERROR;
- goto loser;
- }
-
- *pError = ckmk_FindImportedKey(targetKeychain,
- CSSM_DL_DB_RECORD_PRIVATE_KEY,
- &itemRef);
- if (CKR_OK != *pError) {
-#ifdef DEBUG
- fprintf(stderr, "couldn't find key in keychain \n");
-#endif
- goto loser;
- }
-
- /* set the CKA_ID and the CKA_LABEL */
- error = nss_ckmk_GetAttribute(CKA_ID, pTemplate,
- ulAttributeCount, &keyID);
- if (CKR_OK == error) {
- error = ckmk_updateAttribute(itemRef, kSecKeyLabel,
- keyID.data, keyID.size, "Modify Key ID");
-#ifdef DEBUG
- itemdump("key id: ", keyID.data, keyID.size, error);
-#endif
- }
- nickname = nss_ckmk_GetStringAttribute(CKA_LABEL, pTemplate,
- ulAttributeCount, &error);
- if (nickname) {
- ckmk_updateAttribute(itemRef, kSecKeyPrintName, nickname,
- strlen(nickname) + 1, "Modify Key Label");
- } else {
-#define DEFAULT_NICKNAME "NSS Imported Key"
- ckmk_updateAttribute(itemRef, kSecKeyPrintName, DEFAULT_NICKNAME,
- sizeof(DEFAULT_NICKNAME), "Modify Key Label");
- }
-
- io = nss_ckmk_NewInternalObject(CKO_PRIVATE_KEY, itemRef,
- CSSM_DL_DB_RECORD_PRIVATE_KEY, pError);
- if ((ckmkInternalObject *)NULL == io) {
- CFRelease(itemRef);
- }
-
- return io;
-
-loser:
- /* free the key blob */
- if (keyBlob.data) {
- nss_ZFreeIf(keyBlob.data);
- }
- if (0 != targetKeychain) {
- CFRelease(targetKeychain);
- }
- if (0 != dataRef) {
- CFRelease(dataRef);
- }
- return io;
-}
-
-NSS_EXTERN NSSCKMDObject *
-nss_ckmk_CreateObject(
- NSSCKFWSession *fwSession,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError)
-{
- CK_OBJECT_CLASS objClass;
- ckmkInternalObject *io = NULL;
- CK_BBOOL isToken;
-
- /*
- * only create token objects
- */
- isToken = nss_ckmk_GetBoolAttribute(CKA_TOKEN, pTemplate,
- ulAttributeCount, CK_FALSE);
- if (!isToken) {
- *pError = CKR_ATTRIBUTE_VALUE_INVALID;
- return (NSSCKMDObject *)NULL;
- }
-
- /*
- * only create keys and certs.
- */
- objClass = nss_ckmk_GetULongAttribute(CKA_CLASS, pTemplate,
- ulAttributeCount, pError);
- if (CKR_OK != *pError) {
- return (NSSCKMDObject *)NULL;
- }
-#ifdef notdef
- if (objClass == CKO_PUBLIC_KEY) {
- return CKR_OK; /* fake public key creation, happens as a side effect of
- * private key creation */
- }
-#endif
- if (objClass == CKO_CERTIFICATE) {
- io = nss_ckmk_CreateCertificate(fwSession, pTemplate,
- ulAttributeCount, pError);
- } else if (objClass == CKO_PRIVATE_KEY) {
- io = nss_ckmk_CreatePrivateKey(fwSession, pTemplate,
- ulAttributeCount, pError);
- } else {
- *pError = CKR_ATTRIBUTE_VALUE_INVALID;
- }
-
- if ((ckmkInternalObject *)NULL == io) {
- return (NSSCKMDObject *)NULL;
- }
- return nss_ckmk_CreateMDObject(NULL, io, pError);
-}
diff --git a/security/nss/lib/ckfw/nssmkey/mrsa.c b/security/nss/lib/ckfw/nssmkey/mrsa.c
deleted file mode 100644
index 00175b47a8..0000000000
--- a/security/nss/lib/ckfw/nssmkey/mrsa.c
+++ /dev/null
@@ -1,479 +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 "ckmk.h"
-
-/* Sigh, For all the talk about 'ease of use', apple has hidden the interfaces
- * needed to be able to truly use CSSM. These came from their modification
- * to NSS's S/MIME code. The following two functions currently are not
- * part of the SecKey.h interface.
- */
-OSStatus
-SecKeyGetCredentials(
- SecKeyRef keyRef,
- CSSM_ACL_AUTHORIZATION_TAG authTag,
- int type,
- const CSSM_ACCESS_CREDENTIALS **creds);
-
-/* this function could be implemented using 'SecKeychainItemCopyKeychain' and
- * 'SecKeychainGetCSPHandle' */
-OSStatus
-SecKeyGetCSPHandle(
- SecKeyRef keyRef,
- CSSM_CSP_HANDLE *cspHandle);
-
-typedef struct ckmkInternalCryptoOperationRSAPrivStr
- ckmkInternalCryptoOperationRSAPriv;
-struct ckmkInternalCryptoOperationRSAPrivStr {
- NSSCKMDCryptoOperation mdOperation;
- NSSCKMDMechanism *mdMechanism;
- ckmkInternalObject *iKey;
- NSSItem *buffer;
- CSSM_CC_HANDLE cssmContext;
-};
-
-typedef enum {
- CKMK_DECRYPT,
- CKMK_SIGN
-} ckmkRSAOpType;
-
-/*
- * ckmk_mdCryptoOperationRSAPriv_Create
- */
-static NSSCKMDCryptoOperation *
-ckmk_mdCryptoOperationRSAPriv_Create(
- const NSSCKMDCryptoOperation *proto,
- NSSCKMDMechanism *mdMechanism,
- NSSCKMDObject *mdKey,
- ckmkRSAOpType type,
- CK_RV *pError)
-{
- ckmkInternalObject *iKey = (ckmkInternalObject *)mdKey->etc;
- const NSSItem *classItem = nss_ckmk_FetchAttribute(iKey, CKA_CLASS, pError);
- const NSSItem *keyType = nss_ckmk_FetchAttribute(iKey, CKA_KEY_TYPE, pError);
- ckmkInternalCryptoOperationRSAPriv *iOperation;
- SecKeyRef privateKey;
- OSStatus macErr;
- CSSM_RETURN cssmErr;
- const CSSM_KEY *cssmKey;
- CSSM_CSP_HANDLE cspHandle;
- const CSSM_ACCESS_CREDENTIALS *creds = NULL;
- CSSM_CC_HANDLE cssmContext;
- CSSM_ACL_AUTHORIZATION_TAG authType;
-
- /* make sure we have the right objects */
- if (((const NSSItem *)NULL == classItem) ||
- (sizeof(CK_OBJECT_CLASS) != classItem->size) ||
- (CKO_PRIVATE_KEY != *(CK_OBJECT_CLASS *)classItem->data) ||
- ((const NSSItem *)NULL == keyType) ||
- (sizeof(CK_KEY_TYPE) != keyType->size) ||
- (CKK_RSA != *(CK_KEY_TYPE *)keyType->data)) {
- *pError = CKR_KEY_TYPE_INCONSISTENT;
- return (NSSCKMDCryptoOperation *)NULL;
- }
-
- privateKey = (SecKeyRef)iKey->u.item.itemRef;
- macErr = SecKeyGetCSSMKey(privateKey, &cssmKey);
- if (noErr != macErr) {
- CKMK_MACERR("Getting CSSM Key", macErr);
- *pError = CKR_KEY_HANDLE_INVALID;
- return (NSSCKMDCryptoOperation *)NULL;
- }
- macErr = SecKeyGetCSPHandle(privateKey, &cspHandle);
- if (noErr != macErr) {
- CKMK_MACERR("Getting CSP for Key", macErr);
- *pError = CKR_KEY_HANDLE_INVALID;
- return (NSSCKMDCryptoOperation *)NULL;
- }
- switch (type) {
- case CKMK_DECRYPT:
- authType = CSSM_ACL_AUTHORIZATION_DECRYPT;
- break;
- case CKMK_SIGN:
- authType = CSSM_ACL_AUTHORIZATION_SIGN;
- break;
- default:
- *pError = CKR_GENERAL_ERROR;
-#ifdef DEBUG
- fprintf(stderr, "RSAPriv_Create: bad type = %d\n", type);
-#endif
- return (NSSCKMDCryptoOperation *)NULL;
- }
-
- macErr = SecKeyGetCredentials(privateKey, authType, 0, &creds);
- if (noErr != macErr) {
- CKMK_MACERR("Getting Credentials for Key", macErr);
- *pError = CKR_KEY_HANDLE_INVALID;
- return (NSSCKMDCryptoOperation *)NULL;
- }
-
- switch (type) {
- case CKMK_DECRYPT:
- cssmErr = CSSM_CSP_CreateAsymmetricContext(cspHandle, CSSM_ALGID_RSA,
- creds, cssmKey, CSSM_PADDING_PKCS1, &cssmContext);
- break;
- case CKMK_SIGN:
- cssmErr = CSSM_CSP_CreateSignatureContext(cspHandle, CSSM_ALGID_RSA,
- creds, cssmKey, &cssmContext);
- break;
- default:
- *pError = CKR_GENERAL_ERROR;
-#ifdef DEBUG
- fprintf(stderr, "RSAPriv_Create: bad type = %d\n", type);
-#endif
- return (NSSCKMDCryptoOperation *)NULL;
- }
- if (noErr != cssmErr) {
- CKMK_MACERR("Getting Context for Key", cssmErr);
- *pError = CKR_GENERAL_ERROR;
- return (NSSCKMDCryptoOperation *)NULL;
- }
-
- iOperation = nss_ZNEW(NULL, ckmkInternalCryptoOperationRSAPriv);
- if ((ckmkInternalCryptoOperationRSAPriv *)NULL == iOperation) {
- *pError = CKR_HOST_MEMORY;
- return (NSSCKMDCryptoOperation *)NULL;
- }
- iOperation->mdMechanism = mdMechanism;
- iOperation->iKey = iKey;
- iOperation->cssmContext = cssmContext;
-
- nsslibc_memcpy(&iOperation->mdOperation,
- proto, sizeof(NSSCKMDCryptoOperation));
- iOperation->mdOperation.etc = iOperation;
-
- return &iOperation->mdOperation;
-}
-
-static void
-ckmk_mdCryptoOperationRSAPriv_Destroy(
- NSSCKMDCryptoOperation *mdOperation,
- NSSCKFWCryptoOperation *fwOperation,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- ckmkInternalCryptoOperationRSAPriv *iOperation =
- (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc;
-
- if (iOperation->buffer) {
- nssItem_Destroy(iOperation->buffer);
- }
- if (iOperation->cssmContext) {
- CSSM_DeleteContext(iOperation->cssmContext);
- }
- nss_ZFreeIf(iOperation);
- return;
-}
-
-static CK_ULONG
-ckmk_mdCryptoOperationRSA_GetFinalLength(
- NSSCKMDCryptoOperation *mdOperation,
- NSSCKFWCryptoOperation *fwOperation,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- ckmkInternalCryptoOperationRSAPriv *iOperation =
- (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc;
- const NSSItem *modulus =
- nss_ckmk_FetchAttribute(iOperation->iKey, CKA_MODULUS, pError);
-
- return modulus->size;
-}
-
-/*
- * ckmk_mdCryptoOperationRSADecrypt_GetOperationLength
- * we won't know the length until we actually decrypt the
- * input block. Since we go to all the work to decrypt the
- * the block, we'll save if for when the block is asked for
- */
-static CK_ULONG
-ckmk_mdCryptoOperationRSADecrypt_GetOperationLength(
- NSSCKMDCryptoOperation *mdOperation,
- NSSCKFWCryptoOperation *fwOperation,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- const NSSItem *input,
- CK_RV *pError)
-{
- ckmkInternalCryptoOperationRSAPriv *iOperation =
- (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc;
- CSSM_DATA cssmInput;
- CSSM_DATA cssmOutput = { 0, NULL };
- PRUint32 bytesDecrypted;
- CSSM_DATA remainder = { 0, NULL };
- NSSItem output;
- CSSM_RETURN cssmErr;
-
- if (iOperation->buffer) {
- return iOperation->buffer->size;
- }
-
- cssmInput.Data = input->data;
- cssmInput.Length = input->size;
-
- cssmErr = CSSM_DecryptData(iOperation->cssmContext,
- &cssmInput, 1, &cssmOutput, 1,
- &bytesDecrypted, &remainder);
- if (CSSM_OK != cssmErr) {
- CKMK_MACERR("Decrypt Failed", cssmErr);
- *pError = CKR_DATA_INVALID;
- return 0;
- }
- /* we didn't suppy any buffers, so it should all be in remainder */
- output.data = nss_ZNEWARRAY(NULL, char, bytesDecrypted + remainder.Length);
- if (NULL == output.data) {
- free(cssmOutput.Data);
- free(remainder.Data);
- *pError = CKR_HOST_MEMORY;
- return 0;
- }
- output.size = bytesDecrypted + remainder.Length;
-
- if (0 != bytesDecrypted) {
- nsslibc_memcpy(output.data, cssmOutput.Data, bytesDecrypted);
- free(cssmOutput.Data);
- }
- if (0 != remainder.Length) {
- nsslibc_memcpy(((char *)output.data) + bytesDecrypted,
- remainder.Data, remainder.Length);
- free(remainder.Data);
- }
-
- iOperation->buffer = nssItem_Duplicate(&output, NULL, NULL);
- nss_ZFreeIf(output.data);
- if ((NSSItem *)NULL == iOperation->buffer) {
- *pError = CKR_HOST_MEMORY;
- return 0;
- }
-
- return iOperation->buffer->size;
-}
-
-/*
- * ckmk_mdCryptoOperationRSADecrypt_UpdateFinal
- *
- * NOTE: ckmk_mdCryptoOperationRSADecrypt_GetOperationLength is presumed to
- * have been called previously.
- */
-static CK_RV
-ckmk_mdCryptoOperationRSADecrypt_UpdateFinal(
- NSSCKMDCryptoOperation *mdOperation,
- NSSCKFWCryptoOperation *fwOperation,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- const NSSItem *input,
- NSSItem *output)
-{
- ckmkInternalCryptoOperationRSAPriv *iOperation =
- (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc;
- NSSItem *buffer = iOperation->buffer;
-
- if ((NSSItem *)NULL == buffer) {
- return CKR_GENERAL_ERROR;
- }
- nsslibc_memcpy(output->data, buffer->data, buffer->size);
- output->size = buffer->size;
- return CKR_OK;
-}
-
-/*
- * ckmk_mdCryptoOperationRSASign_UpdateFinal
- *
- */
-static CK_RV
-ckmk_mdCryptoOperationRSASign_UpdateFinal(
- NSSCKMDCryptoOperation *mdOperation,
- NSSCKFWCryptoOperation *fwOperation,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- const NSSItem *input,
- NSSItem *output)
-{
- ckmkInternalCryptoOperationRSAPriv *iOperation =
- (ckmkInternalCryptoOperationRSAPriv *)mdOperation->etc;
- CSSM_DATA cssmInput;
- CSSM_DATA cssmOutput = { 0, NULL };
- CSSM_RETURN cssmErr;
-
- cssmInput.Data = input->data;
- cssmInput.Length = input->size;
-
- cssmErr = CSSM_SignData(iOperation->cssmContext, &cssmInput, 1,
- CSSM_ALGID_NONE, &cssmOutput);
- if (CSSM_OK != cssmErr) {
- CKMK_MACERR("Signed Failed", cssmErr);
- return CKR_FUNCTION_FAILED;
- }
- if (cssmOutput.Length > output->size) {
- free(cssmOutput.Data);
- return CKR_BUFFER_TOO_SMALL;
- }
- nsslibc_memcpy(output->data, cssmOutput.Data, cssmOutput.Length);
- free(cssmOutput.Data);
- output->size = cssmOutput.Length;
-
- return CKR_OK;
-}
-
-NSS_IMPLEMENT_DATA const NSSCKMDCryptoOperation
- ckmk_mdCryptoOperationRSADecrypt_proto = {
- NULL, /* etc */
- ckmk_mdCryptoOperationRSAPriv_Destroy,
- NULL, /* GetFinalLengh - not needed for one shot Decrypt/Encrypt */
- ckmk_mdCryptoOperationRSADecrypt_GetOperationLength,
- NULL, /* Final - not needed for one shot operation */
- NULL, /* Update - not needed for one shot operation */
- NULL, /* DigetUpdate - not needed for one shot operation */
- ckmk_mdCryptoOperationRSADecrypt_UpdateFinal,
- NULL, /* UpdateCombo - not needed for one shot operation */
- NULL, /* DigetKey - not needed for one shot operation */
- (void *)NULL /* null terminator */
- };
-
-NSS_IMPLEMENT_DATA const NSSCKMDCryptoOperation
- ckmk_mdCryptoOperationRSASign_proto = {
- NULL, /* etc */
- ckmk_mdCryptoOperationRSAPriv_Destroy,
- ckmk_mdCryptoOperationRSA_GetFinalLength,
- NULL, /* GetOperationLengh - not needed for one shot Sign/Verify */
- NULL, /* Final - not needed for one shot operation */
- NULL, /* Update - not needed for one shot operation */
- NULL, /* DigetUpdate - not needed for one shot operation */
- ckmk_mdCryptoOperationRSASign_UpdateFinal,
- NULL, /* UpdateCombo - not needed for one shot operation */
- NULL, /* DigetKey - not needed for one shot operation */
- (void *)NULL /* null terminator */
- };
-
-/********** NSSCKMDMechansim functions ***********************/
-/*
- * ckmk_mdMechanismRSA_Destroy
- */
-static void
-ckmk_mdMechanismRSA_Destroy(
- NSSCKMDMechanism *mdMechanism,
- NSSCKFWMechanism *fwMechanism,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- nss_ZFreeIf(fwMechanism);
-}
-
-/*
- * ckmk_mdMechanismRSA_GetMinKeySize
- */
-static CK_ULONG
-ckmk_mdMechanismRSA_GetMinKeySize(
- NSSCKMDMechanism *mdMechanism,
- NSSCKFWMechanism *fwMechanism,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return 384;
-}
-
-/*
- * ckmk_mdMechanismRSA_GetMaxKeySize
- */
-static CK_ULONG
-ckmk_mdMechanismRSA_GetMaxKeySize(
- NSSCKMDMechanism *mdMechanism,
- NSSCKFWMechanism *fwMechanism,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return 16384;
-}
-
-/*
- * ckmk_mdMechanismRSA_DecryptInit
- */
-static NSSCKMDCryptoOperation *
-ckmk_mdMechanismRSA_DecryptInit(
- NSSCKMDMechanism *mdMechanism,
- NSSCKFWMechanism *fwMechanism,
- CK_MECHANISM *pMechanism,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- NSSCKMDObject *mdKey,
- NSSCKFWObject *fwKey,
- CK_RV *pError)
-{
- return ckmk_mdCryptoOperationRSAPriv_Create(
- &ckmk_mdCryptoOperationRSADecrypt_proto,
- mdMechanism, mdKey, CKMK_DECRYPT, pError);
-}
-
-/*
- * ckmk_mdMechanismRSA_SignInit
- */
-static NSSCKMDCryptoOperation *
-ckmk_mdMechanismRSA_SignInit(
- NSSCKMDMechanism *mdMechanism,
- NSSCKFWMechanism *fwMechanism,
- CK_MECHANISM *pMechanism,
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- NSSCKMDObject *mdKey,
- NSSCKFWObject *fwKey,
- CK_RV *pError)
-{
- return ckmk_mdCryptoOperationRSAPriv_Create(
- &ckmk_mdCryptoOperationRSASign_proto,
- mdMechanism, mdKey, CKMK_SIGN, pError);
-}
-
-NSS_IMPLEMENT_DATA const NSSCKMDMechanism
- nss_ckmk_mdMechanismRSA = {
- (void *)NULL, /* etc */
- ckmk_mdMechanismRSA_Destroy,
- ckmk_mdMechanismRSA_GetMinKeySize,
- ckmk_mdMechanismRSA_GetMaxKeySize,
- NULL, /* GetInHardware - default false */
- NULL, /* EncryptInit - default errs */
- ckmk_mdMechanismRSA_DecryptInit,
- NULL, /* DigestInit - default errs*/
- ckmk_mdMechanismRSA_SignInit,
- NULL, /* VerifyInit - default errs */
- ckmk_mdMechanismRSA_SignInit, /* SignRecoverInit */
- NULL, /* VerifyRecoverInit - default errs */
- NULL, /* GenerateKey - default errs */
- NULL, /* GenerateKeyPair - default errs */
- NULL, /* GetWrapKeyLength - default errs */
- NULL, /* WrapKey - default errs */
- NULL, /* UnwrapKey - default errs */
- NULL, /* DeriveKey - default errs */
- (void *)NULL /* null terminator */
- };
diff --git a/security/nss/lib/ckfw/nssmkey/msession.c b/security/nss/lib/ckfw/nssmkey/msession.c
deleted file mode 100644
index e6a29244a1..0000000000
--- a/security/nss/lib/ckfw/nssmkey/msession.c
+++ /dev/null
@@ -1,87 +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 "ckmk.h"
-
-/*
- * nssmkey/msession.c
- *
- * This file implements the NSSCKMDSession object for the
- * "nssmkey" cryptoki module.
- */
-
-static NSSCKMDFindObjects *
-ckmk_mdSession_FindObjectsInit(
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError)
-{
- return nss_ckmk_FindObjectsInit(fwSession, pTemplate, ulAttributeCount, pError);
-}
-
-static NSSCKMDObject *
-ckmk_mdSession_CreateObject(
- NSSCKMDSession *mdSession,
- NSSCKFWSession *fwSession,
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- NSSArena *arena,
- CK_ATTRIBUTE_PTR pTemplate,
- CK_ULONG ulAttributeCount,
- CK_RV *pError)
-{
- return nss_ckmk_CreateObject(fwSession, pTemplate, ulAttributeCount, pError);
-}
-
-NSS_IMPLEMENT NSSCKMDSession *
-nss_ckmk_CreateSession(
- NSSCKFWSession *fwSession,
- CK_RV *pError)
-{
- NSSArena *arena;
- NSSCKMDSession *rv;
-
- arena = NSSCKFWSession_GetArena(fwSession, pError);
- if ((NSSArena *)NULL == arena) {
- return (NSSCKMDSession *)NULL;
- }
-
- rv = nss_ZNEW(arena, NSSCKMDSession);
- if ((NSSCKMDSession *)NULL == rv) {
- *pError = CKR_HOST_MEMORY;
- return (NSSCKMDSession *)NULL;
- }
-
- /*
- * rv was zeroed when allocated, so we only
- * need to set the non-zero members.
- */
-
- rv->etc = (void *)fwSession;
- /* rv->Close */
- /* rv->GetDeviceError */
- /* rv->Login */
- /* rv->Logout */
- /* rv->InitPIN */
- /* rv->SetPIN */
- /* rv->GetOperationStateLen */
- /* rv->GetOperationState */
- /* rv->SetOperationState */
- rv->CreateObject = ckmk_mdSession_CreateObject;
- /* rv->CopyObject */
- rv->FindObjectsInit = ckmk_mdSession_FindObjectsInit;
- /* rv->SeedRandom */
- /* rv->GetRandom */
- /* rv->null */
-
- return rv;
-}
diff --git a/security/nss/lib/ckfw/nssmkey/mslot.c b/security/nss/lib/ckfw/nssmkey/mslot.c
deleted file mode 100644
index b2747ff7b2..0000000000
--- a/security/nss/lib/ckfw/nssmkey/mslot.c
+++ /dev/null
@@ -1,81 +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 "ckmk.h"
-
-/*
- * nssmkey/mslot.c
- *
- * This file implements the NSSCKMDSlot object for the
- * "nssmkey" cryptoki module.
- */
-
-static NSSUTF8 *
-ckmk_mdSlot_GetSlotDescription(
- NSSCKMDSlot *mdSlot,
- NSSCKFWSlot *fwSlot,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_SlotDescription;
-}
-
-static NSSUTF8 *
-ckmk_mdSlot_GetManufacturerID(
- NSSCKMDSlot *mdSlot,
- NSSCKFWSlot *fwSlot,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_ManufacturerID;
-}
-
-static CK_VERSION
-ckmk_mdSlot_GetHardwareVersion(
- NSSCKMDSlot *mdSlot,
- NSSCKFWSlot *fwSlot,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return nss_ckmk_HardwareVersion;
-}
-
-static CK_VERSION
-ckmk_mdSlot_GetFirmwareVersion(
- NSSCKMDSlot *mdSlot,
- NSSCKFWSlot *fwSlot,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return nss_ckmk_FirmwareVersion;
-}
-
-static NSSCKMDToken *
-ckmk_mdSlot_GetToken(
- NSSCKMDSlot *mdSlot,
- NSSCKFWSlot *fwSlot,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSCKMDToken *)&nss_ckmk_mdToken;
-}
-
-NSS_IMPLEMENT_DATA const NSSCKMDSlot
- nss_ckmk_mdSlot = {
- (void *)NULL, /* etc */
- NULL, /* Initialize */
- NULL, /* Destroy */
- ckmk_mdSlot_GetSlotDescription,
- ckmk_mdSlot_GetManufacturerID,
- NULL, /* GetTokenPresent -- defaults to true */
- NULL, /* GetRemovableDevice -- defaults to false */
- NULL, /* GetHardwareSlot -- defaults to false */
- ckmk_mdSlot_GetHardwareVersion,
- ckmk_mdSlot_GetFirmwareVersion,
- ckmk_mdSlot_GetToken,
- (void *)NULL /* null terminator */
- };
diff --git a/security/nss/lib/ckfw/nssmkey/mtoken.c b/security/nss/lib/ckfw/nssmkey/mtoken.c
deleted file mode 100644
index e18d612405..0000000000
--- a/security/nss/lib/ckfw/nssmkey/mtoken.c
+++ /dev/null
@@ -1,184 +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 "ckmk.h"
-
-/*
- * nssmkey/mtoken.c
- *
- * This file implements the NSSCKMDToken object for the
- * "nssmkey" cryptoki module.
- */
-
-static NSSUTF8 *
-ckmk_mdToken_GetLabel(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_TokenLabel;
-}
-
-static NSSUTF8 *
-ckmk_mdToken_GetManufacturerID(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_ManufacturerID;
-}
-
-static NSSUTF8 *
-ckmk_mdToken_GetModel(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_TokenModel;
-}
-
-static NSSUTF8 *
-ckmk_mdToken_GetSerialNumber(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_RV *pError)
-{
- return (NSSUTF8 *)nss_ckmk_TokenSerialNumber;
-}
-
-static CK_BBOOL
-ckmk_mdToken_GetIsWriteProtected(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return CK_FALSE;
-}
-
-/* fake out Mozilla so we don't try to initialize the token */
-static CK_BBOOL
-ckmk_mdToken_GetUserPinInitialized(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return CK_TRUE;
-}
-
-static CK_VERSION
-ckmk_mdToken_GetHardwareVersion(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return nss_ckmk_HardwareVersion;
-}
-
-static CK_VERSION
-ckmk_mdToken_GetFirmwareVersion(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return nss_ckmk_FirmwareVersion;
-}
-
-static NSSCKMDSession *
-ckmk_mdToken_OpenSession(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- NSSCKFWSession *fwSession,
- CK_BBOOL rw,
- CK_RV *pError)
-{
- return nss_ckmk_CreateSession(fwSession, pError);
-}
-
-static CK_ULONG
-ckmk_mdToken_GetMechanismCount(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance)
-{
- return (CK_ULONG)1;
-}
-
-static CK_RV
-ckmk_mdToken_GetMechanismTypes(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_MECHANISM_TYPE types[])
-{
- types[0] = CKM_RSA_PKCS;
- return CKR_OK;
-}
-
-static NSSCKMDMechanism *
-ckmk_mdToken_GetMechanism(
- NSSCKMDToken *mdToken,
- NSSCKFWToken *fwToken,
- NSSCKMDInstance *mdInstance,
- NSSCKFWInstance *fwInstance,
- CK_MECHANISM_TYPE which,
- CK_RV *pError)
-{
- if (which != CKM_RSA_PKCS) {
- *pError = CKR_MECHANISM_INVALID;
- return (NSSCKMDMechanism *)NULL;
- }
- return (NSSCKMDMechanism *)&nss_ckmk_mdMechanismRSA;
-}
-
-NSS_IMPLEMENT_DATA const NSSCKMDToken
- nss_ckmk_mdToken = {
- (void *)NULL, /* etc */
- NULL, /* Setup */
- NULL, /* Invalidate */
- NULL, /* InitToken -- default errs */
- ckmk_mdToken_GetLabel,
- ckmk_mdToken_GetManufacturerID,
- ckmk_mdToken_GetModel,
- ckmk_mdToken_GetSerialNumber,
- NULL, /* GetHasRNG -- default is false */
- ckmk_mdToken_GetIsWriteProtected,
- NULL, /* GetLoginRequired -- default is false */
- ckmk_mdToken_GetUserPinInitialized,
- NULL, /* GetRestoreKeyNotNeeded -- irrelevant */
- NULL, /* GetHasClockOnToken -- default is false */
- NULL, /* GetHasProtectedAuthenticationPath -- default is false */
- NULL, /* GetSupportsDualCryptoOperations -- default is false */
- NULL, /* GetMaxSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
- NULL, /* GetMaxRwSessionCount -- default is CK_UNAVAILABLE_INFORMATION */
- NULL, /* GetMaxPinLen -- irrelevant */
- NULL, /* GetMinPinLen -- irrelevant */
- NULL, /* GetTotalPublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
- NULL, /* GetFreePublicMemory -- default is CK_UNAVAILABLE_INFORMATION */
- NULL, /* GetTotalPrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
- NULL, /* GetFreePrivateMemory -- default is CK_UNAVAILABLE_INFORMATION */
- ckmk_mdToken_GetHardwareVersion,
- ckmk_mdToken_GetFirmwareVersion,
- NULL, /* GetUTCTime -- no clock */
- ckmk_mdToken_OpenSession,
- ckmk_mdToken_GetMechanismCount,
- ckmk_mdToken_GetMechanismTypes,
- ckmk_mdToken_GetMechanism,
- (void *)NULL /* null terminator */
- };
diff --git a/security/nss/lib/ckfw/nssmkey/nssmkey.def b/security/nss/lib/ckfw/nssmkey/nssmkey.def
deleted file mode 100644
index 45d307ff01..0000000000
--- a/security/nss/lib/ckfw/nssmkey/nssmkey.def
+++ /dev/null
@@ -1,26 +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/.
-;+#
-;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS
-;+# 1. For all unix platforms, the string ";-" means "remove this line"
-;+# 2. For all unix platforms, the string " DATA " will be removed from any
-;+# line on which it occurs.
-;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
-;+# On AIX, lines containing ";+" will be removed.
-;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
-;+# 5. For all unix platforms, after the above processing has taken place,
-;+# all characters after the first ";" on the line will be removed.
-;+# And for AIX, the first ";" will also be removed.
-;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
-;+# directives are hidden behind ";", ";+", and ";-"
-;+
-;+NSSMKEY_3.0 { # First release of nssmkey
-;+ global:
-LIBRARY nssmkey ;-
-EXPORTS ;-
-C_GetFunctionList;
-;+ local:
-;+*;
-;+};
diff --git a/security/nss/lib/ckfw/nssmkey/nssmkey.h b/security/nss/lib/ckfw/nssmkey/nssmkey.h
deleted file mode 100644
index ba58233e62..0000000000
--- a/security/nss/lib/ckfw/nssmkey/nssmkey.h
+++ /dev/null
@@ -1,41 +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 NSSMKEY_H
-#define NSSMKEY_H
-
-/*
- * NSS CKMK Version numbers.
- *
- * These are the version numbers for the nssmkey module packaged with
- * this release on NSS. To determine the version numbers of the builtin
- * module you are using, use the appropriate PKCS #11 calls.
- *
- * These version numbers detail changes to the PKCS #11 interface. They map
- * to the PKCS #11 spec versions.
- */
-#define NSS_CKMK_CRYPTOKI_VERSION_MAJOR 2
-#define NSS_CKMK_CRYPTOKI_VERSION_MINOR 20
-
-/* These version numbers detail the changes
- * to the list of trusted certificates.
- *
- * NSS_CKMK_LIBRARY_VERSION_MINOR is a CK_BYTE. It's not clear
- * whether we may use its full range (0-255) or only 0-99 because
- * of the comment in the CK_VERSION type definition.
- */
-#define NSS_CKMK_LIBRARY_VERSION_MAJOR 1
-#define NSS_CKMK_LIBRARY_VERSION_MINOR 1
-#define NSS_CKMK_LIBRARY_VERSION "1.1"
-
-/* These version numbers detail the semantic changes to the ckfw engine. */
-#define NSS_CKMK_HARDWARE_VERSION_MAJOR 1
-#define NSS_CKMK_HARDWARE_VERSION_MINOR 0
-
-/* These version numbers detail the semantic changes to ckbi itself
- * (new PKCS #11 objects), etc. */
-#define NSS_CKMK_FIRMWARE_VERSION_MAJOR 1
-#define NSS_CKMK_FIRMWARE_VERSION_MINOR 0
-
-#endif /* NSSMKEY_H */
diff --git a/security/nss/lib/ckfw/nssmkey/staticobj.c b/security/nss/lib/ckfw/nssmkey/staticobj.c
deleted file mode 100644
index 5f3bb7c720..0000000000
--- a/security/nss/lib/ckfw/nssmkey/staticobj.c
+++ /dev/null
@@ -1,36 +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 CKMK_H
-#include "ckmk.h"
-#endif /* CKMK_H */
-
-static const CK_TRUST ckt_netscape_valid = CKT_NETSCAPE_VALID;
-static const CK_OBJECT_CLASS cko_certificate = CKO_CERTIFICATE;
-static const CK_TRUST ckt_netscape_trusted_delegator = CKT_NETSCAPE_TRUSTED_DELEGATOR;
-static const CK_OBJECT_CLASS cko_netscape_trust = CKO_NETSCAPE_TRUST;
-static const CK_BBOOL ck_true = CK_TRUE;
-static const CK_OBJECT_CLASS cko_data = CKO_DATA;
-static const CK_CERTIFICATE_TYPE ckc_x_509 = CKC_X_509;
-static const CK_BBOOL ck_false = CK_FALSE;
-static const CK_OBJECT_CLASS cko_netscape_builtin_root_list = CKO_NETSCAPE_BUILTIN_ROOT_LIST;
-
-/* example of a static object */
-static const CK_ATTRIBUTE_TYPE nss_ckmk_types_1[] = {
- CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL
-};
-
-static const NSSItem nss_ckmk_items_1[] = {
- { (void *)&cko_data, (PRUint32)sizeof(CK_OBJECT_CLASS) },
- { (void *)&ck_true, (PRUint32)sizeof(CK_BBOOL) },
- { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) },
- { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) },
- { (void *)"Mozilla Mac Key Ring Access", (PRUint32)28 }
-};
-
-ckmkInternalObject nss_ckmk_data[] = {
- { ckmkRaw, { { 5, nss_ckmk_types_1, nss_ckmk_items_1 } }, CKO_DATA, { NULL } },
-};
-
-const PRUint32 nss_ckmk_nObjects = 1;
diff --git a/security/nss/lib/ckfw/session.c b/security/nss/lib/ckfw/session.c
index a3119345ca..7efedf4035 100644
--- a/security/nss/lib/ckfw/session.c
+++ b/security/nss/lib/ckfw/session.c
@@ -1419,9 +1419,8 @@ nssCKFWSession_CopyObject(
/* use create object */
NSSArena *tmpArena;
CK_ATTRIBUTE_PTR newTemplate;
- CK_ULONG i, j, n, newLength, k;
+ CK_ULONG j, n, newLength, k;
CK_ATTRIBUTE_TYPE_PTR oldTypes;
- NSSCKFWObject *rv;
n = nssCKFWObject_GetAttributeCount(fwObject, pError);
if ((0 == n) && (CKR_OK != *pError)) {
diff --git a/security/nss/lib/dev/devtoken.c b/security/nss/lib/dev/devtoken.c
index 0d4c3b5a72..41ffe86da5 100644
--- a/security/nss/lib/dev/devtoken.c
+++ b/security/nss/lib/dev/devtoken.c
@@ -528,7 +528,9 @@ nssToken_ImportCertificate(
*/
NSS_CK_TEMPLATE_START(cert_tmpl, attr, ctsize);
NSS_CK_SET_ATTRIBUTE_ITEM(attr, CKA_ID, id);
- NSS_CK_SET_ATTRIBUTE_UTF8(attr, CKA_LABEL, nickname);
+ if (!rvObject->label && nickname) {
+ NSS_CK_SET_ATTRIBUTE_UTF8(attr, CKA_LABEL, nickname);
+ }
NSS_CK_TEMPLATE_FINISH(cert_tmpl, attr, ctsize);
/* reset the mutable attributes on the token */
nssCKObject_SetAttributes(rvObject->handle,
diff --git a/security/nss/lib/freebl/Makefile b/security/nss/lib/freebl/Makefile
index a4b1a86aec..bff11c7c8e 100644
--- a/security/nss/lib/freebl/Makefile
+++ b/security/nss/lib/freebl/Makefile
@@ -517,13 +517,13 @@ ifndef NSS_DISABLE_CHACHAPOLY
ifdef HAVE_INT128_SUPPORT
EXTRA_SRCS += Hacl_Poly1305_64.c
else
- EXTRA_SRCS += poly1305.c
+ EXTRA_SRCS += Hacl_Poly1305_32.c
endif
else
ifeq ($(CPU_ARCH),aarch64)
EXTRA_SRCS += Hacl_Poly1305_64.c
else
- EXTRA_SRCS += poly1305.c
+ EXTRA_SRCS += Hacl_Poly1305_32.c
endif
endif # x86_64
@@ -535,12 +535,16 @@ ifeq (,$(filter-out i386 x386 x86 x86_64 aarch64,$(CPU_ARCH)))
# All intel architectures get the 64 bit version
# With custom uint128 if necessary (faster than generic 32 bit version).
ECL_SRCS += curve25519_64.c
- VERIFIED_SRCS += Hacl_Curve25519.c FStar.c
+ VERIFIED_SRCS += Hacl_Curve25519.c
else
# All non intel architectures get the generic 32 bit implementation (slow!)
ECL_SRCS += curve25519_32.c
endif
+ifndef HAVE_INT128_SUPPORT
+ VERIFIED_SRCS += FStar.c
+endif
+
#######################################################################
# (5) Execute "global" rules. (OPTIONAL) #
#######################################################################
diff --git a/security/nss/lib/freebl/blake2b.c b/security/nss/lib/freebl/blake2b.c
index 4099c67e01..b4a0442c95 100644
--- a/security/nss/lib/freebl/blake2b.c
+++ b/security/nss/lib/freebl/blake2b.c
@@ -180,7 +180,7 @@ blake2b_Begin(BLAKE2BContext* ctx, uint8_t outlen, const uint8_t* key,
return SECSuccess;
failure:
- PORT_Memset(&ctx, 0, sizeof(ctx));
+ PORT_Memset(ctx, 0, sizeof(*ctx));
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
diff --git a/security/nss/lib/freebl/chacha20poly1305.c b/security/nss/lib/freebl/chacha20poly1305.c
index 859d05316e..302f0db9e7 100644
--- a/security/nss/lib/freebl/chacha20poly1305.c
+++ b/security/nss/lib/freebl/chacha20poly1305.c
@@ -24,36 +24,60 @@ extern void Hacl_Chacha20_Vec128_chacha20(uint8_t *output, uint8_t *plain,
extern void Hacl_Chacha20_chacha20(uint8_t *output, uint8_t *plain, uint32_t len,
uint8_t *k, uint8_t *n1, uint32_t ctr);
-/* Poly1305Do writes the Poly1305 authenticator of the given additional data
- * and ciphertext to |out|. */
#if defined(HAVE_INT128_SUPPORT) && (defined(NSS_X86_OR_X64) || defined(__aarch64__))
/* Use HACL* Poly1305 on 64-bit Intel and ARM */
#include "verified/Hacl_Poly1305_64.h"
+#define NSS_POLY1305_64 1
+#define Hacl_Poly1305_update Hacl_Poly1305_64_update
+#define Hacl_Poly1305_mk_state Hacl_Poly1305_64_mk_state
+#define Hacl_Poly1305_init Hacl_Poly1305_64_init
+#define Hacl_Poly1305_finish Hacl_Poly1305_64_finish
+typedef Hacl_Impl_Poly1305_64_State_poly1305_state Hacl_Impl_Poly1305_State_poly1305_state;
+#else
+/* All other platforms get the 32-bit poly1305 HACL* implementation. */
+#include "verified/Hacl_Poly1305_32.h"
+#define NSS_POLY1305_32 1
+#define Hacl_Poly1305_update Hacl_Poly1305_32_update
+#define Hacl_Poly1305_mk_state Hacl_Poly1305_32_mk_state
+#define Hacl_Poly1305_init Hacl_Poly1305_32_init
+#define Hacl_Poly1305_finish Hacl_Poly1305_32_finish
+typedef Hacl_Impl_Poly1305_32_State_poly1305_state Hacl_Impl_Poly1305_State_poly1305_state;
+#endif /* HAVE_INT128_SUPPORT */
static void
-Poly1305PadUpdate(Hacl_Impl_Poly1305_64_State_poly1305_state state,
+Poly1305PadUpdate(Hacl_Impl_Poly1305_State_poly1305_state state,
unsigned char *block, const unsigned char *p,
const unsigned int pLen)
{
unsigned int pRemLen = pLen % 16;
- Hacl_Poly1305_64_update(state, (uint8_t *)p, (pLen / 16));
+ Hacl_Poly1305_update(state, (uint8_t *)p, (pLen / 16));
if (pRemLen > 0) {
memcpy(block, p + (pLen - pRemLen), pRemLen);
- Hacl_Poly1305_64_update(state, block, 1);
+ Hacl_Poly1305_update(state, block, 1);
}
}
+/* Poly1305Do writes the Poly1305 authenticator of the given additional data
+ * and ciphertext to |out|. */
static void
Poly1305Do(unsigned char *out, const unsigned char *ad, unsigned int adLen,
const unsigned char *ciphertext, unsigned int ciphertextLen,
const unsigned char key[32])
{
- uint64_t tmp1[6U] = { 0U };
- Hacl_Impl_Poly1305_64_State_poly1305_state state =
- Hacl_Poly1305_64_mk_state(tmp1, tmp1 + 3);
+#ifdef NSS_POLY1305_64
+ uint64_t stateStack[6U] = { 0U };
+ size_t offset = 3;
+#elif defined NSS_POLY1305_32
+ uint32_t stateStack[10U] = { 0U };
+ size_t offset = 5;
+#else
+#error "This can't happen."
+#endif
+ Hacl_Impl_Poly1305_State_poly1305_state state =
+ Hacl_Poly1305_mk_state(stateStack, stateStack + offset);
unsigned char block[16] = { 0 };
- Hacl_Poly1305_64_init(state, (uint8_t *)key);
+ Hacl_Poly1305_init(state, (uint8_t *)key);
Poly1305PadUpdate(state, block, ad, adLen);
memset(block, 0, 16);
@@ -68,49 +92,11 @@ Poly1305Do(unsigned char *out, const unsigned char *ad, unsigned int adLen,
block[i] = j;
}
- Hacl_Poly1305_64_update(state, block, 1);
- Hacl_Poly1305_64_finish(state, out, (uint8_t *)(key + 16));
+ Hacl_Poly1305_update(state, block, 1);
+ Hacl_Poly1305_finish(state, out, (uint8_t *)(key + 16));
+#undef NSS_POLY1305_64
+#undef NSS_POLY1305_32
}
-#else
-/* All other platforms get the 32-bit poly1305 reference implementation. */
-#include "poly1305.h"
-
-static void
-Poly1305Do(unsigned char *out, const unsigned char *ad, unsigned int adLen,
- const unsigned char *ciphertext, unsigned int ciphertextLen,
- const unsigned char key[32])
-{
- poly1305_state state;
- unsigned int j;
- unsigned char lengthBytes[8];
- static const unsigned char zeros[15];
- unsigned int i;
-
- Poly1305Init(&state, key);
- Poly1305Update(&state, ad, adLen);
- if (adLen % 16 > 0) {
- Poly1305Update(&state, zeros, 16 - adLen % 16);
- }
- Poly1305Update(&state, ciphertext, ciphertextLen);
- if (ciphertextLen % 16 > 0) {
- Poly1305Update(&state, zeros, 16 - ciphertextLen % 16);
- }
- j = adLen;
- for (i = 0; i < sizeof(lengthBytes); i++) {
- lengthBytes[i] = j;
- j >>= 8;
- }
- Poly1305Update(&state, lengthBytes, sizeof(lengthBytes));
- j = ciphertextLen;
- for (i = 0; i < sizeof(lengthBytes); i++) {
- lengthBytes[i] = j;
- j >>= 8;
- }
- Poly1305Update(&state, lengthBytes, sizeof(lengthBytes));
- Poly1305Finish(&state, out);
-}
-
-#endif /* HAVE_INT128_SUPPORT */
#endif /* NSS_DISABLE_CHACHAPOLY */
SECStatus
diff --git a/security/nss/lib/freebl/dsa.c b/security/nss/lib/freebl/dsa.c
index 9324d306b1..aef353967d 100644
--- a/security/nss/lib/freebl/dsa.c
+++ b/security/nss/lib/freebl/dsa.c
@@ -16,14 +16,11 @@
#include "blapi.h"
#include "nssilock.h"
#include "secitem.h"
-#include "blapi.h"
+#include "blapit.h"
#include "mpi.h"
#include "secmpi.h"
#include "pqg.h"
-/* XXX to be replaced by define in blapit.h */
-#define NSS_FREEBL_DSA_DEFAULT_CHUNKSIZE 2048
-
/*
* FIPS 186-2 requires result from random output to be reduced mod q when
* generating random numbers for DSA.
@@ -168,7 +165,7 @@ dsa_NewKeyExtended(const PQGParams *params, const SECItem *seed,
return SECFailure;
}
/* Initialize an arena for the DSA key. */
- arena = PORT_NewArena(NSS_FREEBL_DSA_DEFAULT_CHUNKSIZE);
+ arena = PORT_NewArena(NSS_FREEBL_DEFAULT_CHUNKSIZE);
if (!arena) {
PORT_SetError(SEC_ERROR_NO_MEMORY);
return SECFailure;
@@ -213,8 +210,9 @@ cleanup:
mp_clear(&g);
mp_clear(&x);
mp_clear(&y);
- if (key)
+ if (key) {
PORT_FreeArena(key->params.arena, PR_TRUE);
+ }
if (err) {
translate_mpi_error(err);
return SECFailure;
@@ -321,6 +319,7 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest,
mp_int x, k; /* private key & pseudo-random integer */
mp_int r, s; /* tuple (r, s) is signature) */
mp_int t; /* holding tmp values */
+ mp_int ar; /* holding blinding values */
mp_err err = MP_OKAY;
SECStatus rv = SECSuccess;
unsigned int dsa_subprime_len, dsa_signature_len, offset;
@@ -364,6 +363,7 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest,
MP_DIGITS(&r) = 0;
MP_DIGITS(&s) = 0;
MP_DIGITS(&t) = 0;
+ MP_DIGITS(&ar) = 0;
CHECK_MPI_OK(mp_init(&p));
CHECK_MPI_OK(mp_init(&q));
CHECK_MPI_OK(mp_init(&g));
@@ -372,6 +372,7 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest,
CHECK_MPI_OK(mp_init(&r));
CHECK_MPI_OK(mp_init(&s));
CHECK_MPI_OK(mp_init(&t));
+ CHECK_MPI_OK(mp_init(&ar));
/*
** Convert stored PQG and private key into MPI integers.
*/
@@ -397,14 +398,28 @@ dsa_SignDigest(DSAPrivateKey *key, SECItem *signature, const SECItem *digest,
rv = SECFailure;
goto cleanup;
}
- SECITEM_TO_MPINT(t2, &t); /* t <-$ Zq */
+ SECITEM_TO_MPINT(t2, &t); /* t <-$ Zq */
+ SECITEM_FreeItem(&t2, PR_FALSE);
+ if (DSA_NewRandom(NULL, &key->params.subPrime, &t2) != SECSuccess) {
+ PORT_SetError(SEC_ERROR_NEED_RANDOM);
+ rv = SECFailure;
+ goto cleanup;
+ }
+ SECITEM_TO_MPINT(t2, &ar); /* ar <-$ Zq */
+ SECITEM_FreeItem(&t2, PR_FALSE);
+
+ /* Using mp_invmod on k directly would leak bits from k. */
+ CHECK_MPI_OK(mp_mul(&k, &ar, &k)); /* k = k * ar */
CHECK_MPI_OK(mp_mulmod(&k, &t, &q, &k)); /* k = k * t mod q */
CHECK_MPI_OK(mp_invmod(&k, &q, &k)); /* k = k**-1 mod q */
CHECK_MPI_OK(mp_mulmod(&k, &t, &q, &k)); /* k = k * t mod q */
SECITEM_TO_MPINT(localDigest, &s); /* s = HASH(M) */
- CHECK_MPI_OK(mp_mulmod(&x, &r, &q, &x)); /* x = x * r mod q */
- CHECK_MPI_OK(mp_addmod(&s, &x, &q, &s)); /* s = s + x mod q */
- CHECK_MPI_OK(mp_mulmod(&s, &k, &q, &s)); /* s = s * k mod q */
+ /* To avoid leaking secret bits here the addition is blinded. */
+ CHECK_MPI_OK(mp_mul(&x, &ar, &x)); /* x = x * ar */
+ CHECK_MPI_OK(mp_mulmod(&x, &r, &q, &x)); /* x = x * r mod q */
+ CHECK_MPI_OK(mp_mulmod(&s, &ar, &q, &t)); /* t = s * ar mod q */
+ CHECK_MPI_OK(mp_add(&t, &x, &s)); /* s = t + x */
+ CHECK_MPI_OK(mp_mulmod(&s, &k, &q, &s)); /* s = s * k mod q */
/*
** verify r != 0 and s != 0
** mentioned as optional in FIPS 186-1.
@@ -438,7 +453,7 @@ cleanup:
mp_clear(&r);
mp_clear(&s);
mp_clear(&t);
- SECITEM_FreeItem(&t2, PR_FALSE);
+ mp_clear(&ar);
if (err) {
translate_mpi_error(err);
rv = SECFailure;
diff --git a/security/nss/lib/freebl/ec.c b/security/nss/lib/freebl/ec.c
index b28815ade9..6468a10d63 100644
--- a/security/nss/lib/freebl/ec.c
+++ b/security/nss/lib/freebl/ec.c
@@ -653,6 +653,7 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature,
mp_int r, s; /* tuple (r, s) is the signature */
mp_int t; /* holding tmp values */
mp_int n;
+ mp_int ar; /* blinding value */
mp_err err = MP_OKAY;
ECParams *ecParams = NULL;
SECItem kGpoint = { siBuffer, NULL, 0 };
@@ -674,6 +675,7 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature,
MP_DIGITS(&s) = 0;
MP_DIGITS(&n) = 0;
MP_DIGITS(&t) = 0;
+ MP_DIGITS(&ar) = 0;
/* Check args */
if (!key || !signature || !digest || !kb || (kblen < 0)) {
@@ -700,6 +702,7 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature,
CHECK_MPI_OK(mp_init(&s));
CHECK_MPI_OK(mp_init(&n));
CHECK_MPI_OK(mp_init(&t));
+ CHECK_MPI_OK(mp_init(&ar));
SECITEM_TO_MPINT(ecParams->order, &n);
SECITEM_TO_MPINT(key->privateValue, &d);
@@ -815,12 +818,25 @@ ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature,
goto cleanup;
}
CHECK_MPI_OK(mp_read_unsigned_octets(&t, t2, 2 * ecParams->order.len)); /* t <-$ Zn */
- CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */
- CHECK_MPI_OK(mp_invmod(&k, &n, &k)); /* k = k**-1 mod n */
- CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */
- CHECK_MPI_OK(mp_mulmod(&d, &r, &n, &d)); /* d = d * r mod n */
- CHECK_MPI_OK(mp_addmod(&s, &d, &n, &s)); /* s = s + d mod n */
- CHECK_MPI_OK(mp_mulmod(&s, &k, &n, &s)); /* s = s * k mod n */
+ PORT_Memset(t2, 0, 2 * ecParams->order.len);
+ if (RNG_GenerateGlobalRandomBytes(t2, 2 * ecParams->order.len) != SECSuccess) {
+ PORT_SetError(SEC_ERROR_NEED_RANDOM);
+ rv = SECFailure;
+ goto cleanup;
+ }
+ CHECK_MPI_OK(mp_read_unsigned_octets(&ar, t2, 2 * ecParams->order.len)); /* ar <-$ Zn */
+
+ /* Using mp_invmod on k directly would leak bits from k. */
+ CHECK_MPI_OK(mp_mul(&k, &ar, &k)); /* k = k * ar */
+ CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */
+ CHECK_MPI_OK(mp_invmod(&k, &n, &k)); /* k = k**-1 mod n */
+ CHECK_MPI_OK(mp_mulmod(&k, &t, &n, &k)); /* k = k * t mod n */
+ /* To avoid leaking secret bits here the addition is blinded. */
+ CHECK_MPI_OK(mp_mul(&d, &ar, &t)); /* t = d * ar */
+ CHECK_MPI_OK(mp_mulmod(&t, &r, &n, &d)); /* d = t * r mod n */
+ CHECK_MPI_OK(mp_mulmod(&s, &ar, &n, &t)); /* t = s * ar mod n */
+ CHECK_MPI_OK(mp_add(&t, &d, &s)); /* s = t + d */
+ CHECK_MPI_OK(mp_mulmod(&s, &k, &n, &s)); /* s = s * k mod n */
#if EC_DEBUG
mp_todecimal(&s, mpstr);
@@ -858,6 +874,7 @@ cleanup:
mp_clear(&s);
mp_clear(&n);
mp_clear(&t);
+ mp_clear(&ar);
if (t2) {
PORT_Free(t2);
diff --git a/security/nss/lib/freebl/freebl.gyp b/security/nss/lib/freebl/freebl.gyp
index fae56f709e..004807483e 100644
--- a/security/nss/lib/freebl/freebl.gyp
+++ b/security/nss/lib/freebl/freebl.gyp
@@ -272,28 +272,15 @@
},
}],
[ 'cc_use_gnu_ld==1 and OS=="win" and target_arch=="x64"', {
+ # mingw x64
'defines': [
'MP_IS_LITTLE_ENDIAN',
- 'NSS_BEVAND_ARCFOUR',
- 'MPI_AMD64',
- 'MP_ASSEMBLY_MULTIPLY',
- 'NSS_USE_COMBA',
- 'USE_HW_AES',
- 'INTEL_GCM',
],
}],
- [ 'OS!="win"', {
- 'conditions': [
- [ 'target_arch=="x64" or target_arch=="arm64" or target_arch=="aarch64"', {
- 'defines': [
- # The Makefile does version-tests on GCC, but we're not doing that here.
- 'HAVE_INT128_SUPPORT',
- ],
- }, {
- 'defines': [
- 'KRML_NOUINT128',
- ],
- }],
+ [ 'have_int128_support==1', {
+ 'defines': [
+ # The Makefile does version-tests on GCC, but we're not doing that here.
+ 'HAVE_INT128_SUPPORT',
],
}, {
'defines': [
@@ -355,5 +342,18 @@
},
'variables': {
'module': 'nss',
+ 'conditions': [
+ [ 'OS!="win"', {
+ 'conditions': [
+ [ 'target_arch=="x64" or target_arch=="arm64" or target_arch=="aarch64"', {
+ 'have_int128_support%': 1,
+ }, {
+ 'have_int128_support%': 0,
+ }],
+ ],
+ }, {
+ 'have_int128_support%': 0,
+ }],
+ ],
}
}
diff --git a/security/nss/lib/freebl/freebl_base.gypi b/security/nss/lib/freebl/freebl_base.gypi
index ebd1018d81..1372994f4c 100644
--- a/security/nss/lib/freebl/freebl_base.gypi
+++ b/security/nss/lib/freebl/freebl_base.gypi
@@ -59,7 +59,7 @@
'sha_fast.c',
'shvfy.c',
'sysrand.c',
- 'tlsprfalg.c'
+ 'tlsprfalg.c',
],
'conditions': [
[ 'OS=="linux" or OS=="android"', {
@@ -122,6 +122,11 @@
'intel-gcm-x86-masm.asm',
],
}],
+ [ 'cc_use_gnu_ld==1', {
+ # mingw
+ 'sources': [
+ ],
+ }],
[ 'cc_is_clang!=1', {
# MSVC
'sources': [
@@ -135,7 +140,6 @@
# All intel and 64-bit ARM architectures get the 64 bit version.
'ecl/curve25519_64.c',
'verified/Hacl_Curve25519.c',
- 'verified/FStar.c',
],
}, {
'sources': [
@@ -167,7 +171,7 @@
}, {
# !Windows & !x64 & !arm64 & !aarch64
'sources': [
- 'poly1305.c',
+ 'verified/Hacl_Poly1305_32.c',
],
}],
],
@@ -176,7 +180,7 @@
}, {
# Windows
'sources': [
- 'poly1305.c',
+ 'verified/Hacl_Poly1305_32.c',
],
}],
],
@@ -215,6 +219,9 @@
}],
],
}],
+ [ 'have_int128_support==0', {
+ 'sources': [ 'verified/FStar.c' ],
+ }],
],
'ldflags': [
'-Wl,-Bsymbolic'
diff --git a/security/nss/lib/freebl/loader.c b/security/nss/lib/freebl/loader.c
index fe5e0a6680..6d200e6dd1 100644
--- a/security/nss/lib/freebl/loader.c
+++ b/security/nss/lib/freebl/loader.c
@@ -2164,12 +2164,12 @@ BLAKE2B_NewContext(void)
}
void
-BLAKE2B_DestroyContext(BLAKE2BContext *BLAKE2BContext, PRBool freeit)
+BLAKE2B_DestroyContext(BLAKE2BContext *ctx, PRBool freeit)
{
if (!vector && PR_SUCCESS != freebl_RunLoaderOnce()) {
return;
}
- (vector->p_BLAKE2B_DestroyContext)(BLAKE2BContext, freeit);
+ (vector->p_BLAKE2B_DestroyContext)(ctx, freeit);
}
SECStatus
diff --git a/security/nss/lib/freebl/mpi/mpi.c b/security/nss/lib/freebl/mpi/mpi.c
index ae404019d8..8c893fb5fa 100644
--- a/security/nss/lib/freebl/mpi/mpi.c
+++ b/security/nss/lib/freebl/mpi/mpi.c
@@ -2657,10 +2657,10 @@ mp_toradix(mp_int *mp, char *str, int radix)
/* Reverse the digits and sign indicator */
ix = 0;
while (ix < pos) {
- char tmp = str[ix];
+ char tmpc = str[ix];
str[ix] = str[pos];
- str[pos] = tmp;
+ str[pos] = tmpc;
++ix;
--pos;
}
@@ -3313,13 +3313,14 @@ s_mp_div_d(mp_int *mp, mp_digit d, mp_digit *r)
/* could check for power of 2 here, but mp_div_d does that. */
if (MP_USED(mp) == 1) {
mp_digit n = MP_DIGIT(mp, 0);
- mp_digit rem;
+ mp_digit remdig;
q = n / d;
- rem = n % d;
+ remdig = n % d;
MP_DIGIT(mp, 0) = q;
- if (r)
- *r = rem;
+ if (r) {
+ *r = remdig;
+ }
return MP_OKAY;
}
diff --git a/security/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c b/security/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c
deleted file mode 100644
index 3c803c167d..0000000000
--- a/security/nss/lib/freebl/poly1305-donna-x64-sse2-incremental-source.c
+++ /dev/null
@@ -1,881 +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/. */
-
-/* This implementation of poly1305 is by Andrew Moon
- * (https://github.com/floodyberry/poly1305-donna) and released as public
- * domain. It implements SIMD vectorization based on the algorithm described in
- * http://cr.yp.to/papers.html#neoncrypto. Unrolled to 2 powers, i.e. 64 byte
- * block size. */
-
-#include <emmintrin.h>
-#include <stdint.h>
-
-#include "poly1305.h"
-#include "blapii.h"
-
-#define ALIGN(x) __attribute__((aligned(x)))
-#define INLINE inline
-#define U8TO64_LE(m) (*(uint64_t *)(m))
-#define U8TO32_LE(m) (*(uint32_t *)(m))
-#define U64TO8_LE(m, v) (*(uint64_t *)(m)) = v
-
-typedef __m128i xmmi;
-typedef unsigned __int128 uint128_t;
-
-static const uint32_t ALIGN(16) poly1305_x64_sse2_message_mask[4] = { (1 << 26) - 1, 0, (1 << 26) - 1, 0 };
-static const uint32_t ALIGN(16) poly1305_x64_sse2_5[4] = { 5, 0, 5, 0 };
-static const uint32_t ALIGN(16) poly1305_x64_sse2_1shl128[4] = { (1 << 24), 0, (1 << 24), 0 };
-
-static uint128_t INLINE
-add128(uint128_t a, uint128_t b)
-{
- return a + b;
-}
-
-static uint128_t INLINE
-add128_64(uint128_t a, uint64_t b)
-{
- return a + b;
-}
-
-static uint128_t INLINE
-mul64x64_128(uint64_t a, uint64_t b)
-{
- return (uint128_t)a * b;
-}
-
-static uint64_t INLINE
-lo128(uint128_t a)
-{
- return (uint64_t)a;
-}
-
-static uint64_t INLINE
-shr128(uint128_t v, const int shift)
-{
- return (uint64_t)(v >> shift);
-}
-
-static uint64_t INLINE
-shr128_pair(uint64_t hi, uint64_t lo, const int shift)
-{
- return (uint64_t)((((uint128_t)hi << 64) | lo) >> shift);
-}
-
-typedef struct poly1305_power_t {
- union {
- xmmi v;
- uint64_t u[2];
- uint32_t d[4];
- } R20, R21, R22, R23, R24, S21, S22, S23, S24;
-} poly1305_power;
-
-typedef struct poly1305_state_internal_t {
- poly1305_power P[2]; /* 288 bytes, top 32 bit halves unused = 144 bytes of free storage */
- union {
- xmmi H[5]; /* 80 bytes */
- uint64_t HH[10];
- };
- /* uint64_t r0,r1,r2; [24 bytes] */
- /* uint64_t pad0,pad1; [16 bytes] */
- uint64_t started; /* 8 bytes */
- uint64_t leftover; /* 8 bytes */
- uint8_t buffer[64]; /* 64 bytes */
-} poly1305_state_internal; /* 448 bytes total + 63 bytes for alignment = 511 bytes raw */
-
-static poly1305_state_internal INLINE
- *
- poly1305_aligned_state(poly1305_state *state)
-{
- return (poly1305_state_internal *)(((uint64_t)state + 63) & ~63);
-}
-
-/* copy 0-63 bytes */
-static void INLINE NO_SANITIZE_ALIGNMENT
-poly1305_block_copy(uint8_t *dst, const uint8_t *src, size_t bytes)
-{
- size_t offset = src - dst;
- if (bytes & 32) {
- _mm_storeu_si128((xmmi *)(dst + 0), _mm_loadu_si128((xmmi *)(dst + offset + 0)));
- _mm_storeu_si128((xmmi *)(dst + 16), _mm_loadu_si128((xmmi *)(dst + offset + 16)));
- dst += 32;
- }
- if (bytes & 16) {
- _mm_storeu_si128((xmmi *)dst, _mm_loadu_si128((xmmi *)(dst + offset)));
- dst += 16;
- }
- if (bytes & 8) {
- *(uint64_t *)dst = *(uint64_t *)(dst + offset);
- dst += 8;
- }
- if (bytes & 4) {
- *(uint32_t *)dst = *(uint32_t *)(dst + offset);
- dst += 4;
- }
- if (bytes & 2) {
- *(uint16_t *)dst = *(uint16_t *)(dst + offset);
- dst += 2;
- }
- if (bytes & 1) {
- *(uint8_t *)dst = *(uint8_t *)(dst + offset);
- }
-}
-
-/* zero 0-15 bytes */
-static void INLINE
-poly1305_block_zero(uint8_t *dst, size_t bytes)
-{
- if (bytes & 8) {
- *(uint64_t *)dst = 0;
- dst += 8;
- }
- if (bytes & 4) {
- *(uint32_t *)dst = 0;
- dst += 4;
- }
- if (bytes & 2) {
- *(uint16_t *)dst = 0;
- dst += 2;
- }
- if (bytes & 1) {
- *(uint8_t *)dst = 0;
- }
-}
-
-static size_t INLINE
-poly1305_min(size_t a, size_t b)
-{
- return (a < b) ? a : b;
-}
-
-void
-Poly1305Init(poly1305_state *state, const unsigned char key[32])
-{
- poly1305_state_internal *st = poly1305_aligned_state(state);
- poly1305_power *p;
- uint64_t r0, r1, r2;
- uint64_t t0, t1;
-
- /* clamp key */
- t0 = U8TO64_LE(key + 0);
- t1 = U8TO64_LE(key + 8);
- r0 = t0 & 0xffc0fffffff;
- t0 >>= 44;
- t0 |= t1 << 20;
- r1 = t0 & 0xfffffc0ffff;
- t1 >>= 24;
- r2 = t1 & 0x00ffffffc0f;
-
- /* store r in un-used space of st->P[1] */
- p = &st->P[1];
- p->R20.d[1] = (uint32_t)(r0);
- p->R20.d[3] = (uint32_t)(r0 >> 32);
- p->R21.d[1] = (uint32_t)(r1);
- p->R21.d[3] = (uint32_t)(r1 >> 32);
- p->R22.d[1] = (uint32_t)(r2);
- p->R22.d[3] = (uint32_t)(r2 >> 32);
-
- /* store pad */
- p->R23.d[1] = U8TO32_LE(key + 16);
- p->R23.d[3] = U8TO32_LE(key + 20);
- p->R24.d[1] = U8TO32_LE(key + 24);
- p->R24.d[3] = U8TO32_LE(key + 28);
-
- /* H = 0 */
- st->H[0] = _mm_setzero_si128();
- st->H[1] = _mm_setzero_si128();
- st->H[2] = _mm_setzero_si128();
- st->H[3] = _mm_setzero_si128();
- st->H[4] = _mm_setzero_si128();
-
- st->started = 0;
- st->leftover = 0;
-}
-
-static void
-poly1305_first_block(poly1305_state_internal *st, const uint8_t *m)
-{
- const xmmi MMASK = _mm_load_si128((xmmi *)poly1305_x64_sse2_message_mask);
- const xmmi FIVE = _mm_load_si128((xmmi *)poly1305_x64_sse2_5);
- const xmmi HIBIT = _mm_load_si128((xmmi *)poly1305_x64_sse2_1shl128);
- xmmi T5, T6;
- poly1305_power *p;
- uint128_t d[3];
- uint64_t r0, r1, r2;
- uint64_t r20, r21, r22, s22;
- uint64_t pad0, pad1;
- uint64_t c;
- uint64_t i;
-
- /* pull out stored info */
- p = &st->P[1];
-
- r0 = ((uint64_t)p->R20.d[3] << 32) | (uint64_t)p->R20.d[1];
- r1 = ((uint64_t)p->R21.d[3] << 32) | (uint64_t)p->R21.d[1];
- r2 = ((uint64_t)p->R22.d[3] << 32) | (uint64_t)p->R22.d[1];
- pad0 = ((uint64_t)p->R23.d[3] << 32) | (uint64_t)p->R23.d[1];
- pad1 = ((uint64_t)p->R24.d[3] << 32) | (uint64_t)p->R24.d[1];
-
- /* compute powers r^2,r^4 */
- r20 = r0;
- r21 = r1;
- r22 = r2;
- for (i = 0; i < 2; i++) {
- s22 = r22 * (5 << 2);
-
- d[0] = add128(mul64x64_128(r20, r20), mul64x64_128(r21 * 2, s22));
- d[1] = add128(mul64x64_128(r22, s22), mul64x64_128(r20 * 2, r21));
- d[2] = add128(mul64x64_128(r21, r21), mul64x64_128(r22 * 2, r20));
-
- r20 = lo128(d[0]) & 0xfffffffffff;
- c = shr128(d[0], 44);
- d[1] = add128_64(d[1], c);
- r21 = lo128(d[1]) & 0xfffffffffff;
- c = shr128(d[1], 44);
- d[2] = add128_64(d[2], c);
- r22 = lo128(d[2]) & 0x3ffffffffff;
- c = shr128(d[2], 42);
- r20 += c * 5;
- c = (r20 >> 44);
- r20 = r20 & 0xfffffffffff;
- r21 += c;
-
- p->R20.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)(r20)&0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0));
- p->R21.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r20 >> 26) | (r21 << 18)) & 0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0));
- p->R22.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r21 >> 8)) & 0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0));
- p->R23.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r21 >> 34) | (r22 << 10)) & 0x3ffffff), _MM_SHUFFLE(1, 0, 1, 0));
- p->R24.v = _mm_shuffle_epi32(_mm_cvtsi32_si128((uint32_t)((r22 >> 16))), _MM_SHUFFLE(1, 0, 1, 0));
- p->S21.v = _mm_mul_epu32(p->R21.v, FIVE);
- p->S22.v = _mm_mul_epu32(p->R22.v, FIVE);
- p->S23.v = _mm_mul_epu32(p->R23.v, FIVE);
- p->S24.v = _mm_mul_epu32(p->R24.v, FIVE);
- p--;
- }
-
- /* put saved info back */
- p = &st->P[1];
- p->R20.d[1] = (uint32_t)(r0);
- p->R20.d[3] = (uint32_t)(r0 >> 32);
- p->R21.d[1] = (uint32_t)(r1);
- p->R21.d[3] = (uint32_t)(r1 >> 32);
- p->R22.d[1] = (uint32_t)(r2);
- p->R22.d[3] = (uint32_t)(r2 >> 32);
- p->R23.d[1] = (uint32_t)(pad0);
- p->R23.d[3] = (uint32_t)(pad0 >> 32);
- p->R24.d[1] = (uint32_t)(pad1);
- p->R24.d[3] = (uint32_t)(pad1 >> 32);
-
- /* H = [Mx,My] */
- T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 0)), _mm_loadl_epi64((xmmi *)(m + 16)));
- T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 8)), _mm_loadl_epi64((xmmi *)(m + 24)));
- st->H[0] = _mm_and_si128(MMASK, T5);
- st->H[1] = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12));
- st->H[2] = _mm_and_si128(MMASK, T5);
- st->H[3] = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- st->H[4] = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT);
-}
-
-static void
-poly1305_blocks(poly1305_state_internal *st, const uint8_t *m, size_t bytes)
-{
- const xmmi MMASK = _mm_load_si128((xmmi *)poly1305_x64_sse2_message_mask);
- const xmmi FIVE = _mm_load_si128((xmmi *)poly1305_x64_sse2_5);
- const xmmi HIBIT = _mm_load_si128((xmmi *)poly1305_x64_sse2_1shl128);
-
- poly1305_power *p;
- xmmi H0, H1, H2, H3, H4;
- xmmi T0, T1, T2, T3, T4, T5, T6;
- xmmi M0, M1, M2, M3, M4;
- xmmi C1, C2;
-
- H0 = st->H[0];
- H1 = st->H[1];
- H2 = st->H[2];
- H3 = st->H[3];
- H4 = st->H[4];
-
- while (bytes >= 64) {
- /* H *= [r^4,r^4] */
- p = &st->P[0];
- T0 = _mm_mul_epu32(H0, p->R20.v);
- T1 = _mm_mul_epu32(H0, p->R21.v);
- T2 = _mm_mul_epu32(H0, p->R22.v);
- T3 = _mm_mul_epu32(H0, p->R23.v);
- T4 = _mm_mul_epu32(H0, p->R24.v);
- T5 = _mm_mul_epu32(H1, p->S24.v);
- T6 = _mm_mul_epu32(H1, p->R20.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H2, p->S23.v);
- T6 = _mm_mul_epu32(H2, p->S24.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H3, p->S22.v);
- T6 = _mm_mul_epu32(H3, p->S23.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H4, p->S21.v);
- T6 = _mm_mul_epu32(H4, p->S22.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H1, p->R21.v);
- T6 = _mm_mul_epu32(H1, p->R22.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H2, p->R20.v);
- T6 = _mm_mul_epu32(H2, p->R21.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H3, p->S24.v);
- T6 = _mm_mul_epu32(H3, p->R20.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H4, p->S23.v);
- T6 = _mm_mul_epu32(H4, p->S24.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H1, p->R23.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H2, p->R22.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H3, p->R21.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H4, p->R20.v);
- T4 = _mm_add_epi64(T4, T5);
-
- /* H += [Mx,My]*[r^2,r^2] */
- T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 0)), _mm_loadl_epi64((xmmi *)(m + 16)));
- T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 8)), _mm_loadl_epi64((xmmi *)(m + 24)));
- M0 = _mm_and_si128(MMASK, T5);
- M1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12));
- M2 = _mm_and_si128(MMASK, T5);
- M3 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- M4 = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT);
-
- p = &st->P[1];
- T5 = _mm_mul_epu32(M0, p->R20.v);
- T6 = _mm_mul_epu32(M0, p->R21.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(M1, p->S24.v);
- T6 = _mm_mul_epu32(M1, p->R20.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(M2, p->S23.v);
- T6 = _mm_mul_epu32(M2, p->S24.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(M3, p->S22.v);
- T6 = _mm_mul_epu32(M3, p->S23.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(M4, p->S21.v);
- T6 = _mm_mul_epu32(M4, p->S22.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(M0, p->R22.v);
- T6 = _mm_mul_epu32(M0, p->R23.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(M1, p->R21.v);
- T6 = _mm_mul_epu32(M1, p->R22.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(M2, p->R20.v);
- T6 = _mm_mul_epu32(M2, p->R21.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(M3, p->S24.v);
- T6 = _mm_mul_epu32(M3, p->R20.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(M4, p->S23.v);
- T6 = _mm_mul_epu32(M4, p->S24.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(M0, p->R24.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(M1, p->R23.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(M2, p->R22.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(M3, p->R21.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(M4, p->R20.v);
- T4 = _mm_add_epi64(T4, T5);
-
- /* H += [Mx,My] */
- T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 32)), _mm_loadl_epi64((xmmi *)(m + 48)));
- T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 40)), _mm_loadl_epi64((xmmi *)(m + 56)));
- M0 = _mm_and_si128(MMASK, T5);
- M1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12));
- M2 = _mm_and_si128(MMASK, T5);
- M3 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- M4 = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT);
-
- T0 = _mm_add_epi64(T0, M0);
- T1 = _mm_add_epi64(T1, M1);
- T2 = _mm_add_epi64(T2, M2);
- T3 = _mm_add_epi64(T3, M3);
- T4 = _mm_add_epi64(T4, M4);
-
- /* reduce */
- C1 = _mm_srli_epi64(T0, 26);
- C2 = _mm_srli_epi64(T3, 26);
- T0 = _mm_and_si128(T0, MMASK);
- T3 = _mm_and_si128(T3, MMASK);
- T1 = _mm_add_epi64(T1, C1);
- T4 = _mm_add_epi64(T4, C2);
- C1 = _mm_srli_epi64(T1, 26);
- C2 = _mm_srli_epi64(T4, 26);
- T1 = _mm_and_si128(T1, MMASK);
- T4 = _mm_and_si128(T4, MMASK);
- T2 = _mm_add_epi64(T2, C1);
- T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE));
- C1 = _mm_srli_epi64(T2, 26);
- C2 = _mm_srli_epi64(T0, 26);
- T2 = _mm_and_si128(T2, MMASK);
- T0 = _mm_and_si128(T0, MMASK);
- T3 = _mm_add_epi64(T3, C1);
- T1 = _mm_add_epi64(T1, C2);
- C1 = _mm_srli_epi64(T3, 26);
- T3 = _mm_and_si128(T3, MMASK);
- T4 = _mm_add_epi64(T4, C1);
-
- /* H = (H*[r^4,r^4] + [Mx,My]*[r^2,r^2] + [Mx,My]) */
- H0 = T0;
- H1 = T1;
- H2 = T2;
- H3 = T3;
- H4 = T4;
-
- m += 64;
- bytes -= 64;
- }
-
- st->H[0] = H0;
- st->H[1] = H1;
- st->H[2] = H2;
- st->H[3] = H3;
- st->H[4] = H4;
-}
-
-static size_t
-poly1305_combine(poly1305_state_internal *st, const uint8_t *m, size_t bytes)
-{
- const xmmi MMASK = _mm_load_si128((xmmi *)poly1305_x64_sse2_message_mask);
- const xmmi HIBIT = _mm_load_si128((xmmi *)poly1305_x64_sse2_1shl128);
- const xmmi FIVE = _mm_load_si128((xmmi *)poly1305_x64_sse2_5);
-
- poly1305_power *p;
- xmmi H0, H1, H2, H3, H4;
- xmmi M0, M1, M2, M3, M4;
- xmmi T0, T1, T2, T3, T4, T5, T6;
- xmmi C1, C2;
-
- uint64_t r0, r1, r2;
- uint64_t t0, t1, t2, t3, t4;
- uint64_t c;
- size_t consumed = 0;
-
- H0 = st->H[0];
- H1 = st->H[1];
- H2 = st->H[2];
- H3 = st->H[3];
- H4 = st->H[4];
-
- /* p = [r^2,r^2] */
- p = &st->P[1];
-
- if (bytes >= 32) {
- /* H *= [r^2,r^2] */
- T0 = _mm_mul_epu32(H0, p->R20.v);
- T1 = _mm_mul_epu32(H0, p->R21.v);
- T2 = _mm_mul_epu32(H0, p->R22.v);
- T3 = _mm_mul_epu32(H0, p->R23.v);
- T4 = _mm_mul_epu32(H0, p->R24.v);
- T5 = _mm_mul_epu32(H1, p->S24.v);
- T6 = _mm_mul_epu32(H1, p->R20.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H2, p->S23.v);
- T6 = _mm_mul_epu32(H2, p->S24.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H3, p->S22.v);
- T6 = _mm_mul_epu32(H3, p->S23.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H4, p->S21.v);
- T6 = _mm_mul_epu32(H4, p->S22.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H1, p->R21.v);
- T6 = _mm_mul_epu32(H1, p->R22.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H2, p->R20.v);
- T6 = _mm_mul_epu32(H2, p->R21.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H3, p->S24.v);
- T6 = _mm_mul_epu32(H3, p->R20.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H4, p->S23.v);
- T6 = _mm_mul_epu32(H4, p->S24.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H1, p->R23.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H2, p->R22.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H3, p->R21.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H4, p->R20.v);
- T4 = _mm_add_epi64(T4, T5);
-
- /* H += [Mx,My] */
- T5 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 0)), _mm_loadl_epi64((xmmi *)(m + 16)));
- T6 = _mm_unpacklo_epi64(_mm_loadl_epi64((xmmi *)(m + 8)), _mm_loadl_epi64((xmmi *)(m + 24)));
- M0 = _mm_and_si128(MMASK, T5);
- M1 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- T5 = _mm_or_si128(_mm_srli_epi64(T5, 52), _mm_slli_epi64(T6, 12));
- M2 = _mm_and_si128(MMASK, T5);
- M3 = _mm_and_si128(MMASK, _mm_srli_epi64(T5, 26));
- M4 = _mm_or_si128(_mm_srli_epi64(T6, 40), HIBIT);
-
- T0 = _mm_add_epi64(T0, M0);
- T1 = _mm_add_epi64(T1, M1);
- T2 = _mm_add_epi64(T2, M2);
- T3 = _mm_add_epi64(T3, M3);
- T4 = _mm_add_epi64(T4, M4);
-
- /* reduce */
- C1 = _mm_srli_epi64(T0, 26);
- C2 = _mm_srli_epi64(T3, 26);
- T0 = _mm_and_si128(T0, MMASK);
- T3 = _mm_and_si128(T3, MMASK);
- T1 = _mm_add_epi64(T1, C1);
- T4 = _mm_add_epi64(T4, C2);
- C1 = _mm_srli_epi64(T1, 26);
- C2 = _mm_srli_epi64(T4, 26);
- T1 = _mm_and_si128(T1, MMASK);
- T4 = _mm_and_si128(T4, MMASK);
- T2 = _mm_add_epi64(T2, C1);
- T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE));
- C1 = _mm_srli_epi64(T2, 26);
- C2 = _mm_srli_epi64(T0, 26);
- T2 = _mm_and_si128(T2, MMASK);
- T0 = _mm_and_si128(T0, MMASK);
- T3 = _mm_add_epi64(T3, C1);
- T1 = _mm_add_epi64(T1, C2);
- C1 = _mm_srli_epi64(T3, 26);
- T3 = _mm_and_si128(T3, MMASK);
- T4 = _mm_add_epi64(T4, C1);
-
- /* H = (H*[r^2,r^2] + [Mx,My]) */
- H0 = T0;
- H1 = T1;
- H2 = T2;
- H3 = T3;
- H4 = T4;
-
- consumed = 32;
- }
-
- /* finalize, H *= [r^2,r] */
- r0 = ((uint64_t)p->R20.d[3] << 32) | (uint64_t)p->R20.d[1];
- r1 = ((uint64_t)p->R21.d[3] << 32) | (uint64_t)p->R21.d[1];
- r2 = ((uint64_t)p->R22.d[3] << 32) | (uint64_t)p->R22.d[1];
-
- p->R20.d[2] = (uint32_t)(r0)&0x3ffffff;
- p->R21.d[2] = (uint32_t)((r0 >> 26) | (r1 << 18)) & 0x3ffffff;
- p->R22.d[2] = (uint32_t)((r1 >> 8)) & 0x3ffffff;
- p->R23.d[2] = (uint32_t)((r1 >> 34) | (r2 << 10)) & 0x3ffffff;
- p->R24.d[2] = (uint32_t)((r2 >> 16));
- p->S21.d[2] = p->R21.d[2] * 5;
- p->S22.d[2] = p->R22.d[2] * 5;
- p->S23.d[2] = p->R23.d[2] * 5;
- p->S24.d[2] = p->R24.d[2] * 5;
-
- /* H *= [r^2,r] */
- T0 = _mm_mul_epu32(H0, p->R20.v);
- T1 = _mm_mul_epu32(H0, p->R21.v);
- T2 = _mm_mul_epu32(H0, p->R22.v);
- T3 = _mm_mul_epu32(H0, p->R23.v);
- T4 = _mm_mul_epu32(H0, p->R24.v);
- T5 = _mm_mul_epu32(H1, p->S24.v);
- T6 = _mm_mul_epu32(H1, p->R20.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H2, p->S23.v);
- T6 = _mm_mul_epu32(H2, p->S24.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H3, p->S22.v);
- T6 = _mm_mul_epu32(H3, p->S23.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H4, p->S21.v);
- T6 = _mm_mul_epu32(H4, p->S22.v);
- T0 = _mm_add_epi64(T0, T5);
- T1 = _mm_add_epi64(T1, T6);
- T5 = _mm_mul_epu32(H1, p->R21.v);
- T6 = _mm_mul_epu32(H1, p->R22.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H2, p->R20.v);
- T6 = _mm_mul_epu32(H2, p->R21.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H3, p->S24.v);
- T6 = _mm_mul_epu32(H3, p->R20.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H4, p->S23.v);
- T6 = _mm_mul_epu32(H4, p->S24.v);
- T2 = _mm_add_epi64(T2, T5);
- T3 = _mm_add_epi64(T3, T6);
- T5 = _mm_mul_epu32(H1, p->R23.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H2, p->R22.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H3, p->R21.v);
- T4 = _mm_add_epi64(T4, T5);
- T5 = _mm_mul_epu32(H4, p->R20.v);
- T4 = _mm_add_epi64(T4, T5);
-
- C1 = _mm_srli_epi64(T0, 26);
- C2 = _mm_srli_epi64(T3, 26);
- T0 = _mm_and_si128(T0, MMASK);
- T3 = _mm_and_si128(T3, MMASK);
- T1 = _mm_add_epi64(T1, C1);
- T4 = _mm_add_epi64(T4, C2);
- C1 = _mm_srli_epi64(T1, 26);
- C2 = _mm_srli_epi64(T4, 26);
- T1 = _mm_and_si128(T1, MMASK);
- T4 = _mm_and_si128(T4, MMASK);
- T2 = _mm_add_epi64(T2, C1);
- T0 = _mm_add_epi64(T0, _mm_mul_epu32(C2, FIVE));
- C1 = _mm_srli_epi64(T2, 26);
- C2 = _mm_srli_epi64(T0, 26);
- T2 = _mm_and_si128(T2, MMASK);
- T0 = _mm_and_si128(T0, MMASK);
- T3 = _mm_add_epi64(T3, C1);
- T1 = _mm_add_epi64(T1, C2);
- C1 = _mm_srli_epi64(T3, 26);
- T3 = _mm_and_si128(T3, MMASK);
- T4 = _mm_add_epi64(T4, C1);
-
- /* H = H[0]+H[1] */
- H0 = _mm_add_epi64(T0, _mm_srli_si128(T0, 8));
- H1 = _mm_add_epi64(T1, _mm_srli_si128(T1, 8));
- H2 = _mm_add_epi64(T2, _mm_srli_si128(T2, 8));
- H3 = _mm_add_epi64(T3, _mm_srli_si128(T3, 8));
- H4 = _mm_add_epi64(T4, _mm_srli_si128(T4, 8));
-
- t0 = _mm_cvtsi128_si32(H0);
- c = (t0 >> 26);
- t0 &= 0x3ffffff;
- t1 = _mm_cvtsi128_si32(H1) + c;
- c = (t1 >> 26);
- t1 &= 0x3ffffff;
- t2 = _mm_cvtsi128_si32(H2) + c;
- c = (t2 >> 26);
- t2 &= 0x3ffffff;
- t3 = _mm_cvtsi128_si32(H3) + c;
- c = (t3 >> 26);
- t3 &= 0x3ffffff;
- t4 = _mm_cvtsi128_si32(H4) + c;
- c = (t4 >> 26);
- t4 &= 0x3ffffff;
- t0 = t0 + (c * 5);
- c = (t0 >> 26);
- t0 &= 0x3ffffff;
- t1 = t1 + c;
-
- st->HH[0] = ((t0) | (t1 << 26)) & 0xfffffffffffull;
- st->HH[1] = ((t1 >> 18) | (t2 << 8) | (t3 << 34)) & 0xfffffffffffull;
- st->HH[2] = ((t3 >> 10) | (t4 << 16)) & 0x3ffffffffffull;
-
- return consumed;
-}
-
-void
-Poly1305Update(poly1305_state *state, const unsigned char *m, size_t bytes)
-{
- poly1305_state_internal *st = poly1305_aligned_state(state);
- size_t want;
-
- /* need at least 32 initial bytes to start the accelerated branch */
- if (!st->started) {
- if ((st->leftover == 0) && (bytes > 32)) {
- poly1305_first_block(st, m);
- m += 32;
- bytes -= 32;
- } else {
- want = poly1305_min(32 - st->leftover, bytes);
- poly1305_block_copy(st->buffer + st->leftover, m, want);
- bytes -= want;
- m += want;
- st->leftover += want;
- if ((st->leftover < 32) || (bytes == 0))
- return;
- poly1305_first_block(st, st->buffer);
- st->leftover = 0;
- }
- st->started = 1;
- }
-
- /* handle leftover */
- if (st->leftover) {
- want = poly1305_min(64 - st->leftover, bytes);
- poly1305_block_copy(st->buffer + st->leftover, m, want);
- bytes -= want;
- m += want;
- st->leftover += want;
- if (st->leftover < 64)
- return;
- poly1305_blocks(st, st->buffer, 64);
- st->leftover = 0;
- }
-
- /* process 64 byte blocks */
- if (bytes >= 64) {
- want = (bytes & ~63);
- poly1305_blocks(st, m, want);
- m += want;
- bytes -= want;
- }
-
- if (bytes) {
- poly1305_block_copy(st->buffer + st->leftover, m, bytes);
- st->leftover += bytes;
- }
-}
-
-void
-Poly1305Finish(poly1305_state *state, unsigned char mac[16])
-{
- poly1305_state_internal *st = poly1305_aligned_state(state);
- size_t leftover = st->leftover;
- uint8_t *m = st->buffer;
- uint128_t d[3];
- uint64_t h0, h1, h2;
- uint64_t t0, t1;
- uint64_t g0, g1, g2, c, nc;
- uint64_t r0, r1, r2, s1, s2;
- poly1305_power *p;
-
- if (st->started) {
- size_t consumed = poly1305_combine(st, m, leftover);
- leftover -= consumed;
- m += consumed;
- }
-
- /* st->HH will either be 0 or have the combined result */
- h0 = st->HH[0];
- h1 = st->HH[1];
- h2 = st->HH[2];
-
- p = &st->P[1];
- r0 = ((uint64_t)p->R20.d[3] << 32) | (uint64_t)p->R20.d[1];
- r1 = ((uint64_t)p->R21.d[3] << 32) | (uint64_t)p->R21.d[1];
- r2 = ((uint64_t)p->R22.d[3] << 32) | (uint64_t)p->R22.d[1];
- s1 = r1 * (5 << 2);
- s2 = r2 * (5 << 2);
-
- if (leftover < 16)
- goto poly1305_donna_atmost15bytes;
-
-poly1305_donna_atleast16bytes:
- t0 = U8TO64_LE(m + 0);
- t1 = U8TO64_LE(m + 8);
- h0 += t0 & 0xfffffffffff;
- t0 = shr128_pair(t1, t0, 44);
- h1 += t0 & 0xfffffffffff;
- h2 += (t1 >> 24) | ((uint64_t)1 << 40);
-
-poly1305_donna_mul:
- d[0] = add128(add128(mul64x64_128(h0, r0), mul64x64_128(h1, s2)), mul64x64_128(h2, s1));
- d[1] = add128(add128(mul64x64_128(h0, r1), mul64x64_128(h1, r0)), mul64x64_128(h2, s2));
- d[2] = add128(add128(mul64x64_128(h0, r2), mul64x64_128(h1, r1)), mul64x64_128(h2, r0));
- h0 = lo128(d[0]) & 0xfffffffffff;
- c = shr128(d[0], 44);
- d[1] = add128_64(d[1], c);
- h1 = lo128(d[1]) & 0xfffffffffff;
- c = shr128(d[1], 44);
- d[2] = add128_64(d[2], c);
- h2 = lo128(d[2]) & 0x3ffffffffff;
- c = shr128(d[2], 42);
- h0 += c * 5;
-
- m += 16;
- leftover -= 16;
- if (leftover >= 16)
- goto poly1305_donna_atleast16bytes;
-
-/* final bytes */
-poly1305_donna_atmost15bytes:
- if (!leftover)
- goto poly1305_donna_finish;
-
- m[leftover++] = 1;
- poly1305_block_zero(m + leftover, 16 - leftover);
- leftover = 16;
-
- t0 = U8TO64_LE(m + 0);
- t1 = U8TO64_LE(m + 8);
- h0 += t0 & 0xfffffffffff;
- t0 = shr128_pair(t1, t0, 44);
- h1 += t0 & 0xfffffffffff;
- h2 += (t1 >> 24);
-
- goto poly1305_donna_mul;
-
-poly1305_donna_finish:
- c = (h0 >> 44);
- h0 &= 0xfffffffffff;
- h1 += c;
- c = (h1 >> 44);
- h1 &= 0xfffffffffff;
- h2 += c;
- c = (h2 >> 42);
- h2 &= 0x3ffffffffff;
- h0 += c * 5;
-
- g0 = h0 + 5;
- c = (g0 >> 44);
- g0 &= 0xfffffffffff;
- g1 = h1 + c;
- c = (g1 >> 44);
- g1 &= 0xfffffffffff;
- g2 = h2 + c - ((uint64_t)1 << 42);
-
- c = (g2 >> 63) - 1;
- nc = ~c;
- h0 = (h0 & nc) | (g0 & c);
- h1 = (h1 & nc) | (g1 & c);
- h2 = (h2 & nc) | (g2 & c);
-
- /* pad */
- t0 = ((uint64_t)p->R23.d[3] << 32) | (uint64_t)p->R23.d[1];
- t1 = ((uint64_t)p->R24.d[3] << 32) | (uint64_t)p->R24.d[1];
- h0 += (t0 & 0xfffffffffff);
- c = (h0 >> 44);
- h0 &= 0xfffffffffff;
- t0 = shr128_pair(t1, t0, 44);
- h1 += (t0 & 0xfffffffffff) + c;
- c = (h1 >> 44);
- h1 &= 0xfffffffffff;
- t1 = (t1 >> 24);
- h2 += (t1) + c;
-
- U64TO8_LE(mac + 0, ((h0) | (h1 << 44)));
- U64TO8_LE(mac + 8, ((h1 >> 20) | (h2 << 24)));
-}
diff --git a/security/nss/lib/freebl/poly1305.c b/security/nss/lib/freebl/poly1305.c
deleted file mode 100644
index eb3e3cd55c..0000000000
--- a/security/nss/lib/freebl/poly1305.c
+++ /dev/null
@@ -1,314 +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/. */
-
-/* This implementation of poly1305 is by Andrew Moon
- * (https://github.com/floodyberry/poly1305-donna) and released as public
- * domain. */
-
-#include <string.h>
-
-#include "poly1305.h"
-
-#if defined(_MSC_VER) && _MSC_VER < 1600
-#include "prtypes.h"
-typedef PRUint32 uint32_t;
-typedef PRUint64 uint64_t;
-#else
-#include <stdint.h>
-#endif
-
-#if defined(NSS_X86) || defined(NSS_X64)
-/* We can assume little-endian. */
-static uint32_t
-U8TO32_LE(const unsigned char *m)
-{
- uint32_t r;
- memcpy(&r, m, sizeof(r));
- return r;
-}
-
-static void
-U32TO8_LE(unsigned char *m, uint32_t v)
-{
- memcpy(m, &v, sizeof(v));
-}
-#else
-static uint32_t
-U8TO32_LE(const unsigned char *m)
-{
- return (uint32_t)m[0] |
- (uint32_t)m[1] << 8 |
- (uint32_t)m[2] << 16 |
- (uint32_t)m[3] << 24;
-}
-
-static void
-U32TO8_LE(unsigned char *m, uint32_t v)
-{
- m[0] = v;
- m[1] = v >> 8;
- m[2] = v >> 16;
- m[3] = v >> 24;
-}
-#endif
-
-static uint64_t
-mul32x32_64(uint32_t a, uint32_t b)
-{
- return (uint64_t)a * b;
-}
-
-struct poly1305_state_st {
- uint32_t r0, r1, r2, r3, r4;
- uint32_t s1, s2, s3, s4;
- uint32_t h0, h1, h2, h3, h4;
- unsigned char buf[16];
- unsigned int buf_used;
- unsigned char key[16];
-};
-
-/* update updates |state| given some amount of input data. This function may
- * only be called with a |len| that is not a multiple of 16 at the end of the
- * data. Otherwise the input must be buffered into 16 byte blocks. */
-static void
-update(struct poly1305_state_st *state, const unsigned char *in,
- size_t len)
-{
- uint32_t t0, t1, t2, t3;
- uint64_t t[5];
- uint32_t b;
- uint64_t c;
- size_t j;
- unsigned char mp[16];
-
- if (len < 16)
- goto poly1305_donna_atmost15bytes;
-
-poly1305_donna_16bytes:
- t0 = U8TO32_LE(in);
- t1 = U8TO32_LE(in + 4);
- t2 = U8TO32_LE(in + 8);
- t3 = U8TO32_LE(in + 12);
-
- in += 16;
- len -= 16;
-
- state->h0 += t0 & 0x3ffffff;
- state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;
- state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;
- state->h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff;
- state->h4 += (t3 >> 8) | (1 << 24);
-
-poly1305_donna_mul:
- t[0] = mul32x32_64(state->h0, state->r0) +
- mul32x32_64(state->h1, state->s4) +
- mul32x32_64(state->h2, state->s3) +
- mul32x32_64(state->h3, state->s2) +
- mul32x32_64(state->h4, state->s1);
- t[1] = mul32x32_64(state->h0, state->r1) +
- mul32x32_64(state->h1, state->r0) +
- mul32x32_64(state->h2, state->s4) +
- mul32x32_64(state->h3, state->s3) +
- mul32x32_64(state->h4, state->s2);
- t[2] = mul32x32_64(state->h0, state->r2) +
- mul32x32_64(state->h1, state->r1) +
- mul32x32_64(state->h2, state->r0) +
- mul32x32_64(state->h3, state->s4) +
- mul32x32_64(state->h4, state->s3);
- t[3] = mul32x32_64(state->h0, state->r3) +
- mul32x32_64(state->h1, state->r2) +
- mul32x32_64(state->h2, state->r1) +
- mul32x32_64(state->h3, state->r0) +
- mul32x32_64(state->h4, state->s4);
- t[4] = mul32x32_64(state->h0, state->r4) +
- mul32x32_64(state->h1, state->r3) +
- mul32x32_64(state->h2, state->r2) +
- mul32x32_64(state->h3, state->r1) +
- mul32x32_64(state->h4, state->r0);
-
- state->h0 = (uint32_t)t[0] & 0x3ffffff;
- c = (t[0] >> 26);
- t[1] += c;
- state->h1 = (uint32_t)t[1] & 0x3ffffff;
- b = (uint32_t)(t[1] >> 26);
- t[2] += b;
- state->h2 = (uint32_t)t[2] & 0x3ffffff;
- b = (uint32_t)(t[2] >> 26);
- t[3] += b;
- state->h3 = (uint32_t)t[3] & 0x3ffffff;
- b = (uint32_t)(t[3] >> 26);
- t[4] += b;
- state->h4 = (uint32_t)t[4] & 0x3ffffff;
- b = (uint32_t)(t[4] >> 26);
- state->h0 += b * 5;
-
- if (len >= 16)
- goto poly1305_donna_16bytes;
-
-/* final bytes */
-poly1305_donna_atmost15bytes:
- if (!len)
- return;
-
- for (j = 0; j < len; j++)
- mp[j] = in[j];
- mp[j++] = 1;
- for (; j < 16; j++)
- mp[j] = 0;
- len = 0;
-
- t0 = U8TO32_LE(mp + 0);
- t1 = U8TO32_LE(mp + 4);
- t2 = U8TO32_LE(mp + 8);
- t3 = U8TO32_LE(mp + 12);
-
- state->h0 += t0 & 0x3ffffff;
- state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;
- state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;
- state->h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff;
- state->h4 += (t3 >> 8);
-
- goto poly1305_donna_mul;
-}
-
-void
-Poly1305Init(poly1305_state *statep, const unsigned char key[32])
-{
- struct poly1305_state_st *state = (struct poly1305_state_st *)statep;
- uint32_t t0, t1, t2, t3;
-
- t0 = U8TO32_LE(key + 0);
- t1 = U8TO32_LE(key + 4);
- t2 = U8TO32_LE(key + 8);
- t3 = U8TO32_LE(key + 12);
-
- /* precompute multipliers */
- state->r0 = t0 & 0x3ffffff;
- t0 >>= 26;
- t0 |= t1 << 6;
- state->r1 = t0 & 0x3ffff03;
- t1 >>= 20;
- t1 |= t2 << 12;
- state->r2 = t1 & 0x3ffc0ff;
- t2 >>= 14;
- t2 |= t3 << 18;
- state->r3 = t2 & 0x3f03fff;
- t3 >>= 8;
- state->r4 = t3 & 0x00fffff;
-
- state->s1 = state->r1 * 5;
- state->s2 = state->r2 * 5;
- state->s3 = state->r3 * 5;
- state->s4 = state->r4 * 5;
-
- /* init state */
- state->h0 = 0;
- state->h1 = 0;
- state->h2 = 0;
- state->h3 = 0;
- state->h4 = 0;
-
- state->buf_used = 0;
- memcpy(state->key, key + 16, sizeof(state->key));
-}
-
-void
-Poly1305Update(poly1305_state *statep, const unsigned char *in,
- size_t in_len)
-{
- unsigned int i;
- struct poly1305_state_st *state = (struct poly1305_state_st *)statep;
-
- if (state->buf_used) {
- unsigned int todo = 16 - state->buf_used;
- if (todo > in_len)
- todo = in_len;
- for (i = 0; i < todo; i++)
- state->buf[state->buf_used + i] = in[i];
- state->buf_used += todo;
- in_len -= todo;
- in += todo;
-
- if (state->buf_used == 16) {
- update(state, state->buf, 16);
- state->buf_used = 0;
- }
- }
-
- if (in_len >= 16) {
- size_t todo = in_len & ~0xf;
- update(state, in, todo);
- in += todo;
- in_len &= 0xf;
- }
-
- if (in_len) {
- for (i = 0; i < in_len; i++)
- state->buf[i] = in[i];
- state->buf_used = in_len;
- }
-}
-
-void
-Poly1305Finish(poly1305_state *statep, unsigned char mac[16])
-{
- struct poly1305_state_st *state = (struct poly1305_state_st *)statep;
- uint64_t f0, f1, f2, f3;
- uint32_t g0, g1, g2, g3, g4;
- uint32_t b, nb;
-
- if (state->buf_used)
- update(state, state->buf, state->buf_used);
-
- b = state->h0 >> 26;
- state->h0 = state->h0 & 0x3ffffff;
- state->h1 += b;
- b = state->h1 >> 26;
- state->h1 = state->h1 & 0x3ffffff;
- state->h2 += b;
- b = state->h2 >> 26;
- state->h2 = state->h2 & 0x3ffffff;
- state->h3 += b;
- b = state->h3 >> 26;
- state->h3 = state->h3 & 0x3ffffff;
- state->h4 += b;
- b = state->h4 >> 26;
- state->h4 = state->h4 & 0x3ffffff;
- state->h0 += b * 5;
-
- g0 = state->h0 + 5;
- b = g0 >> 26;
- g0 &= 0x3ffffff;
- g1 = state->h1 + b;
- b = g1 >> 26;
- g1 &= 0x3ffffff;
- g2 = state->h2 + b;
- b = g2 >> 26;
- g2 &= 0x3ffffff;
- g3 = state->h3 + b;
- b = g3 >> 26;
- g3 &= 0x3ffffff;
- g4 = state->h4 + b - (1 << 26);
-
- b = (g4 >> 31) - 1;
- nb = ~b;
- state->h0 = (state->h0 & nb) | (g0 & b);
- state->h1 = (state->h1 & nb) | (g1 & b);
- state->h2 = (state->h2 & nb) | (g2 & b);
- state->h3 = (state->h3 & nb) | (g3 & b);
- state->h4 = (state->h4 & nb) | (g4 & b);
-
- f0 = ((state->h0) | (state->h1 << 26)) + (uint64_t)U8TO32_LE(&state->key[0]);
- f1 = ((state->h1 >> 6) | (state->h2 << 20)) + (uint64_t)U8TO32_LE(&state->key[4]);
- f2 = ((state->h2 >> 12) | (state->h3 << 14)) + (uint64_t)U8TO32_LE(&state->key[8]);
- f3 = ((state->h3 >> 18) | (state->h4 << 8)) + (uint64_t)U8TO32_LE(&state->key[12]);
-
- U32TO8_LE(&mac[0], (uint32_t)f0);
- f1 += (f0 >> 32);
- U32TO8_LE(&mac[4], (uint32_t)f1);
- f2 += (f1 >> 32);
- U32TO8_LE(&mac[8], (uint32_t)f2);
- f3 += (f2 >> 32);
- U32TO8_LE(&mac[12], (uint32_t)f3);
-}
diff --git a/security/nss/lib/freebl/poly1305.h b/security/nss/lib/freebl/poly1305.h
deleted file mode 100644
index 125f49b3ba..0000000000
--- a/security/nss/lib/freebl/poly1305.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * poly1305.h - header file for Poly1305 implementation.
- *
- * 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 FREEBL_POLY1305_H_
-#define FREEBL_POLY1305_H_
-
-#include "stddef.h"
-
-typedef unsigned char poly1305_state[512];
-
-/* Poly1305Init sets up |state| so that it can be used to calculate an
- * authentication tag with the one-time key |key|. Note that |key| is a
- * one-time key and therefore there is no `reset' method because that would
- * enable several messages to be authenticated with the same key. */
-extern void Poly1305Init(poly1305_state* state, const unsigned char key[32]);
-
-/* Poly1305Update processes |in_len| bytes from |in|. It can be called zero or
- * more times after poly1305_init. */
-extern void Poly1305Update(poly1305_state* state, const unsigned char* in,
- size_t inLen);
-
-/* Poly1305Finish completes the poly1305 calculation and writes a 16 byte
- * authentication tag to |mac|. */
-extern void Poly1305Finish(poly1305_state* state, unsigned char mac[16]);
-
-#endif /* FREEBL_POLY1305_H_ */
diff --git a/security/nss/lib/freebl/unix_urandom.c b/security/nss/lib/freebl/unix_urandom.c
index 25e6ad91cf..869a5ed8cc 100644
--- a/security/nss/lib/freebl/unix_urandom.c
+++ b/security/nss/lib/freebl/unix_urandom.c
@@ -4,10 +4,14 @@
#include <fcntl.h>
#include <unistd.h>
+#include <errno.h>
#include "secerr.h"
#include "secrng.h"
#include "prprf.h"
+/* syscall getentropy() is limited to retrieving 256 bytes */
+#define GETENTROPY_MAX_BYTES 256
+
void
RNG_SystemInfoForRNG(void)
{
@@ -28,6 +32,35 @@ RNG_SystemRNG(void *dest, size_t maxLen)
size_t fileBytes = 0;
unsigned char *buffer = dest;
+#if defined(__OpenBSD__) || (defined(LINUX) && defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 25))))
+ int result;
+
+ while (fileBytes < maxLen) {
+ size_t getBytes = maxLen - fileBytes;
+ if (getBytes > GETENTROPY_MAX_BYTES) {
+ getBytes = GETENTROPY_MAX_BYTES;
+ }
+ result = getentropy(buffer, getBytes);
+ if (result == 0) { /* success */
+ fileBytes += getBytes;
+ buffer += getBytes;
+ } else {
+ break;
+ }
+ }
+ if (fileBytes == maxLen) { /* success */
+ return maxLen;
+ }
+ /* If we failed with an error other than ENOSYS, it means the destination
+ * buffer is not writeable. We don't need to try writing to it again. */
+ if (errno != ENOSYS) {
+ PORT_SetError(SEC_ERROR_NEED_RANDOM);
+ return 0;
+ }
+ /* ENOSYS means the kernel doesn't support getentropy()/getrandom().
+ * Reset the number of bytes to get and fall back to /dev/urandom. */
+ fileBytes = 0;
+#endif
fd = open("/dev/urandom", O_RDONLY);
if (fd < 0) {
PORT_SetError(SEC_ERROR_NEED_RANDOM);
diff --git a/security/nss/lib/freebl/verified/Hacl_Poly1305_32.c b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.c
new file mode 100644
index 0000000000..246a41af39
--- /dev/null
+++ b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.c
@@ -0,0 +1,578 @@
+/* Copyright 2016-2017 INRIA and Microsoft Corporation
+ *
+ * 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 "Hacl_Poly1305_32.h"
+
+inline static void
+Hacl_Bignum_Modulo_reduce(uint32_t *b)
+{
+ uint32_t b0 = b[0U];
+ b[0U] = (b0 << (uint32_t)2U) + b0;
+}
+
+inline static void
+Hacl_Bignum_Modulo_carry_top(uint32_t *b)
+{
+ uint32_t b4 = b[4U];
+ uint32_t b0 = b[0U];
+ uint32_t b4_26 = b4 >> (uint32_t)26U;
+ b[4U] = b4 & (uint32_t)0x3ffffffU;
+ b[0U] = (b4_26 << (uint32_t)2U) + b4_26 + b0;
+}
+
+inline static void
+Hacl_Bignum_Modulo_carry_top_wide(uint64_t *b)
+{
+ uint64_t b4 = b[4U];
+ uint64_t b0 = b[0U];
+ uint64_t b4_ = b4 & (uint64_t)(uint32_t)0x3ffffffU;
+ uint32_t b4_26 = (uint32_t)(b4 >> (uint32_t)26U);
+ uint64_t b0_ = b0 + (uint64_t)((b4_26 << (uint32_t)2U) + b4_26);
+ b[4U] = b4_;
+ b[0U] = b0_;
+}
+
+inline static void
+Hacl_Bignum_Fproduct_copy_from_wide_(uint32_t *output, uint64_t *input)
+{
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) {
+ uint64_t xi = input[i];
+ output[i] = (uint32_t)xi;
+ }
+}
+
+inline static void
+Hacl_Bignum_Fproduct_sum_scalar_multiplication_(uint64_t *output, uint32_t *input, uint32_t s)
+{
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) {
+ uint64_t xi = output[i];
+ uint32_t yi = input[i];
+ uint64_t x_wide = (uint64_t)yi;
+ uint64_t y_wide = (uint64_t)s;
+ output[i] = xi + x_wide * y_wide;
+ }
+}
+
+inline static void
+Hacl_Bignum_Fproduct_carry_wide_(uint64_t *tmp)
+{
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) {
+ uint32_t ctr = i;
+ uint64_t tctr = tmp[ctr];
+ uint64_t tctrp1 = tmp[ctr + (uint32_t)1U];
+ uint32_t r0 = (uint32_t)tctr & (uint32_t)0x3ffffffU;
+ uint64_t c = tctr >> (uint32_t)26U;
+ tmp[ctr] = (uint64_t)r0;
+ tmp[ctr + (uint32_t)1U] = tctrp1 + c;
+ }
+}
+
+inline static void
+Hacl_Bignum_Fproduct_carry_limb_(uint32_t *tmp)
+{
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) {
+ uint32_t ctr = i;
+ uint32_t tctr = tmp[ctr];
+ uint32_t tctrp1 = tmp[ctr + (uint32_t)1U];
+ uint32_t r0 = tctr & (uint32_t)0x3ffffffU;
+ uint32_t c = tctr >> (uint32_t)26U;
+ tmp[ctr] = r0;
+ tmp[ctr + (uint32_t)1U] = tctrp1 + c;
+ }
+}
+
+inline static void
+Hacl_Bignum_Fmul_shift_reduce(uint32_t *output)
+{
+ uint32_t tmp = output[4U];
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) {
+ uint32_t ctr = (uint32_t)5U - i - (uint32_t)1U;
+ uint32_t z = output[ctr - (uint32_t)1U];
+ output[ctr] = z;
+ }
+ output[0U] = tmp;
+ Hacl_Bignum_Modulo_reduce(output);
+}
+
+static void
+Hacl_Bignum_Fmul_mul_shift_reduce_(uint64_t *output, uint32_t *input, uint32_t *input2)
+{
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)4U; i = i + (uint32_t)1U) {
+ uint32_t input2i = input2[i];
+ Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i);
+ Hacl_Bignum_Fmul_shift_reduce(input);
+ }
+ uint32_t i = (uint32_t)4U;
+ uint32_t input2i = input2[i];
+ Hacl_Bignum_Fproduct_sum_scalar_multiplication_(output, input, input2i);
+}
+
+inline static void
+Hacl_Bignum_Fmul_fmul(uint32_t *output, uint32_t *input, uint32_t *input2)
+{
+ uint32_t tmp[5U] = { 0U };
+ memcpy(tmp, input, (uint32_t)5U * sizeof input[0U]);
+ uint64_t t[5U] = { 0U };
+ Hacl_Bignum_Fmul_mul_shift_reduce_(t, tmp, input2);
+ Hacl_Bignum_Fproduct_carry_wide_(t);
+ Hacl_Bignum_Modulo_carry_top_wide(t);
+ Hacl_Bignum_Fproduct_copy_from_wide_(output, t);
+ uint32_t i0 = output[0U];
+ uint32_t i1 = output[1U];
+ uint32_t i0_ = i0 & (uint32_t)0x3ffffffU;
+ uint32_t i1_ = i1 + (i0 >> (uint32_t)26U);
+ output[0U] = i0_;
+ output[1U] = i1_;
+}
+
+inline static void
+Hacl_Bignum_AddAndMultiply_add_and_multiply(uint32_t *acc, uint32_t *block, uint32_t *r)
+{
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)5U; i = i + (uint32_t)1U) {
+ uint32_t xi = acc[i];
+ uint32_t yi = block[i];
+ acc[i] = xi + yi;
+ }
+ Hacl_Bignum_Fmul_fmul(acc, acc, r);
+}
+
+inline static void
+Hacl_Impl_Poly1305_32_poly1305_update(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m)
+{
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st;
+ uint32_t *h = scrut0.h;
+ uint32_t *acc = h;
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *r = scrut.r;
+ uint32_t *r5 = r;
+ uint32_t tmp[5U] = { 0U };
+ uint8_t *s0 = m;
+ uint8_t *s1 = m + (uint32_t)3U;
+ uint8_t *s2 = m + (uint32_t)6U;
+ uint8_t *s3 = m + (uint32_t)9U;
+ uint8_t *s4 = m + (uint32_t)12U;
+ uint32_t i0 = load32_le(s0);
+ uint32_t i1 = load32_le(s1);
+ uint32_t i2 = load32_le(s2);
+ uint32_t i3 = load32_le(s3);
+ uint32_t i4 = load32_le(s4);
+ uint32_t r0 = i0 & (uint32_t)0x3ffffffU;
+ uint32_t r1 = i1 >> (uint32_t)2U & (uint32_t)0x3ffffffU;
+ uint32_t r2 = i2 >> (uint32_t)4U & (uint32_t)0x3ffffffU;
+ uint32_t r3 = i3 >> (uint32_t)6U & (uint32_t)0x3ffffffU;
+ uint32_t r4 = i4 >> (uint32_t)8U;
+ tmp[0U] = r0;
+ tmp[1U] = r1;
+ tmp[2U] = r2;
+ tmp[3U] = r3;
+ tmp[4U] = r4;
+ uint32_t b4 = tmp[4U];
+ uint32_t b4_ = (uint32_t)0x1000000U | b4;
+ tmp[4U] = b4_;
+ Hacl_Bignum_AddAndMultiply_add_and_multiply(acc, tmp, r5);
+}
+
+inline static void
+Hacl_Impl_Poly1305_32_poly1305_process_last_block_(
+ uint8_t *block,
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint64_t rem_)
+{
+ uint32_t tmp[5U] = { 0U };
+ uint8_t *s0 = block;
+ uint8_t *s1 = block + (uint32_t)3U;
+ uint8_t *s2 = block + (uint32_t)6U;
+ uint8_t *s3 = block + (uint32_t)9U;
+ uint8_t *s4 = block + (uint32_t)12U;
+ uint32_t i0 = load32_le(s0);
+ uint32_t i1 = load32_le(s1);
+ uint32_t i2 = load32_le(s2);
+ uint32_t i3 = load32_le(s3);
+ uint32_t i4 = load32_le(s4);
+ uint32_t r0 = i0 & (uint32_t)0x3ffffffU;
+ uint32_t r1 = i1 >> (uint32_t)2U & (uint32_t)0x3ffffffU;
+ uint32_t r2 = i2 >> (uint32_t)4U & (uint32_t)0x3ffffffU;
+ uint32_t r3 = i3 >> (uint32_t)6U & (uint32_t)0x3ffffffU;
+ uint32_t r4 = i4 >> (uint32_t)8U;
+ tmp[0U] = r0;
+ tmp[1U] = r1;
+ tmp[2U] = r2;
+ tmp[3U] = r3;
+ tmp[4U] = r4;
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st;
+ uint32_t *h = scrut0.h;
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *r = scrut.r;
+ Hacl_Bignum_AddAndMultiply_add_and_multiply(h, tmp, r);
+}
+
+inline static void
+Hacl_Impl_Poly1305_32_poly1305_process_last_block(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint64_t rem_)
+{
+ uint8_t zero1 = (uint8_t)0U;
+ KRML_CHECK_SIZE(zero1, (uint32_t)16U);
+ uint8_t block[16U];
+ for (uint32_t _i = 0U; _i < (uint32_t)16U; ++_i)
+ block[_i] = zero1;
+ uint32_t i0 = (uint32_t)rem_;
+ uint32_t i = (uint32_t)rem_;
+ memcpy(block, m, i * sizeof m[0U]);
+ block[i0] = (uint8_t)1U;
+ Hacl_Impl_Poly1305_32_poly1305_process_last_block_(block, st, m, rem_);
+}
+
+static void
+Hacl_Impl_Poly1305_32_poly1305_last_pass(uint32_t *acc)
+{
+ Hacl_Bignum_Fproduct_carry_limb_(acc);
+ Hacl_Bignum_Modulo_carry_top(acc);
+ uint32_t t0 = acc[0U];
+ uint32_t t10 = acc[1U];
+ uint32_t t20 = acc[2U];
+ uint32_t t30 = acc[3U];
+ uint32_t t40 = acc[4U];
+ uint32_t t1_ = t10 + (t0 >> (uint32_t)26U);
+ uint32_t mask_261 = (uint32_t)0x3ffffffU;
+ uint32_t t0_ = t0 & mask_261;
+ uint32_t t2_ = t20 + (t1_ >> (uint32_t)26U);
+ uint32_t t1__ = t1_ & mask_261;
+ uint32_t t3_ = t30 + (t2_ >> (uint32_t)26U);
+ uint32_t t2__ = t2_ & mask_261;
+ uint32_t t4_ = t40 + (t3_ >> (uint32_t)26U);
+ uint32_t t3__ = t3_ & mask_261;
+ acc[0U] = t0_;
+ acc[1U] = t1__;
+ acc[2U] = t2__;
+ acc[3U] = t3__;
+ acc[4U] = t4_;
+ Hacl_Bignum_Modulo_carry_top(acc);
+ uint32_t t00 = acc[0U];
+ uint32_t t1 = acc[1U];
+ uint32_t t2 = acc[2U];
+ uint32_t t3 = acc[3U];
+ uint32_t t4 = acc[4U];
+ uint32_t t1_0 = t1 + (t00 >> (uint32_t)26U);
+ uint32_t t0_0 = t00 & (uint32_t)0x3ffffffU;
+ uint32_t t2_0 = t2 + (t1_0 >> (uint32_t)26U);
+ uint32_t t1__0 = t1_0 & (uint32_t)0x3ffffffU;
+ uint32_t t3_0 = t3 + (t2_0 >> (uint32_t)26U);
+ uint32_t t2__0 = t2_0 & (uint32_t)0x3ffffffU;
+ uint32_t t4_0 = t4 + (t3_0 >> (uint32_t)26U);
+ uint32_t t3__0 = t3_0 & (uint32_t)0x3ffffffU;
+ acc[0U] = t0_0;
+ acc[1U] = t1__0;
+ acc[2U] = t2__0;
+ acc[3U] = t3__0;
+ acc[4U] = t4_0;
+ Hacl_Bignum_Modulo_carry_top(acc);
+ uint32_t i0 = acc[0U];
+ uint32_t i1 = acc[1U];
+ uint32_t i0_ = i0 & (uint32_t)0x3ffffffU;
+ uint32_t i1_ = i1 + (i0 >> (uint32_t)26U);
+ acc[0U] = i0_;
+ acc[1U] = i1_;
+ uint32_t a0 = acc[0U];
+ uint32_t a1 = acc[1U];
+ uint32_t a2 = acc[2U];
+ uint32_t a3 = acc[3U];
+ uint32_t a4 = acc[4U];
+ uint32_t mask0 = FStar_UInt32_gte_mask(a0, (uint32_t)0x3fffffbU);
+ uint32_t mask1 = FStar_UInt32_eq_mask(a1, (uint32_t)0x3ffffffU);
+ uint32_t mask2 = FStar_UInt32_eq_mask(a2, (uint32_t)0x3ffffffU);
+ uint32_t mask3 = FStar_UInt32_eq_mask(a3, (uint32_t)0x3ffffffU);
+ uint32_t mask4 = FStar_UInt32_eq_mask(a4, (uint32_t)0x3ffffffU);
+ uint32_t mask = (((mask0 & mask1) & mask2) & mask3) & mask4;
+ uint32_t a0_ = a0 - ((uint32_t)0x3fffffbU & mask);
+ uint32_t a1_ = a1 - ((uint32_t)0x3ffffffU & mask);
+ uint32_t a2_ = a2 - ((uint32_t)0x3ffffffU & mask);
+ uint32_t a3_ = a3 - ((uint32_t)0x3ffffffU & mask);
+ uint32_t a4_ = a4 - ((uint32_t)0x3ffffffU & mask);
+ acc[0U] = a0_;
+ acc[1U] = a1_;
+ acc[2U] = a2_;
+ acc[3U] = a3_;
+ acc[4U] = a4_;
+}
+
+static Hacl_Impl_Poly1305_32_State_poly1305_state
+Hacl_Impl_Poly1305_32_mk_state(uint32_t *r, uint32_t *h)
+{
+ return ((Hacl_Impl_Poly1305_32_State_poly1305_state){.r = r, .h = h });
+}
+
+static void
+Hacl_Standalone_Poly1305_32_poly1305_blocks(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint64_t len1)
+{
+ if (!(len1 == (uint64_t)0U)) {
+ uint8_t *block = m;
+ uint8_t *tail1 = m + (uint32_t)16U;
+ Hacl_Impl_Poly1305_32_poly1305_update(st, block);
+ uint64_t len2 = len1 - (uint64_t)1U;
+ Hacl_Standalone_Poly1305_32_poly1305_blocks(st, tail1, len2);
+ }
+}
+
+static void
+Hacl_Standalone_Poly1305_32_poly1305_partial(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *input,
+ uint64_t len1,
+ uint8_t *kr)
+{
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *r = scrut.r;
+ uint32_t *x0 = r;
+ FStar_UInt128_t k1 = load128_le(kr);
+ FStar_UInt128_t
+ k_clamped =
+ FStar_UInt128_logand(k1,
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0ffffffcU),
+ (uint32_t)64U),
+ FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0fffffffU)));
+ uint32_t r0 = (uint32_t)FStar_UInt128_uint128_to_uint64(k_clamped) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r1 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)26U)) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r2 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)52U)) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r3 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)78U)) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r4 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)104U)) & (uint32_t)0x3ffffffU;
+ x0[0U] = r0;
+ x0[1U] = r1;
+ x0[2U] = r2;
+ x0[3U] = r3;
+ x0[4U] = r4;
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st;
+ uint32_t *h = scrut0.h;
+ uint32_t *x00 = h;
+ x00[0U] = (uint32_t)0U;
+ x00[1U] = (uint32_t)0U;
+ x00[2U] = (uint32_t)0U;
+ x00[3U] = (uint32_t)0U;
+ x00[4U] = (uint32_t)0U;
+ Hacl_Standalone_Poly1305_32_poly1305_blocks(st, input, len1);
+}
+
+static void
+Hacl_Standalone_Poly1305_32_poly1305_complete(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint64_t len1,
+ uint8_t *k1)
+{
+ uint8_t *kr = k1;
+ uint64_t len16 = len1 >> (uint32_t)4U;
+ uint64_t rem16 = len1 & (uint64_t)0xfU;
+ uint8_t *part_input = m;
+ uint8_t *last_block = m + (uint32_t)((uint64_t)16U * len16);
+ Hacl_Standalone_Poly1305_32_poly1305_partial(st, part_input, len16, kr);
+ if (!(rem16 == (uint64_t)0U))
+ Hacl_Impl_Poly1305_32_poly1305_process_last_block(st, last_block, rem16);
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *h = scrut.h;
+ uint32_t *acc = h;
+ Hacl_Impl_Poly1305_32_poly1305_last_pass(acc);
+}
+
+static void
+Hacl_Standalone_Poly1305_32_crypto_onetimeauth_(
+ uint8_t *output,
+ uint8_t *input,
+ uint64_t len1,
+ uint8_t *k1)
+{
+ uint32_t buf[10U] = { 0U };
+ uint32_t *r = buf;
+ uint32_t *h = buf + (uint32_t)5U;
+ Hacl_Impl_Poly1305_32_State_poly1305_state st = Hacl_Impl_Poly1305_32_mk_state(r, h);
+ uint8_t *key_s = k1 + (uint32_t)16U;
+ Hacl_Standalone_Poly1305_32_poly1305_complete(st, input, len1, k1);
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *h5 = scrut.h;
+ uint32_t *acc = h5;
+ FStar_UInt128_t k_ = load128_le(key_s);
+ uint32_t h0 = acc[0U];
+ uint32_t h1 = acc[1U];
+ uint32_t h2 = acc[2U];
+ uint32_t h3 = acc[3U];
+ uint32_t h4 = acc[4U];
+ FStar_UInt128_t
+ acc_ =
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h4),
+ (uint32_t)104U),
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h3),
+ (uint32_t)78U),
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h2),
+ (uint32_t)52U),
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h1),
+ (uint32_t)26U),
+ FStar_UInt128_uint64_to_uint128((uint64_t)h0)))));
+ FStar_UInt128_t mac_ = FStar_UInt128_add_mod(acc_, k_);
+ store128_le(output, mac_);
+}
+
+static void
+Hacl_Standalone_Poly1305_32_crypto_onetimeauth(
+ uint8_t *output,
+ uint8_t *input,
+ uint64_t len1,
+ uint8_t *k1)
+{
+ Hacl_Standalone_Poly1305_32_crypto_onetimeauth_(output, input, len1, k1);
+}
+
+void *
+Hacl_Poly1305_32_op_String_Access(FStar_Monotonic_HyperStack_mem h, uint8_t *b)
+{
+ return (void *)(uint8_t)0U;
+}
+
+Hacl_Impl_Poly1305_32_State_poly1305_state
+Hacl_Poly1305_32_mk_state(uint32_t *r, uint32_t *acc)
+{
+ return Hacl_Impl_Poly1305_32_mk_state(r, acc);
+}
+
+void
+Hacl_Poly1305_32_init(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *k1)
+{
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *r = scrut.r;
+ uint32_t *x0 = r;
+ FStar_UInt128_t k10 = load128_le(k1);
+ FStar_UInt128_t
+ k_clamped =
+ FStar_UInt128_logand(k10,
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0ffffffcU),
+ (uint32_t)64U),
+ FStar_UInt128_uint64_to_uint128((uint64_t)0x0ffffffc0fffffffU)));
+ uint32_t r0 = (uint32_t)FStar_UInt128_uint128_to_uint64(k_clamped) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r1 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)26U)) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r2 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)52U)) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r3 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)78U)) & (uint32_t)0x3ffffffU;
+ uint32_t
+ r4 =
+ (uint32_t)FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(k_clamped, (uint32_t)104U)) & (uint32_t)0x3ffffffU;
+ x0[0U] = r0;
+ x0[1U] = r1;
+ x0[2U] = r2;
+ x0[3U] = r3;
+ x0[4U] = r4;
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut0 = st;
+ uint32_t *h = scrut0.h;
+ uint32_t *x00 = h;
+ x00[0U] = (uint32_t)0U;
+ x00[1U] = (uint32_t)0U;
+ x00[2U] = (uint32_t)0U;
+ x00[3U] = (uint32_t)0U;
+ x00[4U] = (uint32_t)0U;
+}
+
+void *Hacl_Poly1305_32_empty_log = (void *)(uint8_t)0U;
+
+void
+Hacl_Poly1305_32_update_block(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *m)
+{
+ Hacl_Impl_Poly1305_32_poly1305_update(st, m);
+}
+
+void
+Hacl_Poly1305_32_update(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint32_t len1)
+{
+ if (!(len1 == (uint32_t)0U)) {
+ uint8_t *block = m;
+ uint8_t *m_ = m + (uint32_t)16U;
+ uint32_t len2 = len1 - (uint32_t)1U;
+ Hacl_Poly1305_32_update_block(st, block);
+ Hacl_Poly1305_32_update(st, m_, len2);
+ }
+}
+
+void
+Hacl_Poly1305_32_update_last(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint32_t len1)
+{
+ if (!((uint64_t)len1 == (uint64_t)0U))
+ Hacl_Impl_Poly1305_32_poly1305_process_last_block(st, m, (uint64_t)len1);
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *h = scrut.h;
+ uint32_t *acc = h;
+ Hacl_Impl_Poly1305_32_poly1305_last_pass(acc);
+}
+
+void
+Hacl_Poly1305_32_finish(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *mac,
+ uint8_t *k1)
+{
+ Hacl_Impl_Poly1305_32_State_poly1305_state scrut = st;
+ uint32_t *h = scrut.h;
+ uint32_t *acc = h;
+ FStar_UInt128_t k_ = load128_le(k1);
+ uint32_t h0 = acc[0U];
+ uint32_t h1 = acc[1U];
+ uint32_t h2 = acc[2U];
+ uint32_t h3 = acc[3U];
+ uint32_t h4 = acc[4U];
+ FStar_UInt128_t
+ acc_ =
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h4),
+ (uint32_t)104U),
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h3),
+ (uint32_t)78U),
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h2),
+ (uint32_t)52U),
+ FStar_UInt128_logor(FStar_UInt128_shift_left(FStar_UInt128_uint64_to_uint128((uint64_t)h1),
+ (uint32_t)26U),
+ FStar_UInt128_uint64_to_uint128((uint64_t)h0)))));
+ FStar_UInt128_t mac_ = FStar_UInt128_add_mod(acc_, k_);
+ store128_le(mac, mac_);
+}
+
+void
+Hacl_Poly1305_32_crypto_onetimeauth(
+ uint8_t *output,
+ uint8_t *input,
+ uint64_t len1,
+ uint8_t *k1)
+{
+ Hacl_Standalone_Poly1305_32_crypto_onetimeauth(output, input, len1, k1);
+}
diff --git a/security/nss/lib/freebl/verified/Hacl_Poly1305_32.h b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.h
new file mode 100644
index 0000000000..4dd0700267
--- /dev/null
+++ b/security/nss/lib/freebl/verified/Hacl_Poly1305_32.h
@@ -0,0 +1,103 @@
+/* Copyright 2016-2017 INRIA and Microsoft Corporation
+ *
+ * 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 "kremlib.h"
+#ifndef __Hacl_Poly1305_32_H
+#define __Hacl_Poly1305_32_H
+
+typedef uint32_t Hacl_Bignum_Constants_limb;
+
+typedef uint64_t Hacl_Bignum_Constants_wide;
+
+typedef uint64_t Hacl_Bignum_Wide_t;
+
+typedef uint32_t Hacl_Bignum_Limb_t;
+
+typedef void *Hacl_Impl_Poly1305_32_State_log_t;
+
+typedef uint8_t *Hacl_Impl_Poly1305_32_State_uint8_p;
+
+typedef uint32_t *Hacl_Impl_Poly1305_32_State_bigint;
+
+typedef void *Hacl_Impl_Poly1305_32_State_seqelem;
+
+typedef uint32_t *Hacl_Impl_Poly1305_32_State_elemB;
+
+typedef uint8_t *Hacl_Impl_Poly1305_32_State_wordB;
+
+typedef uint8_t *Hacl_Impl_Poly1305_32_State_wordB_16;
+
+typedef struct
+{
+ uint32_t *r;
+ uint32_t *h;
+} Hacl_Impl_Poly1305_32_State_poly1305_state;
+
+typedef void *Hacl_Impl_Poly1305_32_log_t;
+
+typedef uint32_t *Hacl_Impl_Poly1305_32_bigint;
+
+typedef uint8_t *Hacl_Impl_Poly1305_32_uint8_p;
+
+typedef uint32_t *Hacl_Impl_Poly1305_32_elemB;
+
+typedef uint8_t *Hacl_Impl_Poly1305_32_wordB;
+
+typedef uint8_t *Hacl_Impl_Poly1305_32_wordB_16;
+
+typedef uint8_t *Hacl_Poly1305_32_uint8_p;
+
+typedef uint64_t Hacl_Poly1305_32_uint64_t;
+
+void *Hacl_Poly1305_32_op_String_Access(FStar_Monotonic_HyperStack_mem h, uint8_t *b);
+
+typedef uint8_t *Hacl_Poly1305_32_key;
+
+typedef Hacl_Impl_Poly1305_32_State_poly1305_state Hacl_Poly1305_32_state;
+
+Hacl_Impl_Poly1305_32_State_poly1305_state
+Hacl_Poly1305_32_mk_state(uint32_t *r, uint32_t *acc);
+
+void Hacl_Poly1305_32_init(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *k1);
+
+extern void *Hacl_Poly1305_32_empty_log;
+
+void Hacl_Poly1305_32_update_block(Hacl_Impl_Poly1305_32_State_poly1305_state st, uint8_t *m);
+
+void
+Hacl_Poly1305_32_update(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint32_t len1);
+
+void
+Hacl_Poly1305_32_update_last(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *m,
+ uint32_t len1);
+
+void
+Hacl_Poly1305_32_finish(
+ Hacl_Impl_Poly1305_32_State_poly1305_state st,
+ uint8_t *mac,
+ uint8_t *k1);
+
+void
+Hacl_Poly1305_32_crypto_onetimeauth(
+ uint8_t *output,
+ uint8_t *input,
+ uint64_t len1,
+ uint8_t *k1);
+#endif
diff --git a/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c b/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c
index 9954f0ca68..f73b95f686 100644
--- a/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c
+++ b/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpdefaultclient.c
@@ -70,7 +70,7 @@ static const PKIX_UInt32 httpprotocolLen = 5; /* strlen(httpprotocol) */
* The address at which the Boolean state machine flag is stored to
* indicate whether processing can continue without further input.
* Must be non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -85,7 +85,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete(
PKIX_PL_HttpDefaultClient *client,
PKIX_UInt32 bytesRead,
PKIX_Boolean *pKeepGoing,
- void *plContext)
+ void *plCtx)
{
PKIX_UInt32 alreadyScanned = 0;
PKIX_UInt32 comp = 0;
@@ -142,7 +142,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete(
headerLength = (eoh - client->rcvBuf);
/* allocate space to copy header (and for the NULL terminator) */
- PKIX_CHECK(PKIX_PL_Malloc(headerLength + 1, (void **)&copy, plContext),
+ PKIX_CHECK(PKIX_PL_Malloc(headerLength + 1, (void **)&copy, plCtx),
PKIX_MALLOCFAILED);
/* copy header data before we corrupt it (by storing NULLs) */
@@ -301,7 +301,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete(
if (contentLength > 0) {
/* allocate a buffer of size contentLength for the content */
- PKIX_CHECK(PKIX_PL_Malloc(contentLength, (void **)&body, plContext),
+ PKIX_CHECK(PKIX_PL_Malloc(contentLength, (void **)&body, plCtx),
PKIX_MALLOCFAILED);
/* copy any remaining bytes in current buffer into new buffer */
@@ -311,7 +311,7 @@ pkix_pl_HttpDefaultClient_HdrCheckComplete(
}
}
- PKIX_CHECK(PKIX_PL_Free(client->rcvBuf, plContext),
+ PKIX_CHECK(PKIX_PL_Free(client->rcvBuf, plCtx),
PKIX_FREEFAILED);
client->rcvBuf = body;
@@ -340,7 +340,7 @@ cleanup:
* "pClient"
* The address at which the created HttpDefaultClient is to be stored.
* Must be non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -355,7 +355,7 @@ pkix_pl_HttpDefaultClient_Create(
const char *host,
PRUint16 portnum,
PKIX_PL_HttpDefaultClient **pClient,
- void *plContext)
+ void *plCtx)
{
PKIX_PL_HttpDefaultClient *client = NULL;
@@ -367,7 +367,7 @@ pkix_pl_HttpDefaultClient_Create(
(PKIX_HTTPDEFAULTCLIENT_TYPE,
sizeof (PKIX_PL_HttpDefaultClient),
(PKIX_PL_Object **)&client,
- plContext),
+ plCtx),
PKIX_COULDNOTCREATEHTTPDEFAULTCLIENTOBJECT);
/* Client timeout is overwritten in HttpDefaultClient_RequestCreate
@@ -408,10 +408,10 @@ pkix_pl_HttpDefaultClient_Create(
client->socket = NULL;
/*
- * The HttpClient API does not include a plContext argument in its
+ * The HttpClient API does not include a plCtx argument in its
* function calls. Save it here.
*/
- client->plContext = plContext;
+ client->plContext = plCtx;
*pClient = client;
@@ -430,7 +430,7 @@ cleanup:
static PKIX_Error *
pkix_pl_HttpDefaultClient_Destroy(
PKIX_PL_Object *object,
- void *plContext)
+ void *plCtx)
{
PKIX_PL_HttpDefaultClient *client = NULL;
@@ -438,13 +438,13 @@ pkix_pl_HttpDefaultClient_Destroy(
PKIX_NULLCHECK_ONE(object);
PKIX_CHECK(pkix_CheckType
- (object, PKIX_HTTPDEFAULTCLIENT_TYPE, plContext),
+ (object, PKIX_HTTPDEFAULTCLIENT_TYPE, plCtx),
PKIX_OBJECTNOTANHTTPDEFAULTCLIENT);
client = (PKIX_PL_HttpDefaultClient *)object;
if (client->rcvHeaders) {
- PKIX_PL_Free(client->rcvHeaders, plContext);
+ PKIX_PL_Free(client->rcvHeaders, plCtx);
client->rcvHeaders = NULL;
}
if (client->rcvContentType) {
@@ -456,11 +456,11 @@ pkix_pl_HttpDefaultClient_Destroy(
client->GETBuf = NULL;
}
if (client->POSTBuf != NULL) {
- PKIX_PL_Free(client->POSTBuf, plContext);
+ PKIX_PL_Free(client->POSTBuf, plCtx);
client->POSTBuf = NULL;
}
if (client->rcvBuf != NULL) {
- PKIX_PL_Free(client->rcvBuf, plContext);
+ PKIX_PL_Free(client->rcvBuf, plCtx);
client->rcvBuf = NULL;
}
if (client->host) {
@@ -493,7 +493,7 @@ cleanup:
* thread-safe.
*/
PKIX_Error *
-pkix_pl_HttpDefaultClient_RegisterSelf(void *plContext)
+pkix_pl_HttpDefaultClient_RegisterSelf(void *plCtx)
{
extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES];
pkix_ClassTable_Entry *entry =
@@ -529,7 +529,7 @@ pkix_pl_HttpDefaultClient_RegisterSelf(void *plContext)
* The address at which the Boolean state machine flag is stored to
* indicate whether processing can continue without further input.
* Must be non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -543,7 +543,7 @@ static PKIX_Error *
pkix_pl_HttpDefaultClient_ConnectContinue(
PKIX_PL_HttpDefaultClient *client,
PKIX_Boolean *pKeepGoing,
- void *plContext)
+ void *plCtx)
{
PRErrorCode status;
PKIX_Boolean keepGoing = PKIX_FALSE;
@@ -557,7 +557,7 @@ pkix_pl_HttpDefaultClient_ConnectContinue(
callbackList = (PKIX_PL_Socket_Callback *)client->callbackList;
PKIX_CHECK(callbackList->connectcontinueCallback
- (client->socket, &status, plContext),
+ (client->socket, &status, plCtx),
PKIX_SOCKETCONNECTCONTINUEFAILED);
if (status == 0) {
@@ -595,7 +595,7 @@ cleanup:
* "pBytesTransferred"
* The address at which the number of bytes sent is stored. Must be
* non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -610,7 +610,7 @@ pkix_pl_HttpDefaultClient_Send(
PKIX_PL_HttpDefaultClient *client,
PKIX_Boolean *pKeepGoing,
PKIX_UInt32 *pBytesTransferred,
- void *plContext)
+ void *plCtx)
{
PKIX_Int32 bytesWritten = 0;
PKIX_Int32 lenToWrite = 0;
@@ -640,7 +640,7 @@ pkix_pl_HttpDefaultClient_Send(
dataToWrite,
lenToWrite,
&bytesWritten,
- plContext),
+ plCtx),
PKIX_SOCKETSENDFAILED);
client->rcvBuf = NULL;
@@ -690,7 +690,7 @@ cleanup:
* "pBytesTransferred"
* The address at which the number of bytes sent is stored. Must be
* non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -705,7 +705,7 @@ pkix_pl_HttpDefaultClient_SendContinue(
PKIX_PL_HttpDefaultClient *client,
PKIX_Boolean *pKeepGoing,
PKIX_UInt32 *pBytesTransferred,
- void *plContext)
+ void *plCtx)
{
PKIX_Int32 bytesWritten = 0;
PKIX_PL_Socket_Callback *callbackList = NULL;
@@ -718,7 +718,7 @@ pkix_pl_HttpDefaultClient_SendContinue(
callbackList = (PKIX_PL_Socket_Callback *)client->callbackList;
PKIX_CHECK(callbackList->pollCallback
- (client->socket, &bytesWritten, NULL, plContext),
+ (client->socket, &bytesWritten, NULL, plCtx),
PKIX_SOCKETPOLLFAILED);
/*
@@ -752,7 +752,7 @@ cleanup:
* The address at which the Boolean state machine flag is stored to
* indicate whether processing can continue without further input.
* Must be non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -766,7 +766,7 @@ static PKIX_Error *
pkix_pl_HttpDefaultClient_RecvHdr(
PKIX_PL_HttpDefaultClient *client,
PKIX_Boolean *pKeepGoing,
- void *plContext)
+ void *plCtx)
{
PKIX_UInt32 bytesToRead = 0;
PKIX_Int32 bytesRead = 0;
@@ -787,7 +787,7 @@ pkix_pl_HttpDefaultClient_RecvHdr(
(client->rcvBuf,
client->capacity,
(void **)&(client->rcvBuf),
- plContext),
+ plCtx),
PKIX_REALLOCFAILED);
bytesToRead = client->capacity - client->filledupBytes;
@@ -799,7 +799,7 @@ pkix_pl_HttpDefaultClient_RecvHdr(
(void *)&(client->rcvBuf[client->filledupBytes]),
bytesToRead,
&bytesRead,
- plContext),
+ plCtx),
PKIX_SOCKETRECVFAILED);
if (bytesRead > 0) {
@@ -808,7 +808,7 @@ pkix_pl_HttpDefaultClient_RecvHdr(
PKIX_CHECK(
pkix_pl_HttpDefaultClient_HdrCheckComplete(client, bytesRead,
pKeepGoing,
- plContext),
+ plCtx),
PKIX_HTTPDEFAULTCLIENTHDRCHECKCOMPLETEFAILED);
} else {
client->connectStatus = HTTP_RECV_HDR_PENDING;
@@ -834,7 +834,7 @@ cleanup:
* The address at which the Boolean state machine flag is stored to
* indicate whether processing can continue without further input.
* Must be non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -848,7 +848,7 @@ static PKIX_Error *
pkix_pl_HttpDefaultClient_RecvHdrContinue(
PKIX_PL_HttpDefaultClient *client,
PKIX_Boolean *pKeepGoing,
- void *plContext)
+ void *plCtx)
{
PKIX_Int32 bytesRead = 0;
PKIX_PL_Socket_Callback *callbackList = NULL;
@@ -861,14 +861,14 @@ pkix_pl_HttpDefaultClient_RecvHdrContinue(
callbackList = (PKIX_PL_Socket_Callback *)client->callbackList;
PKIX_CHECK(callbackList->pollCallback
- (client->socket, NULL, &bytesRead, plContext),
+ (client->socket, NULL, &bytesRead, plCtx),
PKIX_SOCKETPOLLFAILED);
if (bytesRead > 0) {
client->filledupBytes += bytesRead;
PKIX_CHECK(pkix_pl_HttpDefaultClient_HdrCheckComplete
- (client, bytesRead, pKeepGoing, plContext),
+ (client, bytesRead, pKeepGoing, plCtx),
PKIX_HTTPDEFAULTCLIENTHDRCHECKCOMPLETEFAILED);
} else {
@@ -897,7 +897,7 @@ cleanup:
* The address at which the Boolean state machine flag is stored to
* indicate whether processing can continue without further input.
* Must be non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -911,7 +911,7 @@ static PKIX_Error *
pkix_pl_HttpDefaultClient_RecvBody(
PKIX_PL_HttpDefaultClient *client,
PKIX_Boolean *pKeepGoing,
- void *plContext)
+ void *plCtx)
{
PKIX_Int32 bytesRead = 0;
PKIX_Int32 bytesToRead = 0;
@@ -952,7 +952,7 @@ pkix_pl_HttpDefaultClient_RecvBody(
client->capacity = newLength;
PKIX_CHECK(
PKIX_PL_Realloc(client->rcvBuf, newLength,
- (void**)&client->rcvBuf, plContext),
+ (void**)&client->rcvBuf, plCtx),
PKIX_REALLOCFAILED);
freeBuffSize = client->capacity -
client->filledupBytes;
@@ -964,7 +964,7 @@ pkix_pl_HttpDefaultClient_RecvBody(
/* Use poll callback if waiting on non-blocking IO */
if (client->connectStatus == HTTP_RECV_BODY_PENDING) {
PKIX_CHECK(callbackList->pollCallback
- (client->socket, NULL, &bytesRead, plContext),
+ (client->socket, NULL, &bytesRead, plCtx),
PKIX_SOCKETPOLLFAILED);
} else {
PKIX_CHECK(callbackList->recvCallback
@@ -972,7 +972,7 @@ pkix_pl_HttpDefaultClient_RecvBody(
(void *)&(client->rcvBuf[client->filledupBytes]),
bytesToRead,
&bytesRead,
- plContext),
+ plCtx),
PKIX_SOCKETRECVFAILED);
}
@@ -1026,7 +1026,7 @@ cleanup:
* PARAMETERS:
* "client"
* The address of the HttpDefaultClient object. Must be non-NULL.
- * "plContext"
+ * "plCtx"
* Platform-specific context pointer.
* THREAD SAFETY:
* Thread Safe (see Thread Safety Definitions in Programmer's Guide)
@@ -1039,7 +1039,7 @@ cleanup:
static PKIX_Error *
pkix_pl_HttpDefaultClient_Dispatch(
PKIX_PL_HttpDefaultClient *client,
- void *plContext)
+ void *plCtx)
{
PKIX_UInt32 bytesTransferred = 0;
PKIX_Boolean keepGoing = PKIX_TRUE;
@@ -1051,33 +1051,33 @@ pkix_pl_HttpDefaultClient_Dispatch(
switch (client->connectStatus) {
case HTTP_CONNECT_PENDING:
PKIX_CHECK(pkix_pl_HttpDefaultClient_ConnectContinue
- (client, &keepGoing, plContext),
+ (client, &keepGoing, plCtx),
PKIX_HTTPDEFAULTCLIENTCONNECTCONTINUEFAILED);
break;
case HTTP_CONNECTED:
PKIX_CHECK(pkix_pl_HttpDefaultClient_Send
- (client, &keepGoing, &bytesTransferred, plContext),
+ (client, &keepGoing, &bytesTransferred, plCtx),
PKIX_HTTPDEFAULTCLIENTSENDFAILED);
break;
case HTTP_SEND_PENDING:
PKIX_CHECK(pkix_pl_HttpDefaultClient_SendContinue
- (client, &keepGoing, &bytesTransferred, plContext),
+ (client, &keepGoing, &bytesTransferred, plCtx),
PKIX_HTTPDEFAULTCLIENTSENDCONTINUEFAILED);
break;
case HTTP_RECV_HDR:
PKIX_CHECK(pkix_pl_HttpDefaultClient_RecvHdr
- (client, &keepGoing, plContext),
+ (client, &keepGoing, plCtx),
PKIX_HTTPDEFAULTCLIENTRECVHDRFAILED);
break;
case HTTP_RECV_HDR_PENDING:
PKIX_CHECK(pkix_pl_HttpDefaultClient_RecvHdrContinue
- (client, &keepGoing, plContext),
+ (client, &keepGoing, plCtx),
PKIX_HTTPDEFAULTCLIENTRECVHDRCONTINUEFAILED);
break;
case HTTP_RECV_BODY:
case HTTP_RECV_BODY_PENDING:
PKIX_CHECK(pkix_pl_HttpDefaultClient_RecvBody
- (client, &keepGoing, plContext),
+ (client, &keepGoing, plCtx),
PKIX_HTTPDEFAULTCLIENTRECVBODYFAILED);
break;
case HTTP_ERROR:
@@ -1106,7 +1106,7 @@ pkix_pl_HttpDefaultClient_CreateSession(
const char *host,
PRUint16 portnum,
SEC_HTTP_SERVER_SESSION *pSession,
- void *plContext)
+ void *plCtx)
{
PKIX_PL_HttpDefaultClient *client = NULL;
@@ -1115,7 +1115,7 @@ pkix_pl_HttpDefaultClient_CreateSession(
PKIX_NULLCHECK_TWO(host, pSession);
PKIX_CHECK(pkix_pl_HttpDefaultClient_Create
- (host, portnum, &client, plContext),
+ (host, portnum, &client, plCtx),
PKIX_HTTPDEFAULTCLIENTCREATEFAILED);
*pSession = (SEC_HTTP_SERVER_SESSION)client;
@@ -1130,7 +1130,7 @@ PKIX_Error *
pkix_pl_HttpDefaultClient_KeepAliveSession(
SEC_HTTP_SERVER_SESSION session,
PRPollDesc **pPollDesc,
- void *plContext)
+ void *plCtx)
{
PKIX_ENTER
(HTTPDEFAULTCLIENT,
@@ -1140,7 +1140,7 @@ pkix_pl_HttpDefaultClient_KeepAliveSession(
PKIX_CHECK(pkix_CheckType
((PKIX_PL_Object *)session,
PKIX_HTTPDEFAULTCLIENT_TYPE,
- plContext),
+ plCtx),
PKIX_SESSIONNOTANHTTPDEFAULTCLIENT);
/* XXX Not implemented */
@@ -1159,7 +1159,7 @@ pkix_pl_HttpDefaultClient_RequestCreate(
const char *http_request_method,
const PRIntervalTime timeout,
SEC_HTTP_REQUEST_SESSION *pRequest,
- void *plContext)
+ void *plCtx)
{
PKIX_PL_HttpDefaultClient *client = NULL;
PKIX_PL_Socket *socket = NULL;
@@ -1174,7 +1174,7 @@ pkix_pl_HttpDefaultClient_RequestCreate(
PKIX_CHECK(pkix_CheckType
((PKIX_PL_Object *)session,
PKIX_HTTPDEFAULTCLIENT_TYPE,
- plContext),
+ plCtx),
PKIX_SESSIONNOTANHTTPDEFAULTCLIENT);
client = (PKIX_PL_HttpDefaultClient *)session;
@@ -1212,7 +1212,7 @@ pkix_pl_HttpDefaultClient_RequestCreate(
2001, /* client->portnum, */
&status,
&socket,
- plContext),
+ plCtx),
PKIX_HTTPCERTSTOREFINDSOCKETCONNECTIONFAILED);
#else
PKIX_CHECK(pkix_HttpCertStore_FindSocketConnection
@@ -1221,20 +1221,20 @@ pkix_pl_HttpDefaultClient_RequestCreate(
client->portnum,
&status,
&socket,
- plContext),
+ plCtx),
PKIX_HTTPCERTSTOREFINDSOCKETCONNECTIONFAILED);
#endif
client->socket = socket;
PKIX_CHECK(pkix_pl_Socket_GetCallbackList
- (socket, &callbackList, plContext),
+ (socket, &callbackList, plCtx),
PKIX_SOCKETGETCALLBACKLISTFAILED);
client->callbackList = (void *)callbackList;
PKIX_CHECK(pkix_pl_Socket_GetPRFileDesc
- (socket, &fileDesc, plContext),
+ (socket, &fileDesc, plCtx),
PKIX_SOCKETGETPRFILEDESCFAILED);
client->pollDesc.fd = fileDesc;
@@ -1264,7 +1264,7 @@ pkix_pl_HttpDefaultClient_SetPostData(
const char *http_data,
const PRUint32 http_data_len,
const char *http_content_type,
- void *plContext)
+ void *plCtx)
{
PKIX_PL_HttpDefaultClient *client = NULL;
@@ -1276,7 +1276,7 @@ pkix_pl_HttpDefaultClient_SetPostData(
PKIX_CHECK(pkix_CheckType
((PKIX_PL_Object *)request,
PKIX_HTTPDEFAULTCLIENT_TYPE,
- plContext),
+ plCtx),
PKIX_REQUESTNOTANHTTPDEFAULTCLIENT);
client = (PKIX_PL_HttpDefaultClient *)request;
@@ -1307,7 +1307,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive(
PRUint32 *http_response_data_len,
PRPollDesc **pPollDesc,
SECStatus *pSECReturn,
- void *plContext)
+ void *plCtx)
{
PKIX_PL_HttpDefaultClient *client = NULL;
PKIX_UInt32 postLen = 0;
@@ -1324,7 +1324,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive(
PKIX_CHECK(pkix_CheckType
((PKIX_PL_Object *)request,
PKIX_HTTPDEFAULTCLIENT_TYPE,
- plContext),
+ plCtx),
PKIX_REQUESTNOTANHTTPDEFAULTCLIENT);
client = (PKIX_PL_HttpDefaultClient *)request;
@@ -1380,7 +1380,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive(
PKIX_CHECK(PKIX_PL_Malloc
(client->POSTLen,
(void **)&(client->POSTBuf),
- plContext),
+ plCtx),
PKIX_MALLOCFAILED);
/* copy header into postBuffer */
@@ -1407,7 +1407,7 @@ pkix_pl_HttpDefaultClient_TrySendAndReceive(
}
/* continue according to state */
- PKIX_CHECK(pkix_pl_HttpDefaultClient_Dispatch(client, plContext),
+ PKIX_CHECK(pkix_pl_HttpDefaultClient_Dispatch(client, plCtx),
PKIX_HTTPDEFAULTCLIENTDISPATCHFAILED);
switch (client->connectStatus) {
@@ -1478,7 +1478,7 @@ cleanup:
PKIX_Error *
pkix_pl_HttpDefaultClient_Cancel(
SEC_HTTP_REQUEST_SESSION request,
- void *plContext)
+ void *plCtx)
{
PKIX_ENTER(HTTPDEFAULTCLIENT, "pkix_pl_HttpDefaultClient_Cancel");
PKIX_NULLCHECK_ONE(request);
@@ -1486,7 +1486,7 @@ pkix_pl_HttpDefaultClient_Cancel(
PKIX_CHECK(pkix_CheckType
((PKIX_PL_Object *)request,
PKIX_HTTPDEFAULTCLIENT_TYPE,
- plContext),
+ plCtx),
PKIX_REQUESTNOTANHTTPDEFAULTCLIENT);
/* XXX Not implemented */
diff --git a/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c b/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c
index 9fa8e92608..09b54a2be3 100644
--- a/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c
+++ b/security/nss/lib/libpkix/pkix_pl_nss/pki/pkix_pl_infoaccess.c
@@ -23,8 +23,8 @@
* PARAMETERS
* "method"
* The UInt32 value to be stored as the method field of the InfoAccess.
- * "generalName"
- * The GeneralName to be stored as the generalName field of the InfoAccess.
+ * "gName"
+ * The GeneralName to be stored as the gName field of the InfoAccess.
* Must be non-NULL.
* "pInfoAccess"
* Address where the result is stored. Must be non-NULL.
@@ -39,7 +39,7 @@
static PKIX_Error *
pkix_pl_InfoAccess_Create(
PKIX_UInt32 method,
- PKIX_PL_GeneralName *generalName,
+ PKIX_PL_GeneralName *gName,
PKIX_PL_InfoAccess **pInfoAccess,
void *plContext)
{
@@ -47,7 +47,7 @@ pkix_pl_InfoAccess_Create(
PKIX_PL_InfoAccess *infoAccess = NULL;
PKIX_ENTER(INFOACCESS, "pkix_pl_InfoAccess_Create");
- PKIX_NULLCHECK_TWO(generalName, pInfoAccess);
+ PKIX_NULLCHECK_TWO(gName, pInfoAccess);
PKIX_CHECK(PKIX_PL_Object_Alloc
(PKIX_INFOACCESS_TYPE,
@@ -58,8 +58,8 @@ pkix_pl_InfoAccess_Create(
infoAccess->method = method;
- PKIX_INCREF(generalName);
- infoAccess->location = generalName;
+ PKIX_INCREF(gName);
+ infoAccess->location = gName;
*pInfoAccess = infoAccess;
infoAccess = NULL;
@@ -678,7 +678,7 @@ pkix_pl_UnescapeURL(
* [binary|<other-type>]]*
*
* PARAMETERS
- * "generalName"
+ * "gName"
* Address of the GeneralName whose LDAPLocation is to be parsed. Must be
* non-NULL.
* "arena"
@@ -700,7 +700,7 @@ pkix_pl_UnescapeURL(
*/
PKIX_Error *
pkix_pl_InfoAccess_ParseLocation(
- PKIX_PL_GeneralName *generalName,
+ PKIX_PL_GeneralName *gName,
PLArenaPool *arena,
LDAPRequestParams *request,
char **pDomainName,
@@ -722,9 +722,9 @@ pkix_pl_InfoAccess_ParseLocation(
LDAPNameComponent *nameComponent = NULL;
PKIX_ENTER(INFOACCESS, "pkix_pl_InfoAccess_ParseLocation");
- PKIX_NULLCHECK_FOUR(generalName, arena, request, pDomainName);
+ PKIX_NULLCHECK_FOUR(gName, arena, request, pDomainName);
- PKIX_TOSTRING(generalName, &locationString, plContext,
+ PKIX_TOSTRING(gName, &locationString, plContext,
PKIX_GENERALNAMETOSTRINGFAILED);
PKIX_CHECK(PKIX_PL_String_GetEncoded
diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h
index d62f4957b2..efb0827c51 100644
--- a/security/nss/lib/nss/nss.h
+++ b/security/nss/lib/nss/nss.h
@@ -22,10 +22,10 @@
* The format of the version string should be
* "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]"
*/
-#define NSS_VERSION "3.36.4" _NSS_CUSTOMIZED
+#define NSS_VERSION "3.38" _NSS_CUSTOMIZED
#define NSS_VMAJOR 3
-#define NSS_VMINOR 36
-#define NSS_VPATCH 4
+#define NSS_VMINOR 38
+#define NSS_VPATCH 0
#define NSS_VBUILD 0
#define NSS_BETA PR_FALSE
diff --git a/security/nss/lib/pk11wrap/pk11akey.c b/security/nss/lib/pk11wrap/pk11akey.c
index c45901ec39..346e473a96 100644
--- a/security/nss/lib/pk11wrap/pk11akey.c
+++ b/security/nss/lib/pk11wrap/pk11akey.c
@@ -804,12 +804,30 @@ PK11_MakePrivKey(PK11SlotInfo *slot, KeyType keyType,
/* don't know? look it up */
if (keyType == nullKey) {
CK_KEY_TYPE pk11Type = CKK_RSA;
+ SECItem info;
pk11Type = PK11_ReadULongAttribute(slot, privID, CKA_KEY_TYPE);
isTemp = (PRBool)!PK11_HasAttributeSet(slot, privID, CKA_TOKEN, PR_FALSE);
switch (pk11Type) {
case CKK_RSA:
keyType = rsaKey;
+ /* determine RSA key type from the CKA_PUBLIC_KEY_INFO if present */
+ rv = PK11_ReadAttribute(slot, privID, CKA_PUBLIC_KEY_INFO, NULL, &info);
+ if (rv == SECSuccess) {
+ CERTSubjectPublicKeyInfo *spki;
+
+ spki = SECKEY_DecodeDERSubjectPublicKeyInfo(&info);
+ if (spki) {
+ SECOidTag tag;
+
+ tag = SECOID_GetAlgorithmTag(&spki->algorithm);
+ if (tag == SEC_OID_PKCS1_RSA_PSS_SIGNATURE)
+ keyType = rsaPssKey;
+ SECKEY_DestroySubjectPublicKeyInfo(spki);
+ }
+ SECITEM_FreeItem(&info, PR_FALSE);
+ }
+
break;
case CKK_DSA:
keyType = dsaKey;
diff --git a/security/nss/lib/pk11wrap/pk11pars.c b/security/nss/lib/pk11wrap/pk11pars.c
index fc30222b3d..c165e1ef24 100644
--- a/security/nss/lib/pk11wrap/pk11pars.c
+++ b/security/nss/lib/pk11wrap/pk11pars.c
@@ -547,16 +547,16 @@ secmod_applyCryptoPolicy(const char *policyString,
for (i = 0; i < PR_ARRAY_SIZE(algOptList); i++) {
const oidValDef *algOpt = &algOptList[i];
unsigned name_size = algOpt->name_size;
- PRBool newValue = PR_FALSE;
+ PRBool newOption = PR_FALSE;
if ((length >= name_size) && (cipher[name_size] == '/')) {
- newValue = PR_TRUE;
+ newOption = PR_TRUE;
}
- if ((newValue || algOpt->name_size == length) &&
+ if ((newOption || algOpt->name_size == length) &&
PORT_Strncasecmp(algOpt->name, cipher, name_size) == 0) {
PRUint32 value = algOpt->val;
PRUint32 enable, disable;
- if (newValue) {
+ if (newOption) {
value = secmod_parsePolicyValue(&cipher[name_size] + 1,
length - name_size - 1);
}
diff --git a/security/nss/lib/pkcs12/p12e.c b/security/nss/lib/pkcs12/p12e.c
index 4a21d8955d..c42c4d2e2e 100644
--- a/security/nss/lib/pkcs12/p12e.c
+++ b/security/nss/lib/pkcs12/p12e.c
@@ -884,7 +884,9 @@ sec_PKCS12AddAttributeToBag(SEC_PKCS12ExportContext *p12ctxt,
unsigned int nItems = 0;
SECStatus rv;
- if (!safeBag || !p12ctxt) {
+ PORT_Assert(p12ctxt->arena == safeBag->arena);
+ if (!safeBag || !p12ctxt || p12ctxt->arena != safeBag->arena) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
@@ -1589,6 +1591,7 @@ sec_pkcs12_encoder_start_context(SEC_PKCS12ExportContext *p12exp)
params = PK11_CreatePBEParams(salt, &pwd,
NSS_PBE_DEFAULT_ITERATION_COUNT);
SECITEM_ZfreeItem(salt, PR_TRUE);
+ salt = NULL;
SECITEM_ZfreeItem(&pwd, PR_FALSE);
/* get the PBA Mechanism to generate the key */
diff --git a/security/nss/lib/pkcs7/p7decode.c b/security/nss/lib/pkcs7/p7decode.c
index 4f17b8e842..ba51955abf 100644
--- a/security/nss/lib/pkcs7/p7decode.c
+++ b/security/nss/lib/pkcs7/p7decode.c
@@ -1596,7 +1596,6 @@ sec_pkcs7_verify_signature(SEC_PKCS7ContentInfo *cinfo,
} else {
SECItem *sig;
SECItem holder;
- SECStatus rv;
/*
* No authenticated attributes.
diff --git a/security/nss/lib/pki/pki3hack.c b/security/nss/lib/pki/pki3hack.c
index fb3110a233..fab3a7a027 100644
--- a/security/nss/lib/pki/pki3hack.c
+++ b/security/nss/lib/pki/pki3hack.c
@@ -1143,8 +1143,8 @@ STAN_ChangeCertTrust(CERTCertificate *cc, CERTCertTrust *trust)
(PRBool)(trust->sslFlags & CERTDB_GOVT_APPROVED_CA);
if (c->object.cryptoContext != NULL) {
/* The cert is in a context, set the trust there */
- NSSCryptoContext *cc = c->object.cryptoContext;
- nssrv = nssCryptoContext_ImportTrust(cc, nssTrust);
+ NSSCryptoContext *cctx = c->object.cryptoContext;
+ nssrv = nssCryptoContext_ImportTrust(cctx, nssTrust);
if (nssrv != PR_SUCCESS) {
goto done;
}
diff --git a/security/nss/lib/smime/cmsrecinfo.c b/security/nss/lib/smime/cmsrecinfo.c
index 2efb6b1f22..8cab288d2e 100644
--- a/security/nss/lib/smime/cmsrecinfo.c
+++ b/security/nss/lib/smime/cmsrecinfo.c
@@ -82,7 +82,7 @@ nss_cmsrecipientinfo_create(NSSCMSMessage *cmsg,
if (DERinput) {
/* decode everything from DER */
SECItem newinput;
- SECStatus rv = SECITEM_CopyItem(poolp, &newinput, DERinput);
+ rv = SECITEM_CopyItem(poolp, &newinput, DERinput);
if (SECSuccess != rv)
goto loser;
rv = SEC_QuickDERDecodeItem(poolp, ri, NSSCMSRecipientInfoTemplate, &newinput);
diff --git a/security/nss/lib/softoken/legacydb/pcertdb.c b/security/nss/lib/softoken/legacydb/pcertdb.c
index 2e8b650ee9..47778190db 100644
--- a/security/nss/lib/softoken/legacydb/pcertdb.c
+++ b/security/nss/lib/softoken/legacydb/pcertdb.c
@@ -2577,14 +2577,13 @@ ReadDBSubjectEntry(NSSLOWCERTCertDBHandle *handle, SECItem *derSubject)
SECItem dbentry;
SECStatus rv;
+ PORT_InitCheapArena(&tmpArena, DER_DEFAULT_CHUNKSIZE);
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) {
PORT_SetError(SEC_ERROR_NO_MEMORY);
goto loser;
}
- PORT_InitCheapArena(&tmpArena, DER_DEFAULT_CHUNKSIZE);
-
entry = (certDBEntrySubject *)PORT_ArenaAlloc(arena,
sizeof(certDBEntrySubject));
if (entry == NULL) {
diff --git a/security/nss/lib/softoken/lowkey.c b/security/nss/lib/softoken/lowkey.c
index 295d55f40b..a28a3a55ee 100644
--- a/security/nss/lib/softoken/lowkey.c
+++ b/security/nss/lib/softoken/lowkey.c
@@ -45,6 +45,23 @@ const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[] = {
{ 0 }
};
+const SEC_ASN1Template nsslowkey_SubjectPublicKeyInfoTemplate[] = {
+ { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYSubjectPublicKeyInfo) },
+ { SEC_ASN1_INLINE | SEC_ASN1_XTRN,
+ offsetof(NSSLOWKEYSubjectPublicKeyInfo, algorithm),
+ SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate) },
+ { SEC_ASN1_BIT_STRING,
+ offsetof(NSSLOWKEYSubjectPublicKeyInfo, subjectPublicKey) },
+ { 0 }
+};
+
+const SEC_ASN1Template nsslowkey_RSAPublicKeyTemplate[] = {
+ { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPublicKey) },
+ { SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey, u.rsa.modulus) },
+ { SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey, u.rsa.publicExponent) },
+ { 0 }
+};
+
const SEC_ASN1Template nsslowkey_PQGParamsTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PQGParams) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams, prime) },
@@ -135,6 +152,13 @@ prepare_low_rsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
}
void
+prepare_low_rsa_pub_key_for_asn1(NSSLOWKEYPublicKey *key)
+{
+ key->u.rsa.modulus.type = siUnsignedInteger;
+ key->u.rsa.publicExponent.type = siUnsignedInteger;
+}
+
+void
prepare_low_pqg_params_for_asn1(PQGParams *params)
{
params->prime.type = siUnsignedInteger;
diff --git a/security/nss/lib/softoken/lowkeyi.h b/security/nss/lib/softoken/lowkeyi.h
index f9ba3a75f3..e599f01fa0 100644
--- a/security/nss/lib/softoken/lowkeyi.h
+++ b/security/nss/lib/softoken/lowkeyi.h
@@ -27,6 +27,7 @@ extern void prepare_low_dsa_priv_key_export_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_dh_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_ec_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_ecparams_for_asn1(ECParams *params);
+extern void prepare_low_rsa_pub_key_for_asn1(NSSLOWKEYPublicKey *key);
/*
** Destroy a private key object.
diff --git a/security/nss/lib/softoken/lowkeyti.h b/security/nss/lib/softoken/lowkeyti.h
index c048b33e74..7e77592c53 100644
--- a/security/nss/lib/softoken/lowkeyti.h
+++ b/security/nss/lib/softoken/lowkeyti.h
@@ -25,6 +25,8 @@ extern const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate[];
extern const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[];
extern const SEC_ASN1Template nsslowkey_EncryptedPrivateKeyInfoTemplate[];
+extern const SEC_ASN1Template nsslowkey_SubjectPublicKeyInfoTemplate[];
+extern const SEC_ASN1Template nsslowkey_RSAPublicKeyTemplate[];
/*
* PKCS #8 attributes
@@ -48,6 +50,13 @@ struct NSSLOWKEYPrivateKeyInfoStr {
typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo;
#define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */
+struct NSSLOWKEYSubjectPublicKeyInfoStr {
+ PLArenaPool *arena;
+ SECAlgorithmID algorithm;
+ SECItem subjectPublicKey;
+};
+typedef struct NSSLOWKEYSubjectPublicKeyInfoStr NSSLOWKEYSubjectPublicKeyInfo;
+
typedef enum {
NSSLOWKEYNullKey = 0,
NSSLOWKEYRSAKey = 1,
diff --git a/security/nss/lib/softoken/lowpbe.c b/security/nss/lib/softoken/lowpbe.c
index 0a47804bf1..4a101c68c4 100644
--- a/security/nss/lib/softoken/lowpbe.c
+++ b/security/nss/lib/softoken/lowpbe.c
@@ -1073,15 +1073,15 @@ sec_pkcs5_rc2(SECItem *key, SECItem *iv, SECItem *src, PRBool dummy,
}
if (encrypt != PR_FALSE) {
- void *dummy;
+ void *v;
- dummy = CBC_PadBuffer(NULL, dup_src->data,
- dup_src->len, &dup_src->len, 8 /* RC2_BLOCK_SIZE */);
- if (dummy == NULL) {
+ v = CBC_PadBuffer(NULL, dup_src->data,
+ dup_src->len, &dup_src->len, 8 /* RC2_BLOCK_SIZE */);
+ if (v == NULL) {
SECITEM_FreeItem(dup_src, PR_TRUE);
return NULL;
}
- dup_src->data = (unsigned char *)dummy;
+ dup_src->data = (unsigned char *)v;
}
dest = (SECItem *)PORT_ZAlloc(sizeof(SECItem));
diff --git a/security/nss/lib/softoken/pkcs11.c b/security/nss/lib/softoken/pkcs11.c
index 77882a274e..34f25a9d06 100644
--- a/security/nss/lib/softoken/pkcs11.c
+++ b/security/nss/lib/softoken/pkcs11.c
@@ -1343,7 +1343,6 @@ sftk_handleSecretKeyObject(SFTKSession *session, SFTKObject *object,
if (sftk_isTrue(object, CKA_TOKEN)) {
SFTKSlot *slot = session->slot;
SFTKDBHandle *keyHandle = sftk_getKeyDB(slot);
- CK_RV crv;
if (keyHandle == NULL) {
return CKR_TOKEN_WRITE_PROTECTED;
@@ -3807,12 +3806,12 @@ NSC_SetPIN(CK_SESSION_HANDLE hSession, CK_CHAR_PTR pOldPin,
PZ_Unlock(slot->slotLock);
/* Reset login flags. */
if (ulNewLen == 0) {
- PRBool tokenRemoved = PR_FALSE;
PZ_Lock(slot->slotLock);
slot->isLoggedIn = PR_FALSE;
slot->ssoLoggedIn = PR_FALSE;
PZ_Unlock(slot->slotLock);
+ tokenRemoved = PR_FALSE;
rv = sftkdb_CheckPassword(handle, "", &tokenRemoved);
if (tokenRemoved) {
sftk_CloseAllSessions(slot, PR_FALSE);
@@ -4422,6 +4421,44 @@ NSC_GetObjectSize(CK_SESSION_HANDLE hSession,
return CKR_OK;
}
+static CK_RV
+nsc_GetTokenAttributeValue(SFTKSession *session, CK_OBJECT_HANDLE hObject,
+ CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount)
+{
+ SFTKSlot *slot = sftk_SlotFromSession(session);
+ SFTKDBHandle *dbHandle = sftk_getDBForTokenObject(slot, hObject);
+ SFTKDBHandle *keydb = NULL;
+ CK_RV crv;
+
+ if (dbHandle == NULL) {
+ return CKR_OBJECT_HANDLE_INVALID;
+ }
+
+ crv = sftkdb_GetAttributeValue(dbHandle, hObject, pTemplate, ulCount);
+
+ /* make sure we don't export any sensitive information */
+ keydb = sftk_getKeyDB(slot);
+ if (dbHandle == keydb) {
+ CK_ULONG i;
+ for (i = 0; i < ulCount; i++) {
+ if (sftk_isSensitive(pTemplate[i].type, CKO_PRIVATE_KEY)) {
+ crv = CKR_ATTRIBUTE_SENSITIVE;
+ if (pTemplate[i].pValue && (pTemplate[i].ulValueLen != -1)) {
+ PORT_Memset(pTemplate[i].pValue, 0,
+ pTemplate[i].ulValueLen);
+ }
+ pTemplate[i].ulValueLen = -1;
+ }
+ }
+ }
+
+ sftk_freeDB(dbHandle);
+ if (keydb) {
+ sftk_freeDB(keydb);
+ }
+ return crv;
+}
+
/* NSC_GetAttributeValue obtains the value of one or more object attributes. */
CK_RV
NSC_GetAttributeValue(CK_SESSION_HANDLE hSession,
@@ -4450,37 +4487,8 @@ NSC_GetAttributeValue(CK_SESSION_HANDLE hSession,
/* short circuit everything for token objects */
if (sftk_isToken(hObject)) {
- SFTKSlot *slot = sftk_SlotFromSession(session);
- SFTKDBHandle *dbHandle = sftk_getDBForTokenObject(slot, hObject);
- SFTKDBHandle *keydb = NULL;
-
- if (dbHandle == NULL) {
- sftk_FreeSession(session);
- return CKR_OBJECT_HANDLE_INVALID;
- }
-
- crv = sftkdb_GetAttributeValue(dbHandle, hObject, pTemplate, ulCount);
-
- /* make sure we don't export any sensitive information */
- keydb = sftk_getKeyDB(slot);
- if (dbHandle == keydb) {
- for (i = 0; i < (int)ulCount; i++) {
- if (sftk_isSensitive(pTemplate[i].type, CKO_PRIVATE_KEY)) {
- crv = CKR_ATTRIBUTE_SENSITIVE;
- if (pTemplate[i].pValue && (pTemplate[i].ulValueLen != -1)) {
- PORT_Memset(pTemplate[i].pValue, 0,
- pTemplate[i].ulValueLen);
- }
- pTemplate[i].ulValueLen = -1;
- }
- }
- }
-
+ crv = nsc_GetTokenAttributeValue(session, hObject, pTemplate, ulCount);
sftk_FreeSession(session);
- sftk_freeDB(dbHandle);
- if (keydb) {
- sftk_freeDB(keydb);
- }
return crv;
}
diff --git a/security/nss/lib/softoken/pkcs11c.c b/security/nss/lib/softoken/pkcs11c.c
index d675d73315..385d3c1444 100644
--- a/security/nss/lib/softoken/pkcs11c.c
+++ b/security/nss/lib/softoken/pkcs11c.c
@@ -5324,7 +5324,52 @@ sftk_PackagePrivateKey(SFTKObject *key, CK_RV *crvp)
prepare_low_rsa_priv_key_for_asn1(lk);
dummy = SEC_ASN1EncodeItem(arena, &pki->privateKey, lk,
nsslowkey_RSAPrivateKeyTemplate);
- algorithm = SEC_OID_PKCS1_RSA_ENCRYPTION;
+
+ /* determine RSA key type from the CKA_PUBLIC_KEY_INFO if present */
+ attribute = sftk_FindAttribute(key, CKA_PUBLIC_KEY_INFO);
+ if (attribute) {
+ NSSLOWKEYSubjectPublicKeyInfo *publicKeyInfo;
+ SECItem spki;
+
+ spki.data = attribute->attrib.pValue;
+ spki.len = attribute->attrib.ulValueLen;
+
+ publicKeyInfo = PORT_ArenaZAlloc(arena,
+ sizeof(NSSLOWKEYSubjectPublicKeyInfo));
+ if (!publicKeyInfo) {
+ sftk_FreeAttribute(attribute);
+ *crvp = CKR_HOST_MEMORY;
+ rv = SECFailure;
+ goto loser;
+ }
+ rv = SEC_QuickDERDecodeItem(arena, publicKeyInfo,
+ nsslowkey_SubjectPublicKeyInfoTemplate,
+ &spki);
+ if (rv != SECSuccess) {
+ sftk_FreeAttribute(attribute);
+ *crvp = CKR_KEY_TYPE_INCONSISTENT;
+ goto loser;
+ }
+ algorithm = SECOID_GetAlgorithmTag(&publicKeyInfo->algorithm);
+ if (algorithm != SEC_OID_PKCS1_RSA_ENCRYPTION &&
+ algorithm != SEC_OID_PKCS1_RSA_PSS_SIGNATURE) {
+ sftk_FreeAttribute(attribute);
+ rv = SECFailure;
+ *crvp = CKR_KEY_TYPE_INCONSISTENT;
+ goto loser;
+ }
+ param = SECITEM_DupItem(&publicKeyInfo->algorithm.parameters);
+ if (!param) {
+ sftk_FreeAttribute(attribute);
+ rv = SECFailure;
+ *crvp = CKR_HOST_MEMORY;
+ goto loser;
+ }
+ sftk_FreeAttribute(attribute);
+ } else {
+ /* default to PKCS #1 */
+ algorithm = SEC_OID_PKCS1_RSA_ENCRYPTION;
+ }
break;
case NSSLOWKEYDSAKey:
prepare_low_dsa_priv_key_export_for_asn1(lk);
@@ -5803,6 +5848,53 @@ sftk_unwrapPrivateKey(SFTKObject *key, SECItem *bpki)
break;
}
+ if (crv != CKR_OK) {
+ goto loser;
+ }
+
+ /* For RSA-PSS, record the original algorithm parameters so
+ * they can be encrypted altoghether when wrapping */
+ if (SECOID_GetAlgorithmTag(&pki->algorithm) == SEC_OID_PKCS1_RSA_PSS_SIGNATURE) {
+ NSSLOWKEYSubjectPublicKeyInfo spki;
+ NSSLOWKEYPublicKey pubk;
+ SECItem *publicKeyInfo;
+
+ memset(&spki, 0, sizeof(NSSLOWKEYSubjectPublicKeyInfo));
+ rv = SECOID_CopyAlgorithmID(arena, &spki.algorithm, &pki->algorithm);
+ if (rv != SECSuccess) {
+ crv = CKR_HOST_MEMORY;
+ goto loser;
+ }
+
+ prepare_low_rsa_pub_key_for_asn1(&pubk);
+
+ rv = SECITEM_CopyItem(arena, &pubk.u.rsa.modulus, &lpk->u.rsa.modulus);
+ if (rv != SECSuccess) {
+ crv = CKR_HOST_MEMORY;
+ goto loser;
+ }
+ rv = SECITEM_CopyItem(arena, &pubk.u.rsa.publicExponent, &lpk->u.rsa.publicExponent);
+ if (rv != SECSuccess) {
+ crv = CKR_HOST_MEMORY;
+ goto loser;
+ }
+
+ if (SEC_ASN1EncodeItem(arena, &spki.subjectPublicKey,
+ &pubk, nsslowkey_RSAPublicKeyTemplate) == NULL) {
+ crv = CKR_HOST_MEMORY;
+ goto loser;
+ }
+
+ publicKeyInfo = SEC_ASN1EncodeItem(arena, NULL,
+ &spki, nsslowkey_SubjectPublicKeyInfoTemplate);
+ if (!publicKeyInfo) {
+ crv = CKR_HOST_MEMORY;
+ goto loser;
+ }
+ crv = sftk_AddAttributeType(key, CKA_PUBLIC_KEY_INFO,
+ sftk_item_expand(publicKeyInfo));
+ }
+
loser:
if (lpk) {
nsslowkey_DestroyPrivateKey(lpk);
@@ -7575,13 +7667,13 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession,
(const CK_NSS_HKDFParams *)pMechanism->pParameter;
const SECHashObject *rawHash;
unsigned hashLen;
- CK_BYTE buf[HASH_LENGTH_MAX];
+ CK_BYTE hashbuf[HASH_LENGTH_MAX];
CK_BYTE *prk; /* psuedo-random key */
CK_ULONG prkLen;
CK_BYTE *okm; /* output keying material */
rawHash = HASH_GetRawHashObject(hashType);
- if (rawHash == NULL || rawHash->length > sizeof buf) {
+ if (rawHash == NULL || rawHash->length > sizeof(hashbuf)) {
crv = CKR_FUNCTION_FAILED;
break;
}
@@ -7615,7 +7707,7 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession,
saltLen = params->ulSaltLen;
if (salt == NULL) {
saltLen = hashLen;
- salt = buf;
+ salt = hashbuf;
memset(salt, 0, saltLen);
}
hmac = HMAC_Create(rawHash, salt, saltLen, isFIPS);
@@ -7626,10 +7718,10 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession,
HMAC_Begin(hmac);
HMAC_Update(hmac, (const unsigned char *)att->attrib.pValue,
att->attrib.ulValueLen);
- HMAC_Finish(hmac, buf, &bufLen, sizeof(buf));
+ HMAC_Finish(hmac, hashbuf, &bufLen, sizeof(hashbuf));
HMAC_Destroy(hmac, PR_TRUE);
PORT_Assert(bufLen == rawHash->length);
- prk = buf;
+ prk = hashbuf;
prkLen = bufLen;
} else {
/* PRK = base key value */
@@ -7646,24 +7738,24 @@ NSC_DeriveKey(CK_SESSION_HANDLE hSession,
* key material = T(1) | ... | T(n)
*/
HMACContext *hmac;
- CK_BYTE i;
+ CK_BYTE bi;
unsigned iterations = PR_ROUNDUP(keySize, hashLen) / hashLen;
hmac = HMAC_Create(rawHash, prk, prkLen, isFIPS);
if (hmac == NULL) {
crv = CKR_HOST_MEMORY;
break;
}
- for (i = 1; i <= iterations; ++i) {
+ for (bi = 1; bi <= iterations; ++bi) {
unsigned len;
HMAC_Begin(hmac);
- if (i > 1) {
- HMAC_Update(hmac, key_block + ((i - 2) * hashLen), hashLen);
+ if (bi > 1) {
+ HMAC_Update(hmac, key_block + ((bi - 2) * hashLen), hashLen);
}
if (params->ulInfoLen != 0) {
HMAC_Update(hmac, params->pInfo, params->ulInfoLen);
}
- HMAC_Update(hmac, &i, 1);
- HMAC_Finish(hmac, key_block + ((i - 1) * hashLen), &len,
+ HMAC_Update(hmac, &bi, 1);
+ HMAC_Finish(hmac, key_block + ((bi - 1) * hashLen), &len,
hashLen);
PORT_Assert(len == hashLen);
}
diff --git a/security/nss/lib/softoken/pkcs11u.c b/security/nss/lib/softoken/pkcs11u.c
index 27e411759e..7b5fe732f3 100644
--- a/security/nss/lib/softoken/pkcs11u.c
+++ b/security/nss/lib/softoken/pkcs11u.c
@@ -1193,7 +1193,7 @@ sftk_DeleteObject(SFTKSession *session, SFTKObject *object)
/* Handle Token case */
if (so && so->session) {
- SFTKSession *session = so->session;
+ session = so->session;
PZ_Lock(session->objectLock);
sftkqueue_delete(&so->sessionList, 0, session->objects, 0);
PZ_Unlock(session->objectLock);
@@ -1269,7 +1269,7 @@ static const CK_ULONG ecPubKeyAttrsCount =
static const CK_ATTRIBUTE_TYPE commonPrivKeyAttrs[] = {
CKA_DECRYPT, CKA_SIGN, CKA_SIGN_RECOVER, CKA_UNWRAP, CKA_SUBJECT,
- CKA_SENSITIVE, CKA_EXTRACTABLE, CKA_NETSCAPE_DB
+ CKA_SENSITIVE, CKA_EXTRACTABLE, CKA_NETSCAPE_DB, CKA_PUBLIC_KEY_INFO
};
static const CK_ULONG commonPrivKeyAttrsCount =
sizeof(commonPrivKeyAttrs) / sizeof(commonPrivKeyAttrs[0]);
diff --git a/security/nss/lib/softoken/sdb.c b/security/nss/lib/softoken/sdb.c
index 96717cb268..fb897d68cc 100644
--- a/security/nss/lib/softoken/sdb.c
+++ b/security/nss/lib/softoken/sdb.c
@@ -37,6 +37,10 @@
#elif defined(XP_UNIX)
#include <unistd.h>
#endif
+#if defined(LINUX) && !defined(ANDROID)
+#include <linux/magic.h>
+#include <sys/vfs.h>
+#endif
#include "utilpars.h"
#ifdef SQLITE_UNSAFE_THREADS
@@ -154,7 +158,8 @@ static const CK_ATTRIBUTE_TYPE known_attributes[] = {
CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_IPSEC_END_SYSTEM,
CKA_TRUST_IPSEC_TUNNEL, CKA_TRUST_IPSEC_USER, CKA_TRUST_TIME_STAMPING,
CKA_TRUST_STEP_UP_APPROVED, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH,
- CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS
+ CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS,
+ CKA_PUBLIC_KEY_INFO
};
static int known_attributes_size = sizeof(known_attributes) /
@@ -643,13 +648,18 @@ static int
sdb_openDB(const char *name, sqlite3 **sqlDB, int flags)
{
int sqlerr;
- /*
- * in sqlite3 3.5.0, there is a new open call that allows us
- * to specify read only. Most new OS's are still on 3.3.x (including
- * NSS's internal version and the version shipped with Firefox).
- */
+ int openFlags;
+
*sqlDB = NULL;
- sqlerr = sqlite3_open(name, sqlDB);
+
+ if (flags & SDB_RDONLY) {
+ openFlags = SQLITE_OPEN_READONLY;
+ } else {
+ openFlags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
+ }
+
+ /* Requires SQLite 3.5.0 or newer. */
+ sqlerr = sqlite3_open_v2(name, sqlDB, openFlags, NULL);
if (sqlerr != SQLITE_OK) {
return sqlerr;
}
@@ -1757,6 +1767,8 @@ sdb_init(char *dbname, char *table, sdbDataType type, int *inUpdate,
PRIntervalTime now = 0;
char *env;
PRBool enableCache = PR_FALSE;
+ PRBool checkFSType = PR_FALSE;
+ PRBool measureSpeed = PR_FALSE;
PRBool create;
int flags = inFlags & 0x7;
@@ -1917,11 +1929,48 @@ sdb_init(char *dbname, char *table, sdbDataType type, int *inUpdate,
env = PR_GetEnvSecure("NSS_SDB_USE_CACHE");
- if (!env || PORT_Strcasecmp(env, "no") == 0) {
- enableCache = PR_FALSE;
+ /* Variables enableCache, checkFSType, measureSpeed are PR_FALSE by default,
+ * which is the expected behavior for NSS_SDB_USE_CACHE="no".
+ * We don't need to check for "no" here. */
+ if (!env) {
+ /* By default, with no variable set, we avoid expensive measuring for
+ * most FS types. We start with inexpensive FS type checking, and
+ * might perform measuring for some types. */
+ checkFSType = PR_TRUE;
} else if (PORT_Strcasecmp(env, "yes") == 0) {
enableCache = PR_TRUE;
- } else {
+ } else if (PORT_Strcasecmp(env, "no") != 0) { /* not "no" => "auto" */
+ measureSpeed = PR_TRUE;
+ }
+
+ if (checkFSType) {
+#if defined(LINUX) && !defined(ANDROID)
+ struct statfs statfs_s;
+ if (statfs(dbname, &statfs_s) == 0) {
+ switch (statfs_s.f_type) {
+ case SMB_SUPER_MAGIC:
+ case 0xff534d42: /* CIFS_MAGIC_NUMBER */
+ case NFS_SUPER_MAGIC:
+ /* We assume these are slow. */
+ enableCache = PR_TRUE;
+ break;
+ case CODA_SUPER_MAGIC:
+ case 0x65735546: /* FUSE_SUPER_MAGIC */
+ case NCP_SUPER_MAGIC:
+ /* It's uncertain if this FS is fast or slow.
+ * It seems reasonable to perform slow measuring for users
+ * with questionable FS speed. */
+ measureSpeed = PR_TRUE;
+ break;
+ case AFS_SUPER_MAGIC: /* Already implements caching. */
+ default:
+ break;
+ }
+ }
+#endif
+ }
+
+ if (measureSpeed) {
char *tempDir = NULL;
PRUint32 tempOps = 0;
/*
diff --git a/security/nss/lib/softoken/sftkdb.c b/security/nss/lib/softoken/sftkdb.c
index 2ae0840682..409c910f46 100644
--- a/security/nss/lib/softoken/sftkdb.c
+++ b/security/nss/lib/softoken/sftkdb.c
@@ -1591,7 +1591,8 @@ static const CK_ATTRIBUTE_TYPE known_attributes[] = {
CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_IPSEC_END_SYSTEM,
CKA_TRUST_IPSEC_TUNNEL, CKA_TRUST_IPSEC_USER, CKA_TRUST_TIME_STAMPING,
CKA_TRUST_STEP_UP_APPROVED, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH,
- CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS
+ CKA_NETSCAPE_DB, CKA_NETSCAPE_TRUST, CKA_NSS_OVERRIDE_EXTENSIONS,
+ CKA_PUBLIC_KEY_INFO
};
static unsigned int known_attributes_size = sizeof(known_attributes) /
diff --git a/security/nss/lib/softoken/sftkpars.c b/security/nss/lib/softoken/sftkpars.c
index e972fe8541..5e96a1c040 100644
--- a/security/nss/lib/softoken/sftkpars.c
+++ b/security/nss/lib/softoken/sftkpars.c
@@ -162,7 +162,7 @@ sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS)
}
if (parsed->tokens == NULL) {
int count = isFIPS ? 1 : 2;
- int index = count - 1;
+ int i = count - 1;
sftk_token_parameters *tokens = NULL;
tokens = (sftk_token_parameters *)
@@ -172,30 +172,30 @@ sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS)
}
parsed->tokens = tokens;
parsed->token_count = count;
- tokens[index].slotID = isFIPS ? FIPS_SLOT_ID : PRIVATE_KEY_SLOT_ID;
- tokens[index].certPrefix = certPrefix;
- tokens[index].keyPrefix = keyPrefix;
- tokens[index].minPW = minPW ? atoi(minPW) : 0;
- tokens[index].readOnly = parsed->readOnly;
- tokens[index].noCertDB = parsed->noCertDB;
- tokens[index].noKeyDB = parsed->noCertDB;
- tokens[index].forceOpen = parsed->forceOpen;
- tokens[index].pwRequired = parsed->pwRequired;
- tokens[index].optimizeSpace = parsed->optimizeSpace;
+ tokens[i].slotID = isFIPS ? FIPS_SLOT_ID : PRIVATE_KEY_SLOT_ID;
+ tokens[i].certPrefix = certPrefix;
+ tokens[i].keyPrefix = keyPrefix;
+ tokens[i].minPW = minPW ? atoi(minPW) : 0;
+ tokens[i].readOnly = parsed->readOnly;
+ tokens[i].noCertDB = parsed->noCertDB;
+ tokens[i].noKeyDB = parsed->noCertDB;
+ tokens[i].forceOpen = parsed->forceOpen;
+ tokens[i].pwRequired = parsed->pwRequired;
+ tokens[i].optimizeSpace = parsed->optimizeSpace;
tokens[0].optimizeSpace = parsed->optimizeSpace;
certPrefix = NULL;
keyPrefix = NULL;
if (isFIPS) {
- tokens[index].tokdes = ftokdes;
- tokens[index].updtokdes = pupdtokdes;
- tokens[index].slotdes = fslotdes;
+ tokens[i].tokdes = ftokdes;
+ tokens[i].updtokdes = pupdtokdes;
+ tokens[i].slotdes = fslotdes;
fslotdes = NULL;
ftokdes = NULL;
pupdtokdes = NULL;
} else {
- tokens[index].tokdes = ptokdes;
- tokens[index].updtokdes = pupdtokdes;
- tokens[index].slotdes = pslotdes;
+ tokens[i].tokdes = ptokdes;
+ tokens[i].updtokdes = pupdtokdes;
+ tokens[i].slotdes = pslotdes;
tokens[0].slotID = NETSCAPE_SLOT_ID;
tokens[0].tokdes = tokdes;
tokens[0].slotdes = slotdes;
diff --git a/security/nss/lib/softoken/sftkpwd.c b/security/nss/lib/softoken/sftkpwd.c
index e0d2df9ab4..9834d3ba01 100644
--- a/security/nss/lib/softoken/sftkpwd.c
+++ b/security/nss/lib/softoken/sftkpwd.c
@@ -138,12 +138,14 @@ sftkdb_decodeCipherText(SECItem *cipherText, sftkCipherValue *cipherValue)
SFTKDBEncryptedDataInfo edi;
SECStatus rv;
+ PORT_Assert(cipherValue);
+ cipherValue->arena = NULL;
+ cipherValue->param = NULL;
+
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) {
return SECFailure;
}
- cipherValue->arena = NULL;
- cipherValue->param = NULL;
rv = SEC_QuickDERDecodeItem(arena, &edi, sftkdb_EncryptedDataInfoTemplate,
cipherText);
diff --git a/security/nss/lib/softoken/softkver.h b/security/nss/lib/softoken/softkver.h
index f760ba21d8..827bf2e221 100644
--- a/security/nss/lib/softoken/softkver.h
+++ b/security/nss/lib/softoken/softkver.h
@@ -17,10 +17,10 @@
* The format of the version string should be
* "<major version>.<minor version>[.<patch level>[.<build number>]][ <ECC>][ <Beta>]"
*/
-#define SOFTOKEN_VERSION "3.36.4" SOFTOKEN_ECC_STRING
+#define SOFTOKEN_VERSION "3.38" SOFTOKEN_ECC_STRING
#define SOFTOKEN_VMAJOR 3
-#define SOFTOKEN_VMINOR 36
-#define SOFTOKEN_VPATCH 4
+#define SOFTOKEN_VMINOR 38
+#define SOFTOKEN_VPATCH 0
#define SOFTOKEN_VBUILD 0
#define SOFTOKEN_BETA PR_FALSE
diff --git a/security/nss/lib/ssl/SSLerrs.h b/security/nss/lib/ssl/SSLerrs.h
index d3f0875442..f01d165833 100644
--- a/security/nss/lib/ssl/SSLerrs.h
+++ b/security/nss/lib/ssl/SSLerrs.h
@@ -374,7 +374,7 @@ ER3(SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY, (SSL_ERROR_BASE + 115),
"SSL received a weak ephemeral Diffie-Hellman key in Server Key Exchange handshake message.")
ER3(SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID, (SSL_ERROR_BASE + 116),
- "SSL received invalid NPN extension data.")
+ "SSL received invalid ALPN extension data.")
ER3(SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_SSL2, (SSL_ERROR_BASE + 117),
"SSL feature not supported for SSL 2.0 connections.")
@@ -543,3 +543,12 @@ ER3(SSL_ERROR_TOO_MANY_KEY_UPDATES, (SSL_ERROR_BASE + 171),
ER3(SSL_ERROR_HANDSHAKE_FAILED, (SSL_ERROR_BASE + 172),
"SSL handshake has already failed. No more operations possible.")
+
+ER3(SSL_ERROR_BAD_RESUMPTION_TOKEN_ERROR, (SSL_ERROR_BASE + 173),
+ "SSL received an invalid resumption token.")
+
+ER3(SSL_ERROR_RX_MALFORMED_DTLS_ACK, (SSL_ERROR_BASE + 174),
+ "SSL received a malformed DTLS ACK")
+
+ER3(SSL_ERROR_DH_KEY_TOO_LONG, (SSL_ERROR_BASE + 175),
+ "SSL received a DH key share that's too long (>8192 bit).")
diff --git a/security/nss/lib/ssl/dtls13con.c b/security/nss/lib/ssl/dtls13con.c
index aba0f62ab8..de6cb47ca2 100644
--- a/security/nss/lib/ssl/dtls13con.c
+++ b/security/nss/lib/ssl/dtls13con.c
@@ -11,6 +11,43 @@
#include "sslimpl.h"
#include "sslproto.h"
+SECStatus
+dtls13_InsertCipherTextHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec,
+ sslBuffer *wrBuf, PRBool *needsLength)
+{
+ PRUint32 seq;
+ SECStatus rv;
+
+ /* Avoid using short records for the handshake. We pack multiple records
+ * into the one datagram for the handshake. */
+ if (ss->opt.enableDtlsShortHeader &&
+ cwSpec->epoch != TrafficKeyHandshake) {
+ *needsLength = PR_FALSE;
+ /* The short header is comprised of two octets in the form
+ * 0b001essssssssssss where 'e' is the low bit of the epoch and 's' is
+ * the low 12 bits of the sequence number. */
+ seq = 0x2000 |
+ (((uint64_t)cwSpec->epoch & 1) << 12) |
+ (cwSpec->nextSeqNum & 0xfff);
+ return sslBuffer_AppendNumber(wrBuf, seq, 2);
+ }
+
+ rv = sslBuffer_AppendNumber(wrBuf, content_application_data, 1);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+
+ /* The epoch and sequence number are encoded on 4 octets, with the epoch
+ * consuming the first two bits. */
+ seq = (((uint64_t)cwSpec->epoch & 3) << 30) | (cwSpec->nextSeqNum & 0x3fffffff);
+ rv = sslBuffer_AppendNumber(wrBuf, seq, 4);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ *needsLength = PR_TRUE;
+ return SECSuccess;
+}
+
/* DTLS 1.3 Record map for ACK processing.
* This represents a single fragment, so a record which includes
* multiple fragments will have one entry for each fragment on the
@@ -82,10 +119,15 @@ dtls13_SendAck(sslSocket *ss)
SECStatus rv = SECSuccess;
PRCList *cursor;
PRInt32 sent;
+ unsigned int offset;
SSL_TRC(10, ("%d: SSL3[%d]: Sending ACK",
SSL_GETPID(), ss->fd));
+ rv = sslBuffer_Skip(&buf, 2, &offset);
+ if (rv != SECSuccess) {
+ goto loser;
+ }
for (cursor = PR_LIST_HEAD(&ss->ssl3.hs.dtlsRcvdHandshake);
cursor != &ss->ssl3.hs.dtlsRcvdHandshake;
cursor = PR_NEXT_LINK(cursor)) {
@@ -99,6 +141,11 @@ dtls13_SendAck(sslSocket *ss)
}
}
+ rv = sslBuffer_InsertLength(&buf, offset, 2);
+ if (rv != SECSuccess) {
+ goto loser;
+ }
+
ssl_GetXmitBufLock(ss);
sent = ssl3_SendRecord(ss, NULL, content_ack,
buf.buf, buf.len, 0);
@@ -364,6 +411,7 @@ dtls13_HandleAck(sslSocket *ss, sslBuffer *databuf)
{
PRUint8 *b = databuf->buf;
PRUint32 l = databuf->len;
+ unsigned int length;
SECStatus rv;
/* Ensure we don't loop. */
@@ -372,10 +420,19 @@ dtls13_HandleAck(sslSocket *ss, sslBuffer *databuf)
PORT_Assert(IS_DTLS(ss));
if (!tls13_MaybeTls13(ss)) {
tls13_FatalError(ss, SSL_ERROR_RX_UNKNOWN_RECORD_TYPE, illegal_parameter);
- return SECSuccess;
+ return SECFailure;
}
SSL_TRC(10, ("%d: SSL3[%d]: Handling ACK", SSL_GETPID(), ss->fd));
+ rv = ssl3_ConsumeHandshakeNumber(ss, &length, 2, &b, &l);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ if (length != l) {
+ tls13_FatalError(ss, SSL_ERROR_RX_MALFORMED_DTLS_ACK, decode_error);
+ return SECFailure;
+ }
+
while (l > 0) {
PRUint64 seq;
PRCList *cursor;
diff --git a/security/nss/lib/ssl/dtls13con.h b/security/nss/lib/ssl/dtls13con.h
index bf14d3bd2e..ca48ef3638 100644
--- a/security/nss/lib/ssl/dtls13con.h
+++ b/security/nss/lib/ssl/dtls13con.h
@@ -9,6 +9,10 @@
#ifndef __dtls13con_h_
#define __dtls13con_h_
+SECStatus dtls13_InsertCipherTextHeader(const sslSocket *ss,
+ ssl3CipherSpec *cwSpec,
+ sslBuffer *wrBuf,
+ PRBool *needsLength);
SECStatus dtls13_RememberFragment(sslSocket *ss, PRCList *list,
PRUint32 sequence, PRUint32 offset,
PRUint32 length, DTLSEpoch epoch,
diff --git a/security/nss/lib/ssl/dtlscon.c b/security/nss/lib/ssl/dtlscon.c
index 2f335f9247..a82295c668 100644
--- a/security/nss/lib/ssl/dtlscon.c
+++ b/security/nss/lib/ssl/dtlscon.c
@@ -724,13 +724,16 @@ dtls_FragmentHandshake(sslSocket *ss, DTLSQueuedMessage *msg)
PORT_Assert(end <= contentLen);
fragmentLen = PR_MIN(end, contentLen) - fragmentOffset;
- /* Reduce to the space remaining in the MTU. Allow for any existing
- * messages, record expansion, and the handshake header. */
+ /* Limit further by the record size limit. Account for the header. */
+ fragmentLen = PR_MIN(fragmentLen,
+ msg->cwSpec->recordSizeLimit - DTLS_HS_HDR_LEN);
+
+ /* Reduce to the space remaining in the MTU. */
fragmentLen = PR_MIN(fragmentLen,
ss->ssl3.mtu - /* MTU estimate. */
- ss->pendingBuf.len - /* Less unsent records. */
+ ss->pendingBuf.len - /* Less any unsent records. */
DTLS_MAX_EXPANSION - /* Allow for expansion. */
- DTLS_HS_HDR_LEN); /* + handshake header. */
+ DTLS_HS_HDR_LEN); /* And the handshake header. */
PORT_Assert(fragmentLen > 0 || fragmentOffset == 0);
/* Make totally sure that we will fit in the buffer. This should be
@@ -776,7 +779,7 @@ dtls_FragmentHandshake(sslSocket *ss, DTLSQueuedMessage *msg)
rv = dtls13_RememberFragment(ss, &ss->ssl3.hs.dtlsSentHandshake,
msgSeq, fragmentOffset, fragmentLen,
msg->cwSpec->epoch,
- msg->cwSpec->seqNum);
+ msg->cwSpec->nextSeqNum);
if (rv != SECSuccess) {
return SECFailure;
}
@@ -1319,6 +1322,107 @@ DTLS_GetHandshakeTimeout(PRFileDesc *socket, PRIntervalTime *timeout)
return SECSuccess;
}
+PRBool
+dtls_IsLongHeader(SSL3ProtocolVersion version, PRUint8 firstOctet)
+{
+#ifndef UNSAFE_FUZZER_MODE
+ return version < SSL_LIBRARY_VERSION_TLS_1_3 ||
+ firstOctet == content_handshake ||
+ firstOctet == content_ack ||
+ firstOctet == content_alert;
+#else
+ return PR_TRUE;
+#endif
+}
+
+DTLSEpoch
+dtls_ReadEpoch(const ssl3CipherSpec *crSpec, const PRUint8 *hdr)
+{
+ DTLSEpoch epoch;
+ DTLSEpoch maxEpoch;
+ DTLSEpoch partial;
+
+ if (dtls_IsLongHeader(crSpec->version, hdr[0])) {
+ return ((DTLSEpoch)hdr[3] << 8) | hdr[4];
+ }
+
+ /* A lot of how we recover the epoch here will depend on how we plan to
+ * manage KeyUpdate. In the case that we decide to install a new read spec
+ * as a KeyUpdate is handled, crSpec will always be the highest epoch we can
+ * possibly receive. That makes this easier to manage. */
+ if ((hdr[0] & 0xe0) == 0x20) {
+ /* Use crSpec->epoch, or crSpec->epoch - 1 if the last bit differs. */
+ if (((hdr[0] >> 4) & 1) == (crSpec->epoch & 1)) {
+ return crSpec->epoch;
+ }
+ return crSpec->epoch - 1;
+ }
+
+ /* dtls_GatherData should ensure that this works. */
+ PORT_Assert(hdr[0] == content_application_data);
+
+ /* This uses the same method as is used to recover the sequence number in
+ * dtls_ReadSequenceNumber, except that the maximum value is set to the
+ * current epoch. */
+ partial = hdr[1] >> 6;
+ maxEpoch = PR_MAX(crSpec->epoch, 3);
+ epoch = (maxEpoch & 0xfffc) | partial;
+ if (partial > (maxEpoch & 0x03)) {
+ epoch -= 4;
+ }
+ return epoch;
+}
+
+static sslSequenceNumber
+dtls_ReadSequenceNumber(const ssl3CipherSpec *spec, const PRUint8 *hdr)
+{
+ sslSequenceNumber cap;
+ sslSequenceNumber partial;
+ sslSequenceNumber seqNum;
+ sslSequenceNumber mask;
+
+ if (dtls_IsLongHeader(spec->version, hdr[0])) {
+ static const unsigned int seqNumOffset = 5; /* type, version, epoch */
+ static const unsigned int seqNumLength = 6;
+ sslReader r = SSL_READER(hdr + seqNumOffset, seqNumLength);
+ (void)sslRead_ReadNumber(&r, seqNumLength, &seqNum);
+ return seqNum;
+ }
+
+ /* Only the least significant bits of the sequence number is available here.
+ * This recovers the value based on the next expected sequence number.
+ *
+ * This works by determining the maximum possible sequence number, which is
+ * half the range of possible values above the expected next value (the
+ * expected next value is in |spec->seqNum|). Then, the last part of the
+ * sequence number is replaced. If that causes the value to exceed the
+ * maximum, subtract an entire range.
+ */
+ if ((hdr[0] & 0xe0) == 0x20) {
+ /* A 12-bit sequence number. */
+ cap = spec->nextSeqNum + (1ULL << 11);
+ partial = (((sslSequenceNumber)hdr[0] & 0xf) << 8) |
+ (sslSequenceNumber)hdr[1];
+ mask = (1ULL << 12) - 1;
+ } else {
+ /* A 30-bit sequence number. */
+ cap = spec->nextSeqNum + (1ULL << 29);
+ partial = (((sslSequenceNumber)hdr[1] & 0x3f) << 24) |
+ ((sslSequenceNumber)hdr[2] << 16) |
+ ((sslSequenceNumber)hdr[3] << 8) |
+ (sslSequenceNumber)hdr[4];
+ mask = (1ULL << 30) - 1;
+ }
+ seqNum = (cap & ~mask) | partial;
+ /* The second check prevents the value from underflowing if we get a large
+ * gap at the start of a connection, where this subtraction would cause the
+ * sequence number to wrap to near UINT64_MAX. */
+ if ((partial > (cap & mask)) && (seqNum > mask)) {
+ seqNum -= mask + 1;
+ }
+ return seqNum;
+}
+
/*
* DTLS relevance checks:
* Note that this code currently ignores all out-of-epoch packets,
@@ -1336,7 +1440,7 @@ dtls_IsRelevant(sslSocket *ss, const ssl3CipherSpec *spec,
const SSL3Ciphertext *cText,
sslSequenceNumber *seqNumOut)
{
- sslSequenceNumber seqNum = cText->seq_num & RECORD_SEQ_MASK;
+ sslSequenceNumber seqNum = dtls_ReadSequenceNumber(spec, cText->hdr);
if (dtls_RecordGetRecvd(&spec->recvdRecords, seqNum) != 0) {
SSL_TRC(10, ("%d: SSL3[%d]: dtls_IsRelevant, rejecting "
"potentially replayed packet",
diff --git a/security/nss/lib/ssl/dtlscon.h b/security/nss/lib/ssl/dtlscon.h
index d094380f8c..45fc069b97 100644
--- a/security/nss/lib/ssl/dtlscon.h
+++ b/security/nss/lib/ssl/dtlscon.h
@@ -41,8 +41,10 @@ extern SSL3ProtocolVersion
dtls_TLSVersionToDTLSVersion(SSL3ProtocolVersion tlsv);
extern SSL3ProtocolVersion
dtls_DTLSVersionToTLSVersion(SSL3ProtocolVersion dtlsv);
+DTLSEpoch dtls_ReadEpoch(const ssl3CipherSpec *crSpec, const PRUint8 *hdr);
extern PRBool dtls_IsRelevant(sslSocket *ss, const ssl3CipherSpec *spec,
const SSL3Ciphertext *cText,
sslSequenceNumber *seqNum);
void dtls_ReceivedFirstMessageInFlight(sslSocket *ss);
+PRBool dtls_IsLongHeader(SSL3ProtocolVersion version, PRUint8 firstOctet);
#endif
diff --git a/security/nss/lib/ssl/ssl.h b/security/nss/lib/ssl/ssl.h
index 25aabbaa21..ecc4f95066 100644
--- a/security/nss/lib/ssl/ssl.h
+++ b/security/nss/lib/ssl/ssl.h
@@ -158,23 +158,18 @@ SSL_IMPORT PRFileDesc *DTLS_ImportFD(PRFileDesc *model, PRFileDesc *fd);
#define SSL_CBC_RANDOM_IV 23
#define SSL_ENABLE_OCSP_STAPLING 24 /* Request OCSP stapling (client) */
-/* SSL_ENABLE_NPN controls whether the NPN extension is enabled for the initial
- * handshake when application layer protocol negotiation is used.
- * SSL_SetNextProtoCallback or SSL_SetNextProtoNego must be used to control the
- * application layer protocol negotiation; otherwise, the NPN extension will
- * not be negotiated. SSL_ENABLE_NPN is currently enabled by default but this
- * may change in future versions.
- */
+/* SSL_ENABLE_NPN is defunct and defaults to false.
+ * Using this option will not have any effect but won't produce an error. */
#define SSL_ENABLE_NPN 25
/* SSL_ENABLE_ALPN controls whether the ALPN extension is enabled for the
* initial handshake when application layer protocol negotiation is used.
- * SSL_SetNextProtoNego (not SSL_SetNextProtoCallback) must be used to control
- * the application layer protocol negotiation; otherwise, the ALPN extension
- * will not be negotiated. ALPN is not negotiated for renegotiation handshakes,
- * even though the ALPN specification defines a way to use ALPN during
- * renegotiations. SSL_ENABLE_ALPN is currently disabled by default, but this
- * may change in future versions.
+ * SSL_SetNextProtoNego or SSL_SetNextProtoCallback can be used to control
+ * the application layer protocol negotiation;
+ * ALPN is not negotiated for renegotiation handshakes, even though the ALPN
+ * specification defines a way to use ALPN during renegotiations.
+ * SSL_ENABLE_ALPN is currently enabled by default, but this may change in
+ * future versions.
*/
#define SSL_ENABLE_ALPN 26
@@ -248,12 +243,45 @@ SSL_IMPORT PRFileDesc *DTLS_ImportFD(PRFileDesc *model, PRFileDesc *fd);
*/
#define SSL_ENABLE_0RTT_DATA 33
+/* Sets a limit to the size of encrypted records (see
+ * draft-ietf-tls-record-limit). This is the value that is advertised to peers,
+ * not a limit on the size of records that will be created. Setting this value
+ * reduces the size of records that will be received (not sent).
+ *
+ * This limit applies to the plaintext, but the records that appear on the wire
+ * will be bigger. This doesn't include record headers, IVs, block cipher
+ * padding, and authentication tags or MACs.
+ *
+ * NSS always advertises the record size limit extension. If this option is not
+ * set, the extension will contain the maximum allowed size for the selected TLS
+ * version (currently this is 16384 or 2^14 for TLS 1.2 and lower and 16385 for
+ * TLS 1.3).
+ *
+ * By default, NSS creates records that are the maximum size possible, using all
+ * the data that was written by the application. Writes larger than the maximum
+ * are split into maximum sized records, and any remainder (unless
+ * SSL_CBC_RANDOM_IV is enabled and active). If a peer advertises a record size
+ * limit then that value is used instead.
+ */
+#define SSL_RECORD_SIZE_LIMIT 34
+
/* Enables TLS 1.3 compatibility mode. In this mode, the client includes a fake
* session ID in the handshake and sends a ChangeCipherSpec. A server will
* always use the setting chosen by the client, so the value of this option has
* no effect for a server. This setting is ignored for DTLS. */
#define SSL_ENABLE_TLS13_COMPAT_MODE 35
+/* Enables the sending of DTLS records using the short (two octet) record
+ * header. Only do this if there are 2^10 or fewer packets in flight at a time;
+ * using this with a larger number of packets in flight could mean that packets
+ * are dropped if there is reordering.
+ *
+ * This applies to TLS 1.3 only. This is not a parameter that is negotiated
+ * during the TLS handshake. Unlike other socket options, this option can be
+ * changed after a handshake is complete.
+ */
+#define SSL_ENABLE_DTLS_SHORT_HEADER 36
+
#ifdef SSL_DEPRECATED_FUNCTION
/* Old deprecated function names */
SSL_IMPORT SECStatus SSL_Enable(PRFileDesc *fd, int option, PRIntn on);
@@ -272,10 +300,10 @@ SSL_IMPORT SECStatus SSL_OptionSetDefault(PRInt32 option, PRIntn val);
SSL_IMPORT SECStatus SSL_OptionGetDefault(PRInt32 option, PRIntn *val);
SSL_IMPORT SECStatus SSL_CertDBHandleSet(PRFileDesc *fd, CERTCertDBHandle *dbHandle);
-/* SSLNextProtoCallback is called during the handshake for the client, when a
- * Next Protocol Negotiation (NPN) extension has been received from the server.
- * |protos| and |protosLen| define a buffer which contains the server's
- * advertisement. This data is guaranteed to be well formed per the NPN spec.
+/* SSLNextProtoCallback is called during the handshake for the server, when an
+ * Application-Layer Protocol Negotiation (ALPN) extension has been received
+ * from the client. |protos| and |protosLen| define a buffer which contains the
+ * client's advertisement.
* |protoOut| is a buffer provided by the caller, of length 255 (the maximum
* allowed by the protocol). On successful return, the protocol to be announced
* to the server will be in |protoOut| and its length in |*protoOutLen|.
@@ -291,27 +319,24 @@ typedef SECStatus(PR_CALLBACK *SSLNextProtoCallback)(
unsigned int *protoOutLen,
unsigned int protoMaxOut);
-/* SSL_SetNextProtoCallback sets a callback function to handle Next Protocol
- * Negotiation. It causes a client to advertise NPN. */
+/* SSL_SetNextProtoCallback sets a callback function to handle ALPN Negotiation.
+ * It causes a client to advertise ALPN. */
SSL_IMPORT SECStatus SSL_SetNextProtoCallback(PRFileDesc *fd,
SSLNextProtoCallback callback,
void *arg);
/* SSL_SetNextProtoNego can be used as an alternative to
- * SSL_SetNextProtoCallback. It also causes a client to advertise NPN and
- * installs a default callback function which selects the first supported
- * protocol in server-preference order. If no matching protocol is found it
- * selects the first supported protocol.
+ * SSL_SetNextProtoCallback.
*
- * Using this function also allows the client to transparently support ALPN.
+ * Using this function allows client and server to transparently support ALPN.
* The same set of protocols will be advertised via ALPN and, if the server
* uses ALPN to select a protocol, SSL_GetNextProto will return
* SSL_NEXT_PROTO_SELECTED as the state.
*
- * Since NPN uses the first protocol as the fallback protocol, when sending an
- * ALPN extension, the first protocol is moved to the end of the list. This
- * indicates that the fallback protocol is the least preferred. The other
- * protocols should be in preference order.
+ * Because the predecessor to ALPN, NPN, used the first protocol as the fallback
+ * protocol, when sending an ALPN extension, the first protocol is moved to the
+ * end of the list. This indicates that the fallback protocol is the least
+ * preferred. The other protocols should be in preference order.
*
* The supported protocols are specified in |data| in wire-format (8-bit
* length-prefixed). For example: "\010http/1.1\006spdy/2". */
diff --git a/security/nss/lib/ssl/ssl3con.c b/security/nss/lib/ssl/ssl3con.c
index 2593bbaccb..466fc296ff 100644
--- a/security/nss/lib/ssl/ssl3con.c
+++ b/security/nss/lib/ssl/ssl3con.c
@@ -990,27 +990,22 @@ ssl_ClientReadVersion(sslSocket *ss, PRUint8 **b, unsigned int *len,
if (rv != SECSuccess) {
return SECFailure; /* alert has been sent */
}
-
-#ifdef TLS_1_3_DRAFT_VERSION
- if (temp == SSL_LIBRARY_VERSION_TLS_1_3) {
- (void)SSL3_SendAlert(ss, alert_fatal, protocol_version);
- PORT_SetError(SSL_ERROR_UNSUPPORTED_VERSION);
- return SECFailure;
- }
- if (temp == tls13_EncodeDraftVersion(SSL_LIBRARY_VERSION_TLS_1_3)) {
- v = SSL_LIBRARY_VERSION_TLS_1_3;
- } else {
- v = (SSL3ProtocolVersion)temp;
- }
-#else
v = (SSL3ProtocolVersion)temp;
-#endif
if (IS_DTLS(ss)) {
- /* If this fails, we get 0 back and the next check to fails. */
v = dtls_DTLSVersionToTLSVersion(v);
+ /* Check for failure. */
+ if (!v || v > SSL_LIBRARY_VERSION_MAX_SUPPORTED) {
+ SSL3_SendAlert(ss, alert_fatal, illegal_parameter);
+ return SECFailure;
+ }
}
+ /* You can't negotiate TLS 1.3 this way. */
+ if (v >= SSL_LIBRARY_VERSION_TLS_1_3) {
+ SSL3_SendAlert(ss, alert_fatal, illegal_parameter);
+ return SECFailure;
+ }
*version = v;
return SECSuccess;
}
@@ -1415,7 +1410,7 @@ ssl3_SetupPendingCipherSpec(sslSocket *ss, CipherSpecDirection direction,
spec->macDef = ssl_GetMacDef(ss, suiteDef);
spec->epoch = prev->epoch + 1;
- spec->seqNum = 0;
+ spec->nextSeqNum = 0;
if (IS_DTLS(ss) && direction == CipherSpecRead) {
dtls_InitRecvdRecords(&spec->recvdRecords);
}
@@ -1481,6 +1476,13 @@ ssl3_SetupBothPendingCipherSpecs(sslSocket *ss)
goto loser;
}
+ if (ssl3_ExtensionNegotiated(ss, ssl_record_size_limit_xtn)) {
+ ss->ssl3.prSpec->recordSizeLimit = PR_MIN(MAX_FRAGMENT_LENGTH,
+ ss->opt.recordSizeLimit);
+ ss->ssl3.pwSpec->recordSizeLimit = PR_MIN(MAX_FRAGMENT_LENGTH,
+ ss->xtnData.recordSizeLimit);
+ }
+
ssl_ReleaseSpecWriteLock(ss); /*******************************/
return SECSuccess;
@@ -2004,6 +2006,7 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
unsigned int ivLen = 0;
unsigned char pseudoHeaderBuf[13];
sslBuffer pseudoHeader = SSL_BUFFER(pseudoHeaderBuf);
+ int len;
if (cwSpec->cipherDef->type == type_block &&
cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_1) {
@@ -2013,29 +2016,32 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
* record.
*/
ivLen = cwSpec->cipherDef->iv_size;
- if (ivLen > wrBuf->space) {
+ if (ivLen > SSL_BUFFER_SPACE(wrBuf)) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
- rv = PK11_GenerateRandom(wrBuf->buf, ivLen);
+ rv = PK11_GenerateRandom(SSL_BUFFER_NEXT(wrBuf), ivLen);
if (rv != SECSuccess) {
ssl_MapLowLevelError(SSL_ERROR_GENERATE_RANDOM_FAILURE);
return rv;
}
rv = cwSpec->cipher(cwSpec->cipherContext,
- wrBuf->buf, /* output */
- (int *)&wrBuf->len, /* outlen */
- ivLen, /* max outlen */
- wrBuf->buf, /* input */
- ivLen); /* input len */
- if (rv != SECSuccess || wrBuf->len != ivLen) {
+ SSL_BUFFER_NEXT(wrBuf), /* output */
+ &len, /* outlen */
+ ivLen, /* max outlen */
+ SSL_BUFFER_NEXT(wrBuf), /* input */
+ ivLen); /* input len */
+ if (rv != SECSuccess || len != ivLen) {
PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE);
return SECFailure;
}
+
+ rv = sslBuffer_Skip(wrBuf, len, NULL);
+ PORT_Assert(rv == SECSuccess); /* Can't fail. */
}
rv = ssl3_BuildRecordPseudoHeader(
- cwSpec->epoch, cwSpec->seqNum, type,
+ cwSpec->epoch, cwSpec->nextSeqNum, type,
cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_0, cwSpec->recordVersion,
isDTLS, contentLen, &pseudoHeader);
PORT_Assert(rv == SECSuccess);
@@ -2043,23 +2049,26 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
const int nonceLen = cwSpec->cipherDef->explicit_nonce_size;
const int tagLen = cwSpec->cipherDef->tag_size;
- if (nonceLen + contentLen + tagLen > wrBuf->space) {
+ if (nonceLen + contentLen + tagLen > SSL_BUFFER_SPACE(wrBuf)) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
rv = cwSpec->aead(
&cwSpec->keyMaterial,
- PR_FALSE, /* do encrypt */
- wrBuf->buf, /* output */
- (int *)&wrBuf->len, /* out len */
- wrBuf->space, /* max out */
- pIn, contentLen, /* input */
+ PR_FALSE, /* do encrypt */
+ SSL_BUFFER_NEXT(wrBuf), /* output */
+ &len, /* out len */
+ SSL_BUFFER_SPACE(wrBuf), /* max out */
+ pIn, contentLen, /* input */
SSL_BUFFER_BASE(&pseudoHeader), SSL_BUFFER_LEN(&pseudoHeader));
if (rv != SECSuccess) {
PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE);
return SECFailure;
}
+
+ rv = sslBuffer_Skip(wrBuf, len, NULL);
+ PORT_Assert(rv == SECSuccess); /* Can't fail. */
} else {
int blockSize = cwSpec->cipherDef->block_size;
@@ -2069,7 +2078,7 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
rv = ssl3_ComputeRecordMAC(cwSpec, SSL_BUFFER_BASE(&pseudoHeader),
SSL_BUFFER_LEN(&pseudoHeader),
pIn, contentLen,
- wrBuf->buf + ivLen + contentLen, &macLen);
+ SSL_BUFFER_NEXT(wrBuf) + contentLen, &macLen);
if (rv != SECSuccess) {
ssl_MapLowLevelError(SSL_ERROR_MAC_COMPUTATION_FAILURE);
return SECFailure;
@@ -2095,7 +2104,7 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
PORT_Assert((fragLen % blockSize) == 0);
/* Pad according to TLS rules (also acceptable to SSL3). */
- pBuf = &wrBuf->buf[ivLen + fragLen - 1];
+ pBuf = SSL_BUFFER_NEXT(wrBuf) + fragLen - 1;
for (i = padding_length + 1; i > 0; --i) {
*pBuf-- = padding_length;
}
@@ -2112,14 +2121,14 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
p2Len += oddLen;
PORT_Assert((blockSize < 2) ||
(p2Len % blockSize) == 0);
- memmove(wrBuf->buf + ivLen + p1Len, pIn + p1Len, oddLen);
+ memmove(SSL_BUFFER_NEXT(wrBuf) + p1Len, pIn + p1Len, oddLen);
}
if (p1Len > 0) {
int cipherBytesPart1 = -1;
rv = cwSpec->cipher(cwSpec->cipherContext,
- wrBuf->buf + ivLen, /* output */
- &cipherBytesPart1, /* actual outlen */
- p1Len, /* max outlen */
+ SSL_BUFFER_NEXT(wrBuf), /* output */
+ &cipherBytesPart1, /* actual outlen */
+ p1Len, /* max outlen */
pIn,
p1Len); /* input, and inputlen */
PORT_Assert(rv == SECSuccess && cipherBytesPart1 == (int)p1Len);
@@ -2127,22 +2136,24 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE);
return SECFailure;
}
- wrBuf->len += cipherBytesPart1;
+ rv = sslBuffer_Skip(wrBuf, p1Len, NULL);
+ PORT_Assert(rv == SECSuccess);
}
if (p2Len > 0) {
int cipherBytesPart2 = -1;
rv = cwSpec->cipher(cwSpec->cipherContext,
- wrBuf->buf + ivLen + p1Len,
+ SSL_BUFFER_NEXT(wrBuf),
&cipherBytesPart2, /* output and actual outLen */
p2Len, /* max outlen */
- wrBuf->buf + ivLen + p1Len,
+ SSL_BUFFER_NEXT(wrBuf),
p2Len); /* input and inputLen*/
PORT_Assert(rv == SECSuccess && cipherBytesPart2 == (int)p2Len);
if (rv != SECSuccess || cipherBytesPart2 != (int)p2Len) {
PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE);
return SECFailure;
}
- wrBuf->len += cipherBytesPart2;
+ rv = sslBuffer_Skip(wrBuf, p2Len, NULL);
+ PORT_Assert(rv == SECSuccess);
}
}
@@ -2150,16 +2161,20 @@ ssl3_MACEncryptRecord(ssl3CipherSpec *cwSpec,
}
/* Note: though this can report failure, it shouldn't. */
-static SECStatus
+SECStatus
ssl_InsertRecordHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec,
- SSL3ContentType contentType, unsigned int len,
- sslBuffer *wrBuf)
+ SSL3ContentType contentType, sslBuffer *wrBuf,
+ PRBool *needsLength)
{
SECStatus rv;
#ifndef UNSAFE_FUZZER_MODE
if (cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_3 &&
- cwSpec->cipherDef->calg != ssl_calg_null) {
+ cwSpec->epoch > TrafficKeyClearText) {
+ if (IS_DTLS(ss)) {
+ return dtls13_InsertCipherTextHeader(ss, cwSpec, wrBuf,
+ needsLength);
+ }
contentType = content_application_data;
}
#endif
@@ -2177,16 +2192,12 @@ ssl_InsertRecordHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec,
if (rv != SECSuccess) {
return SECFailure;
}
- rv = sslBuffer_AppendNumber(wrBuf, cwSpec->seqNum, 6);
+ rv = sslBuffer_AppendNumber(wrBuf, cwSpec->nextSeqNum, 6);
if (rv != SECSuccess) {
return SECFailure;
}
}
- rv = sslBuffer_AppendNumber(wrBuf, len, 2);
- if (rv != SECSuccess) {
- return SECFailure;
- }
-
+ *needsLength = PR_TRUE;
return SECSuccess;
}
@@ -2194,66 +2205,67 @@ SECStatus
ssl_ProtectRecord(sslSocket *ss, ssl3CipherSpec *cwSpec, SSL3ContentType type,
const PRUint8 *pIn, PRUint32 contentLen, sslBuffer *wrBuf)
{
- unsigned int headerLen = IS_DTLS(ss) ? DTLS_RECORD_HEADER_LENGTH
- : SSL3_RECORD_HEADER_LENGTH;
- sslBuffer protBuf = SSL_BUFFER_FIXED(SSL_BUFFER_BASE(wrBuf) + headerLen,
- SSL_BUFFER_SPACE(wrBuf) - headerLen);
- PRBool isTLS13;
+ PRBool needsLength;
+ unsigned int lenOffset;
SECStatus rv;
PORT_Assert(cwSpec->direction == CipherSpecWrite);
PORT_Assert(SSL_BUFFER_LEN(wrBuf) == 0);
PORT_Assert(cwSpec->cipherDef->max_records <= RECORD_SEQ_MAX);
- if (cwSpec->seqNum >= cwSpec->cipherDef->max_records) {
+
+ if (cwSpec->nextSeqNum >= cwSpec->cipherDef->max_records) {
/* We should have automatically updated before here in TLS 1.3. */
PORT_Assert(cwSpec->version < SSL_LIBRARY_VERSION_TLS_1_3);
SSL_TRC(3, ("%d: SSL[-]: write sequence number at limit 0x%0llx",
- SSL_GETPID(), cwSpec->seqNum));
+ SSL_GETPID(), cwSpec->nextSeqNum));
PORT_SetError(SSL_ERROR_TOO_MANY_RECORDS);
return SECFailure;
}
- isTLS13 = (PRBool)(cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_3);
+ rv = ssl_InsertRecordHeader(ss, cwSpec, type, wrBuf, &needsLength);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ if (needsLength) {
+ rv = sslBuffer_Skip(wrBuf, 2, &lenOffset);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ }
#ifdef UNSAFE_FUZZER_MODE
{
int len;
- rv = Null_Cipher(NULL, SSL_BUFFER_BASE(&protBuf), &len,
- SSL_BUFFER_SPACE(&protBuf), pIn, contentLen);
+ rv = Null_Cipher(NULL, SSL_BUFFER_NEXT(wrBuf), &len,
+ SSL_BUFFER_SPACE(wrBuf), pIn, contentLen);
if (rv != SECSuccess) {
return SECFailure; /* error was set */
}
- rv = sslBuffer_Skip(&protBuf, len, NULL);
+ rv = sslBuffer_Skip(wrBuf, len, NULL);
PORT_Assert(rv == SECSuccess); /* Can't fail. */
}
#else
- if (isTLS13) {
- rv = tls13_ProtectRecord(ss, cwSpec, type, pIn, contentLen, &protBuf);
+ if (cwSpec->version >= SSL_LIBRARY_VERSION_TLS_1_3) {
+ rv = tls13_ProtectRecord(ss, cwSpec, type, pIn, contentLen, wrBuf);
} else {
rv = ssl3_MACEncryptRecord(cwSpec, ss->sec.isServer, IS_DTLS(ss), type,
- pIn, contentLen, &protBuf);
+ pIn, contentLen, wrBuf);
}
#endif
if (rv != SECSuccess) {
return SECFailure; /* error was set */
}
- PORT_Assert(protBuf.len <= MAX_FRAGMENT_LENGTH + (isTLS13 ? 256 : 1024));
-
- rv = ssl_InsertRecordHeader(ss, cwSpec, type, SSL_BUFFER_LEN(&protBuf),
- wrBuf);
- if (rv != SECSuccess) {
- return SECFailure;
- }
-
- PORT_Assert(SSL_BUFFER_LEN(wrBuf) == headerLen);
- rv = sslBuffer_Skip(wrBuf, SSL_BUFFER_LEN(&protBuf), NULL);
- if (rv != SECSuccess) {
- PORT_Assert(0); /* Can't fail. */
- return SECFailure;
+ if (needsLength) {
+ /* Insert the length. */
+ rv = sslBuffer_InsertLength(wrBuf, lenOffset, 2);
+ if (rv != SECSuccess) {
+ PORT_Assert(0); /* Can't fail. */
+ return SECFailure;
+ }
}
- ++cwSpec->seqNum;
+ ++cwSpec->nextSeqNum;
return SECSuccess;
}
@@ -2267,7 +2279,7 @@ ssl_ProtectNextRecord(sslSocket *ss, ssl3CipherSpec *spec, SSL3ContentType type,
unsigned int spaceNeeded;
SECStatus rv;
- contentLen = PR_MIN(nIn, MAX_FRAGMENT_LENGTH);
+ contentLen = PR_MIN(nIn, spec->recordSizeLimit);
spaceNeeded = contentLen + SSL3_BUFFER_FUDGE;
if (spec->version >= SSL_LIBRARY_VERSION_TLS_1_1 &&
spec->cipherDef->type == type_block) {
@@ -2291,6 +2303,7 @@ ssl_ProtectNextRecord(sslSocket *ss, ssl3CipherSpec *spec, SSL3ContentType type,
*written = contentLen;
return SECSuccess;
}
+
/* Process the plain text before sending it.
* Returns the number of bytes of plaintext that were successfully sent
* plus the number of bytes of plaintext that were copied into the
@@ -2368,7 +2381,7 @@ ssl3_SendRecord(sslSocket *ss,
rv = ssl_ProtectNextRecord(ss, spec, type, pIn, nIn, &written);
ssl_ReleaseSpecReadLock(ss);
if (rv != SECSuccess) {
- return SECFailure;
+ goto loser;
}
PORT_Assert(written > 0);
@@ -3034,7 +3047,6 @@ ssl3_SendChangeCipherSpecsInt(sslSocket *ss)
return SECFailure; /* error code set by ssl3_SendRecord */
}
} else {
- SECStatus rv;
rv = dtls_QueueMessage(ss, content_change_cipher_spec, &change, 1);
if (rv != SECSuccess) {
return SECFailure;
@@ -5567,13 +5579,20 @@ ssl3_SendRSAClientKeyExchange(sslSocket *ss, SECKEYPublicKey *svrPubKey)
}
/* Get the wrapped (encrypted) pre-master secret, enc_pms */
- enc_pms.len = SECKEY_PublicKeyStrength(svrPubKey);
+ unsigned int svrPubKeyBits = SECKEY_PublicKeyStrengthInBits(svrPubKey);
+ enc_pms.len = (svrPubKeyBits + 7) / 8;
+ /* Check that the RSA key isn't larger than 8k bit. */
+ if (svrPubKeyBits > SSL_MAX_RSA_KEY_BITS) {
+ (void)SSL3_SendAlert(ss, alert_fatal, illegal_parameter);
+ ssl_MapLowLevelError(SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE);
+ goto loser;
+ }
enc_pms.data = (unsigned char *)PORT_Alloc(enc_pms.len);
if (enc_pms.data == NULL) {
goto loser; /* err set by PORT_Alloc */
}
- /* wrap pre-master secret in server's public key. */
+ /* Wrap pre-master secret in server's public key. */
rv = PK11_PubWrapSymKey(CKM_RSA_PKCS, svrPubKey, pms, &enc_pms);
if (rv != SECSuccess) {
ssl_MapLowLevelError(SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE);
@@ -5676,7 +5695,7 @@ ssl3_SendDHClientKeyExchange(sslSocket *ss, SECKEYPublicKey *svrPubKey)
};
sslEphemeralKeyPair *keyPair = NULL;
SECKEYPublicKey *pubKey;
- PRUint8 dhData[1026]; /* Enough for the 8192-bit group. */
+ PRUint8 dhData[SSL_MAX_DH_KEY_BITS / 8 + 2];
sslBuffer dhBuf = SSL_BUFFER(dhData);
PORT_Assert(ss->opt.noLocks || ssl_HaveSSL3HandshakeLock(ss));
@@ -6208,7 +6227,6 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length)
SECItem sidBytes = { siBuffer, NULL, 0 };
PRBool isHelloRetry;
SSL3AlertDescription desc = illegal_parameter;
- TLSExtension *versionExtension;
const PRUint8 *savedMsg = b;
const PRUint32 savedLength = length;
#ifndef TLS_1_3_DRAFT_VERSION
@@ -6299,16 +6317,10 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length)
}
}
- /* Update the version based on the extension, as necessary. */
- versionExtension = ssl3_FindExtension(ss, ssl_tls13_supported_versions_xtn);
- if (versionExtension) {
- rv = ssl_ClientReadVersion(ss, &versionExtension->data.data,
- &versionExtension->data.len,
- &ss->version);
- if (rv != SECSuccess) {
- errCode = PORT_GetError();
- goto loser; /* An alert is sent by ssl_ClientReadVersion */
- }
+ /* Read supported_versions if present. */
+ rv = tls13_ClientReadSupportedVersion(ss);
+ if (rv != SECSuccess) {
+ goto loser;
}
PORT_Assert(!SSL_ALL_VERSIONS_DISABLED(&ss->vrange));
@@ -6332,7 +6344,7 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length)
/* The server didn't pick 1.3 although we either received a
* HelloRetryRequest, or we prepared to send early app data. */
if (ss->version < SSL_LIBRARY_VERSION_TLS_1_3) {
- if (ss->ssl3.hs.helloRetry) {
+ if (isHelloRetry || ss->ssl3.hs.helloRetry) {
/* SSL3_SendAlert() will uncache the SID. */
desc = illegal_parameter;
errCode = SSL_ERROR_RX_MALFORMED_SERVER_HELLO;
@@ -6393,8 +6405,9 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length)
/* Finally, now all the version-related checks have passed. */
ss->ssl3.hs.preliminaryInfo |= ssl_preinfo_version;
/* Update the write cipher spec to match the version. But not after
- * HelloRetryRequest, because cwSpec might be a 0-RTT cipher spec. */
- if (!ss->firstHsDone && !ss->ssl3.hs.helloRetry) {
+ * HelloRetryRequest, because cwSpec might be a 0-RTT cipher spec,
+ * in which case this is a no-op. */
+ if (!ss->firstHsDone && !isHelloRetry) {
ssl_GetSpecWriteLock(ss);
ssl_SetSpecVersions(ss, ss->ssl3.cwSpec);
ssl_ReleaseSpecWriteLock(ss);
@@ -6729,6 +6742,10 @@ ssl_HandleDHServerKeyExchange(sslSocket *ss, PRUint8 *b, PRUint32 length)
errCode = SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY;
goto alert_loser;
}
+ if (dh_p_bits > SSL_MAX_DH_KEY_BITS) {
+ errCode = SSL_ERROR_DH_KEY_TOO_LONG;
+ goto alert_loser;
+ }
rv = ssl3_ConsumeHandshakeVariable(ss, &dh_g, 2, &b, &length);
if (rv != SECSuccess) {
goto loser; /* malformed. */
@@ -6938,8 +6955,10 @@ ssl3_ParseCertificateRequestCAs(sslSocket *ss, PRUint8 **b, PRUint32 *length,
goto alert_loser; /* malformed */
remaining -= 2;
+ if (SECITEM_MakeItem(ca_list->arena, &node->name, *b, len) != SECSuccess) {
+ goto no_mem;
+ }
node->name.len = len;
- node->name.data = *b;
*b += len;
*length -= len;
remaining -= len;
@@ -6967,7 +6986,6 @@ ssl3_ParseCertificateRequestCAs(sslSocket *ss, PRUint8 **b, PRUint32 *length,
return SECSuccess;
no_mem:
- PORT_SetError(SEC_ERROR_NO_MEMORY);
return SECFailure;
alert_loser:
@@ -7332,10 +7350,6 @@ ssl3_SendClientSecondRound(sslSocket *ss)
* certificate to an attacker that does not have a valid cert for the
* domain we are connecting to.
*
- * XXX: We should do the same for the NPN extension, but for that we
- * need an option to give the application the ability to leak the NPN
- * information to get better performance.
- *
* During the initial handshake on a connection, we never send/receive
* application data until we have authenticated the server's certificate;
* i.e. we have fully authenticated the handshake before using the cipher
@@ -7409,14 +7423,6 @@ ssl3_SendClientSecondRound(sslSocket *ss)
ss->enoughFirstHsDone = PR_TRUE;
if (!ss->firstHsDone) {
- /* XXX: If the server's certificate hasn't been authenticated by this
- * point, then we may be leaking this NPN message to an attacker.
- */
- rv = ssl3_SendNextProto(ss);
- if (rv != SECSuccess) {
- goto loser; /* err code was set. */
- }
-
if (ss->opt.enableFalseStart) {
if (!ss->ssl3.hs.authCertificatePending) {
/* When we fix bug 589047, we will need to know whether we are
@@ -8879,12 +8885,10 @@ ssl_ConstructServerHello(sslSocket *ss, PRBool helloRetry,
SSL3ProtocolVersion version;
sslSessionID *sid = ss->sec.ci.sid;
- if (IS_DTLS(ss) && ss->version < SSL_LIBRARY_VERSION_TLS_1_3) {
- version = dtls_TLSVersionToDTLSVersion(ss->version);
- } else {
- version = PR_MIN(ss->version, SSL_LIBRARY_VERSION_TLS_1_2);
+ version = PR_MIN(ss->version, SSL_LIBRARY_VERSION_TLS_1_2);
+ if (IS_DTLS(ss)) {
+ version = dtls_TLSVersionToDTLSVersion(version);
}
-
rv = sslBuffer_AppendNumber(messageBuf, version, 2);
if (rv != SECSuccess) {
return SECFailure;
@@ -11404,6 +11408,10 @@ ssl3_HandleHandshakeMessage(sslSocket *ss, PRUint8 *b, PRUint32 length,
/* Increment the expected sequence number */
ss->ssl3.hs.recvMessageSeq++;
}
+
+ /* Taint the message so that it's easier to detect UAFs. */
+ PORT_Memset(b, 'N', length);
+
return rv;
}
@@ -11738,7 +11746,7 @@ ssl_RemoveTLSCBCPadding(sslBuffer *plaintext, unsigned int macSize)
}
for (i = 0; i < toCheck; i++) {
- unsigned int t = paddingLength - i;
+ t = paddingLength - i;
/* If i <= paddingLength then the MSB of t is zero and mask is
* 0xff. Otherwise, mask is 0. */
unsigned char mask = DUPLICATE_MSB_TO_ALL(~t);
@@ -11878,6 +11886,7 @@ ssl3_UnprotectRecord(sslSocket *ss,
unsigned int good;
unsigned int ivLen = 0;
SSL3ContentType rType;
+ SSL3ProtocolVersion rVersion;
unsigned int minLength;
unsigned int originalLen = 0;
PRUint8 headerBuf[13];
@@ -11950,7 +11959,9 @@ ssl3_UnprotectRecord(sslSocket *ss,
return SECFailure;
}
- rType = cText->type;
+ rType = (SSL3ContentType)cText->hdr[0];
+ rVersion = ((SSL3ProtocolVersion)cText->hdr[1] << 8) |
+ (SSL3ProtocolVersion)cText->hdr[2];
if (cipher_def->type == type_aead) {
/* XXX For many AEAD ciphers, the plaintext is shorter than the
* ciphertext by a fixed byte count, but it is not true in general.
@@ -11960,8 +11971,8 @@ ssl3_UnprotectRecord(sslSocket *ss,
cText->buf->len - cipher_def->explicit_nonce_size -
cipher_def->tag_size;
rv = ssl3_BuildRecordPseudoHeader(
- spec->epoch, IS_DTLS(ss) ? cText->seq_num : spec->seqNum,
- rType, isTLS, cText->version, IS_DTLS(ss), decryptedLen, &header);
+ spec->epoch, cText->seqNum,
+ rType, isTLS, rVersion, IS_DTLS(ss), decryptedLen, &header);
PORT_Assert(rv == SECSuccess);
rv = spec->aead(&spec->keyMaterial,
PR_TRUE, /* do decrypt */
@@ -12008,8 +12019,8 @@ ssl3_UnprotectRecord(sslSocket *ss,
/* compute the MAC */
rv = ssl3_BuildRecordPseudoHeader(
- spec->epoch, IS_DTLS(ss) ? cText->seq_num : spec->seqNum,
- rType, isTLS, cText->version, IS_DTLS(ss),
+ spec->epoch, cText->seqNum,
+ rType, isTLS, rVersion, IS_DTLS(ss),
plaintext->len - spec->macDef->mac_size, &header);
PORT_Assert(rv == SECSuccess);
if (cipher_def->type == type_block) {
@@ -12059,13 +12070,19 @@ ssl3_UnprotectRecord(sslSocket *ss,
return SECSuccess;
}
-static SECStatus
+SECStatus
ssl3_HandleNonApplicationData(sslSocket *ss, SSL3ContentType rType,
DTLSEpoch epoch, sslSequenceNumber seqNum,
sslBuffer *databuf)
{
SECStatus rv;
+ /* check for Token Presence */
+ if (!ssl3_ClientAuthTokenPresent(ss->sec.ci.sid)) {
+ PORT_SetError(SSL_ERROR_TOKEN_INSERTION_REMOVAL);
+ return SECFailure;
+ }
+
ssl_GetSSL3HandshakeLock(ss);
/* All the functions called in this switch MUST set error code if
@@ -12111,15 +12128,16 @@ ssl3_HandleNonApplicationData(sslSocket *ss, SSL3ContentType rType,
* Returns NULL if no appropriate cipher spec is found.
*/
static ssl3CipherSpec *
-ssl3_GetCipherSpec(sslSocket *ss, sslSequenceNumber seq)
+ssl3_GetCipherSpec(sslSocket *ss, SSL3Ciphertext *cText)
{
ssl3CipherSpec *crSpec = ss->ssl3.crSpec;
ssl3CipherSpec *newSpec = NULL;
- DTLSEpoch epoch = seq >> 48;
+ DTLSEpoch epoch;
if (!IS_DTLS(ss)) {
return crSpec;
}
+ epoch = dtls_ReadEpoch(crSpec, cText->hdr);
if (crSpec->epoch == epoch) {
return crSpec;
}
@@ -12136,6 +12154,11 @@ ssl3_GetCipherSpec(sslSocket *ss, sslSequenceNumber seq)
return NULL;
}
+/* MAX_EXPANSION is the amount by which a record might plausibly be expanded
+ * when protected. It's the worst case estimate, so the sum of block cipher
+ * padding (up to 256 octets) and HMAC (48 octets for SHA-384). */
+#define MAX_EXPANSION (256 + 48)
+
/* if cText is non-null, then decipher and check the MAC of the
* SSL record from cText->buf (typically gs->inbuf)
* into databuf (typically gs->buf), and any previous contents of databuf
@@ -12159,16 +12182,16 @@ ssl3_GetCipherSpec(sslSocket *ss, sslSequenceNumber seq)
* Application Data records.
*/
SECStatus
-ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf)
+ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText)
{
SECStatus rv;
PRBool isTLS;
DTLSEpoch epoch;
- sslSequenceNumber seqNum = 0;
ssl3CipherSpec *spec = NULL;
+ PRUint16 recordSizeLimit;
PRBool outOfOrderSpec = PR_FALSE;
SSL3ContentType rType;
- sslBuffer *plaintext;
+ sslBuffer *plaintext = &ss->gs.buf;
SSL3AlertDescription alert = internal_error;
PORT_Assert(ss->opt.noLocks || ssl_HaveRecvBufLock(ss));
@@ -12178,27 +12201,23 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf)
return SECFailure;
}
- /* cText is NULL when we're called from ssl3_RestartHandshakeAfterXXX().
- * This implies that databuf holds a previously deciphered SSL Handshake
- * message.
- */
- if (cText == NULL) {
- SSL_DBG(("%d: SSL3[%d]: HandleRecord, resuming handshake",
- SSL_GETPID(), ss->fd));
- /* Note that this doesn't pass the epoch and sequence number of the
- * record through, which DTLS 1.3 depends on. DTLS doesn't support
- * asynchronous certificate validation, so that should be OK. */
- PORT_Assert(!IS_DTLS(ss));
- return ssl3_HandleNonApplicationData(ss, content_handshake,
- 0, 0, databuf);
+ /* Clear out the buffer in case this exits early. Any data then won't be
+ * processed twice. */
+ plaintext->len = 0;
+
+ /* We're waiting for another ClientHello, which will appear unencrypted.
+ * Use the content type to tell whether this should be discarded. */
+ if (ss->ssl3.hs.zeroRttIgnore == ssl_0rtt_ignore_hrr &&
+ cText->hdr[0] == content_application_data) {
+ PORT_Assert(ss->ssl3.hs.ws == wait_client_hello);
+ return SECSuccess;
}
ssl_GetSpecReadLock(ss); /******************************************/
- spec = ssl3_GetCipherSpec(ss, cText->seq_num);
+ spec = ssl3_GetCipherSpec(ss, cText);
if (!spec) {
PORT_Assert(IS_DTLS(ss));
ssl_ReleaseSpecReadLock(ss); /*****************************/
- databuf->len = 0; /* Needed to ensure data not left around */
return SECSuccess;
}
if (spec != ss->ssl3.crSpec) {
@@ -12209,66 +12228,68 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf)
}
isTLS = (PRBool)(spec->version > SSL_LIBRARY_VERSION_3_0);
if (IS_DTLS(ss)) {
- if (!dtls_IsRelevant(ss, spec, cText, &seqNum)) {
+ if (!dtls_IsRelevant(ss, spec, cText, &cText->seqNum)) {
ssl_ReleaseSpecReadLock(ss); /*****************************/
- databuf->len = 0; /* Needed to ensure data not left around */
-
return SECSuccess;
}
} else {
- seqNum = spec->seqNum + 1;
+ cText->seqNum = spec->nextSeqNum;
}
- if (seqNum >= spec->cipherDef->max_records) {
+ if (cText->seqNum >= spec->cipherDef->max_records) {
ssl_ReleaseSpecReadLock(ss); /*****************************/
SSL_TRC(3, ("%d: SSL[%d]: read sequence number at limit 0x%0llx",
- SSL_GETPID(), ss->fd, seqNum));
+ SSL_GETPID(), ss->fd, cText->seqNum));
PORT_SetError(SSL_ERROR_TOO_MANY_RECORDS);
return SECFailure;
}
- plaintext = databuf;
- plaintext->len = 0; /* filled in by Unprotect call below. */
-
- /* We're waiting for another ClientHello, which will appear unencrypted.
- * Use the content type to tell whether this is should be discarded.
- *
- * XXX If we decide to remove the content type from encrypted records, this
- * will become much more difficult to manage. */
- if (ss->ssl3.hs.zeroRttIgnore == ssl_0rtt_ignore_hrr &&
- cText->type == content_application_data) {
+ recordSizeLimit = spec->recordSizeLimit;
+ if (cText->buf->len > recordSizeLimit + MAX_EXPANSION) {
ssl_ReleaseSpecReadLock(ss); /*****************************/
- PORT_Assert(ss->ssl3.hs.ws == wait_client_hello);
- databuf->len = 0;
- return SECSuccess;
+ SSL3_SendAlert(ss, alert_fatal, record_overflow);
+ PORT_SetError(SSL_ERROR_RX_RECORD_TOO_LONG);
+ return SECFailure;
}
- if (plaintext->space < MAX_FRAGMENT_LENGTH) {
- rv = sslBuffer_Grow(plaintext, MAX_FRAGMENT_LENGTH + 2048);
+ if (plaintext->space < recordSizeLimit + MAX_EXPANSION) {
+ rv = sslBuffer_Grow(plaintext, recordSizeLimit + MAX_EXPANSION);
if (rv != SECSuccess) {
ssl_ReleaseSpecReadLock(ss); /*************************/
SSL_DBG(("%d: SSL3[%d]: HandleRecord, tried to get %d bytes",
- SSL_GETPID(), ss->fd, MAX_FRAGMENT_LENGTH + 2048));
+ SSL_GETPID(), ss->fd, recordSizeLimit + MAX_EXPANSION));
/* sslBuffer_Grow has set a memory error code. */
/* Perhaps we should send an alert. (but we have no memory!) */
return SECFailure;
}
}
+ /* Most record types aside from protected TLS 1.3 records carry the content
+ * type in the first octet. TLS 1.3 will override this value later. */
+ rType = cText->hdr[0];
+ /* Encrypted application data records could arrive before the handshake
+ * completes in DTLS 1.3. These can look like valid TLS 1.2 application_data
+ * records in epoch 0, which is never valid. Pretend they didn't decrypt. */
+ if (spec->epoch == 0 && rType == content_application_data) {
+ PORT_SetError(SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA);
+ alert = unexpected_message;
+ rv = SECFailure;
+ } else {
#ifdef UNSAFE_FUZZER_MODE
- rv = Null_Cipher(NULL, plaintext->buf, (int *)&plaintext->len,
- plaintext->space, cText->buf->buf, cText->buf->len);
+ rv = Null_Cipher(NULL, plaintext->buf, (int *)&plaintext->len,
+ plaintext->space, cText->buf->buf, cText->buf->len);
#else
- /* IMPORTANT: Unprotect functions MUST NOT send alerts
- * because we still hold the spec read lock. Instead, if they
- * return SECFailure, they set *alert to the alert to be sent. */
- if (spec->version < SSL_LIBRARY_VERSION_TLS_1_3 ||
- spec->cipherDef->calg == ssl_calg_null) {
- /* Unencrypted TLS 1.3 records use the pre-TLS 1.3 format. */
- rv = ssl3_UnprotectRecord(ss, spec, cText, plaintext, &alert);
- } else {
- rv = tls13_UnprotectRecord(ss, spec, cText, plaintext, &alert);
- }
+ /* IMPORTANT: Unprotect functions MUST NOT send alerts
+ * because we still hold the spec read lock. Instead, if they
+ * return SECFailure, they set *alert to the alert to be sent. */
+ if (spec->version < SSL_LIBRARY_VERSION_TLS_1_3 ||
+ spec->epoch == 0) {
+ rv = ssl3_UnprotectRecord(ss, spec, cText, plaintext, &alert);
+ } else {
+ rv = tls13_UnprotectRecord(ss, spec, cText, plaintext, &rType,
+ &alert);
+ }
#endif
+ }
if (rv != SECSuccess) {
ssl_ReleaseSpecReadLock(ss); /***************************/
@@ -12276,39 +12297,45 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf)
SSL_DBG(("%d: SSL3[%d]: decryption failed", SSL_GETPID(), ss->fd));
/* Ensure that we don't process this data again. */
- databuf->len = 0;
+ plaintext->len = 0;
- /* Ignore a CCS if the alternative handshake is negotiated. Note that
- * this will fail if the server fails to negotiate the alternative
- * handshake type in a 0-RTT session that is resumed from a session that
- * did negotiate it. We don't care about that corner case right now. */
+ /* Ignore a CCS if compatibility mode is negotiated. Note that this
+ * will fail if the server fails to negotiate compatibility mode in a
+ * 0-RTT session that is resumed from a session that did negotiate it.
+ * We don't care about that corner case right now. */
if (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 &&
- cText->type == content_change_cipher_spec &&
+ cText->hdr[0] == content_change_cipher_spec &&
ss->ssl3.hs.ws != idle_handshake &&
cText->buf->len == 1 &&
cText->buf->buf[0] == change_cipher_spec_choice) {
/* Ignore the CCS. */
return SECSuccess;
}
+
if (IS_DTLS(ss) ||
(ss->sec.isServer &&
ss->ssl3.hs.zeroRttIgnore == ssl_0rtt_ignore_trial)) {
- /* Silently drop the packet */
+ /* Silently drop the packet unless we sent a fatal alert. */
+ if (ss->ssl3.fatalAlertSent) {
+ return SECFailure;
+ }
return SECSuccess;
- } else {
- int errCode = PORT_GetError();
- SSL3_SendAlert(ss, alert_fatal, alert);
- /* Reset the error code in case SSL3_SendAlert called
- * PORT_SetError(). */
- PORT_SetError(errCode);
- return SECFailure;
}
+
+ int errCode = PORT_GetError();
+ SSL3_SendAlert(ss, alert_fatal, alert);
+ /* Reset the error code in case SSL3_SendAlert called
+ * PORT_SetError(). */
+ PORT_SetError(errCode);
+ return SECFailure;
}
/* SECSuccess */
- spec->seqNum = PR_MAX(spec->seqNum, seqNum);
if (IS_DTLS(ss)) {
- dtls_RecordSetRecvd(&spec->recvdRecords, seqNum);
+ dtls_RecordSetRecvd(&spec->recvdRecords, cText->seqNum);
+ spec->nextSeqNum = PR_MAX(spec->nextSeqNum, cText->seqNum + 1);
+ } else {
+ ++spec->nextSeqNum;
}
epoch = spec->epoch;
@@ -12317,19 +12344,18 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf)
/*
* The decrypted data is now in plaintext.
*/
- rType = cText->type; /* This must go after decryption because TLS 1.3
- * has encrypted content types. */
/* IMPORTANT: We are in DTLS 1.3 mode and we have processed something
* from the wrong epoch. Divert to a divert processing function to make
* sure we don't accidentally use the data unsafely. */
if (outOfOrderSpec) {
PORT_Assert(IS_DTLS(ss) && ss->version >= SSL_LIBRARY_VERSION_TLS_1_3);
- return dtls13_HandleOutOfEpochRecord(ss, spec, rType, databuf);
+ return dtls13_HandleOutOfEpochRecord(ss, spec, rType, plaintext);
}
/* Check the length of the plaintext. */
- if (isTLS && databuf->len > MAX_FRAGMENT_LENGTH) {
+ if (isTLS && plaintext->len > recordSizeLimit) {
+ plaintext->len = 0;
SSL3_SendAlert(ss, alert_fatal, record_overflow);
PORT_SetError(SSL_ERROR_RX_RECORD_TOO_LONG);
return SECFailure;
@@ -12344,14 +12370,16 @@ ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cText, sslBuffer *databuf)
if (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 &&
ss->sec.isServer &&
ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted) {
- return tls13_HandleEarlyApplicationData(ss, databuf);
+ return tls13_HandleEarlyApplicationData(ss, plaintext);
}
+ plaintext->len = 0;
(void)SSL3_SendAlert(ss, alert_fatal, unexpected_message);
PORT_SetError(SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA);
return SECFailure;
}
- return ssl3_HandleNonApplicationData(ss, rType, epoch, seqNum, databuf);
+ return ssl3_HandleNonApplicationData(ss, rType, epoch, cText->seqNum,
+ plaintext);
}
/*
diff --git a/security/nss/lib/ssl/ssl3ecc.c b/security/nss/lib/ssl/ssl3ecc.c
index 913a14f637..f8b9a94000 100644
--- a/security/nss/lib/ssl/ssl3ecc.c
+++ b/security/nss/lib/ssl/ssl3ecc.c
@@ -548,12 +548,14 @@ ssl3_HandleECDHServerKeyExchange(sslSocket *ss, PRUint8 *b, PRUint32 length)
if (ss->ssl3.prSpec->version == SSL_LIBRARY_VERSION_TLS_1_2) {
rv = ssl_ConsumeSignatureScheme(ss, &b, &length, &sigScheme);
if (rv != SECSuccess) {
- goto loser; /* malformed or unsupported. */
+ errCode = PORT_GetError();
+ goto alert_loser; /* malformed or unsupported. */
}
rv = ssl_CheckSignatureSchemeConsistency(ss, sigScheme,
ss->sec.peerCert);
if (rv != SECSuccess) {
- goto loser;
+ errCode = PORT_GetError();
+ goto alert_loser;
}
hashAlg = ssl_SignatureSchemeToHashType(sigScheme);
} else {
diff --git a/security/nss/lib/ssl/ssl3ext.c b/security/nss/lib/ssl/ssl3ext.c
index 5a50779989..9b6c719f88 100644
--- a/security/nss/lib/ssl/ssl3ext.c
+++ b/security/nss/lib/ssl/ssl3ext.c
@@ -39,7 +39,6 @@ static const ssl3ExtensionHandler clientHelloHandlers[] = {
{ ssl_ec_point_formats_xtn, &ssl3_HandleSupportedPointFormatsXtn },
{ ssl_session_ticket_xtn, &ssl3_ServerHandleSessionTicketXtn },
{ ssl_renegotiation_info_xtn, &ssl3_HandleRenegotiationInfoXtn },
- { ssl_next_proto_nego_xtn, &ssl3_ServerHandleNextProtoNegoXtn },
{ ssl_app_layer_protocol_xtn, &ssl3_ServerHandleAppProtoXtn },
{ ssl_use_srtp_xtn, &ssl3_ServerHandleUseSRTPXtn },
{ ssl_cert_status_xtn, &ssl3_ServerHandleStatusRequestXtn },
@@ -51,6 +50,7 @@ static const ssl3ExtensionHandler clientHelloHandlers[] = {
{ ssl_tls13_early_data_xtn, &tls13_ServerHandleEarlyDataXtn },
{ ssl_tls13_psk_key_exchange_modes_xtn, &tls13_ServerHandlePskModesXtn },
{ ssl_tls13_cookie_xtn, &tls13_ServerHandleCookieXtn },
+ { ssl_record_size_limit_xtn, &ssl_HandleRecordSizeLimitXtn },
{ 0, NULL }
};
@@ -61,7 +61,6 @@ static const ssl3ExtensionHandler serverHelloHandlersTLS[] = {
/* TODO: add a handler for ssl_ec_point_formats_xtn */
{ ssl_session_ticket_xtn, &ssl3_ClientHandleSessionTicketXtn },
{ ssl_renegotiation_info_xtn, &ssl3_HandleRenegotiationInfoXtn },
- { ssl_next_proto_nego_xtn, &ssl3_ClientHandleNextProtoNegoXtn },
{ ssl_app_layer_protocol_xtn, &ssl3_ClientHandleAppProtoXtn },
{ ssl_use_srtp_xtn, &ssl3_ClientHandleUseSRTPXtn },
{ ssl_cert_status_xtn, &ssl3_ClientHandleStatusRequestXtn },
@@ -70,6 +69,7 @@ static const ssl3ExtensionHandler serverHelloHandlersTLS[] = {
{ ssl_tls13_key_share_xtn, &tls13_ClientHandleKeyShareXtn },
{ ssl_tls13_pre_shared_key_xtn, &tls13_ClientHandlePreSharedKeyXtn },
{ ssl_tls13_early_data_xtn, &tls13_ClientHandleEarlyDataXtn },
+ { ssl_record_size_limit_xtn, &ssl_HandleRecordSizeLimitXtn },
{ 0, NULL }
};
@@ -122,7 +122,6 @@ static const sslExtensionBuilder clientHelloSendersTLS[] =
{ ssl_supported_groups_xtn, &ssl_SendSupportedGroupsXtn },
{ ssl_ec_point_formats_xtn, &ssl3_SendSupportedPointFormatsXtn },
{ ssl_session_ticket_xtn, &ssl3_ClientSendSessionTicketXtn },
- { ssl_next_proto_nego_xtn, &ssl3_ClientSendNextProtoNegoXtn },
{ ssl_app_layer_protocol_xtn, &ssl3_ClientSendAppProtoXtn },
{ ssl_use_srtp_xtn, &ssl3_ClientSendUseSRTPXtn },
{ ssl_cert_status_xtn, &ssl3_ClientSendStatusRequestXtn },
@@ -137,6 +136,7 @@ static const sslExtensionBuilder clientHelloSendersTLS[] =
{ ssl_signature_algorithms_xtn, &ssl3_SendSigAlgsXtn },
{ ssl_tls13_cookie_xtn, &tls13_ClientSendHrrCookieXtn },
{ ssl_tls13_psk_key_exchange_modes_xtn, &tls13_ClientSendPskModesXtn },
+ { ssl_record_size_limit_xtn, &ssl_SendRecordSizeLimitXtn },
/* The pre_shared_key extension MUST be last. */
{ ssl_tls13_pre_shared_key_xtn, &tls13_ClientSendPreSharedKeyXtn },
{ 0, NULL }
@@ -183,7 +183,6 @@ static const struct {
{ ssl_tls13_psk_key_exchange_modes_xtn, ssl_ext_native_only },
{ ssl_tls13_ticket_early_data_info_xtn, ssl_ext_native_only },
{ ssl_tls13_certificate_authorities_xtn, ssl_ext_native },
- { ssl_next_proto_nego_xtn, ssl_ext_none },
{ ssl_renegotiation_info_xtn, ssl_ext_native }
};
@@ -681,7 +680,11 @@ ssl_CallCustomExtensionSenders(sslSocket *ss, sslBuffer *buf,
}
}
- sslBuffer_Append(buf, tail.buf, tail.len);
+ rv = sslBuffer_Append(buf, tail.buf, tail.len);
+ if (rv != SECSuccess) {
+ goto loser; /* Code already set. */
+ }
+
sslBuffer_Clear(&tail);
return SECSuccess;
diff --git a/security/nss/lib/ssl/ssl3ext.h b/security/nss/lib/ssl/ssl3ext.h
index d0f75a599a..6d77c7459e 100644
--- a/security/nss/lib/ssl/ssl3ext.h
+++ b/security/nss/lib/ssl/ssl3ext.h
@@ -98,6 +98,9 @@ struct TLSExtensionDataStr {
/* The application token contains a value that was passed to the client via
* a session ticket, or the cookie in a HelloRetryRequest. */
SECItem applicationToken;
+
+ /* The record size limit set by the peer. Our value is kept in ss->opt. */
+ PRUint16 recordSizeLimit;
};
typedef struct TLSExtensionStr {
diff --git a/security/nss/lib/ssl/ssl3exthandle.c b/security/nss/lib/ssl/ssl3exthandle.c
index e6388945e1..d1f286dc3c 100644
--- a/security/nss/lib/ssl/ssl3exthandle.c
+++ b/security/nss/lib/ssl/ssl3exthandle.c
@@ -242,33 +242,11 @@ ssl_AlpnTagAllowed(const sslSocket *ss, const SECItem *tag)
return PR_FALSE;
}
-/* handle an incoming Next Protocol Negotiation extension. */
-SECStatus
-ssl3_ServerHandleNextProtoNegoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
- SECItem *data)
-{
- PORT_Assert(ss->version < SSL_LIBRARY_VERSION_TLS_1_3);
-
- if (ss->firstHsDone || data->len != 0) {
- /* Clients MUST send an empty NPN extension, if any. */
- PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID);
- return SECFailure;
- }
-
- xtnData->negotiated[xtnData->numNegotiated++] = ssl_next_proto_nego_xtn;
-
- /* TODO: server side NPN support would require calling
- * ssl3_RegisterServerHelloExtensionSender here in order to echo the
- * extension back to the client. */
-
- return SECSuccess;
-}
-
-/* ssl3_ValidateNextProtoNego checks that the given block of data is valid: none
+/* ssl3_ValidateAppProtocol checks that the given block of data is valid: none
* of the lengths may be 0 and the sum of the lengths must equal the length of
* the block. */
SECStatus
-ssl3_ValidateNextProtoNego(const unsigned char *data, unsigned int length)
+ssl3_ValidateAppProtocol(const unsigned char *data, unsigned int length)
{
unsigned int offset = 0;
@@ -286,7 +264,7 @@ ssl3_ValidateNextProtoNego(const unsigned char *data, unsigned int length)
return SECSuccess;
}
-/* protocol selection handler for ALPN (server side) and NPN (client side) */
+/* Protocol selection handler for ALPN. */
static SECStatus
ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData,
PRUint16 extension, SECItem *data)
@@ -295,7 +273,7 @@ ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData,
unsigned char resultBuffer[255];
SECItem result = { siBuffer, resultBuffer, 0 };
- rv = ssl3_ValidateNextProtoNego(data->data, data->len);
+ rv = ssl3_ValidateAppProtocol(data->data, data->len);
if (rv != SECSuccess) {
ssl3_ExtSendAlert(ss, alert_fatal, decode_error);
PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID);
@@ -303,11 +281,13 @@ ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData,
}
PORT_Assert(ss->nextProtoCallback);
- /* For ALPN, the cipher suite isn't selected yet. Note that extensions
+ /* The cipher suite isn't selected yet. Note that extensions
* sometimes affect what cipher suite is selected, e.g., for ECC. */
PORT_Assert((ss->ssl3.hs.preliminaryInfo &
ssl_preinfo_all & ~ssl_preinfo_cipher_suite) ==
(ssl_preinfo_all & ~ssl_preinfo_cipher_suite));
+ /* The callback has to make sure that either rv != SECSuccess or that result
+ * is not set if there is no common protocol. */
rv = ss->nextProtoCallback(ss->nextProtoArg, ss->fd, data->data, data->len,
result.data, &result.len, sizeof(resultBuffer));
if (rv != SECSuccess) {
@@ -320,21 +300,20 @@ ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData,
* stack. */
if (result.len > sizeof(resultBuffer)) {
PORT_SetError(SEC_ERROR_OUTPUT_LEN);
- /* TODO: crash */
+ PORT_Assert(PR_FALSE);
return SECFailure;
}
SECITEM_FreeItem(&xtnData->nextProto, PR_FALSE);
- if (extension == ssl_app_layer_protocol_xtn &&
- xtnData->nextProtoState != SSL_NEXT_PROTO_NEGOTIATED) {
- /* The callback might say OK, but then it picks a default value - one
- * that was not listed. That's OK for NPN, but not ALPN. */
+ if (result.len < 1 || !result.data) {
+ /* Check that we actually got a result. */
ssl3_ExtSendAlert(ss, alert_fatal, no_application_protocol);
PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_NO_PROTOCOL);
return SECFailure;
}
+ xtnData->nextProtoState = SSL_NEXT_PROTO_NEGOTIATED;
xtnData->negotiated[xtnData->numNegotiated++] = extension;
return SECITEM_CopyItem(NULL, &xtnData->nextProto, &result);
}
@@ -356,7 +335,7 @@ ssl3_ServerHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
return SECFailure;
}
- /* Unlike NPN, ALPN has extra redundant length information so that
+ /* ALPN has extra redundant length information so that
* the extension is the same in both ClientHello and ServerHello. */
rv = ssl3_ExtConsumeHandshakeNumber(ss, &count, 2, &data->data, &data->len);
if (rv != SECSuccess || count != data->len) {
@@ -389,39 +368,6 @@ ssl3_ServerHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
}
SECStatus
-ssl3_ClientHandleNextProtoNegoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
- SECItem *data)
-{
- PORT_Assert(ss->version < SSL_LIBRARY_VERSION_TLS_1_3);
- PORT_Assert(!ss->firstHsDone);
-
- if (ssl3_ExtensionNegotiated(ss, ssl_app_layer_protocol_xtn)) {
- /* If the server negotiated ALPN then it has already told us what
- * protocol to use, so it doesn't make sense for us to try to negotiate
- * a different one by sending the NPN handshake message. However, if
- * we've negotiated NPN then we're required to send the NPN handshake
- * message. Thus, these two extensions cannot both be negotiated on the
- * same connection. */
- ssl3_ExtSendAlert(ss, alert_fatal, illegal_parameter);
- PORT_SetError(SSL_ERROR_BAD_SERVER);
- return SECFailure;
- }
-
- /* We should only get this call if we sent the extension, so
- * ss->nextProtoCallback needs to be non-NULL. However, it is possible
- * that an application erroneously cleared the callback between the time
- * we sent the ClientHello and now. */
- if (!ss->nextProtoCallback) {
- PORT_Assert(0);
- ssl3_ExtSendAlert(ss, alert_fatal, internal_error);
- PORT_SetError(SSL_ERROR_NEXT_PROTOCOL_NO_CALLBACK);
- return SECFailure;
- }
-
- return ssl3_SelectAppProtocol(ss, xtnData, ssl_next_proto_nego_xtn, data);
-}
-
-SECStatus
ssl3_ClientHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
SECItem *data)
{
@@ -475,19 +421,6 @@ ssl3_ClientHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
}
SECStatus
-ssl3_ClientSendNextProtoNegoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
- sslBuffer *buf, PRBool *added)
-{
- /* Renegotiations do not send this extension. */
- if (!ss->opt.enableNPN || !ss->nextProtoCallback || ss->firstHsDone) {
- return SECSuccess;
- }
-
- *added = PR_TRUE;
- return SECSuccess;
-}
-
-SECStatus
ssl3_ClientSendAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
sslBuffer *buf, PRBool *added)
{
@@ -499,35 +432,15 @@ ssl3_ClientSendAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData,
return SECSuccess;
}
- /* NPN requires that the client's fallback protocol is first in the
- * list. However, ALPN sends protocols in preference order. So move the
- * first protocol to the end of the list. */
-
if (len > 0) {
/* Each protocol string is prefixed with a single byte length. */
- unsigned int i;
-
rv = sslBuffer_AppendNumber(buf, len, 2);
if (rv != SECSuccess) {
return SECFailure;
}
-
- i = ss->opt.nextProtoNego.data[0] + 1;
- if (i <= len) {
- rv = sslBuffer_Append(buf, &ss->opt.nextProtoNego.data[i], len - i);
- if (rv != SECSuccess) {
- return SECFailure;
- }
- rv = sslBuffer_Append(buf, ss->opt.nextProtoNego.data, i);
- if (rv != SECSuccess) {
- return SECFailure;
- }
- } else {
- /* This seems to be invalid data so we'll send as-is. */
- rv = sslBuffer_Append(buf, ss->opt.nextProtoNego.data, len);
- if (rv != SECSuccess) {
- return SECFailure;
- }
+ rv = sslBuffer_Append(buf, ss->opt.nextProtoNego.data, len);
+ if (rv != SECSuccess) {
+ return SECFailure;
}
}
@@ -1955,3 +1868,67 @@ ssl_HandleSupportedGroupsXtn(const sslSocket *ss, TLSExtensionData *xtnData,
return SECSuccess;
}
+
+SECStatus
+ssl_HandleRecordSizeLimitXtn(const sslSocket *ss, TLSExtensionData *xtnData,
+ SECItem *data)
+{
+ SECStatus rv;
+ PRUint32 limit;
+ PRUint32 maxLimit = (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3)
+ ? (MAX_FRAGMENT_LENGTH + 1)
+ : MAX_FRAGMENT_LENGTH;
+
+ rv = ssl3_ExtConsumeHandshakeNumber(ss, &limit, 2, &data->data, &data->len);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ if (data->len != 0 || limit < 64) {
+ ssl3_ExtSendAlert(ss, alert_fatal, illegal_parameter);
+ PORT_SetError(SSL_ERROR_RX_MALFORMED_HANDSHAKE);
+ return SECFailure;
+ }
+
+ if (ss->sec.isServer) {
+ rv = ssl3_RegisterExtensionSender(ss, xtnData, ssl_record_size_limit_xtn,
+ &ssl_SendRecordSizeLimitXtn);
+ if (rv != SECSuccess) {
+ return SECFailure; /* error already set. */
+ }
+ } else if (limit > maxLimit) {
+ /* The client can sensibly check the maximum. */
+ ssl3_ExtSendAlert(ss, alert_fatal, illegal_parameter);
+ PORT_SetError(SSL_ERROR_RX_MALFORMED_HANDSHAKE);
+ return SECFailure;
+ }
+
+ /* We can't enforce the maximum on a server. But we do need to ensure
+ * that we don't apply a limit that is too large. */
+ xtnData->recordSizeLimit = PR_MIN(maxLimit, limit);
+ xtnData->negotiated[xtnData->numNegotiated++] = ssl_record_size_limit_xtn;
+ return SECSuccess;
+}
+
+SECStatus
+ssl_SendRecordSizeLimitXtn(const sslSocket *ss, TLSExtensionData *xtnData,
+ sslBuffer *buf, PRBool *added)
+{
+ PRUint32 maxLimit;
+ if (ss->sec.isServer) {
+ maxLimit = (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3)
+ ? (MAX_FRAGMENT_LENGTH + 1)
+ : MAX_FRAGMENT_LENGTH;
+ } else {
+ maxLimit = (ss->vrange.max >= SSL_LIBRARY_VERSION_TLS_1_3)
+ ? (MAX_FRAGMENT_LENGTH + 1)
+ : MAX_FRAGMENT_LENGTH;
+ }
+ PRUint32 limit = PR_MIN(ss->opt.recordSizeLimit, maxLimit);
+ SECStatus rv = sslBuffer_AppendNumber(buf, limit, 2);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+
+ *added = PR_TRUE;
+ return SECSuccess;
+}
diff --git a/security/nss/lib/ssl/ssl3exthandle.h b/security/nss/lib/ssl/ssl3exthandle.h
index b84bd074c0..eaf7f0081c 100644
--- a/security/nss/lib/ssl/ssl3exthandle.h
+++ b/security/nss/lib/ssl/ssl3exthandle.h
@@ -119,4 +119,11 @@ SECStatus ssl_SendSupportedGroupsXtn(const sslSocket *ss,
SECStatus ssl3_SendSupportedPointFormatsXtn(const sslSocket *ss,
TLSExtensionData *xtnData,
sslBuffer *buf, PRBool *added);
+SECStatus ssl_HandleRecordSizeLimitXtn(const sslSocket *ss,
+ TLSExtensionData *xtnData,
+ SECItem *data);
+SECStatus ssl_SendRecordSizeLimitXtn(const sslSocket *ss,
+ TLSExtensionData *xtnData,
+ sslBuffer *buf, PRBool *added);
+
#endif
diff --git a/security/nss/lib/ssl/ssl3gthr.c b/security/nss/lib/ssl/ssl3gthr.c
index 8b323bb054..5ea7cc249e 100644
--- a/security/nss/lib/ssl/ssl3gthr.c
+++ b/security/nss/lib/ssl/ssl3gthr.c
@@ -158,6 +158,7 @@ ssl3_GatherData(sslSocket *ss, sslGather *gs, int flags, ssl2Gather *ssl2gs)
* the length of the following encrypted data, and then
* read in the rest of the record into gs->inbuf. */
gs->remainder = (gs->hdr[3] << 8) | gs->hdr[4];
+ gs->hdrLen = SSL3_RECORD_HEADER_LENGTH;
} else {
/* Probably an SSLv2 record header. No need to handle any
* security escapes (gs->hdr[0] & 0x40) as we wouldn't get
@@ -264,8 +265,9 @@ static int
dtls_GatherData(sslSocket *ss, sslGather *gs, int flags)
{
int nb;
- int err;
- int rv = 1;
+ PRUint8 contentType;
+ unsigned int headerLen;
+ SECStatus rv;
SSL_TRC(30, ("dtls_GatherData"));
@@ -285,81 +287,97 @@ dtls_GatherData(sslSocket *ss, sslGather *gs, int flags)
** to 13 (the size of the record header).
*/
if (gs->dtlsPacket.space < MAX_FRAGMENT_LENGTH + 2048 + 13) {
- err = sslBuffer_Grow(&gs->dtlsPacket,
- MAX_FRAGMENT_LENGTH + 2048 + 13);
- if (err) { /* realloc has set error code to no mem. */
- return err;
+ rv = sslBuffer_Grow(&gs->dtlsPacket,
+ MAX_FRAGMENT_LENGTH + 2048 + 13);
+ if (rv != SECSuccess) {
+ return -1; /* Code already set. */
}
}
/* recv() needs to read a full datagram at a time */
nb = ssl_DefRecv(ss, gs->dtlsPacket.buf, gs->dtlsPacket.space, flags);
-
if (nb > 0) {
PRINT_BUF(60, (ss, "raw gather data:", gs->dtlsPacket.buf, nb));
} else if (nb == 0) {
/* EOF */
SSL_TRC(30, ("%d: SSL3[%d]: EOF", SSL_GETPID(), ss->fd));
- rv = 0;
- return rv;
+ return 0;
} else /* if (nb < 0) */ {
SSL_DBG(("%d: SSL3[%d]: recv error %d", SSL_GETPID(), ss->fd,
PR_GetError()));
- rv = SECFailure;
- return rv;
+ return -1;
}
gs->dtlsPacket.len = nb;
}
+ contentType = gs->dtlsPacket.buf[gs->dtlsPacketOffset];
+ if (dtls_IsLongHeader(ss->version, contentType)) {
+ headerLen = 13;
+ } else if (contentType == content_application_data) {
+ headerLen = 7;
+ } else if ((contentType & 0xe0) == 0x20) {
+ headerLen = 2;
+ } else {
+ SSL_DBG(("%d: SSL3[%d]: invalid first octet (%d) for DTLS",
+ SSL_GETPID(), ss->fd, contentType));
+ PORT_SetError(SSL_ERROR_RX_UNKNOWN_RECORD_TYPE);
+ gs->dtlsPacketOffset = 0;
+ gs->dtlsPacket.len = 0;
+ return -1;
+ }
+
/* At this point we should have >=1 complete records lined up in
* dtlsPacket. Read off the header.
*/
- if ((gs->dtlsPacket.len - gs->dtlsPacketOffset) < 13) {
+ if ((gs->dtlsPacket.len - gs->dtlsPacketOffset) < headerLen) {
SSL_DBG(("%d: SSL3[%d]: rest of DTLS packet "
"too short to contain header",
SSL_GETPID(), ss->fd));
- PR_SetError(PR_WOULD_BLOCK_ERROR, 0);
+ PORT_SetError(PR_WOULD_BLOCK_ERROR);
gs->dtlsPacketOffset = 0;
gs->dtlsPacket.len = 0;
- rv = SECFailure;
- return rv;
+ return -1;
}
- memcpy(gs->hdr, gs->dtlsPacket.buf + gs->dtlsPacketOffset, 13);
- gs->dtlsPacketOffset += 13;
+ memcpy(gs->hdr, SSL_BUFFER_BASE(&gs->dtlsPacket) + gs->dtlsPacketOffset,
+ headerLen);
+ gs->hdrLen = headerLen;
+ gs->dtlsPacketOffset += headerLen;
/* Have received SSL3 record header in gs->hdr. */
- gs->remainder = (gs->hdr[11] << 8) | gs->hdr[12];
+ if (headerLen == 13) {
+ gs->remainder = (gs->hdr[11] << 8) | gs->hdr[12];
+ } else if (headerLen == 7) {
+ gs->remainder = (gs->hdr[5] << 8) | gs->hdr[6];
+ } else {
+ PORT_Assert(headerLen == 2);
+ gs->remainder = gs->dtlsPacket.len - gs->dtlsPacketOffset;
+ }
if ((gs->dtlsPacket.len - gs->dtlsPacketOffset) < gs->remainder) {
SSL_DBG(("%d: SSL3[%d]: rest of DTLS packet too short "
"to contain rest of body",
SSL_GETPID(), ss->fd));
- PR_SetError(PR_WOULD_BLOCK_ERROR, 0);
+ PORT_SetError(PR_WOULD_BLOCK_ERROR);
gs->dtlsPacketOffset = 0;
gs->dtlsPacket.len = 0;
- rv = SECFailure;
- return rv;
+ return -1;
}
/* OK, we have at least one complete packet, copy into inbuf */
- if (gs->remainder > gs->inbuf.space) {
- err = sslBuffer_Grow(&gs->inbuf, gs->remainder);
- if (err) { /* realloc has set error code to no mem. */
- return err;
- }
+ gs->inbuf.len = 0;
+ rv = sslBuffer_Append(&gs->inbuf,
+ SSL_BUFFER_BASE(&gs->dtlsPacket) + gs->dtlsPacketOffset,
+ gs->remainder);
+ if (rv != SECSuccess) {
+ return -1; /* code already set. */
}
-
- SSL_TRC(20, ("%d: SSL3[%d]: dtls gathered record type=%d len=%d",
- SSL_GETPID(), ss->fd, gs->hdr[0], gs->inbuf.len));
-
- memcpy(gs->inbuf.buf, gs->dtlsPacket.buf + gs->dtlsPacketOffset,
- gs->remainder);
- gs->inbuf.len = gs->remainder;
gs->offset = gs->remainder;
gs->dtlsPacketOffset += gs->remainder;
gs->state = GS_INIT;
+ SSL_TRC(20, ("%d: SSL3[%d]: dtls gathered record type=%d len=%d",
+ SSL_GETPID(), ss->fd, contentType, gs->inbuf.len));
return 1;
}
@@ -442,7 +460,11 @@ ssl3_GatherCompleteHandshake(sslSocket *ss, int flags)
* We need to process it now before we overwrite it with the next
* handshake record.
*/
- rv = ssl3_HandleRecord(ss, NULL, &ss->gs.buf);
+ SSL_DBG(("%d: SSL3[%d]: resuming handshake",
+ SSL_GETPID(), ss->fd));
+ PORT_Assert(!IS_DTLS(ss));
+ rv = ssl3_HandleNonApplicationData(ss, content_handshake,
+ 0, 0, &ss->gs.buf);
} else {
/* State for SSLv2 client hello support. */
ssl2Gather ssl2gs = { PR_FALSE, 0 };
@@ -495,20 +517,14 @@ ssl3_GatherCompleteHandshake(sslSocket *ss, int flags)
* If it's application data, ss->gs.buf will not be empty upon return.
* If it's a change cipher spec, alert, or handshake message,
* ss->gs.buf.len will be 0 when ssl3_HandleRecord returns SECSuccess.
+ *
+ * cText only needs to be valid for this next function call, so
+ * it can borrow gs.hdr.
*/
- cText.type = (SSL3ContentType)ss->gs.hdr[0];
- cText.version = (ss->gs.hdr[1] << 8) | ss->gs.hdr[2];
-
- if (IS_DTLS(ss)) {
- sslSequenceNumber seq_num;
-
- /* DTLS sequence number */
- PORT_Memcpy(&seq_num, &ss->gs.hdr[3], sizeof(seq_num));
- cText.seq_num = PR_ntohll(seq_num);
- }
-
+ cText.hdr = ss->gs.hdr;
+ cText.hdrLen = ss->gs.hdrLen;
cText.buf = &ss->gs.inbuf;
- rv = ssl3_HandleRecord(ss, &cText, &ss->gs.buf);
+ rv = ssl3_HandleRecord(ss, &cText);
}
}
if (rv < 0) {
@@ -520,7 +536,6 @@ ssl3_GatherCompleteHandshake(sslSocket *ss, int flags)
* completing any renegotiation handshake we may be doing.
*/
PORT_Assert(ss->firstHsDone);
- PORT_Assert(cText.type == content_application_data);
break;
}
diff --git a/security/nss/lib/ssl/ssl3prot.h b/security/nss/lib/ssl/ssl3prot.h
index d1f46db971..8e6cf27456 100644
--- a/security/nss/lib/ssl/ssl3prot.h
+++ b/security/nss/lib/ssl/ssl3prot.h
@@ -16,7 +16,7 @@ typedef PRUint16 SSL3ProtocolVersion;
/* The TLS 1.3 draft version. Used to avoid negotiating
* between incompatible pre-standard TLS 1.3 drafts.
* TODO(ekr@rtfm.com): Remove when TLS 1.3 is published. */
-#define TLS_1_3_DRAFT_VERSION 23
+#define TLS_1_3_DRAFT_VERSION 28
typedef PRUint16 ssl3CipherSuite;
/* The cipher suites are defined in sslproto.h */
diff --git a/security/nss/lib/ssl/sslcert.c b/security/nss/lib/ssl/sslcert.c
index 6cd02e4025..1c3ddb0e75 100644
--- a/security/nss/lib/ssl/sslcert.c
+++ b/security/nss/lib/ssl/sslcert.c
@@ -256,7 +256,8 @@ ssl_PopulateKeyPair(sslServerCert *sc, sslKeyPair *keyPair)
/* Get the size of the cert's public key, and remember it. */
sc->serverKeyBits = SECKEY_PublicKeyStrengthInBits(keyPair->pubKey);
- if (sc->serverKeyBits == 0) {
+ if (sc->serverKeyBits == 0 ||
+ (keyType == rsaKey && sc->serverKeyBits > SSL_MAX_RSA_KEY_BITS)) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
}
diff --git a/security/nss/lib/ssl/sslerr.h b/security/nss/lib/ssl/sslerr.h
index b94d0cc62e..518a2b8875 100644
--- a/security/nss/lib/ssl/sslerr.h
+++ b/security/nss/lib/ssl/sslerr.h
@@ -262,6 +262,8 @@ typedef enum {
SSL_ERROR_TOO_MANY_KEY_UPDATES = (SSL_ERROR_BASE + 171),
SSL_ERROR_HANDSHAKE_FAILED = (SSL_ERROR_BASE + 172),
SSL_ERROR_BAD_RESUMPTION_TOKEN_ERROR = (SSL_ERROR_BASE + 173),
+ SSL_ERROR_RX_MALFORMED_DTLS_ACK = (SSL_ERROR_BASE + 174),
+ SSL_ERROR_DH_KEY_TOO_LONG = (SSL_ERROR_BASE + 175),
SSL_ERROR_END_OF_LIST /* let the c compiler determine the value of this. */
} SSLErrorCodes;
#endif /* NO_SECURITY_ERROR_ENUM */
diff --git a/security/nss/lib/ssl/sslimpl.h b/security/nss/lib/ssl/sslimpl.h
index 10d0333d9e..a2209e90a1 100644
--- a/security/nss/lib/ssl/sslimpl.h
+++ b/security/nss/lib/ssl/sslimpl.h
@@ -121,6 +121,10 @@ typedef enum { SSLAppOpRead = 0,
/* default number of entries in namedGroupPreferences */
#define SSL_NAMED_GROUP_COUNT 31
+/* The maximum DH and RSA bit-length supported. */
+#define SSL_MAX_DH_KEY_BITS 8192
+#define SSL_MAX_RSA_KEY_BITS 8192
+
/* Types and names of elliptic curves used in TLS */
typedef enum {
ec_type_explicitPrime = 1, /* not supported */
@@ -232,6 +236,7 @@ typedef struct sslOptionsStr {
/* If SSL_SetNextProtoNego has been called, then this contains the
* list of supported protocols. */
SECItem nextProtoNego;
+ PRUint16 recordSizeLimit;
PRUint32 maxEarlyDataSize;
unsigned int useSecurity : 1;
@@ -251,7 +256,6 @@ typedef struct sslOptionsStr {
unsigned int enableFalseStart : 1;
unsigned int cbcRandomIV : 1;
unsigned int enableOCSPStapling : 1;
- unsigned int enableNPN : 1;
unsigned int enableALPN : 1;
unsigned int reuseServerECDHEKey : 1;
unsigned int enableFallbackSCSV : 1;
@@ -261,6 +265,7 @@ typedef struct sslOptionsStr {
unsigned int requireDHENamedGroups : 1;
unsigned int enable0RttData : 1;
unsigned int enableTls13CompatMode : 1;
+ unsigned int enableDtlsShortHeader : 1;
} sslOptions;
typedef enum { sslHandshakingUndetermined = 0,
@@ -325,9 +330,11 @@ struct sslGatherStr {
** than into buf or inbuf, while in the GS_HEADER state.
** The portion of the SSL record header put here always comes off the wire
** as plaintext, never ciphertext.
- ** For SSL3/TLS, the plaintext portion is 5 bytes long. For DTLS it is 13.
+ ** For SSL3/TLS, the plaintext portion is 5 bytes long. For DTLS it
+ ** varies based on version and header type.
*/
unsigned char hdr[13];
+ unsigned int hdrLen;
/* Buffer for DTLS data read off the wire as a single datagram */
sslBuffer dtlsPacket;
@@ -440,7 +447,7 @@ struct sslSessionIDStr {
*/
SECItem signedCertTimestamps;
- /* The NPN/ALPN value negotiated in the original connection.
+ /* The ALPN value negotiated in the original connection.
* Used for TLS 1.3. */
SECItem alpnSelection;
@@ -780,9 +787,13 @@ struct ssl3StateStr {
#define IS_DTLS(ss) (ss->protocolVariant == ssl_variant_datagram)
typedef struct {
- SSL3ContentType type;
- SSL3ProtocolVersion version;
- sslSequenceNumber seq_num; /* DTLS only */
+ /* |seqNum| eventually contains the reconstructed sequence number. */
+ sslSequenceNumber seqNum;
+ /* The header of the cipherText. */
+ const PRUint8 *hdr;
+ unsigned int hdrLen;
+
+ /* |buf| is the payload of the ciphertext. */
sslBuffer *buf;
} SSL3Ciphertext;
@@ -805,7 +816,7 @@ struct ssl3DHParamsStr {
};
typedef struct SSLWrappedSymWrappingKeyStr {
- PRUint8 wrappedSymmetricWrappingkey[512];
+ PRUint8 wrappedSymmetricWrappingkey[SSL_MAX_RSA_KEY_BITS / 8];
CK_MECHANISM_TYPE symWrapMechanism;
/* unwrapped symmetric wrapping key uses this mechanism */
CK_MECHANISM_TYPE asymWrapMechanism;
@@ -1375,8 +1386,11 @@ SECStatus ssl3_SendClientHello(sslSocket *ss, sslClientHelloType type);
/*
* input into the SSL3 machinery from the actualy network reading code
*/
-SECStatus ssl3_HandleRecord(
- sslSocket *ss, SSL3Ciphertext *cipher, sslBuffer *out);
+SECStatus ssl3_HandleRecord(sslSocket *ss, SSL3Ciphertext *cipher);
+SECStatus ssl3_HandleNonApplicationData(sslSocket *ss, SSL3ContentType rType,
+ DTLSEpoch epoch,
+ sslSequenceNumber seqNum,
+ sslBuffer *databuf);
SECStatus ssl_RemoveTLSCBCPadding(sslBuffer *plaintext, unsigned int macSize);
int ssl3_GatherAppDataRecord(sslSocket *ss, int flags);
@@ -1537,8 +1551,8 @@ SECStatus ssl_GetSelfEncryptKeys(sslSocket *ss, unsigned char *keyName,
PK11SymKey **encKey, PK11SymKey **macKey);
void ssl_ResetSelfEncryptKeys();
-extern SECStatus ssl3_ValidateNextProtoNego(const unsigned char *data,
- unsigned int length);
+extern SECStatus ssl3_ValidateAppProtocol(const unsigned char *data,
+ unsigned int length);
/* Construct a new NSPR socket for the app to use */
extern PRFileDesc *ssl_NewPRSocket(sslSocket *ss, PRFileDesc *fd);
@@ -1636,6 +1650,9 @@ SSLHashType ssl_SignatureSchemeToHashType(SSLSignatureScheme scheme);
KeyType ssl_SignatureSchemeToKeyType(SSLSignatureScheme scheme);
SECStatus ssl3_SetupCipherSuite(sslSocket *ss, PRBool initHashes);
+SECStatus ssl_InsertRecordHeader(const sslSocket *ss, ssl3CipherSpec *cwSpec,
+ SSL3ContentType contentType, sslBuffer *wrBuf,
+ PRBool *needsLength);
/* Pull in DTLS functions */
#include "dtlscon.h"
diff --git a/security/nss/lib/ssl/sslsecur.c b/security/nss/lib/ssl/sslsecur.c
index f09ec067ce..a1d3892145 100644
--- a/security/nss/lib/ssl/sslsecur.c
+++ b/security/nss/lib/ssl/sslsecur.c
@@ -791,7 +791,7 @@ tls13_CheckKeyUpdate(sslSocket *ss, CipherSpecDirection dir)
spec = ss->ssl3.cwSpec;
margin = spec->cipherDef->max_records / 4;
}
- seqNum = spec->seqNum;
+ seqNum = spec->nextSeqNum;
keyUpdate = seqNum > spec->cipherDef->max_records - margin;
ssl_ReleaseSpecReadLock(ss);
if (!keyUpdate) {
@@ -922,21 +922,30 @@ ssl_SecureSend(sslSocket *ss, const unsigned char *buf, int len, int flags)
*/
if (!ss->firstHsDone) {
PRBool allowEarlySend = PR_FALSE;
+ PRBool firstClientWrite = PR_FALSE;
ssl_Get1stHandshakeLock(ss);
- if (ss->opt.enableFalseStart ||
- (ss->opt.enable0RttData && !ss->sec.isServer)) {
+ /* The client can sometimes send before the handshake is fully
+ * complete. In TLS 1.2: false start; in TLS 1.3: 0-RTT. */
+ if (!ss->sec.isServer &&
+ (ss->opt.enableFalseStart || ss->opt.enable0RttData)) {
ssl_GetSSL3HandshakeLock(ss);
- /* The client can sometimes send before the handshake is fully
- * complete. In TLS 1.2: false start; in TLS 1.3: 0-RTT. */
zeroRtt = ss->ssl3.hs.zeroRttState == ssl_0rtt_sent ||
ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted;
allowEarlySend = ss->ssl3.hs.canFalseStart || zeroRtt;
+ firstClientWrite = ss->ssl3.hs.ws == idle_handshake;
ssl_ReleaseSSL3HandshakeLock(ss);
}
if (!allowEarlySend && ss->handshake) {
rv = ssl_Do1stHandshake(ss);
}
+ if (firstClientWrite) {
+ /* Wait until after sending ClientHello and double-check 0-RTT. */
+ ssl_GetSSL3HandshakeLock(ss);
+ zeroRtt = ss->ssl3.hs.zeroRttState == ssl_0rtt_sent ||
+ ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted;
+ ssl_ReleaseSSL3HandshakeLock(ss);
+ }
ssl_Release1stHandshakeLock(ss);
}
diff --git a/security/nss/lib/ssl/sslsock.c b/security/nss/lib/ssl/sslsock.c
index e08d5e2326..33595ffae9 100644
--- a/security/nss/lib/ssl/sslsock.c
+++ b/security/nss/lib/ssl/sslsock.c
@@ -55,6 +55,7 @@ static const sslSocketOps ssl_secure_ops = { /* SSL. */
static sslOptions ssl_defaults = {
.nextProtoNego = { siBuffer, NULL, 0 },
.maxEarlyDataSize = 1 << 16,
+ .recordSizeLimit = MAX_FRAGMENT_LENGTH + 1,
.useSecurity = PR_TRUE,
.useSocks = PR_FALSE,
.requestCertificate = PR_FALSE,
@@ -72,7 +73,6 @@ static sslOptions ssl_defaults = {
.enableFalseStart = PR_FALSE,
.cbcRandomIV = PR_TRUE,
.enableOCSPStapling = PR_FALSE,
- .enableNPN = PR_FALSE,
.enableALPN = PR_TRUE,
.reuseServerECDHEKey = PR_TRUE,
.enableFallbackSCSV = PR_FALSE,
@@ -81,7 +81,8 @@ static sslOptions ssl_defaults = {
.enableSignedCertTimestamps = PR_FALSE,
.requireDHENamedGroups = PR_FALSE,
.enable0RttData = PR_FALSE,
- .enableTls13CompatMode = PR_FALSE
+ .enableTls13CompatMode = PR_FALSE,
+ .enableDtlsShortHeader = PR_FALSE
};
/*
@@ -803,10 +804,23 @@ SSL_OptionSet(PRFileDesc *fd, PRInt32 which, PRIntn val)
ss->opt.enable0RttData = val;
break;
+ case SSL_RECORD_SIZE_LIMIT:
+ if (val < 64 || val > (MAX_FRAGMENT_LENGTH + 1)) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ rv = SECFailure;
+ } else {
+ ss->opt.recordSizeLimit = val;
+ }
+ break;
+
case SSL_ENABLE_TLS13_COMPAT_MODE:
ss->opt.enableTls13CompatMode = val;
break;
+ case SSL_ENABLE_DTLS_SHORT_HEADER:
+ ss->opt.enableDtlsShortHeader = val;
+ break;
+
default:
PORT_SetError(SEC_ERROR_INVALID_ARGS);
rv = SECFailure;
@@ -914,7 +928,7 @@ SSL_OptionGet(PRFileDesc *fd, PRInt32 which, PRIntn *pVal)
val = ss->opt.enableOCSPStapling;
break;
case SSL_ENABLE_NPN:
- val = ss->opt.enableNPN;
+ val = PR_FALSE;
break;
case SSL_ENABLE_ALPN:
val = ss->opt.enableALPN;
@@ -940,9 +954,15 @@ SSL_OptionGet(PRFileDesc *fd, PRInt32 which, PRIntn *pVal)
case SSL_ENABLE_0RTT_DATA:
val = ss->opt.enable0RttData;
break;
+ case SSL_RECORD_SIZE_LIMIT:
+ val = ss->opt.recordSizeLimit;
+ break;
case SSL_ENABLE_TLS13_COMPAT_MODE:
val = ss->opt.enableTls13CompatMode;
break;
+ case SSL_ENABLE_DTLS_SHORT_HEADER:
+ val = ss->opt.enableDtlsShortHeader;
+ break;
default:
PORT_SetError(SEC_ERROR_INVALID_ARGS);
rv = SECFailure;
@@ -1037,7 +1057,7 @@ SSL_OptionGetDefault(PRInt32 which, PRIntn *pVal)
val = ssl_defaults.enableOCSPStapling;
break;
case SSL_ENABLE_NPN:
- val = ssl_defaults.enableNPN;
+ val = PR_FALSE;
break;
case SSL_ENABLE_ALPN:
val = ssl_defaults.enableALPN;
@@ -1060,9 +1080,15 @@ SSL_OptionGetDefault(PRInt32 which, PRIntn *pVal)
case SSL_ENABLE_0RTT_DATA:
val = ssl_defaults.enable0RttData;
break;
+ case SSL_RECORD_SIZE_LIMIT:
+ val = ssl_defaults.recordSizeLimit;
+ break;
case SSL_ENABLE_TLS13_COMPAT_MODE:
val = ssl_defaults.enableTls13CompatMode;
break;
+ case SSL_ENABLE_DTLS_SHORT_HEADER:
+ val = ssl_defaults.enableDtlsShortHeader;
+ break;
default:
PORT_SetError(SEC_ERROR_INVALID_ARGS);
rv = SECFailure;
@@ -1242,10 +1268,22 @@ SSL_OptionSetDefault(PRInt32 which, PRIntn val)
ssl_defaults.enable0RttData = val;
break;
+ case SSL_RECORD_SIZE_LIMIT:
+ if (val < 64 || val > (MAX_FRAGMENT_LENGTH + 1)) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ return SECFailure;
+ }
+ ssl_defaults.recordSizeLimit = val;
+ break;
+
case SSL_ENABLE_TLS13_COMPAT_MODE:
ssl_defaults.enableTls13CompatMode = val;
break;
+ case SSL_ENABLE_DTLS_SHORT_HEADER:
+ ssl_defaults.enableDtlsShortHeader = val;
+ break;
+
default:
PORT_SetError(SEC_ERROR_INVALID_ARGS);
return SECFailure;
@@ -1895,10 +1933,7 @@ DTLS_ImportFD(PRFileDesc *model, PRFileDesc *fd)
}
/* SSL_SetNextProtoCallback is used to select an application protocol
- * for ALPN and NPN. For ALPN, this runs on the server; for NPN it
- * runs on the client. */
-/* Note: The ALPN version doesn't allow for the use of a default, setting a
- * status of SSL_NEXT_PROTO_NO_OVERLAP is treated as a failure. */
+ * for ALPN. */
SECStatus
SSL_SetNextProtoCallback(PRFileDesc *fd, SSLNextProtoCallback callback,
void *arg)
@@ -1919,7 +1954,7 @@ SSL_SetNextProtoCallback(PRFileDesc *fd, SSLNextProtoCallback callback,
return SECSuccess;
}
-/* ssl_NextProtoNegoCallback is set as an ALPN/NPN callback when
+/* ssl_NextProtoNegoCallback is set as an ALPN callback when
* SSL_SetNextProtoNego is used.
*/
static SECStatus
@@ -1929,7 +1964,6 @@ ssl_NextProtoNegoCallback(void *arg, PRFileDesc *fd,
unsigned int protoMaxLen)
{
unsigned int i, j;
- const unsigned char *result;
sslSocket *ss = ssl_FindSocket(fd);
if (!ss) {
@@ -1937,37 +1971,29 @@ ssl_NextProtoNegoCallback(void *arg, PRFileDesc *fd,
SSL_GETPID(), fd));
return SECFailure;
}
+ PORT_Assert(protoMaxLen <= 255);
+ if (protoMaxLen > 255) {
+ PORT_SetError(SEC_ERROR_OUTPUT_LEN);
+ return SECFailure;
+ }
- /* For each protocol in server preference, see if we support it. */
- for (i = 0; i < protos_len;) {
- for (j = 0; j < ss->opt.nextProtoNego.len;) {
+ /* For each protocol in client preference, see if we support it. */
+ for (j = 0; j < ss->opt.nextProtoNego.len;) {
+ for (i = 0; i < protos_len;) {
if (protos[i] == ss->opt.nextProtoNego.data[j] &&
PORT_Memcmp(&protos[i + 1], &ss->opt.nextProtoNego.data[j + 1],
protos[i]) == 0) {
/* We found a match. */
- ss->xtnData.nextProtoState = SSL_NEXT_PROTO_NEGOTIATED;
- result = &protos[i];
- goto found;
+ const unsigned char *result = &protos[i];
+ memcpy(protoOut, result + 1, result[0]);
+ *protoOutLen = result[0];
+ return SECSuccess;
}
- j += 1 + (unsigned int)ss->opt.nextProtoNego.data[j];
+ i += 1 + (unsigned int)protos[i];
}
- i += 1 + (unsigned int)protos[i];
+ j += 1 + (unsigned int)ss->opt.nextProtoNego.data[j];
}
- /* The other side supports the extension, and either doesn't have any
- * protocols configured, or none of its options match ours. In this case we
- * request our favoured protocol. */
- /* This will be treated as a failure for ALPN. */
- ss->xtnData.nextProtoState = SSL_NEXT_PROTO_NO_OVERLAP;
- result = ss->opt.nextProtoNego.data;
-
-found:
- if (protoMaxLen < result[0]) {
- PORT_SetError(SEC_ERROR_OUTPUT_LEN);
- return SECFailure;
- }
- memcpy(protoOut, result + 1, result[0]);
- *protoOutLen = result[0];
return SECSuccess;
}
@@ -1976,8 +2002,6 @@ SSL_SetNextProtoNego(PRFileDesc *fd, const unsigned char *data,
unsigned int length)
{
sslSocket *ss;
- SECStatus rv;
- SECItem dataItem = { siBuffer, (unsigned char *)data, length };
ss = ssl_FindSocket(fd);
if (!ss) {
@@ -1986,17 +2010,22 @@ SSL_SetNextProtoNego(PRFileDesc *fd, const unsigned char *data,
return SECFailure;
}
- if (ssl3_ValidateNextProtoNego(data, length) != SECSuccess)
+ if (ssl3_ValidateAppProtocol(data, length) != SECSuccess) {
return SECFailure;
+ }
+ /* NPN required that the client's fallback protocol is first in the
+ * list. However, ALPN sends protocols in preference order. So move the
+ * first protocol to the end of the list. */
ssl_GetSSL3HandshakeLock(ss);
SECITEM_FreeItem(&ss->opt.nextProtoNego, PR_FALSE);
- rv = SECITEM_CopyItem(NULL, &ss->opt.nextProtoNego, &dataItem);
+ SECITEM_AllocItem(NULL, &ss->opt.nextProtoNego, length);
+ size_t firstLen = data[0] + 1;
+ /* firstLen <= length is ensured by ssl3_ValidateAppProtocol. */
+ PORT_Memcpy(ss->opt.nextProtoNego.data + (length - firstLen), data, firstLen);
+ PORT_Memcpy(ss->opt.nextProtoNego.data, data + firstLen, length - firstLen);
ssl_ReleaseSSL3HandshakeLock(ss);
- if (rv != SECSuccess)
- return rv;
-
return SSL_SetNextProtoCallback(fd, ssl_NextProtoNegoCallback, NULL);
}
@@ -3034,26 +3063,27 @@ ssl_Poll(PRFileDesc *fd, PRInt16 how_flags, PRInt16 *p_out_flags)
} else { /* handshaking as server */
new_flags |= PR_POLL_READ;
}
- } else
+ } else if (ss->lastWriteBlocked) {
/* First handshake is in progress */
- if (ss->lastWriteBlocked) {
if (new_flags & PR_POLL_READ) {
/* The caller is waiting for data to be received,
** but the initial handshake is blocked on write, or the
** client's first handshake record has not been written.
** The code should select on write, not read.
*/
- new_flags ^= PR_POLL_READ; /* don't select on read. */
+ new_flags &= ~PR_POLL_READ; /* don't select on read. */
new_flags |= PR_POLL_WRITE; /* do select on write. */
}
} else if (new_flags & PR_POLL_WRITE) {
/* The caller is trying to write, but the handshake is
** blocked waiting for data to read, and the first
** handshake has been sent. So do NOT to poll on write
- ** unless we did false start.
+ ** unless we did false start or we are doing 0-RTT.
*/
- if (!ss->ssl3.hs.canFalseStart) {
- new_flags ^= PR_POLL_WRITE; /* don't select on write. */
+ if (!(ss->ssl3.hs.canFalseStart ||
+ ss->ssl3.hs.zeroRttState == ssl_0rtt_sent ||
+ ss->ssl3.hs.zeroRttState == ssl_0rtt_accepted)) {
+ new_flags &= ~PR_POLL_WRITE; /* don't select on write. */
}
new_flags |= PR_POLL_READ; /* do select on read. */
}
@@ -3093,6 +3123,9 @@ ssl_Poll(PRFileDesc *fd, PRInt16 how_flags, PRInt16 *p_out_flags)
}
}
+ SSL_TRC(20, ("%d: SSL[%d]: ssl_Poll flags %x -> %x",
+ SSL_GETPID(), fd, how_flags, new_flags));
+
if (new_flags && (fd->lower->methods->poll != NULL)) {
PRInt16 lower_out_flags = 0;
PRInt16 lower_new_flags;
diff --git a/security/nss/lib/ssl/sslspec.c b/security/nss/lib/ssl/sslspec.c
index 26c3eb5462..7833eeab69 100644
--- a/security/nss/lib/ssl/sslspec.c
+++ b/security/nss/lib/ssl/sslspec.c
@@ -143,6 +143,7 @@ ssl_CreateCipherSpec(sslSocket *ss, CipherSpecDirection direction)
spec->refCt = 1;
spec->version = ss->version;
spec->direction = direction;
+ spec->recordSizeLimit = MAX_FRAGMENT_LENGTH;
SSL_TRC(10, ("%d: SSL[%d]: new %s spec %d ct=%d",
SSL_GETPID(), ss->fd, SPEC_DIR(spec), spec,
spec->refCt));
diff --git a/security/nss/lib/ssl/sslspec.h b/security/nss/lib/ssl/sslspec.h
index 729ac1006f..b256017553 100644
--- a/security/nss/lib/ssl/sslspec.h
+++ b/security/nss/lib/ssl/sslspec.h
@@ -162,12 +162,18 @@ struct ssl3CipherSpecStr {
DTLSEpoch epoch;
const char *phase;
- sslSequenceNumber seqNum;
+
+ /* The next sequence number to be sent or received. */
+ sslSequenceNumber nextSeqNum;
DTLSRecvdRecords recvdRecords;
/* The number of 0-RTT bytes that can be sent or received in TLS 1.3. This
* will be zero for everything but 0-RTT. */
PRUint32 earlyDataRemaining;
+ /* The maximum plaintext length. This differs from the configured or
+ * negotiated value for TLS 1.3; it is reduced by one to account for the
+ * content type octet. */
+ PRUint16 recordSizeLimit;
};
typedef void (*sslCipherSpecChangedFunc)(void *arg,
diff --git a/security/nss/lib/ssl/sslt.h b/security/nss/lib/ssl/sslt.h
index e2b80fb436..bb1bec7a3d 100644
--- a/security/nss/lib/ssl/sslt.h
+++ b/security/nss/lib/ssl/sslt.h
@@ -432,6 +432,7 @@ typedef enum {
ssl_signed_cert_timestamp_xtn = 18,
ssl_padding_xtn = 21,
ssl_extended_master_secret_xtn = 23,
+ ssl_record_size_limit_xtn = 28,
ssl_session_ticket_xtn = 35,
/* 40 was used in draft versions of TLS 1.3; it is now reserved. */
ssl_tls13_pre_shared_key_xtn = 41,
@@ -454,7 +455,7 @@ typedef enum {
/* SSL_MAX_EXTENSIONS includes the maximum number of extensions that are
* supported for any single message type. That is, a ClientHello; ServerHello
* and TLS 1.3 NewSessionTicket and HelloRetryRequest extensions have fewer. */
-#define SSL_MAX_EXTENSIONS 20
+#define SSL_MAX_EXTENSIONS 21
/* Deprecated */
typedef enum {
diff --git a/security/nss/lib/ssl/tls13con.c b/security/nss/lib/ssl/tls13con.c
index c06acc83a9..4d9170fb01 100644
--- a/security/nss/lib/ssl/tls13con.c
+++ b/security/nss/lib/ssl/tls13con.c
@@ -792,7 +792,7 @@ tls13_HandleKeyUpdate(sslSocket *ss, PRUint8 *b, unsigned int length)
/* Only send an update if we have sent with the current spec. This
* prevents us from being forced to crank forward pointlessly. */
ssl_GetSpecReadLock(ss);
- sendUpdate = ss->ssl3.cwSpec->seqNum > 0;
+ sendUpdate = ss->ssl3.cwSpec->nextSeqNum > 0;
ssl_ReleaseSpecReadLock(ss);
} else {
sendUpdate = PR_TRUE;
@@ -1620,7 +1620,7 @@ tls13_HandleClientHelloPart2(sslSocket *ss,
ssl_GetSpecWriteLock(ss);
/* Increase the write sequence number. The read sequence number
* will be reset after this to early data or handshake. */
- ss->ssl3.cwSpec->seqNum = 1;
+ ss->ssl3.cwSpec->nextSeqNum = 1;
ssl_ReleaseSpecWriteLock(ss);
}
@@ -2007,7 +2007,7 @@ tls13_SendHelloRetryRequest(sslSocket *ss,
/* We depend on this being exactly one record and one message. */
PORT_Assert(!IS_DTLS(ss) || (ss->ssl3.hs.sendMessageSeq == 1 &&
- ss->ssl3.cwSpec->seqNum == 1));
+ ss->ssl3.cwSpec->nextSeqNum == 1));
ssl_ReleaseXmitBufLock(ss);
ss->ssl3.hs.helloRetry = PR_TRUE;
@@ -2209,6 +2209,8 @@ tls13_HandleHelloRetryRequest(sslSocket *ss, const PRUint8 *savedMsg,
} else {
PORT_Assert(ss->ssl3.hs.zeroRttState == ssl_0rtt_none);
}
+ /* Set the spec version, because we want to send CH now with 0303 */
+ tls13_SetSpecRecordVersion(ss, ss->ssl3.cwSpec);
/* Extensions must contain more than just supported_versions. This will
* ensure that a HelloRetryRequest isn't a no-op: we must have at least two
@@ -2248,6 +2250,7 @@ tls13_HandleHelloRetryRequest(sslSocket *ss, const PRUint8 *savedMsg,
goto loser;
}
}
+
rv = ssl3_SendClientHello(ss, client_hello_retry);
if (rv != SECSuccess) {
goto loser;
@@ -3251,6 +3254,17 @@ tls13_SetupPendingCipherSpec(sslSocket *ss, ssl3CipherSpec *spec)
}
tls13_SetSpecRecordVersion(ss, spec);
+
+ /* The record size limit is reduced by one so that the remainder of the
+ * record handling code can use the same checks for all versions. */
+ if (ssl3_ExtensionNegotiated(ss, ssl_record_size_limit_xtn)) {
+ spec->recordSizeLimit = ((spec->direction == CipherSpecRead)
+ ? ss->opt.recordSizeLimit
+ : ss->xtnData.recordSizeLimit) -
+ 1;
+ } else {
+ spec->recordSizeLimit = MAX_FRAGMENT_LENGTH;
+ }
return SECSuccess;
}
@@ -3316,7 +3330,7 @@ tls13_SetCipherSpec(sslSocket *ss, PRUint16 epoch,
return SECFailure;
}
spec->epoch = epoch;
- spec->seqNum = 0;
+ spec->nextSeqNum = 0;
if (IS_DTLS(ss)) {
dtls_InitRecvdRecords(&spec->recvdRecords);
}
@@ -3536,14 +3550,15 @@ tls13_AESGCM(ssl3KeyMaterial *keys,
CK_GCM_PARAMS gcmParams;
unsigned char nonce[12];
+ PORT_Assert(additionalDataLen > 8);
memset(&gcmParams, 0, sizeof(gcmParams));
gcmParams.pIv = nonce;
gcmParams.ulIvLen = sizeof(nonce);
- gcmParams.pAAD = NULL;
- gcmParams.ulAADLen = 0;
+ gcmParams.pAAD = (PRUint8 *)(additionalData + 8);
+ gcmParams.ulAADLen = additionalDataLen - 8;
gcmParams.ulTagBits = 128; /* GCM measures tag length in bits. */
- tls13_WriteNonce(keys, additionalData, additionalDataLen,
+ tls13_WriteNonce(keys, additionalData, 8,
nonce, sizeof(nonce));
return tls13_AEAD(keys, doDecrypt, out, outlen, maxout, in, inlen,
CKM_AES_GCM,
@@ -3560,14 +3575,15 @@ tls13_ChaCha20Poly1305(ssl3KeyMaterial *keys, PRBool doDecrypt,
CK_NSS_AEAD_PARAMS aeadParams;
unsigned char nonce[12];
+ PORT_Assert(additionalDataLen > 8);
memset(&aeadParams, 0, sizeof(aeadParams));
aeadParams.pNonce = nonce;
aeadParams.ulNonceLen = sizeof(nonce);
- aeadParams.pAAD = NULL; /* No AAD in TLS 1.3. */
- aeadParams.ulAADLen = 0;
+ aeadParams.pAAD = (PRUint8 *)(additionalData + 8);
+ aeadParams.ulAADLen = additionalDataLen - 8;
aeadParams.ulTagLen = 16; /* The Poly1305 tag is 16 octets. */
- tls13_WriteNonce(keys, additionalData, additionalDataLen,
+ tls13_WriteNonce(keys, additionalData, 8,
nonce, sizeof(nonce));
return tls13_AEAD(keys, doDecrypt, out, outlen, maxout, in, inlen,
CKM_NSS_CHACHA20_POLY1305,
@@ -3579,7 +3595,7 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length)
{
SECStatus rv;
PRUint32 innerLength;
- SECItem oldNpn = { siBuffer, NULL, 0 };
+ SECItem oldAlpn = { siBuffer, NULL, 0 };
PORT_Assert(ss->opt.noLocks || ssl_HaveRecvBufLock(ss));
PORT_Assert(ss->opt.noLocks || ssl_HaveSSL3HandshakeLock(ss));
@@ -3603,11 +3619,11 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length)
return SECFailure;
}
- /* If we are doing 0-RTT, then we already have an NPN value. Stash
+ /* If we are doing 0-RTT, then we already have an ALPN value. Stash
* it for comparison. */
if (ss->ssl3.hs.zeroRttState == ssl_0rtt_sent &&
ss->xtnData.nextProtoState == SSL_NEXT_PROTO_EARLY_VALUE) {
- oldNpn = ss->xtnData.nextProto;
+ oldAlpn = ss->xtnData.nextProto;
ss->xtnData.nextProto.data = NULL;
ss->xtnData.nextProtoState = SSL_NEXT_PROTO_NO_SUPPORT;
}
@@ -3627,8 +3643,8 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length)
ss->ssl3.hs.zeroRttState = ssl_0rtt_accepted;
/* Check that the server negotiated the same ALPN (if any). */
- if (SECITEM_CompareItem(&oldNpn, &ss->xtnData.nextProto)) {
- SECITEM_FreeItem(&oldNpn, PR_FALSE);
+ if (SECITEM_CompareItem(&oldAlpn, &ss->xtnData.nextProto)) {
+ SECITEM_FreeItem(&oldAlpn, PR_FALSE);
FATAL_ERROR(ss, SSL_ERROR_NEXT_PROTOCOL_DATA_INVALID,
illegal_parameter);
return SECFailure;
@@ -3650,7 +3666,7 @@ tls13_HandleEncryptedExtensions(sslSocket *ss, PRUint8 *b, PRUint32 length)
ss->ssl3.hs.zeroRttState == ssl_0rtt_ignored));
}
- SECITEM_FreeItem(&oldNpn, PR_FALSE);
+ SECITEM_FreeItem(&oldAlpn, PR_FALSE);
if (ss->ssl3.hs.kea_def->authKeyType == ssl_auth_psk) {
TLS13_SET_HS_STATE(ss, wait_finished);
} else {
@@ -3815,13 +3831,14 @@ tls13_HandleCertificateVerify(sslSocket *ss, PRUint8 *b, PRUint32 length)
rv = ssl_ConsumeSignatureScheme(ss, &b, &length, &sigScheme);
if (rv != SECSuccess) {
- PORT_SetError(SSL_ERROR_RX_MALFORMED_CERT_VERIFY);
+ FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CERT_VERIFY, illegal_parameter);
return SECFailure;
}
rv = ssl_CheckSignatureSchemeConsistency(ss, sigScheme, ss->sec.peerCert);
if (rv != SECSuccess) {
/* Error set already */
+ FATAL_ERROR(ss, PORT_GetError(), illegal_parameter);
return SECFailure;
}
hashAlg = ssl_SignatureSchemeToHashType(sigScheme);
@@ -4740,7 +4757,8 @@ static const struct {
{ ssl_tls13_cookie_xtn, _M2(client_hello, hello_retry_request) },
{ ssl_tls13_certificate_authorities_xtn, _M1(certificate_request) },
{ ssl_tls13_supported_versions_xtn, _M3(client_hello, server_hello,
- hello_retry_request) }
+ hello_retry_request) },
+ { ssl_record_size_limit_xtn, _M2(client_hello, encrypted_extensions) }
};
tls13ExtensionStatus
@@ -4780,19 +4798,20 @@ tls13_ExtensionStatus(PRUint16 extension, SSLHandshakeType message)
#undef _M2
#undef _M3
-/* TLS 1.3 doesn't actually have additional data but the aead function
- * signature overloads additional data to carry the record sequence
- * number and that's what we put here. The TLS 1.3 AEAD functions
- * just use this input as the sequence number and not as additional
- * data. */
+/* We cheat a bit on additional data because the AEAD interface
+ * which doesn't have room for the record number. The AAD we
+ * format is serialized record number followed by the true AD
+ * (i.e., the record header) plus the serialized record number. */
static SECStatus
-tls13_FormatAdditionalData(sslSocket *ss, PRUint8 *aad, unsigned int length,
- DTLSEpoch epoch, sslSequenceNumber seqNum)
+tls13_FormatAdditionalData(
+ sslSocket *ss,
+ const PRUint8 *header, unsigned int headerLen,
+ DTLSEpoch epoch, sslSequenceNumber seqNum,
+ PRUint8 *aad, unsigned int *aadLength, unsigned int maxLength)
{
SECStatus rv;
- sslBuffer buf = SSL_BUFFER_FIXED(aad, length);
+ sslBuffer buf = SSL_BUFFER_FIXED(aad, maxLength);
- PORT_Assert(length == 8);
if (IS_DTLS(ss)) {
rv = sslBuffer_AppendNumber(&buf, epoch, 2);
if (rv != SECSuccess) {
@@ -4803,6 +4822,14 @@ tls13_FormatAdditionalData(sslSocket *ss, PRUint8 *aad, unsigned int length,
if (rv != SECSuccess) {
return SECFailure;
}
+
+ rv = sslBuffer_Append(&buf, header, headerLen);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+
+ *aadLength = buf.len;
+
return SECSuccess;
}
@@ -4843,43 +4870,68 @@ tls13_ProtectRecord(sslSocket *ss,
PORT_Assert(cwSpec->direction == CipherSpecWrite);
SSL_TRC(3, ("%d: TLS13[%d]: spec=%d epoch=%d (%s) protect 0x%0llx len=%u",
SSL_GETPID(), ss->fd, cwSpec, cwSpec->epoch, cwSpec->phase,
- cwSpec->seqNum, contentLen));
+ cwSpec->nextSeqNum, contentLen));
- if (contentLen + 1 + tagLen > wrBuf->space) {
+ if (contentLen + 1 + tagLen > SSL_BUFFER_SPACE(wrBuf)) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
/* Copy the data into the wrBuf. We're going to encrypt in-place
* in the AEAD branch anyway */
- PORT_Memcpy(wrBuf->buf, pIn, contentLen);
+ PORT_Memcpy(SSL_BUFFER_NEXT(wrBuf), pIn, contentLen);
if (cipher_def->calg == ssl_calg_null) {
/* Shortcut for plaintext */
- wrBuf->len = contentLen;
+ rv = sslBuffer_Skip(wrBuf, contentLen, NULL);
+ PORT_Assert(rv == SECSuccess);
} else {
- PRUint8 aad[8];
+ PRUint8 hdr[13];
+ sslBuffer buf = SSL_BUFFER_FIXED(hdr, sizeof(hdr));
+ PRBool needsLength;
+ PRUint8 aad[21];
+ unsigned int aadLen;
+ int len;
+
PORT_Assert(cipher_def->type == type_aead);
/* Add the content type at the end. */
- wrBuf->buf[contentLen] = type;
+ *(SSL_BUFFER_NEXT(wrBuf) + contentLen) = type;
- rv = tls13_FormatAdditionalData(ss, aad, sizeof(aad), cwSpec->epoch,
- cwSpec->seqNum);
+ /* Create the header (ugly that we have to do it twice). */
+ rv = ssl_InsertRecordHeader(ss, cwSpec, content_application_data,
+ &buf, &needsLength);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ if (needsLength) {
+ rv = sslBuffer_AppendNumber(&buf, contentLen + 1 +
+ cwSpec->cipherDef->tag_size,
+ 2);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ }
+ rv = tls13_FormatAdditionalData(ss, SSL_BUFFER_BASE(&buf), SSL_BUFFER_LEN(&buf),
+ cwSpec->epoch, cwSpec->nextSeqNum,
+ aad, &aadLen, sizeof(aad));
if (rv != SECSuccess) {
return SECFailure;
}
rv = cwSpec->aead(&cwSpec->keyMaterial,
- PR_FALSE, /* do encrypt */
- wrBuf->buf, /* output */
- (int *)&wrBuf->len, /* out len */
- wrBuf->space, /* max out */
- wrBuf->buf, contentLen + 1, /* input */
- aad, sizeof(aad));
+ PR_FALSE, /* do encrypt */
+ SSL_BUFFER_NEXT(wrBuf), /* output */
+ &len, /* out len */
+ SSL_BUFFER_SPACE(wrBuf), /* max out */
+ SSL_BUFFER_NEXT(wrBuf), /* input */
+ contentLen + 1, /* input len */
+ aad, aadLen);
if (rv != SECSuccess) {
PORT_SetError(SSL_ERROR_ENCRYPTION_FAILURE);
return SECFailure;
}
+ rv = sslBuffer_Skip(wrBuf, len, NULL);
+ PORT_Assert(rv == SECSuccess);
}
return SECSuccess;
@@ -4897,25 +4949,22 @@ tls13_ProtectRecord(sslSocket *ss,
SECStatus
tls13_UnprotectRecord(sslSocket *ss,
ssl3CipherSpec *spec,
- SSL3Ciphertext *cText, sslBuffer *plaintext,
+ SSL3Ciphertext *cText,
+ sslBuffer *plaintext,
+ SSL3ContentType *innerType,
SSL3AlertDescription *alert)
{
const ssl3BulkCipherDef *cipher_def = spec->cipherDef;
- sslSequenceNumber seqNum;
- PRUint8 aad[8];
+ PRUint8 aad[21];
+ unsigned int aadLen;
SECStatus rv;
*alert = bad_record_mac; /* Default alert for most issues. */
PORT_Assert(spec->direction == CipherSpecRead);
- if (IS_DTLS(ss)) {
- seqNum = cText->seq_num & RECORD_SEQ_MASK;
- } else {
- seqNum = spec->seqNum;
- }
SSL_TRC(3, ("%d: TLS13[%d]: spec=%d epoch=%d (%s) unprotect 0x%0llx len=%u",
- SSL_GETPID(), ss->fd, spec, spec->epoch, spec->phase, seqNum,
- cText->buf->len));
+ SSL_GETPID(), ss->fd, spec, spec->epoch, spec->phase,
+ cText->seqNum, cText->buf->len));
/* We can perform this test in variable time because the record's total
* length and the ciphersuite are both public knowledge. */
@@ -4927,28 +4976,38 @@ tls13_UnprotectRecord(sslSocket *ss,
return SECFailure;
}
- /* Verify that the content type is right, even though we overwrite it. */
- if (cText->type != content_application_data) {
+ /* Verify that the content type is right, even though we overwrite it.
+ * Also allow the DTLS short header in TLS 1.3. */
+ if (!(cText->hdr[0] == content_application_data ||
+ (IS_DTLS(ss) &&
+ ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 &&
+ (cText->hdr[0] & 0xe0) == 0x20))) {
SSL_TRC(3,
- ("%d: TLS13[%d]: record has invalid exterior content type=%d",
- SSL_GETPID(), ss->fd, cText->type));
+ ("%d: TLS13[%d]: record has invalid exterior type=%2.2x",
+ SSL_GETPID(), ss->fd, cText->hdr[0]));
/* Do we need a better error here? */
PORT_SetError(SSL_ERROR_BAD_MAC_READ);
return SECFailure;
}
- /* Check the version number in the record. */
- if (cText->version != spec->recordVersion) {
- /* Do we need a better error here? */
- SSL_TRC(3,
- ("%d: TLS13[%d]: record has bogus version",
- SSL_GETPID(), ss->fd));
- return SECFailure;
+ /* Check the version number in the record. Stream only. */
+ if (!IS_DTLS(ss)) {
+ SSL3ProtocolVersion version =
+ ((SSL3ProtocolVersion)cText->hdr[1] << 8) |
+ (SSL3ProtocolVersion)cText->hdr[2];
+ if (version != spec->recordVersion) {
+ /* Do we need a better error here? */
+ SSL_TRC(3, ("%d: TLS13[%d]: record has bogus version",
+ SSL_GETPID(), ss->fd));
+ return SECFailure;
+ }
}
/* Decrypt */
PORT_Assert(cipher_def->type == type_aead);
- rv = tls13_FormatAdditionalData(ss, aad, sizeof(aad), spec->epoch, seqNum);
+ rv = tls13_FormatAdditionalData(ss, cText->hdr, cText->hdrLen,
+ spec->epoch, cText->seqNum,
+ aad, &aadLen, sizeof(aad));
if (rv != SECSuccess) {
return SECFailure;
}
@@ -4959,7 +5018,7 @@ tls13_UnprotectRecord(sslSocket *ss,
plaintext->space, /* maxout */
cText->buf->buf, /* in */
cText->buf->len, /* inlen */
- aad, sizeof(aad));
+ aad, aadLen);
if (rv != SECSuccess) {
SSL_TRC(3,
("%d: TLS13[%d]: record has bogus MAC",
@@ -4968,6 +5027,16 @@ tls13_UnprotectRecord(sslSocket *ss,
return SECFailure;
}
+ /* There is a similar test in ssl3_HandleRecord, but this test is needed to
+ * account for padding. It's safe to do this here (including the alert),
+ * because it only confirms that the record exceeded the size limit, which
+ * is apparent from the size of the ciphertext. */
+ if (plaintext->len > spec->recordSizeLimit + 1) {
+ SSL3_SendAlert(ss, alert_fatal, record_overflow);
+ PORT_SetError(SSL_ERROR_RX_RECORD_TOO_LONG);
+ return SECFailure;
+ }
+
/* The record is right-padded with 0s, followed by the true
* content type, so read from the right until we receive a
* nonzero byte. */
@@ -4977,9 +5046,7 @@ tls13_UnprotectRecord(sslSocket *ss,
/* Bogus padding. */
if (plaintext->len < 1) {
- SSL_TRC(3,
- ("%d: TLS13[%d]: empty record",
- SSL_GETPID(), ss->fd, cText->type));
+ SSL_TRC(3, ("%d: TLS13[%d]: empty record", SSL_GETPID(), ss->fd));
/* It's safe to report this specifically because it happened
* after the MAC has been verified. */
PORT_SetError(SSL_ERROR_BAD_BLOCK_PADDING);
@@ -4987,12 +5054,12 @@ tls13_UnprotectRecord(sslSocket *ss,
}
/* Record the type. */
- cText->type = plaintext->buf[plaintext->len - 1];
+ *innerType = (SSL3ContentType)plaintext->buf[plaintext->len - 1];
--plaintext->len;
/* Check that we haven't received too much 0-RTT data. */
if (spec->epoch == TrafficKeyEarlyApplicationData &&
- cText->type == content_application_data) {
+ *innerType == content_application_data) {
if (plaintext->len > spec->earlyDataRemaining) {
*alert = unexpected_message;
PORT_SetError(SSL_ERROR_TOO_MUCH_EARLY_DATA);
@@ -5002,9 +5069,8 @@ tls13_UnprotectRecord(sslSocket *ss,
}
SSL_TRC(10,
- ("%d: TLS13[%d]: %s received record of length=%d type=%d",
- SSL_GETPID(), ss->fd, SSL_ROLE(ss),
- plaintext->len, cText->type));
+ ("%d: TLS13[%d]: %s received record of length=%d, type=%d",
+ SSL_GETPID(), ss->fd, SSL_ROLE(ss), plaintext->len, *innerType));
return SECSuccess;
}
@@ -5227,6 +5293,58 @@ tls13_EncodeDraftVersion(SSL3ProtocolVersion version)
return (PRUint16)version;
}
+SECStatus
+tls13_ClientReadSupportedVersion(sslSocket *ss)
+{
+ PRUint32 temp;
+ SSL3ProtocolVersion v;
+ TLSExtension *versionExtension;
+ SECItem it;
+ SECStatus rv;
+
+ /* Update the version based on the extension, as necessary. */
+ versionExtension = ssl3_FindExtension(ss, ssl_tls13_supported_versions_xtn);
+ if (!versionExtension) {
+ return SECSuccess;
+ }
+
+ /* Struct copy so we don't damage the extension. */
+ it = versionExtension->data;
+
+ rv = ssl3_ConsumeHandshakeNumber(ss, &temp, 2, &it.data, &it.len);
+ if (rv != SECSuccess) {
+ return SECFailure;
+ }
+ if (it.len) {
+ FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_SERVER_HELLO, illegal_parameter);
+ return SECFailure;
+ }
+ v = (SSL3ProtocolVersion)temp;
+
+ /* You cannot negotiate < TLS 1.3 with supported_versions. */
+ if (v < SSL_LIBRARY_VERSION_TLS_1_3) {
+ FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_SERVER_HELLO, illegal_parameter);
+ return SECFailure;
+ }
+
+#ifdef TLS_1_3_DRAFT_VERSION
+ if (temp == SSL_LIBRARY_VERSION_TLS_1_3) {
+ FATAL_ERROR(ss, SSL_ERROR_UNSUPPORTED_VERSION, protocol_version);
+ return SECFailure;
+ }
+ if (temp == tls13_EncodeDraftVersion(SSL_LIBRARY_VERSION_TLS_1_3)) {
+ v = SSL_LIBRARY_VERSION_TLS_1_3;
+ } else {
+ v = (SSL3ProtocolVersion)temp;
+ }
+#else
+ v = (SSL3ProtocolVersion)temp;
+#endif
+
+ ss->version = v;
+ return SECSuccess;
+}
+
/* Pick the highest version we support that is also advertised. */
SECStatus
tls13_NegotiateVersion(sslSocket *ss, const TLSExtension *supportedVersions)
diff --git a/security/nss/lib/ssl/tls13con.h b/security/nss/lib/ssl/tls13con.h
index 1aaffb651d..f35b20023d 100644
--- a/security/nss/lib/ssl/tls13con.h
+++ b/security/nss/lib/ssl/tls13con.h
@@ -28,6 +28,7 @@ typedef enum {
SECStatus tls13_UnprotectRecord(
sslSocket *ss, ssl3CipherSpec *spec,
SSL3Ciphertext *cText, sslBuffer *plaintext,
+ SSL3ContentType *innerType,
SSL3AlertDescription *alert);
#if defined(WIN32)
@@ -101,6 +102,7 @@ PRInt32 tls13_Read0RttData(sslSocket *ss, void *buf, PRInt32 len);
SECStatus tls13_HandleEarlyApplicationData(sslSocket *ss, sslBuffer *origBuf);
PRBool tls13_ClientAllow0Rtt(const sslSocket *ss, const sslSessionID *sid);
PRUint16 tls13_EncodeDraftVersion(SSL3ProtocolVersion version);
+SECStatus tls13_ClientReadSupportedVersion(sslSocket *ss);
SECStatus tls13_NegotiateVersion(sslSocket *ss,
const TLSExtension *supported_versions);
diff --git a/security/nss/lib/ssl/tls13exthandle.c b/security/nss/lib/ssl/tls13exthandle.c
index 899f238276..1ab8a8e597 100644
--- a/security/nss/lib/ssl/tls13exthandle.c
+++ b/security/nss/lib/ssl/tls13exthandle.c
@@ -860,12 +860,12 @@ tls13_ServerHandleCookieXtn(const sslSocket *ss, TLSExtensionData *xtnData,
}
if (xtnData->cookie.len == 0) {
- PORT_SetError(SSL_ERROR_RX_MALFORMED_SERVER_HELLO);
+ PORT_SetError(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO);
return SECFailure;
}
if (data->len) {
- PORT_SetError(SSL_ERROR_RX_MALFORMED_SERVER_HELLO);
+ PORT_SetError(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO);
return SECFailure;
}
diff --git a/security/nss/lib/util/nssutil.def b/security/nss/lib/util/nssutil.def
index 936455f6e7..26e438ba6a 100644
--- a/security/nss/lib/util/nssutil.def
+++ b/security/nss/lib/util/nssutil.def
@@ -322,4 +322,9 @@ _NSSUTIL_UTF8ToWide;-
_NSSUTIL_Access;-
;- local:
;- *;
-;-};
+;+NSSUTIL_3.38 { # NSS Utilities 3.38 release
+;+ global:
+SECITEM_MakeItem;
+;+ local:
+;+ *;
+;+};
diff --git a/security/nss/lib/util/nssutil.h b/security/nss/lib/util/nssutil.h
index b65d4a0c9f..2749abaa16 100644
--- a/security/nss/lib/util/nssutil.h
+++ b/security/nss/lib/util/nssutil.h
@@ -19,10 +19,10 @@
* The format of the version string should be
* "<major version>.<minor version>[.<patch level>[.<build number>]][ <Beta>]"
*/
-#define NSSUTIL_VERSION "3.36.4"
+#define NSSUTIL_VERSION "3.38"
#define NSSUTIL_VMAJOR 3
-#define NSSUTIL_VMINOR 36
-#define NSSUTIL_VPATCH 4
+#define NSSUTIL_VMINOR 38
+#define NSSUTIL_VPATCH 0
#define NSSUTIL_VBUILD 0
#define NSSUTIL_BETA PR_FALSE
diff --git a/security/nss/lib/util/pkcs11t.h b/security/nss/lib/util/pkcs11t.h
index c945f314e2..01ff8a5725 100644
--- a/security/nss/lib/util/pkcs11t.h
+++ b/security/nss/lib/util/pkcs11t.h
@@ -466,6 +466,8 @@ typedef CK_ULONG CK_ATTRIBUTE_TYPE;
#define CKA_EXPONENT_1 0x00000126
#define CKA_EXPONENT_2 0x00000127
#define CKA_COEFFICIENT 0x00000128
+/* CKA_PUBLIC_KEY_INFO is new for v2.40 */
+#define CKA_PUBLIC_KEY_INFO 0x00000129
#define CKA_PRIME 0x00000130
#define CKA_SUBPRIME 0x00000131
#define CKA_BASE 0x00000132
diff --git a/security/nss/lib/util/secasn1d.c b/security/nss/lib/util/secasn1d.c
index ccd97481d6..ed237ed72c 100644
--- a/security/nss/lib/util/secasn1d.c
+++ b/security/nss/lib/util/secasn1d.c
@@ -2987,7 +2987,9 @@ SEC_ASN1DecoderFinish(SEC_ASN1DecoderContext *cx)
* XXX anything else that needs to be finished?
*/
- PORT_FreeArena(cx->our_pool, PR_TRUE);
+ if (cx) {
+ PORT_FreeArena(cx->our_pool, PR_TRUE);
+ }
return rv;
}
diff --git a/security/nss/lib/util/secitem.c b/security/nss/lib/util/secitem.c
index 22c5b1f6e6..1e505a9af1 100644
--- a/security/nss/lib/util/secitem.c
+++ b/security/nss/lib/util/secitem.c
@@ -76,6 +76,15 @@ loser:
}
SECStatus
+SECITEM_MakeItem(PLArenaPool *arena, SECItem *dest, unsigned char *data,
+ unsigned int len)
+{
+ SECItem it = { siBuffer, data, len };
+
+ return SECITEM_CopyItem(arena, dest, &it);
+}
+
+SECStatus
SECITEM_ReallocItem(PLArenaPool *arena, SECItem *item, unsigned int oldlen,
unsigned int newlen)
{
diff --git a/security/nss/lib/util/secitem.h b/security/nss/lib/util/secitem.h
index 5b9d0e1748..4fb1239382 100644
--- a/security/nss/lib/util/secitem.h
+++ b/security/nss/lib/util/secitem.h
@@ -35,6 +35,14 @@ SEC_BEGIN_PROTOS
extern SECItem *SECITEM_AllocItem(PLArenaPool *arena, SECItem *item,
unsigned int len);
+/* Allocate and make an item with the requested contents.
+ *
+ * We seem to have mostly given up on SECItemType, so the result is
+ * always siBuffer.
+ */
+extern SECStatus SECITEM_MakeItem(PLArenaPool *arena, SECItem *dest,
+ unsigned char *data, unsigned int len);
+
/*
** This is a legacy function containing bugs. It doesn't update item->len,
** and it has other issues as described in bug 298649 and bug 298938.
diff --git a/security/nss/nss-tool/enc/enctool.cc b/security/nss/nss-tool/enc/enctool.cc
index b3c0d1dbe6..e37e4593a7 100644
--- a/security/nss/nss-tool/enc/enctool.cc
+++ b/security/nss/nss-tool/enc/enctool.cc
@@ -271,7 +271,6 @@ bool EncTool::DoCipher(std::string file_name, std::string out_file,
if (file_name.empty()) {
std::vector<uint8_t> data = ReadInputData("");
std::vector<uint8_t> out(data.size() + 16);
- SECStatus rv;
if (encrypt) {
rv = PK11_Encrypt(symKey.get(), cipher_mech_, params.get(), out.data(),
&outLen, data.size() + 16, data.data(), data.size());
diff --git a/security/nss/tests/all.sh b/security/nss/tests/all.sh
index 3a02debef2..f8a777fb3b 100755
--- a/security/nss/tests/all.sh
+++ b/security/nss/tests/all.sh
@@ -309,7 +309,7 @@ TESTS=${NSS_TESTS:-$tests}
ALL_TESTS=${TESTS}
-nss_ssl_tests="crl iopr policy"
+nss_ssl_tests="crl iopr policy normal_normal"
if [ $NO_INIT_SUPPORT -eq 0 ]; then
nss_ssl_tests="$nss_ssl_tests fips_normal normal_fips"
fi
diff --git a/security/nss/tests/bogo/bogo.sh b/security/nss/tests/bogo/bogo.sh
index d1a93bf9b7..4fccb845b4 100755
--- a/security/nss/tests/bogo/bogo.sh
+++ b/security/nss/tests/bogo/bogo.sh
@@ -25,7 +25,7 @@ bogo_init()
BORING=${BORING:=boringssl}
if [ ! -d "$BORING" ]; then
git clone -q https://boringssl.googlesource.com/boringssl "$BORING"
- git -C "$BORING" checkout -q a513e86c1ebb1383930c9e504bdabcc302a85f30
+ git -C "$BORING" checkout -q ec55dc15d3a39e5f1a58bfd79148729f38f6acb4
fi
SCRIPTNAME="bogo.sh"
@@ -39,11 +39,12 @@ bogo_cleanup()
. common/cleanup.sh
}
-cd "$(dirname "$0")"
-SOURCE_DIR="$PWD"/../..
+cd ../
+cwd=$(cd $(dirname $0); pwd -P)
+SOURCE_DIR="$cwd"/..
bogo_init
(cd "$BORING"/ssl/test/runner;
- GOPATH="$PWD" go test -pipe -shim-path "${BINDIR}"/nss_bogo_shim \
+ GOPATH="$cwd" go test -pipe -shim-path "${BINDIR}"/nss_bogo_shim \
-loose-errors -allow-unimplemented \
-shim-config "${SOURCE_DIR}/gtests/nss_bogo_shim/config.json") \
2>bogo.errors | tee bogo.log
diff --git a/security/nss/tests/cert/cert.sh b/security/nss/tests/cert/cert.sh
index d1a9148a97..34006efd19 100755
--- a/security/nss/tests/cert/cert.sh
+++ b/security/nss/tests/cert/cert.sh
@@ -1060,6 +1060,25 @@ cert_extended_ssl()
# -d "${PROFILEDIR}" -i "${CLIENT_CADIR}/clientCA-ecmixed.ca.cert" \
# 2>&1
+ # Check that a repeated import with a different nickname doesn't change the
+ # nickname of the existing cert (bug 1458518).
+ # We want to search for the results using grep, to avoid subset matches,
+ # we'll use one of the longer nicknames for testing.
+ # (Because "grep -w hostname" matches "grep -w hostname-dsamixed")
+ MYDBPASS="-d ${PROFILEDIR} -f ${R_PWFILE}"
+ TESTNAME="Ensure there's exactly one match for ${CERTNAME}-dsamixed"
+ cert_check_nickname_exists "$MYDBPASS" "${CERTNAME}-dsamixed" 0 1 "${TESTNAME}"
+
+ CU_ACTION="Repeated import of $CERTNAME's mixed DSA Cert with different nickname"
+ certu -A -n "${CERTNAME}-repeated-dsamixed" -t "u,u,u" -d "${PROFILEDIR}" \
+ -f "${R_PWFILE}" -i "${CERTNAME}-dsamixed.cert" 2>&1
+
+ TESTNAME="Ensure there's still exactly one match for ${CERTNAME}-dsamixed"
+ cert_check_nickname_exists "$MYDBPASS" "${CERTNAME}-dsamixed" 0 1 "${TESTNAME}"
+
+ TESTNAME="Ensure there's zero matches for ${CERTNAME}-repeated-dsamixed"
+ cert_check_nickname_exists "$MYDBPASS" "${CERTNAME}-repeated-dsamixed" 0 0 "${TESTNAME}"
+
echo "Importing all the server's own CA chain into the servers DB"
for CA in `find ${SERVER_CADIR} -name "?*.ca.cert"` ;
do
@@ -1532,6 +1551,37 @@ cert_make_with_param()
return 0
}
+cert_check_nickname_exists()
+{
+ MYDIRPASS="$1"
+ MYCERTNAME="$2"
+ EXPECT="$3"
+ EXPECTCOUNT="$4"
+ MYTESTNAME="$5"
+
+ echo certutil ${MYDIRPASS} -L
+ ${BINDIR}/certutil ${MYDIRPASS} -L
+
+ RET=$?
+ if [ "${RET}" -ne "${EXPECT}" ]; then
+ CERTFAILED=1
+ html_failed "${MYTESTNAME} - list"
+ cert_log "ERROR: ${MYTESTNAME} - list"
+ return 1
+ fi
+
+ LISTCOUNT=`${BINDIR}/certutil ${MYDIRPASS} -L | grep -wc ${MYCERTNAME}`
+ if [ "${LISTCOUNT}" -ne "${EXPECTCOUNT}" ]; then
+ CERTFAILED=1
+ html_failed "${MYTESTNAME} - list and count"
+ cert_log "ERROR: ${MYTESTNAME} - list and count failed"
+ return 1
+ fi
+
+ html_passed "${MYTESTNAME}"
+ return 0
+}
+
cert_list_and_count_dns()
{
DIRPASS="$1"
@@ -2425,6 +2475,31 @@ EOF
RETEXPECTED=0
}
+cert_test_orphan_key_reuse()
+{
+ CU_ACTION="Create orphan key in serverdir"
+ certu -G -f "${R_PWFILE}" -z ${R_NOISE_FILE} -d ${PROFILEDIR}
+ # Let's get the key ID of the first orphan key.
+ # The output of certutil -K (list keys) isn't well formatted.
+ # The initial <key-number> part may or may not contain white space, which
+ # makes the use of awk to filter the column unreliable.
+ # To fix that, we remove the initial <number> field using sed, then select the
+ # column that contains the key ID.
+ ORPHAN=`${BINDIR}/certutil -d ${PROFILEDIR} -K -f ${R_PWFILE} | \
+ sed 's/^<.*>//g' | grep -w orphan | head -1 | awk '{print $2}'`
+ CU_ACTION="Create cert request for orphan key"
+ certu -R -f "${R_PWFILE}" -k ${ORPHAN} -s "CN=orphan" -d ${PROFILEDIR} \
+ -o ${SERVERDIR}/orphan.req
+ # Ensure that creating the request really works by listing it, and check
+ # if listing was successful.
+ ${BINDIR}/pp -t certificate-request -i ${SERVERDIR}/orphan.req
+ RET=$?
+ if [ "$RET" -ne 0 ]; then
+ html_failed "Listing cert request for orphan key ($RET)"
+ cert_log "ERROR: Listing cert request for orphan key failed $RET"
+ fi
+}
+
############################## cert_cleanup ############################
# local shell function to finish this script (no exit since it might be
# sourced)
@@ -2444,6 +2519,7 @@ cert_all_CA
cert_test_implicit_db_init
cert_extended_ssl
cert_ssl
+cert_test_orphan_key_reuse
cert_smime_client
IS_FIPS_DISABLED=`certutil --build-flags |grep -cw NSS_FIPS_DISABLED`
if [ $IS_FIPS_DISABLED -ne 0 ]; then
diff --git a/security/nss/tests/common/init.sh b/security/nss/tests/common/init.sh
index 933551e834..6aa22af8d8 100644
--- a/security/nss/tests/common/init.sh
+++ b/security/nss/tests/common/init.sh
@@ -543,8 +543,8 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
D_DISTRUST="Distrust.$version"
D_RSAPSS="RSAPSS.$version"
- # we need relative pathnames of these files abd directories, since our
- # tools can't handle the unix style absolut pathnames on cygnus
+ # we need relative pathnames of these files and directories, since our
+ # tools can't handle the unix style absolute pathnames on cygnus
R_CADIR=../CA
R_SERVERDIR=../server
@@ -565,6 +565,7 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
R_NOLOGINDIR=../nologin
R_SSLGTESTDIR=../ssl_gtests
R_GTESTDIR=../gtests
+ R_RSAPSSDIR=../rsapss
#
# profiles are either paths or domains depending on the setting of
@@ -581,6 +582,7 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
P_R_EXT_SERVERDIR=${R_EXT_SERVERDIR}
P_R_EXT_CLIENTDIR=${R_EXT_CLIENTDIR}
P_R_IMPLICIT_INIT_DIR=${R_IMPLICIT_INIT_DIR}
+ P_R_RSAPSSDIR=${R_RSAPSSDIR}
if [ -n "${MULTIACCESS_DBM}" ]; then
P_R_CADIR="multiaccess:${D_CA}"
P_R_ALICEDIR="multiaccess:${D_ALICE}"
@@ -593,6 +595,7 @@ if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
P_R_EXT_SERVERDIR="multiaccess:${D_EXT_SERVER}"
P_R_EXT_CLIENTDIR="multiaccess:${D_EXT_CLIENT}"
P_R_IMPLICIT_INIT_DIR="multiaccess:${D_IMPLICIT_INIT}"
+ P_R_RSAPSSDIR="multiaccess:${D_RSAPSS}"
fi
R_PWFILE=../tests.pw
diff --git a/security/nss/tests/interop/interop.sh b/security/nss/tests/interop/interop.sh
index 97c82e0ca0..50c8bb3c18 100644
--- a/security/nss/tests/interop/interop.sh
+++ b/security/nss/tests/interop/interop.sh
@@ -25,7 +25,7 @@ interop_init()
INTEROP=${INTEROP:=tls_interop}
if [ ! -d "$INTEROP" ]; then
git clone -q https://github.com/ttaubert/tls-interop "$INTEROP"
- git -C "$INTEROP" checkout -q 07930b791827c1bdb6f4c19ca0aa63850fd59e22
+ git -C "$INTEROP" checkout -q d07b28ac32b390dea1c9bcca5c56716247d23e5e
fi
INTEROP=$(cd "$INTEROP";pwd -P)
diff --git a/security/nss/tests/ssl/ssl.sh b/security/nss/tests/ssl/ssl.sh
index de867a4bda..9a63bd9971 100755
--- a/security/nss/tests/ssl/ssl.sh
+++ b/security/nss/tests/ssl/ssl.sh
@@ -283,34 +283,30 @@ ssl_cov()
echo "${testname}" | grep "EXPORT" > /dev/null
EXP=$?
- if [ "$ectype" = "ECC" ] ; then
- echo "$SCRIPTNAME: skipping $testname (ECC only)"
- else
- echo "$SCRIPTNAME: running $testname ----------------------------"
- VMAX="ssl3"
- if [ "$testmax" = "TLS10" ]; then
- VMAX="tls1.0"
- fi
- if [ "$testmax" = "TLS11" ]; then
- VMAX="tls1.1"
- fi
- if [ "$testmax" = "TLS12" ]; then
- VMAX="tls1.2"
- fi
-
- echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\"
- echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}"
-
- rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
- ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \
- -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \
- >${TMP}/$HOST.tmp.$$ 2>&1
- ret=$?
- cat ${TMP}/$HOST.tmp.$$
- rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
- html_msg $ret 0 "${testname}" \
- "produced a returncode of $ret, expected is 0"
+ echo "$SCRIPTNAME: running $testname ----------------------------"
+ VMAX="ssl3"
+ if [ "$testmax" = "TLS10" ]; then
+ VMAX="tls1.0"
+ fi
+ if [ "$testmax" = "TLS11" ]; then
+ VMAX="tls1.1"
fi
+ if [ "$testmax" = "TLS12" ]; then
+ VMAX="tls1.2"
+ fi
+
+ echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\"
+ echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}"
+
+ rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
+ ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \
+ -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \
+ >${TMP}/$HOST.tmp.$$ 2>&1
+ ret=$?
+ cat ${TMP}/$HOST.tmp.$$
+ rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
+ html_msg $ret 0 "${testname}" \
+ "produced a returncode of $ret, expected is 0"
done
kill_selfserv
@@ -335,8 +331,6 @@ ssl_auth()
echo "$SCRIPTNAME: skipping $testname (non-FIPS only)"
elif [ "$ectype" = "SNI" -a "$NORM_EXT" = "Extended Test" ] ; then
echo "$SCRIPTNAME: skipping $testname for $NORM_EXT"
- elif [ "$ectype" = "ECC" ] ; then
- echo "$SCRIPTNAME: skipping $testname (ECC only)"
else
cparam=`echo $cparam | sed -e 's;_; ;g' -e "s/TestUser/$USER_NICKNAME/g" `
if [ "$ectype" = "SNI" ]; then
@@ -550,8 +544,6 @@ ssl_stress()
if [ "$ectype" = "SNI" -a "$NORM_EXT" = "Extended Test" ] ; then
echo "$SCRIPTNAME: skipping $testname for $NORM_EXT"
- elif [ "$ectype" = "ECC" ] ; then
- echo "$SCRIPTNAME: skipping $testname (ECC only)"
elif [ "${CLIENT_MODE}" = "fips" -a "${CAUTH}" -ne 0 ] ; then
echo "$SCRIPTNAME: skipping $testname (non-FIPS only)"
elif [ "${NOLOGIN}" -eq 0 ] && \
@@ -615,9 +607,7 @@ ssl_crl_ssl()
ignore_blank_lines ${SSLAUTH} | \
while read ectype value sparam cparam testname
do
- if [ "$ectype" = "ECC" ] ; then
- echo "$SCRIPTNAME: skipping $testname (ECC only)"
- elif [ "$ectype" = "SNI" ]; then
+ if [ "$ectype" = "SNI" ]; then
continue
else
servarg=`echo $sparam | awk '{r=split($0,a,"-r") - 1;print r;}'`
@@ -729,43 +719,39 @@ ssl_policy()
do
VMIN="ssl3"
- if [ "$ectype" = "ECC" ] ; then
- echo "$SCRIPTNAME: skipping $testname (ECC only)"
- else
- echo "$SCRIPTNAME: running $testname ----------------------------"
- VMAX="ssl3"
- if [ "$testmax" = "TLS10" ]; then
- VMAX="tls1.0"
- fi
- if [ "$testmax" = "TLS11" ]; then
- VMAX="tls1.1"
- fi
- if [ "$testmax" = "TLS12" ]; then
- VMAX="tls1.2"
- fi
+ echo "$SCRIPTNAME: running $testname ----------------------------"
+ VMAX="ssl3"
+ if [ "$testmax" = "TLS10" ]; then
+ VMAX="tls1.0"
+ fi
+ if [ "$testmax" = "TLS11" ]; then
+ VMAX="tls1.1"
+ fi
+ if [ "$testmax" = "TLS12" ]; then
+ VMAX="tls1.2"
+ fi
- # load the policy
- policy=`echo ${policy} | sed -e 's;_; ;g'`
- setup_policy "$policy" ${P_R_CLIENTDIR}
+ # load the policy
+ policy=`echo ${policy} | sed -e 's;_; ;g'`
+ setup_policy "$policy" ${P_R_CLIENTDIR}
- echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\"
- echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}"
+ echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} \\"
+ echo " -f -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE}"
- rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
- ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \
- -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \
- >${TMP}/$HOST.tmp.$$ 2>&1
- ret=$?
- cat ${TMP}/$HOST.tmp.$$
- rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
+ rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
+ ${PROFTOOL} ${BINDIR}/tstclnt -4 -p ${PORT} -h ${HOSTADDR} -c ${param} -V ${VMIN}:${VMAX} ${CLIENT_OPTIONS} -f \
+ -d ${P_R_CLIENTDIR} $verbose -w nss < ${REQUEST_FILE} \
+ >${TMP}/$HOST.tmp.$$ 2>&1
+ ret=$?
+ cat ${TMP}/$HOST.tmp.$$
+ rm ${TMP}/$HOST.tmp.$$ 2>/dev/null
- #workaround for bug #402058
- [ $ret -ne 0 ] && ret=1
- [ ${value} -ne 0 ] && value=1
+ #workaround for bug #402058
+ [ $ret -ne 0 ] && ret=1
+ [ ${value} -ne 0 ] && value=1
- html_msg $ret ${value} "${testname}" \
- "produced a returncode of $ret, expected is ${value}"
- fi
+ html_msg $ret ${value} "${testname}" \
+ "produced a returncode of $ret, expected is ${value}"
done
cp ${P_R_CLIENTDIR}/pkcs11.txt.sav ${P_R_CLIENTDIR}/pkcs11.txt
@@ -1004,9 +990,7 @@ ssl_crl_cache()
while read ectype value sparam cparam testname
do
[ "$ectype" = "" ] && continue
- if [ "$ectype" = "ECC" ] ; then
- echo "$SCRIPTNAME: skipping $testname (ECC only)"
- elif [ "$ectype" = "SNI" ]; then
+ if [ "$ectype" = "SNI" ]; then
continue
else
servarg=`echo $sparam | awk '{r=split($0,a,"-r") - 1;print r;}'`
diff --git a/security/nss/tests/ssl_gtests/ssl_gtests.sh b/security/nss/tests/ssl_gtests/ssl_gtests.sh
index fd678bf594..eef77f16f3 100755
--- a/security/nss/tests/ssl_gtests/ssl_gtests.sh
+++ b/security/nss/tests/ssl_gtests/ssl_gtests.sh
@@ -47,6 +47,7 @@ make_cert() {
dsa) type_args='-g 1024' ;;
rsa) type_args='-g 1024' ;;
rsa2048) type_args='-g 2048';type=rsa ;;
+ rsa8192) type_args='-g 8192';type=rsa ;;
rsapss) type_args='-g 1024 --pss';type=rsa ;;
p256) type_args='-q nistp256';type=ec ;;
p384) type_args='-q secp384r1';type=ec ;;
@@ -83,6 +84,7 @@ ssl_gtest_certs() {
make_cert client rsa sign
make_cert rsa rsa sign kex
make_cert rsa2048 rsa2048 sign kex
+ make_cert rsa8192 rsa8192 sign kex
make_cert rsa_sign rsa sign
make_cert rsa_pss rsapss sign
make_cert rsa_decrypt rsa kex
diff --git a/security/nss/tests/tools/TestRSAPSS.p12 b/security/nss/tests/tools/TestRSAPSS.p12
new file mode 100644
index 0000000000..91473891c8
--- /dev/null
+++ b/security/nss/tests/tools/TestRSAPSS.p12
Binary files differ
diff --git a/security/nss/tests/tools/tools.sh b/security/nss/tests/tools/tools.sh
index 11be23e051..7cf1ef73f8 100644
--- a/security/nss/tests/tools/tools.sh
+++ b/security/nss/tests/tools/tools.sh
@@ -105,6 +105,7 @@ tools_init()
mkdir -p ${TOOLSDIR}/data
cp ${QADIR}/tools/TestOldCA.p12 ${TOOLSDIR}/data
cp ${QADIR}/tools/TestOldAES128CA.p12 ${TOOLSDIR}/data
+ cp ${QADIR}/tools/TestRSAPSS.p12 ${TOOLSDIR}/data
cd ${TOOLSDIR}
}
@@ -436,6 +437,23 @@ tools_p12_import_old_files()
check_tmpfile
}
+tools_p12_import_rsa_pss_private_key()
+{
+ echo "$SCRIPTNAME: Importing RSA-PSS private key from PKCS#12 file --------------"
+ ${BINDIR}/pk12util -i ${TOOLSDIR}/data/TestRSAPSS.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '' 2>&1
+ ret=$?
+ html_msg $ret 0 "Importing RSA-PSS private key from PKCS#12 file"
+ check_tmpfile
+
+ # Check if RSA-PSS identifier is included in the key listing
+ ${BINDIR}/certutil -d ${P_R_COPYDIR} -K -f ${R_PWFILE} | grep '^<[0-9 ]*> *rsaPss'
+ ret=$?
+ html_msg $ret 0 "Listing RSA-PSS private key imported from PKCS#12 file"
+ check_tmpfile
+
+ return $ret
+}
+
############################## tools_p12 ###############################
# local shell function to test basic functionality of pk12util
########################################################################
@@ -448,6 +466,9 @@ tools_p12()
tools_p12_export_with_none_ciphers
tools_p12_export_with_invalid_ciphers
tools_p12_import_old_files
+ if [ "${TEST_MODE}" = "SHARED_DB" ] ; then
+ tools_p12_import_rsa_pss_private_key
+ fi
}
############################## tools_sign ##############################
diff --git a/services/sync/Weave.js b/services/sync/Weave.js
index a414fa0831..de131d08a9 100644
--- a/services/sync/Weave.js
+++ b/services/sync/Weave.js
@@ -72,13 +72,6 @@ WeaveService.prototype = {
Ci.nsISupportsWeakReference]),
ensureLoaded: function () {
-#ifndef MC_PALEMOON
- // If we are loaded and not using FxA, load the migration module.
- if (!this.fxAccountsEnabled) {
- Cu.import("resource://services-sync/FxaMigrator.jsm");
- }
-#endif
-
Components.utils.import("resource://services-sync/main.js");
// Side-effect of accessing the service is that it is instantiated.
diff --git a/services/sync/modules/FxaMigrator.jsm b/services/sync/modules/FxaMigrator.jsm
deleted file mode 100644
index 735b601444..0000000000
--- a/services/sync/modules/FxaMigrator.jsm
+++ /dev/null
@@ -1,99 +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/. */
-
-"use strict;"
-
-// Note that this module used to supervise the step-by-step migration from
-// a legacy Sync account to a FxA-based Sync account. In bug 1205928, this
-// changed to automatically disconnect the legacy Sync account.
-
-const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Log.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-XPCOMUtils.defineLazyGetter(this, "WeaveService", function() {
- return Cc["@mozilla.org/weave/service;1"]
- .getService(Components.interfaces.nsISupports)
- .wrappedJSObject;
-});
-
-XPCOMUtils.defineLazyModuleGetter(this, "Weave",
- "resource://services-sync/main.js");
-
-// We send this notification when we perform the disconnection. The browser
-// window will show a one-off notification bar.
-const OBSERVER_STATE_CHANGE_TOPIC = "fxa-migration:state-changed";
-
-const OBSERVER_TOPICS = [
- "xpcom-shutdown",
- "weave:eol",
-];
-
-function Migrator() {
- // Leave the log-level as Debug - Sync will setup log appenders such that
- // these messages generally will not be seen unless other log related
- // prefs are set.
- this.log.level = Log.Level.Debug;
-
- for (let topic of OBSERVER_TOPICS) {
- Services.obs.addObserver(this, topic, false);
- }
-}
-
-Migrator.prototype = {
- log: Log.repository.getLogger("Sync.SyncMigration"),
-
- finalize() {
- for (let topic of OBSERVER_TOPICS) {
- Services.obs.removeObserver(this, topic);
- }
- },
-
- observe(subject, topic, data) {
- this.log.debug("observed " + topic);
- switch (topic) {
- case "xpcom-shutdown":
- this.finalize();
- break;
-
- default:
- // this notification when configured with legacy Sync means we want to
- // disconnect
- if (!WeaveService.fxAccountsEnabled) {
- this.log.info("Disconnecting from legacy Sync");
- // Set up an observer for when the disconnection is complete.
- let observe;
- Services.obs.addObserver(observe = () => {
- this.log.info("observed that startOver is complete");
- Services.obs.removeObserver(observe, "weave:service:start-over:finish");
- // Send the notification for the UI.
- Services.obs.notifyObservers(null, OBSERVER_STATE_CHANGE_TOPIC, null);
- }, "weave:service:start-over:finish", false);
-
- // Do the disconnection.
- Weave.Service.startOver();
- }
- }
- },
-
- get learnMoreLink() {
- try {
- var url = Services.prefs.getCharPref("app.support.baseURL");
- } catch (err) {
- return null;
- }
- url += "sync-upgrade";
- let sb = Services.strings.createBundle("chrome://weave/locale/services/sync.properties");
- return {
- text: sb.GetStringFromName("sync.eol.learnMore.label"),
- href: Services.urlFormatter.formatURL(url),
- };
- },
-};
-
-// We expose a singleton
-this.EXPORTED_SYMBOLS = ["fxaMigrator"];
-var fxaMigrator = new Migrator();
diff --git a/services/sync/moz.build b/services/sync/moz.build
index 83c39274ac..5e5de10b73 100644
--- a/services/sync/moz.build
+++ b/services/sync/moz.build
@@ -26,7 +26,6 @@ EXTRA_JS_MODULES['services-sync'] += [
'modules/browserid_identity.js',
'modules/collection_validator.js',
'modules/engines.js',
- 'modules/FxaMigrator.jsm',
'modules/identity.js',
'modules/jpakeclient.js',
'modules/keys.js',
diff --git a/services/sync/tests/unit/test_fxa_migration.js b/services/sync/tests/unit/test_fxa_migration.js
deleted file mode 100644
index 0ca770e284..0000000000
--- a/services/sync/tests/unit/test_fxa_migration.js
+++ /dev/null
@@ -1,117 +0,0 @@
-// We change this pref before anything else initializes
-Services.prefs.setCharPref("identity.fxaccounts.auth.uri", "http://localhost");
-
-// Test the FxAMigration module
-Cu.import("resource://services-sync/FxaMigrator.jsm");
-Cu.import("resource://gre/modules/Promise.jsm");
-
-// Set our username pref early so sync initializes with the legacy provider.
-Services.prefs.setCharPref("services.sync.username", "foo");
-// And ensure all debug messages end up being printed.
-Services.prefs.setCharPref("services.sync.log.appender.dump", "Debug");
-
-// Now import sync
-Cu.import("resource://services-sync/service.js");
-Cu.import("resource://services-sync/record.js");
-Cu.import("resource://services-sync/util.js");
-
-// And reset the username.
-Services.prefs.clearUserPref("services.sync.username");
-
-Cu.import("resource://testing-common/services/sync/utils.js");
-Cu.import("resource://testing-common/services/common/logging.js");
-Cu.import("resource://testing-common/services/sync/rotaryengine.js");
-
-const FXA_USERNAME = "someone@somewhere";
-
-// Utilities
-function promiseOneObserver(topic) {
- return new Promise((resolve, reject) => {
- let observer = function(subject, topic, data) {
- Services.obs.removeObserver(observer, topic);
- resolve({ subject: subject, data: data });
- }
- Services.obs.addObserver(observer, topic, false);
- });
-}
-
-function promiseStopServer(server) {
- return new Promise((resolve, reject) => {
- server.stop(resolve);
- });
-}
-
-
-// Helpers
-function configureLegacySync() {
- let engine = new RotaryEngine(Service);
- engine.enabled = true;
- Svc.Prefs.set("registerEngines", engine.name);
- Svc.Prefs.set("log.logger.engine.rotary", "Trace");
-
- let contents = {
- meta: {global: {engines: {rotary: {version: engine.version,
- syncID: engine.syncID}}}},
- crypto: {},
- rotary: {}
- };
-
- const USER = "foo";
- const PASSPHRASE = "abcdeabcdeabcdeabcdeabcdea";
-
- setBasicCredentials(USER, "password", PASSPHRASE);
-
- let onRequest = function(request, response) {
- // ideally we'd only do this while a legacy user is configured, but WTH.
- response.setHeader("x-weave-alert", JSON.stringify({code: "soft-eol"}));
- }
- let server = new SyncServer({onRequest: onRequest});
- server.registerUser(USER, "password");
- server.createContents(USER, contents);
- server.start();
-
- Service.serverURL = server.baseURI;
- Service.clusterURL = server.baseURI;
- Service.identity.username = USER;
- Service._updateCachedURLs();
-
- Service.engineManager._engines[engine.name] = engine;
-
- return [engine, server];
-}
-
-add_task(function *testMigrationUnlinks() {
-
- // when we do a .startOver we want the new provider.
- let oldValue = Services.prefs.getBoolPref("services.sync-testing.startOverKeepIdentity");
- Services.prefs.setBoolPref("services.sync-testing.startOverKeepIdentity", false);
-
- do_register_cleanup(() => {
- Services.prefs.setBoolPref("services.sync-testing.startOverKeepIdentity", oldValue)
- });
-
- // Arrange for a legacy sync user.
- let [engine, server] = configureLegacySync();
-
- // Start a sync - this will cause an EOL notification which the migrator's
- // observer will notice.
- let promiseMigration = promiseOneObserver("fxa-migration:state-changed");
- let promiseStartOver = promiseOneObserver("weave:service:start-over:finish");
- _("Starting sync");
- Service.sync();
- _("Finished sync");
-
- yield promiseStartOver;
- yield promiseMigration;
- // We should have seen the observer and Sync should no longer be configured.
- Assert.ok(!Services.prefs.prefHasUserValue("services.sync.username"));
-});
-
-function run_test() {
- initTestLogging();
- do_register_cleanup(() => {
- fxaMigrator.finalize();
- Svc.Prefs.resetBranch("");
- });
- run_next_test();
-}
diff --git a/services/sync/tests/unit/xpcshell.ini b/services/sync/tests/unit/xpcshell.ini
index 609003ce9f..4c0f0e7b7d 100644
--- a/services/sync/tests/unit/xpcshell.ini
+++ b/services/sync/tests/unit/xpcshell.ini
@@ -190,9 +190,6 @@ support-files = prefs_test_prefs_store.js
[test_warn_on_truncated_response.js]
[test_postqueue.js]
-# FxA migration
-[test_fxa_migration.js]
-
# Synced tabs.
[test_syncedtabs.js]
diff --git a/startupcache/StartupCache.cpp b/startupcache/StartupCache.cpp
index 371f4795c0..d4102efa16 100644
--- a/startupcache/StartupCache.cpp
+++ b/startupcache/StartupCache.cpp
@@ -242,31 +242,6 @@ StartupCache::LoadArchive(enum TelemetrifyAge flag)
mArchive = new nsZipArchive();
rv = mArchive->OpenArchive(mFile);
- if (NS_FAILED(rv) || flag == IGNORE_AGE)
- return rv;
-
- nsCString comment;
- if (!mArchive->GetComment(comment)) {
- return rv;
- }
-
- const char *data;
- size_t len = NS_CStringGetData(comment, &data);
- PRTime creationStamp;
- // We might not have a comment if the startup cache file was created
- // before we started recording creation times in the comment.
- if (len == sizeof(creationStamp)) {
- memcpy(&creationStamp, data, len);
- PRTime current = PR_Now();
- int64_t diff = current - creationStamp;
-
- // We can't use AccumulateTimeDelta here because we have no way of
- // reifying a TimeStamp from creationStamp.
- int64_t usec_per_hour = PR_USEC_PER_SEC * int64_t(3600);
- int64_t hour_diff = (diff + usec_per_hour - 1) / usec_per_hour;
- mozilla::Telemetry::Accumulate(Telemetry::STARTUP_CACHE_AGE_HOURS,
- hour_diff);
- }
return rv;
}
@@ -497,7 +472,6 @@ StartupCache::InvalidateCache()
if (NS_FAILED(rv) && rv != NS_ERROR_FILE_TARGET_DOES_NOT_EXIST &&
rv != NS_ERROR_FILE_NOT_FOUND) {
gIgnoreDiskCache = true;
- mozilla::Telemetry::Accumulate(Telemetry::STARTUP_CACHE_INVALID, true);
return;
}
gIgnoreDiskCache = false;
diff --git a/storage/TelemetryVFS.cpp b/storage/TelemetryVFS.cpp
index 5a025e29e2..eb102a0461 100644
--- a/storage/TelemetryVFS.cpp
+++ b/storage/TelemetryVFS.cpp
@@ -101,12 +101,6 @@ public:
~IOThreadAutoTimer()
{
- TimeStamp end(TimeStamp::Now());
- uint32_t mainThread = NS_IsMainThread() ? 1 : 0;
- if (id != Telemetry::HistogramCount) {
- Telemetry::AccumulateTimeDelta(static_cast<Telemetry::ID>(id + mainThread),
- start, end);
- }
// We don't report SQLite I/O on Windows because we have a comprehensive
// mechanism for intercepting I/O on that platform that captures a superset
// of the data captured here.
@@ -361,8 +355,6 @@ xRead(sqlite3_file *pFile, void *zBuf, int iAmt, sqlite_int64 iOfst)
int rc;
rc = p->pReal->pMethods->xRead(p->pReal, zBuf, iAmt, iOfst);
// sqlite likes to read from empty files, this is normal, ignore it.
- if (rc != SQLITE_IOERR_SHORT_READ)
- Telemetry::Accumulate(p->histograms->readB, rc == SQLITE_OK ? iAmt : 0);
return rc;
}
@@ -395,7 +387,6 @@ xWrite(sqlite3_file *pFile, const void *zBuf, int iAmt, sqlite_int64 iOfst)
}
}
rc = p->pReal->pMethods->xWrite(p->pReal, zBuf, iAmt, iOfst);
- Telemetry::Accumulate(p->histograms->writeB, rc == SQLITE_OK ? iAmt : 0);
if (p->quotaObject && rc != SQLITE_OK) {
NS_WARNING("xWrite failed on a quota-controlled file, attempting to "
"update its current size...");
@@ -416,7 +407,6 @@ xTruncate(sqlite3_file *pFile, sqlite_int64 size)
IOThreadAutoTimer ioTimer(Telemetry::MOZ_SQLITE_TRUNCATE_MS);
telemetry_file *p = (telemetry_file *)pFile;
int rc;
- Telemetry::AutoTimer<Telemetry::MOZ_SQLITE_TRUNCATE_MS> timer;
if (p->quotaObject) {
if (p->fileChunkSize > 0) {
// Round up to the smallest multiple of the chunk size that will hold all
@@ -618,7 +608,6 @@ xOpen(sqlite3_vfs* vfs, const char *zName, sqlite3_file* pFile,
{
IOThreadAutoTimer ioTimer(Telemetry::MOZ_SQLITE_OPEN_MS,
IOInterposeObserver::OpCreateOrOpen);
- Telemetry::AutoTimer<Telemetry::MOZ_SQLITE_OPEN_MS> timer;
sqlite3_vfs *orig_vfs = static_cast<sqlite3_vfs*>(vfs->pAppData);
int rc;
telemetry_file *p = (telemetry_file *)pFile;
diff --git a/storage/mozStorageAsyncStatementExecution.cpp b/storage/mozStorageAsyncStatementExecution.cpp
index e1d344aca6..00f584f032 100644
--- a/storage/mozStorageAsyncStatementExecution.cpp
+++ b/storage/mozStorageAsyncStatementExecution.cpp
@@ -226,7 +226,6 @@ bool
AsyncExecuteStatements::executeStatement(sqlite3_stmt *aStatement)
{
mMutex.AssertNotCurrentThreadOwns();
- Telemetry::AutoTimer<Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_MS> finallySendExecutionDuration(mRequestStartDate);
while (true) {
// lock the sqlite mutex so sqlite3_errmsg cannot change
SQLiteMutexAutoLock lockedScope(mDBMutex);
@@ -235,14 +234,12 @@ AsyncExecuteStatements::executeStatement(sqlite3_stmt *aStatement)
// Stop if we have no more results.
if (rc == SQLITE_DONE)
{
- Telemetry::Accumulate(Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_SUCCESS, true);
return false;
}
// If we got results, we can return now.
if (rc == SQLITE_ROW)
{
- Telemetry::Accumulate(Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_SUCCESS, true);
return true;
}
@@ -258,7 +255,6 @@ AsyncExecuteStatements::executeStatement(sqlite3_stmt *aStatement)
// Set an error state.
mState = ERROR;
- Telemetry::Accumulate(Telemetry::MOZ_STORAGE_ASYNC_REQUESTS_SUCCESS, false);
// Construct the error message before giving up the mutex (which we cannot
// hold during the call to notifyError).
diff --git a/testing/web-platform/meta/html/dom/interfaces.html.ini b/testing/web-platform/meta/html/dom/interfaces.html.ini
index 8dbbe4969c..59e445a3e7 100644
--- a/testing/web-platform/meta/html/dom/interfaces.html.ini
+++ b/testing/web-platform/meta/html/dom/interfaces.html.ini
@@ -1594,9 +1594,6 @@
[Path2D interface: operation addPathByStrokingText(DOMString,CanvasDrawingStyles,SVGMatrix,Path2D,unrestricted double)]
expected: FAIL
- [DataTransfer interface object length]
- expected: FAIL
-
[Window interface: operation showModalDialog(DOMString,any)]
disabled:
if e10s: https://bugzilla.mozilla.org/show_bug.cgi?id=981796
diff --git a/toolkit/components/alerts/nsAlertsService.cpp b/toolkit/components/alerts/nsAlertsService.cpp
index dd67ad9831..73dbb265c9 100644
--- a/toolkit/components/alerts/nsAlertsService.cpp
+++ b/toolkit/components/alerts/nsAlertsService.cpp
@@ -6,7 +6,6 @@
#include "mozilla/dom/ContentChild.h"
#include "mozilla/dom/PermissionMessageUtils.h"
#include "mozilla/Preferences.h"
-#include "mozilla/Telemetry.h"
#include "nsXULAppAPI.h"
#include "nsAlertsService.h"
@@ -292,9 +291,6 @@ NS_IMETHODIMP nsAlertsService::SetManualDoNotDisturb(bool aDoNotDisturb)
NS_ENSURE_TRUE(alertsDND, NS_ERROR_NOT_IMPLEMENTED);
nsresult rv = alertsDND->SetManualDoNotDisturb(aDoNotDisturb);
- if (NS_SUCCEEDED(rv)) {
- Telemetry::Accumulate(Telemetry::ALERTS_SERVICE_DND_ENABLED, 1);
- }
return rv;
#endif
}
diff --git a/toolkit/components/downloads/ApplicationReputation.cpp b/toolkit/components/downloads/ApplicationReputation.cpp
index 7bd219dbf2..a369ca8841 100644
--- a/toolkit/components/downloads/ApplicationReputation.cpp
+++ b/toolkit/components/downloads/ApplicationReputation.cpp
@@ -34,7 +34,6 @@
#include "mozilla/LoadContext.h"
#include "mozilla/Preferences.h"
#include "mozilla/Services.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/TimeStamp.h"
#include "nsAutoPtr.h"
@@ -59,7 +58,6 @@ using mozilla::DocShellOriginAttributes;
using mozilla::PrincipalOriginAttributes;
using mozilla::Preferences;
using mozilla::TimeStamp;
-using mozilla::Telemetry::Accumulate;
using safe_browsing::ClientDownloadRequest;
using safe_browsing::ClientDownloadRequest_CertificateChain;
using safe_browsing::ClientDownloadRequest_Resource;
@@ -356,7 +354,6 @@ PendingDBLookup::HandleEvent(const nsACString& tables)
Preferences::GetCString(PREF_DOWNLOAD_BLOCK_TABLE, &blockList);
if (!mAllowlistOnly && FindInReadable(blockList, tables)) {
mPendingLookup->mBlocklistCount++;
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, BLOCK_LIST);
LOG(("Found principal %s on blocklist [this = %p]", mSpec.get(), this));
return mPendingLookup->OnComplete(true, NS_OK,
nsIApplicationReputationService::VERDICT_DANGEROUS);
@@ -366,13 +363,11 @@ PendingDBLookup::HandleEvent(const nsACString& tables)
Preferences::GetCString(PREF_DOWNLOAD_ALLOW_TABLE, &allowList);
if (FindInReadable(allowList, tables)) {
mPendingLookup->mAllowlistCount++;
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, ALLOW_LIST);
LOG(("Found principal %s on allowlist [this = %p]", mSpec.get(), this));
// Don't call onComplete, since blocklisting trumps allowlisting
} else {
LOG(("Didn't find principal %s on any list [this = %p]", mSpec.get(),
this));
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_LOCAL, NO_LIST);
}
return mPendingLookup->LookupNext();
}
@@ -1000,7 +995,7 @@ PendingLookup::GetSpecHash(nsACString& aSpec, nsACString& hexEncodedHash)
static const char* const hex = "0123456789ABCDEF";
hexEncodedHash.SetCapacity(2 * binaryHash.Length());
for (size_t i = 0; i < binaryHash.Length(); ++i) {
- auto c = static_cast<const unsigned char>(binaryHash[i]);
+ auto c = static_cast<unsigned char>(binaryHash[i]);
hexEncodedHash.Append(hex[(c >> 4) & 0x0F]);
hexEncodedHash.Append(hex[c & 0x0F]);
}
@@ -1144,8 +1139,6 @@ PendingLookup::OnComplete(bool shouldBlock, nsresult rv, uint32_t verdict)
mTimeoutTimer = nullptr;
}
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SHOULD_BLOCK,
- shouldBlock);
double t = (TimeStamp::Now() - mStartTime).ToMilliseconds();
LOG(("Application Reputation verdict is %lu, obtained in %f ms [this = %p]",
verdict, t, this));
@@ -1393,8 +1386,6 @@ PendingLookup::Notify(nsITimer* aTimer)
{
LOG(("Remote lookup timed out [this = %p]", this));
MOZ_ASSERT(aTimer == mTimeoutTimer);
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT,
- true);
mChannel->Cancel(NS_ERROR_NET_TIMEOUT);
mTimeoutTimer->Cancel();
return NS_OK;
@@ -1457,8 +1448,6 @@ PendingLookup::OnStopRequest(nsIRequest *aRequest,
bool shouldBlock = false;
uint32_t verdict = nsIApplicationReputationService::VERDICT_SAFE;
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_REMOTE_LOOKUP_TIMEOUT,
- false);
nsresult rv = OnStopRequestInternal(aRequest, aContext, aResult,
&shouldBlock, &verdict);
@@ -1473,8 +1462,6 @@ PendingLookup::OnStopRequestInternal(nsIRequest *aRequest,
bool* aShouldBlock,
uint32_t* aVerdict) {
if (NS_FAILED(aResult)) {
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER,
- SERVER_RESPONSE_FAILED);
return aResult;
}
@@ -1483,22 +1470,16 @@ PendingLookup::OnStopRequestInternal(nsIRequest *aRequest,
nsresult rv;
nsCOMPtr<nsIHttpChannel> channel = do_QueryInterface(aRequest, &rv);
if (NS_FAILED(rv)) {
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER,
- SERVER_RESPONSE_FAILED);
return rv;
}
uint32_t status = 0;
rv = channel->GetResponseStatus(&status);
if (NS_FAILED(rv)) {
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER,
- SERVER_RESPONSE_FAILED);
return rv;
}
if (status != 200) {
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER,
- SERVER_RESPONSE_FAILED);
return NS_ERROR_NOT_AVAILABLE;
}
@@ -1506,16 +1487,9 @@ PendingLookup::OnStopRequestInternal(nsIRequest *aRequest,
safe_browsing::ClientDownloadResponse response;
if (!response.ParseFromString(buf)) {
LOG(("Invalid protocol buffer response [this = %p]: %s", this, buf.c_str()));
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER,
- SERVER_RESPONSE_INVALID);
return NS_ERROR_CANNOT_CONVERT_DATA;
}
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER,
- SERVER_RESPONSE_VALID);
- // Clamp responses 0-7, we only know about 0-4 for now.
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SERVER_VERDICT,
- std::min<uint32_t>(response.verdict(), 7));
switch(response.verdict()) {
case safe_browsing::ClientDownloadResponse::DANGEROUS:
*aShouldBlock = Preferences::GetBool(PREF_BLOCK_DANGEROUS, true);
@@ -1583,11 +1557,8 @@ ApplicationReputationService::QueryReputation(
NS_ENSURE_ARG_POINTER(aQuery);
NS_ENSURE_ARG_POINTER(aCallback);
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_COUNT, true);
nsresult rv = QueryReputationInternal(aQuery, aCallback);
if (NS_FAILED(rv)) {
- Accumulate(mozilla::Telemetry::APPLICATION_REPUTATION_SHOULD_BLOCK,
- false);
aCallback->OnComplete(false, rv,
nsIApplicationReputationService::VERDICT_SAFE);
}
diff --git a/toolkit/components/osfile/modules/osfile_async_front.jsm b/toolkit/components/osfile/modules/osfile_async_front.jsm
index 964e530847..93c7e66d6c 100644
--- a/toolkit/components/osfile/modules/osfile_async_front.jsm
+++ b/toolkit/components/osfile/modules/osfile_async_front.jsm
@@ -56,7 +56,6 @@ Cu.import("resource://gre/modules/Task.jsm", this);
// The implementation of communications
Cu.import("resource://gre/modules/PromiseWorker.jsm", this);
Cu.import("resource://gre/modules/Services.jsm", this);
-Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", this);
Cu.import("resource://gre/modules/AsyncShutdown.jsm", this);
var Native = Cu.import("resource://gre/modules/osfile/osfile_native.jsm", {});
@@ -1171,13 +1170,10 @@ File.writeAtomic = function writeAtomic(path, buffer, options = {}) {
if (isTypedArray(buffer) && (!("bytes" in options))) {
options.bytes = buffer.byteLength;
};
- let refObj = {};
- TelemetryStopwatch.start("OSFILE_WRITEATOMIC_JANK_MS", refObj);
let promise = Scheduler.post("writeAtomic",
[Type.path.toMsg(path),
Type.void_t.in_ptr.toMsg(buffer),
options], [options, buffer, path]);
- TelemetryStopwatch.finish("OSFILE_WRITEATOMIC_JANK_MS", refObj);
return promise;
};
diff --git a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp
index eb924de46e..33aeaf7c26 100644
--- a/toolkit/components/perfmonitoring/nsPerformanceStats.cpp
+++ b/toolkit/components/perfmonitoring/nsPerformanceStats.cpp
@@ -27,7 +27,6 @@
#include "mozilla/ArrayUtils.h"
#include "mozilla/EventStateManager.h"
#include "mozilla/Services.h"
-#include "mozilla/Telemetry.h"
#if defined(XP_WIN)
#include <processthreadsapi.h>
@@ -957,22 +956,7 @@ nsPerformanceStatsService::SetJankAlertBufferingDelay(uint32_t value) {
nsresult
nsPerformanceStatsService::UpdateTelemetry()
{
- // Promote everything to floating-point explicitly before dividing.
- const double processStayed = mProcessStayed;
- const double processMoved = mProcessMoved;
-
- if (processStayed <= 0 || processMoved <= 0 || processStayed + processMoved <= 0) {
- // Overflow/underflow/nothing to report
- return NS_OK;
- }
-
- const double proportion = (100 * processStayed) / (processStayed + processMoved);
- if (proportion < 0 || proportion > 100) {
- // Overflow/underflow
- return NS_OK;
- }
-
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PERF_MONITORING_TEST_CPU_RESCHEDULING_PROPORTION_MOVED, (uint32_t)proportion);
+ /* STUB */
return NS_OK;
}
diff --git a/toolkit/components/places/Database.cpp b/toolkit/components/places/Database.cpp
index 37502e2a14..a87c14b37a 100644
--- a/toolkit/components/places/Database.cpp
+++ b/toolkit/components/places/Database.cpp
@@ -615,9 +615,6 @@ Database::BackupAndReplaceDatabaseFile(nsCOMPtr<mozIStorageService>& aStorage)
// Set up a pref to try replacing the database at the next startup.
Preferences::SetBool(PREF_FORCE_DATABASE_REPLACEMENT, true);
}
- // Report the corruption through telemetry.
- Telemetry::Accumulate(Telemetry::PLACES_DATABASE_CORRUPTION_HANDLING_STAGE,
- static_cast<int8_t>(stage));
});
// Close database connection if open.
diff --git a/toolkit/components/places/FaviconHelpers.cpp b/toolkit/components/places/FaviconHelpers.cpp
index 69c2023380..ca08cdff4a 100644
--- a/toolkit/components/places/FaviconHelpers.cpp
+++ b/toolkit/components/places/FaviconHelpers.cpp
@@ -14,7 +14,6 @@
#include "nsNavHistory.h"
#include "nsFaviconService.h"
#include "mozilla/storage.h"
-#include "mozilla/Telemetry.h"
#include "nsNetUtil.h"
#include "nsPrintfCString.h"
#include "nsStreamUtils.h"
@@ -581,33 +580,6 @@ AsyncFetchAndSetIconForPage::OnStopRequest(nsIRequest* aRequest,
mIcon.expiration = GetExpirationTimeFromChannel(channel);
- // Telemetry probes to measure the favicon file sizes for each different file type.
- // This allow us to measure common file sizes while also observing each type popularity.
- if (mIcon.mimeType.EqualsLiteral("image/png")) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_PNG_SIZES, mIcon.data.Length());
- }
- else if (mIcon.mimeType.EqualsLiteral("image/x-icon") ||
- mIcon.mimeType.EqualsLiteral("image/vnd.microsoft.icon")) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_ICO_SIZES, mIcon.data.Length());
- }
- else if (mIcon.mimeType.EqualsLiteral("image/jpeg") ||
- mIcon.mimeType.EqualsLiteral("image/pjpeg")) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_JPEG_SIZES, mIcon.data.Length());
- }
- else if (mIcon.mimeType.EqualsLiteral("image/gif")) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_GIF_SIZES, mIcon.data.Length());
- }
- else if (mIcon.mimeType.EqualsLiteral("image/bmp") ||
- mIcon.mimeType.EqualsLiteral("image/x-windows-bmp")) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_BMP_SIZES, mIcon.data.Length());
- }
- else if (mIcon.mimeType.EqualsLiteral("image/svg+xml")) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_SVG_SIZES, mIcon.data.Length());
- }
- else {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::PLACES_FAVICON_OTHER_SIZES, mIcon.data.Length());
- }
-
rv = OptimizeIconSize(mIcon, favicons);
NS_ENSURE_SUCCESS(rv, rv);
diff --git a/toolkit/components/places/Helpers.cpp b/toolkit/components/places/Helpers.cpp
index 66c4e79a9b..dda1621979 100644
--- a/toolkit/components/places/Helpers.cpp
+++ b/toolkit/components/places/Helpers.cpp
@@ -385,9 +385,7 @@ AsyncStatementCallbackNotifier::HandleCompletion(uint16_t aReason)
NS_IMETHODIMP
AsyncStatementTelemetryTimer::HandleCompletion(uint16_t aReason)
{
- if (aReason == mozIStorageStatementCallback::REASON_FINISHED) {
- Telemetry::AccumulateTimeDelta(mHistogramId, mStart);
- }
+ /* STUB */
return NS_OK;
}
diff --git a/toolkit/components/places/UnifiedComplete.js b/toolkit/components/places/UnifiedComplete.js
index acd358b116..2efae9cbea 100644
--- a/toolkit/components/places/UnifiedComplete.js
+++ b/toolkit/components/places/UnifiedComplete.js
@@ -262,8 +262,6 @@ Cu.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
"resource://gre/modules/PlacesUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
- "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
"resource://gre/modules/NetUtil.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Preferences",
@@ -887,10 +885,6 @@ Search.prototype = {
if (!this.pending)
return;
- TelemetryStopwatch.start(TELEMETRY_1ST_RESULT, this);
- if (this._searchString)
- TelemetryStopwatch.start(TELEMETRY_6_FIRST_RESULTS, this);
-
// Since we call the synchronous parseSubmissionURL function later, we must
// wait for the initialization of PlacesSearchAutocompleteProvider first.
yield PlacesSearchAutocompleteProvider.ensureInitialized();
@@ -1468,9 +1462,6 @@ Search.prototype = {
},
_onResultRow: function (row) {
- if (this._localMatchesCount == 0) {
- TelemetryStopwatch.finish(TELEMETRY_1ST_RESULT, this);
- }
let queryType = row.getResultByIndex(QUERYINDEX_QUERYTYPE);
let match;
switch (queryType) {
@@ -1566,9 +1557,6 @@ Search.prototype = {
match.style,
match.finalCompleteValue);
- if (this._result.matchCount == 6)
- TelemetryStopwatch.finish(TELEMETRY_6_FIRST_RESULTS, this);
-
this.notifyResults(true);
},
@@ -2088,8 +2076,6 @@ UnifiedComplete.prototype = {
* results or not.
*/
finishSearch: function (notify=false) {
- TelemetryStopwatch.cancel(TELEMETRY_1ST_RESULT, this);
- TelemetryStopwatch.cancel(TELEMETRY_6_FIRST_RESULTS, this);
// Clear state now to avoid race conditions, see below.
let search = this._currentSearch;
if (!search)
diff --git a/toolkit/components/places/nsPlacesAutoComplete.js b/toolkit/components/places/nsPlacesAutoComplete.js
index 29bdae4c1a..9c6452ecd6 100644
--- a/toolkit/components/places/nsPlacesAutoComplete.js
+++ b/toolkit/components/places/nsPlacesAutoComplete.js
@@ -8,8 +8,6 @@ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
"resource://gre/modules/PlacesUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
- "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
"resource://gre/modules/NetUtil.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Task",
@@ -1510,8 +1508,6 @@ urlInlineComplete.prototype = {
// Do a synchronous search on the table of hosts.
let query = this._hostQuery;
query.params.search_string = this._currentSearchString.toLowerCase();
- // This is just to measure the delay to reach the UI, not the query time.
- TelemetryStopwatch.start(DOMAIN_QUERY_TELEMETRY);
let wrapper = new AutoCompleteStatementCallbackWrapper(this, {
handleResult: aResultSet => {
if (this._pendingSearch != pendingSearch)
@@ -1541,7 +1537,6 @@ urlInlineComplete.prototype = {
handleCompletion: aReason => {
if (this._pendingSearch != pendingSearch)
return;
- TelemetryStopwatch.finish(DOMAIN_QUERY_TELEMETRY);
this._finishSearch();
}
}, this._db);
diff --git a/toolkit/components/search/SearchStaticData.jsm b/toolkit/components/search/current/SearchStaticData.jsm
index de2be695c3..de2be695c3 100644
--- a/toolkit/components/search/SearchStaticData.jsm
+++ b/toolkit/components/search/current/SearchStaticData.jsm
diff --git a/toolkit/components/search/SearchSuggestionController.jsm b/toolkit/components/search/current/SearchSuggestionController.jsm
index 952838c0c5..952838c0c5 100644
--- a/toolkit/components/search/SearchSuggestionController.jsm
+++ b/toolkit/components/search/current/SearchSuggestionController.jsm
diff --git a/toolkit/components/search/current/moz.build b/toolkit/components/search/current/moz.build
new file mode 100644
index 0000000000..4ca6790872
--- /dev/null
+++ b/toolkit/components/search/current/moz.build
@@ -0,0 +1,31 @@
+# -*- 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/.
+
+EXTRA_COMPONENTS += [
+ 'nsSearchSuggestions.js',
+]
+
+EXTRA_PP_COMPONENTS += [
+ 'nsSearchService.js',
+]
+
+if CONFIG['MOZ_PHOENIX'] or CONFIG['MOZ_FENNEC'] or CONFIG['MOZ_XULRUNNER']:
+ DEFINES['HAVE_SIDEBAR'] = True
+ EXTRA_COMPONENTS += [
+ 'nsSidebar.js',
+ ]
+
+EXTRA_JS_MODULES += [
+ 'SearchSuggestionController.jsm',
+]
+
+EXTRA_PP_COMPONENTS += [
+ 'toolkitsearch.manifest',
+]
+
+EXTRA_JS_MODULES += [
+ 'SearchStaticData.jsm',
+]
diff --git a/toolkit/components/search/nsSearchService.js b/toolkit/components/search/current/nsSearchService.js
index 9f9003516d..99e73b50b3 100644
--- a/toolkit/components/search/nsSearchService.js
+++ b/toolkit/components/search/current/nsSearchService.js
@@ -21,8 +21,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "OS",
"resource://gre/modules/osfile.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Task",
"resource://gre/modules/Task.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
- "resource://gre/modules/TelemetryStopwatch.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "SearchStaticData",
"resource://gre/modules/SearchStaticData.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "setTimeout",
@@ -3873,21 +3871,17 @@ SearchService.prototype = {
LOG("SearchService.init");
let self = this;
if (!this._initStarted) {
- TelemetryStopwatch.start("SEARCH_SERVICE_INIT_MS");
this._initStarted = true;
Task.spawn(function* task() {
try {
// Complete initialization by calling asynchronous initializer.
yield self._asyncInit();
- TelemetryStopwatch.finish("SEARCH_SERVICE_INIT_MS");
} catch (ex) {
if (ex.result == Cr.NS_ERROR_ALREADY_INITIALIZED) {
// No need to pursue asynchronous because synchronous fallback was
// called and has finished.
- TelemetryStopwatch.finish("SEARCH_SERVICE_INIT_MS");
} else {
self._initObservers.reject(ex);
- TelemetryStopwatch.cancel("SEARCH_SERVICE_INIT_MS");
}
}
});
diff --git a/toolkit/components/search/nsSearchSuggestions.js b/toolkit/components/search/current/nsSearchSuggestions.js
index a05d8b4b45..a05d8b4b45 100644
--- a/toolkit/components/search/nsSearchSuggestions.js
+++ b/toolkit/components/search/current/nsSearchSuggestions.js
diff --git a/toolkit/components/search/nsSidebar.js b/toolkit/components/search/current/nsSidebar.js
index 63976cba70..63976cba70 100644
--- a/toolkit/components/search/nsSidebar.js
+++ b/toolkit/components/search/current/nsSidebar.js
diff --git a/toolkit/components/search/toolkitsearch.manifest b/toolkit/components/search/current/toolkitsearch.manifest
index b7c55da0e9..b7c55da0e9 100644
--- a/toolkit/components/search/toolkitsearch.manifest
+++ b/toolkit/components/search/current/toolkitsearch.manifest
diff --git a/toolkit/components/search/moz.build b/toolkit/components/search/moz.build
index 0a2695152b..4cc86ff9ed 100644
--- a/toolkit/components/search/moz.build
+++ b/toolkit/components/search/moz.build
@@ -6,31 +6,10 @@
XPCSHELL_TESTS_MANIFESTS += ['tests/xpcshell/xpcshell.ini']
-EXTRA_COMPONENTS += [
- 'nsSearchSuggestions.js',
-]
-
-EXTRA_PP_COMPONENTS += [
- 'nsSearchService.js',
-]
-
-if CONFIG['MOZ_PHOENIX'] or CONFIG['MOZ_FENNEC'] or CONFIG['MOZ_XULRUNNER']:
- DEFINES['HAVE_SIDEBAR'] = True
- EXTRA_COMPONENTS += [
- 'nsSidebar.js',
- ]
-
-EXTRA_JS_MODULES += [
- 'SearchSuggestionController.jsm',
-]
-
-EXTRA_PP_COMPONENTS += [
- 'toolkitsearch.manifest',
-]
-
-EXTRA_JS_MODULES += [
- 'SearchStaticData.jsm',
-]
+if CONFIG['MC_PALEMOON']:
+ DIRS += ['orginal']
+else:
+ DIRS += ['current']
with Files('**'):
BUG_COMPONENT = ('Firefox', 'Search')
diff --git a/toolkit/components/search/orginal/SearchStaticData.jsm b/toolkit/components/search/orginal/SearchStaticData.jsm
new file mode 100644
index 0000000000..de2be695c3
--- /dev/null
+++ b/toolkit/components/search/orginal/SearchStaticData.jsm
@@ -0,0 +1,43 @@
+/* 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/. */
+
+/*
+ * This module contains additional data about default search engines that is the
+ * same across all languages. This information is defined outside of the actual
+ * search engine definition files, so that localizers don't need to update them
+ * when a change is made.
+ *
+ * This separate module is also easily overridable, in case a hotfix is needed.
+ * No high-level processing logic is applied here.
+ */
+
+"use strict";
+
+this.EXPORTED_SYMBOLS = [
+ "SearchStaticData",
+];
+
+const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
+
+// To update this list of known alternate domains, just cut-and-paste from
+// https://www.google.com/supported_domains
+const gGoogleDomainsSource = ".google.com .google.ad .google.ae .google.com.af .google.com.ag .google.com.ai .google.al .google.am .google.co.ao .google.com.ar .google.as .google.at .google.com.au .google.az .google.ba .google.com.bd .google.be .google.bf .google.bg .google.com.bh .google.bi .google.bj .google.com.bn .google.com.bo .google.com.br .google.bs .google.bt .google.co.bw .google.by .google.com.bz .google.ca .google.cd .google.cf .google.cg .google.ch .google.ci .google.co.ck .google.cl .google.cm .google.cn .google.com.co .google.co.cr .google.com.cu .google.cv .google.com.cy .google.cz .google.de .google.dj .google.dk .google.dm .google.com.do .google.dz .google.com.ec .google.ee .google.com.eg .google.es .google.com.et .google.fi .google.com.fj .google.fm .google.fr .google.ga .google.ge .google.gg .google.com.gh .google.com.gi .google.gl .google.gm .google.gp .google.gr .google.com.gt .google.gy .google.com.hk .google.hn .google.hr .google.ht .google.hu .google.co.id .google.ie .google.co.il .google.im .google.co.in .google.iq .google.is .google.it .google.je .google.com.jm .google.jo .google.co.jp .google.co.ke .google.com.kh .google.ki .google.kg .google.co.kr .google.com.kw .google.kz .google.la .google.com.lb .google.li .google.lk .google.co.ls .google.lt .google.lu .google.lv .google.com.ly .google.co.ma .google.md .google.me .google.mg .google.mk .google.ml .google.com.mm .google.mn .google.ms .google.com.mt .google.mu .google.mv .google.mw .google.com.mx .google.com.my .google.co.mz .google.com.na .google.com.nf .google.com.ng .google.com.ni .google.ne .google.nl .google.no .google.com.np .google.nr .google.nu .google.co.nz .google.com.om .google.com.pa .google.com.pe .google.com.pg .google.com.ph .google.com.pk .google.pl .google.pn .google.com.pr .google.ps .google.pt .google.com.py .google.com.qa .google.ro .google.ru .google.rw .google.com.sa .google.com.sb .google.sc .google.se .google.com.sg .google.sh .google.si .google.sk .google.com.sl .google.sn .google.so .google.sm .google.sr .google.st .google.com.sv .google.td .google.tg .google.co.th .google.com.tj .google.tk .google.tl .google.tm .google.tn .google.to .google.com.tr .google.tt .google.com.tw .google.co.tz .google.com.ua .google.co.ug .google.co.uk .google.com.uy .google.co.uz .google.com.vc .google.co.ve .google.vg .google.co.vi .google.com.vn .google.vu .google.ws .google.rs .google.co.za .google.co.zm .google.co.zw .google.cat";
+const gGoogleDomains = gGoogleDomainsSource.split(" ").map(d => "www" + d);
+
+this.SearchStaticData = {
+ /**
+ * Returns a list of alternate domains for a given search engine domain.
+ *
+ * @param aDomain
+ * Lowercase host name to look up. For example, if this argument is
+ * "www.google.com" or "www.google.co.uk", the function returns the
+ * full list of supported Google domains.
+ *
+ * @return Array containing one entry for each alternate host name, or empty
+ * array if none is known. The returned array should not be modified.
+ */
+ getAlternateDomains: function (aDomain) {
+ return gGoogleDomains.indexOf(aDomain) == -1 ? [] : gGoogleDomains;
+ },
+};
diff --git a/toolkit/components/search/orginal/SearchSuggestionController.jsm b/toolkit/components/search/orginal/SearchSuggestionController.jsm
new file mode 100644
index 0000000000..0858974bfa
--- /dev/null
+++ b/toolkit/components/search/orginal/SearchSuggestionController.jsm
@@ -0,0 +1,396 @@
+/* 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 = ["SearchSuggestionController"];
+
+const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/Promise.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "NS_ASSERT", "resource://gre/modules/debug.js");
+
+const SEARCH_RESPONSE_SUGGESTION_JSON = "application/x-suggestions+json";
+const DEFAULT_FORM_HISTORY_PARAM = "searchbar-history";
+const HTTP_OK = 200;
+const REMOTE_TIMEOUT = 500; // maximum time (ms) to wait before giving up on a remote suggestions
+const BROWSER_SUGGEST_PREF = "browser.search.suggest.enabled";
+
+/**
+ * Remote search suggestions will be shown if gRemoteSuggestionsEnabled
+ * is true. Global because only one pref observer is needed for all instances.
+ */
+var gRemoteSuggestionsEnabled = Services.prefs.getBoolPref(BROWSER_SUGGEST_PREF);
+Services.prefs.addObserver(BROWSER_SUGGEST_PREF, function(aSubject, aTopic, aData) {
+ gRemoteSuggestionsEnabled = Services.prefs.getBoolPref(BROWSER_SUGGEST_PREF);
+}, false);
+
+/**
+ * SearchSuggestionController.jsm exists as a helper module to allow multiple consumers to request and display
+ * search suggestions from a given engine, regardless of the base implementation. Much of this
+ * code was originally in nsSearchSuggestions.js until it was refactored to separate it from the
+ * nsIAutoCompleteSearch dependency.
+ * One instance of SearchSuggestionController should be used per field since form history results are cached.
+ */
+
+/**
+ * @param {function} [callback] - Callback for search suggestion results. You can use the promise
+ * returned by the search method instead if you prefer.
+ * @constructor
+ */
+this.SearchSuggestionController = function SearchSuggestionController(callback = null) {
+ this._callback = callback;
+};
+
+this.SearchSuggestionController.prototype = {
+ /**
+ * The maximum number of local form history results to return. This limit is
+ * only enforced if remote results are also returned.
+ */
+ maxLocalResults: 5,
+
+ /**
+ * The maximum number of remote search engine results to return.
+ * We'll actually only display at most
+ * maxRemoteResults - <displayed local results count> remote results.
+ */
+ maxRemoteResults: 10,
+
+ /**
+ * The maximum time (ms) to wait before giving up on a remote suggestions.
+ */
+ remoteTimeout: REMOTE_TIMEOUT,
+
+ /**
+ * The additional parameter used when searching form history.
+ */
+ formHistoryParam: DEFAULT_FORM_HISTORY_PARAM,
+
+ // Private properties
+ /**
+ * The last form history result used to improve the performance of subsequent searches.
+ * This shouldn't be used for any other purpose as it is never cleared and therefore could be stale.
+ */
+ _formHistoryResult: null,
+
+ /**
+ * The remote server timeout timer, if applicable. The timer starts when form history
+ * search is completed.
+ */
+ _remoteResultTimer: null,
+
+ /**
+ * The deferred for the remote results before its promise is resolved.
+ */
+ _deferredRemoteResult: null,
+
+ /**
+ * The optional result callback registered from the constructor.
+ */
+ _callback: null,
+
+ /**
+ * The XMLHttpRequest object for remote results.
+ */
+ _request: null,
+
+ // Public methods
+
+ /**
+ * Fetch search suggestions from all of the providers. Fetches in progress will be stopped and
+ * results from them will not be provided.
+ *
+ * @param {string} searchTerm - the term to provide suggestions for
+ * @param {bool} privateMode - whether the request is being made in the context of private browsing
+ * @param {nsISearchEngine} engine - search engine for the suggestions.
+ *
+ * @return {Promise} resolving to an object containing results or null.
+ */
+ fetch: function(searchTerm, privateMode, engine) {
+ // There is no smart filtering from previous results here (as there is when looking through
+ // history/form data) because the result set returned by the server is different for every typed
+ // value - e.g. "ocean breathes" does not return a subset of the results returned for "ocean".
+
+ this.stop();
+
+ if (!Services.search.isInitialized) {
+ throw new Error("Search not initialized yet (how did you get here?)");
+ }
+ if (typeof privateMode === "undefined") {
+ throw new Error("The privateMode argument is required to avoid unintentional privacy leaks");
+ }
+ if (!(engine instanceof Ci.nsISearchEngine)) {
+ throw new Error("Invalid search engine");
+ }
+ if (!this.maxLocalResults && !this.maxRemoteResults) {
+ throw new Error("Zero results expected, what are you trying to do?");
+ }
+ if (this.maxLocalResults < 0 || this.maxRemoteResults < 0) {
+ throw new Error("Number of requested results must be positive");
+ }
+
+ // Array of promises to resolve before returning results.
+ let promises = [];
+ this._searchString = searchTerm;
+
+ // Remote results
+ if (searchTerm && gRemoteSuggestionsEnabled && this.maxRemoteResults &&
+ engine.supportsResponseType(SEARCH_RESPONSE_SUGGESTION_JSON)) {
+ this._deferredRemoteResult = this._fetchRemote(searchTerm, engine, privateMode);
+ promises.push(this._deferredRemoteResult.promise);
+ }
+
+ // Local results from form history
+ if (this.maxLocalResults) {
+ let deferredHistoryResult = this._fetchFormHistory(searchTerm);
+ promises.push(deferredHistoryResult.promise);
+ }
+
+ function handleRejection(reason) {
+ if (reason == "HTTP request aborted") {
+ // Do nothing since this is normal.
+ return null;
+ }
+ Cu.reportError("SearchSuggestionController rejection: " + reason);
+ return null;
+ }
+ return Promise.all(promises).then(this._dedupeAndReturnResults.bind(this), handleRejection);
+ },
+
+ /**
+ * Stop pending fetches so no results are returned from them.
+ *
+ * Note: If there was no remote results fetched, the fetching cannot be stopped and local results
+ * will still be returned because stopping relies on aborting the XMLHTTPRequest to reject the
+ * promise for Promise.all.
+ */
+ stop: function() {
+ if (this._request) {
+ this._request.abort();
+ } else if (!this.maxRemoteResults) {
+ Cu.reportError("SearchSuggestionController: Cannot stop fetching if remote results were not "+
+ "requested");
+ }
+ this._reset();
+ },
+
+ // Private methods
+
+ _fetchFormHistory: function(searchTerm) {
+ let deferredFormHistory = Promise.defer();
+
+ let acSearchObserver = {
+ // Implements nsIAutoCompleteSearch
+ onSearchResult: (search, result) => {
+ this._formHistoryResult = result;
+
+ if (this._request) {
+ this._remoteResultTimer = Cc["@mozilla.org/timer;1"].
+ createInstance(Ci.nsITimer);
+ this._remoteResultTimer.initWithCallback(this._onRemoteTimeout.bind(this),
+ this.remoteTimeout || REMOTE_TIMEOUT,
+ Ci.nsITimer.TYPE_ONE_SHOT);
+ }
+
+ switch (result.searchResult) {
+ case Ci.nsIAutoCompleteResult.RESULT_SUCCESS:
+ case Ci.nsIAutoCompleteResult.RESULT_NOMATCH:
+ if (result.searchString !== this._searchString) {
+ deferredFormHistory.resolve("Unexpected response, this._searchString does not match form history response");
+ return;
+ }
+ let fhEntries = [];
+ for (let i = 0; i < result.matchCount; ++i) {
+ fhEntries.push(result.getValueAt(i));
+ }
+ deferredFormHistory.resolve({
+ result: fhEntries,
+ formHistoryResult: result,
+ });
+ break;
+ case Ci.nsIAutoCompleteResult.RESULT_FAILURE:
+ case Ci.nsIAutoCompleteResult.RESULT_IGNORED:
+ deferredFormHistory.resolve("Form History returned RESULT_FAILURE or RESULT_IGNORED");
+ break;
+ }
+ },
+ };
+
+ let formHistory = Cc["@mozilla.org/autocomplete/search;1?name=form-history"].
+ createInstance(Ci.nsIAutoCompleteSearch);
+ formHistory.startSearch(searchTerm, this.formHistoryParam || DEFAULT_FORM_HISTORY_PARAM,
+ this._formHistoryResult,
+ acSearchObserver);
+ return deferredFormHistory;
+ },
+
+ /**
+ * Fetch suggestions from the search engine over the network.
+ */
+ _fetchRemote: function(searchTerm, engine, privateMode) {
+ let deferredResponse = Promise.defer();
+ this._request = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].
+ createInstance(Ci.nsIXMLHttpRequest);
+ let submission = engine.getSubmission(searchTerm,
+ SEARCH_RESPONSE_SUGGESTION_JSON);
+ let method = (submission.postData ? "POST" : "GET");
+ this._request.open(method, submission.uri.spec, true);
+ if (this._request.channel instanceof Ci.nsIPrivateBrowsingChannel) {
+ this._request.channel.setPrivate(privateMode);
+ }
+ this._request.mozBackgroundRequest = true; // suppress dialogs and fail silently
+
+ this._request.addEventListener("load", this._onRemoteLoaded.bind(this, deferredResponse));
+ this._request.addEventListener("error", (evt) => deferredResponse.resolve("HTTP error"));
+ // Reject for an abort assuming it's always from .stop() in which case we shouldn't return local
+ // or remote results for existing searches.
+ this._request.addEventListener("abort", (evt) => deferredResponse.reject("HTTP request aborted"));
+
+ this._request.send(submission.postData);
+
+ return deferredResponse;
+ },
+
+ /**
+ * Called when the request completed successfully (thought the HTTP status could be anything)
+ * so we can handle the response data.
+ * @private
+ */
+ _onRemoteLoaded: function(deferredResponse) {
+ if (!this._request) {
+ deferredResponse.resolve("Got HTTP response after the request was cancelled");
+ return;
+ }
+
+ let status, serverResults;
+ try {
+ status = this._request.status;
+ } catch (e) {
+ // The XMLHttpRequest can throw NS_ERROR_NOT_AVAILABLE.
+ deferredResponse.resolve("Unknown HTTP status: " + e);
+ return;
+ }
+
+ if (status != HTTP_OK || this._request.responseText == "") {
+ deferredResponse.resolve("Non-200 status or empty HTTP response: " + status);
+ return;
+ }
+
+ try {
+ serverResults = JSON.parse(this._request.responseText);
+ } catch(ex) {
+ deferredResponse.resolve("Failed to parse suggestion JSON: " + ex);
+ return;
+ }
+
+ if (!serverResults[0] ||
+ this._searchString.localeCompare(serverResults[0], undefined,
+ { sensitivity: "base" })) {
+ // something is wrong here so drop remote results
+ deferredResponse.resolve("Unexpected response, this._searchString does not match remote response");
+ return;
+ }
+ let results = serverResults[1] || [];
+ deferredResponse.resolve({ result: results });
+ },
+
+ /**
+ * Called when this._remoteResultTimer fires indicating the remote request took too long.
+ */
+ _onRemoteTimeout: function () {
+ this._request = null;
+
+ // FIXME: bug 387341
+ // Need to break the cycle between us and the timer.
+ this._remoteResultTimer = null;
+
+ // The XMLHTTPRequest for suggest results is taking too long
+ // so send out the form history results and cancel the request.
+ if (this._deferredRemoteResult) {
+ this._deferredRemoteResult.resolve("HTTP Timeout");
+ this._deferredRemoteResult = null;
+ }
+ },
+
+ /**
+ * @param {Array} suggestResults - an array of result objects from different sources (local or remote)
+ * @return {Object}
+ */
+ _dedupeAndReturnResults: function(suggestResults) {
+ if (this._searchString === null) {
+ // _searchString can be null if stop() was called and remote suggestions
+ // were disabled (stopping if we are fetching remote suggestions will
+ // cause a promise rejection before we reach _dedupeAndReturnResults).
+ return null;
+ }
+
+ let results = {
+ term: this._searchString,
+ remote: [],
+ local: [],
+ formHistoryResult: null,
+ };
+
+ for (let result of suggestResults) {
+ if (typeof result === "string") { // Failure message
+ Cu.reportError("SearchSuggestionController: " + result);
+ } else if (result.formHistoryResult) { // Local results have a formHistoryResult property.
+ results.formHistoryResult = result.formHistoryResult;
+ results.local = result.result || [];
+ } else { // Remote result
+ results.remote = result.result || [];
+ }
+ }
+
+ // If we have remote results, cap the number of local results
+ if (results.remote.length) {
+ results.local = results.local.slice(0, this.maxLocalResults);
+ }
+
+ // We don't want things to appear in both history and suggestions so remove entries from
+ // remote results that are already in local.
+ if (results.remote.length && results.local.length) {
+ for (let i = 0; i < results.local.length; ++i) {
+ let term = results.local[i];
+ let dupIndex = results.remote.indexOf(term);
+ if (dupIndex != -1) {
+ results.remote.splice(dupIndex, 1);
+ }
+ }
+ }
+
+ // Trim the number of results to the maximum requested (now that we've pruned dupes).
+ results.remote =
+ results.remote.slice(0, this.maxRemoteResults - results.local.length);
+
+ if (this._callback) {
+ this._callback(results);
+ }
+ this._reset();
+
+ return results;
+ },
+
+ _reset: function() {
+ this._request = null;
+ if (this._remoteResultTimer) {
+ this._remoteResultTimer.cancel();
+ this._remoteResultTimer = null;
+ }
+ this._deferredRemoteResult = null;
+ this._searchString = null;
+ },
+};
+
+/**
+ * Determines whether the given engine offers search suggestions.
+ *
+ * @param {nsISearchEngine} engine - The search engine
+ * @return {boolean} True if the engine offers suggestions and false otherwise.
+ */
+this.SearchSuggestionController.engineOffersSuggestions = function(engine) {
+ return engine.supportsResponseType(SEARCH_RESPONSE_SUGGESTION_JSON);
+};
diff --git a/toolkit/components/search/orginal/moz.build b/toolkit/components/search/orginal/moz.build
new file mode 100644
index 0000000000..4ca6790872
--- /dev/null
+++ b/toolkit/components/search/orginal/moz.build
@@ -0,0 +1,31 @@
+# -*- 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/.
+
+EXTRA_COMPONENTS += [
+ 'nsSearchSuggestions.js',
+]
+
+EXTRA_PP_COMPONENTS += [
+ 'nsSearchService.js',
+]
+
+if CONFIG['MOZ_PHOENIX'] or CONFIG['MOZ_FENNEC'] or CONFIG['MOZ_XULRUNNER']:
+ DEFINES['HAVE_SIDEBAR'] = True
+ EXTRA_COMPONENTS += [
+ 'nsSidebar.js',
+ ]
+
+EXTRA_JS_MODULES += [
+ 'SearchSuggestionController.jsm',
+]
+
+EXTRA_PP_COMPONENTS += [
+ 'toolkitsearch.manifest',
+]
+
+EXTRA_JS_MODULES += [
+ 'SearchStaticData.jsm',
+]
diff --git a/toolkit/components/search/orginal/nsSearchService.js b/toolkit/components/search/orginal/nsSearchService.js
new file mode 100644
index 0000000000..56d378b399
--- /dev/null
+++ b/toolkit/components/search/orginal/nsSearchService.js
@@ -0,0 +1,4971 @@
+# 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/.
+
+const Ci = Components.interfaces;
+const Cc = Components.classes;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+Components.utils.import("resource://gre/modules/Services.jsm");
+Components.utils.import("resource://gre/modules/Promise.jsm");
+
+XPCOMUtils.defineLazyModuleGetter(this, "AsyncShutdown",
+ "resource://gre/modules/AsyncShutdown.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "DeferredTask",
+ "resource://gre/modules/DeferredTask.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "OS",
+ "resource://gre/modules/osfile.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "Task",
+ "resource://gre/modules/Task.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "Deprecated",
+ "resource://gre/modules/Deprecated.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "SearchStaticData",
+ "resource://gre/modules/SearchStaticData.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "setTimeout",
+ "resource://gre/modules/Timer.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "clearTimeout",
+ "resource://gre/modules/Timer.jsm");
+
+XPCOMUtils.defineLazyServiceGetter(this, "gTextToSubURI",
+ "@mozilla.org/intl/texttosuburi;1",
+ "nsITextToSubURI");
+
+Cu.importGlobalProperties(["XMLHttpRequest"]);
+
+// A text encoder to UTF8, used whenever we commit the
+// engine metadata to disk.
+XPCOMUtils.defineLazyGetter(this, "gEncoder",
+ function() {
+ return new TextEncoder();
+ });
+
+const MODE_RDONLY = 0x01;
+const MODE_WRONLY = 0x02;
+const MODE_CREATE = 0x08;
+const MODE_APPEND = 0x10;
+const MODE_TRUNCATE = 0x20;
+
+// Directory service keys
+const NS_APP_SEARCH_DIR_LIST = "SrchPluginsDL";
+const NS_APP_DISTRIBUTION_SEARCH_DIR_LIST = "SrchPluginsDistDL";
+const NS_APP_USER_SEARCH_DIR = "UsrSrchPlugns";
+const NS_APP_SEARCH_DIR = "SrchPlugns";
+const NS_APP_USER_PROFILE_50_DIR = "ProfD";
+
+// Loading plugins from NS_APP_SEARCH_DIR is no longer supported.
+// Instead, we now load plugins from APP_SEARCH_PREFIX, where a
+// list.txt file needs to exist to list available engines.
+const APP_SEARCH_PREFIX = "resource://search-plugins/";
+
+// Search engine "locations". If this list is changed, be sure to update
+// the engine's _isDefault function accordingly.
+const SEARCH_APP_DIR = 1;
+const SEARCH_PROFILE_DIR = 2;
+const SEARCH_IN_EXTENSION = 3;
+const SEARCH_JAR = 4;
+
+// See documentation in nsIBrowserSearchService.idl.
+const SEARCH_ENGINE_TOPIC = "browser-search-engine-modified";
+const QUIT_APPLICATION_TOPIC = "quit-application";
+
+const SEARCH_ENGINE_REMOVED = "engine-removed";
+const SEARCH_ENGINE_ADDED = "engine-added";
+const SEARCH_ENGINE_CHANGED = "engine-changed";
+const SEARCH_ENGINE_LOADED = "engine-loaded";
+const SEARCH_ENGINE_CURRENT = "engine-current";
+const SEARCH_ENGINE_DEFAULT = "engine-default";
+
+// The following constants are left undocumented in nsIBrowserSearchService.idl
+// For the moment, they are meant for testing/debugging purposes only.
+
+/**
+ * Topic used for events involving the service itself.
+ */
+const SEARCH_SERVICE_TOPIC = "browser-search-service";
+
+/**
+ * Sent whenever metadata is fully written to disk.
+ */
+const SEARCH_SERVICE_METADATA_WRITTEN = "write-metadata-to-disk-complete";
+
+/**
+ * Sent whenever the cache is fully written to disk.
+ */
+const SEARCH_SERVICE_CACHE_WRITTEN = "write-cache-to-disk-complete";
+
+// Delay for lazy serialization (ms)
+const LAZY_SERIALIZE_DELAY = 100;
+
+// Delay for batching invalidation of the JSON cache (ms)
+const CACHE_INVALIDATION_DELAY = 1000;
+
+// Current cache version. This should be incremented if the format of the cache
+// file is modified.
+const CACHE_VERSION = 7;
+
+const ICON_DATAURL_PREFIX = "data:image/x-icon;base64,";
+
+const NEW_LINES = /(\r\n|\r|\n)/;
+
+// Set an arbitrary cap on the maximum icon size. Without this, large icons can
+// cause big delays when loading them at startup.
+const MAX_ICON_SIZE = 10000;
+
+// Default charset to use for sending search parameters. ISO-8859-1 is used to
+// match previous nsInternetSearchService behavior.
+const DEFAULT_QUERY_CHARSET = "ISO-8859-1";
+
+const SEARCH_BUNDLE = "chrome://global/locale/search/search.properties";
+const BRAND_BUNDLE = "chrome://branding/locale/brand.properties";
+
+const OPENSEARCH_NS_10 = "http://a9.com/-/spec/opensearch/1.0/";
+const OPENSEARCH_NS_11 = "http://a9.com/-/spec/opensearch/1.1/";
+
+// Although the specification at http://opensearch.a9.com/spec/1.1/description/
+// gives the namespace names defined above, many existing OpenSearch engines
+// are using the following versions. We therefore allow either.
+const OPENSEARCH_NAMESPACES = [
+ OPENSEARCH_NS_11, OPENSEARCH_NS_10,
+ "http://a9.com/-/spec/opensearchdescription/1.1/",
+ "http://a9.com/-/spec/opensearchdescription/1.0/"
+];
+
+const OPENSEARCH_LOCALNAME = "OpenSearchDescription";
+
+const MOZSEARCH_NS_10 = "http://www.mozilla.org/2006/browser/search/";
+const MOZSEARCH_LOCALNAME = "SearchPlugin";
+
+const URLTYPE_SUGGEST_JSON = "application/x-suggestions+json";
+const URLTYPE_SEARCH_HTML = "text/html";
+const URLTYPE_OPENSEARCH = "application/opensearchdescription+xml";
+
+// Empty base document used to serialize engines to file.
+const EMPTY_DOC = "<?xml version=\"1.0\"?>\n" +
+ "<" + MOZSEARCH_LOCALNAME +
+ " xmlns=\"" + MOZSEARCH_NS_10 + "\"" +
+ " xmlns:os=\"" + OPENSEARCH_NS_11 + "\"" +
+ "/>";
+
+const BROWSER_SEARCH_PREF = "browser.search.";
+const LOCALE_PREF = "general.useragent.locale";
+
+const USER_DEFINED = "{searchTerms}";
+
+// Custom search parameters
+#ifdef MOZ_OFFICIAL_BRANDING
+const MOZ_OFFICIAL = "official";
+#else
+const MOZ_OFFICIAL = "unofficial";
+#endif
+#expand const MOZ_DISTRIBUTION_ID = __MOZ_DISTRIBUTION_ID__;
+
+const MOZ_PARAM_LOCALE = /\{moz:locale\}/g;
+const MOZ_PARAM_DIST_ID = /\{moz:distributionID\}/g;
+const MOZ_PARAM_OFFICIAL = /\{moz:official\}/g;
+
+// Supported OpenSearch parameters
+// See http://opensearch.a9.com/spec/1.1/querysyntax/#core
+const OS_PARAM_USER_DEFINED = /\{searchTerms\??\}/g;
+const OS_PARAM_INPUT_ENCODING = /\{inputEncoding\??\}/g;
+const OS_PARAM_LANGUAGE = /\{language\??\}/g;
+const OS_PARAM_OUTPUT_ENCODING = /\{outputEncoding\??\}/g;
+
+// Default values
+const OS_PARAM_LANGUAGE_DEF = "*";
+const OS_PARAM_OUTPUT_ENCODING_DEF = "UTF-8";
+const OS_PARAM_INPUT_ENCODING_DEF = "UTF-8";
+
+// "Unsupported" OpenSearch parameters. For example, we don't support
+// page-based results, so if the engine requires that we send the "page index"
+// parameter, we'll always send "1".
+const OS_PARAM_COUNT = /\{count\??\}/g;
+const OS_PARAM_START_INDEX = /\{startIndex\??\}/g;
+const OS_PARAM_START_PAGE = /\{startPage\??\}/g;
+
+// Default values
+const OS_PARAM_COUNT_DEF = "20"; // 20 results
+const OS_PARAM_START_INDEX_DEF = "1"; // start at 1st result
+const OS_PARAM_START_PAGE_DEF = "1"; // 1st page
+
+// Optional parameter
+const OS_PARAM_OPTIONAL = /\{(?:\w+:)?\w+\?\}/g;
+
+// A array of arrays containing parameters that we don't fully support, and
+// their default values. We will only send values for these parameters if
+// required, since our values are just really arbitrary "guesses" that should
+// give us the output we want.
+var OS_UNSUPPORTED_PARAMS = [
+ [OS_PARAM_COUNT, OS_PARAM_COUNT_DEF],
+ [OS_PARAM_START_INDEX, OS_PARAM_START_INDEX_DEF],
+ [OS_PARAM_START_PAGE, OS_PARAM_START_PAGE_DEF],
+];
+
+// The default engine update interval, in days. This is only used if an engine
+// specifies an updateURL, but not an updateInterval.
+const SEARCH_DEFAULT_UPDATE_INTERVAL = 7;
+
+// The default interval before checking again for the name of the
+// default engine for the region, in seconds. Only used if the response
+// from the server doesn't specify an interval.
+const SEARCH_GEO_DEFAULT_UPDATE_INTERVAL = 2592000; // 30 days.
+
+this.__defineGetter__("FileUtils", function() {
+ delete this.FileUtils;
+ Components.utils.import("resource://gre/modules/FileUtils.jsm");
+ return FileUtils;
+});
+
+this.__defineGetter__("NetUtil", function() {
+ delete this.NetUtil;
+ Components.utils.import("resource://gre/modules/NetUtil.jsm");
+ return NetUtil;
+});
+
+this.__defineGetter__("gChromeReg", function() {
+ delete this.gChromeReg;
+ return this.gChromeReg = Cc["@mozilla.org/chrome/chrome-registry;1"].
+ getService(Ci.nsIChromeRegistry);
+});
+
+/**
+ * Prefixed to all search debug output.
+ */
+const SEARCH_LOG_PREFIX = "*** Search: ";
+
+/**
+ * Outputs aText to the JavaScript console as well as to stdout.
+ */
+function DO_LOG(aText) {
+ dump(SEARCH_LOG_PREFIX + aText + "\n");
+ Services.console.logStringMessage(aText);
+}
+
+#ifdef DEBUG
+/**
+ * In debug builds, use a live, pref-based (browser.search.log) LOG function
+ * to allow enabling/disabling without a restart.
+ */
+function PREF_LOG(aText) {
+ if (getBoolPref(BROWSER_SEARCH_PREF + "log", false))
+ DO_LOG(aText);
+}
+var LOG = PREF_LOG;
+
+#else
+
+/**
+ * Otherwise, don't log at all by default. This can be overridden at startup
+ * by the pref, see SearchService's _init method.
+ */
+var LOG = function(){};
+
+#endif
+
+/**
+ * Presents an assertion dialog in non-release builds and throws.
+ * @param message
+ * A message to display
+ * @param resultCode
+ * The NS_ERROR_* value to throw.
+ * @throws resultCode
+ */
+function ERROR(message, resultCode) {
+ NS_ASSERT(false, SEARCH_LOG_PREFIX + message);
+ throw Components.Exception(message, resultCode);
+}
+
+/**
+ * Logs the failure message (if browser.search.log is enabled) and throws.
+ * @param message
+ * A message to display
+ * @param resultCode
+ * The NS_ERROR_* value to throw.
+ * @throws resultCode or NS_ERROR_INVALID_ARG if resultCode isn't specified.
+ */
+function FAIL(message, resultCode) {
+ LOG(message);
+ throw Components.Exception(message, resultCode || Cr.NS_ERROR_INVALID_ARG);
+}
+
+/**
+ * Truncates big blobs of (data-)URIs to console-friendly sizes
+ * @param str
+ * String to tone down
+ * @param len
+ * Maximum length of the string to return. Defaults to the length of a tweet.
+ */
+function limitURILength(str, len) {
+ len = len || 140;
+ if (str.length > len)
+ return str.slice(0, len) + "...";
+ return str;
+}
+
+/**
+ * Ensures an assertion is met before continuing. Should be used to indicate
+ * fatal errors.
+ * @param assertion
+ * An assertion that must be met
+ * @param message
+ * A message to display if the assertion is not met
+ * @param resultCode
+ * The NS_ERROR_* value to throw if the assertion is not met
+ * @throws resultCode
+ */
+function ENSURE_WARN(assertion, message, resultCode) {
+ NS_ASSERT(assertion, SEARCH_LOG_PREFIX + message);
+ if (!assertion)
+ throw Components.Exception(message, resultCode);
+}
+
+function loadListener(aChannel, aEngine, aCallback) {
+ this._channel = aChannel;
+ this._bytes = [];
+ this._engine = aEngine;
+ this._callback = aCallback;
+}
+loadListener.prototype = {
+ _callback: null,
+ _channel: null,
+ _countRead: 0,
+ _engine: null,
+ _stream: null,
+
+ QueryInterface: function SRCH_loadQI(aIID) {
+ if (aIID.equals(Ci.nsISupports) ||
+ aIID.equals(Ci.nsIRequestObserver) ||
+ aIID.equals(Ci.nsIStreamListener) ||
+ aIID.equals(Ci.nsIChannelEventSink) ||
+ aIID.equals(Ci.nsIInterfaceRequestor) ||
+ // See FIXME comment below
+ aIID.equals(Ci.nsIHttpEventSink) ||
+ aIID.equals(Ci.nsIProgressEventSink) ||
+ false)
+ return this;
+
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ },
+
+ // nsIRequestObserver
+ onStartRequest: function SRCH_loadStartR(aRequest, aContext) {
+ LOG("loadListener: Starting request: " + aRequest.name);
+ this._stream = Cc["@mozilla.org/binaryinputstream;1"].
+ createInstance(Ci.nsIBinaryInputStream);
+ },
+
+ onStopRequest: function SRCH_loadStopR(aRequest, aContext, aStatusCode) {
+ LOG("loadListener: Stopping request: " + aRequest.name);
+
+ var requestFailed = !Components.isSuccessCode(aStatusCode);
+ if (!requestFailed && (aRequest instanceof Ci.nsIHttpChannel))
+ requestFailed = !aRequest.requestSucceeded;
+
+ if (requestFailed || this._countRead == 0) {
+ LOG("loadListener: request failed!");
+ // send null so the callback can deal with the failure
+ this._callback(null, this._engine);
+ } else
+ this._callback(this._bytes, this._engine);
+ this._channel = null;
+ this._engine = null;
+ },
+
+ // nsIStreamListener
+ onDataAvailable: function SRCH_loadDAvailable(aRequest, aContext,
+ aInputStream, aOffset,
+ aCount) {
+ this._stream.setInputStream(aInputStream);
+
+ // Get a byte array of the data
+ this._bytes = this._bytes.concat(this._stream.readByteArray(aCount));
+ this._countRead += aCount;
+ },
+
+ // nsIChannelEventSink
+ asyncOnChannelRedirect: function SRCH_loadCRedirect(aOldChannel, aNewChannel,
+ aFlags, callback) {
+ this._channel = aNewChannel;
+ callback.onRedirectVerifyCallback(Components.results.NS_OK);
+ },
+
+ // nsIInterfaceRequestor
+ getInterface: function SRCH_load_GI(aIID) {
+ return this.QueryInterface(aIID);
+ },
+
+ // FIXME: bug 253127
+ // nsIHttpEventSink
+ onRedirect: function (aChannel, aNewChannel) {},
+ // nsIProgressEventSink
+ onProgress: function (aRequest, aContext, aProgress, aProgressMax) {},
+ onStatus: function (aRequest, aContext, aStatus, aStatusArg) {}
+}
+
+function isPartnerBuild() {
+ try {
+ let distroID = Services.prefs.getCharPref("distribution.id");
+
+ // Mozilla-provided builds (i.e. funnelcake) are not partner builds
+ if (distroID && !distroID.startsWith("mozilla")) {
+ return true;
+ }
+ } catch (e) {}
+
+ return false;
+}
+
+// Method to determine if we should be using geo-specific defaults
+function geoSpecificDefaultsEnabled() {
+ let geoSpecificDefaults = false;
+ try {
+ geoSpecificDefaults = Services.prefs.getBoolPref("browser.search.geoSpecificDefaults");
+ } catch(e) {}
+
+ return geoSpecificDefaults;
+}
+
+// Some notes on countryCode and region prefs:
+// * A "countryCode" pref is set via a geoip lookup. It always reflects the
+// result of that geoip request.
+// * A "region" pref, once set, is the region actually used for search. In
+// most cases it will be identical to the countryCode pref.
+// * The value of "region" and "countryCode" will only not agree in one edge
+// case - 34/35 users who have previously been configured to use US defaults
+// based purely on a timezone check will have "region" forced to US,
+// regardless of what countryCode geoip returns.
+// * We may want to know if we are in the US before we have *either*
+// countryCode or region - in which case we fallback to a timezone check,
+// but we don't persist that value anywhere in the expectation we will
+// eventually get a countryCode/region.
+
+// A method that "migrates" prefs if necessary.
+function migrateRegionPrefs() {
+ // If we already have a "region" pref there's nothing to do.
+ if (Services.prefs.prefHasUserValue("browser.search.region")) {
+ return;
+ }
+
+ // If we have 'isUS' but no 'countryCode' then we are almost certainly
+ // a profile from Fx 34/35 that set 'isUS' based purely on a timezone
+ // check. If this said they were US, we force region to be US.
+ // (But if isUS was false, we leave region alone - we will do a geoip request
+ // and set the region accordingly)
+ try {
+ if (Services.prefs.getBoolPref("browser.search.isUS") &&
+ !Services.prefs.prefHasUserValue("browser.search.countryCode")) {
+ Services.prefs.setCharPref("browser.search.region", "US");
+ }
+ } catch (ex) {
+ // no isUS pref, nothing to do.
+ }
+ // If we have a countryCode pref but no region pref, just force region
+ // to be the countryCode.
+ try {
+ let countryCode = Services.prefs.getCharPref("browser.search.countryCode");
+ if (!Services.prefs.prefHasUserValue("browser.search.region")) {
+ Services.prefs.setCharPref("browser.search.region", countryCode);
+ }
+ } catch (ex) {
+ // no countryCode pref, nothing to do.
+ }
+}
+
+// A method to determine if we are in the United States (US) for the search
+// service.
+// It uses a browser.search.region pref (which typically comes from a geoip
+// request) or if that doesn't exist, falls back to a hacky timezone check.
+function getIsUS() {
+ // Regardless of the region or countryCode, non en-US builds are not
+ // considered to be in the US from the POV of the search service.
+ if (getLocale() != "en-US") {
+ return false;
+ }
+
+ // If we've got a region pref, trust it.
+ try {
+ return Services.prefs.getCharPref("browser.search.region") == "US";
+ } catch(e) {}
+
+ // So we are en-US but have no region pref - fallback to hacky timezone check.
+ let isNA = isUSTimezone();
+ LOG("getIsUS() fell back to a timezone check with the result=" + isNA);
+ return isNA;
+}
+
+// Helper method to modify preference keys with geo-specific modifiers, if needed.
+function getGeoSpecificPrefName(basepref) {
+ if (!geoSpecificDefaultsEnabled() || isPartnerBuild())
+ return basepref;
+ if (getIsUS())
+ return basepref + ".US";
+ return basepref;
+}
+
+// A method that tries to determine if this user is in a US geography.
+function isUSTimezone() {
+ // Timezone assumptions! We assume that if the system clock's timezone is
+ // between Newfoundland and Hawaii, that the user is in North America.
+
+ // This includes all of South America as well, but we have relatively few
+ // en-US users there, so that's OK.
+
+ // 150 minutes = 2.5 hours (UTC-2.5), which is
+ // Newfoundland Daylight Time (http://www.timeanddate.com/time/zones/ndt)
+
+ // 600 minutes = 10 hours (UTC-10), which is
+ // Hawaii-Aleutian Standard Time (http://www.timeanddate.com/time/zones/hast)
+
+ let UTCOffset = (new Date()).getTimezoneOffset();
+ return UTCOffset >= 150 && UTCOffset <= 600;
+}
+
+// A less hacky method that tries to determine our country-code via an XHR
+// geoip lookup.
+// If this succeeds and we are using an en-US locale, we set the pref used by
+// the hacky method above, so isUS() can avoid the hacky timezone method.
+// If it fails we don't touch that pref so isUS() does its normal thing.
+var ensureKnownCountryCode = Task.async(function* () {
+ // If we have a country-code already stored in our prefs we trust it.
+ let countryCode;
+ try {
+ countryCode = Services.prefs.getCharPref("browser.search.countryCode");
+ } catch(e) {}
+
+ if (!countryCode) {
+ // We don't have it cached, so fetch it. fetchCountryCode() will call
+ // storeCountryCode if it gets a result (even if that happens after the
+ // promise resolves) and fetchRegionDefault.
+ yield fetchCountryCode();
+ } else {
+ // if nothing to do, return early.
+ if (!geoSpecificDefaultsEnabled())
+ return;
+
+ let expir = engineMetadataService.getGlobalAttr("searchDefaultExpir") || 0;
+ if (expir > Date.now()) {
+ // The territory default we have already fetched hasn't expired yet.
+ // If we have a default engine or a list of visible default engines
+ // saved, the hashes should be valid, verify them now so that we can
+ // refetch if they have been tampered with.
+ let defaultEngine = engineMetadataService.getGlobalAttr("searchDefault");
+ let visibleDefaultEngines =
+ engineMetadataService.getGlobalAttr("visibleDefaultEngines");
+ if ((!defaultEngine || engineMetadataService.getGlobalAttr("searchDefaultHash") == getVerificationHash(defaultEngine)) &&
+ (!visibleDefaultEngines ||
+ engineMetadataService.getGlobalAttr("visibleDefaultEnginesHash") == getVerificationHash(visibleDefaultEngines))) {
+ // No geo defaults, or valid hashes; nothing to do.
+ return;
+ }
+ }
+
+ yield new Promise(resolve => {
+ let timeoutMS = Services.prefs.getIntPref("browser.search.geoip.timeout");
+ let timerId = setTimeout(() => {
+ timerId = null;
+ resolve();
+ }, timeoutMS);
+
+ let callback = () => {
+ clearTimeout(timerId);
+ resolve();
+ };
+ fetchRegionDefault().then(callback).catch(err => {
+ Components.utils.reportError(err);
+ callback();
+ });
+ });
+ }
+});
+
+// Store the result of the geoip request as well as any other values and
+// telemetry which depend on it.
+function storeCountryCode(cc) {
+ // Set the country-code itself.
+ Services.prefs.setCharPref("browser.search.countryCode", cc);
+ // And set the region pref if we don't already have a value.
+ if (!Services.prefs.prefHasUserValue("browser.search.region")) {
+ Services.prefs.setCharPref("browser.search.region", cc);
+ }
+ // and telemetry...
+ let isTimezoneUS = isUSTimezone();
+ // telemetry to compare our geoip response with platform-specific country data.
+ // On Mac and Windows, we can get a country code via sysinfo
+ let platformCC = Services.sysinfo.get("countryCode");
+ if (platformCC) {
+ let probeUSMismatched, probeNonUSMismatched;
+ switch (Services.appinfo.OS) {
+ case "Darwin":
+ probeUSMismatched = "SEARCH_SERVICE_US_COUNTRY_MISMATCHED_PLATFORM_OSX";
+ probeNonUSMismatched = "SEARCH_SERVICE_NONUS_COUNTRY_MISMATCHED_PLATFORM_OSX";
+ break;
+ case "WINNT":
+ probeUSMismatched = "SEARCH_SERVICE_US_COUNTRY_MISMATCHED_PLATFORM_WIN";
+ probeNonUSMismatched = "SEARCH_SERVICE_NONUS_COUNTRY_MISMATCHED_PLATFORM_WIN";
+ break;
+ default:
+ Cu.reportError("Platform " + Services.appinfo.OS + " has system country code but no search service telemetry probes");
+ break;
+ }
+ }
+}
+
+// Get the country we are in via a XHR geoip request.
+function fetchCountryCode() {
+ // values for the SEARCH_SERVICE_COUNTRY_FETCH_RESULT 'enum' telemetry probe.
+ const TELEMETRY_RESULT_ENUM = {
+ SUCCESS: 0,
+ SUCCESS_WITHOUT_DATA: 1,
+ XHRTIMEOUT: 2,
+ ERROR: 3,
+ // Note that we expect to add finer-grained error types here later (eg,
+ // dns error, network error, ssl error, etc) with .ERROR remaining as the
+ // generic catch-all that doesn't fit into other categories.
+ };
+ let endpoint = Services.urlFormatter.formatURLPref("browser.search.geoip.url");
+ LOG("_fetchCountryCode starting with endpoint " + endpoint);
+ // As an escape hatch, no endpoint means no geoip.
+ if (!endpoint) {
+ return Promise.resolve();
+ }
+ let startTime = Date.now();
+ return new Promise(resolve => {
+ // Instead of using a timeout on the xhr object itself, we simulate one
+ // using a timer and let the XHR request complete. This allows us to
+ // capture reliable telemetry on what timeout value should actually be
+ // used to ensure most users don't see one while not making it so large
+ // that many users end up doing a sync init of the search service and thus
+ // would see the jank that implies.
+ // (Note we do actually use a timeout on the XHR, but that's set to be a
+ // large value just incase the request never completes - we don't want the
+ // XHR object to live forever)
+ let timeoutMS = Services.prefs.getIntPref("browser.search.geoip.timeout");
+ let geoipTimeoutPossible = true;
+ let timerId = setTimeout(() => {
+ LOG("_fetchCountryCode: timeout fetching country information");
+ timerId = null;
+ resolve();
+ }, timeoutMS);
+
+ let resolveAndReportSuccess = (result, reason) => {
+ // Even if we timed out, we want to save the country code and everything
+ // related so next startup sees the value and doesn't retry this dance.
+ if (result) {
+ storeCountryCode(result);
+ }
+
+ // This notification is just for tests...
+ Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "geoip-lookup-xhr-complete");
+
+ if (timerId) {
+ geoipTimeoutPossible = false;
+ }
+
+ let callback = () => {
+ // If we've already timed out then we've already resolved the promise,
+ // so there's nothing else to do.
+ if (timerId == null) {
+ return;
+ }
+ clearTimeout(timerId);
+ resolve();
+ };
+
+ if (result && geoSpecificDefaultsEnabled()) {
+ fetchRegionDefault().then(callback).catch(err => {
+ Components.utils.reportError(err);
+ callback();
+ });
+ } else {
+ callback();
+ }
+ };
+
+ let request = new XMLHttpRequest();
+ // This notification is just for tests...
+ Services.obs.notifyObservers(request, SEARCH_SERVICE_TOPIC, "geoip-lookup-xhr-starting");
+ request.timeout = 100000; // 100 seconds as the last-chance fallback
+ request.onload = function(event) {
+ let took = Date.now() - startTime;
+ let cc = event.target.response && event.target.response.country_code;
+ LOG("_fetchCountryCode got success response in " + took + "ms: " + cc);
+ let reason = cc ? TELEMETRY_RESULT_ENUM.SUCCESS : TELEMETRY_RESULT_ENUM.SUCCESS_WITHOUT_DATA;
+ resolveAndReportSuccess(cc, reason);
+ };
+ request.ontimeout = function(event) {
+ LOG("_fetchCountryCode: XHR finally timed-out fetching country information");
+ resolveAndReportSuccess(null, TELEMETRY_RESULT_ENUM.XHRTIMEOUT);
+ };
+ request.onerror = function(event) {
+ LOG("_fetchCountryCode: failed to retrieve country information");
+ resolveAndReportSuccess(null, TELEMETRY_RESULT_ENUM.ERROR);
+ };
+ request.open("POST", endpoint, true);
+ request.setRequestHeader("Content-Type", "application/json");
+ request.responseType = "json";
+ request.send("{}");
+ });
+}
+
+// This will make an HTTP request to a Mozilla server that will return
+// JSON data telling us what engine should be set as the default for
+// the current region, and how soon we should check again.
+//
+// The optional cohort value returned by the server is to be kept locally
+// and sent to the server the next time we ping it. It lets the server
+// identify profiles that have been part of a specific experiment.
+//
+// This promise may take up to 100s to resolve, it's the caller's
+// responsibility to ensure with a timer that we are not going to
+// block the async init for too long.
+var fetchRegionDefault = () => new Promise(resolve => {
+ let urlTemplate = Services.prefs.getDefaultBranch(BROWSER_SEARCH_PREF)
+ .getCharPref("geoSpecificDefaults.url");
+ let endpoint = Services.urlFormatter.formatURL(urlTemplate);
+
+ // As an escape hatch, no endpoint means no region specific defaults.
+ if (!endpoint) {
+ resolve();
+ return;
+ }
+
+ // Append the optional cohort value.
+ const cohortPref = "browser.search.cohort";
+ let cohort;
+ try {
+ cohort = Services.prefs.getCharPref(cohortPref);
+ } catch(e) {}
+ if (cohort)
+ endpoint += "/" + cohort;
+
+ LOG("fetchRegionDefault starting with endpoint " + endpoint);
+
+ let startTime = Date.now();
+ let request = new XMLHttpRequest();
+ request.timeout = 100000; // 100 seconds as the last-chance fallback
+ request.onload = function(event) {
+ let took = Date.now() - startTime;
+
+ let status = event.target.status;
+ if (status != 200) {
+ LOG("fetchRegionDefault failed with HTTP code " + status);
+ let retryAfter = request.getResponseHeader("retry-after");
+ if (retryAfter) {
+ engineMetadataService.setGlobalAttr("searchDefaultExpir",
+ Date.now() + retryAfter * 1000);
+ }
+ resolve();
+ return;
+ }
+
+ let response = event.target.response || {};
+ LOG("received " + response.toSource());
+
+ if (response.cohort) {
+ Services.prefs.setCharPref(cohortPref, response.cohort);
+ } else {
+ Services.prefs.clearUserPref(cohortPref);
+ }
+
+ if (response.settings && response.settings.searchDefault) {
+ let defaultEngine = response.settings.searchDefault;
+ engineMetadataService.setGlobalAttr("searchDefault", defaultEngine);
+ let hash = getVerificationHash(defaultEngine);
+ LOG("fetchRegionDefault saved searchDefault: " + defaultEngine +
+ " with verification hash: " + hash);
+ engineMetadataService.setGlobalAttr("searchDefaultHash", hash);
+ }
+
+ if (response.settings && response.settings.visibleDefaultEngines) {
+ let visibleDefaultEngines = response.settings.visibleDefaultEngines;
+ let string = visibleDefaultEngines.join(",");
+ engineMetadataService.setGlobalAttr("visibleDefaultEngines", string);
+ let hash = getVerificationHash(string);
+ LOG("fetchRegionDefault saved visibleDefaultEngines: " + string +
+ " with verification hash: " + hash);
+ engineMetadataService.setGlobalAttr("visibleDefaultEnginesHash", hash);
+ }
+
+ let interval = response.interval || SEARCH_GEO_DEFAULT_UPDATE_INTERVAL;
+ let milliseconds = interval * 1000; // |interval| is in seconds.
+ engineMetadataService.setGlobalAttr("searchDefaultExpir",
+ Date.now() + milliseconds);
+
+ LOG("fetchRegionDefault got success response in " + took + "ms");
+ resolve();
+ };
+ request.ontimeout = function(event) {
+ LOG("fetchRegionDefault: XHR finally timed-out");
+ resolve();
+ };
+ request.onerror = function(event) {
+ LOG("fetchRegionDefault: failed to retrieve territory default information");
+ resolve();
+ };
+ request.open("GET", endpoint, true);
+ request.setRequestHeader("Content-Type", "application/json");
+ request.responseType = "json";
+ request.send();
+});
+
+function getVerificationHash(aName) {
+ let disclaimer = "By modifying this file, I agree that I am doing so " +
+ "only within $appName itself, using official, user-driven search " +
+ "engine selection processes, and in a way which does not circumvent " +
+ "user consent. I acknowledge that any attempt to change this file " +
+ "from outside of $appName is a malicious act, and will be responded " +
+ "to accordingly."
+
+ let salt = OS.Path.basename(OS.Constants.Path.profileDir) + aName +
+ disclaimer.replace(/\$appName/g, Services.appinfo.name);
+
+ let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
+ .createInstance(Ci.nsIScriptableUnicodeConverter);
+ converter.charset = "UTF-8";
+
+ // Data is an array of bytes.
+ let data = converter.convertToByteArray(salt, {});
+ let hasher = Cc["@mozilla.org/security/hash;1"]
+ .createInstance(Ci.nsICryptoHash);
+ hasher.init(hasher.SHA256);
+ hasher.update(data, data.length);
+
+ return hasher.finish(true);
+}
+
+/**
+ * Safely close a nsISafeOutputStream.
+ * @param aFOS
+ * The file output stream to close.
+ */
+function closeSafeOutputStream(aFOS) {
+ if (aFOS instanceof Ci.nsISafeOutputStream) {
+ try {
+ aFOS.finish();
+ return;
+ } catch (e) { }
+ }
+ aFOS.close();
+}
+
+/**
+ * Wrapper function for nsIIOService::newURI.
+ * @param aURLSpec
+ * The URL string from which to create an nsIURI.
+ * @returns an nsIURI object, or null if the creation of the URI failed.
+ */
+function makeURI(aURLSpec, aCharset) {
+ try {
+ return NetUtil.newURI(aURLSpec, aCharset);
+ } catch (ex) { }
+
+ return null;
+}
+
+/**
+ * Wrapper function for nsIIOService::newChannel2.
+ * @param url
+ * The URL string from which to create an nsIChannel.
+ * @returns an nsIChannel object, or null if the url is invalid.
+ */
+function makeChannel(url) {
+ try {
+ return NetUtil.newChannel({uri: url, loadUsingSystemPrincipal: true});
+ } catch (ex) { }
+
+ return null;
+}
+
+/**
+ * Gets a directory from the directory service.
+ * @param aKey
+ * The directory service key indicating the directory to get.
+ */
+function getDir(aKey, aIFace) {
+ if (!aKey)
+ FAIL("getDir requires a directory key!");
+
+ return Services.dirsvc.get(aKey, aIFace || Ci.nsIFile);
+}
+
+/**
+ * Gets the current value of the locale. It's possible for this preference to
+ * be localized, so we have to do a little extra work here. Similar code
+ * exists in nsHttpHandler.cpp when building the UA string.
+ */
+function getLocale() {
+ let locale = getLocalizedPref(LOCALE_PREF);
+ if (locale)
+ return locale;
+
+ // Not localized.
+ return Services.prefs.getCharPref(LOCALE_PREF);
+}
+
+/**
+ * Wrapper for nsIPrefBranch::getComplexValue.
+ * @param aPrefName
+ * The name of the pref to get.
+ * @returns aDefault if the requested pref doesn't exist.
+ */
+function getLocalizedPref(aPrefName, aDefault) {
+ const nsIPLS = Ci.nsIPrefLocalizedString;
+ try {
+ return Services.prefs.getComplexValue(aPrefName, nsIPLS).data;
+ } catch (ex) {}
+
+ return aDefault;
+}
+
+/**
+ * Wrapper for nsIPrefBranch::setComplexValue.
+ * @param aPrefName
+ * The name of the pref to set.
+ */
+function setLocalizedPref(aPrefName, aValue) {
+ const nsIPLS = Ci.nsIPrefLocalizedString;
+ try {
+ var pls = Components.classes["@mozilla.org/pref-localizedstring;1"]
+ .createInstance(Ci.nsIPrefLocalizedString);
+ pls.data = aValue;
+ Services.prefs.setComplexValue(aPrefName, nsIPLS, pls);
+ } catch (ex) {}
+}
+
+/**
+ * Wrapper for nsIPrefBranch::getBoolPref.
+ * @param aPrefName
+ * The name of the pref to get.
+ * @returns aDefault if the requested pref doesn't exist.
+ */
+function getBoolPref(aName, aDefault) {
+ if (Services.prefs.getPrefType(aName) != Ci.nsIPrefBranch.PREF_BOOL)
+ return aDefault;
+ return Services.prefs.getBoolPref(aName);
+}
+
+/**
+ * Get a unique nsIFile object with a sanitized name, based on the engine name.
+ * @param aName
+ * A name to "sanitize". Can be an empty string, in which case a random
+ * 8 character filename will be produced.
+ * @returns A nsIFile object in the user's search engines directory with a
+ * unique sanitized name.
+ */
+function getSanitizedFile(aName) {
+ var fileName = sanitizeName(aName) + ".xml";
+ var file = getDir(NS_APP_USER_SEARCH_DIR);
+ file.append(fileName);
+ file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE);
+ return file;
+}
+
+/**
+ * @return a sanitized name to be used as a filename, or a random name
+ * if a sanitized name cannot be obtained (if aName contains
+ * no valid characters).
+ */
+function sanitizeName(aName) {
+ const maxLength = 60;
+ const minLength = 1;
+ var name = aName.toLowerCase();
+ name = name.replace(/\s+/g, "-");
+ name = name.replace(/[^-a-z0-9]/g, "");
+
+ // Use a random name if our input had no valid characters.
+ if (name.length < minLength)
+ name = Math.random().toString(36).replace(/^.*\./, '');
+
+ // Force max length.
+ return name.substring(0, maxLength);
+}
+
+/**
+ * Retrieve a pref from the search param branch.
+ *
+ * @param prefName
+ * The name of the pref.
+ **/
+function getMozParamPref(prefName) {
+ return Services.prefs.getCharPref(BROWSER_SEARCH_PREF + "param." + prefName);
+}
+
+/**
+ * Notifies watchers of SEARCH_ENGINE_TOPIC about changes to an engine or to
+ * the state of the search service.
+ *
+ * @param aEngine
+ * The nsISearchEngine object to which the change applies.
+ * @param aVerb
+ * A verb describing the change.
+ *
+ * @see nsIBrowserSearchService.idl
+ */
+var gInitialized = false;
+function notifyAction(aEngine, aVerb) {
+ if (gInitialized) {
+ LOG("NOTIFY: Engine: \"" + aEngine.name + "\"; Verb: \"" + aVerb + "\"");
+ Services.obs.notifyObservers(aEngine, SEARCH_ENGINE_TOPIC, aVerb);
+ }
+}
+
+function parseJsonFromStream(aInputStream) {
+ const json = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
+ const data = json.decodeFromStream(aInputStream, aInputStream.available());
+ return data;
+}
+
+/**
+ * Simple object representing a name/value pair.
+ */
+function QueryParameter(aName, aValue, aPurpose) {
+ if (!aName || (aValue == null))
+ FAIL("missing name or value for QueryParameter!");
+
+ this.name = aName;
+ this.value = aValue;
+ this.purpose = aPurpose;
+}
+
+/**
+ * Perform OpenSearch parameter substitution on aParamValue.
+ *
+ * @param aParamValue
+ * A string containing OpenSearch search parameters.
+ * @param aSearchTerms
+ * The user-provided search terms. This string will inserted into
+ * aParamValue as the value of the OS_PARAM_USER_DEFINED parameter.
+ * This value must already be escaped appropriately - it is inserted
+ * as-is.
+ * @param aEngine
+ * The engine which owns the string being acted on.
+ *
+ * @see http://opensearch.a9.com/spec/1.1/querysyntax/#core
+ */
+function ParamSubstitution(aParamValue, aSearchTerms, aEngine) {
+ var value = aParamValue;
+
+ var distributionID = MOZ_DISTRIBUTION_ID;
+ try {
+ distributionID = Services.prefs.getCharPref(BROWSER_SEARCH_PREF + "distributionID");
+ }
+ catch (ex) { }
+ var official = MOZ_OFFICIAL;
+ try {
+ if (Services.prefs.getBoolPref(BROWSER_SEARCH_PREF + "official"))
+ official = "official";
+ else
+ official = "unofficial";
+ }
+ catch (ex) { }
+
+ // Custom search parameters. These are only available to default search
+ // engines.
+ if (aEngine._isDefault) {
+ value = value.replace(MOZ_PARAM_LOCALE, getLocale());
+ value = value.replace(MOZ_PARAM_DIST_ID, distributionID);
+ value = value.replace(MOZ_PARAM_OFFICIAL, official);
+ }
+
+ // Insert the OpenSearch parameters we're confident about
+ value = value.replace(OS_PARAM_USER_DEFINED, aSearchTerms);
+ value = value.replace(OS_PARAM_INPUT_ENCODING, aEngine.queryCharset);
+ value = value.replace(OS_PARAM_LANGUAGE,
+ getLocale() || OS_PARAM_LANGUAGE_DEF);
+ value = value.replace(OS_PARAM_OUTPUT_ENCODING,
+ OS_PARAM_OUTPUT_ENCODING_DEF);
+
+ // Replace any optional parameters
+ value = value.replace(OS_PARAM_OPTIONAL, "");
+
+ // Insert any remaining required params with our default values
+ for (var i = 0; i < OS_UNSUPPORTED_PARAMS.length; ++i) {
+ value = value.replace(OS_UNSUPPORTED_PARAMS[i][0],
+ OS_UNSUPPORTED_PARAMS[i][1]);
+ }
+
+ return value;
+}
+
+/**
+ * Creates an engineURL object, which holds the query URL and all parameters.
+ *
+ * @param aType
+ * A string containing the name of the MIME type of the search results
+ * returned by this URL.
+ * @param aMethod
+ * The HTTP request method. Must be a case insensitive value of either
+ * "GET" or "POST".
+ * @param aTemplate
+ * The URL to which search queries should be sent. For GET requests,
+ * must contain the string "{searchTerms}", to indicate where the user
+ * entered search terms should be inserted.
+ * @param aResultDomain
+ * The root domain for this URL. Defaults to the template's host.
+ *
+ * @see http://opensearch.a9.com/spec/1.1/querysyntax/#urltag
+ *
+ * @throws NS_ERROR_NOT_IMPLEMENTED if aType is unsupported.
+ */
+function EngineURL(aType, aMethod, aTemplate, aResultDomain) {
+ if (!aType || !aMethod || !aTemplate)
+ FAIL("missing type, method or template for EngineURL!");
+
+ var method = aMethod.toUpperCase();
+ var type = aType.toLowerCase();
+
+ if (method != "GET" && method != "POST")
+ FAIL("method passed to EngineURL must be \"GET\" or \"POST\"");
+
+ this.type = type;
+ this.method = method;
+ this.params = [];
+ this.rels = [];
+ // Don't serialize expanded mozparams
+ this.mozparams = {};
+
+ var templateURI = makeURI(aTemplate);
+ if (!templateURI)
+ FAIL("new EngineURL: template is not a valid URI!", Cr.NS_ERROR_FAILURE);
+
+ switch (templateURI.scheme) {
+ case "http":
+ case "https":
+ // Disable these for now, see bug 295018
+ // case "file":
+ // case "resource":
+ this.template = aTemplate;
+ break;
+ default:
+ FAIL("new EngineURL: template uses invalid scheme!", Cr.NS_ERROR_FAILURE);
+ }
+
+ // If no resultDomain was specified in the engine definition file, use the
+ // host from the template.
+ this.resultDomain = aResultDomain || templateURI.host;
+ // We never want to return a "www." prefix, so eventually strip it.
+ if (this.resultDomain.startsWith("www.")) {
+ this.resultDomain = this.resultDomain.substr(4);
+ }
+}
+EngineURL.prototype = {
+
+ addParam: function SRCH_EURL_addParam(aName, aValue, aPurpose) {
+ this.params.push(new QueryParameter(aName, aValue, aPurpose));
+ },
+
+ // Note: This method requires that aObj has a unique name or the previous MozParams entry with
+ // that name will be overwritten.
+ _addMozParam: function SRCH_EURL__addMozParam(aObj) {
+ aObj.mozparam = true;
+ this.mozparams[aObj.name] = aObj;
+ },
+
+ getSubmission: function SRCH_EURL_getSubmission(aSearchTerms, aEngine, aPurpose) {
+ var url = ParamSubstitution(this.template, aSearchTerms, aEngine);
+ // Default to an empty string if the purpose is not provided so that default purpose params
+ // (purpose="") work consistently rather than having to define "null" and "" purposes.
+ var purpose = aPurpose || "";
+
+ // If the 'system' purpose isn't defined in the plugin, fallback to 'searchbar'.
+ if (purpose == "system" && !this.params.some(p => p.purpose == "system"))
+ purpose = "searchbar";
+
+ // Create an application/x-www-form-urlencoded representation of our params
+ // (name=value&name=value&name=value)
+ var dataString = "";
+ for (var i = 0; i < this.params.length; ++i) {
+ var param = this.params[i];
+
+ // If this parameter has a purpose, only add it if the purpose matches
+ if (param.purpose !== undefined && param.purpose != purpose)
+ continue;
+
+ var value = ParamSubstitution(param.value, aSearchTerms, aEngine);
+
+ dataString += (i > 0 ? "&" : "") + param.name + "=" + value;
+ }
+
+ var postData = null;
+ if (this.method == "GET") {
+ // GET method requests have no post data, and append the encoded
+ // query string to the url...
+ if (url.indexOf("?") == -1 && dataString)
+ url += "?";
+ url += dataString;
+ } else if (this.method == "POST") {
+ // POST method requests must wrap the encoded text in a MIME
+ // stream and supply that as POSTDATA.
+ var stringStream = Cc["@mozilla.org/io/string-input-stream;1"].
+ createInstance(Ci.nsIStringInputStream);
+ stringStream.data = dataString;
+
+ postData = Cc["@mozilla.org/network/mime-input-stream;1"].
+ createInstance(Ci.nsIMIMEInputStream);
+ postData.addHeader("Content-Type", "application/x-www-form-urlencoded");
+ postData.addContentLength = true;
+ postData.setData(stringStream);
+ }
+
+ return new Submission(makeURI(url), postData);
+ },
+
+ _getTermsParameterName: function SRCH_EURL__getTermsParameterName() {
+ let queryParam = this.params.find(p => p.value == USER_DEFINED);
+ return queryParam ? queryParam.name : "";
+ },
+
+ _hasRelation: function SRC_EURL__hasRelation(aRel) {
+ return this.rels.some(e => e == aRel.toLowerCase());
+ },
+
+ _initWithJSON: function SRC_EURL__initWithJSON(aJson, aEngine) {
+ if (!aJson.params)
+ return;
+
+ this.rels = aJson.rels;
+
+ for (let i = 0; i < aJson.params.length; ++i) {
+ let param = aJson.params[i];
+ if (param.mozparam) {
+ if (param.condition == "pref") {
+ let value = getMozParamPref(param.pref);
+ this.addParam(param.name, value);
+ }
+ this._addMozParam(param);
+ }
+ else
+ this.addParam(param.name, param.value, param.purpose);
+ }
+ },
+
+ /**
+ * Creates a JavaScript object that represents this URL.
+ * @returns An object suitable for serialization as JSON.
+ **/
+ toJSON: function SRCH_EURL_toJSON() {
+ var json = {
+ template: this.template,
+ rels: this.rels,
+ resultDomain: this.resultDomain
+ };
+
+ if (this.type != URLTYPE_SEARCH_HTML)
+ json.type = this.type;
+ if (this.method != "GET")
+ json.method = this.method;
+
+ function collapseMozParams(aParam) {
+ return this.mozparams[aParam.name] || aParam;
+ }
+ json.params = this.params.map(collapseMozParams, this);
+
+ return json;
+ },
+
+ /**
+ * Serializes the engine object to a OpenSearch Url element.
+ * @param aDoc
+ * The document to use to create the Url element.
+ * @param aElement
+ * The element to which the created Url element is appended.
+ *
+ * @see http://opensearch.a9.com/spec/1.1/querysyntax/#urltag
+ */
+ _serializeToElement: function SRCH_EURL_serializeToEl(aDoc, aElement) {
+ var url = aDoc.createElementNS(OPENSEARCH_NS_11, "Url");
+ url.setAttribute("type", this.type);
+ url.setAttribute("method", this.method);
+ url.setAttribute("template", this.template);
+ if (this.rels.length)
+ url.setAttribute("rel", this.rels.join(" "));
+ if (this.resultDomain)
+ url.setAttribute("resultDomain", this.resultDomain);
+
+ for (var i = 0; i < this.params.length; ++i) {
+ var param = aDoc.createElementNS(OPENSEARCH_NS_11, "Param");
+ param.setAttribute("name", this.params[i].name);
+ param.setAttribute("value", this.params[i].value);
+ url.appendChild(aDoc.createTextNode("\n "));
+ url.appendChild(param);
+ }
+ url.appendChild(aDoc.createTextNode("\n"));
+ aElement.appendChild(url);
+ }
+};
+
+/**
+ * nsISearchEngine constructor.
+ * @param aLocation
+ * A nsILocalFile or nsIURI object representing the location of the
+ * search engine data file.
+ * @param aIsReadOnly
+ * Boolean indicating whether the engine should be treated as read-only.
+ * Read only engines cannot be serialized to file.
+ */
+function Engine(aLocation, aIsReadOnly) {
+ this._readOnly = aIsReadOnly;
+ this._urls = [];
+
+ if (aLocation.type) {
+ if (aLocation.type == "filePath")
+ this._file = aLocation.value;
+ else if (aLocation.type == "uri")
+ this._uri = aLocation.value;
+ } else if (aLocation instanceof Ci.nsILocalFile) {
+ // we already have a file (e.g. loading engines from disk)
+ this._file = aLocation;
+ } else if (aLocation instanceof Ci.nsIURI) {
+ switch (aLocation.scheme) {
+ case "https":
+ case "http":
+ case "ftp":
+ case "data":
+ case "file":
+ case "resource":
+ case "chrome":
+ this._uri = aLocation;
+ break;
+ default:
+ ERROR("Invalid URI passed to the nsISearchEngine constructor",
+ Cr.NS_ERROR_INVALID_ARG);
+ }
+ } else
+ ERROR("Engine location is neither a File nor a URI object",
+ Cr.NS_ERROR_INVALID_ARG);
+}
+
+Engine.prototype = {
+ // The engine's alias (can be null). Initialized to |undefined| to indicate
+ // not-initialized-from-engineMetadataService.
+ _alias: undefined,
+ // A distribution-unique identifier for the engine. Either null or set
+ // when loaded. See getter.
+ _identifier: undefined,
+ // The data describing the engine, in the form of an XML document element.
+ _data: null,
+ // Whether or not the engine is readonly.
+ _readOnly: true,
+ // The engine's description
+ _description: "",
+ // Used to store the engine to replace, if we're an update to an existing
+ // engine.
+ _engineToUpdate: null,
+ // The file from which the plugin was loaded.
+ __file: null,
+ get _file() {
+ if (this.__file && !(this.__file instanceof Ci.nsILocalFile)) {
+ let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
+ file.persistentDescriptor = this.__file;
+ return this.__file = file;
+ }
+ return this.__file;
+ },
+ set _file(aValue) {
+ this.__file = aValue;
+ },
+ // Set to true if the engine has a preferred icon (an icon that should not be
+ // overridden by a non-preferred icon).
+ _hasPreferredIcon: null,
+ // The engine's name.
+ _name: null,
+ // The name of the charset used to submit the search terms.
+ _queryCharset: null,
+ // The engine's raw SearchForm value (URL string pointing to a search form).
+ __searchForm: null,
+ get _searchForm() {
+ return this.__searchForm;
+ },
+ set _searchForm(aValue) {
+ if (/^https?:/i.test(aValue))
+ this.__searchForm = aValue;
+ else
+ LOG("_searchForm: Invalid URL dropped for " + this._name ||
+ "the current engine");
+ },
+ // The URI object from which the engine was retrieved.
+ // This is null for engines loaded from disk, but present for engines loaded
+ // from chrome:// URIs.
+ __uri: null,
+ get _uri() {
+ if (this.__uri && !(this.__uri instanceof Ci.nsIURI))
+ this.__uri = makeURI(this.__uri);
+
+ return this.__uri;
+ },
+ set _uri(aValue) {
+ this.__uri = aValue;
+ },
+ // Whether to obtain user confirmation before adding the engine. This is only
+ // used when the engine is first added to the list.
+ _confirm: false,
+ // Whether to set this as the current engine as soon as it is loaded. This
+ // is only used when the engine is first added to the list.
+ _useNow: false,
+ // A function to be invoked when this engine object's addition completes (or
+ // fails). Only used for installation via addEngine.
+ _installCallback: null,
+ // Where the engine was loaded from. Can be one of: SEARCH_APP_DIR,
+ // SEARCH_PROFILE_DIR, SEARCH_IN_EXTENSION.
+ __installLocation: null,
+ // The number of days between update checks for new versions
+ _updateInterval: null,
+ // The url to check at for a new update
+ _updateURL: null,
+ // The url to check for a new icon
+ _iconUpdateURL: null,
+ /* Deferred serialization task. */
+ _lazySerializeTask: null,
+ /* The extension ID if added by an extension. */
+ _extensionID: null,
+
+ /**
+ * Retrieves the data from the engine's file.
+ * The document element is placed in the engine's data field.
+ */
+ _initFromFile: function SRCH_ENG_initFromFile() {
+ if (!this._file || !this._file.exists())
+ FAIL("File must exist before calling initFromFile!", Cr.NS_ERROR_UNEXPECTED);
+
+ var fileInStream = Cc["@mozilla.org/network/file-input-stream;1"].
+ createInstance(Ci.nsIFileInputStream);
+
+ fileInStream.init(this._file, MODE_RDONLY, FileUtils.PERMS_FILE, false);
+
+ var domParser = Cc["@mozilla.org/xmlextras/domparser;1"].
+ createInstance(Ci.nsIDOMParser);
+ var doc = domParser.parseFromStream(fileInStream, "UTF-8",
+ this._file.fileSize,
+ "text/xml");
+
+ this._data = doc.documentElement;
+ fileInStream.close();
+
+ // Now that the data is loaded, initialize the engine object
+ this._initFromData();
+ },
+
+ /**
+ * Retrieves the data from the engine's file asynchronously.
+ * The document element is placed in the engine's data field.
+ *
+ * @returns {Promise} A promise, resolved successfully if initializing from
+ * data succeeds, rejected if it fails.
+ */
+ _asyncInitFromFile: function SRCH_ENG__asyncInitFromFile() {
+ return Task.spawn(function() {
+ if (!this._file || !(yield OS.File.exists(this._file.path)))
+ FAIL("File must exist before calling initFromFile!", Cr.NS_ERROR_UNEXPECTED);
+
+ let fileURI = NetUtil.ioService.newFileURI(this._file);
+ yield this._retrieveSearchXMLData(fileURI.spec);
+
+ // Now that the data is loaded, initialize the engine object
+ this._initFromData();
+ }.bind(this));
+ },
+
+ /**
+ * Retrieves the engine data from a URI. Initializes the engine, flushes to
+ * disk, and notifies the search service once initialization is complete.
+ */
+ _initFromURIAndLoad: function SRCH_ENG_initFromURIAndLoad() {
+ ENSURE_WARN(this._uri instanceof Ci.nsIURI,
+ "Must have URI when calling _initFromURIAndLoad!",
+ Cr.NS_ERROR_UNEXPECTED);
+
+ LOG("_initFromURIAndLoad: Downloading engine from: \"" + this._uri.spec + "\".");
+
+ var chan = NetUtil.ioService.newChannelFromURI2(this._uri,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
+
+ if (this._engineToUpdate && (chan instanceof Ci.nsIHttpChannel)) {
+ var lastModified = engineMetadataService.getAttr(this._engineToUpdate,
+ "updatelastmodified");
+ if (lastModified)
+ chan.setRequestHeader("If-Modified-Since", lastModified, false);
+ }
+ var listener = new loadListener(chan, this, this._onLoad);
+ chan.notificationCallbacks = listener;
+ chan.asyncOpen(listener, null);
+ },
+
+ /**
+ * Retrieves the engine data from a URI asynchronously and initializes it.
+ *
+ * @returns {Promise} A promise, resolved successfully if retrieveing data
+ * succeeds.
+ */
+ _asyncInitFromURI: function SRCH_ENG__asyncInitFromURI() {
+ return Task.spawn(function() {
+ LOG("_asyncInitFromURI: Loading engine from: \"" + this._uri.spec + "\".");
+ yield this._retrieveSearchXMLData(this._uri.spec);
+ // Now that the data is loaded, initialize the engine object
+ this._initFromData();
+ }.bind(this));
+ },
+
+ /**
+ * Retrieves the engine data for a given URI asynchronously.
+ *
+ * @returns {Promise} A promise, resolved successfully if retrieveing data
+ * succeeds.
+ */
+ _retrieveSearchXMLData: function SRCH_ENG__retrieveSearchXMLData(aURL) {
+ let deferred = Promise.defer();
+ let request = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].
+ createInstance(Ci.nsIXMLHttpRequest);
+ request.overrideMimeType("text/xml");
+ request.onload = (aEvent) => {
+ let responseXML = aEvent.target.responseXML;
+ this._data = responseXML.documentElement;
+ deferred.resolve();
+ };
+ request.onerror = function(aEvent) {
+ deferred.resolve();
+ };
+ request.open("GET", aURL, true);
+ request.send();
+
+ return deferred.promise;
+ },
+
+ _initFromURISync: function SRCH_ENG_initFromURISync() {
+ ENSURE_WARN(this._uri instanceof Ci.nsIURI,
+ "Must have URI when calling _initFromURISync!",
+ Cr.NS_ERROR_UNEXPECTED);
+
+ ENSURE_WARN(this._uri.schemeIs("resource"), "_initFromURISync called for non-resource URI",
+ Cr.NS_ERROR_FAILURE);
+
+ LOG("_initFromURISync: Loading engine from: \"" + this._uri.spec + "\".");
+
+ var chan = NetUtil.ioService.newChannelFromURI2(this._uri,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
+
+ var stream = chan.open();
+ var parser = Cc["@mozilla.org/xmlextras/domparser;1"].
+ createInstance(Ci.nsIDOMParser);
+ var doc = parser.parseFromStream(stream, "UTF-8", stream.available(), "text/xml");
+
+ this._data = doc.documentElement;
+
+ // Now that the data is loaded, initialize the engine object
+ this._initFromData();
+ },
+
+ /**
+ * Attempts to find an EngineURL object in the set of EngineURLs for
+ * this Engine that has the given type string. (This corresponds to the
+ * "type" attribute in the "Url" node in the OpenSearch spec.)
+ * This method will return the first matching URL object found, or null
+ * if no matching URL is found.
+ *
+ * @param aType string to match the EngineURL's type attribute
+ * @param aRel [optional] only return URLs that with this rel value
+ */
+ _getURLOfType: function SRCH_ENG__getURLOfType(aType, aRel) {
+ for (var i = 0; i < this._urls.length; ++i) {
+ if (this._urls[i].type == aType && (!aRel || this._urls[i]._hasRelation(aRel)))
+ return this._urls[i];
+ }
+
+ return null;
+ },
+
+ _confirmAddEngine: function SRCH_SVC_confirmAddEngine() {
+ var stringBundle = Services.strings.createBundle(SEARCH_BUNDLE);
+ var titleMessage = stringBundle.GetStringFromName("addEngineConfirmTitle");
+
+ // Display only the hostname portion of the URL.
+ var dialogMessage =
+ stringBundle.formatStringFromName("addEngineConfirmation",
+ [this._name, this._uri.host], 2);
+ var checkboxMessage = null;
+ if (!getBoolPref(BROWSER_SEARCH_PREF + "noCurrentEngine", false))
+ checkboxMessage = stringBundle.GetStringFromName("addEngineAsCurrentText");
+
+ var addButtonLabel =
+ stringBundle.GetStringFromName("addEngineAddButtonLabel");
+
+ var ps = Services.prompt;
+ var buttonFlags = (ps.BUTTON_TITLE_IS_STRING * ps.BUTTON_POS_0) +
+ (ps.BUTTON_TITLE_CANCEL * ps.BUTTON_POS_1) +
+ ps.BUTTON_POS_0_DEFAULT;
+
+ var checked = {value: false};
+ // confirmEx returns the index of the button that was pressed. Since "Add"
+ // is button 0, we want to return the negation of that value.
+ var confirm = !ps.confirmEx(null,
+ titleMessage,
+ dialogMessage,
+ buttonFlags,
+ addButtonLabel,
+ null, null, // button 1 & 2 names not used
+ checkboxMessage,
+ checked);
+
+ return {confirmed: confirm, useNow: checked.value};
+ },
+
+ /**
+ * Handle the successful download of an engine. Initializes the engine and
+ * triggers parsing of the data. The engine is then flushed to disk. Notifies
+ * the search service once initialization is complete.
+ */
+ _onLoad: function SRCH_ENG_onLoad(aBytes, aEngine) {
+ /**
+ * Handle an error during the load of an engine by notifying the engine's
+ * error callback, if any.
+ */
+ function onError(errorCode = Ci.nsISearchInstallCallback.ERROR_UNKNOWN_FAILURE) {
+ // Notify the callback of the failure
+ if (aEngine._installCallback) {
+ aEngine._installCallback(errorCode);
+ }
+ }
+
+ function promptError(strings = {}, error = undefined) {
+ onError(error);
+
+ if (aEngine._engineToUpdate) {
+ // We're in an update, so just fail quietly
+ LOG("updating " + aEngine._engineToUpdate.name + " failed");
+ return;
+ }
+ var brandBundle = Services.strings.createBundle(BRAND_BUNDLE);
+ var brandName = brandBundle.GetStringFromName("brandShortName");
+
+ var searchBundle = Services.strings.createBundle(SEARCH_BUNDLE);
+ var msgStringName = strings.error || "error_loading_engine_msg2";
+ var titleStringName = strings.title || "error_loading_engine_title";
+ var title = searchBundle.GetStringFromName(titleStringName);
+ var text = searchBundle.formatStringFromName(msgStringName,
+ [brandName, aEngine._location],
+ 2);
+
+ Services.ww.getNewPrompter(null).alert(title, text);
+ }
+
+ if (!aBytes) {
+ promptError();
+ return;
+ }
+
+ var engineToUpdate = null;
+ if (aEngine._engineToUpdate) {
+ engineToUpdate = aEngine._engineToUpdate.wrappedJSObject;
+
+ // Make this new engine use the old engine's file.
+ aEngine._file = engineToUpdate._file;
+ }
+
+ var parser = Cc["@mozilla.org/xmlextras/domparser;1"].
+ createInstance(Ci.nsIDOMParser);
+ var doc = parser.parseFromBuffer(aBytes, aBytes.length, "text/xml");
+ aEngine._data = doc.documentElement;
+
+ try {
+ // Initialize the engine from the obtained data
+ aEngine._initFromData();
+ } catch (ex) {
+ LOG("_onLoad: Failed to init engine!\n" + ex);
+ // Report an error to the user
+ promptError();
+ return;
+ }
+
+ // Check that when adding a new engine (e.g., not updating an
+ // existing one), a duplicate engine does not already exist.
+ if (!engineToUpdate) {
+ if (Services.search.getEngineByName(aEngine.name)) {
+ // If we're confirming the engine load, then display a "this is a
+ // duplicate engine" prompt; otherwise, fail silently.
+ if (aEngine._confirm) {
+ promptError({ error: "error_duplicate_engine_msg",
+ title: "error_invalid_engine_title"
+ }, Ci.nsISearchInstallCallback.ERROR_DUPLICATE_ENGINE);
+ } else {
+ onError(Ci.nsISearchInstallCallback.ERROR_DUPLICATE_ENGINE);
+ }
+ LOG("_onLoad: duplicate engine found, bailing");
+ return;
+ }
+ }
+
+ // If requested, confirm the addition now that we have the title.
+ // This property is only ever true for engines added via
+ // nsIBrowserSearchService::addEngine.
+ if (aEngine._confirm) {
+ var confirmation = aEngine._confirmAddEngine();
+ LOG("_onLoad: confirm is " + confirmation.confirmed +
+ "; useNow is " + confirmation.useNow);
+ if (!confirmation.confirmed) {
+ onError();
+ return;
+ }
+ aEngine._useNow = confirmation.useNow;
+ }
+
+ // If we don't yet have a file, get one now. The only case where we would
+ // already have a file is if this is an update and _file was set above.
+ if (!aEngine._file)
+ aEngine._file = getSanitizedFile(aEngine.name);
+
+ if (engineToUpdate) {
+ // Keep track of the last modified date, so that we can make conditional
+ // requests for future updates.
+ engineMetadataService.setAttr(aEngine, "updatelastmodified",
+ (new Date()).toUTCString());
+
+ // If we're updating an app-shipped engine, ensure that the updateURLs
+ // are the same.
+ if (engineToUpdate._isInAppDir) {
+ let oldUpdateURL = engineToUpdate._updateURL;
+ let newUpdateURL = aEngine._updateURL;
+ let oldSelfURL = engineToUpdate._getURLOfType(URLTYPE_OPENSEARCH, "self");
+ if (oldSelfURL) {
+ oldUpdateURL = oldSelfURL.template;
+ let newSelfURL = aEngine._getURLOfType(URLTYPE_OPENSEARCH, "self");
+ if (!newSelfURL) {
+ LOG("_onLoad: updateURL missing in updated engine for " +
+ aEngine.name + " aborted");
+ onError();
+ return;
+ }
+ newUpdateURL = newSelfURL.template;
+ }
+
+ if (oldUpdateURL != newUpdateURL) {
+ LOG("_onLoad: updateURLs do not match! Update of " + aEngine.name + " aborted");
+ onError();
+ return;
+ }
+ }
+
+ // Set the new engine's icon, if it doesn't yet have one.
+ if (!aEngine._iconURI && engineToUpdate._iconURI)
+ aEngine._iconURI = engineToUpdate._iconURI;
+ }
+
+ // Write the engine to file. For readOnly engines, they'll be stored in the
+ // cache following the notification below.
+ if (!aEngine._readOnly)
+ aEngine._serializeToFile();
+
+ // Notify the search service of the successful load. It will deal with
+ // updates by checking aEngine._engineToUpdate.
+ notifyAction(aEngine, SEARCH_ENGINE_LOADED);
+
+ // Notify the callback if needed
+ if (aEngine._installCallback) {
+ aEngine._installCallback();
+ }
+ },
+
+ /**
+ * Creates a key by serializing an object that contains the icon's width
+ * and height.
+ *
+ * @param aWidth
+ * Width of the icon.
+ * @param aHeight
+ * Height of the icon.
+ * @returns key string
+ */
+ _getIconKey: function SRCH_ENG_getIconKey(aWidth, aHeight) {
+ let keyObj = {
+ width: aWidth,
+ height: aHeight
+ };
+
+ return JSON.stringify(keyObj);
+ },
+
+ /**
+ * Add an icon to the icon map used by getIconURIBySize() and getIcons().
+ *
+ * @param aWidth
+ * Width of the icon.
+ * @param aHeight
+ * Height of the icon.
+ * @param aURISpec
+ * String with the icon's URI.
+ */
+ _addIconToMap: function SRCH_ENG_addIconToMap(aWidth, aHeight, aURISpec) {
+ // Use an object instead of a Map() because it needs to be serializable.
+ this._iconMapObj = this._iconMapObj || {};
+ let key = this._getIconKey(aWidth, aHeight);
+ this._iconMapObj[key] = aURISpec;
+ },
+
+ /**
+ * Sets the .iconURI property of the engine. If both aWidth and aHeight are
+ * provided an entry will be added to _iconMapObj that will enable accessing
+ * icon's data through getIcons() and getIconURIBySize() APIs.
+ *
+ * @param aIconURL
+ * A URI string pointing to the engine's icon. Must have a http[s],
+ * ftp, or data scheme. Icons with HTTP[S] or FTP schemes will be
+ * downloaded and converted to data URIs for storage in the engine
+ * XML files, if the engine is not readonly.
+ * @param aIsPreferred
+ * Whether or not this icon is to be preferred. Preferred icons can
+ * override non-preferred icons.
+ * @param aWidth (optional)
+ * Width of the icon.
+ * @param aHeight (optional)
+ * Height of the icon.
+ */
+ _setIcon: function SRCH_ENG_setIcon(aIconURL, aIsPreferred, aWidth, aHeight) {
+ var uri = makeURI(aIconURL);
+
+ // Ignore bad URIs
+ if (!uri)
+ return;
+
+ LOG("_setIcon: Setting icon url \"" + limitURILength(uri.spec) + "\" for engine \""
+ + this.name + "\".");
+ // Only accept remote icons from http[s] or ftp
+ switch (uri.scheme) {
+ case "data":
+ if (!this._hasPreferredIcon || aIsPreferred) {
+ this._iconURI = uri;
+ notifyAction(this, SEARCH_ENGINE_CHANGED);
+ this._hasPreferredIcon = aIsPreferred;
+ }
+
+ if (aWidth && aHeight) {
+ this._addIconToMap(aWidth, aHeight, aIconURL)
+ }
+ break;
+ case "http":
+ case "https":
+ case "ftp":
+ // No use downloading the icon if the engine file is read-only
+ LOG("_setIcon: Downloading icon: \"" + uri.spec +
+ "\" for engine: \"" + this.name + "\"");
+ var chan = NetUtil.ioService.newChannelFromURI2(uri,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_INTERNAL_IMAGE);
+
+ let iconLoadCallback = function (aByteArray, aEngine) {
+ // This callback may run after we've already set a preferred icon,
+ // so check again.
+ if (aEngine._hasPreferredIcon && !aIsPreferred)
+ return;
+
+ if (!aByteArray || aByteArray.length > MAX_ICON_SIZE) {
+ LOG("iconLoadCallback: load failed, or the icon was too large!");
+ return;
+ }
+
+ var str = btoa(String.fromCharCode.apply(null, aByteArray));
+ let dataURL = ICON_DATAURL_PREFIX + str;
+ aEngine._iconURI = makeURI(dataURL);
+
+ if (aWidth && aHeight) {
+ aEngine._addIconToMap(aWidth, aHeight, dataURL)
+ }
+
+ // The engine might not have a file yet, if it's being downloaded,
+ // because the request for the engine file itself (_onLoad) may not
+ // yet be complete. In that case, this change will be written to
+ // file when _onLoad is called. For readonly engines, we'll store
+ // the changes in the cache once notified below.
+ if (aEngine._file && !aEngine._readOnly)
+ aEngine._serializeToFile();
+
+ notifyAction(aEngine, SEARCH_ENGINE_CHANGED);
+ aEngine._hasPreferredIcon = aIsPreferred;
+ }
+
+ // If we're currently acting as an "update engine", then the callback
+ // should set the icon on the engine we're updating and not us, since
+ // |this| might be gone by the time the callback runs.
+ var engineToSet = this._engineToUpdate || this;
+
+ var listener = new loadListener(chan, engineToSet, iconLoadCallback);
+ chan.notificationCallbacks = listener;
+ chan.asyncOpen(listener, null);
+ break;
+ }
+ },
+
+ /**
+ * Initialize this Engine object from the collected data.
+ */
+ _initFromData: function SRCH_ENG_initFromData() {
+ ENSURE_WARN(this._data, "Can't init an engine with no data!",
+ Cr.NS_ERROR_UNEXPECTED);
+
+ // Ensure we have a supported engine type before attempting to parse it.
+ let element = this._data;
+ if ((element.localName == MOZSEARCH_LOCALNAME &&
+ element.namespaceURI == MOZSEARCH_NS_10) ||
+ (element.localName == OPENSEARCH_LOCALNAME &&
+ OPENSEARCH_NAMESPACES.indexOf(element.namespaceURI) != -1)) {
+ LOG("_init: Initing search plugin from " + this._location);
+
+ this._parse();
+
+ } else
+ FAIL(this._location + " is not a valid search plugin.", Cr.NS_ERROR_FAILURE);
+
+ // No need to keep a ref to our data (which in some cases can be a document
+ // element) past this point
+ this._data = null;
+ },
+
+ /**
+ * Initialize this Engine object from a collection of metadata.
+ */
+ _initFromMetadata: function SRCH_ENG_initMetaData(aName, aIconURL, aAlias,
+ aDescription, aMethod,
+ aTemplate, aExtensionID) {
+ ENSURE_WARN(!this._readOnly,
+ "Can't call _initFromMetaData on a readonly engine!",
+ Cr.NS_ERROR_FAILURE);
+
+ this._urls.push(new EngineURL(URLTYPE_SEARCH_HTML, aMethod, aTemplate));
+
+ this._name = aName;
+ this.alias = aAlias;
+ this._description = aDescription;
+ this._setIcon(aIconURL, true);
+ this._extensionID = aExtensionID;
+
+ this._serializeToFile();
+ },
+
+ /**
+ * Extracts data from an OpenSearch URL element and creates an EngineURL
+ * object which is then added to the engine's list of URLs.
+ *
+ * @throws NS_ERROR_FAILURE if a URL object could not be created.
+ *
+ * @see http://opensearch.a9.com/spec/1.1/querysyntax/#urltag.
+ * @see EngineURL()
+ */
+ _parseURL: function SRCH_ENG_parseURL(aElement) {
+ var type = aElement.getAttribute("type");
+ // According to the spec, method is optional, defaulting to "GET" if not
+ // specified
+ var method = aElement.getAttribute("method") || "GET";
+ var template = aElement.getAttribute("template");
+ var resultDomain = aElement.getAttribute("resultdomain");
+
+ try {
+ var url = new EngineURL(type, method, template, resultDomain);
+ } catch (ex) {
+ FAIL("_parseURL: failed to add " + template + " as a URL",
+ Cr.NS_ERROR_FAILURE);
+ }
+
+ if (aElement.hasAttribute("rel"))
+ url.rels = aElement.getAttribute("rel").toLowerCase().split(/\s+/);
+
+ for (var i = 0; i < aElement.childNodes.length; ++i) {
+ var param = aElement.childNodes[i];
+ if (param.localName == "Param") {
+ try {
+ url.addParam(param.getAttribute("name"), param.getAttribute("value"));
+ } catch (ex) {
+ // Ignore failure
+ LOG("_parseURL: Url element has an invalid param");
+ }
+ } else if (param.localName == "MozParam" &&
+ // We only support MozParams for default search engines
+ this._isDefault) {
+ var value;
+ let condition = param.getAttribute("condition");
+
+ // MozParams must have a condition to be valid
+ if (!condition) {
+ let engineLoc = this._location;
+ let paramName = param.getAttribute("name");
+ LOG("_parseURL: MozParam (" + paramName + ") without a condition attribute found parsing engine: " + engineLoc);
+ continue;
+ }
+
+ switch (condition) {
+ case "purpose":
+ url.addParam(param.getAttribute("name"),
+ param.getAttribute("value"),
+ param.getAttribute("purpose"));
+ // _addMozParam is not needed here since it can be serialized fine without. _addMozParam
+ // also requires a unique "name" which is not normally the case when @purpose is used.
+ break;
+ case "pref":
+ try {
+ value = getMozParamPref(param.getAttribute("pref"), value);
+ url.addParam(param.getAttribute("name"), value);
+ url._addMozParam({"pref": param.getAttribute("pref"),
+ "name": param.getAttribute("name"),
+ "condition": "pref"});
+ } catch (e) { }
+ break;
+ default:
+ let engineLoc = this._location;
+ let paramName = param.getAttribute("name");
+ LOG("_parseURL: MozParam (" + paramName + ") has an unknown condition: " + condition + ". Found parsing engine: " + engineLoc);
+ break;
+ }
+ }
+ }
+
+ this._urls.push(url);
+ },
+
+ /**
+ * Get the icon from an OpenSearch Image element.
+ * @see http://opensearch.a9.com/spec/1.1/description/#image
+ */
+ _parseImage: function SRCH_ENG_parseImage(aElement) {
+ LOG("_parseImage: Image textContent: \"" + limitURILength(aElement.textContent) + "\"");
+
+ let width = parseInt(aElement.getAttribute("width"), 10);
+ let height = parseInt(aElement.getAttribute("height"), 10);
+ let isPrefered = width == 16 && height == 16;
+
+ if (isNaN(width) || isNaN(height) || width <= 0 || height <=0) {
+ LOG("OpenSearch image element must have positive width and height.");
+ return;
+ }
+
+ this._setIcon(aElement.textContent, isPrefered, width, height);
+ },
+
+ /**
+ * Extract search engine information from the collected data to initialize
+ * the engine object.
+ */
+ _parse: function SRCH_ENG_parse() {
+ var doc = this._data;
+
+ // The OpenSearch spec sets a default value for the input encoding.
+ this._queryCharset = OS_PARAM_INPUT_ENCODING_DEF;
+
+ for (var i = 0; i < doc.childNodes.length; ++i) {
+ var child = doc.childNodes[i];
+ switch (child.localName) {
+ case "ShortName":
+ this._name = child.textContent;
+ break;
+ case "Description":
+ this._description = child.textContent;
+ break;
+ case "Url":
+ try {
+ this._parseURL(child);
+ } catch (ex) {
+ // Parsing of the element failed, just skip it.
+ LOG("_parse: failed to parse URL child: " + ex);
+ }
+ break;
+ case "Image":
+ this._parseImage(child);
+ break;
+ case "InputEncoding":
+ this._queryCharset = child.textContent.toUpperCase();
+ break;
+
+ // Non-OpenSearch elements
+ case "SearchForm":
+ this._searchForm = child.textContent;
+ break;
+ case "UpdateUrl":
+ this._updateURL = child.textContent;
+ break;
+ case "UpdateInterval":
+ this._updateInterval = parseInt(child.textContent);
+ break;
+ case "IconUpdateUrl":
+ this._iconUpdateURL = child.textContent;
+ break;
+ case "ExtensionID":
+ this._extensionID = child.textContent;
+ break;
+ }
+ }
+ if (!this.name || (this._urls.length == 0))
+ FAIL("_parse: No name, or missing URL!", Cr.NS_ERROR_FAILURE);
+ if (!this.supportsResponseType(URLTYPE_SEARCH_HTML))
+ FAIL("_parse: No text/html result type!", Cr.NS_ERROR_FAILURE);
+ },
+
+ /**
+ * Init from a JSON record.
+ **/
+ _initWithJSON: function SRCH_ENG__initWithJSON(aJson) {
+ this.__id = aJson._id;
+ this._name = aJson._name;
+ this._description = aJson.description;
+ if (aJson._hasPreferredIcon == undefined)
+ this._hasPreferredIcon = true;
+ else
+ this._hasPreferredIcon = false;
+ this._queryCharset = aJson.queryCharset || DEFAULT_QUERY_CHARSET;
+ this.__searchForm = aJson.__searchForm;
+ this.__installLocation = aJson._installLocation || SEARCH_APP_DIR;
+ this._updateInterval = aJson._updateInterval || null;
+ this._updateURL = aJson._updateURL || null;
+ this._iconUpdateURL = aJson._iconUpdateURL || null;
+ if (aJson._readOnly == undefined)
+ this._readOnly = true;
+ else
+ this._readOnly = false;
+ this._iconURI = makeURI(aJson._iconURL);
+ this._iconMapObj = aJson._iconMapObj;
+ if (aJson.extensionID) {
+ this._extensionID = aJson.extensionID;
+ }
+ for (let i = 0; i < aJson._urls.length; ++i) {
+ let url = aJson._urls[i];
+ let engineURL = new EngineURL(url.type || URLTYPE_SEARCH_HTML,
+ url.method || "GET", url.template,
+ url.resultDomain);
+ engineURL._initWithJSON(url, this);
+ this._urls.push(engineURL);
+ }
+ },
+
+ /**
+ * Creates a JavaScript object that represents this engine.
+ * @returns An object suitable for serialization as JSON.
+ **/
+ toJSON: function SRCH_ENG_toJSON() {
+ var json = {
+ _id: this._id,
+ _name: this._name,
+ description: this.description,
+ __searchForm: this.__searchForm,
+ _iconURL: this._iconURL,
+ _iconMapObj: this._iconMapObj,
+ _urls: this._urls
+ };
+
+ if (this._file instanceof Ci.nsILocalFile)
+ json.filePath = this._file.persistentDescriptor;
+ if (this._uri)
+ json._url = this._uri.spec;
+ if (this._installLocation != SEARCH_APP_DIR)
+ json._installLocation = this._installLocation;
+ if (this._updateInterval)
+ json._updateInterval = this._updateInterval;
+ if (this._updateURL)
+ json._updateURL = this._updateURL;
+ if (this._iconUpdateURL)
+ json._iconUpdateURL = this._iconUpdateURL;
+ if (!this._hasPreferredIcon)
+ json._hasPreferredIcon = this._hasPreferredIcon;
+ if (this.queryCharset != DEFAULT_QUERY_CHARSET)
+ json.queryCharset = this.queryCharset;
+ if (!this._readOnly)
+ json._readOnly = this._readOnly;
+ if (this._extensionID) {
+ json.extensionID = this._extensionID;
+ }
+
+ return json;
+ },
+
+ /**
+ * Returns an XML document object containing the search plugin information,
+ * which can later be used to reload the engine.
+ */
+ _serializeToElement: function SRCH_ENG_serializeToEl() {
+ function appendTextNode(aNameSpace, aLocalName, aValue) {
+ if (!aValue)
+ return null;
+ var node = doc.createElementNS(aNameSpace, aLocalName);
+ node.appendChild(doc.createTextNode(aValue));
+ docElem.appendChild(node);
+ docElem.appendChild(doc.createTextNode("\n"));
+ return node;
+ }
+
+ var parser = Cc["@mozilla.org/xmlextras/domparser;1"].
+ createInstance(Ci.nsIDOMParser);
+
+ var doc = parser.parseFromString(EMPTY_DOC, "text/xml");
+ var docElem = doc.documentElement;
+
+ docElem.appendChild(doc.createTextNode("\n"));
+
+ appendTextNode(OPENSEARCH_NS_11, "ShortName", this.name);
+ appendTextNode(OPENSEARCH_NS_11, "Description", this._description);
+ appendTextNode(OPENSEARCH_NS_11, "InputEncoding", this._queryCharset);
+
+ if (this._iconURI) {
+ var imageNode = appendTextNode(OPENSEARCH_NS_11, "Image",
+ this._iconURI.spec);
+ if (imageNode) {
+ imageNode.setAttribute("width", "16");
+ imageNode.setAttribute("height", "16");
+ }
+ }
+
+ appendTextNode(MOZSEARCH_NS_10, "UpdateInterval", this._updateInterval);
+ appendTextNode(MOZSEARCH_NS_10, "UpdateUrl", this._updateURL);
+ appendTextNode(MOZSEARCH_NS_10, "IconUpdateUrl", this._iconUpdateURL);
+ appendTextNode(MOZSEARCH_NS_10, "SearchForm", this._searchForm);
+
+ if (this._extensionID) {
+ appendTextNode(MOZSEARCH_NS_10, "ExtensionID", this._extensionID);
+ }
+
+ for (var i = 0; i < this._urls.length; ++i)
+ this._urls[i]._serializeToElement(doc, docElem);
+ docElem.appendChild(doc.createTextNode("\n"));
+
+ return doc;
+ },
+
+ get lazySerializeTask() {
+ if (!this._lazySerializeTask) {
+ let task = function taskCallback() {
+ this._serializeToFile();
+ }.bind(this);
+ this._lazySerializeTask = new DeferredTask(task, LAZY_SERIALIZE_DELAY);
+ }
+
+ return this._lazySerializeTask;
+ },
+
+ /**
+ * Serializes the engine object to file.
+ */
+ _serializeToFile: function SRCH_ENG_serializeToFile() {
+ var file = this._file;
+ ENSURE_WARN(!this._readOnly, "Can't serialize a read only engine!",
+ Cr.NS_ERROR_FAILURE);
+ ENSURE_WARN(file && file.exists(), "Can't serialize: file doesn't exist!",
+ Cr.NS_ERROR_UNEXPECTED);
+
+ var fos = Cc["@mozilla.org/network/safe-file-output-stream;1"].
+ createInstance(Ci.nsIFileOutputStream);
+
+ // Serialize the engine first - we don't want to overwrite a good file
+ // if this somehow fails.
+ var doc = this._serializeToElement();
+
+ fos.init(file, (MODE_WRONLY | MODE_TRUNCATE), FileUtils.PERMS_FILE, 0);
+
+ try {
+ var serializer = Cc["@mozilla.org/xmlextras/xmlserializer;1"].
+ createInstance(Ci.nsIDOMSerializer);
+ serializer.serializeToStream(doc.documentElement, fos, null);
+ } catch (e) {
+ LOG("_serializeToFile: Error serializing engine:\n" + e);
+ }
+
+ closeSafeOutputStream(fos);
+
+ Services.obs.notifyObservers(file.clone(), SEARCH_SERVICE_TOPIC,
+ "write-engine-to-disk-complete");
+ },
+
+ /**
+ * Remove the engine's file from disk. The search service calls this once it
+ * removes the engine from its internal store. This function will throw if
+ * the file cannot be removed.
+ */
+ _remove: function SRCH_ENG_remove() {
+ if (this._readOnly)
+ FAIL("Can't remove read only engine!", Cr.NS_ERROR_FAILURE);
+ if (!this._file || !this._file.exists())
+ FAIL("Can't remove engine: file doesn't exist!", Cr.NS_ERROR_FILE_NOT_FOUND);
+
+ this._file.remove(false);
+ },
+
+ // nsISearchEngine
+ get alias() {
+ if (this._alias === undefined)
+ this._alias = engineMetadataService.getAttr(this, "alias");
+
+ return this._alias;
+ },
+ set alias(val) {
+ this._alias = val;
+ engineMetadataService.setAttr(this, "alias", val);
+ notifyAction(this, SEARCH_ENGINE_CHANGED);
+ },
+
+ /**
+ * Return the built-in identifier of app-provided engines.
+ *
+ * Note that this identifier is substantially similar to _id, with the
+ * following exceptions:
+ *
+ * * There is no trailing file extension.
+ * * There is no [app] prefix.
+ *
+ * @return a string identifier, or null.
+ */
+ get identifier() {
+ if (this._identifier !== undefined) {
+ return this._identifier;
+ }
+
+ // No identifier if If the engine isn't app-provided
+ if (!this._isInAppDir && !this._isInJAR) {
+ return this._identifier = null;
+ }
+
+ let leaf = this._getLeafName();
+ ENSURE_WARN(leaf, "identifier: app-provided engine has no leafName");
+
+ // Strip file extension.
+ let ext = leaf.lastIndexOf(".");
+ if (ext == -1) {
+ return this._identifier = leaf;
+ }
+ return this._identifier = leaf.substring(0, ext);
+ },
+
+ get description() {
+ return this._description;
+ },
+
+ get hidden() {
+ return engineMetadataService.getAttr(this, "hidden") || false;
+ },
+ set hidden(val) {
+ var value = !!val;
+ if (value != this.hidden) {
+ engineMetadataService.setAttr(this, "hidden", value);
+ notifyAction(this, SEARCH_ENGINE_CHANGED);
+ }
+ },
+
+ get iconURI() {
+ if (this._iconURI)
+ return this._iconURI;
+ return null;
+ },
+
+ get _iconURL() {
+ if (!this._iconURI)
+ return "";
+ return this._iconURI.spec;
+ },
+
+ // Where the engine is being loaded from: will return the URI's spec if the
+ // engine is being downloaded and does not yet have a file. This is only used
+ // for logging and error messages.
+ get _location() {
+ if (this._file)
+ return this._file.path;
+
+ if (this._uri)
+ return this._uri.spec;
+
+ return "";
+ },
+
+ /**
+ * @return the leaf name of the filename or URI of this plugin,
+ * or null if no file or URI is known.
+ */
+ _getLeafName: function () {
+ if (this._file) {
+ return this._file.leafName;
+ }
+ if (this._uri && this._uri instanceof Ci.nsIURL) {
+ return this._uri.fileName;
+ }
+ return null;
+ },
+
+ // The file that the plugin is loaded from is a unique identifier for it. We
+ // use this as the identifier to store data in the sqlite database
+ __id: null,
+ get _id() {
+ if (this.__id) {
+ return this.__id;
+ }
+
+ let leafName = this._getLeafName();
+
+ // Treat engines loaded from JARs the same way we treat app shipped
+ // engines.
+ // Theoretically, these could also come from extensions, but there's no
+ // real way for extensions to register their chrome locations at the
+ // moment, so let's not deal with that case.
+ // This means we're vulnerable to conflicts if a file loaded from a JAR
+ // has the same filename as a file loaded from the app dir, but with a
+ // different engine name. People using the JAR functionality should be
+ // careful not to do that!
+ if (this._isInAppDir || this._isInJAR) {
+ // App dir and JAR engines should always have leafNames
+ ENSURE_WARN(leafName, "_id: no leafName for appDir or JAR engine",
+ Cr.NS_ERROR_UNEXPECTED);
+ return this.__id = "[app]/" + leafName;
+ }
+
+ if (this._isInProfile) {
+ ENSURE_WARN(leafName, "_id: no leafName for profile engine",
+ Cr.NS_ERROR_UNEXPECTED);
+ return this.__id = "[profile]/" + leafName;
+ }
+
+ // If the engine isn't a JAR engine, it should have a file.
+ ENSURE_WARN(this._file, "_id: no _file for non-JAR engine",
+ Cr.NS_ERROR_UNEXPECTED);
+
+ // We're not in the profile or appdir, so this must be an extension-shipped
+ // plugin. Use the full filename.
+ return this.__id = this._file.path;
+ },
+
+ // This indicates where we found the .xml file to load the engine,
+ // and attempts to hide user-identifiable data (such as username).
+ get _anonymizedLoadPath() {
+ /* Examples of expected output:
+ * jar:[app]/omni.ja!browser/engine.xml
+ * 'browser' here is the name of the chrome package, not a folder.
+ * [profile]/searchplugins/engine.xml
+ * [distribution]/searchplugins/common/engine.xml
+ * [other]/engine.xml
+ */
+
+ let leafName = this._getLeafName();
+ if (!leafName)
+ return "null";
+
+ let prefix = "", suffix = "";
+ let file = this._file;
+ if (!file) {
+ let uri = this._uri;
+ if (uri.schemeIs("resource")) {
+ uri = makeURI(Services.io.getProtocolHandler("resource")
+ .QueryInterface(Ci.nsISubstitutingProtocolHandler)
+ .resolveURI(uri));
+ }
+ if (uri.schemeIs("chrome")) {
+ let packageName = uri.hostPort;
+ uri = gChromeReg.convertChromeURL(uri);
+ if (uri instanceof Ci.nsINestedURI) {
+ prefix = "jar:";
+ suffix = "!" + packageName + "/" + leafName;
+ uri = uri.innermostURI;
+ }
+ uri.QueryInterface(Ci.nsIFileURL)
+ file = uri.file;
+ } else {
+ return "[" + uri.scheme + "]/" + leafName;
+ }
+ }
+
+ let id;
+ let enginePath = file.path;
+
+ const NS_XPCOM_CURRENT_PROCESS_DIR = "XCurProcD";
+ const NS_APP_USER_PROFILE_50_DIR = "ProfD";
+ const XRE_APP_DISTRIBUTION_DIR = "XREAppDist";
+
+ const knownDirs = {
+ app: NS_XPCOM_CURRENT_PROCESS_DIR,
+ profile: NS_APP_USER_PROFILE_50_DIR,
+ distribution: XRE_APP_DISTRIBUTION_DIR
+ };
+
+ for (let key in knownDirs) {
+ let path;
+ try {
+ path = getDir(knownDirs[key]).path;
+ } catch(e) {
+ // Getting XRE_APP_DISTRIBUTION_DIR throws during unit tests.
+ continue;
+ }
+ if (enginePath.startsWith(path)) {
+ id = "[" + key + "]" + enginePath.slice(path.length).replace(/\\/g, "/");
+ break;
+ }
+ }
+
+ // If the folder doesn't have a known ancestor, don't record its path to
+ // avoid leaking user identifiable data.
+ if (!id)
+ id = "[other]/" + file.leafName;
+
+ return prefix + id + suffix;
+ },
+
+ get _installLocation() {
+ if (this.__installLocation === null) {
+ if (!this._file) {
+ ENSURE_WARN(this._uri, "Engines without files must have URIs",
+ Cr.NS_ERROR_UNEXPECTED);
+ this.__installLocation = SEARCH_JAR;
+ }
+ else if (this._file.parent.equals(getDir(NS_APP_SEARCH_DIR)))
+ this.__installLocation = SEARCH_APP_DIR;
+ else if (this._file.parent.equals(getDir(NS_APP_USER_SEARCH_DIR)))
+ this.__installLocation = SEARCH_PROFILE_DIR;
+ else
+ this.__installLocation = SEARCH_IN_EXTENSION;
+ }
+
+ return this.__installLocation;
+ },
+
+ get _isInJAR() {
+ return this._installLocation == SEARCH_JAR;
+ },
+ get _isInAppDir() {
+ return this._installLocation == SEARCH_APP_DIR;
+ },
+ get _isInProfile() {
+ return this._installLocation == SEARCH_PROFILE_DIR;
+ },
+
+ get _isDefault() {
+ // For now, our concept of a "default engine" is "one that is not in the
+ // user's profile directory", which is currently equivalent to "is app- or
+ // extension-shipped".
+ return !this._isInProfile;
+ },
+
+ get _hasUpdates() {
+ // Whether or not the engine has an update URL
+ let selfURL = this._getURLOfType(URLTYPE_OPENSEARCH, "self");
+ return !!(this._updateURL || this._iconUpdateURL || selfURL);
+ },
+
+ get name() {
+ return this._name;
+ },
+
+ get searchForm() {
+ return this._getSearchFormWithPurpose();
+ },
+
+ _getSearchFormWithPurpose(aPurpose = "") {
+ // First look for a <Url rel="searchform">
+ var searchFormURL = this._getURLOfType(URLTYPE_SEARCH_HTML, "searchform");
+ if (searchFormURL) {
+ let submission = searchFormURL.getSubmission("", this, aPurpose);
+
+ // If the rel=searchform URL is not type="get" (i.e. has postData),
+ // ignore it, since we can only return a URL.
+ if (!submission.postData)
+ return submission.uri.spec;
+ }
+
+ if (!this._searchForm) {
+ // No SearchForm specified in the engine definition file, use the prePath
+ // (e.g. https://foo.com for https://foo.com/search.php?q=bar).
+ var htmlUrl = this._getURLOfType(URLTYPE_SEARCH_HTML);
+ ENSURE_WARN(htmlUrl, "Engine has no HTML URL!", Cr.NS_ERROR_UNEXPECTED);
+ this._searchForm = makeURI(htmlUrl.template).prePath;
+ }
+
+ return ParamSubstitution(this._searchForm, "", this);
+ },
+
+ get queryCharset() {
+ if (this._queryCharset)
+ return this._queryCharset;
+ return this._queryCharset = "windows-1252"; // the default
+ },
+
+ // from nsISearchEngine
+ addParam: function SRCH_ENG_addParam(aName, aValue, aResponseType) {
+ if (!aName || (aValue == null))
+ FAIL("missing name or value for nsISearchEngine::addParam!");
+ ENSURE_WARN(!this._readOnly,
+ "called nsISearchEngine::addParam on a read-only engine!",
+ Cr.NS_ERROR_FAILURE);
+ if (!aResponseType)
+ aResponseType = URLTYPE_SEARCH_HTML;
+
+ var url = this._getURLOfType(aResponseType);
+ if (!url)
+ FAIL("Engine object has no URL for response type " + aResponseType,
+ Cr.NS_ERROR_FAILURE);
+
+ url.addParam(aName, aValue);
+
+ // Serialize the changes to file lazily
+ this.lazySerializeTask.arm();
+ },
+
+#ifdef ANDROID
+ get _defaultMobileResponseType() {
+ let type = URLTYPE_SEARCH_HTML;
+
+ let sysInfo = Cc["@mozilla.org/system-info;1"].getService(Ci.nsIPropertyBag2);
+ let isTablet = sysInfo.get("tablet");
+ if (isTablet && this.supportsResponseType("application/x-moz-tabletsearch")) {
+ // Check for a tablet-specific search URL override
+ type = "application/x-moz-tabletsearch";
+ } else if (!isTablet && this.supportsResponseType("application/x-moz-phonesearch")) {
+ // Check for a phone-specific search URL override
+ type = "application/x-moz-phonesearch";
+ }
+
+ delete this._defaultMobileResponseType;
+ return this._defaultMobileResponseType = type;
+ },
+#endif
+
+ // from nsISearchEngine
+ getSubmission: function SRCH_ENG_getSubmission(aData, aResponseType, aPurpose) {
+#ifdef ANDROID
+ if (!aResponseType) {
+ aResponseType = this._defaultMobileResponseType;
+ }
+#endif
+ if (!aResponseType) {
+ aResponseType = URLTYPE_SEARCH_HTML;
+ }
+
+ var url = this._getURLOfType(aResponseType);
+
+ if (!url)
+ return null;
+
+ if (!aData) {
+ // Return a dummy submission object with our searchForm attribute
+ return new Submission(makeURI(this._getSearchFormWithPurpose(aPurpose)), null);
+ }
+
+ LOG("getSubmission: In data: \"" + aData + "\"; Purpose: \"" + aPurpose + "\"");
+ var data = "";
+ try {
+ data = gTextToSubURI.ConvertAndEscape(this.queryCharset, aData);
+ } catch (ex) {
+ LOG("getSubmission: Falling back to default queryCharset!");
+ data = gTextToSubURI.ConvertAndEscape(DEFAULT_QUERY_CHARSET, aData);
+ }
+ LOG("getSubmission: Out data: \"" + data + "\"");
+ return url.getSubmission(data, this, aPurpose);
+ },
+
+ // from nsISearchEngine
+ supportsResponseType: function SRCH_ENG_supportsResponseType(type) {
+ return (this._getURLOfType(type) != null);
+ },
+
+ // from nsISearchEngine
+ getResultDomain: function SRCH_ENG_getResultDomain(aResponseType) {
+#ifdef ANDROID
+ if (!aResponseType) {
+ aResponseType = this._defaultMobileResponseType;
+ }
+#endif
+ if (!aResponseType) {
+ aResponseType = URLTYPE_SEARCH_HTML;
+ }
+
+ LOG("getResultDomain: responseType: \"" + aResponseType + "\"");
+
+ let url = this._getURLOfType(aResponseType);
+ if (url)
+ return url.resultDomain;
+ return "";
+ },
+
+ /**
+ * Returns URL parsing properties used by _buildParseSubmissionMap.
+ */
+ getURLParsingInfo: function () {
+#ifdef ANDROID
+ let responseType = this._defaultMobileResponseType;
+#else
+ let responseType = URLTYPE_SEARCH_HTML;
+#endif
+
+ LOG("getURLParsingInfo: responseType: \"" + responseType + "\"");
+
+ let url = this._getURLOfType(responseType);
+ if (!url || url.method != "GET") {
+ return null;
+ }
+
+ let termsParameterName = url._getTermsParameterName();
+ if (!termsParameterName) {
+ return null;
+ }
+
+ let templateUrl = NetUtil.newURI(url.template).QueryInterface(Ci.nsIURL);
+ return {
+ mainDomain: templateUrl.host,
+ path: templateUrl.filePath.toLowerCase(),
+ termsParameterName: termsParameterName,
+ };
+ },
+
+ // nsISupports
+ QueryInterface: function SRCH_ENG_QI(aIID) {
+ if (aIID.equals(Ci.nsISearchEngine) ||
+ aIID.equals(Ci.nsISupports))
+ return this;
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ },
+
+ get wrappedJSObject() {
+ return this;
+ },
+
+ /**
+ * Returns a string with the URL to an engine's icon matching both width and
+ * height. Returns null if icon with specified dimensions is not found.
+ *
+ * @param width
+ * Width of the requested icon.
+ * @param height
+ * Height of the requested icon.
+ */
+ getIconURLBySize: function SRCH_ENG_getIconURLBySize(aWidth, aHeight) {
+ if (!this._iconMapObj)
+ return null;
+
+ let key = this._getIconKey(aWidth, aHeight);
+ if (key in this._iconMapObj) {
+ return this._iconMapObj[key];
+ }
+ return null;
+ },
+
+ /**
+ * Gets an array of all available icons. Each entry is an object with
+ * width, height and url properties. width and height are numeric and
+ * represent the icon's dimensions. url is a string with the URL for
+ * the icon.
+ */
+ getIcons: function SRCH_ENG_getIcons() {
+ let result = [];
+
+ if (!this._iconMapObj)
+ return result;
+
+ for (let key of Object.keys(this._iconMapObj)) {
+ let iconSize = JSON.parse(key);
+ result.push({
+ width: iconSize.width,
+ height: iconSize.height,
+ url: this._iconMapObj[key]
+ });
+ }
+
+ return result;
+ },
+
+ /**
+ * Opens a speculative connection to the engine's search URI
+ * (and suggest URI, if different) to reduce request latency
+ *
+ * @param options
+ * An object that must contain the following fields:
+ * {window} the content window for the window performing the search
+ *
+ * @throws NS_ERROR_INVALID_ARG if options is omitted or lacks required
+ * elemeents
+ */
+ speculativeConnect: function SRCH_ENG_speculativeConnect(options) {
+ if (!options || !options.window) {
+ Cu.reportError("invalid options arg passed to nsISearchEngine.speculativeConnect");
+ throw Cr.NS_ERROR_INVALID_ARG;
+ }
+ let connector =
+ Services.io.QueryInterface(Components.interfaces.nsISpeculativeConnect);
+
+ let searchURI = this.getSubmission("dummy").uri;
+
+ let callbacks = options.window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIWebNavigation)
+ .QueryInterface(Components.interfaces.nsILoadContext);
+
+ connector.speculativeConnect(searchURI, callbacks);
+
+ if (this.supportsResponseType(URLTYPE_SUGGEST_JSON)) {
+ let suggestURI = this.getSubmission("dummy", URLTYPE_SUGGEST_JSON).uri;
+ if (suggestURI.prePath != searchURI.prePath)
+ connector.speculativeConnect(suggestURI, callbacks);
+ }
+ },
+};
+
+// nsISearchSubmission
+function Submission(aURI, aPostData = null) {
+ this._uri = aURI;
+ this._postData = aPostData;
+}
+Submission.prototype = {
+ get uri() {
+ return this._uri;
+ },
+ get postData() {
+ return this._postData;
+ },
+ QueryInterface: function SRCH_SUBM_QI(aIID) {
+ if (aIID.equals(Ci.nsISearchSubmission) ||
+ aIID.equals(Ci.nsISupports))
+ return this;
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ }
+}
+
+// nsISearchParseSubmissionResult
+function ParseSubmissionResult(aEngine, aTerms, aTermsOffset, aTermsLength) {
+ this._engine = aEngine;
+ this._terms = aTerms;
+ this._termsOffset = aTermsOffset;
+ this._termsLength = aTermsLength;
+}
+ParseSubmissionResult.prototype = {
+ get engine() {
+ return this._engine;
+ },
+ get terms() {
+ return this._terms;
+ },
+ get termsOffset() {
+ return this._termsOffset;
+ },
+ get termsLength() {
+ return this._termsLength;
+ },
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsISearchParseSubmissionResult]),
+}
+
+const gEmptyParseSubmissionResult =
+ Object.freeze(new ParseSubmissionResult(null, "", -1, 0));
+
+function executeSoon(func) {
+ Services.tm.mainThread.dispatch(func, Ci.nsIThread.DISPATCH_NORMAL);
+}
+
+/**
+ * Check for sync initialization has completed or not.
+ *
+ * @param {aPromise} A promise.
+ *
+ * @returns the value returned by the invoked method.
+ * @throws NS_ERROR_ALREADY_INITIALIZED if sync initialization has completed.
+ */
+function checkForSyncCompletion(aPromise) {
+ return aPromise.then(function(aValue) {
+ if (gInitialized) {
+ throw Components.Exception("Synchronous fallback was called and has " +
+ "finished so no need to pursue asynchronous " +
+ "initialization",
+ Cr.NS_ERROR_ALREADY_INITIALIZED);
+ }
+ return aValue;
+ });
+}
+
+// nsIBrowserSearchService
+function SearchService() {
+ // Replace empty LOG function with the useful one if the log pref is set.
+ if (getBoolPref(BROWSER_SEARCH_PREF + "log", false))
+ LOG = DO_LOG;
+
+ this._initObservers = Promise.defer();
+}
+
+SearchService.prototype = {
+ classID: Components.ID("{7319788a-fe93-4db3-9f39-818cf08f4256}"),
+
+ // The current status of initialization. Note that it does not determine if
+ // initialization is complete, only if an error has been encountered so far.
+ _initRV: Cr.NS_OK,
+
+ // The boolean indicates that the initialization has started or not.
+ _initStarted: null,
+
+ // If initialization has not been completed yet, perform synchronous
+ // initialization.
+ // Throws in case of initialization error.
+ _ensureInitialized: function SRCH_SVC__ensureInitialized() {
+ if (gInitialized) {
+ if (!Components.isSuccessCode(this._initRV)) {
+ LOG("_ensureInitialized: failure");
+ throw this._initRV;
+ }
+ return;
+ }
+
+ let warning =
+ "Search service falling back to synchronous initialization. " +
+ "This is generally the consequence of an add-on using a deprecated " +
+ "search service API.";
+ Deprecated.warning(warning, "https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIBrowserSearchService#async_warning");
+ LOG(warning);
+
+ engineMetadataService.syncInit();
+ this._syncInit();
+ if (!Components.isSuccessCode(this._initRV)) {
+ throw this._initRV;
+ }
+ },
+
+ // Synchronous implementation of the initializer.
+ // Used by |_ensureInitialized| as a fallback if initialization is not
+ // complete.
+ _syncInit: function SRCH_SVC__syncInit() {
+ LOG("_syncInit start");
+ this._initStarted = true;
+ migrateRegionPrefs();
+ try {
+ this._syncLoadEngines();
+ } catch (ex) {
+ this._initRV = Cr.NS_ERROR_FAILURE;
+ LOG("_syncInit: failure loading engines: " + ex);
+ }
+ this._addObservers();
+
+ gInitialized = true;
+
+ this._initObservers.resolve(this._initRV);
+
+ Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "init-complete");
+
+ LOG("_syncInit end");
+ },
+
+ /**
+ * Asynchronous implementation of the initializer.
+ *
+ * @returns {Promise} A promise, resolved successfully if the initialization
+ * succeeds.
+ */
+ _asyncInit: function SRCH_SVC__asyncInit() {
+ migrateRegionPrefs();
+ return Task.spawn(function() {
+ LOG("_asyncInit start");
+ try {
+ yield checkForSyncCompletion(ensureKnownCountryCode());
+ } catch (ex if ex.result != Cr.NS_ERROR_ALREADY_INITIALIZED) {
+ LOG("_asyncInit: failure determining country code: " + ex);
+ }
+ try {
+ yield checkForSyncCompletion(this._asyncLoadEngines());
+ } catch (ex if ex.result != Cr.NS_ERROR_ALREADY_INITIALIZED) {
+ this._initRV = Cr.NS_ERROR_FAILURE;
+ LOG("_asyncInit: failure loading engines: " + ex);
+ }
+ this._addObservers();
+ gInitialized = true;
+ this._initObservers.resolve(this._initRV);
+ Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "init-complete");
+
+ LOG("_asyncInit: Completed _asyncInit");
+ }.bind(this));
+ },
+
+
+ _engines: { },
+ __sortedEngines: null,
+ _visibleDefaultEngines: [],
+ get _sortedEngines() {
+ if (!this.__sortedEngines)
+ return this._buildSortedEngineList();
+ return this.__sortedEngines;
+ },
+
+ // Get the original Engine object that is the default for this region,
+ // ignoring changes the user may have subsequently made.
+ get _originalDefaultEngine() {
+ let defaultEngine = engineMetadataService.getGlobalAttr("searchDefault");
+ if (defaultEngine &&
+ engineMetadataService.getGlobalAttr("searchDefaultHash") != getVerificationHash(defaultEngine)) {
+ LOG("get _originalDefaultEngine, invalid searchDefaultHash for: " + defaultEngine);
+ defaultEngine = "";
+ }
+
+ if (!defaultEngine) {
+ let defaultPrefB = Services.prefs.getDefaultBranch(BROWSER_SEARCH_PREF);
+ let nsIPLS = Ci.nsIPrefLocalizedString;
+
+ let defPref = getGeoSpecificPrefName("defaultenginename");
+ try {
+ defaultEngine = defaultPrefB.getComplexValue(defPref, nsIPLS).data;
+ } catch (ex) {
+ // If the default pref is invalid (e.g. an add-on set it to a bogus value)
+ // getEngineByName will just return null, which is the best we can do.
+ }
+ }
+
+ return this.getEngineByName(defaultEngine);
+ },
+
+ resetToOriginalDefaultEngine: function SRCH_SVC__resetToOriginalDefaultEngine() {
+ this.currentEngine = this._originalDefaultEngine;
+ },
+
+ _buildCache: function SRCH_SVC__buildCache() {
+ let cache = {};
+ let locale = getLocale();
+ let buildID = Services.appinfo.platformBuildID;
+
+ // Allows us to force a cache refresh should the cache format change.
+ cache.version = CACHE_VERSION;
+ // We don't want to incur the costs of stat()ing each plugin on every
+ // startup when the only (supported) time they will change is during
+ // runtime (where we refresh for changes through the API) and app updates
+ // (where the buildID is obviously going to change).
+ // Extension-shipped plugins are the only exception to this, but their
+ // directories are blown away during updates, so we'll detect their changes.
+ cache.buildID = buildID;
+ cache.locale = locale;
+
+ cache.directories = {};
+ cache.visibleDefaultEngines = this._visibleDefaultEngines;
+
+ let getParent = engine => {
+ if (engine._file)
+ return engine._file.parent;
+
+ let uri = engine._uri;
+ if (!uri.schemeIs("resource")) {
+ LOG("getParent: engine URI must be a resource URI if it has no file");
+ return null;
+ }
+
+ // use the underlying JAR file, for resource URIs
+ let chan = makeChannel(uri.spec);
+ if (chan)
+ return this._convertChannelToFile(chan);
+
+ LOG("getParent: couldn't map resource:// URI to a file");
+ return null;
+ };
+
+ for (let name in this._engines) {
+ let engine = this._engines[name];
+ let parent = getParent(engine);
+ if (!parent) {
+ LOG("Error: no parent for engine " + engine._location + ", failing to cache it");
+
+ continue;
+ }
+
+ let cacheKey = parent.path;
+ if (!cache.directories[cacheKey]) {
+ let cacheEntry = {};
+ cacheEntry.lastModifiedTime = parent.lastModifiedTime;
+ cacheEntry.engines = [];
+ cache.directories[cacheKey] = cacheEntry;
+ }
+ cache.directories[cacheKey].engines.push(engine);
+ }
+
+ try {
+ LOG("_buildCache: Writing to cache file.");
+ let path = OS.Path.join(OS.Constants.Path.profileDir, "search.json");
+ let data = gEncoder.encode(JSON.stringify(cache));
+ let promise = OS.File.writeAtomic(path, data, { tmpPath: path + ".tmp"});
+
+ promise.then(
+ function onSuccess() {
+ Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, SEARCH_SERVICE_CACHE_WRITTEN);
+ },
+ function onError(e) {
+ LOG("_buildCache: failure during writeAtomic: " + e);
+ }
+ );
+ } catch (ex) {
+ LOG("_buildCache: Could not write to cache file: " + ex);
+ }
+ },
+
+ _syncLoadEngines: function SRCH_SVC__syncLoadEngines() {
+ LOG("_syncLoadEngines: start");
+ // See if we have a cache file so we don't have to parse a bunch of XML.
+ let cache = {};
+ let cacheFile = getDir(NS_APP_USER_PROFILE_50_DIR);
+ cacheFile.append("search.json");
+ if (cacheFile.exists())
+ cache = this._readCacheFile(cacheFile);
+
+ let [chromeFiles, chromeURIs] = this._findJAREngines();
+
+ let distDirs = [];
+ let locations;
+ try {
+ locations = getDir(NS_APP_DISTRIBUTION_SEARCH_DIR_LIST,
+ Ci.nsISimpleEnumerator);
+ } catch (e) {
+ // NS_APP_DISTRIBUTION_SEARCH_DIR_LIST is defined by each app
+ // so this throws during unit tests (but not xpcshell tests).
+ locations = {hasMoreElements: () => false};
+ }
+ while (locations.hasMoreElements()) {
+ let dir = locations.getNext().QueryInterface(Ci.nsIFile);
+ if (dir.directoryEntries.hasMoreElements())
+ distDirs.push(dir);
+ }
+
+ let otherDirs = [];
+ locations = getDir(NS_APP_SEARCH_DIR_LIST, Ci.nsISimpleEnumerator);
+ while (locations.hasMoreElements()) {
+ let dir = locations.getNext().QueryInterface(Ci.nsIFile);
+ if (dir.directoryEntries.hasMoreElements())
+ otherDirs.push(dir);
+ }
+
+ let toLoad = chromeFiles.concat(distDirs, otherDirs);
+
+ function modifiedDir(aDir) {
+ return (!cache.directories || !cache.directories[aDir.path] ||
+ cache.directories[aDir.path].lastModifiedTime != aDir.lastModifiedTime);
+ }
+
+ function notInCachePath(aPathToLoad) {
+ return cachePaths.indexOf(aPathToLoad.path) == -1;
+ }
+ function notInCacheVisibleEngines(aEngineName) {
+ return cache.visibleDefaultEngines.indexOf(aEngineName) == -1;
+ }
+
+ let buildID = Services.appinfo.platformBuildID;
+ // Gecko44: let cachePaths = [path for (path in cache.directories)];
+ let cachePaths = [];
+ for (path in cache.directories) {
+ cachePaths.push(path);
+ }
+
+
+ let rebuildCache = !cache.directories ||
+ cache.version != CACHE_VERSION ||
+ cache.locale != getLocale() ||
+ cache.buildID != buildID ||
+ cachePaths.length != toLoad.length ||
+ toLoad.some(notInCachePath) ||
+ cache.visibleDefaultEngines.length != this._visibleDefaultEngines.length ||
+ this._visibleDefaultEngines.some(notInCacheVisibleEngines) ||
+ toLoad.some(modifiedDir);
+
+ if (rebuildCache) {
+ LOG("_loadEngines: Absent or outdated cache. Loading engines from disk.");
+ distDirs.forEach(this._loadEnginesFromDir, this);
+
+ this._loadFromChromeURLs(chromeURIs);
+
+ otherDirs.forEach(this._loadEnginesFromDir, this);
+
+ this._buildCache();
+ return;
+ }
+
+ LOG("_loadEngines: loading from cache directories");
+ for (let cacheKey in cache.directories) {
+ let dir = cache.directories[cacheKey];
+ this._loadEnginesFromCache(dir);
+ }
+
+ LOG("_loadEngines: done");
+ },
+
+ /**
+ * Loads engines asynchronously.
+ *
+ * @returns {Promise} A promise, resolved successfully if loading data
+ * succeeds.
+ */
+ _asyncLoadEngines: function SRCH_SVC__asyncLoadEngines() {
+ return Task.spawn(function() {
+ LOG("_asyncLoadEngines: start");
+ // See if we have a cache file so we don't have to parse a bunch of XML.
+ let cache = {};
+ let cacheFilePath = OS.Path.join(OS.Constants.Path.profileDir, "search.json");
+ cache = yield checkForSyncCompletion(this._asyncReadCacheFile(cacheFilePath));
+
+ Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "find-jar-engines");
+ let [chromeFiles, chromeURIs] =
+ yield checkForSyncCompletion(this._asyncFindJAREngines());
+
+ // Get the non-empty distribution directories into distDirs...
+ let distDirs = [];
+ let locations;
+ try {
+ locations = getDir(NS_APP_DISTRIBUTION_SEARCH_DIR_LIST,
+ Ci.nsISimpleEnumerator);
+ } catch (e) {
+ // NS_APP_DISTRIBUTION_SEARCH_DIR_LIST is defined by each app
+ // so this throws during unit tests (but not xpcshell tests).
+ locations = {hasMoreElements: () => false};
+ }
+ while (locations.hasMoreElements()) {
+ let dir = locations.getNext().QueryInterface(Ci.nsIFile);
+ let iterator = new OS.File.DirectoryIterator(dir.path,
+ { winPattern: "*.xml" });
+ try {
+ // Add dir to distDirs if it contains any files.
+ yield checkForSyncCompletion(iterator.next());
+ distDirs.push(dir);
+ } catch (ex if ex.result != Cr.NS_ERROR_ALREADY_INITIALIZED) {
+ // Catch for StopIteration exception.
+ } finally {
+ iterator.close();
+ }
+ }
+
+ // Add the non-empty directories of NS_APP_SEARCH_DIR_LIST to
+ // otherDirs...
+ let otherDirs = [];
+ locations = getDir(NS_APP_SEARCH_DIR_LIST, Ci.nsISimpleEnumerator);
+ while (locations.hasMoreElements()) {
+ let dir = locations.getNext().QueryInterface(Ci.nsIFile);
+ let iterator = new OS.File.DirectoryIterator(dir.path,
+ { winPattern: "*.xml" });
+ try {
+ // Add dir to otherDirs if it contains any files.
+ yield checkForSyncCompletion(iterator.next());
+ otherDirs.push(dir);
+ } catch (ex if ex.result != Cr.NS_ERROR_ALREADY_INITIALIZED) {
+ // Catch for StopIteration exception.
+ } finally {
+ iterator.close();
+ }
+ }
+
+ let toLoad = chromeFiles.concat(distDirs, otherDirs);
+ function hasModifiedDir(aList) {
+ return Task.spawn(function() {
+ let modifiedDir = false;
+
+ for (let dir of aList) {
+ if (!cache.directories || !cache.directories[dir.path]) {
+ modifiedDir = true;
+ break;
+ }
+
+ let info = yield OS.File.stat(dir.path);
+ if (cache.directories[dir.path].lastModifiedTime !=
+ info.lastModificationDate.getTime()) {
+ modifiedDir = true;
+ break;
+ }
+ }
+ throw new Task.Result(modifiedDir);
+ });
+ }
+
+ function notInCachePath(aPathToLoad) {
+ return cachePaths.indexOf(aPathToLoad.path) == -1;
+ }
+ function notInCacheVisibleEngines(aEngineName) {
+ return cache.visibleDefaultEngines.indexOf(aEngineName) == -1;
+ }
+
+ let buildID = Services.appinfo.platformBuildID;
+ // Gecko44: let cachePaths = [path for (path in cache.directories)];
+ let cachePaths = [];
+ for (path in cache.directories) {
+ cachePaths.push(path);
+ }
+
+ let rebuildCache = !cache.directories ||
+ cache.version != CACHE_VERSION ||
+ cache.locale != getLocale() ||
+ cache.buildID != buildID ||
+ cachePaths.length != toLoad.length ||
+ toLoad.some(notInCachePath) ||
+ cache.visibleDefaultEngines.length != this._visibleDefaultEngines.length ||
+ this._visibleDefaultEngines.some(notInCacheVisibleEngines) ||
+ (yield checkForSyncCompletion(hasModifiedDir(toLoad)));
+
+ if (rebuildCache) {
+ LOG("_asyncLoadEngines: Absent or outdated cache. Loading engines from disk.");
+ let engines = [];
+ for (let loadDir of distDirs) {
+ let enginesFromDir =
+ yield checkForSyncCompletion(this._asyncLoadEnginesFromDir(loadDir));
+ engines = engines.concat(enginesFromDir);
+ }
+ let enginesFromURLs =
+ yield checkForSyncCompletion(this._asyncLoadFromChromeURLs(chromeURIs));
+ engines = engines.concat(enginesFromURLs);
+ for (let loadDir of otherDirs) {
+ let enginesFromDir =
+ yield checkForSyncCompletion(this._asyncLoadEnginesFromDir(loadDir));
+ engines = engines.concat(enginesFromDir);
+ }
+
+ for (let engine of engines) {
+ this._addEngineToStore(engine);
+ }
+ this._buildCache();
+ return;
+ }
+
+ LOG("_asyncLoadEngines: loading from cache directories");
+ for (let cacheKey in cache.directories) {
+ let dir = cache.directories[cacheKey];
+ this._loadEnginesFromCache(dir);
+ }
+
+ LOG("_asyncLoadEngines: done");
+ }.bind(this));
+ },
+
+ _asyncReInit: function () {
+ LOG("_asyncReInit");
+ // Start by clearing the initialized state, so we don't abort early.
+ gInitialized = false;
+
+ // Clear the engines, too, so we don't stick with the stale ones.
+ this._engines = {};
+ this.__sortedEngines = null;
+ this._currentEngine = null;
+ this._defaultEngine = null;
+ this._visibleDefaultEngines = [];
+
+ // Clear the metadata service.
+ engineMetadataService._initialized = false;
+ engineMetadataService._initializer = null;
+
+ Task.spawn(function* () {
+ try {
+ LOG("Restarting engineMetadataService");
+ yield engineMetadataService.init();
+ yield ensureKnownCountryCode();
+
+ // Due to the HTTP requests done by ensureKnownCountryCode, it's possible that
+ // at this point a synchronous init has been forced by other code.
+ if (!gInitialized)
+ yield this._asyncLoadEngines();
+
+ // Typically we'll re-init as a result of a pref observer,
+ // so signal to 'callers' that we're done.
+ Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "reinit-complete");
+ gInitialized = true;
+ } catch (err) {
+ LOG("Reinit failed: " + err);
+ Services.obs.notifyObservers(null, SEARCH_SERVICE_TOPIC, "reinit-failed");
+ }
+ }.bind(this));
+ },
+
+ _readCacheFile: function SRCH_SVC__readCacheFile(aFile) {
+ let stream = Cc["@mozilla.org/network/file-input-stream;1"].
+ createInstance(Ci.nsIFileInputStream);
+ let json = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
+
+ try {
+ stream.init(aFile, MODE_RDONLY, FileUtils.PERMS_FILE, 0);
+ return json.decodeFromStream(stream, stream.available());
+ } catch (ex) {
+ LOG("_readCacheFile: Error reading cache file: " + ex);
+ } finally {
+ stream.close();
+ }
+ return false;
+ },
+
+ /**
+ * Read from a given cache file asynchronously.
+ *
+ * @param aPath the file path.
+ *
+ * @returns {Promise} A promise, resolved successfully if retrieveing data
+ * succeeds.
+ */
+ _asyncReadCacheFile: function SRCH_SVC__asyncReadCacheFile(aPath) {
+ return Task.spawn(function() {
+ let json;
+ try {
+ let bytes = yield OS.File.read(aPath);
+ json = JSON.parse(new TextDecoder().decode(bytes));
+ } catch (ex) {
+ LOG("_asyncReadCacheFile: Error reading cache file: " + ex);
+ json = {};
+ }
+ throw new Task.Result(json);
+ });
+ },
+
+ _batchTask: null,
+ get batchTask() {
+ if (!this._batchTask) {
+ let task = function taskCallback() {
+ LOG("batchTask: Invalidating engine cache");
+ this._buildCache();
+ }.bind(this);
+ this._batchTask = new DeferredTask(task, CACHE_INVALIDATION_DELAY);
+ }
+ return this._batchTask;
+ },
+
+ _addEngineToStore: function SRCH_SVC_addEngineToStore(aEngine) {
+ LOG("_addEngineToStore: Adding engine: \"" + aEngine.name + "\"");
+
+ // See if there is an existing engine with the same name. However, if this
+ // engine is updating another engine, it's allowed to have the same name.
+ var hasSameNameAsUpdate = (aEngine._engineToUpdate &&
+ aEngine.name == aEngine._engineToUpdate.name);
+ if (aEngine.name in this._engines && !hasSameNameAsUpdate) {
+ LOG("_addEngineToStore: Duplicate engine found, aborting!");
+ return;
+ }
+
+ if (aEngine._engineToUpdate) {
+ // We need to replace engineToUpdate with the engine that just loaded.
+ var oldEngine = aEngine._engineToUpdate;
+
+ // Remove the old engine from the hash, since it's keyed by name, and our
+ // name might change (the update might have a new name).
+ delete this._engines[oldEngine.name];
+
+ // Hack: we want to replace the old engine with the new one, but since
+ // people may be holding refs to the nsISearchEngine objects themselves,
+ // we'll just copy over all "private" properties (those without a getter
+ // or setter) from one object to the other.
+ for (var p in aEngine) {
+ if (!(aEngine.__lookupGetter__(p) || aEngine.__lookupSetter__(p)))
+ oldEngine[p] = aEngine[p];
+ }
+ aEngine = oldEngine;
+ aEngine._engineToUpdate = null;
+
+ // Add the engine back
+ this._engines[aEngine.name] = aEngine;
+ notifyAction(aEngine, SEARCH_ENGINE_CHANGED);
+ } else {
+ // Not an update, just add the new engine.
+ this._engines[aEngine.name] = aEngine;
+ // Only add the engine to the list of sorted engines if the initial list
+ // has already been built (i.e. if this.__sortedEngines is non-null). If
+ // it hasn't, we're loading engines from disk and the sorted engine list
+ // will be built once we need it.
+ if (this.__sortedEngines) {
+ this.__sortedEngines.push(aEngine);
+ this._saveSortedEngineList();
+ }
+ notifyAction(aEngine, SEARCH_ENGINE_ADDED);
+ }
+
+ if (aEngine._hasUpdates) {
+ // Schedule the engine's next update, if it isn't already.
+ if (!engineMetadataService.getAttr(aEngine, "updateexpir"))
+ engineUpdateService.scheduleNextUpdate(aEngine);
+ }
+ },
+
+ _loadEnginesFromCache: function SRCH_SVC__loadEnginesFromCache(aDir) {
+ let engines = aDir.engines;
+ LOG("_loadEnginesFromCache: Loading from cache. " + engines.length + " engines to load.");
+ for (let i = 0; i < engines.length; i++) {
+ let json = engines[i];
+
+ try {
+ let engine;
+ if (json.filePath)
+ engine = new Engine({type: "filePath", value: json.filePath},
+ json._readOnly);
+ else if (json._url)
+ engine = new Engine({type: "uri", value: json._url}, json._readOnly);
+
+ engine._initWithJSON(json);
+ this._addEngineToStore(engine);
+ } catch (ex) {
+ LOG("Failed to load " + engines[i]._name + " from cache: " + ex);
+ LOG("Engine JSON: " + engines[i].toSource());
+ }
+ }
+ },
+
+ _loadEnginesFromDir: function SRCH_SVC__loadEnginesFromDir(aDir) {
+ LOG("_loadEnginesFromDir: Searching in " + aDir.path + " for search engines.");
+
+ // Check whether aDir is the user profile dir
+ var isInProfile = aDir.equals(getDir(NS_APP_USER_SEARCH_DIR));
+
+ var files = aDir.directoryEntries
+ .QueryInterface(Ci.nsIDirectoryEnumerator);
+
+ while (files.hasMoreElements()) {
+ var file = files.nextFile;
+
+ // Ignore hidden and empty files, and directories
+ if (!file.isFile() || file.fileSize == 0 || file.isHidden())
+ continue;
+
+ var fileURL = NetUtil.ioService.newFileURI(file).QueryInterface(Ci.nsIURL);
+ var fileExtension = fileURL.fileExtension.toLowerCase();
+ var isWritable = isInProfile && file.isWritable();
+
+ if (fileExtension != "xml") {
+ // Not an engine
+ continue;
+ }
+
+ var addedEngine = null;
+ try {
+ addedEngine = new Engine(file, !isWritable);
+ addedEngine._initFromFile();
+ } catch (ex) {
+ LOG("_loadEnginesFromDir: Failed to load " + file.path + "!\n" + ex);
+ continue;
+ }
+
+ this._addEngineToStore(addedEngine);
+ }
+ },
+
+ /**
+ * Loads engines from a given directory asynchronously.
+ *
+ * @param aDir the directory.
+ *
+ * @returns {Promise} A promise, resolved successfully if retrieveing data
+ * succeeds.
+ */
+ _asyncLoadEnginesFromDir: function SRCH_SVC__asyncLoadEnginesFromDir(aDir) {
+ LOG("_asyncLoadEnginesFromDir: Searching in " + aDir.path + " for search engines.");
+
+ // Check whether aDir is the user profile dir
+ let isInProfile = aDir.equals(getDir(NS_APP_USER_SEARCH_DIR));
+ let iterator = new OS.File.DirectoryIterator(aDir.path);
+ return Task.spawn(function() {
+ let osfiles = yield iterator.nextBatch();
+ iterator.close();
+
+ let engines = [];
+ for (let osfile of osfiles) {
+ if (osfile.isDir || osfile.isSymLink)
+ continue;
+
+ let fileInfo = yield OS.File.stat(osfile.path);
+ if (fileInfo.size == 0)
+ continue;
+
+ let parts = osfile.path.split(".");
+ if (parts.length <= 1 || (parts.pop()).toLowerCase() != "xml") {
+ // Not an engine
+ continue;
+ }
+
+ let addedEngine = null;
+ try {
+ let file = new FileUtils.File(osfile.path);
+ let isWritable = isInProfile;
+ addedEngine = new Engine(file, !isWritable);
+ yield checkForSyncCompletion(addedEngine._asyncInitFromFile());
+ } catch (ex if ex.result != Cr.NS_ERROR_ALREADY_INITIALIZED) {
+ LOG("_asyncLoadEnginesFromDir: Failed to load " + osfile.path + "!\n" + ex);
+ continue;
+ }
+ engines.push(addedEngine);
+ }
+ throw new Task.Result(engines);
+ }.bind(this));
+ },
+
+ _loadFromChromeURLs: function SRCH_SVC_loadFromChromeURLs(aURLs) {
+ aURLs.forEach(function (url) {
+ try {
+ LOG("_loadFromChromeURLs: loading engine from chrome url: " + url);
+
+ let engine = new Engine(makeURI(url), true);
+
+ engine._initFromURISync();
+
+ this._addEngineToStore(engine);
+ } catch (ex) {
+ LOG("_loadFromChromeURLs: failed to load engine: " + ex);
+ }
+ }, this);
+ },
+
+ /**
+ * Loads engines from Chrome URLs asynchronously.
+ *
+ * @param aURLs a list of URLs.
+ *
+ * @returns {Promise} A promise, resolved successfully if loading data
+ * succeeds.
+ */
+ _asyncLoadFromChromeURLs: function SRCH_SVC__asyncLoadFromChromeURLs(aURLs) {
+ return Task.spawn(function() {
+ let engines = [];
+ for (let url of aURLs) {
+ try {
+ LOG("_asyncLoadFromChromeURLs: loading engine from chrome url: " + url);
+ let engine = new Engine(NetUtil.newURI(url), true);
+ yield checkForSyncCompletion(engine._asyncInitFromURI());
+ engines.push(engine);
+ } catch (ex if ex.result != Cr.NS_ERROR_ALREADY_INITIALIZED) {
+ LOG("_asyncLoadFromChromeURLs: failed to load engine: " + ex);
+ }
+ }
+ throw new Task.Result(engines);
+ }.bind(this));
+ },
+
+ _convertChannelToFile: function(chan) {
+ let fileURI = chan.URI;
+ while (fileURI instanceof Ci.nsIJARURI)
+ fileURI = fileURI.JARFile;
+ fileURI.QueryInterface(Ci.nsIFileURL);
+
+ return fileURI.file;
+ },
+
+ _findJAREngines: function SRCH_SVC_findJAREngines() {
+ LOG("_findJAREngines: looking for engines in JARs")
+
+ let chan = makeChannel(APP_SEARCH_PREFIX + "list.txt");
+ if (!chan) {
+ LOG("_findJAREngines: " + APP_SEARCH_PREFIX + " isn't registered");
+ return [[], []];
+ }
+
+ let uris = [];
+ let chromeFiles = [];
+
+ // Find the underlying JAR file (_loadEngines uses it to determine
+ // whether it needs to invalidate the cache)
+ let jarPackaging = false;
+ if (chan.URI instanceof Ci.nsIJARURI) {
+ chromeFiles.push(this._convertChannelToFile(chan));
+ jarPackaging = true;
+ }
+
+ let sis = Cc["@mozilla.org/scriptableinputstream;1"].
+ createInstance(Ci.nsIScriptableInputStream);
+ sis.init(chan.open());
+ this._parseListTxt(sis.read(sis.available()), jarPackaging,
+ chromeFiles, uris);
+ return [chromeFiles, uris];
+ },
+
+ /**
+ * Loads jar engines asynchronously.
+ *
+ * @returns {Promise} A promise, resolved successfully if finding jar engines
+ * succeeds.
+ */
+ _asyncFindJAREngines: function SRCH_SVC__asyncFindJAREngines() {
+ return Task.spawn(function() {
+ LOG("_asyncFindJAREngines: looking for engines in JARs")
+
+ let listURL = APP_SEARCH_PREFIX + "list.txt";
+ let chan = makeChannel(listURL);
+ if (!chan) {
+ LOG("_asyncFindJAREngines: " + APP_SEARCH_PREFIX + " isn't registered");
+ throw new Task.Result([[], []]);
+ }
+
+ let uris = [];
+ let chromeFiles = [];
+
+ // Find the underlying JAR file (_loadEngines uses it to determine
+ // whether it needs to invalidate the cache)
+ let jarPackaging = false;
+ if (chan.URI instanceof Ci.nsIJARURI) {
+ chromeFiles.push(this._convertChannelToFile(chan));
+ jarPackaging = true;
+ }
+
+ // Read list.txt to find the engines we need to load.
+ let deferred = Promise.defer();
+ let request = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].
+ createInstance(Ci.nsIXMLHttpRequest);
+ request.overrideMimeType("text/plain");
+ request.onload = function(aEvent) {
+ deferred.resolve(aEvent.target.responseText);
+ };
+ request.onerror = function(aEvent) {
+ LOG("_asyncFindJAREngines: failed to read " + listURL);
+ deferred.resolve("");
+ };
+ request.open("GET", NetUtil.newURI(listURL).spec, true);
+ request.send();
+ let list = yield deferred.promise;
+
+ this._parseListTxt(list, jarPackaging, chromeFiles, uris);
+ throw new Task.Result([chromeFiles, uris]);
+ }.bind(this));
+ },
+
+ _parseListTxt: function SRCH_SVC_parseListTxt(list, jarPackaging,
+ chromeFiles, uris) {
+ let names = list.split("\n").filter(n => !!n);
+ // This maps the names of our built-in engines to a boolean
+ // indicating whether it should be hidden by default.
+ let jarNames = new Map();
+ for (let name of names) {
+ if (name.endsWith(":hidden")) {
+ name = name.split(":")[0];
+ jarNames.set(name, true);
+ } else {
+ jarNames.set(name, false);
+ }
+ }
+
+ // Check if we have a useable country specific list of visible default engines.
+ let engineNames;
+ let visibleDefaultEngines =
+ engineMetadataService.getGlobalAttr("visibleDefaultEngines");
+ if (visibleDefaultEngines &&
+ engineMetadataService.getGlobalAttr("visibleDefaultEnginesHash") == getVerificationHash(visibleDefaultEngines)) {
+ engineNames = visibleDefaultEngines.split(",");
+
+ for (let engineName of engineNames) {
+ // If all engineName values are part of jarNames,
+ // then we can use the country specific list, otherwise ignore it.
+ // The visibleDefaultEngines string containing the name of an engine we
+ // don't ship indicates the server is misconfigured to answer requests
+ // from the specific Firefox version we are running, so ignoring the
+ // value altogether is safer.
+ if (!jarNames.has(engineName)) {
+ LOG("_parseListTxt: ignoring visibleDefaultEngines value because " +
+ engineName + " is not in the jar engines we have found");
+ engineNames = null;
+ break;
+ }
+ }
+ }
+
+ // Fallback to building a list based on the :hidden suffixes found in list.txt.
+ if (!engineNames) {
+ engineNames = [];
+ for (let [name, hidden] of jarNames) {
+ if (!hidden)
+ engineNames.push(name);
+ }
+ }
+
+ for (let name of engineNames) {
+ let uri = APP_SEARCH_PREFIX + name + ".xml";
+ uris.push(uri);
+ if (!jarPackaging) {
+ // Flat packaging requires that _loadEngines checks the modification
+ // time of each engine file.
+ let chan = makeChannel(uri);
+ if (chan)
+ chromeFiles.push(this._convertChannelToFile(chan));
+ else
+ LOG("_findJAREngines: couldn't resolve " + uri);
+ }
+ }
+
+ // Store this so that it can be used while writing the cache file.
+ this._visibleDefaultEngines = engineNames;
+ },
+
+
+ _saveSortedEngineList: function SRCH_SVC_saveSortedEngineList() {
+ LOG("SRCH_SVC_saveSortedEngineList: starting");
+
+ // Set the useDB pref to indicate that from now on we should use the order
+ // information stored in the database.
+ Services.prefs.setBoolPref(BROWSER_SEARCH_PREF + "useDBForOrder", true);
+
+ var engines = this._getSortedEngines(true);
+
+ let instructions = [];
+ for (var i = 0; i < engines.length; ++i) {
+ instructions.push(
+ {key: "order",
+ value: i+1,
+ engine: engines[i]
+ });
+ }
+
+ engineMetadataService.setAttrs(instructions);
+ LOG("SRCH_SVC_saveSortedEngineList: done");
+ },
+
+ _buildSortedEngineList: function SRCH_SVC_buildSortedEngineList() {
+ LOG("_buildSortedEngineList: building list");
+ var addedEngines = { };
+ this.__sortedEngines = [];
+ var engine;
+
+ // If the user has specified a custom engine order, read the order
+ // information from the engineMetadataService instead of the default
+ // prefs.
+ if (getBoolPref(BROWSER_SEARCH_PREF + "useDBForOrder", false)) {
+ LOG("_buildSortedEngineList: using db for order");
+
+ // Flag to keep track of whether or not we need to call _saveSortedEngineList.
+ let needToSaveEngineList = false;
+
+ for (let name in this._engines) {
+ let engine = this._engines[name];
+ var orderNumber = engineMetadataService.getAttr(engine, "order");
+
+ // Since the DB isn't regularly cleared, and engine files may disappear
+ // without us knowing, we may already have an engine in this slot. If
+ // that happens, we just skip it - it will be added later on as an
+ // unsorted engine.
+ if (orderNumber && !this.__sortedEngines[orderNumber-1]) {
+ this.__sortedEngines[orderNumber-1] = engine;
+ addedEngines[engine.name] = engine;
+ } else {
+ // We need to call _saveSortedEngineList so this gets sorted out.
+ needToSaveEngineList = true;
+ }
+ }
+
+ // Filter out any nulls for engines that may have been removed
+ var filteredEngines = this.__sortedEngines.filter(function(a) { return !!a; });
+ if (this.__sortedEngines.length != filteredEngines.length)
+ needToSaveEngineList = true;
+ this.__sortedEngines = filteredEngines;
+
+ if (needToSaveEngineList)
+ this._saveSortedEngineList();
+ } else {
+ // The DB isn't being used, so just read the engine order from the prefs
+ var i = 0;
+ var engineName;
+ var prefName;
+
+ try {
+ var extras =
+ Services.prefs.getChildList(BROWSER_SEARCH_PREF + "order.extra.");
+
+ for (prefName of extras) {
+ engineName = Services.prefs.getCharPref(prefName);
+
+ engine = this._engines[engineName];
+ if (!engine || engine.name in addedEngines)
+ continue;
+
+ this.__sortedEngines.push(engine);
+ addedEngines[engine.name] = engine;
+ }
+ }
+ catch (e) { }
+
+ let prefNameBase = getGeoSpecificPrefName(BROWSER_SEARCH_PREF + "order");
+ while (true) {
+ prefName = prefNameBase + "." + (++i);
+ engineName = getLocalizedPref(prefName);
+ if (!engineName)
+ break;
+
+ engine = this._engines[engineName];
+ if (!engine || engine.name in addedEngines)
+ continue;
+
+ this.__sortedEngines.push(engine);
+ addedEngines[engine.name] = engine;
+ }
+ }
+
+ // Array for the remaining engines, alphabetically sorted.
+ let alphaEngines = [];
+
+ for (let name in this._engines) {
+ let engine = this._engines[name];
+ if (!(engine.name in addedEngines))
+ alphaEngines.push(this._engines[engine.name]);
+ }
+
+ let locale = Cc["@mozilla.org/intl/nslocaleservice;1"]
+ .getService(Ci.nsILocaleService)
+ .newLocale(getLocale());
+ let collation = Cc["@mozilla.org/intl/collation-factory;1"]
+ .createInstance(Ci.nsICollationFactory)
+ .CreateCollation(locale);
+ const strength = Ci.nsICollation.kCollationCaseInsensitiveAscii;
+ let comparator = (a, b) => collation.compareString(strength, a.name, b.name);
+ alphaEngines.sort(comparator);
+ return this.__sortedEngines = this.__sortedEngines.concat(alphaEngines);
+ },
+
+ /**
+ * Get a sorted array of engines.
+ * @param aWithHidden
+ * True if hidden plugins should be included in the result.
+ */
+ _getSortedEngines: function SRCH_SVC_getSorted(aWithHidden) {
+ if (aWithHidden)
+ return this._sortedEngines;
+
+ return this._sortedEngines.filter(function (engine) {
+ return !engine.hidden;
+ });
+ },
+
+ // nsIBrowserSearchService
+ init: function SRCH_SVC_init(observer) {
+ LOG("SearchService.init");
+ let self = this;
+ if (!this._initStarted) {
+ this._initStarted = true;
+ Task.spawn(function task() {
+ try {
+ yield checkForSyncCompletion(engineMetadataService.init());
+ // Complete initialization by calling asynchronous initializer.
+ yield self._asyncInit();
+ } catch (ex if ex.result == Cr.NS_ERROR_ALREADY_INITIALIZED) {
+ // No need to pursue asynchronous because synchronous fallback was
+ // called and has finished.
+ } catch (ex) {
+ self._initObservers.reject(ex);
+ }
+ });
+ }
+ if (observer) {
+ this._initObservers.promise.then(
+ function onSuccess() {
+ try {
+ observer.onInitComplete(self._initRV);
+ } catch (e) {
+ Cu.reportError(e);
+ }
+ },
+ function onError(aReason) {
+ Cu.reportError("Internal error while initializing SearchService: " + aReason);
+ observer.onInitComplete(Components.results.NS_ERROR_UNEXPECTED);
+ }
+ );
+ }
+ },
+
+ get isInitialized() {
+ return gInitialized;
+ },
+
+ getEngines: function SRCH_SVC_getEngines(aCount) {
+ this._ensureInitialized();
+ LOG("getEngines: getting all engines");
+ var engines = this._getSortedEngines(true);
+ aCount.value = engines.length;
+ return engines;
+ },
+
+ getVisibleEngines: function SRCH_SVC_getVisible(aCount) {
+ this._ensureInitialized();
+ LOG("getVisibleEngines: getting all visible engines");
+ var engines = this._getSortedEngines(false);
+ aCount.value = engines.length;
+ return engines;
+ },
+
+ getDefaultEngines: function SRCH_SVC_getDefault(aCount) {
+ this._ensureInitialized();
+ function isDefault(engine) {
+ return engine._isDefault;
+ };
+ var engines = this._sortedEngines.filter(isDefault);
+ var engineOrder = {};
+ var engineName;
+ var i = 1;
+
+ // Build a list of engines which we have ordering information for.
+ // We're rebuilding the list here because _sortedEngines contain the
+ // current order, but we want the original order.
+
+ // First, look at the "browser.search.order.extra" branch.
+ try {
+ var extras = Services.prefs.getChildList(BROWSER_SEARCH_PREF + "order.extra.");
+
+ for (var prefName of extras) {
+ engineName = Services.prefs.getCharPref(prefName);
+
+ if (!(engineName in engineOrder))
+ engineOrder[engineName] = i++;
+ }
+ } catch (e) {
+ LOG("Getting extra order prefs failed: " + e);
+ }
+
+ // Now look through the "browser.search.order" branch.
+ let prefNameBase = getGeoSpecificPrefName(BROWSER_SEARCH_PREF + "order");
+ for (var j = 1; ; j++) {
+ let prefName = prefNameBase + "." + j;
+ engineName = getLocalizedPref(prefName);
+ if (!engineName)
+ break;
+
+ if (!(engineName in engineOrder))
+ engineOrder[engineName] = i++;
+ }
+
+ LOG("getDefaultEngines: engineOrder: " + engineOrder.toSource());
+
+ function compareEngines (a, b) {
+ var aIdx = engineOrder[a.name];
+ var bIdx = engineOrder[b.name];
+
+ if (aIdx && bIdx)
+ return aIdx - bIdx;
+ if (aIdx)
+ return -1;
+ if (bIdx)
+ return 1;
+
+ return a.name.localeCompare(b.name);
+ }
+ engines.sort(compareEngines);
+
+ aCount.value = engines.length;
+ return engines;
+ },
+
+ getEngineByName: function SRCH_SVC_getEngineByName(aEngineName) {
+ this._ensureInitialized();
+ return this._engines[aEngineName] || null;
+ },
+
+ getEngineByAlias: function SRCH_SVC_getEngineByAlias(aAlias) {
+ this._ensureInitialized();
+ for (var engineName in this._engines) {
+ var engine = this._engines[engineName];
+ if (engine && engine.alias == aAlias)
+ return engine;
+ }
+ return null;
+ },
+
+ addEngineWithDetails: function SRCH_SVC_addEWD(aName, aIconURL, aAlias,
+ aDescription, aMethod,
+ aTemplate, aExtensionID) {
+ this._ensureInitialized();
+ if (!aName)
+ FAIL("Invalid name passed to addEngineWithDetails!");
+ if (!aMethod)
+ FAIL("Invalid method passed to addEngineWithDetails!");
+ if (!aTemplate)
+ FAIL("Invalid template passed to addEngineWithDetails!");
+ if (this._engines[aName])
+ FAIL("An engine with that name already exists!", Cr.NS_ERROR_FILE_ALREADY_EXISTS);
+
+ var engine = new Engine(getSanitizedFile(aName), false);
+ engine._initFromMetadata(aName, aIconURL, aAlias, aDescription,
+ aMethod, aTemplate, aExtensionID);
+ this._addEngineToStore(engine);
+ },
+
+ addEngine: function SRCH_SVC_addEngine(aEngineURL, aDataType, aIconURL,
+ aConfirm, aCallback) {
+ LOG("addEngine: Adding \"" + aEngineURL + "\".");
+ this._ensureInitialized();
+ try {
+ var uri = makeURI(aEngineURL);
+ var engine = new Engine(uri, false);
+ if (aCallback) {
+ engine._installCallback = function (errorCode) {
+ try {
+ if (errorCode == null)
+ aCallback.onSuccess(engine);
+ else
+ aCallback.onError(errorCode);
+ } catch (ex) {
+ Cu.reportError("Error invoking addEngine install callback: " + ex);
+ }
+ // Clear the reference to the callback now that it's been invoked.
+ engine._installCallback = null;
+ };
+ }
+ engine._initFromURIAndLoad();
+ } catch (ex) {
+ // Drop the reference to the callback, if set
+ if (engine)
+ engine._installCallback = null;
+ FAIL("addEngine: Error adding engine:\n" + ex, Cr.NS_ERROR_FAILURE);
+ }
+ engine._setIcon(aIconURL, false);
+ engine._confirm = aConfirm;
+ },
+
+ removeEngine: function SRCH_SVC_removeEngine(aEngine) {
+ this._ensureInitialized();
+ if (!aEngine)
+ FAIL("no engine passed to removeEngine!");
+
+ var engineToRemove = null;
+ for (var e in this._engines) {
+ if (aEngine.wrappedJSObject == this._engines[e])
+ engineToRemove = this._engines[e];
+ }
+
+ if (!engineToRemove)
+ FAIL("removeEngine: Can't find engine to remove!", Cr.NS_ERROR_FILE_NOT_FOUND);
+
+ if (engineToRemove == this.currentEngine) {
+ this._currentEngine = null;
+ }
+
+ if (engineToRemove == this.defaultEngine) {
+ this._defaultEngine = null;
+ }
+
+ if (engineToRemove._readOnly) {
+ // Just hide it (the "hidden" setter will notify) and remove its alias to
+ // avoid future conflicts with other engines.
+ engineToRemove.hidden = true;
+ engineToRemove.alias = null;
+ } else {
+ // Cancel the serialized task if it's pending. Since the task is a
+ // synchronous function, we don't need to wait on the "finalize" method.
+ if (engineToRemove._lazySerializeTask) {
+ engineToRemove._lazySerializeTask.disarm();
+ engineToRemove._lazySerializeTask = null;
+ }
+
+ // Remove the engine file from disk (this might throw)
+ engineToRemove._remove();
+ engineToRemove._file = null;
+
+ // Remove the engine from _sortedEngines
+ var index = this._sortedEngines.indexOf(engineToRemove);
+ if (index == -1)
+ FAIL("Can't find engine to remove in _sortedEngines!", Cr.NS_ERROR_FAILURE);
+ this.__sortedEngines.splice(index, 1);
+
+ // Remove the engine from the internal store
+ delete this._engines[engineToRemove.name];
+
+ notifyAction(engineToRemove, SEARCH_ENGINE_REMOVED);
+
+ // Since we removed an engine, we need to update the preferences.
+ this._saveSortedEngineList();
+ }
+ },
+
+ moveEngine: function SRCH_SVC_moveEngine(aEngine, aNewIndex) {
+ this._ensureInitialized();
+ if ((aNewIndex > this._sortedEngines.length) || (aNewIndex < 0))
+ FAIL("SRCH_SVC_moveEngine: Index out of bounds!");
+ if (!(aEngine instanceof Ci.nsISearchEngine))
+ FAIL("SRCH_SVC_moveEngine: Invalid engine passed to moveEngine!");
+ if (aEngine.hidden)
+ FAIL("moveEngine: Can't move a hidden engine!", Cr.NS_ERROR_FAILURE);
+
+ var engine = aEngine.wrappedJSObject;
+
+ var currentIndex = this._sortedEngines.indexOf(engine);
+ if (currentIndex == -1)
+ FAIL("moveEngine: Can't find engine to move!", Cr.NS_ERROR_UNEXPECTED);
+
+ // Our callers only take into account non-hidden engines when calculating
+ // aNewIndex, but we need to move it in the array of all engines, so we
+ // need to adjust aNewIndex accordingly. To do this, we count the number
+ // of hidden engines in the list before the engine that we're taking the
+ // place of. We do this by first finding newIndexEngine (the engine that
+ // we were supposed to replace) and then iterating through the complete
+ // engine list until we reach it, increasing aNewIndex for each hidden
+ // engine we find on our way there.
+ //
+ // This could be further simplified by having our caller pass in
+ // newIndexEngine directly instead of aNewIndex.
+ var newIndexEngine = this._getSortedEngines(false)[aNewIndex];
+ if (!newIndexEngine)
+ FAIL("moveEngine: Can't find engine to replace!", Cr.NS_ERROR_UNEXPECTED);
+
+ for (var i = 0; i < this._sortedEngines.length; ++i) {
+ if (newIndexEngine == this._sortedEngines[i])
+ break;
+ if (this._sortedEngines[i].hidden)
+ aNewIndex++;
+ }
+
+ if (currentIndex == aNewIndex)
+ return; // nothing to do!
+
+ // Move the engine
+ var movedEngine = this.__sortedEngines.splice(currentIndex, 1)[0];
+ this.__sortedEngines.splice(aNewIndex, 0, movedEngine);
+
+ notifyAction(engine, SEARCH_ENGINE_CHANGED);
+
+ // Since we moved an engine, we need to update the preferences.
+ this._saveSortedEngineList();
+ },
+
+ restoreDefaultEngines: function SRCH_SVC_resetDefaultEngines() {
+ this._ensureInitialized();
+ for (let name in this._engines) {
+ let e = this._engines[name];
+ // Unhide all default engines
+ if (e.hidden && e._isDefault)
+ e.hidden = false;
+ }
+ },
+
+ get defaultEngine() {
+ this._ensureInitialized();
+ if (!this._defaultEngine) {
+ let defPref = getGeoSpecificPrefName(BROWSER_SEARCH_PREF + "defaultenginename");
+ let defaultEngine = this.getEngineByName(getLocalizedPref(defPref, ""))
+ if (!defaultEngine)
+ defaultEngine = this._getSortedEngines(false)[0] || null;
+ this._defaultEngine = defaultEngine;
+ }
+ if (this._defaultEngine.hidden)
+ return this._getSortedEngines(false)[0];
+ return this._defaultEngine;
+ },
+
+ set defaultEngine(val) {
+ this._ensureInitialized();
+ // Sometimes we get wrapped nsISearchEngine objects (external XPCOM callers),
+ // and sometimes we get raw Engine JS objects (callers in this file), so
+ // handle both.
+ if (!(val instanceof Ci.nsISearchEngine) && !(val instanceof Engine))
+ FAIL("Invalid argument passed to defaultEngine setter");
+
+ let newDefaultEngine = this.getEngineByName(val.name);
+ if (!newDefaultEngine)
+ FAIL("Can't find engine in store!", Cr.NS_ERROR_UNEXPECTED);
+
+ if (newDefaultEngine == this._defaultEngine)
+ return;
+
+ this._defaultEngine = newDefaultEngine;
+
+ let defPref = getGeoSpecificPrefName(BROWSER_SEARCH_PREF + "defaultenginename");
+
+ // If we change the default engine in the future, that change should impact
+ // users who have switched away from and then back to the build's "default"
+ // engine. So clear the user pref when the defaultEngine is set to the
+ // build's default engine, so that the defaultEngine getter falls back to
+ // whatever the default is.
+ if (this._defaultEngine == this._originalDefaultEngine) {
+ Services.prefs.clearUserPref(defPref);
+ }
+ else {
+ setLocalizedPref(defPref, this._defaultEngine.name);
+ }
+
+ notifyAction(this._defaultEngine, SEARCH_ENGINE_DEFAULT);
+ },
+
+ get currentEngine() {
+ this._ensureInitialized();
+ if (!this._currentEngine) {
+ let name = engineMetadataService.getGlobalAttr("current");
+ if (engineMetadataService.getGlobalAttr("hash") == getVerificationHash(name)) {
+ this._currentEngine = this.getEngineByName(name);
+ }
+ }
+
+ if (!this._currentEngine || this._currentEngine.hidden)
+ this._currentEngine = this._originalDefaultEngine;
+ if (!this._currentEngine || this._currentEngine.hidden)
+ this._currentEngine = this._getSortedEngines(false)[0];
+
+ if (!this._currentEngine) {
+ // Last resort fallback: unhide the original default engine.
+ this._currentEngine = this._originalDefaultEngine;
+ if (this._currentEngine)
+ this._currentEngine.hidden = false;
+ }
+
+ return this._currentEngine;
+ },
+
+ set currentEngine(val) {
+ this._ensureInitialized();
+ // Sometimes we get wrapped nsISearchEngine objects (external XPCOM callers),
+ // and sometimes we get raw Engine JS objects (callers in this file), so
+ // handle both.
+ if (!(val instanceof Ci.nsISearchEngine) && !(val instanceof Engine))
+ FAIL("Invalid argument passed to currentEngine setter");
+
+ var newCurrentEngine = this.getEngineByName(val.name);
+ if (!newCurrentEngine)
+ FAIL("Can't find engine in store!", Cr.NS_ERROR_UNEXPECTED);
+
+ if (newCurrentEngine == this._currentEngine)
+ return;
+
+ this._currentEngine = newCurrentEngine;
+
+ // If we change the default engine in the future, that change should impact
+ // users who have switched away from and then back to the build's "default"
+ // engine. So clear the user pref when the currentEngine is set to the
+ // build's default engine, so that the currentEngine getter falls back to
+ // whatever the default is.
+ let newName = this._currentEngine.name;
+ if (this._currentEngine == this._originalDefaultEngine) {
+ newName = "";
+ }
+
+ engineMetadataService.setGlobalAttr("current", newName);
+ engineMetadataService.setGlobalAttr("hash", getVerificationHash(newName));
+
+ notifyAction(this._currentEngine, SEARCH_ENGINE_CURRENT);
+ },
+
+ getDefaultEngineInfo() {
+ let result = {};
+
+ let engine;
+ try {
+ engine = this.defaultEngine;
+ } catch(e) {
+ // The defaultEngine getter will throw if there's no engine at all,
+ // which shouldn't happen unless an add-on or a test deleted all of them.
+ // Our preferences UI doesn't let users do that.
+ Cu.reportError("getDefaultEngineInfo: No default engine");
+ }
+
+ if (!engine) {
+ result.name = "NONE";
+ } else {
+ if (engine.name)
+ result.name = engine.name;
+
+ result.loadPath = engine._anonymizedLoadPath;
+
+ // For privacy, we only collect the submission URL for engines
+ // from the application or distribution folder...
+ let sendSubmissionURL =
+ /^(?:jar:)?(?:\[app\]|\[distribution\])/.test(result.loadPath);
+
+ // ... or engines sorted by default near the top of the list.
+ if (!sendSubmissionURL) {
+ let extras =
+ Services.prefs.getChildList(BROWSER_SEARCH_PREF + "order.extra.");
+
+ for (let prefName of extras) {
+ try {
+ if (result.name == Services.prefs.getCharPref(prefName)) {
+ sendSubmissionURL = true;
+ break;
+ }
+ } catch(e) {}
+ }
+
+ let prefNameBase = getGeoSpecificPrefName(BROWSER_SEARCH_PREF + "order");
+ let i = 0;
+ while (!sendSubmissionURL) {
+ let prefName = prefNameBase + "." + (++i);
+ let engineName = getLocalizedPref(prefName);
+ if (!engineName)
+ break;
+ if (result.name == engineName) {
+ sendSubmissionURL = true;
+ break;
+ }
+ }
+ }
+
+ if (sendSubmissionURL) {
+ let uri = engine._getURLOfType("text/html")
+ .getSubmission("", engine, "searchbar").uri;
+ uri.userPass = ""; // Avoid reporting a username or password.
+ result.submissionURL = uri.spec;
+ }
+ }
+
+ return result;
+ },
+
+ /**
+ * This map is built lazily after the available search engines change. It
+ * allows quick parsing of an URL representing a search submission into the
+ * search engine name and original terms.
+ *
+ * The keys are strings containing the domain name and lowercase path of the
+ * engine submission, for example "www.google.com/search".
+ *
+ * The values are objects with these properties:
+ * {
+ * engine: The associated nsISearchEngine.
+ * termsParameterName: Name of the URL parameter containing the search
+ * terms, for example "q".
+ * }
+ */
+ _parseSubmissionMap: null,
+
+ _buildParseSubmissionMap: function SRCH_SVC__buildParseSubmissionMap() {
+ LOG("_buildParseSubmissionMap");
+ this._parseSubmissionMap = new Map();
+
+ // Used only while building the map, indicates which entries do not refer to
+ // the main domain of the engine but to an alternate domain, for example
+ // "www.google.fr" for the "www.google.com" search engine.
+ let keysOfAlternates = new Set();
+
+ for (let engine of this._sortedEngines) {
+ LOG("Processing engine: " + engine.name);
+
+ if (engine.hidden) {
+ LOG("Engine is hidden.");
+ continue;
+ }
+
+ let urlParsingInfo = engine.getURLParsingInfo();
+ if (!urlParsingInfo) {
+ LOG("Engine does not support URL parsing.");
+ continue;
+ }
+
+ // Store the same object on each matching map key, as an optimization.
+ let mapValueForEngine = {
+ engine: engine,
+ termsParameterName: urlParsingInfo.termsParameterName,
+ };
+
+ let processDomain = (domain, isAlternate) => {
+ let key = domain + urlParsingInfo.path;
+
+ // Apply the logic for which main domains take priority over alternate
+ // domains, even if they are found later in the ordered engine list.
+ let existingEntry = this._parseSubmissionMap.get(key);
+ if (!existingEntry) {
+ LOG("Adding new entry: " + key);
+ if (isAlternate) {
+ keysOfAlternates.add(key);
+ }
+ } else if (!isAlternate && keysOfAlternates.has(key)) {
+ LOG("Overriding alternate entry: " + key +
+ " (" + existingEntry.engine.name + ")");
+ keysOfAlternates.delete(key);
+ } else {
+ LOG("Keeping existing entry: " + key +
+ " (" + existingEntry.engine.name + ")");
+ return;
+ }
+
+ this._parseSubmissionMap.set(key, mapValueForEngine);
+ };
+
+ processDomain(urlParsingInfo.mainDomain, false);
+ SearchStaticData.getAlternateDomains(urlParsingInfo.mainDomain)
+ .forEach(d => processDomain(d, true));
+ }
+ },
+
+ parseSubmissionURL: function SRCH_SVC_parseSubmissionURL(aURL) {
+ this._ensureInitialized();
+ LOG("parseSubmissionURL: Parsing \"" + aURL + "\".");
+
+ if (!this._parseSubmissionMap) {
+ this._buildParseSubmissionMap();
+ }
+
+ // Extract the elements of the provided URL first.
+ let soughtKey, soughtQuery;
+ try {
+ let soughtUrl = NetUtil.newURI(aURL).QueryInterface(Ci.nsIURL);
+
+ // Exclude any URL that is not HTTP or HTTPS from the beginning.
+ if (soughtUrl.scheme != "http" && soughtUrl.scheme != "https") {
+ LOG("The URL scheme is not HTTP or HTTPS.");
+ return gEmptyParseSubmissionResult;
+ }
+
+ // Reading these URL properties may fail and raise an exception.
+ soughtKey = soughtUrl.host + soughtUrl.filePath.toLowerCase();
+ soughtQuery = soughtUrl.query;
+ } catch (ex) {
+ // Errors while parsing the URL or accessing the properties are not fatal.
+ LOG("The value does not look like a structured URL.");
+ return gEmptyParseSubmissionResult;
+ }
+
+ // Look up the domain and path in the map to identify the search engine.
+ let mapEntry = this._parseSubmissionMap.get(soughtKey);
+ if (!mapEntry) {
+ LOG("No engine associated with domain and path: " + soughtKey);
+ return gEmptyParseSubmissionResult;
+ }
+
+ // Extract the search terms from the parameter, for example "caff%C3%A8"
+ // from the URL "https://www.google.com/search?q=caff%C3%A8&client=firefox".
+ let encodedTerms = null;
+ for (let param of soughtQuery.split("&")) {
+ let equalPos = param.indexOf("=");
+ if (equalPos != -1 &&
+ param.substr(0, equalPos) == mapEntry.termsParameterName) {
+ // This is the parameter we are looking for.
+ encodedTerms = param.substr(equalPos + 1);
+ break;
+ }
+ }
+ if (encodedTerms === null) {
+ LOG("Missing terms parameter: " + mapEntry.termsParameterName);
+ return gEmptyParseSubmissionResult;
+ }
+
+ let length = 0;
+ let offset = aURL.indexOf("?") + 1;
+ let query = aURL.slice(offset);
+ // Iterate a second time over the original input string to determine the
+ // correct search term offset and length in the original encoding.
+ for (let param of query.split("&")) {
+ let equalPos = param.indexOf("=");
+ if (equalPos != -1 &&
+ param.substr(0, equalPos) == mapEntry.termsParameterName) {
+ // This is the parameter we are looking for.
+ offset += equalPos + 1;
+ length = param.length - equalPos - 1;
+ break;
+ }
+ offset += param.length + 1;
+ }
+
+ // Decode the terms using the charset defined in the search engine.
+ let terms;
+ try {
+ terms = gTextToSubURI.UnEscapeAndConvert(
+ mapEntry.engine.queryCharset,
+ encodedTerms.replace(/\+/g, " "));
+ } catch (ex) {
+ // Decoding errors will cause this match to be ignored.
+ LOG("Parameter decoding failed. Charset: " +
+ mapEntry.engine.queryCharset);
+ return gEmptyParseSubmissionResult;
+ }
+
+ LOG("Match found. Terms: " + terms);
+ return new ParseSubmissionResult(mapEntry.engine, terms, offset, length);
+ },
+
+ // nsIObserver
+ observe: function SRCH_SVC_observe(aEngine, aTopic, aVerb) {
+ switch (aTopic) {
+ case SEARCH_ENGINE_TOPIC:
+ switch (aVerb) {
+ case SEARCH_ENGINE_LOADED:
+ var engine = aEngine.QueryInterface(Ci.nsISearchEngine);
+ LOG("nsSearchService::observe: Done installation of " + engine.name
+ + ".");
+ this._addEngineToStore(engine.wrappedJSObject);
+ if (engine.wrappedJSObject._useNow) {
+ LOG("nsSearchService::observe: setting current");
+ this.currentEngine = aEngine;
+ }
+ // The addition of the engine to the store always triggers an ADDED
+ // or a CHANGED notification, that will trigger the task below.
+ break;
+ case SEARCH_ENGINE_ADDED:
+ case SEARCH_ENGINE_CHANGED:
+ case SEARCH_ENGINE_REMOVED:
+ this.batchTask.disarm();
+ this.batchTask.arm();
+ // Invalidate the map used to parse URLs to search engines.
+ this._parseSubmissionMap = null;
+ break;
+ }
+ break;
+
+ case QUIT_APPLICATION_TOPIC:
+ this._removeObservers();
+ break;
+
+ case "nsPref:changed":
+ if (aVerb == LOCALE_PREF) {
+ // Locale changed. Re-init. We rely on observers, because we can't
+ // return this promise to anyone.
+ this._asyncReInit();
+ break;
+ }
+ }
+ },
+
+ // nsITimerCallback
+ notify: function SRCH_SVC_notify(aTimer) {
+ LOG("_notify: checking for updates");
+
+ if (!getBoolPref(BROWSER_SEARCH_PREF + "update", true))
+ return;
+
+ // Our timer has expired, but unfortunately, we can't get any data from it.
+ // Therefore, we need to walk our engine-list, looking for expired engines
+ var currentTime = Date.now();
+ LOG("currentTime: " + currentTime);
+ for (let name in this._engines) {
+ let engine = this._engines[name].wrappedJSObject;
+ if (!engine._hasUpdates)
+ continue;
+
+ LOG("checking " + engine.name);
+
+ var expirTime = engineMetadataService.getAttr(engine, "updateexpir");
+ LOG("expirTime: " + expirTime + "\nupdateURL: " + engine._updateURL +
+ "\niconUpdateURL: " + engine._iconUpdateURL);
+
+ var engineExpired = expirTime <= currentTime;
+
+ if (!expirTime || !engineExpired) {
+ LOG("skipping engine");
+ continue;
+ }
+
+ LOG(engine.name + " has expired");
+
+ engineUpdateService.update(engine);
+
+ // Schedule the next update
+ engineUpdateService.scheduleNextUpdate(engine);
+
+ } // end engine iteration
+ },
+
+ _addObservers: function SRCH_SVC_addObservers() {
+ Services.obs.addObserver(this, SEARCH_ENGINE_TOPIC, false);
+ Services.obs.addObserver(this, QUIT_APPLICATION_TOPIC, false);
+
+#ifdef MOZ_FENNEC
+ Services.prefs.addObserver(LOCALE_PREF, this, false);
+#endif
+
+ // The current stage of shutdown. Used to help analyze crash
+ // signatures in case of shutdown timeout.
+ let shutdownState = {
+ step: "Not started",
+ latestError: {
+ message: undefined,
+ stack: undefined
+ }
+ };
+ OS.File.profileBeforeChange.addBlocker(
+ "Search service: shutting down",
+ () => Task.spawn(function* () {
+ if (this._batchTask) {
+ shutdownState.step = "Finalizing batched task";
+ try {
+ yield this._batchTask.finalize();
+ shutdownState.step = "Batched task finalized";
+ } catch (ex) {
+ shutdownState.step = "Batched task failed to finalize";
+
+ shutdownState.latestError.message = "" + ex;
+ if (ex && typeof ex == "object") {
+ shutdownState.latestError.stack = ex.stack || undefined;
+ }
+
+ // Ensure that error is reported and that it causes tests
+ // to fail.
+ Promise.reject(ex);
+ }
+ }
+
+ shutdownState.step = "Finalizing engine metadata service";
+ yield engineMetadataService.finalize();
+ shutdownState.step = "Engine metadata service finalized";
+
+ }.bind(this)),
+
+ () => shutdownState
+ );
+ },
+
+ _removeObservers: function SRCH_SVC_removeObservers() {
+ Services.obs.removeObserver(this, SEARCH_ENGINE_TOPIC);
+ Services.obs.removeObserver(this, QUIT_APPLICATION_TOPIC);
+
+#ifdef MOZ_FENNEC
+ Services.prefs.removeObserver(LOCALE_PREF, this);
+#endif
+ },
+
+ QueryInterface: function SRCH_SVC_QI(aIID) {
+ if (aIID.equals(Ci.nsIBrowserSearchService) ||
+ aIID.equals(Ci.nsIObserver) ||
+ aIID.equals(Ci.nsITimerCallback) ||
+ aIID.equals(Ci.nsISupports))
+ return this;
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ }
+};
+
+var engineMetadataService = {
+ _jsonFile: OS.Path.join(OS.Constants.Path.profileDir, "search-metadata.json"),
+
+ // Boolean flag that is true if initialization was successful.
+ _initialized: false,
+
+ // A promise fulfilled once initialization is complete
+ _initializer: null,
+
+ /**
+ * Asynchronous initializer
+ *
+ * Note: In the current implementation, initialization never fails.
+ */
+ init: function epsInit() {
+ if (!this._initializer) {
+ // Launch asynchronous initialization
+ let initializer = this._initializer = Promise.defer();
+ Task.spawn((function task_init() {
+ LOG("metadata init: starting");
+ if (this._initialized) {
+ throw new Error("metadata init: invalid state, _initialized is " +
+ "true but initialization promise has not been " +
+ "resolved");
+ }
+ // 1. Load json file if it exists
+ try {
+ let contents = yield OS.File.read(this._jsonFile);
+ if (this._initialized) {
+ // No need to pursue asynchronous initialization,
+ // synchronous fallback was called and has finished.
+ return;
+ }
+ this._store = JSON.parse(new TextDecoder().decode(contents));
+ } catch (ex) {
+ if (this._initialized) {
+ // No need to pursue asynchronous initialization,
+ // synchronous fallback was called and has finished.
+ return;
+ }
+ // Couldn't load json, use an empty store
+ LOG("metadata init: could not load JSON file " + ex);
+ this._store = {};
+ }
+
+ this._initialized = true;
+ LOG("metadata init: complete");
+ }).bind(this)).then(
+ // 3. Inform any observers
+ function onSuccess() {
+ initializer.resolve();
+ },
+ function onError() {
+ initializer.reject();
+ }
+ );
+ }
+ return this._initializer.promise;
+ },
+
+ /**
+ * Synchronous implementation of initializer
+ *
+ * This initializer is able to pick wherever the async initializer
+ * is waiting. The asynchronous initializer is expected to stop
+ * if it detects that the synchronous initializer has completed
+ * initialization.
+ */
+ syncInit: function epsSyncInit() {
+ LOG("metadata syncInit start");
+ if (this._initialized) {
+ return;
+ }
+ let jsonFile = new FileUtils.File(this._jsonFile);
+ // 1. Load json file if it exists
+ if (jsonFile.exists()) {
+ try {
+ let uri = Services.io.newFileURI(jsonFile);
+ let stream = Services.io.newChannelFromURI2(uri,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER).open();
+ this._store = parseJsonFromStream(stream);
+ } catch (x) {
+ LOG("metadata syncInit: could not load JSON file " + x);
+ this._store = {};
+ }
+ } else {
+ LOG("metadata syncInit: using an empty store");
+ this._store = {};
+ }
+
+ this._initialized = true;
+
+ // 3. Inform any observers
+ if (this._initializer) {
+ this._initializer.resolve();
+ } else {
+ this._initializer = Promise.resolve();
+ }
+ LOG("metadata syncInit end");
+ },
+
+ getAttr: function epsGetAttr(engine, name) {
+ let record = this._store[engine._id];
+ if (!record) {
+ return null;
+ }
+
+ // attr names must be lower case
+ let aName = name.toLowerCase();
+ if (!record[aName])
+ return null;
+ return record[aName];
+ },
+
+ _globalFakeEngine: {_id: "[global]"},
+ getGlobalAttr: function epsGetGlobalAttr(name) {
+ return this.getAttr(this._globalFakeEngine, name);
+ },
+
+ _setAttr: function epsSetAttr(engine, name, value) {
+ // attr names must be lower case
+ name = name.toLowerCase();
+ let db = this._store;
+ let record = db[engine._id];
+ if (!record) {
+ record = db[engine._id] = {};
+ }
+ if (!record[name] || (record[name] != value)) {
+ record[name] = value;
+ return true;
+ }
+ return false;
+ },
+
+ /**
+ * Set one metadata attribute for an engine.
+ *
+ * If an actual change has taken place, the attribute is committed
+ * automatically (and lazily), using this._commit.
+ *
+ * @param {nsISearchEngine} engine The engine to update.
+ * @param {string} key The name of the attribute. Case-insensitive. In
+ * the current implementation, this _must not_ conflict with properties
+ * of |Object|.
+ * @param {*} value A value to store.
+ */
+ setAttr: function epsSetAttr(engine, key, value) {
+ if (this._setAttr(engine, key, value)) {
+ this._commit();
+ }
+ },
+
+ setGlobalAttr: function epsGetGlobalAttr(key, value) {
+ this.setAttr(this._globalFakeEngine, key, value);
+ },
+
+ /**
+ * Bulk set metadata attributes for a number of engines.
+ *
+ * If actual changes have taken place, the store is committed
+ * automatically (and lazily), using this._commit.
+ *
+ * @param {Array.<{engine: nsISearchEngine, key: string, value: *}>} changes
+ * The list of changes to effect. See |setAttr| for the documentation of
+ * |engine|, |key|, |value|.
+ */
+ setAttrs: function epsSetAttrs(changes) {
+ let self = this;
+ let changed = false;
+ changes.forEach(function(change) {
+ changed |= self._setAttr(change.engine, change.key, change.value);
+ });
+ if (changed) {
+ this._commit();
+ }
+ },
+
+ /**
+ * Flush any waiting write.
+ */
+ finalize: function () {
+ return this._lazyWriter ? this._lazyWriter.finalize()
+ : Promise.resolve();
+ },
+
+ /**
+ * Commit changes to disk, asynchronously.
+ *
+ * Calls to this function are actually delayed by LAZY_SERIALIZE_DELAY
+ * (= 100ms). If the function is called again before the expiration of
+ * the delay, commits are merged and the function is again delayed by
+ * the same amount of time.
+ */
+ _commit: function epsCommit() {
+ LOG("metadata _commit: start");
+ if (!this._store) {
+ LOG("metadata _commit: nothing to do");
+ return;
+ }
+
+ if (!this._lazyWriter) {
+ LOG("metadata _commit: initializing lazy writer");
+ let writeCommit = function () {
+ LOG("metadata writeCommit: start");
+ let data = gEncoder.encode(JSON.stringify(engineMetadataService._store));
+ let path = engineMetadataService._jsonFile;
+ LOG("metadata writeCommit: path " + path);
+ let promise = OS.File.writeAtomic(path, data, { tmpPath: path + ".tmp" });
+ promise = promise.then(
+ function onSuccess() {
+ Services.obs.notifyObservers(null,
+ SEARCH_SERVICE_TOPIC,
+ SEARCH_SERVICE_METADATA_WRITTEN);
+ LOG("metadata writeCommit: done");
+ }
+ );
+ return promise;
+ }
+ this._lazyWriter = new DeferredTask(writeCommit, LAZY_SERIALIZE_DELAY);
+ }
+ LOG("metadata _commit: (re)setting timer");
+ this._lazyWriter.disarm();
+ this._lazyWriter.arm();
+ },
+ _lazyWriter: null
+};
+
+engineMetadataService._initialized = false;
+
+const SEARCH_UPDATE_LOG_PREFIX = "*** Search update: ";
+
+/**
+ * Outputs aText to the JavaScript console as well as to stdout, if the search
+ * logging pref (browser.search.update.log) is set to true.
+ */
+function ULOG(aText) {
+ if (getBoolPref(BROWSER_SEARCH_PREF + "update.log", false)) {
+ dump(SEARCH_UPDATE_LOG_PREFIX + aText + "\n");
+ Services.console.logStringMessage(aText);
+ }
+}
+
+var engineUpdateService = {
+ scheduleNextUpdate: function eus_scheduleNextUpdate(aEngine) {
+ var interval = aEngine._updateInterval || SEARCH_DEFAULT_UPDATE_INTERVAL;
+ var milliseconds = interval * 86400000; // |interval| is in days
+ engineMetadataService.setAttr(aEngine, "updateexpir",
+ Date.now() + milliseconds);
+ },
+
+ update: function eus_Update(aEngine) {
+ let engine = aEngine.wrappedJSObject;
+ ULOG("update called for " + aEngine._name);
+ if (!getBoolPref(BROWSER_SEARCH_PREF + "update", true) || !engine._hasUpdates)
+ return;
+
+ let testEngine = null;
+ let updateURL = engine._getURLOfType(URLTYPE_OPENSEARCH);
+ let updateURI = (updateURL && updateURL._hasRelation("self")) ?
+ updateURL.getSubmission("", engine).uri :
+ makeURI(engine._updateURL);
+ if (updateURI) {
+ if (engine._isDefault && !updateURI.schemeIs("https")) {
+ ULOG("Invalid scheme for default engine update");
+ return;
+ }
+
+ ULOG("updating " + engine.name + " from " + updateURI.spec);
+ testEngine = new Engine(updateURI, false);
+ testEngine._engineToUpdate = engine;
+ testEngine._initFromURIAndLoad();
+ } else
+ ULOG("invalid updateURI");
+
+ if (engine._iconUpdateURL) {
+ // If we're updating the engine too, use the new engine object,
+ // otherwise use the existing engine object.
+ (testEngine || engine)._setIcon(engine._iconUpdateURL, true);
+ }
+ }
+};
+
+this.NSGetFactory = XPCOMUtils.generateNSGetFactory([SearchService]);
+
+#include ../../../../toolkit/modules/debug.js
diff --git a/toolkit/components/search/orginal/nsSearchSuggestions.js b/toolkit/components/search/orginal/nsSearchSuggestions.js
new file mode 100644
index 0000000000..a05d8b4b45
--- /dev/null
+++ b/toolkit/components/search/orginal/nsSearchSuggestions.js
@@ -0,0 +1,197 @@
+/* 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/. */
+
+const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/nsFormAutoCompleteResult.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "SearchSuggestionController",
+ "resource://gre/modules/SearchSuggestionController.jsm");
+
+/**
+ * SuggestAutoComplete is a base class that implements nsIAutoCompleteSearch
+ * and can collect results for a given search by using this._suggestionController.
+ * We do it this way since the AutoCompleteController in Mozilla requires a
+ * unique XPCOM Service for every search provider, even if the logic for two
+ * providers is identical.
+ * @constructor
+ */
+function SuggestAutoComplete() {
+ this._init();
+}
+SuggestAutoComplete.prototype = {
+
+ _init: function() {
+ this._suggestionController = new SearchSuggestionController(obj => this.onResultsReturned(obj));
+ this._suggestionController.maxLocalResults = this._historyLimit;
+ },
+
+ get _suggestionLabel() {
+ let bundle = Services.strings.createBundle("chrome://global/locale/search/search.properties");
+ let label = bundle.GetStringFromName("suggestion_label");
+ Object.defineProperty(SuggestAutoComplete.prototype, "_suggestionLabel", {value: label});
+ return label;
+ },
+
+ /**
+ * The object implementing nsIAutoCompleteObserver that we notify when
+ * we have found results
+ * @private
+ */
+ _listener: null,
+
+ /**
+ * Maximum number of history items displayed. This is capped at 7
+ * because the primary consumer (Firefox search bar) displays 10 rows
+ * by default, and so we want to leave some space for suggestions
+ * to be visible.
+ */
+ _historyLimit: 7,
+
+ /**
+ * Callback for handling results from SearchSuggestionController.jsm
+ * @private
+ */
+ onResultsReturned: function(results) {
+ let finalResults = [];
+ let finalComments = [];
+
+ // If form history has results, add them to the list.
+ for (let i = 0; i < results.local.length; ++i) {
+ finalResults.push(results.local[i]);
+ finalComments.push("");
+ }
+
+ // If there are remote matches, add them.
+ if (results.remote.length) {
+ // "comments" column values for suggestions starts as empty strings
+ let comments = new Array(results.remote.length).fill("", 1);
+ comments[0] = this._suggestionLabel;
+ // now put the history results above the suggestions
+ finalResults = finalResults.concat(results.remote);
+ finalComments = finalComments.concat(comments);
+ }
+
+ // Notify the FE of our new results
+ this.onResultsReady(results.term, finalResults, finalComments, results.formHistoryResult);
+ },
+
+ /**
+ * Notifies the front end of new results.
+ * @param searchString the user's query string
+ * @param results an array of results to the search
+ * @param comments an array of metadata corresponding to the results
+ * @private
+ */
+ onResultsReady: function(searchString, results, comments, formHistoryResult) {
+ if (this._listener) {
+ // Create a copy of the results array to use as labels, since
+ // FormAutoCompleteResult doesn't like being passed the same array
+ // for both.
+ let labels = results.slice();
+ let result = new FormAutoCompleteResult(
+ searchString,
+ Ci.nsIAutoCompleteResult.RESULT_SUCCESS,
+ 0,
+ "",
+ results,
+ labels,
+ comments,
+ formHistoryResult);
+
+ this._listener.onSearchResult(this, result);
+
+ // Null out listener to make sure we don't notify it twice
+ this._listener = null;
+ }
+ },
+
+ /**
+ * Initiates the search result gathering process. Part of
+ * nsIAutoCompleteSearch implementation.
+ *
+ * @param searchString the user's query string
+ * @param searchParam unused, "an extra parameter"; even though
+ * this parameter and the next are unused, pass
+ * them through in case the form history
+ * service wants them
+ * @param previousResult unused, a client-cached store of the previous
+ * generated resultset for faster searching.
+ * @param listener object implementing nsIAutoCompleteObserver which
+ * we notify when results are ready.
+ */
+ startSearch: function(searchString, searchParam, previousResult, listener) {
+ // Don't reuse a previous form history result when it no longer applies.
+ if (!previousResult)
+ this._formHistoryResult = null;
+
+ var formHistorySearchParam = searchParam.split("|")[0];
+
+ // Receive the information about the privacy mode of the window to which
+ // this search box belongs. The front-end's search.xml bindings passes this
+ // information in the searchParam parameter. The alternative would have
+ // been to modify nsIAutoCompleteSearch to add an argument to startSearch
+ // and patch all of autocomplete to be aware of this, but the searchParam
+ // argument is already an opaque argument, so this solution is hopefully
+ // less hackish (although still gross.)
+ var privacyMode = (searchParam.split("|")[1] == "private");
+
+ // Start search immediately if possible, otherwise once the search
+ // service is initialized
+ if (Services.search.isInitialized) {
+ this._triggerSearch(searchString, formHistorySearchParam, listener, privacyMode);
+ return;
+ }
+
+ Services.search.init((function startSearch_cb(aResult) {
+ if (!Components.isSuccessCode(aResult)) {
+ Cu.reportError("Could not initialize search service, bailing out: " + aResult);
+ return;
+ }
+ this._triggerSearch(searchString, formHistorySearchParam, listener, privacyMode);
+ }).bind(this));
+ },
+
+ /**
+ * Actual implementation of search.
+ */
+ _triggerSearch: function(searchString, searchParam, listener, privacyMode) {
+ this._listener = listener;
+ this._suggestionController.fetch(searchString,
+ privacyMode,
+ Services.search.currentEngine);
+ },
+
+ /**
+ * Ends the search result gathering process. Part of nsIAutoCompleteSearch
+ * implementation.
+ */
+ stopSearch: function() {
+ this._suggestionController.stop();
+ },
+
+ // nsISupports
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteSearch,
+ Ci.nsIAutoCompleteObserver])
+};
+
+/**
+ * SearchSuggestAutoComplete is a service implementation that handles suggest
+ * results specific to web searches.
+ * @constructor
+ */
+function SearchSuggestAutoComplete() {
+ // This calls _init() in the parent class (SuggestAutoComplete) via the
+ // prototype, below.
+ this._init();
+}
+SearchSuggestAutoComplete.prototype = {
+ classID: Components.ID("{aa892eb4-ffbf-477d-9f9a-06c995ae9f27}"),
+ __proto__: SuggestAutoComplete.prototype,
+ serviceURL: ""
+};
+
+var component = [SearchSuggestAutoComplete];
+this.NSGetFactory = XPCOMUtils.generateNSGetFactory(component);
diff --git a/toolkit/components/search/orginal/nsSidebar.js b/toolkit/components/search/orginal/nsSidebar.js
new file mode 100644
index 0000000000..deb455734f
--- /dev/null
+++ b/toolkit/components/search/orginal/nsSidebar.js
@@ -0,0 +1,57 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
+/* 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/. */
+
+const { interfaces: Ci, utils: Cu } = Components;
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+// File extension for Sherlock search plugin description files
+const SHERLOCK_FILE_EXT_REGEXP = /\.src$/i;
+
+function nsSidebar() {
+}
+
+nsSidebar.prototype = {
+ init: function(window) {
+ this.window = window;
+ this.mm = window.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDocShell)
+ .QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIContentFrameMessageManager);
+ },
+
+ // Deprecated, only left here to avoid breaking old browser-detection scripts.
+ addSearchEngine: function(engineURL, iconURL, suggestedTitle, suggestedCategory) {
+ if (SHERLOCK_FILE_EXT_REGEXP.test(engineURL)) {
+ Cu.reportError("Installing Sherlock search plugins is no longer supported.");
+ return;
+ }
+
+ this.AddSearchProvider(engineURL);
+ },
+
+ // This function implements window.external.AddSearchProvider().
+ // The capitalization, although nonstandard here, is to match other browsers'
+ // APIs and is therefore important.
+ AddSearchProvider: function(engineURL) {
+ this.mm.sendAsyncMessage("Search:AddEngine", {
+ pageURL: this.window.document.documentURIObject.spec,
+ engineURL
+ });
+ },
+
+ // This function exists to implement window.external.IsSearchProviderInstalled(),
+ // for compatibility with other browsers. The function has been deprecated
+ // and so will not be implemented.
+ IsSearchProviderInstalled: function(engineURL) {
+ return 0;
+ },
+
+ classID: Components.ID("{22117140-9c6e-11d3-aaf1-00805f8a4905}"),
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
+ Ci.nsIDOMGlobalPropertyInitializer])
+}
+
+this.NSGetFactory = XPCOMUtils.generateNSGetFactory([nsSidebar]);
diff --git a/toolkit/components/search/orginal/toolkitsearch.manifest b/toolkit/components/search/orginal/toolkitsearch.manifest
new file mode 100644
index 0000000000..b7c55da0e9
--- /dev/null
+++ b/toolkit/components/search/orginal/toolkitsearch.manifest
@@ -0,0 +1,10 @@
+component {7319788a-fe93-4db3-9f39-818cf08f4256} nsSearchService.js process=main
+contract @mozilla.org/browser/search-service;1 {7319788a-fe93-4db3-9f39-818cf08f4256} process=main
+# 21600 == 6 hours
+category update-timer nsSearchService @mozilla.org/browser/search-service;1,getService,search-engine-update-timer,browser.search.update.interval,21600
+component {aa892eb4-ffbf-477d-9f9a-06c995ae9f27} nsSearchSuggestions.js
+contract @mozilla.org/autocomplete/search;1?name=search-autocomplete {aa892eb4-ffbf-477d-9f9a-06c995ae9f27}
+#ifdef HAVE_SIDEBAR
+component {22117140-9c6e-11d3-aaf1-00805f8a4905} nsSidebar.js
+contract @mozilla.org/sidebar;1 {22117140-9c6e-11d3-aaf1-00805f8a4905}
+#endif
diff --git a/toolkit/components/startup/nsAppStartup.cpp b/toolkit/components/startup/nsAppStartup.cpp
index fde00d1dbc..53f8c56702 100644
--- a/toolkit/components/startup/nsAppStartup.cpp
+++ b/toolkit/components/startup/nsAppStartup.cpp
@@ -758,11 +758,6 @@ nsAppStartup::GetStartupInfo(JSContext* aCx, JS::MutableHandle<JS::Value> aRetva
procTime = TimeStamp::ProcessCreation(error);
- if (error) {
- Telemetry::Accumulate(Telemetry::STARTUP_MEASUREMENT_ERRORS,
- StartupTimeline::PROCESS_CREATION);
- }
-
StartupTimeline::Record(StartupTimeline::PROCESS_CREATION, procTime);
}
@@ -777,8 +772,6 @@ nsAppStartup::GetStartupInfo(JSContext* aCx, JS::MutableHandle<JS::Value> aRetva
// Always define main to aid with bug 689256.
stamp = procTime;
MOZ_ASSERT(!stamp.IsNull());
- Telemetry::Accumulate(Telemetry::STARTUP_MEASUREMENT_ERRORS,
- StartupTimeline::MAIN);
}
if (!stamp.IsNull()) {
@@ -787,8 +780,6 @@ nsAppStartup::GetStartupInfo(JSContext* aCx, JS::MutableHandle<JS::Value> aRetva
/ PR_USEC_PER_MSEC;
JS::Rooted<JSObject*> date(aCx, JS::NewDateObject(aCx, JS::TimeClip(prStamp)));
JS_DefineProperty(aCx, obj, StartupTimeline::Describe(ev), date, JSPROP_ENUMERATE);
- } else {
- Telemetry::Accumulate(Telemetry::STARTUP_MEASUREMENT_ERRORS, ev);
}
}
}
@@ -887,9 +878,6 @@ nsAppStartup::TrackStartupCrashBegin(bool *aIsSafeModeNecessary)
if (PR_Now() / PR_USEC_PER_SEC <= lastSuccessfulStartup)
return NS_ERROR_FAILURE;
- // The last startup was a crash so include it in the count regardless of when it happened.
- Telemetry::Accumulate(Telemetry::STARTUP_CRASH_DETECTED, true);
-
if (inSafeMode) {
GetAutomaticSafeModeNecessary(aIsSafeModeNecessary);
return NS_OK;
@@ -1020,8 +1008,13 @@ nsAppStartup::CreateInstanceWithProfile(nsIToolkitProfile* aProfile)
return rv;
}
+#if defined(XP_WIN)
+ const char *args[] = { "-no-remote", "-P", profileName.get() };
+ rv = process->Run(false, args, 3);
+#else
const char *args[] = { "-P", profileName.get() };
rv = process->Run(false, args, 2);
+#endif
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
diff --git a/toolkit/components/telemetry/TelemetryStopwatch.jsm b/toolkit/components/telemetry/TelemetryStopwatch.jsm
deleted file mode 100644
index ab6c6eafbb..0000000000
--- a/toolkit/components/telemetry/TelemetryStopwatch.jsm
+++ /dev/null
@@ -1,335 +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/. */
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-this.EXPORTED_SYMBOLS = ["TelemetryStopwatch"];
-
-Cu.import("resource://gre/modules/Log.jsm", this);
-var Telemetry = Cc["@mozilla.org/base/telemetry;1"]
- .getService(Ci.nsITelemetry);
-
-// Weak map does not allow using null objects as keys. These objects are used
-// as 'null' placeholders.
-const NULL_OBJECT = {};
-const NULL_KEY = {};
-
-/**
- * Timers is a variation of a Map used for storing information about running
- * Stopwatches. Timers has the following data structure:
- *
- * {
- * "HISTOGRAM_NAME": WeakMap {
- * Object || NULL_OBJECT: Map {
- * "KEY" || NULL_KEY: startTime
- * ...
- * }
- * ...
- * }
- * ...
- * }
- *
- *
- * @example
- * // Stores current time for a keyed histogram "PLAYING_WITH_CUTE_ANIMALS".
- * Timers.put("PLAYING_WITH_CUTE_ANIMALS", null, "CATS", Date.now());
- *
- * @example
- * // Returns information about a simple Stopwatch.
- * let startTime = Timers.get("PLAYING_WITH_CUTE_ANIMALS", null, "CATS");
- */
-let Timers = {
- _timers: new Map(),
-
- _validTypes: function(histogram, obj, key) {
- let nonEmptyString = value => {
- return typeof value === "string" && value !== "" && value.length > 0;
- };
- return nonEmptyString(histogram) &&
- typeof obj == "object" &&
- (key === NULL_KEY || nonEmptyString(key));
- },
-
- get: function(histogram, obj, key) {
- key = key === null ? NULL_KEY : key;
- obj = obj || NULL_OBJECT;
-
- if (!this.has(histogram, obj, key)) {
- return null;
- }
-
- return this._timers.get(histogram).get(obj).get(key);
- },
-
- put: function(histogram, obj, key, startTime) {
- key = key === null ? NULL_KEY : key;
- obj = obj || NULL_OBJECT;
-
- if (!this._validTypes(histogram, obj, key)) {
- return false;
- }
-
- let objectMap = this._timers.get(histogram) || new WeakMap();
- let keyedInfo = objectMap.get(obj) || new Map();
- keyedInfo.set(key, startTime);
- objectMap.set(obj, keyedInfo);
- this._timers.set(histogram, objectMap);
- return true;
- },
-
- has: function(histogram, obj, key) {
- key = key === null ? NULL_KEY : key;
- obj = obj || NULL_OBJECT;
-
- return this._timers.has(histogram) &&
- this._timers.get(histogram).has(obj) &&
- this._timers.get(histogram).get(obj).has(key);
- },
-
- delete: function(histogram, obj, key) {
- key = key === null ? NULL_KEY : key;
- obj = obj || NULL_OBJECT;
-
- if (!this.has(histogram, obj, key)) {
- return false;
- }
- let objectMap = this._timers.get(histogram);
- let keyedInfo = objectMap.get(obj);
- if (keyedInfo.size > 1) {
- keyedInfo.delete(key);
- return true;
- }
- objectMap.delete(obj);
- // NOTE:
- // We never delete empty objecMaps from this._timers because there is no
- // nice solution for tracking the number of objects in a WeakMap.
- // WeakMap is not enumerable, so we can't deterministically say when it's
- // empty. We accept that trade-off here, given that entries for short-lived
- // objects will go away when they are no longer referenced
- return true;
- }
-};
-
-this.TelemetryStopwatch = {
- /**
- * Starts a timer associated with a telemetry histogram. The timer can be
- * directly associated with a histogram, or with a pair of a histogram and
- * an object.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- *
- * @param {Object} aObj - Optional parameter. If specified, the timer is
- * associated with this object, meaning that multiple
- * timers for the same histogram may be run
- * concurrently, as long as they are associated with
- * different objects.
- *
- * @returns {Boolean} True if the timer was successfully started, false
- * otherwise. If a timer already exists, it can't be
- * started again, and the existing one will be cleared in
- * order to avoid measurements errors.
- */
- start: function(aHistogram, aObj) {
- return TelemetryStopwatchImpl.start(aHistogram, aObj, null);
- },
-
- /**
- * Deletes the timer associated with a telemetry histogram. The timer can be
- * directly associated with a histogram, or with a pair of a histogram and
- * an object. Important: Only use this method when a legitimate cancellation
- * should be done.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- *
- * @param {Object} aObj - Optional parameter. If specified, the timer is
- * associated with this object, meaning that multiple
- * timers or a same histogram may be run concurrently,
- * as long as they are associated with different
- * objects.
- *
- * @returns {Boolean} True if the timer exist and it was cleared, False
- * otherwise.
- */
- cancel: function(aHistogram, aObj) {
- return TelemetryStopwatchImpl.cancel(aHistogram, aObj, null);
- },
-
- /**
- * Returns the elapsed time for a particular stopwatch. Primarily for
- * debugging purposes. Must be called prior to finish.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- * If an invalid name is given, the function will
- * throw.
- *
- * @param (Object) aObj - Optional parameter which associates the histogram
- * timer with the given object.
- *
- * @returns {Integer} time in milliseconds or -1 if the stopwatch was not
- * found.
- */
- timeElapsed: function(aHistogram, aObj) {
- return TelemetryStopwatchImpl.timeElapsed(aHistogram, aObj, null);
- },
-
- /**
- * Stops the timer associated with the given histogram (and object),
- * calculates the time delta between start and finish, and adds the value
- * to the histogram.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- *
- * @param {Object} aObj - Optional parameter which associates the histogram
- * timer with the given object.
- *
- * @returns {Boolean} True if the timer was succesfully stopped and the data
- * was added to the histogram, False otherwise.
- */
- finish: function(aHistogram, aObj) {
- return TelemetryStopwatchImpl.finish(aHistogram, aObj, null);
- },
-
- /**
- * Starts a timer associated with a keyed telemetry histogram. The timer can
- * be directly associated with a histogram and its key. Similarly to
- * @see{TelemetryStopwatch.stat} the histogram and its key can be associated
- * with an object. Each key may have multiple associated objects and each
- * object can be associated with multiple keys.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- *
- * @param {String} aKey - a string which must be a valid histgram key.
- *
- * @param {Object} aObj - Optional parameter. If specified, the timer is
- * associated with this object, meaning that multiple
- * timers for the same histogram may be run
- * concurrently,as long as they are associated with
- * different objects.
- *
- * @returns {Boolean} True if the timer was successfully started, false
- * otherwise. If a timer already exists, it can't be
- * started again, and the existing one will be cleared in
- * order to avoid measurements errors.
- */
- startKeyed: function(aHistogram, aKey, aObj) {
- return TelemetryStopwatchImpl.start(aHistogram, aObj, aKey);
- },
-
- /**
- * Deletes the timer associated with a keyed histogram. Important: Only use
- * this method when a legitimate cancellation should be done.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- *
- * @param {String} aKey - a string which must be a valid histgram key.
- *
- * @param {Object} aObj - Optional parameter. If specified, the timer
- * associated with this object is deleted.
- *
- * @return {Boolean} True if the timer exist and it was cleared, False
- * otherwise.
- */
- cancelKeyed: function(aHistogram, aKey, aObj) {
- return TelemetryStopwatchImpl.cancel(aHistogram, aObj, aKey);
- },
-
- /**
- * Returns the elapsed time for a particular stopwatch. Primarily for
- * debugging purposes. Must be called prior to finish.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- *
- * @param {String} aKey - a string which must be a valid histgram key.
- *
- * @param {Object} aObj - Optional parameter. If specified, the timer
- * associated with this object is used to calculate
- * the elapsed time.
- *
- * @return {Integer} time in milliseconds or -1 if the stopwatch was not
- * found.
- */
- timeElapsedKeyed: function(aHistogram, aKey, aObj) {
- return TelemetryStopwatchImpl.timeElapsed(aHistogram, aObj, aKey);
- },
-
- /**
- * Stops the timer associated with the given keyed histogram (and object),
- * calculates the time delta between start and finish, and adds the value
- * to the keyed histogram.
- *
- * @param {String} aHistogram - a string which must be a valid histogram name.
- *
- * @param {String} aKey - a string which must be a valid histgram key.
- *
- * @param {Object} aObj - optional parameter which associates the histogram
- * timer with the given object.
- *
- * @returns {Boolean} True if the timer was succesfully stopped and the data
- * was added to the histogram, False otherwise.
- */
- finishKeyed: function(aHistogram, aKey, aObj) {
- return TelemetryStopwatchImpl.finish(aHistogram, aObj, aKey);
- }
-};
-
-this.TelemetryStopwatchImpl = {
- start: function(histogram, object, key) {
- if (Timers.has(histogram, object, key)) {
- Timers.delete(histogram, object, key);
- Cu.reportError(`TelemetryStopwatch: key "${histogram}" was already ` +
- "initialized");
- return false;
- }
-
- return Timers.put(histogram, object, key, Components.utils.now());
- },
-
- cancel: function (histogram, object, key) {
- return Timers.delete(histogram, object, key);
- },
-
- timeElapsed: function(histogram, object, key) {
- let startTime = Timers.get(histogram, object, key);
- if (startTime === null) {
- Cu.reportError("TelemetryStopwatch: requesting elapsed time for " +
- `nonexisting stopwatch. Histogram: "${histogram}", ` +
- `key: "${key}"`);
- return -1;
- }
-
- try {
- let delta = Components.utils.now() - startTime
- return Math.round(delta);
- } catch (e) {
- Cu.reportError("TelemetryStopwatch: failed to calculate elapsed time " +
- `for Histogram: "${histogram}", key: "${key}", ` +
- `exception: ${Log.exceptionStr(e)}`);
- return -1;
- }
- },
-
- finish: function(histogram, object, key) {
- let delta = this.timeElapsed(histogram, object, key);
- if (delta == -1) {
- return false;
- }
-
- try {
- if (key) {
- Telemetry.getKeyedHistogramById(histogram).add(key, delta);
- } else {
- Telemetry.getHistogramById(histogram).add(delta);
- }
- } catch (e) {
- Cu.reportError("TelemetryStopwatch: failed to update the Histogram " +
- `"${histogram}", using key: "${key}", ` +
- `exception: ${Log.exceptionStr(e)}`);
- return false;
- }
-
- return Timers.delete(histogram, object, key);
- }
-}
diff --git a/toolkit/components/telemetry/moz.build b/toolkit/components/telemetry/moz.build
index 118d61b719..7765c59b43 100644
--- a/toolkit/components/telemetry/moz.build
+++ b/toolkit/components/telemetry/moz.build
@@ -64,7 +64,6 @@ EXTRA_JS_MODULES += [
'TelemetryReportingPolicy.jsm',
'TelemetrySend.jsm',
'TelemetrySession.jsm',
- 'TelemetryStopwatch.jsm',
'TelemetryStorage.jsm',
'TelemetryTimestamps.jsm',
'TelemetryUtils.jsm',
diff --git a/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js b/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js
deleted file mode 100644
index d162d9b17b..0000000000
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-var tmpScope = {};
-Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", tmpScope);
-var TelemetryStopwatch = tmpScope.TelemetryStopwatch;
-
-const HIST_NAME = "TELEMETRY_SEND_SUCCESS";
-const HIST_NAME2 = "RANGE_CHECKSUM_ERRORS";
-const KEYED_HIST = { id: "TELEMETRY_INVALID_PING_TYPE_SUBMITTED", key: "TEST" };
-
-var refObj = {}, refObj2 = {};
-
-var originalCount1, originalCount2;
-
-function run_test() {
- let histogram = Telemetry.getHistogramById(HIST_NAME);
- let snapshot = histogram.snapshot();
- originalCount1 = snapshot.counts.reduce((a, b) => a += b);
-
- histogram = Telemetry.getHistogramById(HIST_NAME2);
- snapshot = histogram.snapshot();
- originalCount2 = snapshot.counts.reduce((a, b) => a += b);
-
- histogram = Telemetry.getKeyedHistogramById(KEYED_HIST.id);
- snapshot = histogram.snapshot(KEYED_HIST.key);
- originalCount3 = snapshot.counts.reduce((a, b) => a += b);
-
- do_check_false(TelemetryStopwatch.start(3));
- do_check_false(TelemetryStopwatch.start({}));
- do_check_false(TelemetryStopwatch.start("", 3));
- do_check_false(TelemetryStopwatch.start("", ""));
- do_check_false(TelemetryStopwatch.start({}, {}));
-
- do_check_true(TelemetryStopwatch.start("mark1"));
- do_check_true(TelemetryStopwatch.start("mark2"));
-
- do_check_true(TelemetryStopwatch.start("mark1", refObj));
- do_check_true(TelemetryStopwatch.start("mark2", refObj));
-
- // Same timer can't be re-started before being stopped
- do_check_false(TelemetryStopwatch.start("mark1"));
- do_check_false(TelemetryStopwatch.start("mark1", refObj));
-
- // Can't stop a timer that was accidentaly started twice
- do_check_false(TelemetryStopwatch.finish("mark1"));
- do_check_false(TelemetryStopwatch.finish("mark1", refObj));
-
- do_check_true(TelemetryStopwatch.start("NON-EXISTENT_HISTOGRAM"));
- do_check_false(TelemetryStopwatch.finish("NON-EXISTENT_HISTOGRAM"));
-
- do_check_true(TelemetryStopwatch.start("NON-EXISTENT_HISTOGRAM", refObj));
- do_check_false(TelemetryStopwatch.finish("NON-EXISTENT_HISTOGRAM", refObj));
-
- do_check_true(TelemetryStopwatch.start(HIST_NAME));
- do_check_true(TelemetryStopwatch.start(HIST_NAME2));
- do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj));
- do_check_true(TelemetryStopwatch.start(HIST_NAME2, refObj));
- do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj2));
- do_check_true(TelemetryStopwatch.start(HIST_NAME2, refObj2));
-
- do_check_true(TelemetryStopwatch.finish(HIST_NAME));
- do_check_true(TelemetryStopwatch.finish(HIST_NAME2));
- do_check_true(TelemetryStopwatch.finish(HIST_NAME, refObj));
- do_check_true(TelemetryStopwatch.finish(HIST_NAME2, refObj));
- do_check_true(TelemetryStopwatch.finish(HIST_NAME, refObj2));
- do_check_true(TelemetryStopwatch.finish(HIST_NAME2, refObj2));
-
- // Verify that TS.finish deleted the timers
- do_check_false(TelemetryStopwatch.finish(HIST_NAME));
- do_check_false(TelemetryStopwatch.finish(HIST_NAME, refObj));
-
- // Verify that they can be used again
- do_check_true(TelemetryStopwatch.start(HIST_NAME));
- do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj));
- do_check_true(TelemetryStopwatch.finish(HIST_NAME));
- do_check_true(TelemetryStopwatch.finish(HIST_NAME, refObj));
-
- do_check_false(TelemetryStopwatch.finish("unknown-mark")); // Unknown marker
- do_check_false(TelemetryStopwatch.finish("unknown-mark", {})); // Unknown object
- do_check_false(TelemetryStopwatch.finish(HIST_NAME, {})); // Known mark on unknown object
-
- // Test cancel
- do_check_true(TelemetryStopwatch.start(HIST_NAME));
- do_check_true(TelemetryStopwatch.start(HIST_NAME, refObj));
- do_check_true(TelemetryStopwatch.cancel(HIST_NAME));
- do_check_true(TelemetryStopwatch.cancel(HIST_NAME, refObj));
-
- // Verify that can not cancel twice
- do_check_false(TelemetryStopwatch.cancel(HIST_NAME));
- do_check_false(TelemetryStopwatch.cancel(HIST_NAME, refObj));
-
- // Verify that cancel removes the timers
- do_check_false(TelemetryStopwatch.finish(HIST_NAME));
- do_check_false(TelemetryStopwatch.finish(HIST_NAME, refObj));
-
- // Verify that keyed stopwatch reject invalid keys.
- for (let key of [3, {}, ""]) {
- do_check_false(TelemetryStopwatch.startKeyed(KEYED_HIST.id, key));
- }
-
- // Verify that keyed histograms can be started.
- do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1"));
- do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY2"));
- do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1", refObj));
- do_check_true(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY2", refObj));
-
- // Restarting keyed histograms should fail.
- do_check_false(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1"));
- do_check_false(TelemetryStopwatch.startKeyed("HISTOGRAM", "KEY1", refObj));
-
- // Finishing a stopwatch of a non existing histogram should return false.
- do_check_false(TelemetryStopwatch.finishKeyed("HISTOGRAM", "KEY2"));
- do_check_false(TelemetryStopwatch.finishKeyed("HISTOGRAM", "KEY2", refObj));
-
- // Starting & finishing a keyed stopwatch for an existing histogram should work.
- do_check_true(TelemetryStopwatch.startKeyed(KEYED_HIST.id, KEYED_HIST.key));
- do_check_true(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, KEYED_HIST.key));
- // Verify that TS.finish deleted the timers
- do_check_false(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, KEYED_HIST.key));
-
- // Verify that they can be used again
- do_check_true(TelemetryStopwatch.startKeyed(KEYED_HIST.id, KEYED_HIST.key));
- do_check_true(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, KEYED_HIST.key));
-
- do_check_false(TelemetryStopwatch.finishKeyed("unknown-mark", "unknown-key"));
- do_check_false(TelemetryStopwatch.finishKeyed(KEYED_HIST.id, "unknown-key"));
-
- // Verify that keyed histograms can only be canceled through "keyed" API.
- do_check_true(TelemetryStopwatch.startKeyed(KEYED_HIST.id, KEYED_HIST.key));
- do_check_false(TelemetryStopwatch.cancel(KEYED_HIST.id, KEYED_HIST.key));
- do_check_true(TelemetryStopwatch.cancelKeyed(KEYED_HIST.id, KEYED_HIST.key));
- do_check_false(TelemetryStopwatch.cancelKeyed(KEYED_HIST.id, KEYED_HIST.key));
-
- finishTest();
-}
-
-function finishTest() {
- let histogram = Telemetry.getHistogramById(HIST_NAME);
- let snapshot = histogram.snapshot();
- let newCount = snapshot.counts.reduce((a, b) => a += b);
-
- do_check_eq(newCount - originalCount1, 5, "The correct number of histograms were added for histogram 1.");
-
- histogram = Telemetry.getHistogramById(HIST_NAME2);
- snapshot = histogram.snapshot();
- newCount = snapshot.counts.reduce((a, b) => a += b);
-
- do_check_eq(newCount - originalCount2, 3, "The correct number of histograms were added for histogram 2.");
-
- histogram = Telemetry.getKeyedHistogramById(KEYED_HIST.id);
- snapshot = histogram.snapshot(KEYED_HIST.key);
- newCount = snapshot.counts.reduce((a, b) => a += b);
-
- do_check_eq(newCount - originalCount3, 2, "The correct number of histograms were added for histogram 3.");
-}
diff --git a/toolkit/components/telemetry/tests/unit/xpcshell.ini b/toolkit/components/telemetry/tests/unit/xpcshell.ini
index 42354c4cdd..224516f575 100644
--- a/toolkit/components/telemetry/tests/unit/xpcshell.ini
+++ b/toolkit/components/telemetry/tests/unit/xpcshell.ini
@@ -41,7 +41,6 @@ tags = addons
[test_TelemetryController_idle.js]
[test_TelemetryControllerShutdown.js]
tags = addons
-[test_TelemetryStopwatch.js]
[test_TelemetryControllerBuildID.js]
[test_TelemetrySendOldPings.js]
skip-if = os == "android" # Disabled due to intermittent orange on Android
diff --git a/toolkit/components/thumbnails/BackgroundPageThumbs.jsm b/toolkit/components/thumbnails/BackgroundPageThumbs.jsm
index bd52e77e92..7b86fa07c8 100644
--- a/toolkit/components/thumbnails/BackgroundPageThumbs.jsm
+++ b/toolkit/components/thumbnails/BackgroundPageThumbs.jsm
@@ -368,9 +368,12 @@ Capture.prototype = {
tel("CAPTURE_QUEUE_TIME_MS", this.startDate - this.creationDate);
// timeout timer
- let timeout = typeof(this.options.timeout) == "number" ?
- this.options.timeout :
- DEFAULT_CAPTURE_TIMEOUT;
+ let timeout;
+ if (this.options && typeof(this.options.timeout) == "number") {
+ timeout = this.options.timeout;
+ } else {
+ timeout = DEFAULT_CAPTURE_TIMEOUT;
+ }
this._timeoutTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
this._timeoutTimer.initWithCallback(this, timeout,
Ci.nsITimer.TYPE_ONE_SHOT);
@@ -468,11 +471,9 @@ Capture.prototype = {
};
if (!data) {
- // If this background attempt failed, cause a dummy file to be saved, so
+ // If this background attempt failed, cause a placeholder file to be saved, so
// that gets loaded instead of attempting again (and again).
- // XXX: Perhaps we can create a placeholder image to use instead of "null"
- // here, so it has something to show to the user?
- PageThumbs._store(this.url, this.url, null, true)
+ PageThumbs._store(this.url, this.url, atob(BLANKTHUMB), true)
.then(done, done);
return;
}
diff --git a/toolkit/components/thumbnails/PageThumbs.jsm b/toolkit/components/thumbnails/PageThumbs.jsm
index 9bd3ae4b3b..5c7754b318 100644
--- a/toolkit/components/thumbnails/PageThumbs.jsm
+++ b/toolkit/components/thumbnails/PageThumbs.jsm
@@ -28,6 +28,9 @@ const MAX_THUMBNAIL_AGE_SECS = 172800; // 2 days == 60*60*24*2 == 172800 secs.
*/
const THUMBNAIL_DIRECTORY = "thumbnails";
+// contains base64 version of a placeholder thumbnail
+#include blankthumb.inc
+
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
Cu.import("resource://gre/modules/PromiseWorker.jsm", this);
Cu.import("resource://gre/modules/Promise.jsm", this);
@@ -609,7 +612,15 @@ this.PageThumbsStorage = {
writeData: function Storage_writeData(aURL, aData, aNoOverwrite) {
let path = this.getFilePathForURL(aURL);
this.ensurePath();
- aData = new Uint8Array(aData);
+
+ // XXX: We try/catch here since 'null' isn't accepted until we implement
+ // ES2017's new Uint8Array(); allowance.
+ try {
+ aData = new Uint8Array(aData);
+ } catch(e) {
+ aData = new Uint8Array(0);
+ }
+
let msg = [
path,
aData,
diff --git a/toolkit/components/thumbnails/blankthumb.inc b/toolkit/components/thumbnails/blankthumb.inc
new file mode 100644
index 0000000000..06577c19cd
--- /dev/null
+++ b/toolkit/components/thumbnails/blankthumb.inc
@@ -0,0 +1,87 @@
+const BLANKTHUMB =
+"iVBORw0KGgoAAAANSUhEUgAAASwAAADsCAAAAADricSpAAASn0lEQVR4XuzQQREAAAwCoPWvaolV" +
+"8O1BBC41RrNkyZIlC1myZMmSJQtZsmTJkiULWbJkyZIlC1myZMmSJQtZsmTJkiULWbJkyZIliyfv" +
+"7HYbV5Ik/EUWScl2zwL7svvSc7MXp9uWyKrY2W0iUShI/tmLM6I7SJMpCrrw1xFZCZMNTTyQbNum" +
+"QSlGVEkSD6MHgWVaq81uNAT8eDL4v9eQFCVC6E+HlX6qW22GolkRAr3MBr+sdnPdTJmKQn86LLda" +
+"t4piKaVk6jgFwH+ul2a7uW3bVSVK0R8Mq9W1birLXEpIpHYoCgpgt8W1trqF5n+nv/TPf6Op1mtj" +
+"+pcKOykhCXQqALS3igEDdq3NrWqJ+INgpamulHkuRYAQIQlkxbTjuLZcIQ3QtuZWPZXQnwTL67qq" +
+"zEuEAP0WCChlR8W2CedI0YDfa2aFufwxsLy9Vc3zHBKgkIR2VDOpWsG5u9n7imA3Tf8Gd5X/4u+W" +
+"69ubl/N5DoEiIpJVzBMpooHETlLa0UYBUZG+/2pYrxfmZSoCpJBA+8YsegkALMAIyc2IuWy1eC1F" +
+"3zuGbb20aV5CAikEInlpphetgcEYzL41Y6hbo/E3ZzH4W1V/vXJ6Opc9UDulnRWjYtpDKJFbBIKy" +
+"zJK26m/rLF8vbZ7nAoKQROcqECUYVNNX3daMoW3VUMp3dJZpr798Oi8BoJAAAULS70NjFPub/UYI" +
+"sOY58Lb5G8Ji+3mZzqeiHUCSIktpTFUD0LgRIQRlLlLd/O1gef25zeelKJ0E9BkEQRtZST2t5Eso" +
+"R422tm8Gy5dfXs6zoG9UiC6L3JRET0kAiB33tAiv9VvBam+vLOcpf31BYiKxjcCI/WqyTGxIAkQs" +
+"AVv9RrDa25tOpwLc+rUh0ziKRJRezGuSAGIusG720WElq4tOS5AZpM9fl8ZRBqlzYU8ur2oqZqv6" +
+"HrDa60XnJRiIDMa6ZXQJRmulkqOmCbbNPj4s2uWi0yySjRIZQxWMEiBlyQAXhH7TWquOD8stYll0" +
+"iwLKWvdsLgEasdJHGpiKudbDw7Jj/o9TmuQmqvel0U8MJwxTiee5HfuGhXFjPr1V7ilK8fb/dLkB" +
+"Y4TiyY1mHRmWKpRTq51/RArHXD5hLXNTCsBIisBe23S1dNwYVlsnXVBywqSYTgXAAhx8Rv2SGMvT" +
+"/2oiMBSYDtyz3IClZOc1vdDe9wmDCp+Us9jeLpa2X68XBDGhsA8Ky7i5zFxFCmcSPU+5lpUSfF34" +
+"+vO6vjU2N0MUgoPCMq2hkzpDOU7PT4FHo4U+AT5h09mnvf2q2o+UIOwjwrLc4BQwGwDm5x8v52Ue" +
+"Wz2fBGWMx8tCgNfaMJoUavbxYNGaXSay7c5P8ySb07lgjILPaMQ0EgMQUQBrImgHc1aGcAETYEwR" +
+"BphoACzBF5XDxiizFANEgO2jwaIZpgCIZTk9Pb3MBjDXNxtrmfmcbHIrp2UanQZQFhDAJNn4WEOp" +
+"sYkZLDgLCWEBvjahcpr4lNxtLEo8uK/qOjWMYGpqFOtAsExt1iRSlgUmXKSYi6xPkcpjN9Xm9XyD" +
+"y8X2MkNEc5OO5axmogw8mtr1PJ0gZLA+vQpm8kYlroZpBijVcliHgWUqsLvHwrKs+mp4exGYj9WS" +
+"RdKihkDJzj1TPE0YSqlu0oEafHNzKYAh2azVpAz+iJVtcLLC17eLmeeREwDl/FwAKGE3fBRYphmV" +
+"HgmoXoXjjD+BimrbgI2dwKCu6PS0aAfFLADMcl52qBFy4zjOcjMRol/7qQ1YSmcs30W1OWVssm25" +
+"GmJ5kjFGp8kYOyY1AwCToMrHgGU1Q1LZDy6TmWd6T/n+7L8L9h877WUQCKC1RQDTKTLbVrHbcWK4" +
+"QShJGQDi6fn5SYYuiDY3lFcTVzYuZozt+XySwS2ens/z03lKmqAivB1jNTQbpggsLIzAsqLkuCXy" +
+"nZtyX+Hc8QQGzfLp1QCTi3e8FnvXqmB0CGc1EwLnjgFs08l3kxh79npjYWwc+TnmE1ZhfV27uBtA" +
+"Ac34CA/gtgqlIPVPQCKRLxnuQY91a+p5duPWOXMMhXaa6l91NepQ2VBBgR7eWabZxOAdZ6DSfODU" +
+"0L2is5WdPR4LdwxPLzMgLq+mH/ORcPURGryrkQz97wruNuqvi+22vr5u6YYupWVWUux7vAPb6bd6" +
+"+XVZh6hjMCWvPHSDN24Q2W4RgGUBe+Xt1WHqtUpNBQRGYEAARRcDozMRHYH2q7KBYZGBznuSvZ4O" +
+"4KyahsX2+HD2/mCbJq6vVdDW5GGT2VQxIZPmssGIjK+5VsDE8rT0McRYgkM0+BXHhCQQjA9ng9+u" +
+"6FzeVgTAdPOefNE0xwaGPDjmvhXWBp6eT1OAjeltWCUCPXQMTcMEYISRtWeQbDRVzPy0sDDNWACG" +
+"3g8TVmzCGW80q2PlebpcNAnj3lYAhEx7/BhWg8i4gH8jula3Zq+vG2Z7bblAbsbO2DqxG6boBq6y" +
+"nCdwN05omS0bgw0ZQmOE8YP/pwHz1tAcICRrD+B1s6SXaOuKyIACIp6V+RvFdUOhQhgEHsb67XrG" +
+"AG1nZAO2WSuay2PHkIbVhc7C8luVsN9iy1Syn612WXIqE4OmoshF1ePy6Dh1Q0mfQ4Qx1uPGMDNg" +
+"cA5ZXDdso/Wav1OXUl9fK3bmsE+io8hOuwDYkGFDGMYI2rbAfvSe1Qy9s4DtgrMLkxx3tkD9dYUe" +
+"0q5Ek+ds78nIbrbdv9UABDQ/+OhQK5RIYBJcGuq23AV7xaZy956+xzJZtVrX9fqvbasNkcsi7KSK" +
+"0COPDg2ERU7rWjewchMWRgYQBkAXzQOau8yyO7XXLUNtlangvmvBo8fQDaMuJvhqcss+Ru5g47bZ" +
+"3NOQ0Z0J25awoV1f32oGGxCmPTYs7L7CbNU9K8Bg5+4dADhJdjLuSNF/sO7kbbw/rJXvGhk/NCyT" +
+"axVGGNpqOloMzsp5MrqM9SJBjZ+F3q7G+PViZ1Dh0Z1lgwDWaoPZNkhaNhh7QGU7Jj6Q3X8C23Np" +
+"Nv3GZcu+JaD5sWFhMN4urxuGtifDzrPNXueP4xy2/Q4o08PF2HqacecuDBfDQR5mS+PXK1xW8KV1" +
+"tkqUtntbEU9TQklm3YXBWUnr/H+4csjFrhcAm/TzI48OYHBtgmtVa6IbHACQkfczBuGia4tZ95d8" +
+"d4fcDVNchyBeveRwgg2PC8uNTpVdOynthSx+nxEY1tXIpx3mgEnueI20mC/0rNDa5rBAAI8LK2Ux" +
+"aEfDzko5lBoEDWT7tq+cpAZaYFjWiunnq1qFibI1lceHJSjbAMz0MSSL5GXplrFg8JUM7ry11rRV" +
+"ykCt1dTT48Iy2MhynK5560/5prAMyMLIpN+S6N2G1YUvS4v6lrbq4YJA4Ie+yXo1FERQEYxeEQhl" +
+"SQqZafyA7/V3dkJb29bBVlnZWMsEetAYprNEyHlNQ+dKUyGMMMhc4wQg8N0Y9qjw62oZPCRwrB8W" +
+"lrIR95AgM5mrW56zvsxC+F4Kxzv51NUebDUUB4CFRb0CVmcqelx9c+8iNKC6ay6DYfNe3UB0CFhp" +
+"AStNMTb67O/JCwNeZEAjp5EUxkBb39q92BmwHx6WLUxvllu4cn7vvVVm80EMnUHk+tYMvofqIDG0" +
+"TCdrqHtcdOf5KT6ModNjtGqZD1ipgB4UlkyADfZoqLH2jnZHqNMpLL+b7Cww2O+vfD5Gz8JGhju4" +
+"UJYkMJ0XGindXNzu/13PN0oDioeGVQAsu0eEBXfsJQPlubxnjzGJWOv6PitjC+mhYcnCFlh4oHXz" +
+"lYHyErj3lN9LIYb1tX1oK7AeOoYKLAwK31gK77ySvfOT3+vvea63WY2EKQ8NC6IZW4VttBAMhsrX" +
+"tjHj3MA9x1jXqpHUyNNgBeiRYxhVGBPRLEYLjQwEOJbomXRQfW/eeh9VnqZHdxaWLSgY3+ztY1ae" +
+"Jsuj7XoNeMxSq0aUQ2EePYayCmALmKBVj/Fj5EV7RfOsDGZiQTvgIV7YUQ0fjaQU6ZEfZjPXn4Yp" +
+"AARsDUBG0UimjOJp6XsWbJdqlqebXd6XKx+hcgXOPwI98u37CKA5u0YYcCz/UjKyGdVwu7y+bfnU" +
+"9ma4VvJ+WPe59gGrrCY9es+KCgYsjFTc0FwExesYspQbbK9I5RwAbgIC3+reK518v1QR4pGdpQDc" +
+"vBOzpjItBbPvKWyTatfLBeF92tSCcUQaq7Okt9uuMinTgFJ4aGfJTFdD97yBZrBwa9WkhnavbUMC" +
+"tF3OgM7zddWCRy5GWxtIpQaGJR7+0e5JTmcZgw3G6+r3nvfIhWttgJmeXl6KBxva0K4eWY2+cras" +
+"B+9ZRKkGC/LJZCPbSisNch4Rcg0AU24377Xqzrg6DBgxgx76VpjAK4AEaN9BNCcmfUCbUSbVLtZ7" +
+"rJw+m54lPXIM0/3uH8MCrH5pM+/IY0ztvgb7ZgDHa7MeP4bEfBG2wXlrQiOCdwwWBkAeCfZhpd0A" +
+"i5OViRPo0WGJ+WrRBFhG+PcO1khMd43lWhtYUaJngUqNk8R1Fb7d/GQDU4FHd5bMVDbLFuBEhQEj" +
+"PuRloG21GgDiST0JplBgcQcVxgY4Sw8PCyjThmmF/i4hupM/M/T91bTWQACmXU49DVQwuLTmWzHN" +
+"9j4f4atkjNe/GjDJglwSayWF+IKW+eati9oNbu5PzcDzi6SHH0oFcwFo4O7OqIYl7PPaavrGeTSi" +
+"y11P0kAs0iG+WE1oBSyliRDYYpT4hLxtlnogBup1DOCuBrC8IPHwzkIwT0C/urv5polt86Hstr5t" +
+"wxPe19W+z0rn43xln7RagKA7prW+aDABOHooeDMaW1lvLB0khghtDbAgmWWb4SvEnEVJNgakmNRu" +
+"sbKwfkziKD0LsRqhACUImay/rqIejBVyy9fDyvH0LKGDfC2DWGYwrXUdGSkXs68L9U0rPTayagjK" +
+"WSCOEkMU6w4IlBftfPFFWdOQOaPmm+uFzk+SOAgsEOEtI5m8hJPTF5lNcWPpayOrBjD/IzgQLCHK" +
+"3uPHb6wy4su8zKSBlLH2esjkj1kSB3JWjg+WoMeF7zAS95dDl3LrFn4CpOuG5+cQR4IForRqhAN6" +
+"XPbXM+iYhAcL5eyWrBrA9GNC4kiwBIqtJaU8uPH1EGoKek8lNomBlV5OEseCBUJlNWBEAmzta9O7" +
+"AZUSJBISlAGFFOr+Fc4/ktWRYpgrYk+r8ZUh3iDFFEpwowxCktywYPpHSDrcNzrJcK4XgIaUGRL3" +
+"ZQYpJL37KFa+CAPxo0hwOFgI4qVuAC3E1xWSkH2D6IjKzUjoZZHQAWGBiJe/6u4tEDRjxKeUjSo1" +
+"1j0rAJ3OgIBj9axsW7F265b9hXXQBt0Kp1GaqmfF6YckcUhYCJh2Wk48n+fVjBjl0Vo5jSw/QuKo" +
+"sEAwsXZwrC8A04gYj0Wy2hdCxFFhCcEUqxG2pYHWh9zsGJM4lm4GwfSjSIiDwkpa2kAChNxRkbLk" +
+"kwg9VLYNgvKPSUIcE9ZIiyGEcoQQ+gBZDJhutXYxdawON2elZMFT/GzkCJHOcHqhmbvy3Qumue/t" +
+"cGRYSevMTstW4rKcfd/ipizfS6G8o0I7K8GhY5hJnOpOyyQXZdUQt2SkkdO4CqKnl2R1cGeBLLzE" +
+"zysAuIYYexgGxCC/k8NmwIJ4OufMcHBnpbdiZoM+i5+6eXFn0GoNMEjl+SwF4tiwRlpTVCu90edG" +
+"mDuSelCJaq/F/DTnnyYOH8N+eD/Fr95c+sxDNQIjkzJ2omJZAiHg8M4aeTGpmqFhCewvfd1ygoxl" +
+"joiQ9L1gCRkTkWCUTd1G9+GQ0QV3qIh5Ljur7wQrZRThW44SNyVjAEZSaJpLKCJCgfhGPQuQZQUO" +
+"xVbbyEt+lzAeoqqYQlJm8Ls5K6UIPMzohvei2AZUZZpDUuy0vp2zkEUA2IpWN/c3TGlKYBpvERpl" +
+"rd1VSNLA6uiwRinADYpK25qlZGJQTwiylAyJqpT8a8Xe3PUNYyi0HyWkKIVPSV0V01y0eyoiFOI7" +
+"wkpnsEcIaSrxBVgqZZ6LFFLsuJLV94MlEGiHJYSilAjQR6wUMS+l7F09dmPpb2WF/snfKYNxChtj" +
+"XFuzLTOKvZGrgBAZYoWEBOJbwkpcJlntsPpvrSUloZAU6hKctpQQiG8MC7PjoveWAZMFJB4QjLYS" +
+"Uj9mfM/RAYQRIGyTuMAC32l0CSv3pPitnZXuwtBba98Z5nnte26CzlXf11mju0CMrDzYqo9jnhLV" +
+"93fW+E2+N1BZPa/OTAmZPwXWyAvTH0Zv6Ub1J8FKeeA2agQkgD8V1sjIDNJQ/tGwUuYdiQfQxMNI" +
+"N6CJh9L/tEPHBAAAMAiA1r+qJVbBzwcikBrzLFmykCVLlixZspAlS5YsWbKQJUuWLFmykCVLlixZ" +
+"spAlS5YsWbKQJUuWLFmyeEoXbr5fYDBbAAAAAElFTkSuQmCC";
+
diff --git a/toolkit/components/thumbnails/moz.build b/toolkit/components/thumbnails/moz.build
index 9bc218b6a0..d4003c6355 100644
--- a/toolkit/components/thumbnails/moz.build
+++ b/toolkit/components/thumbnails/moz.build
@@ -14,9 +14,13 @@ EXTRA_COMPONENTS += [
EXTRA_JS_MODULES += [
'BackgroundPageThumbs.jsm',
- 'PageThumbs.jsm',
'PageThumbsWorker.js',
'PageThumbUtils.jsm',
]
+EXTRA_PP_JS_MODULES += [
+ 'PageThumbs.jsm',
+]
+
+
JAR_MANIFESTS += ['jar.mn']
diff --git a/toolkit/components/url-classifier/Classifier.cpp b/toolkit/components/url-classifier/Classifier.cpp
index bbaeaf5352..b9d0ace1bd 100644
--- a/toolkit/components/url-classifier/Classifier.cpp
+++ b/toolkit/components/url-classifier/Classifier.cpp
@@ -15,7 +15,6 @@
#include "nsNetCID.h"
#include "nsPrintfCString.h"
#include "nsThreadUtils.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Logging.h"
#include "mozilla/SyncRunnable.h"
#include "mozilla/Base64.h"
@@ -413,8 +412,6 @@ Classifier::Check(const nsACString& aSpec,
uint32_t aFreshnessGuarantee,
LookupResultArray& aResults)
{
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_CL_CHECK_TIME> timer;
-
// Get the set of fragments based on the url. This is necessary because we
// only look up at most 5 URLs per aSpec, even if aSpec has more than 5
// components.
@@ -498,9 +495,6 @@ Classifier::Check(const nsACString& aSpec,
matchingStatistics |= PrefixMatch::eMatchV2Prefix;
}
}
-
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_PREFIX_MATCH,
- static_cast<uint8_t>(matchingStatistics));
}
return NS_OK;
@@ -509,8 +503,6 @@ Classifier::Check(const nsACString& aSpec,
nsresult
Classifier::ApplyUpdates(nsTArray<TableUpdate*>* aUpdates)
{
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_CL_UPDATE_TIME> timer;
-
PRIntervalTime clockStart = 0;
if (LOG_ENABLED()) {
clockStart = PR_IntervalNow();
diff --git a/toolkit/components/url-classifier/Entries.h b/toolkit/components/url-classifier/Entries.h
index 969f4f739b..b7fb345161 100644
--- a/toolkit/components/url-classifier/Entries.h
+++ b/toolkit/components/url-classifier/Entries.h
@@ -100,7 +100,7 @@ struct SafebrowsingHash
aStr.SetCapacity(2 * len);
for (size_t i = 0; i < len; ++i) {
- const char c = static_cast<const char>(buf[i]);
+ const char c = static_cast<char>(buf[i]);
aStr.Append(lut[(c >> 4) & 0x0F]);
aStr.Append(lut[c & 15]);
}
diff --git a/toolkit/components/url-classifier/LookupCache.cpp b/toolkit/components/url-classifier/LookupCache.cpp
index 5a3b1e36d0..7c4d7682b3 100644
--- a/toolkit/components/url-classifier/LookupCache.cpp
+++ b/toolkit/components/url-classifier/LookupCache.cpp
@@ -6,7 +6,6 @@
#include "LookupCache.h"
#include "HashStore.h"
#include "nsISeekableStream.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Logging.h"
#include "nsNetUtil.h"
#include "prprf.h"
@@ -451,9 +450,6 @@ nsresult
LookupCacheV2::Build(AddPrefixArray& aAddPrefixes,
AddCompleteArray& aAddCompletes)
{
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_LC_COMPLETIONS,
- static_cast<uint32_t>(aAddCompletes.Length()));
-
mUpdateCompletions.Clear();
mUpdateCompletions.SetCapacity(aAddCompletes.Length());
for (uint32_t i = 0; i < aAddCompletes.Length(); i++) {
@@ -462,9 +458,6 @@ LookupCacheV2::Build(AddPrefixArray& aAddPrefixes,
aAddCompletes.Clear();
mUpdateCompletions.Sort();
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_LC_PREFIXES,
- static_cast<uint32_t>(aAddPrefixes.Length()));
-
nsresult rv = ConstructPrefixSet(aAddPrefixes);
NS_ENSURE_SUCCESS(rv, rv);
mPrimed = true;
@@ -548,8 +541,6 @@ static void EnsureSorted(T* aArray)
nsresult
LookupCacheV2::ConstructPrefixSet(AddPrefixArray& aAddPrefixes)
{
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_PS_CONSTRUCT_TIME> timer;
-
nsTArray<uint32_t> array;
if (!array.SetCapacity(aAddPrefixes.Length(), fallible)) {
return NS_ERROR_OUT_OF_MEMORY;
diff --git a/toolkit/components/url-classifier/LookupCacheV4.cpp b/toolkit/components/url-classifier/LookupCacheV4.cpp
index 7258ae3583..a96e4931ac 100644
--- a/toolkit/components/url-classifier/LookupCacheV4.cpp
+++ b/toolkit/components/url-classifier/LookupCacheV4.cpp
@@ -144,9 +144,6 @@ LookupCacheV4::LoadFromFile(nsIFile* aFile)
}
rv = VerifyChecksum(checksum);
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_VLPS_LOAD_CORRUPT,
- rv == NS_ERROR_FILE_CORRUPTED);
-
return rv;
}
@@ -231,8 +228,6 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate,
if (!isOldMapEmpty && !isAddMapEmpty) {
if (smallestOldPrefix == smallestAddPrefix) {
LOG(("Add prefix should not exist in the original prefix set."));
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE,
- DUPLICATE_PREFIX);
return NS_ERROR_FAILURE;
}
@@ -274,15 +269,11 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate,
// the number of original prefix plus add prefix.
if (index <= 0) {
LOG(("There are still prefixes remaining after reaching maximum runs."));
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE,
- INFINITE_LOOP);
return NS_ERROR_FAILURE;
}
if (removalIndex < removalArray.Length()) {
LOG(("There are still prefixes to remove after exhausting the old PrefixSet."));
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE,
- WRONG_REMOVAL_INDICES);
return NS_ERROR_FAILURE;
}
@@ -290,8 +281,6 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate,
crypto->Finish(false, checksum);
if (aTableUpdate->Checksum().IsEmpty()) {
LOG(("Update checksum missing."));
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE,
- MISSING_CHECKSUM);
// Generate our own checksum to tableUpdate to ensure there is always
// checksum in .metadata
@@ -300,8 +289,6 @@ LookupCacheV4::ApplyUpdate(TableUpdateV4* aTableUpdate,
} else if (aTableUpdate->Checksum() != checksum){
LOG(("Checksum mismatch after applying partial update"));
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_UPDATE_ERROR_TYPE,
- CHECKSUM_MISMATCH);
return NS_ERROR_FAILURE;
}
diff --git a/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp b/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp
index e9d6770d35..a387a698c6 100644
--- a/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp
+++ b/toolkit/components/url-classifier/VariableLengthPrefixSet.cpp
@@ -209,8 +209,6 @@ VariableLengthPrefixSet::LoadFromFile(nsIFile* aFile)
NS_ENSURE_ARG_POINTER(aFile);
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_VLPS_FILELOAD_TIME> timer;
-
nsCOMPtr<nsIInputStream> localInFile;
nsresult rv = NS_NewLocalFileInputStream(getter_AddRefs(localInFile), aFile,
PR_RDONLY | nsIFile::OS_READAHEAD);
@@ -255,15 +253,12 @@ VariableLengthPrefixSet::StoreToFile(nsIFile* aFile)
uint32_t fileSize = 0;
// Preallocate the file storage
- {
- nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile));
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_VLPS_FALLOCATE_TIME> timer;
+ nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile));
- fileSize += mFixedPrefixSet->CalculatePreallocateSize();
- fileSize += CalculatePreallocateSize();
+ fileSize += mFixedPrefixSet->CalculatePreallocateSize();
+ fileSize += CalculatePreallocateSize();
- Unused << fos->Preallocate(fileSize);
- }
+ Unused << fos->Preallocate(fileSize);
// Convert to buffered stream
nsCOMPtr<nsIOutputStream> out =
diff --git a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
index 2ad8b6b515..d3018aa2db 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
@@ -37,7 +37,6 @@
#include "mozilla/Mutex.h"
#include "mozilla/Preferences.h"
#include "mozilla/TimeStamp.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/Logging.h"
#include "prprf.h"
#include "prnetdb.h"
@@ -320,9 +319,6 @@ nsUrlClassifierDBServiceWorker::HandlePendingLookups()
MutexAutoUnlock unlock(mPendingLookupLock);
DoLookup(lookup.mKey, lookup.mTables, lookup.mCallback);
}
- double lookupTime = (TimeStamp::Now() - lookup.mStartTime).ToMilliseconds();
- Telemetry::Accumulate(Telemetry::URLCLASSIFIER_LOOKUP_TIME,
- static_cast<uint32_t>(lookupTime));
}
return NS_OK;
@@ -1818,8 +1814,6 @@ nsUrlClassifierDBService::Shutdown()
gShuttingDownThread = true;
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_SHUTDOWN_TIME> timer;
-
mCompleters.Clear();
nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
diff --git a/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp b/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
index 8745654703..3cfdf7a35f 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
@@ -315,8 +315,6 @@ nsUrlClassifierPrefixSet::LoadFromFile(nsIFile* aFile)
{
MutexAutoLock lock(mLock);
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_PS_FILELOAD_TIME> timer;
-
nsCOMPtr<nsIInputStream> localInFile;
nsresult rv = NS_NewLocalFileInputStream(getter_AddRefs(localInFile), aFile,
PR_RDONLY | nsIFile::OS_READAHEAD);
@@ -356,17 +354,13 @@ nsUrlClassifierPrefixSet::StoreToFile(nsIFile* aFile)
uint32_t fileSize;
- // Preallocate the file storage
- {
- nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile));
- Telemetry::AutoTimer<Telemetry::URLCLASSIFIER_PS_FALLOCATE_TIME> timer;
+ nsCOMPtr<nsIFileOutputStream> fos(do_QueryInterface(localOutFile));
- fileSize = CalculatePreallocateSize();
+ fileSize = CalculatePreallocateSize();
- // Ignore failure, the preallocation is a hint and we write out the entire
- // file later on
- Unused << fos->Preallocate(fileSize);
- }
+ // Ignore failure, the preallocation is a hint and we write out the entire
+ // file later on
+ Unused << fos->Preallocate(fileSize);
// Convert to buffered stream
nsCOMPtr<nsIOutputStream> out =
diff --git a/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp b/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp
index 554bff3422..e230f69518 100644
--- a/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp
+++ b/toolkit/components/url-classifier/nsUrlClassifierStreamUpdater.cpp
@@ -646,9 +646,6 @@ nsUrlClassifierStreamUpdater::OnStartRequest(nsIRequest *request,
if (NS_FAILED(status)) {
// Assume we're overloading the server and trigger backoff.
downloadError = true;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::URLCLASSIFIER_UPDATE_REMOTE_STATUS,
- 15 /* unknown response code */);
-
} else {
bool succeeded = false;
rv = httpChannel->GetRequestSucceeded(&succeeded);
@@ -657,8 +654,6 @@ nsUrlClassifierStreamUpdater::OnStartRequest(nsIRequest *request,
uint32_t requestStatus;
rv = httpChannel->GetResponseStatus(&requestStatus);
NS_ENSURE_SUCCESS(rv, rv);
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::URLCLASSIFIER_UPDATE_REMOTE_STATUS,
- HTTPStatusToBucket(requestStatus));
LOG(("nsUrlClassifierStreamUpdater::OnStartRequest %s (%d)", succeeded ?
"succeeded" : "failed", requestStatus));
if (!succeeded) {
diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js
index 4e42a56877..b1d7ab5f64 100644
--- a/toolkit/content/aboutSupport.js
+++ b/toolkit/content/aboutSupport.js
@@ -180,9 +180,12 @@ var snapshotFormatters = {
title = key;
}
}
+ let td = $.new("td", value);
+ td.style["white-space"] = "pre-wrap";
+
return $.new("tr", [
$.new("th", title, "column"),
- $.new("td", value),
+ td,
]);
}
@@ -306,8 +309,16 @@ var snapshotFormatters = {
apzInfo.length
? apzInfo.join("; ")
: localizedMsg(["apzNone"]));
- addRowFromKey("features", "webglRenderer");
+ addRowFromKey("features", "webgl1WSIInfo");
+ addRowFromKey("features", "webgl1Renderer");
+ addRowFromKey("features", "webgl1Version");
+ addRowFromKey("features", "webgl1DriverExtensions");
+ addRowFromKey("features", "webgl1Extensions");
+ addRowFromKey("features", "webgl2WSIInfo");
addRowFromKey("features", "webgl2Renderer");
+ addRowFromKey("features", "webgl2Version");
+ addRowFromKey("features", "webgl2DriverExtensions");
+ addRowFromKey("features", "webgl2Extensions");
addRowFromKey("features", "supportsHardwareH264", "hardwareH264");
addRowFromKey("features", "currentAudioBackend", "audioBackend");
addRowFromKey("features", "direct2DEnabled", "#Direct2D");
diff --git a/toolkit/content/tests/chrome/window_browser_drop.xul b/toolkit/content/tests/chrome/window_browser_drop.xul
index 8a22ccce90..2d9bcd2a1a 100644
--- a/toolkit/content/tests/chrome/window_browser_drop.xul
+++ b/toolkit/content/tests/chrome/window_browser_drop.xul
@@ -31,7 +31,7 @@ function dropOnRemoteBrowserAsync(browser, data, shouldExpectStateChange) {
});
}
- let dataTransfer = new content.DataTransfer("dragstart", false);
+ let dataTransfer = new content.DataTransfer();
for (let i = 0; i < data.length; i++) {
let types = data[i];
for (let j = 0; j < types.length; j++) {
@@ -166,18 +166,6 @@ function* dropLinksOnBrowser(browser, type) {
data: "http://www.mozilla.org/\nMozilla.org\nhttp://www.example.com/\nExample.com" } ] ],
"text/x-moz-url with 2 URLs drop on browser " + type);
- // Dropping multiple items should open multiple pages.
- yield* expectLink(browser,
- [ { url: "http://www.example.com/",
- name: "Example.com" },
- { url: "http://www.mozilla.org/",
- name: "http://www.mozilla.org/" }],
- [ [ { type: "text/x-moz-url",
- data: "http://www.example.com/\nExample.com" } ],
- [ { type: "text/plain",
- data: "http://www.mozilla.org/" } ] ],
- "text/x-moz-url and text/plain drop on browser " + type);
-
// Dropping single item with multiple types should open single page.
yield* expectLink(browser,
[ { url: "http://www.example.org/",
diff --git a/toolkit/content/widgets/tabbox.xml b/toolkit/content/widgets/tabbox.xml
index 02adb70b31..60c395c131 100644
--- a/toolkit/content/widgets/tabbox.xml
+++ b/toolkit/content/widgets/tabbox.xml
@@ -792,19 +792,6 @@
<field name="arrowKeysShouldWrap" readonly="true">
/Mac/.test(navigator.platform)
</field>
- <property name="TelemetryStopwatch" readonly="true">
- <getter><![CDATA[
- let module = {};
- Cu.import("resource://gre/modules/TelemetryStopwatch.jsm", module);
- Object.defineProperty(this, "TelemetryStopwatch", {
- configurable: true,
- enumerable: true,
- writable: true,
- value: module.TelemetryStopwatch
- });
- return module.TelemetryStopwatch;
- ]]></getter>
- </property>
</implementation>
<handlers>
@@ -814,11 +801,6 @@
return;
if (this != this.parentNode.selectedItem) { // Not selected yet
- let stopwatchid = this.parentNode.getAttribute("stopwatchid");
- if (stopwatchid) {
- this.TelemetryStopwatch.start(stopwatchid);
- }
-
// Call this before setting the 'ignorefocus' attribute because this
// will pass on focus if the formerly selected tab was focused as well.
this.parentNode._selectNewTab(this);
@@ -836,10 +818,6 @@
this.setAttribute("ignorefocus", "true");
setTimeout(tab => tab.removeAttribute("ignorefocus"), 0, this);
}
-
- if (stopwatchid) {
- this.TelemetryStopwatch.finish(stopwatchid);
- }
}
// Otherwise this tab is already selected and we will fall
// through to mousedown behavior which sets focus on the current tab,
diff --git a/toolkit/locales/Makefile.in b/toolkit/locales/Makefile.in
index 189e0b1b0e..198d9aaa87 100644
--- a/toolkit/locales/Makefile.in
+++ b/toolkit/locales/Makefile.in
@@ -16,7 +16,9 @@ libs-%:
@$(MAKE) -C ../../netwerk/locales/ libs AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../dom/locales/ libs AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../security/manager/locales/ libs AB_CD=$* XPI_NAME=locale-$*
+ifdef MOZ_DEVTOOLS_SERVER
@$(MAKE) -C ../../devtools/shared/locales/ libs AB_CD=$* XPI_NAME=locale-$*
+endif
@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$*
# target to be used by multi-locale l10n builds, just add this locale
diff --git a/toolkit/locales/en-US/chrome/global/aboutRights.dtd b/toolkit/locales/en-US/chrome/global/aboutRights.dtd
index dfd5a1668b..8ccbbb1777 100644
--- a/toolkit/locales/en-US/chrome/global/aboutRights.dtd
+++ b/toolkit/locales/en-US/chrome/global/aboutRights.dtd
@@ -87,7 +87,7 @@
<!-- points 1-7 text for branded builds -->
<!ENTITY rights2.webservices-term1 "&vendorShortName; and its contributors, licensors and partners work to provide the most accurate and up-to-date Services. However, we cannot guarantee that this information is comprehensive and error-free. For example, for the Location Aware Service all locations returned by our service provider are estimates only and neither we nor our service provider guarantee the accuracy of the locations provided.">
<!ENTITY rights.webservices-term2 "&vendorShortName; may discontinue or change the Services at its discretion.">
-<!ENTITY rights2.webservices-term3 "You are welcome to use these Services with the accompanying version of &brandShortName;, and &vendorShortName; grants you its rights to do so. &vendorShortName; and its licensors reserve all other rights in the Services. These terms are not intended to limit any rights granted under open source licenses applicable to &brandShortName; and to corresponding source code versions of &brandShortName;, however these (optional) services are provided asa convenience to you, and in no way extend your software rights to the Services.">
+<!ENTITY rights2.webservices-term3 "You are welcome to use these Services with the accompanying version of &brandShortName;, and &vendorShortName; grants you its rights to do so. &vendorShortName; and its licensors reserve all other rights in the Services. These terms are not intended to limit any rights granted under open source licenses applicable to &brandShortName; and to corresponding source code versions of &brandShortName;, however these (optional) services are provided as a convenience to you, and in no way extend your software rights to the Services.">
<!ENTITY rights.webservices-term4 "The Services are provided &quot;as-is&quot; and &quot;as-available&quot;. &vendorShortName;, its contributors, licensors and distributors disclaim all warranties, whether express or implied, including without limitation warranties that the Services are merchantable and fit for your particular purposes. You bear the entire risk as to selecting the Services for your purposes and as to the quality and performance of the Services. If your jurisdiction does not allow disclaiming of warranties, then you should not use &brandShortName; or Services.">
<!ENTITY rights.webservices-term5 "Except as required by law, &vendorShortName;, its contributors, licensors, and distributors will not be liable for any indirect, special, incidental, consequential, punitive, or exemplary damages arising out of or in any way relating to the use of &brandShortName; and the Services. The collective liability under these terms will not exceed $500 (five hundred dollars). If your jurisdiction does not allow the exclusion or limitation of damages, then you should not use &brandShortName; or Services.">
<!ENTITY rights.webservices-term6 "&vendorShortName; may update these terms as necessary from time to time. These terms may not be modified or canceled without &vendorShortName;'s written agreement.">
diff --git a/toolkit/locales/en-US/chrome/global/aboutSupport.properties b/toolkit/locales/en-US/chrome/global/aboutSupport.properties
index 0bc612b795..564292e3d9 100644
--- a/toolkit/locales/en-US/chrome/global/aboutSupport.properties
+++ b/toolkit/locales/en-US/chrome/global/aboutSupport.properties
@@ -71,8 +71,16 @@ gpuRAM = RAM
gpuDriverVersion = Driver Version
gpuDriverDate = Driver Date
gpuActive = Active
-webglRenderer = WebGL Renderer
-webgl2Renderer = WebGL2 Renderer
+webgl1WSIInfo = WebGL 1 Driver WSI Info
+webgl1Renderer = WebGL 1 Driver Renderer
+webgl1Version = WebGL 1 Driver Version
+webgl1DriverExtensions = WebGL 1 Driver Extensions
+webgl1Extensions = WebGL 1 Extensions
+webgl2WSIInfo = WebGL 2 Driver WSI Info
+webgl2Renderer = WebGL 2 Driver Renderer
+webgl2Version = WebGL 2 Driver Version
+webgl2DriverExtensions = WebGL 2 Driver Extensions
+webgl2Extensions = WebGL 2 Extensions
GPU1 = GPU #1
GPU2 = GPU #2
blocklistedBug = Blocklisted due to known issues
diff --git a/toolkit/modules/Troubleshoot.jsm b/toolkit/modules/Troubleshoot.jsm
index cea7c8f29d..8d84eec8c3 100644
--- a/toolkit/modules/Troubleshoot.jsm
+++ b/toolkit/modules/Troubleshoot.jsm
@@ -419,7 +419,13 @@ var dataProviders = {
.createInstance(Ci.nsIDOMParser)
.parseFromString("<html/>", "text/html");
- function GetWebGLInfo(contextType) {
+ function GetWebGLInfo(data, keyPrefix, contextType) {
+ data[keyPrefix + "Renderer"] = "-";
+ data[keyPrefix + "Version"] = "-";
+ data[keyPrefix + "DriverExtensions"] = "-";
+ data[keyPrefix + "Extensions"] = "-";
+ data[keyPrefix + "WSIInfo"] = "-";
+
let canvas = doc.createElement("canvas");
canvas.width = 1;
canvas.height = 1;
@@ -446,16 +452,22 @@ var dataProviders = {
creationError = e.toString();
}
}
- if (!gl)
- return creationError || "(no info)";
+ if (!gl) {
+ data[keyPrefix + "Renderer"] = creationError || "(no creation error info)";
+ return;
+ }
+ data[keyPrefix + "Extensions"] = gl.getSupportedExtensions().join(" ");
- let infoExt = gl.getExtension("WEBGL_debug_renderer_info");
+ let ext = gl.getExtension("MOZ_debug_get");
// This extension is unconditionally available to chrome. No need to check.
- let vendor = gl.getParameter(infoExt.UNMASKED_VENDOR_WEBGL);
- let renderer = gl.getParameter(infoExt.UNMASKED_RENDERER_WEBGL);
+ let vendor = ext.getParameter(gl.VENDOR);
+ let renderer = ext.getParameter(gl.RENDERER);
- let contextInfo = vendor + " -- " + renderer;
+ data[keyPrefix + "Renderer"] = vendor + " -- " + renderer;
+ data[keyPrefix + "Version"] = ext.getParameter(gl.VERSION);
+ data[keyPrefix + "DriverExtensions"] = ext.getParameter(ext.EXTENSIONS);
+ data[keyPrefix + "WSIInfo"] = ext.getParameter(ext.WSI_INFO);
// Eagerly free resources.
@@ -463,14 +475,11 @@ var dataProviders = {
if (loseExt) {
loseExt.loseContext();
}
-
-
- return contextInfo;
}
- data.webglRenderer = GetWebGLInfo("webgl");
- data.webgl2Renderer = GetWebGLInfo("webgl2");
+ GetWebGLInfo(data, "webgl1", "webgl");
+ GetWebGLInfo(data, "webgl2", "webgl2");
let infoInfo = gfxInfo.getInfo();
diff --git a/toolkit/modules/tests/browser/browser_Troubleshoot.js b/toolkit/modules/tests/browser/browser_Troubleshoot.js
index 7f0069dc91..4124be1fb3 100644
--- a/toolkit/modules/tests/browser/browser_Troubleshoot.js
+++ b/toolkit/modules/tests/browser/browser_Troubleshoot.js
@@ -298,12 +298,36 @@ const SNAPSHOT_SCHEMA = {
clearTypeParameters: {
type: "string",
},
- webglRenderer: {
+ webgl1Renderer: {
+ type: "string",
+ },
+ webgl1Version: {
+ type: "string",
+ },
+ webgl1DriverExtensions: {
+ type: "string",
+ },
+ webgl1Extensions: {
+ type: "string",
+ },
+ webgl1WSIInfo: {
type: "string",
},
webgl2Renderer: {
type: "string",
},
+ webgl2Version: {
+ type: "string",
+ },
+ webgl2DriverExtensions: {
+ type: "string",
+ },
+ webgl2Extensions: {
+ type: "string",
+ },
+ webgl2WSIInfo: {
+ type: "string",
+ },
info: {
type: "object",
},
diff --git a/toolkit/mozapps/downloads/content/downloads.js b/toolkit/mozapps/downloads/content/downloads.js
index 92a9f75931..2fdb19a743 100644
--- a/toolkit/mozapps/downloads/content/downloads.js
+++ b/toolkit/mozapps/downloads/content/downloads.js
@@ -7,7 +7,7 @@
// Globals
const PREF_BDM_CLOSEWHENDONE = "browser.download.manager.closeWhenDone";
-const PREF_BDM_ALERTONEXEOPEN = "browser.download.manager.alertOnEXEOpen";
+const PREF_BDM_CONFIRMOPENEXE = "browser.download.confirmOpenExecutable";
const PREF_BDM_SCANWHENDONE = "browser.download.manager.scanWhenDone";
const nsLocalFile = Components.Constructor("@mozilla.org/file/local;1",
@@ -78,7 +78,6 @@ var gStr = {
downloadsTitleFiles: "downloadsTitleFiles",
downloadsTitlePercent: "downloadsTitlePercent",
fileExecutableSecurityWarningTitle: "fileExecutableSecurityWarningTitle",
- fileExecutableSecurityWarningDontAsk: "fileExecutableSecurityWarningDontAsk"
};
// The statement to query for downloads that are active or match the search
@@ -251,7 +250,7 @@ function openDownload(aDownload)
var pref = Cc["@mozilla.org/preferences-service;1"].
getService(Ci.nsIPrefBranch);
try {
- dontAsk = !pref.getBoolPref(PREF_BDM_ALERTONEXEOPEN);
+ dontAsk = !pref.getBoolPref(PREF_BDM_CONFIRMOPENEXE);
} catch (e) { }
if (AppConstants.platform == "win") {
@@ -273,16 +272,13 @@ function openDownload(aDownload)
var message = strings.getFormattedString("fileExecutableSecurityWarning", [name, name]);
let title = gStr.fileExecutableSecurityWarningTitle;
- let dontAsk = gStr.fileExecutableSecurityWarningDontAsk;
var promptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"].
getService(Ci.nsIPromptService);
- var checkbox = { value: false };
- var open = promptSvc.confirmCheck(window, title, message, dontAsk, checkbox);
+ var open = promptSvc.confirm(window, title, message);
if (!open)
return;
- pref.setBoolPref(PREF_BDM_ALERTONEXEOPEN, !checkbox.value);
}
}
try {
diff --git a/toolkit/themes/linux/global/jar.mn b/toolkit/themes/linux/global/jar.mn
index b161f8cae1..ba665adff1 100644
--- a/toolkit/themes/linux/global/jar.mn
+++ b/toolkit/themes/linux/global/jar.mn
@@ -32,7 +32,7 @@ toolkit.jar:
skin/classic/global/splitter.css
skin/classic/global/tabbox.css
skin/classic/global/textbox.css
- skin/classic/global/toolbar.css
+* skin/classic/global/toolbar.css
skin/classic/global/toolbarbutton.css
skin/classic/global/tree.css
skin/classic/global/alerts/alert.css (alerts/alert.css)
diff --git a/toolkit/themes/linux/global/toolbar.css b/toolkit/themes/linux/global/toolbar.css
index f17fea12f1..1d52aeb8f1 100644
--- a/toolkit/themes/linux/global/toolbar.css
+++ b/toolkit/themes/linux/global/toolbar.css
@@ -31,11 +31,21 @@ menubar, toolbar[type="menubar"] {
padding: 1px 0px;
}
+
+%ifdef MOZ_AUSTRALIS
+menubar:-moz-lwtheme,
+toolbar:-moz-lwtheme {
+ -moz-appearance: none;
+ color: inherit;
+}
+%else
menubar:-moz-lwtheme,
toolbar:-moz-lwtheme {
-moz-appearance: none;
color: inherit;
+ border-style: none;
}
+%endif
/* in browser.xul, the menubar is inside a toolbar... */
toolbaritem > menubar {
diff --git a/toolkit/themes/osx/global/jar.mn b/toolkit/themes/osx/global/jar.mn
index 2b7d19641c..9ca73cc6bc 100644
--- a/toolkit/themes/osx/global/jar.mn
+++ b/toolkit/themes/osx/global/jar.mn
@@ -44,7 +44,7 @@ toolkit.jar:
skin/classic/global/tabbox.css
skin/classic/global/textbox.css
skin/classic/global/datetimepicker.css
- skin/classic/global/toolbar.css
+* skin/classic/global/toolbar.css
skin/classic/global/toolbarbutton.css
* skin/classic/global/tree.css
* skin/classic/global/viewbuttons.css
diff --git a/toolkit/themes/osx/global/toolbar.css b/toolkit/themes/osx/global/toolbar.css
index 820436f142..f07332d2f3 100644
--- a/toolkit/themes/osx/global/toolbar.css
+++ b/toolkit/themes/osx/global/toolbar.css
@@ -16,12 +16,21 @@ toolbar {
-moz-appearance: toolbar;
}
+%ifdef MOZ_AUSTRALIS
menubar:-moz-lwtheme,
toolbar:-moz-lwtheme {
-moz-appearance: none;
background: none;
border-color: transparent;
}
+%else
+menubar:-moz-lwtheme,
+toolbar:-moz-lwtheme {
+ -moz-appearance: none;
+ background: none;
+ border-style: none;
+}
+%endif
menubar {
-moz-appearance: dialog; /* For content menubars, "toolbar" is too dark, so we use "dialog". */
diff --git a/toolkit/themes/shared/jar.inc.mn b/toolkit/themes/shared/jar.inc.mn
index e361e744f0..3755688279 100644
--- a/toolkit/themes/shared/jar.inc.mn
+++ b/toolkit/themes/shared/jar.inc.mn
@@ -9,7 +9,6 @@
toolkit.jar:
% skin global classic/1.0 %skin/classic/global/
-% skin help classic/1.0 %skin/classic/help/
% skin mozapps classic/1.0 %skin/classic/mozapps/
skin/classic/global/about.css (../../shared/about.css)
skin/classic/global/aboutCache.css (../../shared/aboutCache.css)
diff --git a/toolkit/themes/windows/global/jar.mn b/toolkit/themes/windows/global/jar.mn
index a2cc9e2eae..6f0cf41301 100644
--- a/toolkit/themes/windows/global/jar.mn
+++ b/toolkit/themes/windows/global/jar.mn
@@ -37,7 +37,7 @@ toolkit.jar:
skin/classic/global/printPreview.css
skin/classic/global/scrollbox.css
skin/classic/global/splitter.css
- skin/classic/global/toolbar.css
+* skin/classic/global/toolbar.css
skin/classic/global/toolbarbutton.css
* skin/classic/global/tree.css
skin/classic/global/alerts/alert.css (alerts/alert.css)
diff --git a/toolkit/themes/windows/global/toolbar.css b/toolkit/themes/windows/global/toolbar.css
index dcd8d361f0..38c8a617a5 100644
--- a/toolkit/themes/windows/global/toolbar.css
+++ b/toolkit/themes/windows/global/toolbar.css
@@ -37,7 +37,8 @@ toolbar:first-child, menubar {
}
/* ::::: lightweight theme ::::: */
-
+
+%ifdef MOZ_AUSTRALIS
menubar:-moz-lwtheme,
toolbox:-moz-lwtheme,
toolbar:-moz-lwtheme {
@@ -45,6 +46,15 @@ toolbar:-moz-lwtheme {
background: none;
border-color: transparent;
}
+%else
+menubar:-moz-lwtheme,
+toolbox:-moz-lwtheme,
+toolbar:-moz-lwtheme {
+ -moz-appearance: none;
+ background: none;
+ border-style: none;
+}
+%endif
/* ::::: toolbar decorations ::::: */
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index 40f9ead790..59a72c4321 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -4338,11 +4338,6 @@ mozilla::BrowserTabsRemoteAutostart()
gBrowserTabsRemoteStatus = status;
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::E10S_STATUS, status);
- if (prefEnabled) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::E10S_BLOCKED_FROM_RUNNING,
- !gBrowserTabsRemoteAutostart);
- }
return gBrowserTabsRemoteAutostart;
}
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
index d904cb83a9..2656524775 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -953,27 +953,6 @@ nsXREDirProvider::DoStartup()
else
mode = 2;
}
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SAFE_MODE_USAGE, mode);
-
- // Telemetry about number of profiles.
- nsCOMPtr<nsIToolkitProfileService> profileService =
- do_GetService("@mozilla.org/toolkit/profile-service;1");
- if (profileService) {
- nsCOMPtr<nsISimpleEnumerator> profiles;
- rv = profileService->GetProfiles(getter_AddRefs(profiles));
- if (NS_WARN_IF(NS_FAILED(rv))) {
- return rv;
- }
-
- uint32_t count = 0;
- nsCOMPtr<nsISupports> profile;
- while (NS_SUCCEEDED(profiles->GetNext(getter_AddRefs(profile)))) {
- ++count;
- }
-
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::NUMBER_OF_PROFILES,
- count);
- }
obsSvc->NotifyObservers(nullptr, "profile-initial-state", nullptr);
}
diff --git a/widget/android/fennec/Telemetry.h b/widget/android/fennec/Telemetry.h
index c727354969..458889ef06 100644
--- a/widget/android/fennec/Telemetry.h
+++ b/widget/android/fennec/Telemetry.h
@@ -44,7 +44,6 @@ public:
AddHistogram(jni::String::Param aName, int32_t aValue)
{
MOZ_ASSERT(aName);
- mozilla::Telemetry::Accumulate(aName->ToCString().get(), aValue);
}
static void
@@ -52,8 +51,6 @@ public:
int32_t aValue)
{
MOZ_ASSERT(aName && aKey);
- mozilla::Telemetry::Accumulate(aName->ToCString().get(),
- aKey->ToCString(), aValue);
}
static void
diff --git a/widget/nsIdleService.cpp b/widget/nsIdleService.cpp
index 6a28330815..a1a2566dfc 100644
--- a/widget/nsIdleService.cpp
+++ b/widget/nsIdleService.cpp
@@ -716,9 +716,6 @@ nsIdleService::IdleTimerCallback(void)
return;
}
- // Tell expired listeners they are expired,and find the next timeout
- Telemetry::AutoTimer<Telemetry::IDLE_NOTIFY_IDLE_MS> timer;
-
// We need to initialise the time to the next idle switch.
mDeltaToNextIdleSwitchInS = UINT32_MAX;
diff --git a/widget/windows/nsLookAndFeel.cpp b/widget/windows/nsLookAndFeel.cpp
index 97f81abfdb..a907622d9e 100644
--- a/widget/windows/nsLookAndFeel.cpp
+++ b/widget/windows/nsLookAndFeel.cpp
@@ -11,7 +11,6 @@
#include "nsUXThemeConstants.h"
#include "gfxFont.h"
#include "WinUtils.h"
-#include "mozilla/Telemetry.h"
#include "mozilla/WindowsVersion.h"
#include "gfxFontConstants.h"
@@ -65,8 +64,6 @@ nsLookAndFeel::nsLookAndFeel()
: nsXPLookAndFeel()
, mUseAccessibilityTheme(0)
{
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::TOUCH_ENABLED_DEVICE,
- WinUtils::IsTouchDeviceSupportPresent());
}
nsLookAndFeel::~nsLookAndFeel()
diff --git a/widget/windows/nsNativeThemeWin.cpp b/widget/windows/nsNativeThemeWin.cpp
index 8950dcf90f..475ebce945 100644
--- a/widget/windows/nsNativeThemeWin.cpp
+++ b/widget/windows/nsNativeThemeWin.cpp
@@ -1360,7 +1360,10 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType,
static bool
AssumeThemePartAndStateAreTransparent(int32_t aPart, int32_t aState)
{
- if (aPart == MENU_POPUPITEM && aState == MBI_NORMAL) {
+ // When using a high contrast theme on Windows 8 or later, we can't
+ // use this optimization.
+ if (!(IsWin8OrLater() && nsUXThemeData::IsHighContrastOn()) &&
+ aPart == MENU_POPUPITEM && aState == MBI_NORMAL) {
return true;
}
return false;
diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp
index b2bb59bd36..122d186860 100644
--- a/widget/windows/nsWindow.cpp
+++ b/widget/windows/nsWindow.cpp
@@ -366,6 +366,9 @@ static const int32_t kResizableBorderMinSize = 3;
// Cached pointer events enabler value, True if pointer events are enabled.
static bool gIsPointerEventsEnabled = false;
+// Cached scroll outside menu enabler value, True if scrolling is allowed.
+static bool gIsScrollingOutsideEnabled = false;
+
// We should never really try to accelerate windows bigger than this. In some
// cases this might lead to no D3D9 acceleration where we could have had it
// but D3D9 does not reliably report when it supports bigger windows. 8192
@@ -665,6 +668,10 @@ nsWindow::nsWindow()
Preferences::AddBoolVarCache(&gIsPointerEventsEnabled,
"dom.w3c_pointer_events.enabled",
gIsPointerEventsEnabled);
+ Preferences::AddBoolVarCache(&gIsScrollingOutsideEnabled,
+ "ui.menu.allow_content_scroll",
+ gIsScrollingOutsideEnabled);
+
} // !sInstanceCount
mIdleService = nullptr;
@@ -4225,10 +4232,6 @@ nsWindow::DispatchMouseEvent(EventMessage aEventMessage, WPARAM wParam,
}
if (WinUtils::GetIsMouseFromTouch(aEventMessage)) {
- if (aEventMessage == eMouseDown) {
- Telemetry::Accumulate(Telemetry::FX_TOUCH_USED, 1);
- }
-
if (mTouchWindow) {
// If mTouchWindow is true, then we must have APZ enabled and be
// feeding it raw touch events. In that case we don't need to
@@ -6743,8 +6746,6 @@ bool nsWindow::OnGesture(WPARAM wParam, LPARAM lParam)
bool endFeedback = true;
if (mGesture.PanDeltaToPixelScroll(wheelEvent)) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::SCROLL_INPUT_METHODS,
- (uint32_t) ScrollInputMethod::MainThreadTouch);
DispatchEvent(&wheelEvent, status);
}
@@ -7703,7 +7704,8 @@ nsWindow::DealWithPopups(HWND aWnd, UINT aMessage,
break;
}
}
- return consumeRollupEvent;
+ // Consume event if appropriate unless overridden.
+ return consumeRollupEvent && !gIsScrollingOutsideEnabled;
case WM_ACTIVATEAPP:
break;
diff --git a/xpcom/base/CycleCollectedJSContext.cpp b/xpcom/base/CycleCollectedJSContext.cpp
index 4af8fe4dd0..02fc1aa4ca 100644
--- a/xpcom/base/CycleCollectedJSContext.cpp
+++ b/xpcom/base/CycleCollectedJSContext.cpp
@@ -1547,9 +1547,6 @@ IncrementalFinalizeRunnable::Run()
}
}
- uint32_t duration = (uint32_t)((TimeStamp::Now() - start).ToMilliseconds());
- Telemetry::Accumulate(Telemetry::DEFERRED_FINALIZE_ASYNC, duration);
-
return NS_OK;
}
diff --git a/xpcom/base/nsCycleCollector.cpp b/xpcom/base/nsCycleCollector.cpp
index b2c15a1dd4..a349e086d2 100644
--- a/xpcom/base/nsCycleCollector.cpp
+++ b/xpcom/base/nsCycleCollector.cpp
@@ -528,15 +528,6 @@ public:
#define CC_GRAPH_ASSERT(b)
#endif
-#define CC_TELEMETRY(_name, _value) \
- PR_BEGIN_MACRO \
- if (NS_IsMainThread()) { \
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR##_name, _value); \
- } else { \
- Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_WORKER##_name, _value); \
- } \
- PR_END_MACRO
-
enum NodeColor { black, white, grey };
// This structure should be kept as small as possible; we may expect
@@ -2966,7 +2957,6 @@ nsCycleCollector::ScanWeakMaps()
if (failed) {
MOZ_ASSERT(false, "Ran out of memory in ScanWeakMaps");
- CC_TELEMETRY(_OOM, true);
}
}
@@ -3109,7 +3099,6 @@ nsCycleCollector::ScanIncrementalRoots()
if (failed) {
NS_ASSERTION(false, "Ran out of memory in ScanIncrementalRoots");
- CC_TELEMETRY(_OOM, true);
}
}
@@ -3171,7 +3160,6 @@ nsCycleCollector::ScanBlackNodes()
if (failed) {
NS_ASSERTION(false, "Ran out of memory in ScanBlackNodes");
- CC_TELEMETRY(_OOM, true);
}
}
@@ -3501,7 +3489,6 @@ nsCycleCollector::FixGrayBits(bool aForceGC, TimeLog& aTimeLog)
bool needGC = !mJSContext->AreGCGrayBitsValid();
// Only do a telemetry ping for non-shutdown CCs.
- CC_TELEMETRY(_NEED_GC, needGC);
if (!needGC) {
return;
}
@@ -3553,10 +3540,6 @@ nsCycleCollector::CleanupAfterCollection()
printf(".\ncc: \n");
#endif
- CC_TELEMETRY( , interval);
- CC_TELEMETRY(_VISITED_REF_COUNTED, mResults.mVisitedRefCounted);
- CC_TELEMETRY(_VISITED_GCED, mResults.mVisitedGCed);
- CC_TELEMETRY(_COLLECTED, mWhiteNodeCount);
timeLog.Checkpoint("CleanupAfterCollection::telemetry");
if (mJSContext) {
diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp
index 2d4f3fa9c8..bfeda063bb 100644
--- a/xpcom/base/nsMemoryReporterManager.cpp
+++ b/xpcom/base/nsMemoryReporterManager.cpp
@@ -440,7 +440,6 @@ ResidentDistinguishedAmountHelper(int64_t* aN, bool aDoPurge)
{
#ifdef HAVE_JEMALLOC_STATS
if (aDoPurge) {
- Telemetry::AutoTimer<Telemetry::MEMORY_FREE_PURGED_PAGES_MS> timer;
jemalloc_purge_freed_pages();
}
#endif
diff --git a/xpcom/build/XPCOMInit.cpp b/xpcom/build/XPCOMInit.cpp
index e8ee5828a4..b89f51a98a 100644
--- a/xpcom/build/XPCOMInit.cpp
+++ b/xpcom/build/XPCOMInit.cpp
@@ -123,6 +123,8 @@ extern nsresult nsStringInputStreamConstructor(nsISupports*, REFNSIID, void**);
#include "nsMemoryInfoDumper.h"
#include "nsSecurityConsoleMessage.h"
#include "nsMessageLoop.h"
+#include "nss.h"
+#include "ssl.h"
#include "nsStatusReporterManager.h"
@@ -1043,6 +1045,17 @@ ShutdownXPCOM(nsIServiceManager* aServMgr)
sInitializedJS = false;
}
+ // At this point all networking threads should have been joined and the
+ // component manager is shut down. Any remaining objects that hold NSS
+ // resources (should!) have been released, so we can safely shut down NSS.
+ if (NSS_IsInitialized()) {
+ SSL_ClearSessionCache();
+ // XXX: It would be nice if we can enforce this shutdown.
+ if (NSS_Shutdown() != SECSuccess) {
+ NS_WARNING("NSS Shutdown failed - some resources are still in use");
+ }
+ }
+
// Release our own singletons
// Do this _after_ shutting down the component manager, because the
// JS component loader will use XPConnect to call nsIModule::canUnload,
diff --git a/xpcom/glue/nsTHashtable.h b/xpcom/glue/nsTHashtable.h
index 705b0294e2..830f52e881 100644
--- a/xpcom/glue/nsTHashtable.h
+++ b/xpcom/glue/nsTHashtable.h
@@ -372,7 +372,7 @@ template<class EntryType>
PLDHashNumber
nsTHashtable<EntryType>::s_HashKey(const void* aKey)
{
- return EntryType::HashKey(static_cast<const KeyTypePointer>(aKey));
+ return EntryType::HashKey(static_cast<KeyTypePointer>(aKey));
}
template<class EntryType>
@@ -381,7 +381,7 @@ nsTHashtable<EntryType>::s_MatchEntry(const PLDHashEntryHdr* aEntry,
const void* aKey)
{
return ((const EntryType*)aEntry)->KeyEquals(
- static_cast<const KeyTypePointer>(aKey));
+ static_cast<KeyTypePointer>(aKey));
}
template<class EntryType>
diff --git a/xpcom/string/nsReadableUtilsImpl.h b/xpcom/string/nsReadableUtilsImpl.h
index ff1497b514..94f18dffc6 100644
--- a/xpcom/string/nsReadableUtilsImpl.h
+++ b/xpcom/string/nsReadableUtilsImpl.h
@@ -18,7 +18,7 @@ inline bool IsASCII(char16_t aChar) {
inline const char16_t* aligned(const char16_t* aPtr, const uintptr_t aMask)
{
return reinterpret_cast<const char16_t*>(
- reinterpret_cast<const uintptr_t>(aPtr) & ~aMask);
+ reinterpret_cast<uintptr_t>(aPtr) & ~aMask);
}
/**
diff --git a/xpcom/threads/HangMonitor.cpp b/xpcom/threads/HangMonitor.cpp
index 6def6ed617..8003ef515a 100644
--- a/xpcom/threads/HangMonitor.cpp
+++ b/xpcom/threads/HangMonitor.cpp
@@ -249,8 +249,6 @@ NotifyActivity(ActivityType aActivityType)
// If we have UI activity we should reset the timer and report it
if (aActivityType == kUIActivity) {
- mozilla::Telemetry::Accumulate(mozilla::Telemetry::EVENTLOOP_UI_ACTIVITY_EXP_MS,
- cumulativeUILagMS);
cumulativeUILagMS = 0;
}