[tor-commits] [tor/master] Update version to 0.3.4.6-rc-dev

2018-08-07 Thread nickm
commit de129e69ba1192f0c2ad46ac898df248944068eb
Author: Nick Mathewson 
Date:   Tue Aug 7 20:15:34 2018 -0400

Update version to 0.3.4.6-rc-dev
---
 configure.ac| 2 +-
 contrib/win32build/tor-mingw.nsi.in | 2 +-
 src/win32/orconfig.h| 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index e8ceab511..ff54f41af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ dnl Copyright (c) 2007-2017, The Tor Project, Inc.
 dnl See LICENSE for licensing information
 
 AC_PREREQ([2.63])
-AC_INIT([tor],[0.3.4.6-rc])
+AC_INIT([tor],[0.3.4.6-rc-dev])
 AC_CONFIG_SRCDIR([src/or/main.c])
 AC_CONFIG_MACRO_DIR([m4])
 
diff --git a/contrib/win32build/tor-mingw.nsi.in 
b/contrib/win32build/tor-mingw.nsi.in
index 84ecb91f3..bbe5586e4 100644
--- a/contrib/win32build/tor-mingw.nsi.in
+++ b/contrib/win32build/tor-mingw.nsi.in
@@ -8,7 +8,7 @@
 !include "LogicLib.nsh"
 !include "FileFunc.nsh"
 !insertmacro GetParameters
-!define VERSION "0.3.4.6-rc"
+!define VERSION "0.3.4.6-rc-dev"
 !define INSTALLER "tor-${VERSION}-win32.exe"
 !define WEBSITE "https://www.torproject.org/;
 !define LICENSE "LICENSE"
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 81986fd1b..4b0522e47 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -218,7 +218,7 @@
 #define USING_TWOS_COMPLEMENT
 
 /* Version number of package */
-#define VERSION "0.3.4.6-rc"
+#define VERSION "0.3.4.6-rc-dev"
 
 
 



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'maint-0.3.4'

2018-08-07 Thread nickm
commit 837f11a5320872ff9ab3565c9e2ddc44f127e843
Merge: f53720219 de129e69b
Author: Nick Mathewson 
Date:   Tue Aug 7 20:15:50 2018 -0400

Merge branch 'maint-0.3.4'

"ours" merge to avoid version bump.

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Forward-port the 0.3.4.6-rc changelog

2018-08-07 Thread nickm
commit f537202196355bb73bb17f18f4d2629298e379ef
Author: Nick Mathewson 
Date:   Tue Aug 7 20:09:35 2018 -0400

Forward-port the 0.3.4.6-rc changelog
---
 ChangeLog | 59 +++
 1 file changed, 59 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 7988010c2..84a3f1045 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,62 @@
+Changes in version 0.3.4.6-rc - 2018-08-06
+  Tor 0.3.4.6-rc fixes several small compilation, portability, and
+  correctness issues in previous versions of Tor. This version is a
+  release candidate: if no serious bugs are found, we expect that the
+  stable 0.3.4 release will be (almost) the same as this release.
+
+  o Major bugfixes (event scheduler):
+- When we enable a periodic event, schedule it in the event loop
+  rather than running it immediately. Previously, we would re-run
+  periodic events immediately in the middle of (for example)
+  changing our options, with unpredictable effects. Fixes bug 27003;
+  bugfix on 0.3.4.1-alpha.
+
+  o Minor features (compilation):
+- When building Tor, prefer to use Python 3 over Python 2, and more
+  recent (contemplated) versions over older ones. Closes
+  ticket 26372.
+
+  o Minor features (geoip):
+- Update geoip and geoip6 to the July 3 2018 Maxmind GeoLite2
+  Country database. Closes ticket 26674.
+
+  o Minor features (Rust, portability):
+- Rust cross-compilation is now supported. Closes ticket 25895.
+
+  o Minor bugfixes (compilation):
+- Fix a compilation warning on some versions of GCC when building
+  code that calls routerinfo_get_my_routerinfo() twice, assuming
+  that the second call will succeed if the first one did. Fixes bug
+  26269; bugfix on 0.2.8.2-alpha.
+
+  o Minor bugfixes (controller):
+- Report the port correctly when a port is configured to bind to
+  "auto". Fixes bug 26568; bugfix on 0.3.4.1-alpha.
+- Parse the "HSADDRESS=" parameter in HSPOST commands properly.
+  Previously, it was misparsed and ignored. Fixes bug 26523; bugfix
+  on 0.3.3.1-alpha. Patch by "akwizgran".
+
+  o Minor bugfixes (correctness, flow control):
+- Upon receiving a stream-level SENDME cell, verify that our window
+  has not grown too large. Fixes bug 26214; bugfix on svn
+  r54 (pre-0.0.1)
+
+  o Minor bugfixes (memory, correctness):
+- Fix a number of small memory leaks identified by coverity. Fixes
+  bug 26467; bugfix on numerous Tor versions.
+
+  o Minor bugfixes (portability):
+- Avoid a compilation error in test_bwmgt.c on Solaris 10. Fixes bug
+  26994; bugfix on 0.3.4.1-alpha.
+
+  o Minor bugfixes (testing, compatibility):
+- When running the ntor_ref.py and hs_ntor_ref.py tests, make sure
+  only to pass strings (rather than "bytes" objects) to the Python
+  subprocess module. Python 3 on Windows seems to require this.
+  Fixes bug 26535; bugfix on 0.2.5.5-alpha (for ntor_ref.py) and
+  0.3.1.1-alpha (for hs_ntor_ref.py).
+
+
 Changes in version 0.3.4.5-rc - 2018-07-13
   Tor 0.3.4.5-rc moves to a new bridge authority, meaning people running
   bridge relays should upgrade.



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.3.4] Merge branch 'maint-0.3.4' into release-0.3.4

2018-08-07 Thread nickm
commit 3b533bda2625f7682ea0d4780b87860e06184dc2
Merge: 6045c26d8 de129e69b
Author: Nick Mathewson 
Date:   Tue Aug 7 20:16:02 2018 -0400

Merge branch 'maint-0.3.4' into release-0.3.4

 configure.ac| 2 +-
 contrib/win32build/tor-mingw.nsi.in | 2 +-
 src/win32/orconfig.h| 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.3.4] Update version to 0.3.4.6-rc-dev

2018-08-07 Thread nickm
commit de129e69ba1192f0c2ad46ac898df248944068eb
Author: Nick Mathewson 
Date:   Tue Aug 7 20:15:34 2018 -0400

Update version to 0.3.4.6-rc-dev
---
 configure.ac| 2 +-
 contrib/win32build/tor-mingw.nsi.in | 2 +-
 src/win32/orconfig.h| 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index e8ceab511..ff54f41af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ dnl Copyright (c) 2007-2017, The Tor Project, Inc.
 dnl See LICENSE for licensing information
 
 AC_PREREQ([2.63])
-AC_INIT([tor],[0.3.4.6-rc])
+AC_INIT([tor],[0.3.4.6-rc-dev])
 AC_CONFIG_SRCDIR([src/or/main.c])
 AC_CONFIG_MACRO_DIR([m4])
 
diff --git a/contrib/win32build/tor-mingw.nsi.in 
b/contrib/win32build/tor-mingw.nsi.in
index 84ecb91f3..bbe5586e4 100644
--- a/contrib/win32build/tor-mingw.nsi.in
+++ b/contrib/win32build/tor-mingw.nsi.in
@@ -8,7 +8,7 @@
 !include "LogicLib.nsh"
 !include "FileFunc.nsh"
 !insertmacro GetParameters
-!define VERSION "0.3.4.6-rc"
+!define VERSION "0.3.4.6-rc-dev"
 !define INSTALLER "tor-${VERSION}-win32.exe"
 !define WEBSITE "https://www.torproject.org/;
 !define LICENSE "LICENSE"
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 81986fd1b..4b0522e47 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -218,7 +218,7 @@
 #define USING_TWOS_COMPLEMENT
 
 /* Version number of package */
-#define VERSION "0.3.4.6-rc"
+#define VERSION "0.3.4.6-rc-dev"
 
 
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.3.4] Update version to 0.3.4.6-rc-dev

2018-08-07 Thread nickm
commit de129e69ba1192f0c2ad46ac898df248944068eb
Author: Nick Mathewson 
Date:   Tue Aug 7 20:15:34 2018 -0400

Update version to 0.3.4.6-rc-dev
---
 configure.ac| 2 +-
 contrib/win32build/tor-mingw.nsi.in | 2 +-
 src/win32/orconfig.h| 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index e8ceab511..ff54f41af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ dnl Copyright (c) 2007-2017, The Tor Project, Inc.
 dnl See LICENSE for licensing information
 
 AC_PREREQ([2.63])
