tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
April 2012
- 16 participants
- 941 discussions

[torbrowser/maint-2.2] Merge remote-tracking branch 'origin/maint-2.2' into maint-2.2
by mikeperry@torproject.org 25 Apr '12
by mikeperry@torproject.org 25 Apr '12
25 Apr '12
commit 8894278f6c5a23f8be9e001d4330a47df9b2ac1e
Merge: 4128643 300c2ef
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Apr 24 17:42:04 2012 -0700
Merge remote-tracking branch 'origin/maint-2.2' into maint-2.2
build-scripts/osx.mk | 2 +-
build-scripts/versions.mk | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
1
0

25 Apr '12
commit 412864331301d3dc15f59121ef476b1faf1013e1
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Apr 24 17:28:39 2012 -0700
Rebase Firefox patches for FF12.
Hey, one of them even got merged!
---
...nents.interfaces-lookupMethod-from-conten.patch | 10 +-
...0002-Make-Permissions-Manager-memory-only.patch | 8 +-
...-Make-Intermediate-Cert-Store-memory-only.patch | 4 +-
...th-headers-before-the-modify-request-obse.patch | 52 -----
.../firefox/0004-Add-a-string-based-cacheKey.patch | 85 +++++++
.../firefox/0005-Add-a-string-based-cacheKey.patch | 85 -------
.../0005-Block-all-plugins-except-flash.patch | 85 +++++++
...ontent-pref-service-memory-only-clearable.patch | 37 +++
...ize-HTTP-request-order-and-pipeline-depth.patch | 234 --------------------
.../0007-Block-all-plugins-except-flash.patch | 85 -------
...owser-exit-when-not-launched-from-Vidalia.patch | 46 ++++
.../0008-Disable-SSL-Session-ID-tracking.patch | 28 +++
...ontent-pref-service-memory-only-clearable.patch | 37 ---
...owser-exit-when-not-launched-from-Vidalia.patch | 46 ----
...observer-event-to-close-persistent-connec.patch | 40 ++++
.../0010-Disable-SSL-Session-ID-tracking.patch | 28 ---
...e-client-values-only-to-CSS-Media-Queries.patch | 72 ++++++
...11-Limit-the-number-of-fonts-per-document.patch | 228 +++++++++++++++++++
...observer-event-to-close-persistent-connec.patch | 40 ----
...e-client-values-only-to-CSS-Media-Queries.patch | 72 ------
...ize-HTTP-request-order-and-pipeline-depth.patch | 234 ++++++++++++++++++++
...13-Limit-the-number-of-fonts-per-document.patch | 228 -------------------
22 files changed, 866 insertions(+), 918 deletions(-)
diff --git a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
index bdc2f8d..159399a 100644
--- a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
+++ b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
@@ -1,7 +1,7 @@
-From 7b56d6e4ae963f13bb7469d803be823e366ec00c Mon Sep 17 00:00:00 2001
+From 878aa170944f7d44a76f0eb09214d46b6028c549 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:40:40 -0800
-Subject: [PATCH 01/13] Block Components.interfaces,lookupMethod from content
+Subject: [PATCH 01/12] Block Components.interfaces,lookupMethod from content
This patch removes the ability of content script to access
Components.interfaces.* as well as call or access Components.lookupMethod.
@@ -20,10 +20,10 @@ https://trac.torproject.org/projects/tor/ticket/2874
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/js/xpconnect/src/XPCComponents.cpp b/js/xpconnect/src/XPCComponents.cpp
-index ef3e5ac..e986db4 100644
+index 716cfdb..56e3f55 100644
--- a/js/xpconnect/src/XPCComponents.cpp
+++ b/js/xpconnect/src/XPCComponents.cpp
-@@ -4236,7 +4236,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
+@@ -4261,7 +4261,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
NS_IMETHODIMP
nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, char **_retval)
{
@@ -34,7 +34,7 @@ index ef3e5ac..e986db4 100644
*_retval = xpc_CheckAccessList(methodName, allowed);
return NS_OK;
}
-@@ -4245,7 +4247,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
+@@ -4270,7 +4272,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
NS_IMETHODIMP
nsXPCComponents::CanGetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
diff --git a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
index 1ff64e3..b3a8372 100644
--- a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
+++ b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 4640f62becabf5adefd190ae119c93e486be9aed Mon Sep 17 00:00:00 2001
+From 5f47c5bdf95633e28b6e338ba8794243b429aefb Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:45:16 -0800
-Subject: [PATCH 02/13] Make Permissions Manager memory-only
+Subject: [PATCH 02/12] Make Permissions Manager memory-only
This patch exposes a pref 'permissions.memory_only' that properly isolates the
permissions manager to memory, which is responsible for all user specified
@@ -16,7 +16,7 @@ https://trac.torproject.org/projects/tor/ticket/2950
1 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/extensions/cookie/nsPermissionManager.cpp b/extensions/cookie/nsPermissionManager.cpp
-index 67eb216..12cc7cf 100644
+index cdfe21b..a7a0efb 100644
--- a/extensions/cookie/nsPermissionManager.cpp
+++ b/extensions/cookie/nsPermissionManager.cpp
@@ -58,6 +58,10 @@
@@ -75,7 +75,7 @@ index 67eb216..12cc7cf 100644
NS_ENSURE_SUCCESS(rv, rv);
mDBConn->GetConnectionReady(&ready);
-@@ -783,7 +806,12 @@ NS_IMETHODIMP nsPermissionManager::Observe(nsISupports *aSubject, const char *aT
+@@ -794,7 +817,12 @@ NS_IMETHODIMP nsPermissionManager::Observe(nsISupports *aSubject, const char *aT
{
ENSURE_NOT_CHILD_PROCESS;
diff --git a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
index 49ca58e..8563f82 100644
--- a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
+++ b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
@@ -1,7 +1,7 @@
-From b24b0d0fdddb77692a1609109f4c7cfb4b6f11f8 Mon Sep 17 00:00:00 2001
+From 8cb78993225793692fe0560d25db4af55e0553bd Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 19 Aug 2011 17:58:23 -0700
-Subject: [PATCH 03/13] Make Intermediate Cert Store memory-only.
+Subject: [PATCH 03/12] Make Intermediate Cert Store memory-only.
This patch makes the intermediate SSL cert store exist in memory only.
diff --git a/src/current-patches/firefox/0004-Add-HTTP-auth-headers-before-the-modify-request-obse.patch b/src/current-patches/firefox/0004-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
deleted file mode 100644
index 2f0ef83..0000000
--- a/src/current-patches/firefox/0004-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From d09a2b089ef401b08a8668b55b42233c81cbc198 Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)fscked.org>
-Date: Fri, 2 Sep 2011 15:33:20 -0700
-Subject: [PATCH 04/13] Add HTTP auth headers before the modify-request
- observer.
-
-Otherwise, how are we supposed to modify them?
-
-Thanks to Georg Koppen for spotting both the problem and this fix.
----
- netwerk/protocol/http/nsHttpChannel.cpp | 11 +++++++----
- 1 files changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
-index 7c88d41..0cab7a4 100644
---- a/netwerk/protocol/http/nsHttpChannel.cpp
-+++ b/netwerk/protocol/http/nsHttpChannel.cpp
-@@ -328,9 +328,6 @@ nsHttpChannel::Connect(bool firstTime)
- return NS_ERROR_DOCUMENT_NOT_CACHED;
- }
-
-- // check to see if authorization headers should be included
-- mAuthProvider->AddAuthorizationHeaders();
--
- if (mLoadFlags & LOAD_NO_NETWORK_IO) {
- return NS_ERROR_DOCUMENT_NOT_CACHED;
- }
-@@ -3743,6 +3740,9 @@ nsHttpChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *context)
-
- AddCookiesToRequest();
-
-+ // check to see if authorization headers should be included
-+ mAuthProvider->AddAuthorizationHeaders();
-+
- // notify "http-on-modify-request" observers
- gHttpHandler->OnModifyRequest(this);
-
-@@ -4847,7 +4847,10 @@ nsHttpChannel::DoAuthRetry(nsAHttpConnection *conn)
- // this authentication attempt (bug 84794).
- // TODO: save cookies from auth response and send them here (bug 572151).
- AddCookiesToRequest();
--
-+
-+ // check to see if authorization headers should be included
-+ mAuthProvider->AddAuthorizationHeaders();
-+
- // notify "http-on-modify-request" observers
- gHttpHandler->OnModifyRequest(this);
-
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
new file mode 100644
index 0000000..8c5a717
--- /dev/null
+++ b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
@@ -0,0 +1,85 @@
+From c4212c764149b74a04aad7d15cb3df810512e4ba Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)fscked.org>
+Date: Fri, 2 Sep 2011 20:47:02 -0700
+Subject: [PATCH 04/12] Add a string-based cacheKey.
+
+Used for isolating cache according to same-origin policy.
+---
+ netwerk/base/public/nsICachingChannel.idl | 7 +++++++
+ netwerk/protocol/http/nsHttpChannel.cpp | 22 ++++++++++++++++++++++
+ netwerk/protocol/http/nsHttpChannel.h | 1 +
+ 3 files changed, 30 insertions(+), 0 deletions(-)
+
+diff --git a/netwerk/base/public/nsICachingChannel.idl b/netwerk/base/public/nsICachingChannel.idl
+index 2da46d6..4ee5774 100644
+--- a/netwerk/base/public/nsICachingChannel.idl
++++ b/netwerk/base/public/nsICachingChannel.idl
+@@ -98,6 +98,13 @@ interface nsICachingChannel : nsICacheInfoChannel
+ attribute nsISupports cacheKey;
+
+ /**
++ * Set/get the cache domain... uniquely identifies the data in the cache
++ * for this channel. Holding a reference to this key does NOT prevent
++ * the cached data from being removed.
++ */
++ attribute AUTF8String cacheDomain;
++
++ /**
+ * Specifies whether or not the data should be cached to a file. This
+ * may fail if the disk cache is not present. The value of this attribute
+ * is usually only settable during the processing of a channel's
+diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
+index fab0726..5f42b7b 100644
+--- a/netwerk/protocol/http/nsHttpChannel.cpp
++++ b/netwerk/protocol/http/nsHttpChannel.cpp
+@@ -2415,6 +2415,12 @@ nsHttpChannel::AssembleCacheKey(const char *spec, PRUint32 postID,
+ cacheKey.Append(buf);
+ }
+
++ if (strlen(mCacheDomain.get()) > 0) {
++ cacheKey.AppendLiteral("domain=");
++ cacheKey.Append(mCacheDomain.get());
++ cacheKey.AppendLiteral("&");
++ }
++
+ if (!cacheKey.IsEmpty()) {
+ cacheKey.AppendLiteral("uri=");
+ }
+@@ -4762,6 +4768,22 @@ nsHttpChannel::SetCacheForOfflineUse(bool value)
+ }
+
+ NS_IMETHODIMP
++nsHttpChannel::GetCacheDomain(nsACString &value)
++{
++ value = mCacheDomain;
++
++ return NS_OK;
++}
++
++NS_IMETHODIMP
++nsHttpChannel::SetCacheDomain(const nsACString &value)
++{
++ mCacheDomain = value;
++
++ return NS_OK;
++}
++
++NS_IMETHODIMP
+ nsHttpChannel::GetOfflineCacheClientID(nsACString &value)
+ {
+ value = mOfflineCacheClientID;
+diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h
+index b7bba48..605dc80 100644
+--- a/netwerk/protocol/http/nsHttpChannel.h
++++ b/netwerk/protocol/http/nsHttpChannel.h
+@@ -304,6 +304,7 @@ private:
+ nsCOMPtr<nsICacheEntryDescriptor> mOfflineCacheEntry;
+ nsCacheAccessMode mOfflineCacheAccess;
+ nsCString mOfflineCacheClientID;
++ nsCString mCacheDomain;
+
+ // auth specific data
+ nsCOMPtr<nsIHttpChannelAuthProvider> mAuthProvider;
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0005-Add-a-string-based-cacheKey.patch b/src/current-patches/firefox/0005-Add-a-string-based-cacheKey.patch
deleted file mode 100644
index c0b8be5..0000000
--- a/src/current-patches/firefox/0005-Add-a-string-based-cacheKey.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 76dfe3891b66f4a6ba352cf543ca52ff59aa65cd Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)fscked.org>
-Date: Fri, 2 Sep 2011 20:47:02 -0700
-Subject: [PATCH 05/13] Add a string-based cacheKey.
-
-Used for isolating cache according to same-origin policy.
----
- netwerk/base/public/nsICachingChannel.idl | 7 +++++++
- netwerk/protocol/http/nsHttpChannel.cpp | 22 ++++++++++++++++++++++
- netwerk/protocol/http/nsHttpChannel.h | 1 +
- 3 files changed, 30 insertions(+), 0 deletions(-)
-
-diff --git a/netwerk/base/public/nsICachingChannel.idl b/netwerk/base/public/nsICachingChannel.idl
-index 2da46d6..4ee5774 100644
---- a/netwerk/base/public/nsICachingChannel.idl
-+++ b/netwerk/base/public/nsICachingChannel.idl
-@@ -98,6 +98,13 @@ interface nsICachingChannel : nsICacheInfoChannel
- attribute nsISupports cacheKey;
-
- /**
-+ * Set/get the cache domain... uniquely identifies the data in the cache
-+ * for this channel. Holding a reference to this key does NOT prevent
-+ * the cached data from being removed.
-+ */
-+ attribute AUTF8String cacheDomain;
-+
-+ /**
- * Specifies whether or not the data should be cached to a file. This
- * may fail if the disk cache is not present. The value of this attribute
- * is usually only settable during the processing of a channel's
-diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
-index 0cab7a4..2c2803f 100644
---- a/netwerk/protocol/http/nsHttpChannel.cpp
-+++ b/netwerk/protocol/http/nsHttpChannel.cpp
-@@ -2408,6 +2408,12 @@ nsHttpChannel::AssembleCacheKey(const char *spec, PRUint32 postID,
- cacheKey.Append(buf);
- }
-
-+ if (strlen(mCacheDomain.get()) > 0) {
-+ cacheKey.AppendLiteral("domain=");
-+ cacheKey.Append(mCacheDomain.get());
-+ cacheKey.AppendLiteral("&");
-+ }
-+
- if (!cacheKey.IsEmpty()) {
- cacheKey.AppendLiteral("uri=");
- }
-@@ -4747,6 +4753,22 @@ nsHttpChannel::SetCacheForOfflineUse(bool value)
- }
-
- NS_IMETHODIMP
-+nsHttpChannel::GetCacheDomain(nsACString &value)
-+{
-+ value = mCacheDomain;
-+
-+ return NS_OK;
-+}
-+
-+NS_IMETHODIMP
-+nsHttpChannel::SetCacheDomain(const nsACString &value)
-+{
-+ mCacheDomain = value;
-+
-+ return NS_OK;
-+}
-+
-+NS_IMETHODIMP
- nsHttpChannel::GetOfflineCacheClientID(nsACString &value)
- {
- value = mOfflineCacheClientID;
-diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h
-index 88ce469..53538cf 100644
---- a/netwerk/protocol/http/nsHttpChannel.h
-+++ b/netwerk/protocol/http/nsHttpChannel.h
-@@ -303,6 +303,7 @@ private:
- nsCOMPtr<nsICacheEntryDescriptor> mOfflineCacheEntry;
- nsCacheAccessMode mOfflineCacheAccess;
- nsCString mOfflineCacheClientID;
-+ nsCString mCacheDomain;
-
- // auth specific data
- nsCOMPtr<nsIHttpChannelAuthProvider> mAuthProvider;
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
new file mode 100644
index 0000000..00bf898
--- /dev/null
+++ b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
@@ -0,0 +1,85 @@
+From 89d6deddce94c720793a33a1c9fc812ad65116a9 Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)torproject.org>
+Date: Wed, 1 Feb 2012 15:50:15 -0800
+Subject: [PATCH 05/12] Block all plugins except flash.
+
+We cannot use the @mozilla.org/extensions/blocklist;1 service, because we
+actually want to stop plugins from ever entering the browser's process space
+and/or executing code (for example, AV plugins that collect statistics/analyse
+urls, magical toolbars that phone home or "help" the user, skype buttons that
+ruin our day, and censorship filters). Hence we rolled our own.
+
+See https://trac.torproject.org/projects/tor/ticket/3547#comment:6 for musings
+on a better way. Until then, it is delta-darwinism for us.
+---
+ dom/plugins/base/nsPluginHost.cpp | 33 +++++++++++++++++++++++++++++++++
+ dom/plugins/base/nsPluginHost.h | 2 ++
+ 2 files changed, 35 insertions(+), 0 deletions(-)
+
+diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
+index ed081fc..7384bcc 100644
+--- a/dom/plugins/base/nsPluginHost.cpp
++++ b/dom/plugins/base/nsPluginHost.cpp
+@@ -1985,6 +1985,35 @@ bool nsPluginHost::IsDuplicatePlugin(nsPluginTag * aPluginTag)
+ return false;
+ }
+
++PRBool nsPluginHost::GhettoBlacklist(nsIFile *pluginFile)
++{
++ nsCString leaf;
++ const char *leafStr;
++ nsresult rv;
++
++ rv = pluginFile->GetNativeLeafName(leaf);
++ if (NS_FAILED(rv)) {
++ return PR_TRUE; // fuck 'em. blacklist.
++ }
++
++ leafStr = leaf.get();
++
++ if (!leafStr) {
++ return PR_TRUE; // fuck 'em. blacklist.
++ }
++
++ // libgnashplugin.so, libflashplayer.so, Flash Player-10.4-10.5.plugin,
++ // NPSWF32.dll, NPSWF64.dll
++ if (strstr(leafStr, "libgnashplugin") == leafStr ||
++ strstr(leafStr, "libflashplayer") == leafStr ||
++ strstr(leafStr, "Flash Player") == leafStr ||
++ strstr(leafStr, "NPSWF") == leafStr) {
++ return PR_FALSE;
++ }
++
++ return PR_TRUE; // fuck 'em. blacklist.
++}
++
+ typedef NS_NPAPIPLUGIN_CALLBACK(char *, NP_GETMIMEDESCRIPTION)(void);
+
+ nsresult nsPluginHost::ScanPluginsDirectory(nsIFile *pluginsDir,
+@@ -2118,6 +2147,10 @@ nsresult nsPluginHost::ScanPluginsDirectory(nsIFile *pluginsDir,
+ continue;
+ }
+
++ if (GhettoBlacklist(localfile)) {
++ continue;
++ }
++
+ // if it is not found in cache info list or has been changed, create a new one
+ if (!pluginTag) {
+ nsPluginFile pluginFile(localfile);
+diff --git a/dom/plugins/base/nsPluginHost.h b/dom/plugins/base/nsPluginHost.h
+index 5630b8d..f54bd32 100644
+--- a/dom/plugins/base/nsPluginHost.h
++++ b/dom/plugins/base/nsPluginHost.h
+@@ -285,6 +285,8 @@ private:
+ // Loads all cached plugins info into mCachedPlugins
+ nsresult ReadPluginInfo();
+
++ PRBool GhettoBlacklist(nsIFile *pluginFile);
++
+ // Given a file path, returns the plugins info from our cache
+ // and removes it from the cache.
+ void RemoveCachedPluginsInfo(const char *filePath,
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
new file mode 100644
index 0000000..c494e1e
--- /dev/null
+++ b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
@@ -0,0 +1,37 @@
+From b2cc8f517c6589def4cc126af0b5f1898d61541c Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)fscked.org>
+Date: Thu, 8 Sep 2011 08:40:17 -0700
+Subject: [PATCH 06/12] Make content pref service memory-only + clearable
+
+This prevents random urls from being inserted into content-prefs.sqllite in
+the profile directory as content prefs change (includes site-zoom and perhaps
+other site prefs?).
+---
+ .../contentprefs/nsContentPrefService.js | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/toolkit/components/contentprefs/nsContentPrefService.js b/toolkit/components/contentprefs/nsContentPrefService.js
+index 17cac93..1f12609 100644
+--- a/toolkit/components/contentprefs/nsContentPrefService.js
++++ b/toolkit/components/contentprefs/nsContentPrefService.js
+@@ -1242,7 +1242,7 @@ ContentPrefService.prototype = {
+
+ var dbConnection;
+
+- if (!dbFile.exists())
++ if (true || !dbFile.exists())
+ dbConnection = this._dbCreate(dbService, dbFile);
+ else {
+ try {
+@@ -1290,7 +1290,7 @@ ContentPrefService.prototype = {
+ },
+
+ _dbCreate: function ContentPrefService__dbCreate(aDBService, aDBFile) {
+- var dbConnection = aDBService.openDatabase(aDBFile);
++ var dbConnection = aDBService.openSpecialDatabase("memory");
+
+ try {
+ this._dbCreateSchema(dbConnection);
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0006-Randomize-HTTP-request-order-and-pipeline-depth.patch b/src/current-patches/firefox/0006-Randomize-HTTP-request-order-and-pipeline-depth.patch
deleted file mode 100644
index 9687737..0000000
--- a/src/current-patches/firefox/0006-Randomize-HTTP-request-order-and-pipeline-depth.patch
+++ /dev/null
@@ -1,234 +0,0 @@
-From 8e8833ea22369c7597f5844139de37212deb1cd7 Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)torproject.org>
-Date: Thu, 15 Mar 2012 20:05:07 -0700
-Subject: [PATCH 12/12] Randomize HTTP request order and pipeline depth.
-
-This is an experimental defense against
-http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf
-
-See:
-https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting
-
-This defense has been improved since that blog post to additionally randomize
-the order and concurrency of non-pipelined HTTP requests.
----
- netwerk/protocol/http/nsHttpConnectionMgr.cpp | 133 ++++++++++++++++++++++++-
- netwerk/protocol/http/nsHttpConnectionMgr.h | 5 +
- 2 files changed, 133 insertions(+), 5 deletions(-)
-
-diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.cpp b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
-index 17d897f..8f50bf6 100644
---- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
-+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
-@@ -99,6 +99,12 @@ nsHttpConnectionMgr::nsHttpConnectionMgr()
- LOG(("Creating nsHttpConnectionMgr @%x\n", this));
- mCT.Init();
- mAlternateProtocolHash.Init(16);
-+
-+ nsresult rv;
-+ mRandomGenerator = do_GetService("@mozilla.org/security/random-generator;1", &rv);
-+ if (NS_FAILED(rv)) {
-+ mRandomGenerator = nsnull;
-+ }
- }
-
- nsHttpConnectionMgr::~nsHttpConnectionMgr()
-@@ -353,8 +359,12 @@ nsHttpConnectionMgr::AddTransactionToPipeline(nsHttpPipeline *pipeline)
- nsConnectionEntry *ent = mCT.Get(ci->HashKey());
- if (ent) {
- // search for another request to pipeline...
-- PRInt32 i, count = ent->mPendingQ.Length();
-- for (i=0; i<count; ++i) {
-+ PRInt32 i, h, count = ent->mPendingQ.Length();
-+ PRInt32 ind[count];
-+ ShuffleRequestOrder((PRUint32*)ind, (PRUint32)count);
-+
-+ for (h=0; h<count; ++h) {
-+ i = ind[h]; // random request sequence
- nsHttpTransaction *trans = ent->mPendingQ[i];
- if (trans->Caps() & NS_HTTP_ALLOW_PIPELINING) {
- pipeline->AddTransaction(trans);
-@@ -895,12 +905,17 @@ nsHttpConnectionMgr::ProcessPendingQForEntry(nsConnectionEntry *ent)
- if (gHttpHandler->IsSpdyEnabled())
- ProcessSpdyPendingQ(ent);
-
-- PRUint32 i, count = ent->mPendingQ.Length();
-+ PRUint32 h, i = 0, count = ent->mPendingQ.Length();
- if (count > 0) {
- LOG((" pending-count=%u\n", count));
- nsHttpTransaction *trans = nsnull;
- nsHttpConnection *conn = nsnull;
-- for (i = 0; i < count; ++i) {
-+
-+ PRUint32 ind[count];
-+ ShuffleRequestOrder(ind, count);
-+
-+ for (h=0; h<count; ++h) {
-+ i = ind[h]; // random request sequence
- trans = ent->mPendingQ[i];
-
- // When this transaction has already established a half-open
-@@ -1011,6 +1026,19 @@ nsHttpConnectionMgr::AtActiveConnectionLimit(nsConnectionEntry *ent, PRUint8 cap
- maxPersistConns = mMaxPersistConnsPerHost;
- }
-
-+ // Fuzz maxConns for website fingerprinting attack
-+ // We create a range of maxConns/5 up to 6*maxConns/5
-+ // because this function is called repeatedly, and we'll
-+ // end up converging on a the high side of concurrent connections
-+ // after a short while.
-+ PRUint8 *bytes = nsnull;
-+ nsresult rv = mRandomGenerator->GenerateRandomBytes(1, &bytes);
-+ NS_ENSURE_SUCCESS(rv, rv);
-+
-+ bytes[0] = bytes[0] % (maxConns + 1);
-+ maxConns = (maxConns/5) + bytes[0];
-+ NS_Free(bytes);
-+
- // use >= just to be safe
- return (totalCount >= maxConns) || ( (caps & NS_HTTP_ALLOW_KEEPALIVE) &&
- (persistCount >= maxPersistConns) );
-@@ -1227,7 +1255,7 @@ nsHttpConnectionMgr::DispatchTransaction(nsConnectionEntry *ent,
-
- if (conn->SupportsPipelining() && (caps & NS_HTTP_ALLOW_PIPELINING)) {
- LOG((" looking to build pipeline...\n"));
-- if (BuildPipeline(ent, trans, &pipeline))
-+ if (BuildRandomizedPipeline(ent, trans, &pipeline))
- trans = pipeline;
- }
-
-@@ -1300,6 +1328,101 @@ nsHttpConnectionMgr::BuildPipeline(nsConnectionEntry *ent,
- return true;
- }
-
-+
-+// Generate a shuffled request ordering sequence
-+void
-+nsHttpConnectionMgr::ShuffleRequestOrder(PRUint32 *ind, PRUint32 count)
-+{
-+ PRUint32 i;
-+ PRUint32 *rints;
-+
-+ for (i=0; i<count; ++i) {
-+ ind[i] = i;
-+ }
-+ nsresult rv = mRandomGenerator->GenerateRandomBytes(sizeof(PRUint32)*count,
-+ (PRUint8**)&rints);
-+ if (NS_FAILED(rv))
-+ return; // Leave unshuffled if error
-+
-+ for (i=0; i < count; ++i) {
-+ PRInt32 temp = ind[i];
-+ ind[i] = ind[rints[i]%count];
-+ ind[rints[i]%count] = temp;
-+ }
-+ NS_Free(rints);
-+}
-+
-+bool
-+nsHttpConnectionMgr::BuildRandomizedPipeline(nsConnectionEntry *ent,
-+ nsAHttpTransaction *firstTrans,
-+ nsHttpPipeline **result)
-+{
-+ if (mRandomGenerator == nsnull)
-+ return BuildPipeline(ent, firstTrans, result);
-+ if (mMaxPipelinedRequests < 2)
-+ return PR_FALSE;
-+
-+ nsresult rv;
-+ PRUint8 *bytes = nsnull;
-+
-+ nsHttpPipeline *pipeline = nsnull;
-+ nsHttpTransaction *trans;
-+
-+ PRUint32 i = 0, numAdded = 0, numAllowed = 0;
-+ PRUint32 max = 0;
-+
-+ while (i < ent->mPendingQ.Length()) {
-+ if (ent->mPendingQ[i]->Caps() & NS_HTTP_ALLOW_PIPELINING)
-+ numAllowed++;
-+ i++;
-+ }
-+
-+ rv = mRandomGenerator->GenerateRandomBytes(1, &bytes);
-+ NS_ENSURE_SUCCESS(rv, rv);
-+ // 4...12
-+ max = 4 + (bytes[0] % (mMaxPipelinedRequests + 1));
-+ NS_Free(bytes);
-+
-+ while (numAllowed > 0) {
-+ rv = mRandomGenerator->GenerateRandomBytes(1, &bytes);
-+ NS_ENSURE_SUCCESS(rv, rv);
-+ i = bytes[0] % ent->mPendingQ.Length();
-+ NS_Free(bytes);
-+
-+ trans = ent->mPendingQ[i];
-+
-+ if (!(ent->mPendingQ[i]->Caps() & NS_HTTP_ALLOW_PIPELINING))
-+ continue;
-+
-+ if (numAdded == 0) {
-+ pipeline = new nsHttpPipeline;
-+ if (!pipeline)
-+ return PR_FALSE;
-+ pipeline->AddTransaction(firstTrans);
-+ numAdded = 1;
-+ }
-+ pipeline->AddTransaction(trans);
-+
-+ // remove transaction from pending queue
-+ ent->mPendingQ.RemoveElementAt(i);
-+ NS_RELEASE(trans);
-+
-+ numAllowed--;
-+
-+ if (++numAdded == max)
-+ break;
-+ }
-+
-+ //fprintf(stderr, "Yay!!! pipelined %u/%u transactions\n", numAdded, max);
-+ LOG((" pipelined %u/%u transactions\n", numAdded, max));
-+
-+ if (numAdded == 0)
-+ return PR_FALSE;
-+
-+ NS_ADDREF(*result = pipeline);
-+ return PR_TRUE;
-+}
-+
- nsresult
- nsHttpConnectionMgr::ProcessNewTransaction(nsHttpTransaction *trans)
- {
-diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.h b/netwerk/protocol/http/nsHttpConnectionMgr.h
-index bb605a1..e372096 100644
---- a/netwerk/protocol/http/nsHttpConnectionMgr.h
-+++ b/netwerk/protocol/http/nsHttpConnectionMgr.h
-@@ -54,6 +54,7 @@
- #include "nsIObserver.h"
- #include "nsITimer.h"
- #include "nsIX509Cert3.h"
-+#include "nsIRandomGenerator.h"
-
- class nsHttpPipeline;
-
-@@ -312,6 +313,8 @@ private:
- nsresult DispatchTransaction(nsConnectionEntry *, nsHttpTransaction *,
- PRUint8 caps, nsHttpConnection *);
- bool BuildPipeline(nsConnectionEntry *, nsAHttpTransaction *, nsHttpPipeline **);
-+ bool BuildRandomizedPipeline(nsConnectionEntry *, nsAHttpTransaction *, nsHttpPipeline **);
-+ void ShuffleRequestOrder(PRUint32 *, PRUint32);
- nsresult ProcessNewTransaction(nsHttpTransaction *);
- nsresult EnsureSocketThreadTargetIfOnline();
- void ClosePersistentConnections(nsConnectionEntry *ent);
-@@ -405,6 +408,8 @@ private:
- PRUint64 mTimeOfNextWakeUp;
- // Timer for next pruning of dead connections.
- nsCOMPtr<nsITimer> mTimer;
-+ // Random number generator for reordering HTTP pipeline
-+ nsCOMPtr<nsIRandomGenerator> mRandomGenerator;
-
- //
- // the connection table
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0007-Block-all-plugins-except-flash.patch b/src/current-patches/firefox/0007-Block-all-plugins-except-flash.patch
deleted file mode 100644
index b850f62..0000000
--- a/src/current-patches/firefox/0007-Block-all-plugins-except-flash.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 10873c626d038b520853539d45a170919d6d0361 Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)torproject.org>
-Date: Wed, 1 Feb 2012 15:50:15 -0800
-Subject: [PATCH 07/13] Block all plugins except flash.
-
-We cannot use the @mozilla.org/extensions/blocklist;1 service, because we
-actually want to stop plugins from ever entering the browser's process space
-and/or executing code (for example, AV plugins that collect statistics/analyse
-urls, magical toolbars that phone home or "help" the user, skype buttons that
-ruin our day, and censorship filters). Hence we rolled our own.
-
-See https://trac.torproject.org/projects/tor/ticket/3547#comment:6 for musings
-on a better way. Until then, it is delta-darwinism for us.
----
- dom/plugins/base/nsPluginHost.cpp | 33 +++++++++++++++++++++++++++++++++
- dom/plugins/base/nsPluginHost.h | 2 ++
- 2 files changed, 35 insertions(+), 0 deletions(-)
-
-diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
-index 7fe18b2..d76c4ca 100644
---- a/dom/plugins/base/nsPluginHost.cpp
-+++ b/dom/plugins/base/nsPluginHost.cpp
-@@ -1982,6 +1982,35 @@ bool nsPluginHost::IsDuplicatePlugin(nsPluginTag * aPluginTag)
- return false;
- }
-
-+PRBool nsPluginHost::GhettoBlacklist(nsIFile *pluginFile)
-+{
-+ nsCString leaf;
-+ const char *leafStr;
-+ nsresult rv;
-+
-+ rv = pluginFile->GetNativeLeafName(leaf);
-+ if (NS_FAILED(rv)) {
-+ return PR_TRUE; // fuck 'em. blacklist.
-+ }
-+
-+ leafStr = leaf.get();
-+
-+ if (!leafStr) {
-+ return PR_TRUE; // fuck 'em. blacklist.
-+ }
-+
-+ // libgnashplugin.so, libflashplayer.so, Flash Player-10.4-10.5.plugin,
-+ // NPSWF32.dll, NPSWF64.dll
-+ if (strstr(leafStr, "libgnashplugin") == leafStr ||
-+ strstr(leafStr, "libflashplayer") == leafStr ||
-+ strstr(leafStr, "Flash Player") == leafStr ||
-+ strstr(leafStr, "NPSWF") == leafStr) {
-+ return PR_FALSE;
-+ }
-+
-+ return PR_TRUE; // fuck 'em. blacklist.
-+}
-+
- typedef NS_NPAPIPLUGIN_CALLBACK(char *, NP_GETMIMEDESCRIPTION)(void);
-
- nsresult nsPluginHost::ScanPluginsDirectory(nsIFile *pluginsDir,
-@@ -2103,6 +2132,10 @@ nsresult nsPluginHost::ScanPluginsDirectory(nsIFile *pluginsDir,
- continue;
- }
-
-+ if (GhettoBlacklist(localfile)) {
-+ continue;
-+ }
-+
- // if it is not found in cache info list or has been changed, create a new one
- if (!pluginTag) {
- nsPluginFile pluginFile(localfile);
-diff --git a/dom/plugins/base/nsPluginHost.h b/dom/plugins/base/nsPluginHost.h
-index 5630b8d..f54bd32 100644
---- a/dom/plugins/base/nsPluginHost.h
-+++ b/dom/plugins/base/nsPluginHost.h
-@@ -285,6 +285,8 @@ private:
- // Loads all cached plugins info into mCachedPlugins
- nsresult ReadPluginInfo();
-
-+ PRBool GhettoBlacklist(nsIFile *pluginFile);
-+
- // Given a file path, returns the plugins info from our cache
- // and removes it from the cache.
- void RemoveCachedPluginsInfo(const char *filePath,
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
new file mode 100644
index 0000000..f4c3794
--- /dev/null
+++ b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
@@ -0,0 +1,46 @@
+From 57e5abfa15950713acfb5d9a94f636579dde4d12 Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)fscked.org>
+Date: Sun, 9 Oct 2011 22:50:07 -0700
+Subject: [PATCH 07/12] Make Tor Browser exit when not launched from Vidalia
+
+Turns out the Windows 7 UI encourages users to "dock" their Tor Browser app
+for easy relaunch. If they manage to do this, we should fail closed rather
+than opened. Hopefully they will get the hint and dock Vidalia instead.
+
+This is an emergency fix for
+https://trac.torproject.org/projects/tor/ticket/4192. We can do a better
+localized fix w/ a translated alert menu later, if it seems like this might
+actually be common.
+---
+ browser/base/content/browser.js | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
+index 9dfc667..dd1619a 100644
+--- a/browser/base/content/browser.js
++++ b/browser/base/content/browser.js
+@@ -1226,6 +1226,21 @@ function BrowserStartup() {
+
+ prepareForStartup();
+
++ // If this is not a TBB profile, exit.
++ // Solves https://trac.torproject.org/projects/tor/ticket/4192
++ var foundPref = false;
++ try {
++ foundPref = gPrefService.prefHasUserValue("torbrowser.version");
++ } catch(e) {
++ //dump("No pref: "+e);
++ }
++ if(!foundPref) {
++ var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
++ .getService(Components.interfaces.nsIAppStartup);
++ appStartup.quit(3); // Force all windows to close, and then quit.
++ }
++
++
+ if (uriToLoad && !isLoadingBlank) {
+ if (uriToLoad instanceof Ci.nsISupportsArray) {
+ let count = uriToLoad.Count();
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
new file mode 100644
index 0000000..a4ba645
--- /dev/null
+++ b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
@@ -0,0 +1,28 @@
+From 4d7f3122a76e0d5a31ba352880892fecd493252b Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)fscked.org>
+Date: Wed, 7 Dec 2011 19:36:38 -0800
+Subject: [PATCH 08/12] Disable SSL Session ID tracking.
+
+We can't easily bind SSL Session ID tracking to url bar domain,
+so we have to disable them to satisfy
+https://www.torproject.org/projects/torbrowser/design/#identifier-linkability.
+---
+ security/nss/lib/ssl/sslsock.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/security/nss/lib/ssl/sslsock.c b/security/nss/lib/ssl/sslsock.c
+index 22206f7..31086db 100644
+--- a/security/nss/lib/ssl/sslsock.c
++++ b/security/nss/lib/ssl/sslsock.c
+@@ -173,7 +173,7 @@ static sslOptions ssl_defaults = {
+ PR_FALSE, /* enableSSL2 */ /* now defaults to off in NSS 3.13 */
+ PR_TRUE, /* enableSSL3 */
+ PR_TRUE, /* enableTLS */ /* now defaults to on in NSS 3.0 */
+- PR_FALSE, /* noCache */
++ PR_TRUE, /* noCache */
+ PR_FALSE, /* fdx */
+ PR_FALSE, /* v2CompatibleHello */ /* now defaults to off in NSS 3.13 */
+ PR_TRUE, /* detectRollBack */
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0008-Make-content-pref-service-memory-only-clearable.patch b/src/current-patches/firefox/0008-Make-content-pref-service-memory-only-clearable.patch
deleted file mode 100644
index b123321..0000000
--- a/src/current-patches/firefox/0008-Make-content-pref-service-memory-only-clearable.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 9a406718f9cb98f57de4649def8ef501ddbb9775 Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)fscked.org>
-Date: Thu, 8 Sep 2011 08:40:17 -0700
-Subject: [PATCH 08/13] Make content pref service memory-only + clearable
-
-This prevents random urls from being inserted into content-prefs.sqllite in
-the profile directory as content prefs change (includes site-zoom and perhaps
-other site prefs?).
----
- .../contentprefs/nsContentPrefService.js | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/toolkit/components/contentprefs/nsContentPrefService.js b/toolkit/components/contentprefs/nsContentPrefService.js
-index 17cac93..1f12609 100644
---- a/toolkit/components/contentprefs/nsContentPrefService.js
-+++ b/toolkit/components/contentprefs/nsContentPrefService.js
-@@ -1242,7 +1242,7 @@ ContentPrefService.prototype = {
-
- var dbConnection;
-
-- if (!dbFile.exists())
-+ if (true || !dbFile.exists())
- dbConnection = this._dbCreate(dbService, dbFile);
- else {
- try {
-@@ -1290,7 +1290,7 @@ ContentPrefService.prototype = {
- },
-
- _dbCreate: function ContentPrefService__dbCreate(aDBService, aDBFile) {
-- var dbConnection = aDBService.openDatabase(aDBFile);
-+ var dbConnection = aDBService.openSpecialDatabase("memory");
-
- try {
- this._dbCreateSchema(dbConnection);
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0009-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch b/src/current-patches/firefox/0009-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
deleted file mode 100644
index 1744772..0000000
--- a/src/current-patches/firefox/0009-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From af562eedaa61f60241c4a73c2cac6a0a5821a66d Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)fscked.org>
-Date: Sun, 9 Oct 2011 22:50:07 -0700
-Subject: [PATCH 09/13] Make Tor Browser exit when not launched from Vidalia
-
-Turns out the Windows 7 UI encourages users to "dock" their Tor Browser app
-for easy relaunch. If they manage to do this, we should fail closed rather
-than opened. Hopefully they will get the hint and dock Vidalia instead.
-
-This is an emergency fix for
-https://trac.torproject.org/projects/tor/ticket/4192. We can do a better
-localized fix w/ a translated alert menu later, if it seems like this might
-actually be common.
----
- browser/base/content/browser.js | 15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
-
-diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
-index 6abab20..21afee0 100644
---- a/browser/base/content/browser.js
-+++ b/browser/base/content/browser.js
-@@ -1224,6 +1224,21 @@ function BrowserStartup() {
-
- prepareForStartup();
-
-+ // If this is not a TBB profile, exit.
-+ // Solves https://trac.torproject.org/projects/tor/ticket/4192
-+ var foundPref = false;
-+ try {
-+ foundPref = gPrefService.prefHasUserValue("torbrowser.version");
-+ } catch(e) {
-+ //dump("No pref: "+e);
-+ }
-+ if(!foundPref) {
-+ var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
-+ .getService(Components.interfaces.nsIAppStartup);
-+ appStartup.quit(3); // Force all windows to close, and then quit.
-+ }
-+
-+
- if (uriToLoad && !isLoadingBlank) {
- if (uriToLoad instanceof Ci.nsISupportsArray) {
- let count = uriToLoad.Count();
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
new file mode 100644
index 0000000..47007bb
--- /dev/null
+++ b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
@@ -0,0 +1,40 @@
+From 873acaa3fd6df60fe57f1549cdb45df7e277808d Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)torproject.org>
+Date: Wed, 1 Feb 2012 15:53:28 -0800
+Subject: [PATCH 09/12] Provide an observer event to close persistent
+ connections
+
+We need to prevent linkability across "New Identity", which includes closing
+keep-alive connections.
+---
+ netwerk/protocol/http/nsHttpHandler.cpp | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp
+index ebc7641..dbcdff7 100644
+--- a/netwerk/protocol/http/nsHttpHandler.cpp
++++ b/netwerk/protocol/http/nsHttpHandler.cpp
+@@ -331,6 +331,7 @@ nsHttpHandler::Init()
+ mObserverService->AddObserver(this, "net:clear-active-logins", true);
+ mObserverService->AddObserver(this, NS_PRIVATE_BROWSING_SWITCH_TOPIC, true);
+ mObserverService->AddObserver(this, "net:prune-dead-connections", true);
++ mObserverService->AddObserver(this, "net:prune-all-connections", PR_TRUE);
+ }
+
+ return NS_OK;
+@@ -1522,6 +1523,12 @@ nsHttpHandler::Observe(nsISupports *subject,
+ mConnMgr->PruneDeadConnections();
+ }
+ }
++ else if (strcmp(topic, "net:prune-all-connections") == 0) {
++ if (mConnMgr) {
++ mConnMgr->ClosePersistentConnections();
++ mConnMgr->PruneDeadConnections();
++ }
++ }
+
+ return NS_OK;
+ }
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0010-Disable-SSL-Session-ID-tracking.patch b/src/current-patches/firefox/0010-Disable-SSL-Session-ID-tracking.patch
deleted file mode 100644
index 76ce1b6..0000000
--- a/src/current-patches/firefox/0010-Disable-SSL-Session-ID-tracking.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 33198fdb4467637fabf292e18530c89e8b6bad4e Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)fscked.org>
-Date: Wed, 7 Dec 2011 19:36:38 -0800
-Subject: [PATCH 10/13] Disable SSL Session ID tracking.
-
-We can't easily bind SSL Session ID tracking to url bar domain,
-so we have to disable them to satisfy
-https://www.torproject.org/projects/torbrowser/design/#identifier-linkability.
----
- security/nss/lib/ssl/sslsock.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/security/nss/lib/ssl/sslsock.c b/security/nss/lib/ssl/sslsock.c
-index 22206f7..31086db 100644
---- a/security/nss/lib/ssl/sslsock.c
-+++ b/security/nss/lib/ssl/sslsock.c
-@@ -173,7 +173,7 @@ static sslOptions ssl_defaults = {
- PR_FALSE, /* enableSSL2 */ /* now defaults to off in NSS 3.13 */
- PR_TRUE, /* enableSSL3 */
- PR_TRUE, /* enableTLS */ /* now defaults to on in NSS 3.0 */
-- PR_FALSE, /* noCache */
-+ PR_TRUE, /* noCache */
- PR_FALSE, /* fdx */
- PR_FALSE, /* v2CompatibleHello */ /* now defaults to off in NSS 3.13 */
- PR_TRUE, /* detectRollBack */
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0010-Provide-client-values-only-to-CSS-Media-Queries.patch b/src/current-patches/firefox/0010-Provide-client-values-only-to-CSS-Media-Queries.patch
new file mode 100644
index 0000000..5618c19
--- /dev/null
+++ b/src/current-patches/firefox/0010-Provide-client-values-only-to-CSS-Media-Queries.patch
@@ -0,0 +1,72 @@
+From a27dcd387d8c3c1f1e150dcdd3c8aa1872ad14b5 Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)fscked.org>
+Date: Tue, 20 Dec 2011 21:02:49 -0800
+Subject: [PATCH 10/12] Provide client values only to CSS Media Queries
+
+Also disable a bunch of Mozilla extensions that smell like they are
+fingerprintable.
+
+This is done to address
+https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability
+---
+ layout/style/nsMediaFeatures.cpp | 10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp
+index 6eca06e..c68f191 100644
+--- a/layout/style/nsMediaFeatures.cpp
++++ b/layout/style/nsMediaFeatures.cpp
+@@ -383,14 +383,14 @@ nsMediaFeatures::features[] = {
+ nsMediaFeature::eMinMaxAllowed,
+ nsMediaFeature::eLength,
+ { nsnull },
+- GetDeviceWidth
++ GetWidth
+ },
+ {
+ &nsGkAtoms::deviceHeight,
+ nsMediaFeature::eMinMaxAllowed,
+ nsMediaFeature::eLength,
+ { nsnull },
+- GetDeviceHeight
++ GetHeight
+ },
+ {
+ &nsGkAtoms::orientation,
+@@ -411,7 +411,7 @@ nsMediaFeatures::features[] = {
+ nsMediaFeature::eMinMaxAllowed,
+ nsMediaFeature::eIntRatio,
+ { nsnull },
+- GetDeviceAspectRatio
++ GetAspectRatio
+ },
+ {
+ &nsGkAtoms::color,
+@@ -457,6 +457,7 @@ nsMediaFeatures::features[] = {
+ },
+
+ // Mozilla extensions
++/*
+ {
+ &nsGkAtoms::_moz_device_pixel_ratio,
+ nsMediaFeature::eMinMaxAllowed,
+@@ -469,7 +470,7 @@ nsMediaFeatures::features[] = {
+ nsMediaFeature::eMinMaxNotAllowed,
+ nsMediaFeature::eEnumerated,
+ { kOrientationKeywords },
+- GetDeviceOrientation
++ GetOrientation
+ },
+ {
+ &nsGkAtoms::_moz_is_resource_document,
+@@ -590,6 +591,7 @@ nsMediaFeatures::features[] = {
+ { nsnull },
+ GetWindowsTheme
+ },
++*/
+ // Null-mName terminator:
+ {
+ nsnull,
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
new file mode 100644
index 0000000..d5d606b
--- /dev/null
+++ b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
@@ -0,0 +1,228 @@
+From c4d1c23872e2be83f33f2b9bfc5c49d2b98c73a6 Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)torproject.org>
+Date: Wed, 1 Feb 2012 16:01:21 -0800
+Subject: [PATCH 11/12] Limit the number of fonts per document.
+
+We create two prefs:
+browser.display.max_font_count and browser.display.max_font_attempts.
+max_font_count sets a limit on the number of fonts actually used in the
+document, and max_font_attempts sets a limit on the total number of CSS
+queries that a document is allowed to perform.
+
+Once either limit is reached, the browser behaves as if
+browser.display.use_document_fonts was set to 0 for subsequent font queries.
+
+If a pref is not set or is negative, that limit does not apply.
+
+This is done to address:
+https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability
+---
+ layout/base/nsPresContext.cpp | 100 +++++++++++++++++++++++++++++++++++++++++
+ layout/base/nsPresContext.h | 9 ++++
+ layout/style/nsRuleNode.cpp | 13 ++++-
+ 3 files changed, 119 insertions(+), 3 deletions(-)
+
+diff --git a/layout/base/nsPresContext.cpp b/layout/base/nsPresContext.cpp
+index 49b201e..0a8db3c 100644
+--- a/layout/base/nsPresContext.cpp
++++ b/layout/base/nsPresContext.cpp
+@@ -98,6 +98,8 @@
+ #include "FrameLayerBuilder.h"
+ #include "nsDOMMediaQueryList.h"
+ #include "nsSMILAnimationController.h"
++#include "nsString.h"
++#include "nsUnicharUtils.h"
+
+ #ifdef IBMBIDI
+ #include "nsBidiPresUtils.h"
+@@ -733,6 +735,10 @@ nsPresContext::GetUserPreferences()
+ // * use fonts?
+ mUseDocumentFonts =
+ Preferences::GetInt("browser.display.use_document_fonts") != 0;
++ mMaxFonts =
++ Preferences::GetInt("browser.display.max_font_count", -1);
++ mMaxFontAttempts =
++ Preferences::GetInt("browser.display.max_font_attempts", -1);
+
+ // * replace backslashes with Yen signs? (bug 245770)
+ mEnableJapaneseTransform =
+@@ -1334,6 +1340,100 @@ nsPresContext::GetDefaultFont(PRUint8 aFontID) const
+ return font;
+ }
+
++PRBool
++nsPresContext::FontUseCountReached(const nsFont &font) {
++ if (mMaxFonts < 0) {
++ return PR_FALSE;
++ }
++
++ for (PRUint32 i = 0; i < mFontsUsed.Length(); i++) {
++ if (mFontsUsed[i].name.Equals(font.name,
++ nsCaseInsensitiveStringComparator())
++ // XXX: Style is sometimes filled with garbage??
++ /*&& mFontsUsed[i].style == font.style*/) {
++ // seen it before: OK
++ return PR_FALSE;
++ }
++ }
++
++ if (mFontsUsed.Length() >= mMaxFonts) {
++ return PR_TRUE;
++ }
++
++ return PR_FALSE;
++}
++
++PRBool
++nsPresContext::FontAttemptCountReached(const nsFont &font) {
++ if (mMaxFontAttempts < 0) {
++ return PR_FALSE;
++ }
++
++ for (PRUint32 i = 0; i < mFontsTried.Length(); i++) {
++ if (mFontsTried[i].name.Equals(font.name,
++ nsCaseInsensitiveStringComparator())
++ // XXX: Style is sometimes filled with garbage??
++ /*&& mFontsTried[i].style == font.style*/) {
++ // seen it before: OK
++ return PR_FALSE;
++ }
++ }
++
++ if (mFontsTried.Length() >= mMaxFontAttempts) {
++ return PR_TRUE;
++ }
++
++ return PR_FALSE;
++}
++
++void
++nsPresContext::AddFontUse(const nsFont &font) {
++ if (mMaxFonts < 0) {
++ return;
++ }
++
++ for (PRUint32 i = 0; i < mFontsUsed.Length(); i++) {
++ if (mFontsUsed[i].name.Equals(font.name,
++ nsCaseInsensitiveStringComparator())
++ // XXX: Style is sometimes filled with garbage??
++ /*&& mFontsUsed[i].style == font.style*/) {
++ // seen it before: OK
++ return;
++ }
++ }
++
++ if (mFontsUsed.Length() >= mMaxFonts) {
++ return;
++ }
++
++ mFontsUsed.AppendElement(font);
++ return;
++}
++
++void
++nsPresContext::AddFontAttempt(const nsFont &font) {
++ if (mMaxFontAttempts < 0) {
++ return;
++ }
++
++ for (PRUint32 i = 0; i < mFontsTried.Length(); i++) {
++ if (mFontsTried[i].name.Equals(font.name,
++ nsCaseInsensitiveStringComparator())
++ // XXX: Style is sometimes filled with garbage??
++ /*&& mFontsTried[i].style == font.style*/) {
++ // seen it before: OK
++ return;
++ }
++ }
++
++ if (mFontsTried.Length() >= mMaxFontAttempts) {
++ return;
++ }
++
++ mFontsTried.AppendElement(font);
++ return;
++}
++
+ void
+ nsPresContext::SetFullZoom(float aZoom)
+ {
+diff --git a/layout/base/nsPresContext.h b/layout/base/nsPresContext.h
+index 4b70c2f..ae8fcd5 100644
+--- a/layout/base/nsPresContext.h
++++ b/layout/base/nsPresContext.h
+@@ -535,6 +535,13 @@ public:
+ }
+ }
+
++ nsTArray<nsFont> mFontsUsed; // currently for font-count limiting only
++ nsTArray<nsFont> mFontsTried; // currently for font-count limiting only
++ void AddFontUse(const nsFont &font);
++ void AddFontAttempt(const nsFont &font);
++ PRBool FontUseCountReached(const nsFont &font);
++ PRBool FontAttemptCountReached(const nsFont &font);
++
+ PRInt32 MinFontSize() const {
+ return NS_MAX(mMinFontSize, mMinimumFontSizePref);
+ }
+@@ -1127,6 +1134,8 @@ protected:
+ PRUint32 mInterruptChecksToSkip;
+
+ mozilla::TimeStamp mReflowStartTime;
++ PRInt32 mMaxFontAttempts;
++ PRInt32 mMaxFonts;
+
+ unsigned mHasPendingInterrupt : 1;
+ unsigned mInterruptsEnabled : 1;
+diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
+index 9eb41ac..47065d0 100644
+--- a/layout/style/nsRuleNode.cpp
++++ b/layout/style/nsRuleNode.cpp
+@@ -3087,6 +3087,7 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
+
+ // See if there is a minimum font-size constraint to honor
+ nscoord minimumFontSize = mPresContext->MinFontSize();
++ PRBool isXUL = PR_FALSE;
+
+ if (minimumFontSize < 0)
+ minimumFontSize = 0;
+@@ -3098,10 +3099,10 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
+ // We only need to know this to determine if we have to use the
+ // document fonts (overriding the useDocumentFonts flag), or to
+ // determine if we have to override the minimum font-size constraint.
+- if ((!useDocumentFonts || minimumFontSize > 0) && mPresContext->IsChrome()) {
++ if (mPresContext->IsChrome()) {
+ // if we are not using document fonts, but this is a XUL document,
+ // then we use the document fonts anyway
+- useDocumentFonts = true;
++ isXUL = PR_TRUE;
+ minimumFontSize = 0;
+ }
+
+@@ -3116,9 +3117,13 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
+ // generic?
+ nsFont::GetGenericID(font->mFont.name, &generic);
+
++ mPresContext->AddFontAttempt(font->mFont);
++
+ // If we aren't allowed to use document fonts, then we are only entitled
+ // to use the user's default variable-width font and fixed-width font
+- if (!useDocumentFonts) {
++ if (!isXUL && (!useDocumentFonts ||
++ mPresContext->FontAttemptCountReached(font->mFont) ||
++ mPresContext->FontUseCountReached(font->mFont))) {
+ // Extract the generic from the specified font family...
+ nsAutoString genericName;
+ if (!font->mFont.EnumerateFamilies(ExtractGeneric, &genericName)) {
+@@ -3154,6 +3159,8 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
+ minimumFontSize, font);
+ }
+
++ if (font->mGenericID == kGenericFont_NONE)
++ mPresContext->AddFontUse(font->mFont);
+ COMPUTE_END_INHERITED(Font, font)
+ }
+
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0011-Provide-an-observer-event-to-close-persistent-connec.patch b/src/current-patches/firefox/0011-Provide-an-observer-event-to-close-persistent-connec.patch
deleted file mode 100644
index f442982..0000000
--- a/src/current-patches/firefox/0011-Provide-an-observer-event-to-close-persistent-connec.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From a0c84e27f2c40d043c85ba3b794d3578e909f558 Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)torproject.org>
-Date: Wed, 1 Feb 2012 15:53:28 -0800
-Subject: [PATCH 11/13] Provide an observer event to close persistent
- connections
-
-We need to prevent linkability across "New Identity", which includes closing
-keep-alive connections.
----
- netwerk/protocol/http/nsHttpHandler.cpp | 7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
-
-diff --git a/netwerk/protocol/http/nsHttpHandler.cpp b/netwerk/protocol/http/nsHttpHandler.cpp
-index 727b5d6..87b55bc 100644
---- a/netwerk/protocol/http/nsHttpHandler.cpp
-+++ b/netwerk/protocol/http/nsHttpHandler.cpp
-@@ -329,6 +329,7 @@ nsHttpHandler::Init()
- mObserverService->AddObserver(this, "net:clear-active-logins", true);
- mObserverService->AddObserver(this, NS_PRIVATE_BROWSING_SWITCH_TOPIC, true);
- mObserverService->AddObserver(this, "net:prune-dead-connections", true);
-+ mObserverService->AddObserver(this, "net:prune-all-connections", PR_TRUE);
- }
-
- return NS_OK;
-@@ -1533,6 +1534,12 @@ nsHttpHandler::Observe(nsISupports *subject,
- mConnMgr->PruneDeadConnections();
- }
- }
-+ else if (strcmp(topic, "net:prune-all-connections") == 0) {
-+ if (mConnMgr) {
-+ mConnMgr->ClosePersistentConnections();
-+ mConnMgr->PruneDeadConnections();
-+ }
-+ }
-
- return NS_OK;
- }
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0012-Provide-client-values-only-to-CSS-Media-Queries.patch b/src/current-patches/firefox/0012-Provide-client-values-only-to-CSS-Media-Queries.patch
deleted file mode 100644
index abed414..0000000
--- a/src/current-patches/firefox/0012-Provide-client-values-only-to-CSS-Media-Queries.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 10f26d027ba5413d7e26aaccd92cbc1c12b42d86 Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)fscked.org>
-Date: Tue, 20 Dec 2011 21:02:49 -0800
-Subject: [PATCH 12/13] Provide client values only to CSS Media Queries
-
-Also disable a bunch of Mozilla extensions that smell like they are
-fingerprintable.
-
-This is done to address
-https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability
----
- layout/style/nsMediaFeatures.cpp | 10 ++++++----
- 1 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp
-index 6eca06e..c68f191 100644
---- a/layout/style/nsMediaFeatures.cpp
-+++ b/layout/style/nsMediaFeatures.cpp
-@@ -383,14 +383,14 @@ nsMediaFeatures::features[] = {
- nsMediaFeature::eMinMaxAllowed,
- nsMediaFeature::eLength,
- { nsnull },
-- GetDeviceWidth
-+ GetWidth
- },
- {
- &nsGkAtoms::deviceHeight,
- nsMediaFeature::eMinMaxAllowed,
- nsMediaFeature::eLength,
- { nsnull },
-- GetDeviceHeight
-+ GetHeight
- },
- {
- &nsGkAtoms::orientation,
-@@ -411,7 +411,7 @@ nsMediaFeatures::features[] = {
- nsMediaFeature::eMinMaxAllowed,
- nsMediaFeature::eIntRatio,
- { nsnull },
-- GetDeviceAspectRatio
-+ GetAspectRatio
- },
- {
- &nsGkAtoms::color,
-@@ -457,6 +457,7 @@ nsMediaFeatures::features[] = {
- },
-
- // Mozilla extensions
-+/*
- {
- &nsGkAtoms::_moz_device_pixel_ratio,
- nsMediaFeature::eMinMaxAllowed,
-@@ -469,7 +470,7 @@ nsMediaFeatures::features[] = {
- nsMediaFeature::eMinMaxNotAllowed,
- nsMediaFeature::eEnumerated,
- { kOrientationKeywords },
-- GetDeviceOrientation
-+ GetOrientation
- },
- {
- &nsGkAtoms::_moz_is_resource_document,
-@@ -590,6 +591,7 @@ nsMediaFeatures::features[] = {
- { nsnull },
- GetWindowsTheme
- },
-+*/
- // Null-mName terminator:
- {
- nsnull,
---
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0012-Randomize-HTTP-request-order-and-pipeline-depth.patch b/src/current-patches/firefox/0012-Randomize-HTTP-request-order-and-pipeline-depth.patch
new file mode 100644
index 0000000..2449c5a
--- /dev/null
+++ b/src/current-patches/firefox/0012-Randomize-HTTP-request-order-and-pipeline-depth.patch
@@ -0,0 +1,234 @@
+From 6147cea4de151dade922b3c2787016f70c222458 Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git(a)torproject.org>
+Date: Tue, 24 Apr 2012 17:21:45 -0700
+Subject: [PATCH 12/12] Randomize HTTP request order and pipeline depth.
+
+This is an experimental defense against
+http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf
+
+See:
+https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting
+
+This defense has been improved since that blog post to additionally randomize
+the order and concurrency of non-pipelined HTTP requests.
+---
+ netwerk/protocol/http/nsHttpConnectionMgr.cpp | 133 ++++++++++++++++++++++++-
+ netwerk/protocol/http/nsHttpConnectionMgr.h | 5 +
+ 2 files changed, 133 insertions(+), 5 deletions(-)
+
+diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.cpp b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+index 6e1099d..3eec5b3 100644
+--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
++++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+@@ -100,6 +100,12 @@ nsHttpConnectionMgr::nsHttpConnectionMgr()
+ mCT.Init();
+ mAlternateProtocolHash.Init(16);
+ mSpdyPreferredHash.Init();
++
++ nsresult rv;
++ mRandomGenerator = do_GetService("@mozilla.org/security/random-generator;1", &rv);
++ if (NS_FAILED(rv)) {
++ mRandomGenerator = nsnull;
++ }
+ }
+
+ nsHttpConnectionMgr::~nsHttpConnectionMgr()
+@@ -353,8 +359,12 @@ nsHttpConnectionMgr::AddTransactionToPipeline(nsHttpPipeline *pipeline)
+ nsConnectionEntry *ent = mCT.Get(ci->HashKey());
+ if (ent) {
+ // search for another request to pipeline...
+- PRInt32 i, count = ent->mPendingQ.Length();
+- for (i=0; i<count; ++i) {
++ PRInt32 i, h, count = ent->mPendingQ.Length();
++ PRInt32 ind[count];
++ ShuffleRequestOrder((PRUint32*)ind, (PRUint32)count);
++
++ for (h=0; h<count; ++h) {
++ i = ind[h]; // random request sequence
+ nsHttpTransaction *trans = ent->mPendingQ[i];
+ if (trans->Caps() & NS_HTTP_ALLOW_PIPELINING) {
+ pipeline->AddTransaction(trans);
+@@ -898,12 +908,17 @@ nsHttpConnectionMgr::ProcessPendingQForEntry(nsConnectionEntry *ent)
+
+ ProcessSpdyPendingQ(ent);
+
+- PRUint32 i, count = ent->mPendingQ.Length();
++ PRUint32 h, i = 0, count = ent->mPendingQ.Length();
+ if (count > 0) {
+ LOG((" pending-count=%u\n", count));
+ nsHttpTransaction *trans = nsnull;
+ nsHttpConnection *conn = nsnull;
+- for (i = 0; i < count; ++i) {
++
++ PRUint32 ind[count];
++ ShuffleRequestOrder(ind, count);
++
++ for (h=0; h<count; ++h) {
++ i = ind[h]; // random request sequence
+ trans = ent->mPendingQ[i];
+
+ // When this transaction has already established a half-open
+@@ -1011,6 +1026,19 @@ nsHttpConnectionMgr::AtActiveConnectionLimit(nsConnectionEntry *ent, PRUint8 cap
+ maxPersistConns = mMaxPersistConnsPerHost;
+ }
+
++ // Fuzz maxConns for website fingerprinting attack
++ // We create a range of maxConns/5 up to 6*maxConns/5
++ // because this function is called repeatedly, and we'll
++ // end up converging on a the high side of concurrent connections
++ // after a short while.
++ PRUint8 *bytes = nsnull;
++ nsresult rv = mRandomGenerator->GenerateRandomBytes(1, &bytes);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ bytes[0] = bytes[0] % (maxConns + 1);
++ maxConns = (maxConns/5) + bytes[0];
++ NS_Free(bytes);
++
+ // use >= just to be safe
+ return (totalCount >= maxConns) || ( (caps & NS_HTTP_ALLOW_KEEPALIVE) &&
+ (persistCount >= maxPersistConns) );
+@@ -1227,7 +1255,7 @@ nsHttpConnectionMgr::DispatchTransaction(nsConnectionEntry *ent,
+
+ if (conn->SupportsPipelining() && (caps & NS_HTTP_ALLOW_PIPELINING)) {
+ LOG((" looking to build pipeline...\n"));
+- if (BuildPipeline(ent, trans, &pipeline))
++ if (BuildRandomizedPipeline(ent, trans, &pipeline))
+ trans = pipeline;
+ }
+
+@@ -1300,6 +1328,101 @@ nsHttpConnectionMgr::BuildPipeline(nsConnectionEntry *ent,
+ return true;
+ }
+
++
++// Generate a shuffled request ordering sequence
++void
++nsHttpConnectionMgr::ShuffleRequestOrder(PRUint32 *ind, PRUint32 count)
++{
++ PRUint32 i;
++ PRUint32 *rints;
++
++ for (i=0; i<count; ++i) {
++ ind[i] = i;
++ }
++ nsresult rv = mRandomGenerator->GenerateRandomBytes(sizeof(PRUint32)*count,
++ (PRUint8**)&rints);
++ if (NS_FAILED(rv))
++ return; // Leave unshuffled if error
++
++ for (i=0; i < count; ++i) {
++ PRInt32 temp = ind[i];
++ ind[i] = ind[rints[i]%count];
++ ind[rints[i]%count] = temp;
++ }
++ NS_Free(rints);
++}
++
++bool
++nsHttpConnectionMgr::BuildRandomizedPipeline(nsConnectionEntry *ent,
++ nsAHttpTransaction *firstTrans,
++ nsHttpPipeline **result)
++{
++ if (mRandomGenerator == nsnull)
++ return BuildPipeline(ent, firstTrans, result);
++ if (mMaxPipelinedRequests < 2)
++ return PR_FALSE;
++
++ nsresult rv;
++ PRUint8 *bytes = nsnull;
++
++ nsHttpPipeline *pipeline = nsnull;
++ nsHttpTransaction *trans;
++
++ PRUint32 i = 0, numAdded = 0, numAllowed = 0;
++ PRUint32 max = 0;
++
++ while (i < ent->mPendingQ.Length()) {
++ if (ent->mPendingQ[i]->Caps() & NS_HTTP_ALLOW_PIPELINING)
++ numAllowed++;
++ i++;
++ }
++
++ rv = mRandomGenerator->GenerateRandomBytes(1, &bytes);
++ NS_ENSURE_SUCCESS(rv, rv);
++ // 4...12
++ max = 4 + (bytes[0] % (mMaxPipelinedRequests + 1));
++ NS_Free(bytes);
++
++ while (numAllowed > 0) {
++ rv = mRandomGenerator->GenerateRandomBytes(1, &bytes);
++ NS_ENSURE_SUCCESS(rv, rv);
++ i = bytes[0] % ent->mPendingQ.Length();
++ NS_Free(bytes);
++
++ trans = ent->mPendingQ[i];
++
++ if (!(ent->mPendingQ[i]->Caps() & NS_HTTP_ALLOW_PIPELINING))
++ continue;
++
++ if (numAdded == 0) {
++ pipeline = new nsHttpPipeline;
++ if (!pipeline)
++ return PR_FALSE;
++ pipeline->AddTransaction(firstTrans);
++ numAdded = 1;
++ }
++ pipeline->AddTransaction(trans);
++
++ // remove transaction from pending queue
++ ent->mPendingQ.RemoveElementAt(i);
++ NS_RELEASE(trans);
++
++ numAllowed--;
++
++ if (++numAdded == max)
++ break;
++ }
++
++ //fprintf(stderr, "Yay!!! pipelined %u/%u transactions\n", numAdded, max);
++ LOG((" pipelined %u/%u transactions\n", numAdded, max));
++
++ if (numAdded == 0)
++ return PR_FALSE;
++
++ NS_ADDREF(*result = pipeline);
++ return PR_TRUE;
++}
++
+ nsresult
+ nsHttpConnectionMgr::ProcessNewTransaction(nsHttpTransaction *trans)
+ {
+diff --git a/netwerk/protocol/http/nsHttpConnectionMgr.h b/netwerk/protocol/http/nsHttpConnectionMgr.h
+index a13da0f..59ee9b9 100644
+--- a/netwerk/protocol/http/nsHttpConnectionMgr.h
++++ b/netwerk/protocol/http/nsHttpConnectionMgr.h
+@@ -54,6 +54,7 @@
+ #include "nsIObserver.h"
+ #include "nsITimer.h"
+ #include "nsIX509Cert3.h"
++#include "nsIRandomGenerator.h"
+
+ class nsHttpPipeline;
+
+@@ -317,6 +318,8 @@ private:
+ nsresult DispatchTransaction(nsConnectionEntry *, nsHttpTransaction *,
+ PRUint8 caps, nsHttpConnection *);
+ bool BuildPipeline(nsConnectionEntry *, nsAHttpTransaction *, nsHttpPipeline **);
++ bool BuildRandomizedPipeline(nsConnectionEntry *, nsAHttpTransaction *, nsHttpPipeline **);
++ void ShuffleRequestOrder(PRUint32 *, PRUint32);
+ nsresult ProcessNewTransaction(nsHttpTransaction *);
+ nsresult EnsureSocketThreadTargetIfOnline();
+ void ClosePersistentConnections(nsConnectionEntry *ent);
+@@ -409,6 +412,8 @@ private:
+ PRUint64 mTimeOfNextWakeUp;
+ // Timer for next pruning of dead connections.
+ nsCOMPtr<nsITimer> mTimer;
++ // Random number generator for reordering HTTP pipeline
++ nsCOMPtr<nsIRandomGenerator> mRandomGenerator;
+
+ //
+ // the connection table
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0013-Limit-the-number-of-fonts-per-document.patch b/src/current-patches/firefox/0013-Limit-the-number-of-fonts-per-document.patch
deleted file mode 100644
index 7f0f248..0000000
--- a/src/current-patches/firefox/0013-Limit-the-number-of-fonts-per-document.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From 215f7088f53e25309ec5037c05a25ed9048a625b Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git(a)torproject.org>
-Date: Wed, 1 Feb 2012 16:01:21 -0800
-Subject: [PATCH 13/13] Limit the number of fonts per document.
-
-We create two prefs:
-browser.display.max_font_count and browser.display.max_font_attempts.
-max_font_count sets a limit on the number of fonts actually used in the
-document, and max_font_attempts sets a limit on the total number of CSS
-queries that a document is allowed to perform.
-
-Once either limit is reached, the browser behaves as if
-browser.display.use_document_fonts was set to 0 for subsequent font queries.
-
-If a pref is not set or is negative, that limit does not apply.
-
-This is done to address:
-https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability
----
- layout/base/nsPresContext.cpp | 100 +++++++++++++++++++++++++++++++++++++++++
- layout/base/nsPresContext.h | 9 ++++
- layout/style/nsRuleNode.cpp | 13 ++++-
- 3 files changed, 119 insertions(+), 3 deletions(-)
-
-diff --git a/layout/base/nsPresContext.cpp b/layout/base/nsPresContext.cpp
-index c7ad359..ac12dff 100644
---- a/layout/base/nsPresContext.cpp
-+++ b/layout/base/nsPresContext.cpp
-@@ -98,6 +98,8 @@
- #include "FrameLayerBuilder.h"
- #include "nsDOMMediaQueryList.h"
- #include "nsSMILAnimationController.h"
-+#include "nsString.h"
-+#include "nsUnicharUtils.h"
-
- #ifdef IBMBIDI
- #include "nsBidiPresUtils.h"
-@@ -731,6 +733,10 @@ nsPresContext::GetUserPreferences()
- // * use fonts?
- mUseDocumentFonts =
- Preferences::GetInt("browser.display.use_document_fonts") != 0;
-+ mMaxFonts =
-+ Preferences::GetInt("browser.display.max_font_count", -1);
-+ mMaxFontAttempts =
-+ Preferences::GetInt("browser.display.max_font_attempts", -1);
-
- // * replace backslashes with Yen signs? (bug 245770)
- mEnableJapaneseTransform =
-@@ -1332,6 +1338,100 @@ nsPresContext::GetDefaultFont(PRUint8 aFontID) const
- return font;
- }
-
-+PRBool
-+nsPresContext::FontUseCountReached(const nsFont &font) {
-+ if (mMaxFonts < 0) {
-+ return PR_FALSE;
-+ }
-+
-+ for (PRUint32 i = 0; i < mFontsUsed.Length(); i++) {
-+ if (mFontsUsed[i].name.Equals(font.name,
-+ nsCaseInsensitiveStringComparator())
-+ // XXX: Style is sometimes filled with garbage??
-+ /*&& mFontsUsed[i].style == font.style*/) {
-+ // seen it before: OK
-+ return PR_FALSE;
-+ }
-+ }
-+
-+ if (mFontsUsed.Length() >= mMaxFonts) {
-+ return PR_TRUE;
-+ }
-+
-+ return PR_FALSE;
-+}
-+
-+PRBool
-+nsPresContext::FontAttemptCountReached(const nsFont &font) {
-+ if (mMaxFontAttempts < 0) {
-+ return PR_FALSE;
-+ }
-+
-+ for (PRUint32 i = 0; i < mFontsTried.Length(); i++) {
-+ if (mFontsTried[i].name.Equals(font.name,
-+ nsCaseInsensitiveStringComparator())
-+ // XXX: Style is sometimes filled with garbage??
-+ /*&& mFontsTried[i].style == font.style*/) {
-+ // seen it before: OK
-+ return PR_FALSE;
-+ }
-+ }
-+
-+ if (mFontsTried.Length() >= mMaxFontAttempts) {
-+ return PR_TRUE;
-+ }
-+
-+ return PR_FALSE;
-+}
-+
-+void
-+nsPresContext::AddFontUse(const nsFont &font) {
-+ if (mMaxFonts < 0) {
-+ return;
-+ }
-+
-+ for (PRUint32 i = 0; i < mFontsUsed.Length(); i++) {
-+ if (mFontsUsed[i].name.Equals(font.name,
-+ nsCaseInsensitiveStringComparator())
-+ // XXX: Style is sometimes filled with garbage??
-+ /*&& mFontsUsed[i].style == font.style*/) {
-+ // seen it before: OK
-+ return;
-+ }
-+ }
-+
-+ if (mFontsUsed.Length() >= mMaxFonts) {
-+ return;
-+ }
-+
-+ mFontsUsed.AppendElement(font);
-+ return;
-+}
-+
-+void
-+nsPresContext::AddFontAttempt(const nsFont &font) {
-+ if (mMaxFontAttempts < 0) {
-+ return;
-+ }
-+
-+ for (PRUint32 i = 0; i < mFontsTried.Length(); i++) {
-+ if (mFontsTried[i].name.Equals(font.name,
-+ nsCaseInsensitiveStringComparator())
-+ // XXX: Style is sometimes filled with garbage??
-+ /*&& mFontsTried[i].style == font.style*/) {
-+ // seen it before: OK
-+ return;
-+ }
-+ }
-+
-+ if (mFontsTried.Length() >= mMaxFontAttempts) {
-+ return;
-+ }
-+
-+ mFontsTried.AppendElement(font);
-+ return;
-+}
-+
- void
- nsPresContext::SetFullZoom(float aZoom)
- {
-diff --git a/layout/base/nsPresContext.h b/layout/base/nsPresContext.h
-index 39f5b4a..a72d12e 100644
---- a/layout/base/nsPresContext.h
-+++ b/layout/base/nsPresContext.h
-@@ -548,6 +548,13 @@ public:
- }
- }
-
-+ nsTArray<nsFont> mFontsUsed; // currently for font-count limiting only
-+ nsTArray<nsFont> mFontsTried; // currently for font-count limiting only
-+ void AddFontUse(const nsFont &font);
-+ void AddFontAttempt(const nsFont &font);
-+ PRBool FontUseCountReached(const nsFont &font);
-+ PRBool FontAttemptCountReached(const nsFont &font);
-+
- PRInt32 MinFontSize() const {
- return NS_MAX(mMinFontSize, mMinimumFontSizePref);
- }
-@@ -1125,6 +1132,8 @@ protected:
- PRUint32 mInterruptChecksToSkip;
-
- mozilla::TimeStamp mReflowStartTime;
-+ PRInt32 mMaxFontAttempts;
-+ PRInt32 mMaxFonts;
-
- unsigned mHasPendingInterrupt : 1;
- unsigned mInterruptsEnabled : 1;
-diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
-index 2918a54..5870693 100644
---- a/layout/style/nsRuleNode.cpp
-+++ b/layout/style/nsRuleNode.cpp
-@@ -3091,6 +3091,7 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
-
- // See if there is a minimum font-size constraint to honor
- nscoord minimumFontSize = mPresContext->MinFontSize();
-+ PRBool isXUL = PR_FALSE;
-
- if (minimumFontSize < 0)
- minimumFontSize = 0;
-@@ -3102,10 +3103,10 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
- // We only need to know this to determine if we have to use the
- // document fonts (overriding the useDocumentFonts flag), or to
- // determine if we have to override the minimum font-size constraint.
-- if ((!useDocumentFonts || minimumFontSize > 0) && mPresContext->IsChrome()) {
-+ if (mPresContext->IsChrome()) {
- // if we are not using document fonts, but this is a XUL document,
- // then we use the document fonts anyway
-- useDocumentFonts = true;
-+ isXUL = PR_TRUE;
- minimumFontSize = 0;
- }
-
-@@ -3120,9 +3121,13 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
- // generic?
- nsFont::GetGenericID(font->mFont.name, &generic);
-
-+ mPresContext->AddFontAttempt(font->mFont);
-+
- // If we aren't allowed to use document fonts, then we are only entitled
- // to use the user's default variable-width font and fixed-width font
-- if (!useDocumentFonts) {
-+ if (!isXUL && (!useDocumentFonts ||
-+ mPresContext->FontAttemptCountReached(font->mFont) ||
-+ mPresContext->FontUseCountReached(font->mFont))) {
- // Extract the generic from the specified font family...
- nsAutoString genericName;
- if (!font->mFont.EnumerateFamilies(ExtractGeneric, &genericName)) {
-@@ -3158,6 +3163,8 @@ nsRuleNode::ComputeFontData(void* aStartStruct,
- minimumFontSize, font);
- }
-
-+ if (font->mGenericID == kGenericFont_NONE)
-+ mPresContext->AddFontUse(font->mFont);
- COMPUTE_END_INHERITED(Font, font)
- }
-
---
-1.7.5.4
-
1
0

24 Apr '12
commit 72c104887688e75426c270ded34ccf1609f5c139
Author: Translation commit bot <translation(a)torproject.org>
Date: Tue Apr 24 22:15:10 2012 +0000
Update translations for vidalia
---
lt/vidalia_lt.po | 28 ++++++++++++++--------------
1 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/lt/vidalia_lt.po b/lt/vidalia_lt.po
index e593188..fa87632 100644
--- a/lt/vidalia_lt.po
+++ b/lt/vidalia_lt.po
@@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2012-03-21 17:52+0000\n"
-"PO-Revision-Date: 2012-04-24 21:44+0000\n"
+"PO-Revision-Date: 2012-04-24 21:58+0000\n"
"Last-Translator: vasaris <andrius.dre(a)gmail.com>\n"
"Language-Team: translations(a)vidalia-project.net\n"
"MIME-Version: 1.0\n"
@@ -2027,7 +2027,7 @@ msgid ""
"Vidalia tried to reset Tor's control password, but was not able to restart "
"the Tor software. Please check your Task Manager to ensure there are no "
"other Tor processes running."
-msgstr ""
+msgstr "Vidalia programa bandė pakeisti Tor slaptažodį, tačiau nepavyko perkrauti Tor programinės įrangos. Įsitikinkite, kad sistemoje nėra paleistų Tor procesų"
msgctxt "MainWindow"
msgid ""
@@ -2038,43 +2038,43 @@ msgstr "Šiuo metu įdiegta Tor versija yra pasenusi ir neberekomenduojama naudo
msgctxt "MainWindow"
msgid ""
"Would you like to check if a newer package is available for installation?"
-msgstr ""
+msgstr "Ar norėtumėte patiktinti ar atsirado nauja versija?"
msgctxt "MainWindow"
msgid "Potentially Unsafe Connection"
-msgstr ""
+msgstr "Potencialiai NEsaugus ryšys"
msgctxt "MainWindow"
msgid ""
"Tor has automatically closed your connection in order to protect your "
"anonymity."
-msgstr ""
+msgstr "Tor automatiškai nutraukė ryšį, kad būtų išsaugotas anonimiškumas"
msgctxt "MainWindow"
msgid "Update Failed"
-msgstr ""
+msgstr "Atnaujinimas nepavyko"
msgctxt "MainWindow"
msgid "Your software is up to date"
-msgstr ""
+msgstr "Jūsų programinė įranga atnaujinta"
msgctxt "MainWindow"
msgid ""
"There are no new Tor software packages available for your computer at this "
"time."
-msgstr ""
+msgstr "Šiuo metu nėra naujesnės Tor programinės įrangos. Jūsų versija yra naujausia."
msgctxt "MainWindow"
msgid "Installation Failed"
-msgstr ""
+msgstr "Diegimas nepavyko"
msgctxt "MainWindow"
msgid "Vidalia was unable to install your software updates."
-msgstr ""
+msgstr "Vidalia programai nepavyko įdiegti atnaujinimų"
msgctxt "MainWindow"
msgid "The following error occurred:"
-msgstr ""
+msgstr "Įvyko klaida: "
msgctxt "MainWindow"
msgid ""
@@ -2103,13 +2103,13 @@ msgstr ""
msgctxt "MainWindow"
msgid "failed (%1)"
-msgstr ""
+msgstr "nepavyko (%1)"
msgctxt "MainWindow"
msgid ""
"Your relay is shutting down.\n"
"Click 'Stop' again to stop your relay now."
-msgstr ""
+msgstr "Jūsų retransliacijos taškas išjungiamas.\nPaspauskite \"Stop\" mygtuką nutraukti ryšiui."
msgctxt "MainWindow"
msgid ""
@@ -2131,7 +2131,7 @@ msgid ""
"You are currently running a relay. Terminating your relay will interrupt any open connections from clients.\n"
"\n"
"Would you like to shutdown gracefully and give clients time to find a new relay?"
-msgstr ""
+msgstr "Jūsų kompiuteris veikia kaip Tor tinklo retransliatorius. Nutrukus sustabdžius retransliavimą bus nutraukti užmegzti sujungimai.\n\nAr norėtumėte naudotojus įspėti, kad jie turėtų laiko prisijungti prie kito retransliavimo taško?"
msgctxt "MainWindow"
msgid ""
1
0

24 Apr '12
commit 5f800af843d231ea7456a794bcd0a708ae649a9a
Author: Translation commit bot <translation(a)torproject.org>
Date: Tue Apr 24 21:45:09 2012 +0000
Update translations for vidalia
---
lt/vidalia_lt.po | 164 +++++++++++++++++++++++++++---------------------------
1 files changed, 82 insertions(+), 82 deletions(-)
diff --git a/lt/vidalia_lt.po b/lt/vidalia_lt.po
index 6d849a3..e593188 100644
--- a/lt/vidalia_lt.po
+++ b/lt/vidalia_lt.po
@@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2012-03-21 17:52+0000\n"
-"PO-Revision-Date: 2012-04-24 21:14+0000\n"
+"PO-Revision-Date: 2012-04-24 21:44+0000\n"
"Last-Translator: vasaris <andrius.dre(a)gmail.com>\n"
"Language-Team: translations(a)vidalia-project.net\n"
"MIME-Version: 1.0\n"
@@ -1365,75 +1365,75 @@ msgstr "Tor"
msgctxt "GeneralPage"
msgid "Proxy Application (optional)"
-msgstr ""
+msgstr "Proxy programa (nebūtina)"
msgctxt "GeneralPage"
msgid "Start a proxy application when Tor starts"
-msgstr ""
+msgstr "Paleisti proxy programą startavus Tor"
msgctxt "GeneralPage"
msgid "Proxy Application Arguments:"
-msgstr ""
+msgstr "Proxy programos papildomi kintamieji:"
msgctxt "GeneralPage"
msgid "Software Updates"
-msgstr ""
+msgstr "Programinės įrangos atnaujinimai"
msgctxt "GeneralPage"
msgid "Check for new software updates automatically"
-msgstr ""
+msgstr "Automatiškai tikrinti ar yra programinės įrangos atnaujinimų"
msgctxt "GeneralPage"
msgid "Check Now"
-msgstr ""
+msgstr "Tikrinti"
msgctxt "GraphFrame"
msgid "%1 KB/s"
-msgstr ""
+msgstr "%1 KB/s"
msgctxt "GraphFrame"
msgid "%1 KB"
-msgstr ""
+msgstr "%1 KB"
msgctxt "GraphFrame"
msgid "%1 MB"
-msgstr ""
+msgstr "%1 MB"
msgctxt "GraphFrame"
msgid "%1 GB"
-msgstr ""
+msgstr "%1 GB"
msgctxt "GraphFrame"
msgid "Recv:"
-msgstr ""
+msgstr "Gauta:"
msgctxt "GraphFrame"
msgid "Sent:"
-msgstr ""
+msgstr "Išsiųsta:"
msgctxt "HelpBrowser"
msgid "Supplied XML file is not a valid Contents document."
-msgstr ""
+msgstr "Pateiktas XML failas nėra tinkamas"
msgctxt "HelpBrowser"
msgid "Search reached end of document"
-msgstr ""
+msgstr "Paieška pasiekė dokumento pabaigą"
msgctxt "HelpBrowser"
msgid "Search reached start of document"
-msgstr ""
+msgstr "Paieška pasiekė dokumento pradžią"
msgctxt "HelpBrowser"
msgid "Text not found in document"
-msgstr ""
+msgstr "Tekstas dokumente nerastas"
msgctxt "HelpBrowser"
msgid "Found %1 results"
-msgstr ""
+msgstr "Rasta %1 rezultatų"
msgctxt "HelpBrowser"
msgid "Vidalia Help"
-msgstr ""
+msgstr "Vidalia Instrukcija"
msgctxt "HelpBrowser"
msgid "Back"
@@ -1541,40 +1541,40 @@ msgstr ""
msgctxt "HelpTextBrowser"
msgid "Opening External Link"
-msgstr ""
+msgstr "Atidaryti išorinę nuorodą"
msgctxt "HelpTextBrowser"
msgid ""
"Vidalia can open the link you selected in your default Web browser. If your "
"browser is not currently configured to use Tor then the request will not be "
"anonymous."
-msgstr ""
+msgstr "Vidalia negali atidaryti nuorodos. Jūsų duomenys bus anonimiški tik sukonfigūravus naršyklę naudoti Tor."
msgctxt "HelpTextBrowser"
msgid "Do you want Vidalia to open the link in your Web browser?"
-msgstr ""
+msgstr "Ar norite, kad Vidalia atidarytų nuorodą Jūsų naršyklėje?"
msgctxt "HelpTextBrowser"
msgid "Unable to Open Link"
-msgstr ""
+msgstr "Nepavyko atidaryti nuorodos"
msgctxt "HelpTextBrowser"
msgid ""
"Vidalia was unable to open the selected link in your Web browser. You can "
"still copy the URL and paste it into your browser."
-msgstr ""
+msgstr "Vidalia progrmai nepavyko atidaryti nuorodos. Jūs galite nukopijuoti URL adresą."
msgctxt "HelpTextBrowser"
msgid "Error opening help file:"
-msgstr ""
+msgstr "Klaida atidanat failą:"
msgctxt "LicenseDialog"
msgid "License Information"
-msgstr ""
+msgstr "Licencijos informacija"
msgctxt "LicenseDialog"
msgid "License"
-msgstr ""
+msgstr "Licencija"
msgctxt "LicenseDialog"
msgid "Credits"
@@ -1586,23 +1586,23 @@ msgstr ""
msgctxt "LogEvent"
msgid "Info"
-msgstr ""
+msgstr "Informacija"
msgctxt "LogEvent"
msgid "Notice"
-msgstr ""
+msgstr "Pranešimas"
msgctxt "LogEvent"
msgid "Warning"
-msgstr ""
+msgstr "Įspėjimas"
msgctxt "LogEvent"
msgid "Error"
-msgstr ""
+msgstr "Klaida"
msgctxt "LogEvent"
msgid "Unknown"
-msgstr ""
+msgstr "Nežinoma"
msgctxt "LogTreeItem"
msgid "Debug"
@@ -1630,143 +1630,143 @@ msgstr ""
msgctxt "MainWindow"
msgid "Start Tor"
-msgstr ""
+msgstr "Paleisti Tor"
msgctxt "MainWindow"
msgid "Exit"
-msgstr ""
+msgstr "Išeiti"
msgctxt "MainWindow"
msgid "Bandwidth Graph"
-msgstr ""
+msgstr "Spartos grafikas"
msgctxt "MainWindow"
msgid "Message Log"
-msgstr ""
+msgstr "Pranešimų žurnalas"
msgctxt "MainWindow"
msgid "Network Map"
-msgstr ""
+msgstr "Tinklo žemėlapis"
msgctxt "MainWindow"
msgid "Control Panel"
-msgstr ""
+msgstr "Kontrolinis pultas"
msgctxt "MainWindow"
msgid "Settings"
-msgstr ""
+msgstr "Nustatymai"
msgctxt "MainWindow"
msgid "About"
-msgstr ""
+msgstr "Apie"
msgctxt "MainWindow"
msgid "Help"
-msgstr ""
+msgstr "Pagalba"
msgctxt "MainWindow"
msgid "New Identity"
-msgstr ""
+msgstr "Nauja tapatybė"
msgctxt "MainWindow"
msgid "Ctrl+T"
-msgstr ""
+msgstr "Ctrl+T"
msgctxt "MainWindow"
msgid "Ctrl+B"
-msgstr ""
+msgstr "Ctrl+B"
msgctxt "MainWindow"
msgid "Ctrl+L"
-msgstr ""
+msgstr "Ctrl+L"
msgctxt "MainWindow"
msgid "Ctrl+N"
-msgstr ""
+msgstr "Ctrl+N"
msgctxt "MainWindow"
msgid "Ctrl+?"
-msgstr ""
+msgstr "Ctrl+?"
msgctxt "MainWindow"
msgid "Ctrl+I"
-msgstr ""
+msgstr "Ctrl+I"
msgctxt "MainWindow"
msgid "Ctrl+P"
-msgstr ""
+msgstr "Ctrl+P"
msgctxt "MainWindow"
msgid "Tor"
-msgstr ""
+msgstr "Tor"
msgctxt "MainWindow"
msgid "View"
-msgstr ""
+msgstr "Rodymas"
msgctxt "MainWindow"
msgid "Vidalia Help"
-msgstr ""
+msgstr "Vidalia Instrukcija"
msgctxt "MainWindow"
msgid "Error starting web browser"
-msgstr ""
+msgstr "Klaida paleidžiant naršyklę"
msgctxt "MainWindow"
msgid "Vidalia was unable to start the configured web browser"
-msgstr ""
+msgstr "Vidalia programai nepavyko paleisti naršyklės su šiais nustatymais"
msgctxt "MainWindow"
msgid "Error starting IM client"
-msgstr ""
+msgstr "Klaida paleidžiant pokalbių programą"
msgctxt "MainWindow"
msgid "Vidalia was unable to start the configured IM client"
-msgstr ""
+msgstr "Vidalia programai nepavyko paleisti pokalbių programą"
msgctxt "MainWindow"
msgid "Error starting proxy server"
-msgstr ""
+msgstr "Klaida paleidžiant proxy serverį"
msgctxt "MainWindow"
msgid "Vidalia was unable to start the configured proxy server"
-msgstr ""
+msgstr "Vidalia programai nepavyko paleisti proxy serverį su šiais nustatymais"
msgctxt "MainWindow"
msgid "Connecting to a relay directory"
-msgstr ""
+msgstr "Jungiamasi prie retransliavimo taškų"
msgctxt "MainWindow"
msgid "Establishing an encrypted directory connection"
-msgstr ""
+msgstr "Užmezgiamas ryšys"
msgctxt "MainWindow"
msgid "Retrieving network status"
-msgstr ""
+msgstr "Nuskaitoma tinklo būklė"
msgctxt "MainWindow"
msgid "Loading network status"
-msgstr ""
+msgstr "Nustatoma tinklo būklė"
msgctxt "MainWindow"
msgid "Loading authority certificates"
-msgstr ""
+msgstr "Įkeliami prieigos sertifikatai"
msgctxt "MainWindow"
msgid "Requesting relay information"
-msgstr ""
+msgstr "Užklausiama retranslaicijos taškų informacija"
msgctxt "MainWindow"
msgid "Loading relay information"
-msgstr ""
+msgstr "Įkeliama retransliacijos informacija"
msgctxt "MainWindow"
msgid "Connecting to the Tor network"
-msgstr ""
+msgstr "Jungiamasi prie Tor tinklo"
msgctxt "MainWindow"
msgid "Establishing a Tor circuit"
-msgstr ""
+msgstr "Užmezgiamas sujungimas"
msgctxt "MainWindow"
msgid "Connected to the Tor network!"
@@ -1972,55 +1972,55 @@ msgstr ""
msgctxt "MainWindow"
msgid "View a map of the Tor network"
-msgstr ""
+msgstr "Rodyti Tor tinklo žemėlapį"
msgctxt "MainWindow"
msgid "Use a New Identity"
-msgstr ""
+msgstr "Naudoti naują tapatybę"
msgctxt "MainWindow"
msgid "Make subsequent connections appear new"
-msgstr ""
+msgstr "Paspaudus šį mygtuką bus jungiamasi kaip iš naujos vietos"
msgctxt "MainWindow"
msgid "View recent bandwidth usage"
-msgstr ""
+msgstr "Rodyti srauto spartą"
msgctxt "MainWindow"
msgid "View log message history"
-msgstr ""
+msgstr "Rodyti žurnalą"
msgctxt "MainWindow"
msgid "View help documentation"
-msgstr ""
+msgstr "Rodyti instrukciją"
msgctxt "MainWindow"
msgid "Configure Vidalia"
-msgstr ""
+msgstr "Konfigūruoti Vidalia"
msgctxt "MainWindow"
msgid "View version and license information"
-msgstr ""
+msgstr "Rodyti programos versiją ir licencijos infomaciją"
msgctxt "MainWindow"
msgid "Exit Vidalia"
-msgstr ""
+msgstr "Uždaryti Vidalia"
msgctxt "MainWindow"
msgid "Show this window on startup"
-msgstr ""
+msgstr "Rodyti šį langą įjungus kompiuterį"
msgctxt "MainWindow"
msgid "Hide"
-msgstr ""
+msgstr "Slėpti"
msgctxt "MainWindow"
msgid "Hide this window"
-msgstr ""
+msgstr "Slėpti šį langą"
msgctxt "MainWindow"
msgid "Password Reset Failed"
-msgstr ""
+msgstr "Įvyko klaida keičiant slaptažodį"
msgctxt "MainWindow"
msgid ""
@@ -2033,7 +2033,7 @@ msgctxt "MainWindow"
msgid ""
"The currently installed version of Tor is out of date or no longer "
"recommended."
-msgstr ""
+msgstr "Šiuo metu įdiegta Tor versija yra pasenusi ir neberekomenduojama naudoti"
msgctxt "MainWindow"
msgid ""
@@ -2226,7 +2226,7 @@ msgstr ""
msgctxt "MessageLog"
msgid "Ctrl+E"
-msgstr ""
+msgstr "Užmezgiamas sujungimas"
msgctxt "MessageLog"
msgid "Copy"
1
0

24 Apr '12
commit 3e10a5ce8745573f9edba03366b3904aed105233
Author: Translation commit bot <translation(a)torproject.org>
Date: Tue Apr 24 21:15:09 2012 +0000
Update translations for vidalia
---
lt/vidalia_lt.po | 246 +++++++++++++++++++++++++++---------------------------
1 files changed, 123 insertions(+), 123 deletions(-)
diff --git a/lt/vidalia_lt.po b/lt/vidalia_lt.po
index 2428f61..6d849a3 100644
--- a/lt/vidalia_lt.po
+++ b/lt/vidalia_lt.po
@@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2012-03-21 17:52+0000\n"
-"PO-Revision-Date: 2012-04-24 20:44+0000\n"
+"PO-Revision-Date: 2012-04-24 21:14+0000\n"
"Last-Translator: vasaris <andrius.dre(a)gmail.com>\n"
"Language-Team: translations(a)vidalia-project.net\n"
"MIME-Version: 1.0\n"
@@ -38,104 +38,104 @@ msgstr "Qt 4.4.2"
msgctxt "AdvancedPage"
msgid "'%1' is not a valid IP address."
-msgstr ""
+msgstr "'%1' IP adresas negalioja."
msgctxt "AdvancedPage"
msgid ""
"You selected 'Password' authentication, but did not specify a password."
-msgstr ""
+msgstr "Pažymėta \"Apsaugoti slaptažodžiu\", tačiau nenurodytas slaptažodis."
msgctxt "AdvancedPage"
msgid "Select Tor Configuration File"
-msgstr ""
+msgstr "Nurodykite Tor konfigūracijos failą."
msgctxt "AdvancedPage"
msgid "File Not Found"
-msgstr ""
+msgstr "Failas nerastas."
msgctxt "AdvancedPage"
msgid "%1 does not exist. Would you like to create it?"
-msgstr ""
+msgstr "%1 neegzistuoja. Sukurti naują?"
msgctxt "AdvancedPage"
msgid "Failed to Create File"
-msgstr ""
+msgstr "Saugant failą įvyko klaida."
msgctxt "AdvancedPage"
msgid "Unable to create %1 [%2]"
-msgstr ""
+msgstr "Nepavyko sukurti %1 [%2]"
msgctxt "AdvancedPage"
msgid "Select a Directory to Use for Tor Data"
-msgstr ""
+msgstr "Pažymėkite aplanką Tor duomenims saugoti."
msgctxt "AdvancedPage"
msgid "Unable to remove Tor Service"
-msgstr ""
+msgstr "Nepavyko pašalinti Tor Servisą"
msgctxt "AdvancedPage"
msgid "Unable to install Tor Service"
-msgstr ""
+msgstr "Nepavyko įdiegti Tor Servisą."
msgctxt "AdvancedPage"
msgid "Vidalia was unable to install the Tor service."
-msgstr ""
+msgstr "Vidalia programai nepavyko įdiegti Tor Servisą."
msgctxt "AdvancedPage"
msgid "Authentication:"
-msgstr ""
+msgstr "Atpažinimas:"
msgctxt "AdvancedPage"
msgid "Address:"
-msgstr ""
+msgstr "Adresas:"
msgctxt "AdvancedPage"
msgid "None"
-msgstr ""
+msgstr "Joks"
msgctxt "AdvancedPage"
msgid "Cookie"
-msgstr ""
+msgstr "Slapukas (Cookie)"
msgctxt "AdvancedPage"
msgid "Password"
-msgstr ""
+msgstr "Slaptažodis"
msgctxt "AdvancedPage"
msgid "Randomly Generate"
-msgstr ""
+msgstr "Generuoti atsitiktinai"
msgctxt "AdvancedPage"
msgid ":"
-msgstr ""
+msgstr ":"
msgctxt "AdvancedPage"
msgid "Tor Configuration File"
-msgstr ""
+msgstr "Tor konfigūracijos failas"
msgctxt "AdvancedPage"
msgid "Start the Tor software with the specified configuration file (torrc)"
-msgstr ""
+msgstr "Paleisti Tor programinę įrangą, naudojantis konkrečiu konfigūracijos failu (torrc)"
msgctxt "AdvancedPage"
msgid "Select path to your configuration file"
-msgstr ""
+msgstr "Nurodykite kelią iki konfigūracijos failo"
msgctxt "AdvancedPage"
msgid "Browse"
-msgstr ""
+msgstr "Naršyti"
msgctxt "AdvancedPage"
msgid "Data Directory"
-msgstr ""
+msgstr "Duomenų aplankas"
msgctxt "AdvancedPage"
msgid "Store data for the Tor software in the following directory"
-msgstr ""
+msgstr "Saugoti Tor programinės įrangos duomenis šiame aplanke"
msgctxt "AdvancedPage"
msgid "Select the directory used to store data for the Tor software"
-msgstr ""
+msgstr "Nurodykite aplanką Tor programiniams duomenims"
msgctxt "AdvancedPage"
msgid "Tor Control"
@@ -209,27 +209,27 @@ msgid ""
"Vidalia was unable to remove the Tor service.\n"
"\n"
"You may need to remove it manually."
-msgstr ""
+msgstr "Vidalia programai nepavyko pašalinti Tor Serviso.\n\nJums teks pašalinti Tor Servisą rankiniu būdu."
msgctxt "AppearancePage"
msgid "Language"
-msgstr ""
+msgstr "Kalba"
msgctxt "AppearancePage"
msgid "Choose the language used in Vidalia"
-msgstr ""
+msgstr "Pasirinkite kalbą Vidalia programai"
msgctxt "AppearancePage"
msgid "Style"
-msgstr ""
+msgstr "Stilius"
msgctxt "AppearancePage"
msgid "Choose Vidalia's interface style"
-msgstr ""
+msgstr "Pasirinkite Vidalia programos stilių"
msgctxt "AppearancePage"
msgid "Vidalia was unable to load the selected language translation."
-msgstr ""
+msgstr "Vidalia programai nepavyko rasti nurodytos kalbos vertimo."
msgctxt "AppearancePage"
msgid ""
@@ -250,59 +250,59 @@ msgstr ""
msgctxt "BandwidthGraph"
msgid "Since:"
-msgstr ""
+msgstr "Nuo: "
msgctxt "BandwidthGraph"
msgid "Hide Settings"
-msgstr ""
+msgstr "Paslėpti nustatymus"
msgctxt "BandwidthGraph"
msgid "Show Settings"
-msgstr ""
+msgstr "Rodyti nustatymus"
msgctxt "BandwidthGraph"
msgid "Tor Bandwidth Usage"
-msgstr ""
+msgstr "Tor pralaidumas"
msgctxt "BandwidthGraph"
msgid "Reset"
-msgstr ""
+msgstr "Paleisti iš naujo"
msgctxt "BandwidthGraph"
msgid "Receive Rate"
-msgstr ""
+msgstr "Įeinamojo srauto sparta"
msgctxt "BandwidthGraph"
msgid "Send Rate"
-msgstr ""
+msgstr "Išeinamojo srauto sparta"
msgctxt "BandwidthGraph"
msgid "Always on Top"
-msgstr ""
+msgstr "Visada viršuje"
msgctxt "BandwidthGraph"
msgid "Style"
-msgstr ""
+msgstr "Stilius"
msgctxt "BandwidthGraph"
msgid "Changes the transparency of the Bandwidth Graph"
-msgstr ""
+msgstr "Keisti Siuntimo spartos grafiko permatomumą"
msgctxt "BandwidthGraph"
msgid "100"
-msgstr ""
+msgstr "100"
msgctxt "BandwidthGraph"
msgid "% Opaque"
-msgstr ""
+msgstr "% nepermatomas"
msgctxt "BandwidthGraph"
msgid "Save"
-msgstr ""
+msgstr "Saugoti"
msgctxt "BandwidthGraph"
msgid "Cancel"
-msgstr ""
+msgstr "Atšaukti"
msgctxt "BridgeDownloader"
msgid "Starting HTTPS bridge request..."
@@ -508,203 +508,203 @@ msgstr ""
msgctxt "CountryInfo"
msgid "Armenia"
-msgstr ""
+msgstr "Armėnija"
msgctxt "CountryInfo"
msgid "Australia"
-msgstr ""
+msgstr "Australija"
msgctxt "CountryInfo"
msgid "Azerbaijan"
-msgstr ""
+msgstr "Azerbaidžanas"
msgctxt "CountryInfo"
msgid "Bahamas"
-msgstr ""
+msgstr "Bahamų salos"
msgctxt "CountryInfo"
msgid "Bangladesh"
-msgstr ""
+msgstr "Bangladešas"
msgctxt "CountryInfo"
msgid "Barbados"
-msgstr ""
+msgstr "Barbadosas"
msgctxt "CountryInfo"
msgid "Belarus"
-msgstr ""
+msgstr "Gudija"
msgctxt "CountryInfo"
msgid "Belgium"
-msgstr ""
+msgstr "Belgija"
msgctxt "CountryInfo"
msgid "Belize"
-msgstr ""
+msgstr "Belizas"
msgctxt "CountryInfo"
msgid "Bhutan"
-msgstr ""
+msgstr "Butanas"
msgctxt "CountryInfo"
msgid "Bolivia"
-msgstr ""
+msgstr "Bolivija"
msgctxt "CountryInfo"
msgid "Bosnia & Herzegovina"
-msgstr ""
+msgstr "Bosnija ir Hercogovina"
msgctxt "CountryInfo"
msgid "Botswana"
-msgstr ""
+msgstr "Botsvana"
msgctxt "CountryInfo"
msgid "Brazil"
-msgstr ""
+msgstr "Brazilija"
msgctxt "CountryInfo"
msgid "Brunei Darussalam"
-msgstr ""
+msgstr "Brunėjus"
msgctxt "CountryInfo"
msgid "Bulgaria"
-msgstr ""
+msgstr "Bulgarija"
msgctxt "CountryInfo"
msgid "Burkina Faso"
-msgstr ""
+msgstr "Burkina Faso"
msgctxt "CountryInfo"
msgid "Burundi"
-msgstr ""
+msgstr "Burundi"
msgctxt "CountryInfo"
msgid "Cambodia"
-msgstr ""
+msgstr "Kambodža"
msgctxt "CountryInfo"
msgid "Cameroon"
-msgstr ""
+msgstr "Kamerūnas"
msgctxt "CountryInfo"
msgid "Canada"
-msgstr ""
+msgstr "Kanada"
msgctxt "CountryInfo"
msgid "Cape Verde"
-msgstr ""
+msgstr "Žaliasis Kyšulys"
msgctxt "CountryInfo"
msgid "Central African Republic"
-msgstr ""
+msgstr "Centrinės Afrikos Respublika"
msgctxt "CountryInfo"
msgid "Chad"
-msgstr ""
+msgstr "Čadas"
msgctxt "CountryInfo"
msgid "Chile"
-msgstr ""
+msgstr "Čilė"
msgctxt "CountryInfo"
msgid "China"
-msgstr ""
+msgstr "Kinija"
msgctxt "CountryInfo"
msgid "Colombia"
-msgstr ""
+msgstr "Kolumbija"
msgctxt "CountryInfo"
msgid "Comoros"
-msgstr ""
+msgstr "Komorų salos"
msgctxt "CountryInfo"
msgid "Congo, The Democratic Republic of the"
-msgstr ""
+msgstr "Kongo DR"
msgctxt "CountryInfo"
msgid "Congo"
-msgstr ""
+msgstr "Kongas"
msgctxt "CountryInfo"
msgid "Costa Rica"
-msgstr ""
+msgstr "Kosta Rika"
msgctxt "CountryInfo"
msgid "Cote dâIvoire"
-msgstr ""
+msgstr "Dramblio Kaulo Krantas"
msgctxt "CountryInfo"
msgid "Croatia"
-msgstr ""
+msgstr "Kroatija"
msgctxt "CountryInfo"
msgid "Cuba"
-msgstr ""
+msgstr "Kuba"
msgctxt "CountryInfo"
msgid "Cyprus"
-msgstr ""
+msgstr "Kipras"
msgctxt "CountryInfo"
msgid "Czech Republic"
-msgstr ""
+msgstr "Čekija"
msgctxt "CountryInfo"
msgid "Denmark"
-msgstr ""
+msgstr "Danija"
msgctxt "CountryInfo"
msgid "Djibouti"
-msgstr ""
+msgstr "Džibutis"
msgctxt "CountryInfo"
msgid "Dominica"
-msgstr ""
+msgstr "Dominika"
msgctxt "CountryInfo"
msgid "Dominican Republic"
-msgstr ""
+msgstr "Dominikos Respublika"
msgctxt "CountryInfo"
msgid "Ecuador"
-msgstr ""
+msgstr "Ekvadoras"
msgctxt "CountryInfo"
msgid "Egypt"
-msgstr ""
+msgstr "Egiptas"
msgctxt "CountryInfo"
msgid "El Salvador"
-msgstr ""
+msgstr "Salvadoras"
msgctxt "CountryInfo"
msgid "Equatorial Guinea"
-msgstr ""
+msgstr "Pusaujo Gvinėja"
msgctxt "CountryInfo"
msgid "Eritrea"
-msgstr ""
+msgstr "Eritrėja"
msgctxt "CountryInfo"
msgid "Estonia"
-msgstr ""
+msgstr "Estija"
msgctxt "CountryInfo"
msgid "France"
-msgstr ""
+msgstr "Prancūzija"
msgctxt "CountryInfo"
msgid "Gabon"
-msgstr ""
+msgstr "Gabonas"
msgctxt "CountryInfo"
msgid "Gambia"
-msgstr ""
+msgstr "Gambija"
msgctxt "CountryInfo"
msgid "Georgia"
-msgstr ""
+msgstr "Gruzija"
msgctxt "CountryInfo"
msgid "Germany"
@@ -908,75 +908,75 @@ msgstr ""
msgctxt "CountryInfo"
msgid "Niger"
-msgstr ""
+msgstr "Nigeris"
msgctxt "CountryInfo"
msgid "Nigeria"
-msgstr ""
+msgstr "Nigerija"
msgctxt "CountryInfo"
msgid "Norway"
-msgstr ""
+msgstr "Norvegija"
msgctxt "CountryInfo"
msgid "Oman"
-msgstr ""
+msgstr "Omanas"
msgctxt "CountryInfo"
msgid "Pakistan"
-msgstr ""
+msgstr "Pakistanas"
msgctxt "CountryInfo"
msgid "Palau"
-msgstr ""
+msgstr "Palau"
msgctxt "CountryInfo"
msgid "Palestine"
-msgstr ""
+msgstr "Palestina"
msgctxt "CountryInfo"
msgid "Panama"
-msgstr ""
+msgstr "Panama"
msgctxt "CountryInfo"
msgid "Papua New Guinea"
-msgstr ""
+msgstr "Papua Naujoji Guinėja"
msgctxt "CountryInfo"
msgid "Paraguay"
-msgstr ""
+msgstr "Paragvajus"
msgctxt "CountryInfo"
msgid "Peru"
-msgstr ""
+msgstr "Peru"
msgctxt "CountryInfo"
msgid "Philippines"
-msgstr ""
+msgstr "Filipinai"
msgctxt "CountryInfo"
msgid "Poland"
-msgstr ""
+msgstr "Lenkija"
msgctxt "CountryInfo"
msgid "Portugal"
-msgstr ""
+msgstr "Portugalija"
msgctxt "CountryInfo"
msgid "Qatar"
-msgstr ""
+msgstr "Kataras"
msgctxt "CountryInfo"
msgid "Romania"
-msgstr ""
+msgstr "Rumunija"
msgctxt "CountryInfo"
msgid "Russia"
-msgstr ""
+msgstr "Rusija"
msgctxt "CountryInfo"
msgid "Rwanda"
-msgstr ""
+msgstr "Ruanda"
msgctxt "CountryInfo"
msgid "Saint Kitts & Nevis"
@@ -1104,7 +1104,7 @@ msgstr ""
msgctxt "CountryInfo"
msgid "Trinidad & Tobago"
-msgstr ""
+msgstr "Gruzija"
msgctxt "CountryInfo"
msgid "Tunisia"
@@ -1333,35 +1333,35 @@ msgstr ""
msgctxt "GeneralPage"
msgid "Executables (*.exe)"
-msgstr ""
+msgstr "Vykdomieji failai (*.exe)"
msgctxt "GeneralPage"
msgid "Select Path to Tor"
-msgstr ""
+msgstr "Nurodykite kelią ik Tor"
msgctxt "GeneralPage"
msgid "Select Proxy Executable"
-msgstr ""
+msgstr "Nurodykite Proxy vykdomąjį failą"
msgctxt "GeneralPage"
msgid "You must specify the name of your Tor executable."
-msgstr ""
+msgstr "Nurodykite Tor vykdomojo failo vardą"
msgctxt "GeneralPage"
msgid "Start Vidalia when my system starts"
-msgstr ""
+msgstr "Paleisti Vidalia programą startavus operacinei sistemai"
msgctxt "GeneralPage"
msgid "Browse"
-msgstr ""
+msgstr "Naršyti"
msgctxt "GeneralPage"
msgid "Start the Tor software when Vidalia starts"
-msgstr ""
+msgstr "Paleisti Tor programinę įrangą startavus Vidalia programai"
msgctxt "GeneralPage"
msgid "Tor"
-msgstr ""
+msgstr "Tor"
msgctxt "GeneralPage"
msgid "Proxy Application (optional)"
1
0

[translation/vidalia_help] Update translations for vidalia_help
by translation@torproject.org 24 Apr '12
by translation@torproject.org 24 Apr '12
24 Apr '12
commit 3f2411417e57528281ab01ec69b900ede8af2096
Author: Translation commit bot <translation(a)torproject.org>
Date: Tue Apr 24 20:45:18 2012 +0000
Update translations for vidalia_help
---
lt/bridges.po | 16 ++++++++--------
lt/index.po | 9 ++++-----
lt/log.po | 2 --
3 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/lt/bridges.po b/lt/bridges.po
index bb75e51..9799f6f 100644
--- a/lt/bridges.po
+++ b/lt/bridges.po
@@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2010-06-26 16:58+0200\n"
-"PO-Revision-Date: 2012-04-24 20:11+0000\n"
+"PO-Revision-Date: 2012-04-24 20:38+0000\n"
"Last-Translator: vasaris <andrius.dre(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -41,7 +41,7 @@ msgid ""
"no complete public list of them, even if your ISP is filtering connections "
"to all the known Tor relays, they probably won't be able to block all the "
"bridges."
-msgstr "Kai kurie interneto tiekėjai"
+msgstr "Kai kurie interneto tiekėjai, norėdami apriboti naudojimąsi Tor tinklu, blokuoja sujungimus su Tor retransliatoriais. Tiltiniai arba tarpiniai retransliatoriai padeda cenzūruojamiems interneto naudotojams pasiekti Tor tinklą. Skirtingai, negu įprastiniai Tor retransliatoriai (angl. Tor relay), tiltinių retransliatorių adresų nėra viešame prisijungimo taškų sąraše. Kadangi jų nėra viešame sąraše, net jeigu interneto tiekėjas blokuotų sujungimus su visais žinomais prisijungimo taškais, užblokuoti visų <i>tiltinių</i> retransliatorių greičiausiai nepavyks."
#. type: Content of: <html><body>
#: en/bridges.html:31
@@ -51,22 +51,22 @@ msgstr ""
#. type: Content of: <html><body><h3>
#: en/bridges.html:32
msgid "How do I find a bridge relay?"
-msgstr ""
+msgstr "Kaip rasti tiltinį retransliatorių?"
#. type: Content of: <html><body><p>
#: en/bridges.html:34
msgid "There are two main ways to learn about a bridge address:"
-msgstr ""
+msgstr "Yra du būdai prisijungti prie Tor tinklo per tinklinį retransliatorių:"
#. type: Content of: <html><body><p><ol><li>
#: en/bridges.html:36
msgid "Get some friends to run private bridges for you"
-msgstr ""
+msgstr "Pabandyti sukurti privatų tiltinį retransliatorių"
#. type: Content of: <html><body><p><ol><li>
#: en/bridges.html:37
msgid "Use some of the public bridges"
-msgstr ""
+msgstr "Naudotis viešu tiltiniu retransliatoriumi"
#. type: Content of: <html><body><p>
#: en/bridges.html:42
@@ -91,11 +91,11 @@ msgid ""
"itself in the body of the mail. However, so we can make it harder for an "
"attacker to learn lots of bridge addresses, you must send this request from "
"a Gmail account."
-msgstr ""
+msgstr "Viešas tiltinių retransliatorių sąrašas yra adresu <b>https://bridges.torproject.org</b>. Sąrašo rezultatai nuolat keičiami ir papildomi naujais adresais. Kitas būdas prisijungti per tiltinį retransliatorių parašius el. laišką adresu <b>bridges(a)torproject.org</b> su žodžiais <b>get bridges</b> laiško tekste. Saugumo sumetimais priimami laiškai tik iš Gmail sistemos."
#. type: Content of: <html><body><p>
#: en/bridges.html:63
msgid ""
"Configuring more than one bridge address will make your Tor connection more "
"stable, in case some of the bridges become unreachable."
-msgstr ""
+msgstr "Nustatymuose įrašius daugiau negu vieną tiltinio retransliatoriaus adresą, Jūsų prisijungimas prie Tor tinklo bus stabilesnis tuo atveju, jeigu vienas iš tiltinių retransliatorių laikinai atsijungtų."
diff --git a/lt/index.po b/lt/index.po
index 43ac65c..e450e95 100644
--- a/lt/index.po
+++ b/lt/index.po
@@ -1,12 +1,13 @@
#
# Translators:
+# <andrius.dre(a)gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2010-06-26 16:59+0200\n"
-"PO-Revision-Date: 2010-11-30 05:02+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2012-04-24 20:42+0000\n"
+"Last-Translator: vasaris <andrius.dre(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,7 +18,7 @@ msgstr ""
#. type: Content of: <html><body><h1>
#: en/index.html:16
msgid "Vidalia Help"
-msgstr ""
+msgstr "Vidalia Pagalba"
#. type: Content of: <html><body><p>
#: en/index.html:20
@@ -44,5 +45,3 @@ msgid ""
"See the <a href=\"links.html\">Helpful Links</a> topic for some places you "
"can visit to find additional help and information about Vidalia and Tor."
msgstr ""
-
-
diff --git a/lt/log.po b/lt/log.po
index d2065bb..0ad69c4 100644
--- a/lt/log.po
+++ b/lt/log.po
@@ -157,5 +157,3 @@ msgstr ""
#: en/log.html:100
msgid "Click <i>Save Settings</i> to save your log destination."
msgstr ""
-
-
1
0

24 Apr '12
commit b0d5816aeedcff02fae70db083ccd6991efff4b1
Author: Translation commit bot <translation(a)torproject.org>
Date: Tue Apr 24 20:45:09 2012 +0000
Update translations for vidalia
---
lt/vidalia_lt.po | 112 ++++++++++++++++++++++++++++++++++--------------------
1 files changed, 71 insertions(+), 41 deletions(-)
diff --git a/lt/vidalia_lt.po b/lt/vidalia_lt.po
index 9fe7d32..2428f61 100644
--- a/lt/vidalia_lt.po
+++ b/lt/vidalia_lt.po
@@ -1,12 +1,13 @@
#
# Translators:
+# <andrius.dre(a)gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
-"POT-Creation-Date: 2011-09-07 14:40+0000\n"
-"PO-Revision-Date: 2010-12-05 20:03+0000\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2012-03-21 17:52+0000\n"
+"PO-Revision-Date: 2012-04-24 20:44+0000\n"
+"Last-Translator: vasaris <andrius.dre(a)gmail.com>\n"
"Language-Team: translations(a)vidalia-project.net\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,23 +18,23 @@ msgstr ""
msgctxt "AboutDialog"
msgid "About Vidalia"
-msgstr ""
+msgstr "Apie Vidalia"
msgctxt "AboutDialog"
msgid "License"
-msgstr ""
+msgstr "Licencija"
msgctxt "AboutDialog"
msgid "Vidalia 0.2.0"
-msgstr ""
+msgstr "Vidalia 0.2.0"
msgctxt "AboutDialog"
msgid "Tor 0.2.0.32"
-msgstr ""
+msgstr "Tor 0.2.0.32"
msgctxt "AboutDialog"
msgid "Qt 4.4.2"
-msgstr ""
+msgstr "Qt 4.4.2"
msgctxt "AdvancedPage"
msgid "'%1' is not a valid IP address."
@@ -198,6 +199,13 @@ msgstr ""
msgctxt "AdvancedPage"
msgid ""
+"You've checked the autoconfiguration option for the ControlPort, but "
+"provided no Data Directory. Please add one, or uncheck the \"Configure "
+"ControlPort automatically\" option."
+msgstr ""
+
+msgctxt "AdvancedPage"
+msgid ""
"Vidalia was unable to remove the Tor service.\n"
"\n"
"You may need to remove it manually."
@@ -223,6 +231,23 @@ msgctxt "AppearancePage"
msgid "Vidalia was unable to load the selected language translation."
msgstr ""
+msgctxt "AppearancePage"
+msgid ""
+"System Icon Preferences (changes will take effect when you restart Vidalia)"
+msgstr ""
+
+msgctxt "AppearancePage"
+msgid "Show the Tray Icon and Dock Icon (default)"
+msgstr ""
+
+msgctxt "AppearancePage"
+msgid "Hide the Tray Icon"
+msgstr ""
+
+msgctxt "AppearancePage"
+msgid "Hide the Dock Icon"
+msgstr ""
+
msgctxt "BandwidthGraph"
msgid "Since:"
msgstr ""
@@ -1748,10 +1773,6 @@ msgid "Connected to the Tor network!"
msgstr ""
msgctxt "MainWindow"
-msgid "Unrecognized startup status"
-msgstr ""
-
-msgctxt "MainWindow"
msgid "miscellaneous"
msgstr ""
@@ -2063,45 +2084,60 @@ msgid ""
msgstr ""
msgctxt "MainWindow"
-msgid "failed (%1)"
+msgid "Bootstrapping torrc from %1 to %2"
+msgstr ""
+
+msgctxt "MainWindow"
+msgid "(probably Telnet)"
+msgstr ""
+
+msgctxt "MainWindow"
+msgid "(probably an email client)"
msgstr ""
msgctxt "MainWindow"
msgid ""
-"Your relay is shutting down.\n"
-"Click 'Stop' again to stop your relay now."
+"One of your applications %1 appears to be making a potentially unencrypted "
+"and unsafe connection to port %2."
msgstr ""
msgctxt "MainWindow"
-msgid "Bootstrapping torrc from %1 to %2"
+msgid "failed (%1)"
msgstr ""
msgctxt "MainWindow"
msgid ""
-"You are currently running a relay. Terminating your relay will interrupt any open connections from clients.\n"
-"\n"
-"Would you like to shutdown gracefully and give clients time to find a new relay?"
+"Your relay is shutting down.\n"
+"Click 'Stop' again to stop your relay now."
msgstr ""
msgctxt "MainWindow"
msgid ""
-"Vidalia detected that the Tor software exited unexpectedly.\n"
+"Vidalia can't find out how to talk to Tor because it can't access this file: %1\n"
"\n"
-"Please check the message log for recent warning or error messages."
+"Here's the last error message:\n"
+"%2"
msgstr ""
msgctxt "MainWindow"
-msgid "(probably Telnet)"
+msgid ""
+"It seems Tor has stopped running since Vidalia started it.\n"
+"\n"
+"See the Advanced Message Log for more information."
msgstr ""
msgctxt "MainWindow"
-msgid "(probably an email client)"
+msgid ""
+"You are currently running a relay. Terminating your relay will interrupt any open connections from clients.\n"
+"\n"
+"Would you like to shutdown gracefully and give clients time to find a new relay?"
msgstr ""
msgctxt "MainWindow"
msgid ""
-"One of your applications %1 appears to be making a potentially unencrypted "
-"and unsafe connection to port %2."
+"Vidalia detected that the Tor software exited unexpectedly.\n"
+"\n"
+"Please check the message log for recent warning or error messages."
msgstr ""
msgctxt "MessageLog"
@@ -2516,14 +2552,6 @@ msgid "Ctrl+F"
msgstr ""
msgctxt "NetworkPage"
-msgid "Invalid Bridge"
-msgstr ""
-
-msgctxt "NetworkPage"
-msgid "The specified bridge identifier is not valid."
-msgstr ""
-
-msgctxt "NetworkPage"
msgid "Copy (Ctrl+C)"
msgstr ""
@@ -2656,11 +2684,11 @@ msgid "SOCKS 5"
msgstr ""
msgctxt "NetworkPage"
-msgid "HTTP"
+msgid "HTTP / HTTPS"
msgstr ""
msgctxt "NetworkPage"
-msgid "HTTP / HTTPS"
+msgid "You must specify one or more bridges."
msgstr ""
msgctxt "Policy"
@@ -2840,10 +2868,6 @@ msgid "Run as a client only"
msgstr ""
msgctxt "ServerPage"
-msgid "Relay traffic for the Tor network"
-msgstr ""
-
-msgctxt "ServerPage"
msgid "Relay Port:"
msgstr ""
@@ -3088,6 +3112,14 @@ msgid "Automatically distribute my bridge address"
msgstr ""
msgctxt "ServerPage"
+msgid "Relay traffic for the Tor network (exit relay)"
+msgstr ""
+
+msgctxt "ServerPage"
+msgid "Relay traffic inside the Tor network (non-exit relay)"
+msgstr ""
+
+msgctxt "ServerPage"
msgid "Mirror the Relay Directory"
msgstr ""
@@ -3812,5 +3844,3 @@ msgstr ""
msgctxt "stringutil.h"
msgid "%1 mins"
msgstr ""
-
-
1
0

[translation/vidalia_help] Update translations for vidalia_help
by translation@torproject.org 24 Apr '12
by translation@torproject.org 24 Apr '12
24 Apr '12
commit 944b5747fa87f8d00a21410cb8bf5a1957c58ab9
Author: Translation commit bot <translation(a)torproject.org>
Date: Tue Apr 24 20:15:20 2012 +0000
Update translations for vidalia_help
---
lt/bridges.po | 15 +++++++--------
1 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/lt/bridges.po b/lt/bridges.po
index 255b6e8..bb75e51 100644
--- a/lt/bridges.po
+++ b/lt/bridges.po
@@ -1,12 +1,13 @@
#
# Translators:
+# <andrius.dre(a)gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2010-06-26 16:58+0200\n"
-"PO-Revision-Date: 2010-11-30 05:02+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2012-04-24 20:11+0000\n"
+"Last-Translator: vasaris <andrius.dre(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,17 +18,17 @@ msgstr ""
#. type: Content of: <html><body><h1>
#: en/bridges.html:16
msgid "Bridge Relays"
-msgstr ""
+msgstr "Tiltiniai retransliatoriai (angl. Bridge relays)"
#. type: Content of: <html><body>
#: en/bridges.html:19
msgid "<a name=\"about\"/>"
-msgstr ""
+msgstr "<a name=\"apie\"/>"
#. type: Content of: <html><body><h3>
#: en/bridges.html:20
msgid "What are bridge relays?"
-msgstr ""
+msgstr "Kas yra tiltiniai retransliatoriai?"
#. type: Content of: <html><body><p>
#: en/bridges.html:22
@@ -40,7 +41,7 @@ msgid ""
"no complete public list of them, even if your ISP is filtering connections "
"to all the known Tor relays, they probably won't be able to block all the "
"bridges."
-msgstr ""
+msgstr "Kai kurie interneto tiekėjai"
#. type: Content of: <html><body>
#: en/bridges.html:31
@@ -98,5 +99,3 @@ msgid ""
"Configuring more than one bridge address will make your Tor connection more "
"stable, in case some of the bridges become unreachable."
msgstr ""
-
-
1
0

24 Apr '12
commit f86bd1d5a4a5d71f7a529966341a37dbadd7a79f
Merge: 1cbde0b 526beb7
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Tue Apr 24 15:25:21 2012 -0400
Merge remote-tracking branch 'arma/bug5623'
changes/bug5623 | 6 ++++++
src/or/connection_edge.c | 8 ++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
1
0

[tor/master] be willing to use nodes in excludeexitnodes as directory mirrors
by nickm@torproject.org 24 Apr '12
by nickm@torproject.org 24 Apr '12
24 Apr '12
commit 526beb7be64aaff9af6e26bde8092c8e54eb5d6d
Author: Roger Dingledine <arma(a)torproject.org>
Date: Tue Apr 24 11:26:05 2012 -0400
be willing to use nodes in excludeexitnodes as directory mirrors
fixes bug 5623.
---
changes/bug5623 | 6 ++++++
src/or/connection_edge.c | 8 ++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/changes/bug5623 b/changes/bug5623
new file mode 100644
index 0000000..285a5b1
--- /dev/null
+++ b/changes/bug5623
@@ -0,0 +1,6 @@
+ o Minor bugfixes:
+ - After we pick a directory mirror, we would refuse to use it if
+ it's in our ExcludeExitNodes list, resulting in mysterious failures
+ to bootstrap for people who just wanted to avoid exiting from
+ certain locations. Fixes bug 5623; bugfix on 0.2.2.25-alpha.
+
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index dd772b2..03558e5 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -3368,8 +3368,12 @@ connection_ap_can_use_exit(const entry_connection_t *conn, const node_t *exit)
}
}
- if (conn->socks_request->command == SOCKS_COMMAND_CONNECT &&
- !conn->use_begindir) {
+ if (conn->use_begindir) {
+ /* Internal directory fetches do not count as exiting. */
+ return 1;
+ }
+
+ if (conn->socks_request->command == SOCKS_COMMAND_CONNECT) {
struct in_addr in;
tor_addr_t addr, *addrp = NULL;
addr_policy_result_t r;
1
0