-AC_INIT([tor],[0.3.4.6-rc])
+AC_INIT([tor],[0.3.4.6-rc-dev])
 AC_CONFIG_SRCDIR([src/or/main.c])
 AC_CONFIG_MACRO_DIR([m4])
 
diff --git a/contrib/win32build/tor-mingw.nsi.in 
b/contrib/win32build/tor-mingw.nsi.in
index 84ecb91f3..bbe5586e4 100644
--- a/contrib/win32build/tor-mingw.nsi.in
+++ b/contrib/win32build/tor-mingw.nsi.in
@@ -8,7 +8,7 @@
 !include "LogicLib.nsh"
 !include "FileFunc.nsh"
 !insertmacro GetParameters
-!define VERSION "0.3.4.6-rc"
+!define VERSION "0.3.4.6-rc-dev"
 !define INSTALLER "tor-${VERSION}-win32.exe"
 !define WEBSITE "https://www.torproject.org/;
 !define LICENSE "LICENSE"
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 81986fd1b..4b0522e47 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -218,7 +218,7 @@
 #define USING_TWOS_COMPLEMENT
 
 /* Version number of package */
-#define VERSION "0.3.4.6-rc"
+#define VERSION "0.3.4.6-rc-dev"
 
 
 



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [webwml/master] Unstable tor is now 0.3.4.6-rc

2018-08-07 Thread nickm
commit 56c95f5ebdab1b786b3f456d2d1d6189682ed892
Author: Nick Mathewson 
Date:   Tue Aug 7 19:59:49 2018 -0400

Unstable tor is now 0.3.4.6-rc
---
 Makefile | 2 +-
 include/versions.wmi | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index edcf4329..9dbd67f5 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@
 # website component, and set it to needs_review.
 
 export STABLETAG=tor-0.3.3.9
-export DEVTAG=tor-0.3.4.5-rc
+export DEVTAG=tor-0.3.4.6-rc
 
 WMLBASE=.
 SUBDIRS=docs eff projects press about download getinvolved donate 
docs/torbutton
diff --git a/include/versions.wmi b/include/versions.wmi
index bb234cd5..ada5f1f5 100644
--- a/include/versions.wmi
+++ b/include/versions.wmi
@@ -1,5 +1,5 @@
 0.3.3.9
-0.3.4.5-rc
+0.3.4.6-rc
 
 maint-7.5
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] ControlMessage equality and hashing

2018-08-07 Thread atagar
commit b48ce682ef1a5fc1d4237d106700ec929f49246b
Author: Damian Johnson 
Date:   Tue Aug 7 15:04:20 2018 -0700

ControlMessage equality and hashing

Interesting! Previously I implemented comparability for a single event type 
but
that's all. I'm surprised we've gone this long without needing it.

Messages have only three things we need to account for in the hash...

  * The message content (ie. the bytes we got from tor).
  * The message class, if we've casted ourselves to something.
  * The arrived_at timestamp if this is an event.

That's it. Everything else is derived from those.

Changing hash_attr()'s parent argument back to a class because a boolean 
makes
it pretty likely we'll hit an invinite loop. In this case we hit it because 
we
had the following object hierarchy...

  ControlMessage  <= has a hash method
  Event   <= has a hash method
  BandwidthEvent  <= our object type

If our Event class' hash method calls super it will return the Event class, 
not
ControlMessage, causing us to loop indefinitely. Changing hash_attr() so it
takes an explicit reference for our parent instead.
---
 docs/change_log.rst   |  1 +
 stem/__init__.py  |  2 +-
 stem/directory.py |  4 ++--
 stem/response/__init__.py | 17 +++---
 stem/response/events.py   | 43 ++-
 stem/util/__init__.py |  6 +++--
 test/unit/response/control_message.py | 24 +++
 7 files changed, 58 insertions(+), 39 deletions(-)

diff --git a/docs/change_log.rst b/docs/change_log.rst
index 282a02c8..362e4e10 100644
--- a/docs/change_log.rst
+++ b/docs/change_log.rst
@@ -58,6 +58,7 @@ The following are only available within Stem's `git repository
   * Added the delivered_read, delivered_written, overhead_read, and 
overhead_written attributes to 
:class:`~stem.response.events.CircuitBandwidthEvent` (:spec:`fbb38ec`)
   * The *config* attribute of :class:`~stem.response.events.ConfChangedEvent` 
couldn't represent tor configuration options with multiple values. It has been 
replaced with new *changed* and *unset* attributes.
   * Replaced socket's :func:`~stem.socket.ControlPort.get_address`, 
:func:`~stem.socket.ControlPort.get_port`, and 
:func:`~stem.socket.ControlSocketFile.get_socket_path` with attributes
+  * :class:`~stem.response.ControlMessage` is now comparable and hashable
   * Removed 'raw' argument from :func:`~stem.socket.ControlSocket.send`
 
  * **Descriptors**
diff --git a/stem/__init__.py b/stem/__init__.py
index 6da73320..1679b0a0 100644
--- a/stem/__init__.py
+++ b/stem/__init__.py
@@ -601,7 +601,7 @@ class ORPort(Endpoint):
 
   def __hash__(self):
 if self._hash is None:
-  self._hash = stem.util._hash_attr(self, 'link_protocols', parent = True)
+  self._hash = stem.util._hash_attr(self, 'link_protocols', parent = 
Endpoint)
 
 return self._hash
 
diff --git a/stem/directory.py b/stem/directory.py
index 020ac696..5d243707 100644
--- a/stem/directory.py
+++ b/stem/directory.py
@@ -316,7 +316,7 @@ class Authority(Directory):
 
   def __hash__(self):
 if self._hash is None:
-  self._hash = stem.util._hash_attr(self, 'v3ident', 
'is_bandwidth_authority', parent = True)
+  self._hash = stem.util._hash_attr(self, 'v3ident', 
'is_bandwidth_authority', parent = Directory)
 
 return self._hash
 
@@ -521,7 +521,7 @@ class Fallback(Directory):
 
   def __hash__(self):
 if self._hash is None:
-  self._hash = stem.util._hash_attr(self, 'has_extrainfo', 'header', 
parent = True)
+  self._hash = stem.util._hash_attr(self, 'has_extrainfo', 'header', 
parent = Directory)
 
 return self._hash
 
diff --git a/stem/response/__init__.py b/stem/response/__init__.py
index 327be819..54eb9c44 100644
--- a/stem/response/__init__.py
+++ b/stem/response/__init__.py
@@ -16,9 +16,7 @@ Parses replies from the control socket.
 |- from_str - provides a ControlMessage for the given string
 |- is_ok - response had a 250 status
 |- content - provides the parsed message content
-|- raw_content - unparsed socket data
-|- __str__ - content stripped of protocol formatting
-+- __iter__ - ControlLine entries for the content of the message
++- raw_content - unparsed socket data
 
   ControlLine - String subclass with methods for parsing controller responses.
 |- remainder - provides the unparsed content
@@ -36,6 +34,7 @@ import re
 import threading
 
 import stem.socket
+import stem.util
 import stem.util.str_tools
 
 __all__ = [
@@ -129,6 +128,9 @@ class ControlMessage(object):
   Message from the control socket. This is iterable and can be stringified for
   individual message components stripped of protocol formatting. Messages are
   never empty.
+
+  .. versionchanged:: 1.7.0
+ Implemented equality and hashing.
   """
 
   @staticmethod

[tor-commits] [translation/bridgedb] Update translations for bridgedb

2018-08-07 Thread translation
commit 77704db1e7de946d557d747cd255ca6ab4c6154c
Author: Translation commit bot 
Date:   Tue Aug 7 15:45:10 2018 +

Update translations for bridgedb
---
 ml/LC_MESSAGES/bridgedb.po | 23 ---
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/ml/LC_MESSAGES/bridgedb.po b/ml/LC_MESSAGES/bridgedb.po
index 81b9aa74e..64c28a9d3 100644
--- a/ml/LC_MESSAGES/bridgedb.po
+++ b/ml/LC_MESSAGES/bridgedb.po
@@ -3,6 +3,7 @@
 # This file is distributed under the same license as the BridgeDB project.
 # 
 # Translators:
+# Christy K Kurian , 2018
 # NITHIN S SABU , 2018
 # Salman Faris , 2015
 msgid ""
@@ -10,8 +11,8 @@ msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB=bridgedb-reported,msgid=isis,sysrqb=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2018-08-04 13:57+\n"
-"Last-Translator: NITHIN S SABU \n"
+"PO-Revision-Date: 2018-08-07 15:44+\n"
+"Last-Translator: Christy K Kurian \n"
 "Language-Team: Malayalam 
(http://www.transifex.com/otf/torproject/language/ml/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -80,11 +81,11 @@ msgstr "നിങ്ങളുടെ ക്യു ആർ 
കോഡ് ലഭ്
 msgid ""
 "This QRCode contains your bridge lines. Scan it with a QRCode reader to copy"
 " your bridge lines onto mobile and other devices."
-msgstr ""
+msgstr "ഇൗ QR കോഡിൽ നിങ്ങളുടെ 
ബ്രിഡ്ജ് ലൈൻ അ
ടങ്ങിയിരിക്കുന്നു. 
നിങ്ങളുടെ മൊബൈൽ ഫോണിലേക്കോ 
മറ്റു ഉപകരണങ്ങളിലേക്കോ 
ബ്രിഡ്ജ് ലൈൻ കോപ്പി 
ചെയ്യുവാൻ ഇത് ഒരു QR കോഡ് 
റീഡറിന്റെ സഹായത്തോടെ സ്കാൻ 
ചെയ്യുക."
 
 #: bridgedb/https/templates/bridges.html:131
 msgid "There currently aren't any bridges available..."
-msgstr ""
+msgstr "തൽസമയം ഒരു ബ്രിഡ്ജും 
ലഭ്യമല്ല."
 
 #: bridgedb/https/templates/bridges.html:132
 #, python-format
@@ -96,17 +97,17 @@ msgstr ""
 #: bridgedb/https/templates/index.html:11
 #, python-format
 msgid "Step %s1%s"
-msgstr ""
+msgstr "സ്റ്റെപ് %s1%s"
 
 #: bridgedb/https/templates/index.html:13
 #, python-format
 msgid "Download %s Tor Browser %s"
-msgstr ""
+msgstr "ടോർ ബ്രൗസർ %s  ഡൗൺലോഡ് 
ചെയ്യുക %s"
 
 #: bridgedb/https/templates/index.html:25
 #, python-format
 msgid "Step %s2%s"
-msgstr ""
+msgstr "സ്റ്റെപ് %s2%s"
 
 #: bridgedb/https/templates/index.html:27
 #, python-format
@@ -116,7 +117,7 @@ msgstr ""
 #: bridgedb/https/templates/index.html:36
 #, python-format
 msgid "Step %s3%s"
-msgstr ""
+msgstr "സ്റ്റെപ് %s3%s"
 
 #: bridgedb/https/templates/index.html:38
 #, python-format
@@ -134,7 +135,7 @@ msgstr ""
 
 #: bridgedb/https/templates/options.html:51
 msgid "Advanced Options"
-msgstr ""
+msgstr "കൂടുതൽ ക്രമീകരണങ്ങൾ "
 
 #: bridgedb/https/templates/options.html:86
 msgid "No"
@@ -142,7 +143,7 @@ msgstr "വേണ്ട"
 
 #: bridgedb/https/templates/options.html:87
 msgid "none"
-msgstr ""
+msgstr "ഒന്നുമില്ല"
 
 #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the
 #. beginning of words are present in your final translation. Thanks!
@@ -162,7 +163,7 @@ msgstr ""
 
 #: bridgedb/strings.py:43
 msgid "[This is an automated message; please do not reply.]"
-msgstr ""
+msgstr "[ഇത് ഒരു സ്വയം നിർമിത 
സന്ദേശം ആകുന്നു; ദയവായി ഇതിന് 
പ്രതികരണം നൽകാതിരിക്കുക.]"
 
 #: bridgedb/strings.py:45
 msgid "Here are your bridges:"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [depictor/master] Replace the usage of the is_bwauth stem attribute that is deprecated now

2018-08-07 Thread tom
commit 339c90d2d20a41f2d98900d7e42e576e65c740b8
Author: Tom Ritter 
Date:   Tue Aug 7 10:30:21 2018 -0500

Replace the usage of the is_bwauth stem attribute that is deprecated now
---
 data/consensus.cfg |  7 +++
 utility.py |  8 +++-
 website.py | 23 +--
 write_website.py   |  5 -
 4 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/data/consensus.cfg b/data/consensus.cfg
index ca11041..41a4147 100644
--- a/data/consensus.cfg
+++ b/data/consensus.cfg
@@ -12,6 +12,13 @@ graph_logical_max 25000
 # we highlight clockskew that is 20 seconds or greater
 clockskew_threshold 20
 
+# bwauths that should be graphed
+
+bwauths maatuska
+bwauths faravahar
+bwauths bastet
+bwauths moria1
+
 # recognized tor consensus parameters
 
 known_params bwweightscale
diff --git a/utility.py b/utility.py
index 6b2ee54..c931c59 100755
--- a/utility.py
+++ b/utility.py
@@ -11,6 +11,11 @@ import stem.util.enum
 
 from stem.util.lru_cache import lru_cache
 
+config = {'bwauths': []}
+def set_config(c):
+   global config
+   config = c
+
 @lru_cache()
 def get_dirauths():
#Remove any BridgeAuths
@@ -18,7 +23,8 @@ def get_dirauths():
 
 @lru_cache()
 def get_bwauths():
-   return dict((k.lower(), v) for (k, v) in 
stem.descriptor.remote.get_authorities().items() if v.is_bandwidth_authority)
+   global config
+   return dict((k.lower(), v) for (k, v) in 
stem.descriptor.remote.get_authorities().items() if v.nickname.lower() in 
config['bwauths'])
 
 downloader = stem.descriptor.remote.DescriptorDownloader(
timeout = 30,
diff --git a/website.py b/website.py
index 7baa0f8..0405099 100755
--- a/website.py
+++ b/website.py
@@ -18,7 +18,7 @@ from Crypto.PublicKey import RSA
 
 import stem.descriptor.remote
 
-from utility import get_dirauths, get_bwauths, unix_time, FileMock
+from utility import set_config, get_dirauths, get_bwauths, unix_time, FileMock
 
 class WebsiteWriter:
consensus = None
@@ -1680,6 +1680,18 @@ if __name__ == '__main__':
"""
import stem
import pickle
+   CONFIG = stem.util.conf.config_dict('consensus', {
+'known_params': [],
+'bwauths': [],
+'ignore_fallback_authorities': False,
+'graph_logical_min': 125,
+'graph_logical_max': 25000,
+'clockskew_threshold': 0,
+})
+   config = stem.util.conf.get_config("consensus")
+   config.load(os.path.join(os.path.dirname(__file__), 'data', 
'consensus.cfg'))
+   set_config(CONFIG)
+
w = WebsiteWriter()
 
c = pickle.load(open('consensus.p', 'rb'))
@@ -1690,15 +1702,6 @@ if __name__ == '__main__':
w.set_fallback_dirs(f)

 
-   CONFIG = stem.util.conf.config_dict('consensus', {
-'known_params': [],
-'ignore_fallback_authorities': False,
-'graph_logical_min': 125,
-'graph_logical_max': 25000,
-'clockskew_threshold': 0,
-})
-   config = stem.util.conf.get_config("consensus")
-   config.load(os.path.join(os.path.dirname(__file__), 'data', 
'consensus.cfg'))
w.set_config(CONFIG)
 
w.write_website(os.path.join(os.path.dirname(__file__), 'out', \
diff --git a/write_website.py b/write_website.py
index f79e2c3..538c10c 100755
--- a/write_website.py
+++ b/write_website.py
@@ -32,13 +32,14 @@ from graphs import GraphWriter
 # dir-source line: dir-source authority_name v3ident hostname ip  DirPort  
OrPort
 # r line: r nickname base64(fingerprint + "=")   -> python -c "x = ''; import 
sys; import base64; sys.stdout.write(''.join('{:02x}'.format(ord(c)) for c in 
base64.b64decode(x)))"
 
+#Also make sure to define the list of bwauths in the consensus.cfg file
+
 #stem.descriptor.remote.DIRECTORY_AUTHORITIES = {
 #'Faravahar': DirectoryAuthority(
 #nickname = 'Faravahar',
 #address = '154.35.175.225',
 #or_port = 443,
 #dir_port = 80,
-#is_bandwidth_authority = True,
 #fingerprint = 'CF6D0AAFB385BE71B8E111FC5CFF4B47923733BC',
 #v3ident = 'EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97',
 #  ),  
@@ -46,6 +47,7 @@ from graphs import GraphWriter
 
 CONFIG = stem.util.conf.config_dict('consensus', {
'known_params': [],
+   'bwauths': [],
'ignore_fallback_authorities' : False,
'graph_logical_min' : 125,
'graph_logical_max' : 25000,
@@ -56,6 +58,7 @@ def main():
# loads configuration data
config = stem.util.conf.get_config("consensus")
config.load(os.path.join(os.path.dirname(__file__), 'data', 
'consensus.cfg'))
+   set_config(CONFIG)
 
  

[tor-commits] [metrics-web/master] Update news.json to version 284 of doc/MetricsTimeline.

2018-08-07 Thread karsten
commit 33921ae7e07ad5ac34e4a7ba40b626f3eddcc6a2
Author: Karsten Loesing 
Date:   Tue Aug 7 14:37:48 2018 +0200

Update news.json to version 284 of doc/MetricsTimeline.
---
 src/main/resources/web/json/news.json | 25 +
 1 file changed, 25 insertions(+)

diff --git a/src/main/resources/web/json/news.json 
b/src/main/resources/web/json/news.json
index f0440a6..03d7f6a 100644
--- a/src/main/resources/web/json/news.json
+++ b/src/main/resources/web/json/news.json
@@ -3291,6 +3291,31 @@
 "target" : 
"https://metrics.torproject.org/userstats-bridge-country.html?start=2018-06-01=2018-09-01=all;
   } ]
 }, {
+  "start" : "2018-07-29",
+  "ongoing" : true,
+  "places" : [ "bd" ],
+  "short_description" : "Protests over road safety in Dhaka, Bangladesh",
+  "description" : "Protests over road safety in Dhaka, Bangladesh. Reports of 
mobile network throttling and blocking of Facebook.",
+  "links" : [ {
+"label" : "New York Times article",
+"target" : 
"https://www.nytimes.com/2018/08/05/world/asia/bangladesh-students-protests.html;
+  }, {
+"label" : "Daily Star article on throttling",
+"target" : 
"https://www.thedailystar.net/country/bangladesh-mobile-internet-speed-brought-down-across-for-24hrs-1615909;
+  } ]
+}, {
+  "start" : "2018-08-04",
+  "end" : "2018-08-05",
+  "short_description" : "Collector was missing consensuses",
+  "description" : "Collector was missing consensuses. They were recovered via 
recent relay consensus diffs.",
+  "links" : [ {
+"label" : "metrics-team thread",
+"target" : 
"https://lists.torproject.org/pipermail/metrics-team/2018-August/000869.html;
+  }, {
+"label" : "tor-relays thread",
+"target" : 
"https://lists.torproject.org/pipermail/tor-relays/2018-August/015850.html;
+  } ]
+}, {
   "start" : "2016-02-24",
   "places" : [ "tm" ],
   "protocols" : [ "" ],

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.3.4] Last two changelog entries for 0.3.4.6-rc

2018-08-07 Thread nickm
commit 6045c26d8442913e936e640fcf165ebfcc9d4bf1
Author: Nick Mathewson 
Date:   Tue Aug 7 08:09:06 2018 -0400

Last two changelog entries for 0.3.4.6-rc
---
 ChangeLog| 11 +++
 changes/bug26994 |  3 ---
 changes/bug27003 |  6 --
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 41e39982b..84a3f1045 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,13 @@ Changes in version 0.3.4.6-rc - 2018-08-06
   release candidate: if no serious bugs are found, we expect that the
   stable 0.3.4 release will be (almost) the same as this release.
 
+  o Major bugfixes (event scheduler):
+- When we enable a periodic event, schedule it in the event loop
+  rather than running it immediately. Previously, we would re-run
+  periodic events immediately in the middle of (for example)
+  changing our options, with unpredictable effects. Fixes bug 27003;
+  bugfix on 0.3.4.1-alpha.
+
   o Minor features (compilation):
 - When building Tor, prefer to use Python 3 over Python 2, and more
   recent (contemplated) versions over older ones. Closes
@@ -38,6 +45,10 @@ Changes in version 0.3.4.6-rc - 2018-08-06
 - Fix a number of small memory leaks identified by coverity. Fixes
   bug 26467; bugfix on numerous Tor versions.
 
+  o Minor bugfixes (portability):
+- Avoid a compilation error in test_bwmgt.c on Solaris 10. Fixes bug
+  26994; bugfix on 0.3.4.1-alpha.
+
   o Minor bugfixes (testing, compatibility):
 - When running the ntor_ref.py and hs_ntor_ref.py tests, make sure
   only to pass strings (rather than "bytes" objects) to the Python
diff --git a/changes/bug26994 b/changes/bug26994
deleted file mode 100644
index 664894a7f..0
--- a/changes/bug26994
+++ /dev/null
@@ -1,3 +0,0 @@
-  o Minor bugfixes (portability):
-- Avoid a compilation error in test_bwmgt.c on Solaris 10.
-  Fixes bug 26994; bugfix on 0.3.4.1-alpha.
diff --git a/changes/bug27003 b/changes/bug27003
deleted file mode 100644
index 4f2045afc..0
--- a/changes/bug27003
+++ /dev/null
@@ -1,6 +0,0 @@
-  o Major bugfixes (event scheduler):
-- When we enable a periodic event, schedule it in the event loop
-  rather than running it immediately. Previously, we would re-run
-  periodic events immediately in the middle of (for example)
-  changing our options, with unpredictable effects.  Fixes bug
-  27003; bugfix on 0.3.4.1-alpha.

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] These changes files are also merged in 0.3.4.6-rc: remove them.

2018-08-07 Thread nickm
commit 8410d3b0ad6b7132452d6979914b20697707ea85
Author: Nick Mathewson 
Date:   Tue Aug 7 08:10:26 2018 -0400

These changes files are also merged in 0.3.4.6-rc: remove them.
---
 changes/bug26994 | 3 ---
 changes/bug27003 | 6 --
 2 files changed, 9 deletions(-)

diff --git a/changes/bug26994 b/changes/bug26994
deleted file mode 100644
index 664894a7f..0
--- a/changes/bug26994
+++ /dev/null
@@ -1,3 +0,0 @@
-  o Minor bugfixes (portability):
-- Avoid a compilation error in test_bwmgt.c on Solaris 10.
-  Fixes bug 26994; bugfix on 0.3.4.1-alpha.
diff --git a/changes/bug27003 b/changes/bug27003
deleted file mode 100644
index 4f2045afc..0
--- a/changes/bug27003
+++ /dev/null
@@ -1,6 +0,0 @@
-  o Major bugfixes (event scheduler):
-- When we enable a periodic event, schedule it in the event loop
-  rather than running it immediately. Previously, we would re-run
-  periodic events immediately in the middle of (for example)
-  changing our options, with unpredictable effects.  Fixes bug
-  27003; bugfix on 0.3.4.1-alpha.

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.3.4] When enabling periodic events, schedule but don't run them immediately.

2018-08-07 Thread nickm
commit 176999fd955dea5916a560374db7d4efd3a1dad1
Author: Nick Mathewson 
Date:   Thu Aug 2 10:03:24 2018 -0400

When enabling periodic events, schedule but don't run them immediately.

When we fixed 25939 in f7633c1fcaefe72bf97c001bab9062132c919996, we
introduced a call to rescan_periodic_events() from inside the onion
service logic. But this meant that we could rescan the event list --
thereby running event callbacks! -- from inside the hidden service code.
This could cause us to run some of our event callbacks from an
inconsistent state, if we were in the middle of changing options.

A related bug (#25761) prevented us from rescanning our periodic
events as appropriate, but when we fixed THAT one, this bug reared
its ugly head.

The fix here is that "enabling" an event should cause us to run it
from the event loop, but not immediately from the point where we
enable it.

Fixes bug 27003; bugfix on 0.3.4.1-alpha.
---
 changes/bug27003   | 6 ++
 src/or/periodic.c  | 9 +
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/changes/bug27003 b/changes/bug27003
new file mode 100644
index 0..4f2045afc
--- /dev/null
+++ b/changes/bug27003
@@ -0,0 +1,6 @@
+  o Major bugfixes (event scheduler):
+- When we enable a periodic event, schedule it in the event loop
+  rather than running it immediately. Previously, we would re-run
+  periodic events immediately in the middle of (for example)
+  changing our options, with unpredictable effects.  Fixes bug
+  27003; bugfix on 0.3.4.1-alpha.
diff --git a/src/or/periodic.c b/src/or/periodic.c
index 92fa677f8..9470376d0 100644
--- a/src/or/periodic.c
+++ b/src/or/periodic.c
@@ -140,8 +140,8 @@ periodic_event_destroy(periodic_event_item_t *event)
   event->last_action_time = 0;
 }
 
-/** Enable the given event which means the event is launched and then the
- * event's enabled flag is set. This can be called for an event that is
+/** Enable the given event by setting its "enabled" flag and scheduling it to
+ * run immediately in the event loop. This can be called for an event that is
  * already enabled. */
 void
 periodic_event_enable(periodic_event_item_t *event)
@@ -152,7 +152,9 @@ periodic_event_enable(periodic_event_item_t *event)
 return;
   }
 
-  periodic_event_launch(event);
+  tor_assert(event->ev);
+  event->enabled = 1;
+  mainloop_event_activate(event->ev);
 }
 
 /** Disable the given event which means the event is destroyed and then the
@@ -169,4 +171,3 @@ periodic_event_disable(periodic_event_item_t *event)
   mainloop_event_cancel(event->ev);
   event->enabled = 0;
 }
-
diff --git a/src/test/test_periodic_event.c b/src/test/test_periodic_event.c
index 34689b64f..f159c4f83 100644
--- a/src/test/test_periodic_event.c
+++ b/src/test/test_periodic_event.c
@@ -106,11 +106,11 @@ test_pe_launch(void *arg)
 periodic_event_item_t *item = _events[i];
 if (item->roles & PERIODIC_EVENT_ROLE_CLIENT) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 } else {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
-  tt_u64_op(item->last_action_time, OP_EQ, 0);
 }
+// enabled or not, the event has not yet been run.
+tt_u64_op(item->last_action_time, OP_EQ, 0);
   }
 
   /* Remove Client but become a Relay. */
@@ -127,12 +127,9 @@ test_pe_launch(void *arg)
 /* Only Client role should be disabled. */
 if (item->roles == PERIODIC_EVENT_ROLE_CLIENT) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
-  /* Was previously enabled so they should never be to 0. */
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 }
 if (item->roles & PERIODIC_EVENT_ROLE_RELAY) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 }
 /* Non Relay role should be disabled, except for Dirserver. */
 if (!(item->roles & roles)) {
@@ -330,4 +327,3 @@ struct testcase_t periodic_event_tests[] = {
 
   END_OF_TESTCASES
 };
-



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.3.4] Merge branch 'maint-0.3.4' into release-0.3.4

2018-08-07 Thread nickm
commit 258759547b305a76b3985177698425d51b5d2d03
Merge: 40deb99c5 882b2ad0a
Author: Nick Mathewson 
Date:   Tue Aug 7 08:05:56 2018 -0400

Merge branch 'maint-0.3.4' into release-0.3.4

 changes/bug27003   | 6 ++
 src/or/periodic.c  | 9 +
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.3.4] Merge branch 'bug27003_034_v2' into maint-0.3.4

2018-08-07 Thread nickm
commit 882b2ad0aa46702e8420ef0d4bd788daff6f3ffd
Merge: a54e94878 176999fd9
Author: Nick Mathewson 
Date:   Tue Aug 7 08:05:51 2018 -0400

Merge branch 'bug27003_034_v2' into maint-0.3.4

 changes/bug27003   | 6 ++
 src/or/periodic.c  | 9 +
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'bug27003_034_v2' into maint-0.3.4

2018-08-07 Thread nickm
commit 882b2ad0aa46702e8420ef0d4bd788daff6f3ffd
Merge: a54e94878 176999fd9
Author: Nick Mathewson 
Date:   Tue Aug 7 08:05:51 2018 -0400

Merge branch 'bug27003_034_v2' into maint-0.3.4

 changes/bug27003   | 6 ++
 src/or/periodic.c  | 9 +
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.3.4] When enabling periodic events, schedule but don't run them immediately.

2018-08-07 Thread nickm
commit 176999fd955dea5916a560374db7d4efd3a1dad1
Author: Nick Mathewson 
Date:   Thu Aug 2 10:03:24 2018 -0400

When enabling periodic events, schedule but don't run them immediately.

When we fixed 25939 in f7633c1fcaefe72bf97c001bab9062132c919996, we
introduced a call to rescan_periodic_events() from inside the onion
service logic. But this meant that we could rescan the event list --
thereby running event callbacks! -- from inside the hidden service code.
This could cause us to run some of our event callbacks from an
inconsistent state, if we were in the middle of changing options.

A related bug (#25761) prevented us from rescanning our periodic
events as appropriate, but when we fixed THAT one, this bug reared
its ugly head.

The fix here is that "enabling" an event should cause us to run it
from the event loop, but not immediately from the point where we
enable it.

Fixes bug 27003; bugfix on 0.3.4.1-alpha.
---
 changes/bug27003   | 6 ++
 src/or/periodic.c  | 9 +
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/changes/bug27003 b/changes/bug27003
new file mode 100644
index 0..4f2045afc
--- /dev/null
+++ b/changes/bug27003
@@ -0,0 +1,6 @@
+  o Major bugfixes (event scheduler):
+- When we enable a periodic event, schedule it in the event loop
+  rather than running it immediately. Previously, we would re-run
+  periodic events immediately in the middle of (for example)
+  changing our options, with unpredictable effects.  Fixes bug
+  27003; bugfix on 0.3.4.1-alpha.
diff --git a/src/or/periodic.c b/src/or/periodic.c
index 92fa677f8..9470376d0 100644
--- a/src/or/periodic.c
+++ b/src/or/periodic.c
@@ -140,8 +140,8 @@ periodic_event_destroy(periodic_event_item_t *event)
   event->last_action_time = 0;
 }
 
-/** Enable the given event which means the event is launched and then the
- * event's enabled flag is set. This can be called for an event that is
+/** Enable the given event by setting its "enabled" flag and scheduling it to
+ * run immediately in the event loop. This can be called for an event that is
  * already enabled. */
 void
 periodic_event_enable(periodic_event_item_t *event)
@@ -152,7 +152,9 @@ periodic_event_enable(periodic_event_item_t *event)
 return;
   }
 
-  periodic_event_launch(event);
+  tor_assert(event->ev);
+  event->enabled = 1;
+  mainloop_event_activate(event->ev);
 }
 
 /** Disable the given event which means the event is destroyed and then the
@@ -169,4 +171,3 @@ periodic_event_disable(periodic_event_item_t *event)
   mainloop_event_cancel(event->ev);
   event->enabled = 0;
 }
-
diff --git a/src/test/test_periodic_event.c b/src/test/test_periodic_event.c
index 34689b64f..f159c4f83 100644
--- a/src/test/test_periodic_event.c
+++ b/src/test/test_periodic_event.c
@@ -106,11 +106,11 @@ test_pe_launch(void *arg)
 periodic_event_item_t *item = _events[i];
 if (item->roles & PERIODIC_EVENT_ROLE_CLIENT) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 } else {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
-  tt_u64_op(item->last_action_time, OP_EQ, 0);
 }
+// enabled or not, the event has not yet been run.
+tt_u64_op(item->last_action_time, OP_EQ, 0);
   }
 
   /* Remove Client but become a Relay. */
@@ -127,12 +127,9 @@ test_pe_launch(void *arg)
 /* Only Client role should be disabled. */
 if (item->roles == PERIODIC_EVENT_ROLE_CLIENT) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
-  /* Was previously enabled so they should never be to 0. */
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 }
 if (item->roles & PERIODIC_EVENT_ROLE_RELAY) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 }
 /* Non Relay role should be disabled, except for Dirserver. */
 if (!(item->roles & roles)) {
@@ -330,4 +327,3 @@ struct testcase_t periodic_event_tests[] = {
 
   END_OF_TESTCASES
 };
-



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.3.4] Merge branch 'bug27003_034_v2' into maint-0.3.4

2018-08-07 Thread nickm
commit 882b2ad0aa46702e8420ef0d4bd788daff6f3ffd
Merge: a54e94878 176999fd9
Author: Nick Mathewson 
Date:   Tue Aug 7 08:05:51 2018 -0400

Merge branch 'bug27003_034_v2' into maint-0.3.4

 changes/bug27003   | 6 ++
 src/or/periodic.c  | 9 +
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] When enabling periodic events, schedule but don't run them immediately.

2018-08-07 Thread nickm
commit 176999fd955dea5916a560374db7d4efd3a1dad1
Author: Nick Mathewson 
Date:   Thu Aug 2 10:03:24 2018 -0400

When enabling periodic events, schedule but don't run them immediately.

When we fixed 25939 in f7633c1fcaefe72bf97c001bab9062132c919996, we
introduced a call to rescan_periodic_events() from inside the onion
service logic. But this meant that we could rescan the event list --
thereby running event callbacks! -- from inside the hidden service code.
This could cause us to run some of our event callbacks from an
inconsistent state, if we were in the middle of changing options.

A related bug (#25761) prevented us from rescanning our periodic
events as appropriate, but when we fixed THAT one, this bug reared
its ugly head.

The fix here is that "enabling" an event should cause us to run it
from the event loop, but not immediately from the point where we
enable it.

Fixes bug 27003; bugfix on 0.3.4.1-alpha.
---
 changes/bug27003   | 6 ++
 src/or/periodic.c  | 9 +
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/changes/bug27003 b/changes/bug27003
new file mode 100644
index 0..4f2045afc
--- /dev/null
+++ b/changes/bug27003
@@ -0,0 +1,6 @@
+  o Major bugfixes (event scheduler):
+- When we enable a periodic event, schedule it in the event loop
+  rather than running it immediately. Previously, we would re-run
+  periodic events immediately in the middle of (for example)
+  changing our options, with unpredictable effects.  Fixes bug
+  27003; bugfix on 0.3.4.1-alpha.
diff --git a/src/or/periodic.c b/src/or/periodic.c
index 92fa677f8..9470376d0 100644
--- a/src/or/periodic.c
+++ b/src/or/periodic.c
@@ -140,8 +140,8 @@ periodic_event_destroy(periodic_event_item_t *event)
   event->last_action_time = 0;
 }
 
-/** Enable the given event which means the event is launched and then the
- * event's enabled flag is set. This can be called for an event that is
+/** Enable the given event by setting its "enabled" flag and scheduling it to
+ * run immediately in the event loop. This can be called for an event that is
  * already enabled. */
 void
 periodic_event_enable(periodic_event_item_t *event)
@@ -152,7 +152,9 @@ periodic_event_enable(periodic_event_item_t *event)
 return;
   }
 
-  periodic_event_launch(event);
+  tor_assert(event->ev);
+  event->enabled = 1;
+  mainloop_event_activate(event->ev);
 }
 
 /** Disable the given event which means the event is destroyed and then the
@@ -169,4 +171,3 @@ periodic_event_disable(periodic_event_item_t *event)
   mainloop_event_cancel(event->ev);
   event->enabled = 0;
 }
-
diff --git a/src/test/test_periodic_event.c b/src/test/test_periodic_event.c
index 34689b64f..f159c4f83 100644
--- a/src/test/test_periodic_event.c
+++ b/src/test/test_periodic_event.c
@@ -106,11 +106,11 @@ test_pe_launch(void *arg)
 periodic_event_item_t *item = _events[i];
 if (item->roles & PERIODIC_EVENT_ROLE_CLIENT) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 } else {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
-  tt_u64_op(item->last_action_time, OP_EQ, 0);
 }
+// enabled or not, the event has not yet been run.
+tt_u64_op(item->last_action_time, OP_EQ, 0);
   }
 
   /* Remove Client but become a Relay. */
@@ -127,12 +127,9 @@ test_pe_launch(void *arg)
 /* Only Client role should be disabled. */
 if (item->roles == PERIODIC_EVENT_ROLE_CLIENT) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
-  /* Was previously enabled so they should never be to 0. */
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 }
 if (item->roles & PERIODIC_EVENT_ROLE_RELAY) {
   tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
-  tt_u64_op(item->last_action_time, OP_NE, 0);
 }
 /* Non Relay role should be disabled, except for Dirserver. */
 if (!(item->roles & roles)) {
@@ -330,4 +327,3 @@ struct testcase_t periodic_event_tests[] = {
 
   END_OF_TESTCASES
 };
-



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'maint-0.3.4'

2018-08-07 Thread nickm
commit 5e86a2868319f8aa55d2858fdb4d83e6f9f69120
Merge: abf88af48 882b2ad0a
Author: Nick Mathewson 
Date:   Tue Aug 7 08:05:56 2018 -0400

Merge branch 'maint-0.3.4'

 changes/bug27003   | 6 ++
 src/core/mainloop/periodic.c   | 8 +---
 src/test/test_periodic_event.c | 8 ++--
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --cc src/core/mainloop/periodic.c
index c17c0c56d,0..df5317eb3
mode 100644,00..100644
--- a/src/core/mainloop/periodic.c
+++ b/src/core/mainloop/periodic.c
@@@ -1,172 -1,0 +1,174 @@@
 +/* Copyright (c) 2015-2018, The Tor Project, Inc. */
 +/* See LICENSE for licensing information */
 +
 +/**
 + * \file periodic.c
 + *
 + * \brief Generic backend for handling periodic events.
 + *
 + * The events in this module are used by main.c to track items that need
 + * to fire once every N seconds, possibly picking a new interval each time
 + * that they fire.  See periodic_events[] in main.c for examples.
 + */
 +
 +#include "core/or/or.h"
 +#include "lib/evloop/compat_libevent.h"
 +#include "app/config/config.h"
 +#include "core/mainloop/main.h"
 +#include "core/mainloop/periodic.h"
 +#include "lib/evloop/compat_libevent.h"
 +
 +/** We disable any interval greater than this number of seconds, on the
 + * grounds that it is probably an absolute time mistakenly passed in as a
 + * relative time.
 + */
 +static const int MAX_INTERVAL = 10 * 365 * 86400;
 +
 +/** Set the event event to run in next_interval seconds from
 + * now. */
 +static void
 +periodic_event_set_interval(periodic_event_item_t *event,
 +time_t next_interval)
 +{
 +  tor_assert(next_interval < MAX_INTERVAL);
 +  struct timeval tv;
 +  tv.tv_sec = next_interval;
 +  tv.tv_usec = 0;
 +  mainloop_event_schedule(event->ev, );
 +}
 +
 +/** Wraps dispatches for periodic events, data will be a pointer to the
 + * event that needs to be called */
 +static void
 +periodic_event_dispatch(mainloop_event_t *ev, void *data)
 +{
 +  periodic_event_item_t *event = data;
 +  tor_assert(ev == event->ev);
 +
 +  if (BUG(!periodic_event_is_enabled(event))) {
 +return;
 +  }
 +
 +  time_t now = time(NULL);
 +  update_current_time(now);
 +  const or_options_t *options = get_options();
 +//  log_debug(LD_GENERAL, "Dispatching %s", event->name);
 +  int r = event->fn(now, options);
 +  int next_interval = 0;
 +
 +  if (!periodic_event_is_enabled(event)) {
 +/* The event got disabled from inside its callback; no need to
 + * reschedule. */
 +return;
 +  }
 +
 +  /* update the last run time if action was taken */
 +  if (r==0) {
 +log_err(LD_BUG, "Invalid return value for periodic event from %s.",
 +  event->name);
 +tor_assert(r != 0);
 +  } else if (r > 0) {
 +event->last_action_time = now;
 +/* If the event is meant to happen after ten years, that's likely
 + * a bug, and somebody gave an absolute time rather than an interval.
 + */
 +tor_assert(r < MAX_INTERVAL);
 +next_interval = r;
 +  } else {
 +/* no action was taken, it is likely a precondition failed,
 + * we should reschedule for next second incase the precondition
 + * passes then */
 +next_interval = 1;
 +  }
 +
 +//  log_debug(LD_GENERAL, "Scheduling %s for %d seconds", event->name,
 +//   next_interval);
 +  struct timeval tv = { next_interval , 0 };
 +  mainloop_event_schedule(ev, );
 +}
 +
 +/** Schedules event to run as soon as possible from now. */
 +void
 +periodic_event_reschedule(periodic_event_item_t *event)
 +{
 +  /* Don't reschedule a disabled event. */
 +  if (periodic_event_is_enabled(event)) {
 +periodic_event_set_interval(event, 1);
 +  }
 +}
 +
 +/** Initializes the libevent backend for a periodic event. */
 +void
 +periodic_event_setup(periodic_event_item_t *event)
 +{
 +  if (event->ev) { /* Already setup? This is a bug */
 +log_err(LD_BUG, "Initial dispatch should only be done once.");
 +tor_assert(0);
 +  }
 +
 +  event->ev = mainloop_event_new(periodic_event_dispatch,
 + event);
 +  tor_assert(event->ev);
 +}
 +
 +/** Handles initial dispatch for periodic events. It should happen 1 second
 + * after the events are created to mimic behaviour before #3199's refactor */
 +void
 +periodic_event_launch(periodic_event_item_t *event)
 +{
 +  if (! event->ev) { /* Not setup? This is a bug */
 +log_err(LD_BUG, "periodic_event_launch without periodic_event_setup");
 +tor_assert(0);
 +  }
 +  /* Event already enabled? This is a bug */
 +  if (periodic_event_is_enabled(event)) {
 +log_err(LD_BUG, "periodic_event_launch on an already enabled event");
 +tor_assert(0);
 +  }
 +
 +  // Initial dispatch
 +  event->enabled = 1;
 +  periodic_event_dispatch(event->ev, event);
 +}
 +
 +/** Release all storage associated with event */
 +void
 +periodic_event_destroy(periodic_event_item_t *event)
 +{
 +  if (!event)
 +return;
 +  mainloop_event_free(event->ev);
 +  

[tor-commits] [translation-tools/master] add tba-androidstrings.dtd to the translation bot

2018-08-07 Thread emmapeel
commit fb66fac110275a0af382856fb0918eef9ff58de7
Author: emma peel 
Date:   Tue Aug 7 10:08:42 2018 +

add tba-androidstrings.dtd to the translation bot
---
 config | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/config b/config
index ded0f14..4a42fc7 100644
--- a/config
+++ b/config
@@ -13,15 +13,13 @@ exoneratorproperties exoneratorproperties_completed
 https_everywhere https_everywhere_completed
 liveusb-creator liveusb-creator_completed
 mat-gui mat-gui_completed
-tor-launcher-properties tor-launcher-properties_completed
-tor-launcher-progress tor-launcher-progress_completed
-tor-launcher-network-settings tor-launcher-network-settings_completed
 tails-misc tails-misc_completed
 tails-iuk tails-iuk_completed tails-perl5lib tails-perl5lib_completed
 tails-greeter-2 tails-greeter-2_completed
 tails-openpgp-applet tails-openpgp-applet_completed
 tails-onioncircuits tails-onioncircuits_completed
 tails-persistence-setup tails-persistence-setup_completed
+tba-android_stringsdtd tba-android_stringsdtd_completed
 tor-and-https tor-and-https_completed
 tor_animation tor_animation_completed
 torbirdy torbirdy_completed
@@ -34,6 +32,9 @@ torbutton-aboutdialogdtd torbutton-aboutdialogdtd_completed
 torbutton-abouttorproperties torbutton-abouttorproperties_completed
 torbutton-abouttbupdatedtd torbutton-abouttbupdatedtd_completed
 torcheck torcheck_completed
+tor-launcher-properties tor-launcher-properties_completed
+tor-launcher-progress tor-launcher-progress_completed
+tor-launcher-network-settings tor-launcher-network-settings_completed
 whisperback whisperback_completed
 support-portal support-portal_completed"
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation-tools/master] order components

2018-08-07 Thread emmapeel
commit 92aaa75d1a9cb47cb2f72eb516133887ff5335cf
Author: emma peel 
Date:   Tue Aug 7 08:22:59 2018 +

order components
---
 config | 44 +---
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/config b/config
index 89ea432..ded0f14 100644
--- a/config
+++ b/config
@@ -7,28 +7,34 @@ TRANSLATION_REPO=/srv/translation.torproject.org/translations/
 
 TX=/usr/bin/tx
 
-PROJECTS="bridgedb bridgedb_completed
-torcheck torcheck_completed whisperback
-whisperback_completed https_everywhere https_everywhere_completed
-liveusb-creator liveusb-creator_completed tails-persistence-setup
-tails-persistence-setup_completed torbirdy torbirdy_completed mat-gui 
mat-gui_completed
+PROJECTS="abouttor-homepage abouttor-homepage_completed
+bridgedb bridgedb_completed
+exoneratorproperties exoneratorproperties_completed
+https_everywhere https_everywhere_completed
+liveusb-creator liveusb-creator_completed
+mat-gui mat-gui_completed
 tor-launcher-properties tor-launcher-properties_completed
 tor-launcher-progress tor-launcher-progress_completed
 tor-launcher-network-settings tor-launcher-network-settings_completed
-tails-misc tails-misc_completed abouttor-homepage
-abouttor-homepage_completed torbutton-brandproperties
-torbutton-brandproperties_completed torbutton-branddtd
-torbutton-branddtd_completed torbutton-torbuttonproperties 
torbutton-torbuttonproperties_completed
-torbutton-torbuttondtd torbutton-torbuttondtd_completed tails-iuk 
tails-iuk_completed tails-perl5lib
-tails-perl5lib_completed tor-and-https tor-and-https_completed
-tor_animation tor_animation_completed torbutton-aboutdialogdtd
-torbutton-aboutdialogdtd_completed torbutton-abouttorproperties
-torbutton-abouttorproperties_completed tails-openpgp-applet
-tails-openpgp-applet_completed torbutton-abouttbupdatedtd
-torbutton-abouttbupdatedtd_completed tails-onioncircuits 
tails-onioncircuits_completed
-tails-greeter-2 tails-greeter-2_completed exoneratorproperties
-exoneratorproperties_completed tor-browser-manual
-tor-browser-manual_completed
+tails-misc tails-misc_completed
+tails-iuk tails-iuk_completed tails-perl5lib tails-perl5lib_completed
+tails-greeter-2 tails-greeter-2_completed
+tails-openpgp-applet tails-openpgp-applet_completed
+tails-onioncircuits tails-onioncircuits_completed
+tails-persistence-setup tails-persistence-setup_completed
+tor-and-https tor-and-https_completed
+tor_animation tor_animation_completed
+torbirdy torbirdy_completed
+tor-browser-manual tor-browser-manual_completed
+torbutton-brandproperties torbutton-brandproperties_completed
+torbutton-branddtd torbutton-branddtd_completed
+torbutton-torbuttonproperties torbutton-torbuttonproperties_completed
+torbutton-torbuttondtd torbutton-torbuttondtd_completed
+torbutton-aboutdialogdtd torbutton-aboutdialogdtd_completed
+torbutton-abouttorproperties torbutton-abouttorproperties_completed
+torbutton-abouttbupdatedtd torbutton-abouttbupdatedtd_completed
+torcheck torcheck_completed
+whisperback whisperback_completed
 support-portal support-portal_completed"
 
 PIDFILE=/srv/translation.torproject.org/run/update_translations.pid

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation-tools/master] delete support files, merged in support-portal

2018-08-07 Thread emmapeel
commit c2b738fdb8b7c320292d66d91148ae8075dc8613
Author: emma peel 
Date:   Tue Aug 7 08:15:17 2018 +

delete support files, merged in support-portal
---
 config | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/config b/config
index 91fedc7..89ea432 100644
--- a/config
+++ b/config
@@ -28,11 +28,8 @@ tails-openpgp-applet_completed torbutton-abouttbupdatedtd
 torbutton-abouttbupdatedtd_completed tails-onioncircuits 
tails-onioncircuits_completed
 tails-greeter-2 tails-greeter-2_completed exoneratorproperties
 exoneratorproperties_completed tor-browser-manual
-tor-browser-manual_completed support-censorship support-censorship_completed
-support-connecting support-connecting_completed support-faq 
support-faq_completed
-support-gettor support-gettor_completed support-https support-https_completed
-support-miscellaneous support-miscellaneous_completed support-tbb 
support-tbb_completed support-portal support-portal_completed
-support-topics support-topics_completed support-tormobile 
support-tormobile_completed"
+tor-browser-manual_completed
+support-portal support-portal_completed"
 
 PIDFILE=/srv/translation.torproject.org/run/update_translations.pid
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/bridgedb] Update translations for bridgedb

2018-08-07 Thread translation
commit 8344f42dbc4b7de75bbd01c1960c71bd5580e700
Author: Translation commit bot 
Date:   Tue Aug 7 07:45:04 2018 +

Update translations for bridgedb
---
 fa/LC_MESSAGES/bridgedb.po | 33 +
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/fa/LC_MESSAGES/bridgedb.po b/fa/LC_MESSAGES/bridgedb.po
index ab76fa6c5..e676b1967 100644
--- a/fa/LC_MESSAGES/bridgedb.po
+++ b/fa/LC_MESSAGES/bridgedb.po
@@ -10,6 +10,7 @@
 # Ehsan Ab , 2015
 # NoProfile, 2014-2015
 # johnholzer , 2014
+# Mehrad Rousta , 2018
 # Mohammad Hossein , 2014
 # perspolis , 2011
 # Setareh , 2014
@@ -18,15 +19,15 @@ msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB=bridgedb-reported,msgid=isis,sysrqb=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2018-04-12 18:54+\n"
-"Last-Translator: Marzieh Behboodi \n"
+"PO-Revision-Date: 2018-08-07 07:30+\n"
+"Last-Translator: Mehrad Rousta \n"
 "Language-Team: Persian 
(http://www.transifex.com/otf/torproject/language/fa/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 1.3\n"
 "Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #. TRANSLATORS: Please DO NOT translate the following words and/or phrases in
 #. any string (regardless of capitalization and/or punctuation):
@@ -61,7 +62,7 @@ msgstr "تماس"
 
 #: bridgedb/https/templates/bridges.html:35
 msgid "Select All"
-msgstr "انتخاب همه"
+msgstr "گزینش همه"
 
 #: bridgedb/https/templates/bridges.html:40
 msgid "Show QRCode"
@@ -78,7 +79,7 @@ msgstr "QRCode برای خطوط پل خود"
 #: bridgedb/https/templates/bridges.html:67
 #: bridgedb/https/templates/bridges.html:125
 msgid "Uh oh, spaghettios!"
-msgstr "اوه اوه، کنسرو اسپاگتی!"
+msgstr "آخ آخ، اشتباه شد!"
 
 #: bridgedb/https/templates/bridges.html:68
 msgid "It seems there was an error getting your QRCode."
@@ -92,7 +93,7 @@ msgstr "این QRCode شامل خطوط پل خود. اسکن 
آن را با ی
 
 #: bridgedb/https/templates/bridges.html:131
 msgid "There currently aren't any bridges available..."
-msgstr "در حال حاضر هیچ پل ی در دسترس نیست"
+msgstr "هم‌اکنون هیچ پلی در دسترس نیست..."
 
 #: bridgedb/https/templates/bridges.html:132
 #, python-format
@@ -142,7 +143,7 @@ msgstr "%sف%sقط بده به من پل ها را!"
 
 #: bridgedb/https/templates/options.html:51
 msgid "Advanced Options"
-msgstr "گزینه های پیشرفته"
+msgstr "گزینه‌های پیشرفته"
 
 #: bridgedb/https/templates/options.html:86
 msgid "No"
@@ -170,7 +171,7 @@ msgstr "%sد%sریافت پل‌ها"
 
 #: bridgedb/strings.py:43
 msgid "[This is an automated message; please do not reply.]"
-msgstr "[این یک پیام خودکار می باشد، لطفا پاسخ 
ندهید.]"
+msgstr "[این یک پیام خودکار می‌باشد، لطفا پاسخ 
ندهید.]"
 
 #: bridgedb/strings.py:45
 msgid "Here are your bridges:"
@@ -191,7 +192,7 @@ msgstr "دستورات: (ترکیب دستورات برای 
مشخص کردن گ
 #. TRANSLATORS: Please DO NOT translate the word "BridgeDB".
 #: bridgedb/strings.py:53
 msgid "Welcome to BridgeDB!"
-msgstr "به BridgeDB خوش آمدید!"
+msgstr "به BridgeDB خوش‌آمدید!"
 
 #. TRANSLATORS: Please DO NOT translate the words "transport" or "TYPE".
 #: bridgedb/strings.py:55
@@ -205,11 +206,11 @@ msgstr "سلام،  %s!"
 
 #: bridgedb/strings.py:57
 msgid "Hello, friend!"
-msgstr "سلام دوست من!"
+msgstr "سلام دوستم!"
 
 #: bridgedb/strings.py:58 bridgedb/https/templates/base.html:90
 msgid "Public Keys"
-msgstr "Public Key ها"
+msgstr "کلیدهای عمومی"
 
 #. TRANSLATORS: This string will end up saying something like:
 #. "This email was generated with rainbows, unicorns, and sparkles
@@ -219,7 +220,7 @@ msgstr "Public Key ها"
 msgid ""
 "This email was generated with rainbows, unicorns, and sparkles\n"
 "for %s on %s at %s."
-msgstr "این ایمیل با رنگین کمان ها، اسب های 
تکشاخ و زرق و برق برای  %s بر  %s و در  %s تولید 
شده است."
+msgstr "این ایمیل با رنگین‌کمان‌ها، اسب‌های 
تکشاخ و زرق و برق برای  %s بر  %s و در  %s تولید 
شده است."
 
 #. TRANSLATORS: Please DO NOT translate "BridgeDB".
 #. TRANSLATORS: Please DO NOT translate "Pluggable Transports".
@@ -280,7 +281,7 @@ msgstr "یک طریق دیگری که میتوانید 
پلها را بگیری
 
 #: bridgedb/strings.py:115
 msgid "My bridges don't work! I need help!"
-msgstr "به کمک احتیاج دارم! پل های من کار نم
ی‌کنند!"
+msgstr "به کمک احتیاج 

[tor-commits] [translation/bridgedb_completed] Update translations for bridgedb_completed

2018-08-07 Thread translation
commit 8b6ed25fa649f2e543dab37dfc7d95cdbea4990d
Author: Translation commit bot 
Date:   Tue Aug 7 07:45:09 2018 +

Update translations for bridgedb_completed
---
 fa/LC_MESSAGES/bridgedb.po | 33 +
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/fa/LC_MESSAGES/bridgedb.po b/fa/LC_MESSAGES/bridgedb.po
index ab76fa6c5..e676b1967 100644
--- a/fa/LC_MESSAGES/bridgedb.po
+++ b/fa/LC_MESSAGES/bridgedb.po
@@ -10,6 +10,7 @@
 # Ehsan Ab , 2015
 # NoProfile, 2014-2015
 # johnholzer , 2014
+# Mehrad Rousta , 2018
 # Mohammad Hossein , 2014
 # perspolis , 2011
 # Setareh , 2014
@@ -18,15 +19,15 @@ msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB=bridgedb-reported,msgid=isis,sysrqb=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2018-04-12 18:54+\n"
-"Last-Translator: Marzieh Behboodi \n"
+"PO-Revision-Date: 2018-08-07 07:30+\n"
+"Last-Translator: Mehrad Rousta \n"
 "Language-Team: Persian 
(http://www.transifex.com/otf/torproject/language/fa/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 1.3\n"
 "Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #. TRANSLATORS: Please DO NOT translate the following words and/or phrases in
 #. any string (regardless of capitalization and/or punctuation):
@@ -61,7 +62,7 @@ msgstr "تماس"
 
 #: bridgedb/https/templates/bridges.html:35
 msgid "Select All"
-msgstr "انتخاب همه"
+msgstr "گزینش همه"
 
 #: bridgedb/https/templates/bridges.html:40
 msgid "Show QRCode"
@@ -78,7 +79,7 @@ msgstr "QRCode برای خطوط پل خود"
 #: bridgedb/https/templates/bridges.html:67
 #: bridgedb/https/templates/bridges.html:125
 msgid "Uh oh, spaghettios!"
-msgstr "اوه اوه، کنسرو اسپاگتی!"
+msgstr "آخ آخ، اشتباه شد!"
 
 #: bridgedb/https/templates/bridges.html:68
 msgid "It seems there was an error getting your QRCode."
@@ -92,7 +93,7 @@ msgstr "این QRCode شامل خطوط پل خود. اسکن 
آن را با ی
 
 #: bridgedb/https/templates/bridges.html:131
 msgid "There currently aren't any bridges available..."
-msgstr "در حال حاضر هیچ پل ی در دسترس نیست"
+msgstr "هم‌اکنون هیچ پلی در دسترس نیست..."
 
 #: bridgedb/https/templates/bridges.html:132
 #, python-format
@@ -142,7 +143,7 @@ msgstr "%sف%sقط بده به من پل ها را!"
 
 #: bridgedb/https/templates/options.html:51
 msgid "Advanced Options"
-msgstr "گزینه های پیشرفته"
+msgstr "گزینه‌های پیشرفته"
 
 #: bridgedb/https/templates/options.html:86
 msgid "No"
@@ -170,7 +171,7 @@ msgstr "%sد%sریافت پل‌ها"
 
 #: bridgedb/strings.py:43
 msgid "[This is an automated message; please do not reply.]"
-msgstr "[این یک پیام خودکار می باشد، لطفا پاسخ 
ندهید.]"
+msgstr "[این یک پیام خودکار می‌باشد، لطفا پاسخ 
ندهید.]"
 
 #: bridgedb/strings.py:45
 msgid "Here are your bridges:"
@@ -191,7 +192,7 @@ msgstr "دستورات: (ترکیب دستورات برای 
مشخص کردن گ
 #. TRANSLATORS: Please DO NOT translate the word "BridgeDB".
 #: bridgedb/strings.py:53
 msgid "Welcome to BridgeDB!"
-msgstr "به BridgeDB خوش آمدید!"
+msgstr "به BridgeDB خوش‌آمدید!"
 
 #. TRANSLATORS: Please DO NOT translate the words "transport" or "TYPE".
 #: bridgedb/strings.py:55
@@ -205,11 +206,11 @@ msgstr "سلام،  %s!"
 
 #: bridgedb/strings.py:57
 msgid "Hello, friend!"
-msgstr "سلام دوست من!"
+msgstr "سلام دوستم!"
 
 #: bridgedb/strings.py:58 bridgedb/https/templates/base.html:90
 msgid "Public Keys"
-msgstr "Public Key ها"
+msgstr "کلیدهای عمومی"
 
 #. TRANSLATORS: This string will end up saying something like:
 #. "This email was generated with rainbows, unicorns, and sparkles
@@ -219,7 +220,7 @@ msgstr "Public Key ها"
 msgid ""
 "This email was generated with rainbows, unicorns, and sparkles\n"
 "for %s on %s at %s."
-msgstr "این ایمیل با رنگین کمان ها، اسب های 
تکشاخ و زرق و برق برای  %s بر  %s و در  %s تولید 
شده است."
+msgstr "این ایمیل با رنگین‌کمان‌ها، اسب‌های 
تکشاخ و زرق و برق برای  %s بر  %s و در  %s تولید 
شده است."
 
 #. TRANSLATORS: Please DO NOT translate "BridgeDB".
 #. TRANSLATORS: Please DO NOT translate "Pluggable Transports".
@@ -280,7 +281,7 @@ msgstr "یک طریق دیگری که میتوانید 
پلها را بگیری
 
 #: bridgedb/strings.py:115
 msgid "My bridges don't work! I need help!"
-msgstr "به کمک احتیاج دارم! پل های من کار نم
ی‌کنند!"
+msgstr "به کمک