[tor-commits] [translation/tails-greeter] Update translations for tails-greeter

2017-06-21 Thread translation
commit b82878474074be4402cc781bd02444ec512d5415
Author: Translation commit bot 
Date:   Thu Jun 22 05:45:40 2017 +

Update translations for tails-greeter
---
 el/el.po | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/el/el.po b/el/el.po
index 194201b..7fd3beb 100644
--- a/el/el.po
+++ b/el/el.po
@@ -17,7 +17,7 @@ msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2017-06-10 12:27+0200\n"
-"PO-Revision-Date: 2017-06-20 05:28+\n"
+"PO-Revision-Date: 2017-06-22 05:24+\n"
 "Last-Translator: ilias_ \n"
 "Language-Team: Greek (http://www.transifex.com/otf/torproject/language/el/)\n"
 "MIME-Version: 1.0\n"
@@ -28,18 +28,18 @@ msgstr ""
 
 #: ../data/greeter.ui.h:1
 msgid "Administration Password"
-msgstr ""
+msgstr "Κωδικός διαχειριστή"
 
 #: ../data/greeter.ui.h:2
 msgid ""
 "Set up an administration password if you need to perform administrative "
 "tasks. Otherwise, the administration password is disabled for better "
 "security."
-msgstr ""
+msgstr "ΠάνωΌρισε ένα κωδικό διαχειριστή εάν 
χρειάζεται να πραγματοποιηθούν διεργασίες 
διχειρισμού. Διαφορετικά ο κωδικός 
διαχειριστή είναι απενεργοποιημένος για 
περισσότερη ασφάλεια."
 
 #: ../data/greeter.ui.h:3
 msgid "Enter an administration password"
-msgstr ""
+msgstr "Γράψε τον κωδικό διαχειριστή"
 
 #: ../data/greeter.ui.h:4
 msgid "Confirm"
@@ -47,11 +47,11 @@ msgstr "Επιβεβαίωση"
 
 #: ../data/greeter.ui.h:5
 msgid "Confirm your administration password"
-msgstr ""
+msgstr "Επιβεβαίωσε τον κωδικό διαχειριστή"
 
 #: ../data/greeter.ui.h:6
 msgid "Disable"
-msgstr ""
+msgstr "Απενεργοοίηση"
 
 #. This string will never be displayed in the 1st version of the greeter.
 #: ../data/greeter.ui.h:8

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


[tor-commits] [tor/master] make assign_onionskin_to_cpuworker failure case more clear

2017-06-21 Thread arma
commit 005500e14d5a956601feb94712ea86e810d557f7
Author: Roger Dingledine 
Date:   Wed Jun 21 17:42:10 2017 -0400

make assign_onionskin_to_cpuworker failure case more clear

now it looks like the other time we call it
---
 src/or/cpuworker.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 1013fa5..06d45f9 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -474,7 +474,7 @@ queue_pending_tasks(void)
 if (!circ)
   return;
 
-if (assign_onionskin_to_cpuworker(circ, onionskin))
+if (assign_onionskin_to_cpuworker(circ, onionskin) < 0)
   log_info(LD_OR,"assign_to_cpuworker failed. Ignoring.");
   }
 }

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


[tor-commits] [translation/tor-browser-manual] Update translations for tor-browser-manual

2017-06-21 Thread translation
commit 2f7fd8637436485fbdb9f180cede63b889d9f053
Author: Translation commit bot 
Date:   Wed Jun 21 20:48:32 2017 +

Update translations for tor-browser-manual
---
 hy/hy.po | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/hy/hy.po b/hy/hy.po
index 087f26a..5cf2f99 100644
--- a/hy/hy.po
+++ b/hy/hy.po
@@ -1,12 +1,13 @@
 # Translators:
 # Hrach Mkrtchyan , 2016
 # Tor Project , 2016
+# Sarkis Andreyan , 2017
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "POT-Creation-Date: 2016-12-06 16:36-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Tor Project , 
2016\n"
+"Last-Translator: Sarkis Andreyan , 2017\n"
 "Language-Team: Armenian (https://www.transifex.com/otf/teams/1519/hy/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -17,7 +18,7 @@ msgstr ""
 #. Put one translator per line, in the form NAME , YEAR1, YEAR2
 msgctxt "_"
 msgid "translator-credits"
-msgstr ""
+msgstr "թարգմանչի-տվալներ"
 
 #: about-tor-browser.page:7
 msgid "Learn what Tor Browser can do to protect your privacy and anonymity"

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


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

2017-06-21 Thread translation
commit e37dd22ac9af6702748e7ab7d02f02cac62a8e24
Author: Translation commit bot 
Date:   Wed Jun 21 20:48:26 2017 +

Update translations for exoneratorproperties
---
 hy/exonerator.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hy/exonerator.properties b/hy/exonerator.properties
index 9a9a321..025e3bd 100644
--- a/hy/exonerator.properties
+++ b/hy/exonerator.properties
@@ -2,7 +2,7 @@ form.explanation=Enter an IP address and date to find out 
whether that address w
 form.ip.label=IP address
 form.timestamp.label=Date
 form.search.label=Search
-summary.heading=Summary
+summary.heading=Ամփոփում
 summary.serverproblem.dbnoconnect.title=Server problem
 summary.serverproblem.dbnoconnect.body.text=Unable to connect to the database. 
Please try again later. If this problem persists, please %s\!
 summary.serverproblem.dbnoconnect.body.link=let us know

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


[tor-commits] [tor/master] Extract channel_do_open_actions() from non-open _change_state cases

2017-06-21 Thread nickm
commit 1c0a2335cd27ed4f4a61f99ce19b5ba08639eeff
Author: Nick Mathewson 
Date:   Sun Mar 26 19:33:44 2017 +0200

Extract channel_do_open_actions() from non-open _change_state cases

This reduces the size of the largest SCC in the callgraph by 30
functions, from 58 to 28.
---
 changes/ticket22608   |  6 ++
 src/or/channel.c  | 47 +--
 src/or/channel.h  |  1 +
 src/or/channeltls.c   |  2 +-
 src/test/test_channel.c   | 30 +++---
 src/test/test_scheduler.c |  4 ++--
 6 files changed, 58 insertions(+), 32 deletions(-)

diff --git a/changes/ticket22608 b/changes/ticket22608
new file mode 100644
index 000..5aa9db2
--- /dev/null
+++ b/changes/ticket22608
@@ -0,0 +1,6 @@
+  o Code simplification and refactoring:
+- Extract the code for handling newly-open channels into a separate
+  function from the general code to handle channel state transitions.
+  This change simplifies our callgraph, reducing the size of the largest
+  strongly connected component by roughly a factor of two.
+  Closes ticket 22608
diff --git a/src/or/channel.c b/src/or/channel.c
index e79fc07..68ebc4d 100644
--- a/src/or/channel.c
+++ b/src/or/channel.c
@@ -1972,8 +1972,8 @@ channel_write_var_cell(channel_t *chan, var_cell_t 
*var_cell)
  * are appropriate to the state transition in question.
  */
 
-void
-channel_change_state(channel_t *chan, channel_state_t to_state)
+static void
+channel_change_state_(channel_t *chan, channel_state_t to_state)
 {
   channel_state_t from_state;
   unsigned char was_active, is_active;
@@ -2092,18 +2092,8 @@ channel_change_state(channel_t *chan, channel_state_t 
to_state)
 estimated_total_queue_size += chan->bytes_in_queue;
   }
 
-  /* Tell circuits if we opened and stuff */
-  if (to_state == CHANNEL_STATE_OPEN) {
-channel_do_open_actions(chan);
-chan->has_been_open = 1;
-
-/* Check for queued cells to process */
-if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))
-  channel_process_cells(chan);
-if (! TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue))
-  channel_flush_cells(chan);
-  } else if (to_state == CHANNEL_STATE_CLOSED ||
- to_state == CHANNEL_STATE_ERROR) {
+  if (to_state == CHANNEL_STATE_CLOSED ||
+  to_state == CHANNEL_STATE_ERROR) {
 /* Assert that all queues are empty */
 tor_assert(TOR_SIMPLEQ_EMPTY(&chan->incoming_queue));
 tor_assert(TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue));
@@ -2111,6 +2101,35 @@ channel_change_state(channel_t *chan, channel_state_t 
to_state)
 }
 
 /**
+ * As channel_change_state_, but change the state to any state but open.
+ */
+void
+channel_change_state(channel_t *chan, channel_state_t to_state)
+{
+  tor_assert(to_state != CHANNEL_STATE_OPEN);
+  channel_change_state_(chan, to_state);
+}
+
+/**
+ * As channel_change_state, but change the state to open.
+ */
+void
+channel_change_state_open(channel_t *chan)
+{
+  channel_change_state_(chan, CHANNEL_STATE_OPEN);
+
+  /* Tell circuits if we opened and stuff */
+  channel_do_open_actions(chan);
+  chan->has_been_open = 1;
+
+  /* Check for queued cells to process */
+  if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))
+channel_process_cells(chan);
+  if (! TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue))
+channel_flush_cells(chan);
+}
+
+/**
  * Change channel listener state
  *
  * This internal and subclass use only function is used to change channel
diff --git a/src/or/channel.h b/src/or/channel.h
index 33dceb1..803ab6c 100644
--- a/src/or/channel.h
+++ b/src/or/channel.h
@@ -436,6 +436,7 @@ void channel_listener_free(channel_listener_t *chan_l);
 /* State/metadata setters */
 
 void channel_change_state(channel_t *chan, channel_state_t to_state);
+void channel_change_state_open(channel_t *chan);
 void channel_clear_identity_digest(channel_t *chan);
 void channel_clear_remote_end(channel_t *chan);
 void channel_mark_local(channel_t *chan);
diff --git a/src/or/channeltls.c b/src/or/channeltls.c
index 9d9e744..300304f 100644
--- a/src/or/channeltls.c
+++ b/src/or/channeltls.c
@@ -979,7 +979,7 @@ channel_tls_handle_state_change_on_orconn(channel_tls_t 
*chan,
  * We can go to CHANNEL_STATE_OPEN from CHANNEL_STATE_OPENING or
  * CHANNEL_STATE_MAINT on this.
  */
-channel_change_state(base_chan, CHANNEL_STATE_OPEN);
+channel_change_state_open(base_chan);
 /* We might have just become writeable; check and tell the scheduler */
 if (connection_or_num_cells_writeable(conn) > 0) {
   scheduler_channel_wants_writes(base_chan);
diff --git a/src/test/test_channel.c b/src/test/test_channel.c
index f5999b8..347aca7 100644
--- a/src/test/test_channel.c
+++ b/src/test/test_channel.c
@@ -811,7 +811,7 @@ test_channel_incoming(void *arg)
   tt_assert(ch->registered);
 
   /* Open it */
-  channel_change_state(ch, CHANNEL_STATE_OPEN);
+  channel_change_state_open(ch);
   tt_int_op(ch->state, ==, CHANNEL_STATE_OPEN);
 
   /* 

[tor-commits] [tor/master] Merge branch 'callgraph_reduction_v2'

2017-06-21 Thread nickm
commit 3a8a92fddd7a21b8e6b0b5a463e86639f1d04fc8
Merge: 5d3f484 1c0a233
Author: Nick Mathewson 
Date:   Wed Jun 21 16:47:55 2017 -0400

Merge branch 'callgraph_reduction_v2'

 changes/ticket22608   |  6 ++
 src/or/channel.c  | 47 +--
 src/or/channel.h  |  1 +
 src/or/channeltls.c   |  2 +-
 src/test/test_channel.c   | 30 +++---
 src/test/test_scheduler.c |  4 ++--
 6 files changed, 58 insertions(+), 32 deletions(-)

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


[tor-commits] [translation/tor-messenger-authproperties_completed] Update translations for tor-messenger-authproperties_completed

2017-06-21 Thread translation
commit 68c9a2feb82d4b620156c4a5a2d53b5e92ef066c
Author: Translation commit bot 
Date:   Wed Jun 21 20:47:41 2017 +

Update translations for tor-messenger-authproperties_completed
---
 hy/auth.properties | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/hy/auth.properties b/hy/auth.properties
new file mode 100644
index 000..0d1818d
--- /dev/null
+++ b/hy/auth.properties
@@ -0,0 +1,7 @@
+auth.title=Հաստատել %S-ի ինքնությունը
+auth.yourFingerprint=Մատնահետք Ձեզ համար, %S.\n%S
+auth.theirFingerprint=Վկայված մատնահետք %S-ի համար.\n%S
+auth.help=Կոնտակտի ինքնության հաստատումը օ
գնում է համոզվել, որ այն մարդը, ում հետ Դուք 
խոսում եք, իրո՞ք նա է, ով ներկայանում է:
+auth.helpTitle=Հաստատման օգնություն
+auth.question=Այս հարցը Ձեզ է 
հղել.\n\n%S\n\nՄուտքագրեք գաղտնի պատասխանը 
այստեղ (մեծատառ-փոքրատառերը որոշիչ են).
+auth.secret=Մուտքագրեք գաղտնի հարցն այստեղ.

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


[tor-commits] [translation/tor-messenger-authproperties] Update translations for tor-messenger-authproperties

2017-06-21 Thread translation
commit 1625bba865d6207a36687c24d9390c474db403a4
Author: Translation commit bot 
Date:   Wed Jun 21 20:47:45 2017 +

Update translations for tor-messenger-authproperties
---
 hy/auth.properties | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hy/auth.properties b/hy/auth.properties
index 470262e..0d1818d 100644
--- a/hy/auth.properties
+++ b/hy/auth.properties
@@ -1,7 +1,7 @@
 auth.title=Հաստատել %S-ի ինքնությունը
 auth.yourFingerprint=Մատնահետք Ձեզ համար, %S.\n%S
-auth.theirFingerprint=Purported fingerprint for %S:\n%S
-auth.help=Verifying a contact's identity helps ensure that the person you are 
talking to is who they claim to be.
+auth.theirFingerprint=Վկայված մատնահետք %S-ի համար.\n%S
+auth.help=Կոնտակտի ինքնության հաստատումը օ
գնում է համոզվել, որ այն մարդը, ում հետ Դուք 
խոսում եք, իրո՞ք նա է, ով ներկայանում է:
 auth.helpTitle=Հաստատման օգնություն
 auth.question=Այս հարցը Ձեզ է 
հղել.\n\n%S\n\nՄուտքագրեք գաղտնի պատասխանը 
այստեղ (մեծատառ-փոքրատառերը որոշիչ են).
-auth.secret=Մուտքագրեք գաղտնաբառն այստեղ.
+auth.secret=Մուտքագրեք գաղտնի հարցն այստեղ.

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


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

2017-06-21 Thread translation
commit 4430a007a8fcd3d21c33ab76861bb6facc51cbc4
Author: Translation commit bot 
Date:   Wed Jun 21 20:45:20 2017 +

Update translations for whisperback_completed
---
 hy/hy.po | 215 +++
 1 file changed, 215 insertions(+)

diff --git a/hy/hy.po b/hy/hy.po
new file mode 100644
index 000..86dcbc6
--- /dev/null
+++ b/hy/hy.po
@@ -0,0 +1,215 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+# Sarkis Andreyan , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: The Tor Project\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-03-20 12:09+\n"
+"PO-Revision-Date: 2017-06-21 20:42+\n"
+"Last-Translator: Sarkis Andreyan \n"
+"Language-Team: Armenian 
(http://www.transifex.com/otf/torproject/language/hy/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hy\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. XXX use a better exception
+#: ../whisperBack/whisperback.py:56
+#, python-format
+msgid "Invalid contact email: %s"
+msgstr "Սխալ կոնտակտային էլ. փոստ. %s"
+
+#: ../whisperBack/whisperback.py:73
+#, python-format
+msgid "Invalid contact OpenPGP key: %s"
+msgstr "Սխալ կոնտակտային OpenPGP բանալի. %s"
+
+#: ../whisperBack/whisperback.py:75
+msgid "Invalid contact OpenPGP public key block"
+msgstr "Սխալ կոնտակտային OpenPGP բաց բանալու բլոկ"
+
+#: ../whisperBack/exceptions.py:41
+#, python-format
+msgid ""
+"The %s variable was not found in any of the configuration files "
+"/etc/whisperback/config.py, ~/.whisperback/config.py, ./config.py"
+msgstr "%s փոփոխականը չի գտնվել կարգավորման 
ֆայլերից ոչ մեկում՝ /etc/whisperback/config.py, 
~/.whisperback/config.py, ./config.py"
+
+#: ../whisperBack/gui.py:110
+msgid "Name of the affected software"
+msgstr "Ախտահարված ծրագրի անունը"
+
+#: ../whisperBack/gui.py:112
+msgid "Exact steps to reproduce the error"
+msgstr "Սխալմունքը ստանալու կոնկրետ քայլերը"
+
+#: ../whisperBack/gui.py:114
+msgid "Actual result and description of the error"
+msgstr "Վերջնական ադյունքը և սխալի 
նկարագրությունը"
+
+#: ../whisperBack/gui.py:116
+msgid "Desired result"
+msgstr "Նախընտրելի արդյունք"
+
+#: ../whisperBack/gui.py:152
+msgid "Unable to load a valid configuration."
+msgstr "Չստացվեց բեռնել ճշգրիտ 
կարգավորումներ:"
+
+#: ../whisperBack/gui.py:218
+msgid "Sending mail..."
+msgstr "Ուղարկվում է էլ. նամակը..."
+
+#: ../whisperBack/gui.py:219
+msgid "Sending mail"
+msgstr "Ուղարկվում է էլ. նամակը"
+
+#. pylint: disable=C0301
+#: ../whisperBack/gui.py:221
+msgid "This could take a while..."
+msgstr "Սա կարող մի փոքր շատ տևել..."
+
+#: ../whisperBack/gui.py:236
+msgid "The contact email adress doesn't seem valid."
+msgstr "Կոնտակտի էլ. հասցեն կարծես թե ճիշտ չէ:"
+
+#: ../whisperBack/gui.py:253
+msgid "Unable to send the mail: SMTP error."
+msgstr "Չստացվեց ուղարկել էլ. նամակը. SMTP 
սխալմունք:"
+
+#: ../whisperBack/gui.py:255
+msgid "Unable to connect to the server."
+msgstr "Չստացվեց կապվել սերվերին:"
+
+#: ../whisperBack/gui.py:257
+msgid "Unable to create or to send the mail."
+msgstr "Չստացվեց ստեղծել կամ ուղարկել էլ. 
Õ¶Õ¡Õ´Õ¡Õ¯Õ¨:"
+
+#: ../whisperBack/gui.py:260
+msgid ""
+"\n"
+"\n"
+"The bug report could not be sent, likely due to network problems. Please try 
to reconnect to the network and click send again.\n"
+"\n"
+"If it does not work, you will be offered to save the bug report."
+msgstr "\n\nՍխալի զեկույցը չստացվեց ուղարկել, 
կարծես թե ցանցի խնդիրներ պատճառով: Խնդրում 
ենք վերամիանալ ցանցին և սեղմել 
«Ուղարկել»-ը նորից:\n\nԵթե դա էլ չաշխատի՝ Ձեզ 
կառաջարկվի պահպանել սխալի զեկույցը:"
+
+#: ../whisperBack/gui.py:273
+msgid "Your message has been sent."
+msgstr "Ձեր նամակն ուղարկվել է:"
+
+#: ../whisperBack/gui.py:280
+msgid "An error occured during encryption."
+msgstr "Սխալմունք տեղի ունեցավ կոդավորման 
ընթացքում:"
+
+#: ../whisperBack/gui.py:300
+#, python-format
+msgid "Unable to save %s."
+msgstr "Չստացվեց պահպանել %s-ը:"
+
+#: ../whisperBack/gui.py:323
+#, python-format
+msgid ""
+"The bug report could not be sent, likely due to network problems.\n"
+"\n"
+"As a work-around you can save the bug report as a file on a USB drive and try 
to send it 

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

2017-06-21 Thread translation
commit 68ed054875e4269b78d540c1e01301ab5f8eb161
Author: Translation commit bot 
Date:   Wed Jun 21 20:45:16 2017 +

Update translations for whisperback
---
 hy/hy.po | 85 
 1 file changed, 43 insertions(+), 42 deletions(-)

diff --git a/hy/hy.po b/hy/hy.po
index 1cae452..86dcbc6 100644
--- a/hy/hy.po
+++ b/hy/hy.po
@@ -3,13 +3,14 @@
 # This file is distributed under the same license as the PACKAGE package.
 # 
 # Translators:
+# Sarkis Andreyan , 2017
 msgid ""
 msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2017-03-20 12:09+\n"
-"PO-Revision-Date: 2017-03-21 08:24+\n"
-"Last-Translator: carolyn \n"
+"PO-Revision-Date: 2017-06-21 20:42+\n"
+"Last-Translator: Sarkis Andreyan \n"
 "Language-Team: Armenian 
(http://www.transifex.com/otf/torproject/language/hy/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,72 +22,72 @@ msgstr ""
 #: ../whisperBack/whisperback.py:56
 #, python-format
 msgid "Invalid contact email: %s"
-msgstr ""
+msgstr "Սխալ կոնտակտային էլ. փոստ. %s"
 
 #: ../whisperBack/whisperback.py:73
 #, python-format
 msgid "Invalid contact OpenPGP key: %s"
-msgstr ""
+msgstr "Սխալ կոնտակտային OpenPGP բանալի. %s"
 
 #: ../whisperBack/whisperback.py:75
 msgid "Invalid contact OpenPGP public key block"
-msgstr ""
+msgstr "Սխալ կոնտակտային OpenPGP բաց բանալու բլոկ"
 
 #: ../whisperBack/exceptions.py:41
 #, python-format
 msgid ""
 "The %s variable was not found in any of the configuration files "
 "/etc/whisperback/config.py, ~/.whisperback/config.py, ./config.py"
-msgstr ""
+msgstr "%s փոփոխականը չի գտնվել կարգավորման 
ֆայլերից ոչ մեկում՝ /etc/whisperback/config.py, 
~/.whisperback/config.py, ./config.py"
 
 #: ../whisperBack/gui.py:110
 msgid "Name of the affected software"
-msgstr ""
+msgstr "Ախտահարված ծրագրի անունը"
 
 #: ../whisperBack/gui.py:112
 msgid "Exact steps to reproduce the error"
-msgstr ""
+msgstr "Սխալմունքը ստանալու կոնկրետ քայլերը"
 
 #: ../whisperBack/gui.py:114
 msgid "Actual result and description of the error"
-msgstr ""
+msgstr "Վերջնական ադյունքը և սխալի 
նկարագրությունը"
 
 #: ../whisperBack/gui.py:116
 msgid "Desired result"
-msgstr ""
+msgstr "Նախընտրելի արդյունք"
 
 #: ../whisperBack/gui.py:152
 msgid "Unable to load a valid configuration."
-msgstr ""
+msgstr "Չստացվեց բեռնել ճշգրիտ 
կարգավորումներ:"
 
 #: ../whisperBack/gui.py:218
 msgid "Sending mail..."
-msgstr ""
+msgstr "Ուղարկվում է էլ. նամակը..."
 
 #: ../whisperBack/gui.py:219
 msgid "Sending mail"
-msgstr ""
+msgstr "Ուղարկվում է էլ. նամակը"
 
 #. pylint: disable=C0301
 #: ../whisperBack/gui.py:221
 msgid "This could take a while..."
-msgstr ""
+msgstr "Սա կարող մի փոքր շատ տևել..."
 
 #: ../whisperBack/gui.py:236
 msgid "The contact email adress doesn't seem valid."
-msgstr ""
+msgstr "Կոնտակտի էլ. հասցեն կարծես թե ճիշտ չէ:"
 
 #: ../whisperBack/gui.py:253
 msgid "Unable to send the mail: SMTP error."
-msgstr ""
+msgstr "Չստացվեց ուղարկել էլ. նամակը. SMTP 
սխալմունք:"
 
 #: ../whisperBack/gui.py:255
 msgid "Unable to connect to the server."
-msgstr ""
+msgstr "Չստացվեց կապվել սերվերին:"
 
 #: ../whisperBack/gui.py:257
 msgid "Unable to create or to send the mail."
-msgstr ""
+msgstr "Չստացվեց ստեղծել կամ ուղարկել էլ. 
Õ¶Õ¡Õ´Õ¡Õ¯Õ¨:"
 
 #: ../whisperBack/gui.py:260
 msgid ""
@@ -95,20 +96,20 @@ msgid ""
 "The bug report could not be sent, likely due to network problems. Please try 
to reconnect to the network and click send again.\n"
 "\n"
 "If it does not work, you will be offered to save the bug report."
-msgstr ""
+msgstr "\n\nՍխալի զեկույցը չստացվեց ուղարկել, 
կարծես թե ցանցի խնդիրներ պատճառով: Խնդրում 
ենք վերամիանալ ցանցին և սեղմել 
«Ուղարկել»-ը նորից:\n\nԵթե դա էլ չաշխատի՝ Ձեզ 
կառաջարկվի պահպանել սխալի զեկույցը:"
 
 #: ../whisperBack/gui.py:273
 msgid "Your message has been sent."
-msgstr ""
+msgstr "Ձեր նամակն ուղարկվել է:"
 
 #: ../whisperBack/gui.py:280
 msgid "An error occured during encryption."
-msgstr ""
+msgstr "Սխալմունք տեղի ունեցավ կոդավորման 
ընթացքում:"
 
 #: ../whisperBack/gui.py:300
 #, python-format
 msgid "Unable to save %s."
-msgstr ""
+msgstr "Չստացվեց պահպանել %s-ը:"
 
 #: ../whisperBack/gui.py:323
 #, python-format
@@ -118,39 +119,39 @@ msgid ""
 "As a work-around you can s

[tor-commits] [translation/tor-messenger-authproperties] Update translations for tor-messenger-authproperties

2017-06-21 Thread translation
commit 66ebf500d8fb4640f63e333faf6772b72c48e66d
Author: Translation commit bot 
Date:   Wed Jun 21 20:17:49 2017 +

Update translations for tor-messenger-authproperties
---
 hy/auth.properties | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/hy/auth.properties b/hy/auth.properties
index 17410b1..470262e 100644
--- a/hy/auth.properties
+++ b/hy/auth.properties
@@ -1,7 +1,7 @@
-auth.title=Verify %S's identity
-auth.yourFingerprint=Fingerprint for you, %S:\n%S
+auth.title=Հաստատել %S-ի ինքնությունը
+auth.yourFingerprint=Մատնահետք Ձեզ համար, %S.\n%S
 auth.theirFingerprint=Purported fingerprint for %S:\n%S
 auth.help=Verifying a contact's identity helps ensure that the person you are 
talking to is who they claim to be.
-auth.helpTitle=Verification help
-auth.question=This is the question asked by your contact:\n\n%S\n\nEnter 
secret answer here (case sensitive):
-auth.secret=Enter secret here:
+auth.helpTitle=Հաստատման օգնություն
+auth.question=Այս հարցը Ձեզ է 
հղել.\n\n%S\n\nՄուտքագրեք գաղտնի պատասխանը 
այստեղ (մեծատառ-փոքրատառերը որոշիչ են).
+auth.secret=Մուտքագրեք գաղտնաբառն այստեղ.

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


[tor-commits] [translation/tor-messenger-authdtd] Update translations for tor-messenger-authdtd

2017-06-21 Thread translation
commit 06fcb0a7c141e743289c76b2eabe2c1bc57eebbd
Author: Translation commit bot 
Date:   Wed Jun 21 20:17:40 2017 +

Update translations for tor-messenger-authdtd
---
 hy/auth.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hy/auth.dtd b/hy/auth.dtd
index 193ac7a..4d87e28 100644
--- a/hy/auth.dtd
+++ b/hy/auth.dtd
@@ -17,5 +17,5 @@
 
 
 
-
+
 
\ No newline at end of file

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


[tor-commits] [translation/torbutton-abouttorproperties_completed] Update translations for torbutton-abouttorproperties_completed

2017-06-21 Thread translation
commit 60fa33ba1ee562a4c30a97666ba5dcb9c76930d0
Author: Translation commit bot 
Date:   Wed Jun 21 20:17:20 2017 +

Update translations for torbutton-abouttorproperties_completed
---
 hy/abouttor.properties | 9 +
 1 file changed, 9 insertions(+)

diff --git a/hy/abouttor.properties b/hy/abouttor.properties
new file mode 100644
index 000..ee8789a
--- /dev/null
+++ b/hy/abouttor.properties
@@ -0,0 +1,9 @@
+# Copyright (c) 2014, The Tor Project, Inc.
+# See LICENSE for licensing information.
+# vim: set sw=2 sts=2 ts=8 et:
+
+aboutTor.searchDDG.privacy=Որոնեք անվտանգ DuckDuckGo-ով:
+# The following string is a link which replaces %1$S above.
+aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
+# The following string is a link which replaces %2$S above.
+aboutTor.searchDDG.search.link=https://duckduckgo.com/

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


[tor-commits] [translation/torbutton-abouttorproperties] Update translations for torbutton-abouttorproperties

2017-06-21 Thread translation
commit 846f3e3add734661574f04b1caa0abbdb1f0d3e0
Author: Translation commit bot 
Date:   Wed Jun 21 20:17:16 2017 +

Update translations for torbutton-abouttorproperties
---
 hy/abouttor.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hy/abouttor.properties b/hy/abouttor.properties
index f9723bf..ee8789a 100644
--- a/hy/abouttor.properties
+++ b/hy/abouttor.properties
@@ -2,7 +2,7 @@
 # See LICENSE for licensing information.
 # vim: set sw=2 sts=2 ts=8 et:
 
-aboutTor.searchDDG.privacy=Search securely with DuckDuckGo.
+aboutTor.searchDDG.privacy=Որոնեք անվտանգ DuckDuckGo-ով:
 # The following string is a link which replaces %1$S above.
 aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
 # The following string is a link which replaces %2$S above.

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


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

2017-06-21 Thread translation
commit f34c19d9eaad8b8054e506006ab3744bf9a740dd
Author: Translation commit bot 
Date:   Wed Jun 21 20:15:09 2017 +

Update translations for bridgedb_completed
---
 hy/LC_MESSAGES/bridgedb.po | 382 +
 1 file changed, 382 insertions(+)

diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po
new file mode 100644
index 000..e773baa
--- /dev/null
+++ b/hy/LC_MESSAGES/bridgedb.po
@@ -0,0 +1,382 @@
+# Translations template for BridgeDB.
+# Copyright (C) 2015 'The Tor Project, Inc.'
+# This file is distributed under the same license as the BridgeDB project.
+# 
+# Translators:
+# Hrach Mkrtchyan , 2016
+# Sarkis Andreyan , 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: The Tor Project\n"
+"Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n"
+"POT-Creation-Date: 2015-07-25 03:40+\n"
+"PO-Revision-Date: 2017-06-21 20:11+\n"
+"Last-Translator: Sarkis Andreyan \n"
+"Language-Team: Armenian 
(http://www.transifex.com/otf/torproject/language/hy/)\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: hy\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):
+#. "BridgeDB"
+#. "pluggable transport"
+#. "pluggable transports"
+#. "obfs2"
+#. "obfs3"
+#. "scramblesuit"
+#. "fteproxy"
+#. "Tor"
+#. "Tor Browser"
+#: bridgedb/https/server.py:167
+msgid "Sorry! Something went wrong with your request."
+msgstr "Ներեցե՛ք, Ձեր հարցումը սխալ ընթացք 
ստացավ:"
+
+#: bridgedb/https/templates/base.html:79
+msgid "Report a Bug"
+msgstr "Հայտնել սխալի մասին"
+
+#: bridgedb/https/templates/base.html:82
+msgid "Source Code"
+msgstr "ÔµÕ¬Õ¡Õ¯Õ¥Õ¿Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤"
+
+#: bridgedb/https/templates/base.html:85
+msgid "Changelog"
+msgstr "Փոփոխությունների մատյան"
+
+#: bridgedb/https/templates/base.html:88
+msgid "Contact"
+msgstr "Ô¿Õ¡ÕºÕ¾Õ¥Õ¬"
+
+#: bridgedb/https/templates/bridges.html:35
+msgid "Select All"
+msgstr "Ընտրել բոլորը"
+
+#: bridgedb/https/templates/bridges.html:40
+msgid "Show QRCode"
+msgstr "Ցուցադրել QRCode-ը"
+
+#: bridgedb/https/templates/bridges.html:52
+msgid "QRCode for your bridge lines"
+msgstr "QRCode՝ Ձեր bridge line-երի համար"
+
+#. TRANSLATORS: Please translate this into some silly way to say
+#. "There was a problem!" in your language. For example,
+#. for Italian, you might translate this into "Mama mia!",
+#. or for French: "Sacrebleu!". :)
+#: bridgedb/https/templates/bridges.html:67
+#: bridgedb/https/templates/bridges.html:125
+msgid "Uh oh, spaghettios!"
+msgstr "Փֆֆ, մի բան նենց չեղավ:"
+
+#: bridgedb/https/templates/bridges.html:68
+msgid "It seems there was an error getting your QRCode."
+msgstr "Կարծես թե սխալ տեղի ունեցավ Ձեր QRCode-ը 
Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ«Õ½:"
+
+#: bridgedb/https/templates/bridges.html:73
+msgid ""
+"This QRCode contains your bridge lines. Scan it with a QRCode reader to copy"
+" your bridge lines onto mobile and other devices."
+msgstr "Այս QRCode-ը պարունակում է Ձեր bridge line-երը: 
Սկանավորե՛ք այն QRCode-ը կարդացող ծրագրով՝ 
պատճենելու համար Ձեր bridge line-երը շարժական և 
այլ սարքերում:"
+
+#: bridgedb/https/templates/bridges.html:131
+msgid "There currently aren't any bridges available..."
+msgstr "Ô±ÕµÕªÕ´ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¸Õ¹ Õ´Õ« bridge Õ¹Õ¯Õ¡..."
+
+#: bridgedb/https/templates/bridges.html:132
+#, python-format
+msgid ""
+" Perhaps you should try %s going back %s and choosing a different bridge "
+"type!"
+msgstr "Հավանաբար՝ փորձեք %sետ վերադառնալ%s և 
ընտրել ուրիշ bridge-ի տեսակ:"
+
+#: bridgedb/https/templates/index.html:11
+#, python-format
+msgid "Step %s1%s"
+msgstr "Քայլ %s1%s"
+
+#: bridgedb/https/templates/index.html:13
+#, python-format
+msgid "Download %s Tor Browser %s"
+msgstr "Ներբեռնե՛ք %s«Tor Browser»-ը%s"
+
+#: bridgedb/https/templates/index.html:25
+#, python-format
+msgid "Step %s2%s"
+msgstr "Քայլ %s2%s"
+
+#: bridgedb/https/templates/index.html:27
+#, python-format
+msgid "Get %s bridges %s"
+msgstr "Ստացե՛ք %sbridge-ներ%s"
+
+#: bridgedb/https/templates/index.html:36
+#, python-format
+msgid "Step %s3%s"
+msgstr "Քայլ %s3%s"
+
+#: bridgedb/https/templates/index.html:38
+#, python-format
+msgid "Now %s add the bridges to Tor Browser %s"
+msgstr "Այժմ %sավելացրե՛ք bridge-ները «Tor 
Browser»-ին%s:"
+
+#. TRANSLATORS: Please make sure the '%s' surrounding single letters at the
+#. beginning of words are pre

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

2017-06-21 Thread translation
commit 90e16630226f22fdabac6f97d5446954261222f0
Author: Translation commit bot 
Date:   Wed Jun 21 20:15:04 2017 +

Update translations for bridgedb
---
 hy/LC_MESSAGES/bridgedb.po | 26 +-
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po
index 3120657..e773baa 100644
--- a/hy/LC_MESSAGES/bridgedb.po
+++ b/hy/LC_MESSAGES/bridgedb.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2017-06-21 19:42+\n"
+"PO-Revision-Date: 2017-06-21 20:11+\n"
 "Last-Translator: Sarkis Andreyan \n"
 "Language-Team: Armenian 
(http://www.transifex.com/otf/torproject/language/hy/)\n"
 "MIME-Version: 1.0\n"
@@ -178,7 +178,7 @@ msgstr "Դուք գերազանցել եք 
սահմանաչափը, դանդաղ
 #: bridgedb/strings.py:50
 msgid ""
 "COMMANDs: (combine COMMANDs to specify multiple options simultaneously)"
-msgstr ""
+msgstr "COMMAND-ներ (միավորե՛ք COMMAND-ները՝ 
հատկորոշելու համար մի քանի տարբերակներ 
Õ´Õ«Õ¡ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯)."
 
 #. TRANSLATORS: Please DO NOT translate the word "BridgeDB".
 #: bridgedb/strings.py:53
@@ -225,7 +225,7 @@ msgid ""
 "difficult for anyone watching your internet traffic to determine that you 
are\n"
 "using Tor.\n"
 "\n"
-msgstr ""
+msgstr "Bridge DB-ն կարող է տրամադրել bridge-ներ 
որոշակի %sPluggable Transport-ների տեսակներով%s,\nորը 
կարող է օգնել քողարկել Ձեր միացումները Tor-ի 
ցանցին՝ դարձնելով\nՁեր ինտերնետային հոսքին 
հետևելը և Ձեզ բացահայտելը\n ավելի դժվար:\n\n"
 
 #. TRANSLATORS: Please DO NOT translate "Pluggable Transports".
 #: bridgedb/strings.py:79
@@ -233,7 +233,7 @@ msgid ""
 "Some bridges with IPv6 addresses are also available, though some Pluggable\n"
 "Transports aren't IPv6 compatible.\n"
 "\n"
-msgstr ""
+msgstr "Որոշ IPv6 հասցեներով bridge-ներ նույնպես 
հասանելի են, չնայած, որ որոշ Pluggable\nTransport-ներ 
IPv6-Õ°Õ¡Õ´Õ¡Õ¿Õ¥Õ²Õ¥Õ¬Õ« Õ¹Õ¥Õ¶:\n"
 
 #. TRANSLATORS: Please DO NOT translate "BridgeDB".
 #. TRANSLATORS: The phrase "plain-ol'-vanilla" means "plain, boring,
@@ -247,7 +247,7 @@ msgid ""
 "Pluggable Transports %s which maybe doesn't sound as cool, but they can 
still\n"
 "help to circumvent internet censorship in many cases.\n"
 "\n"
-msgstr ""
+msgstr "Հավելենք, որ BridgeDB-ն շատ ունի նաև 
պարզ-հասարակ Bridge-ներ %s առանց որևէ\nPluggable 
Transport-ների, %s որոնք, գուցե, այնքան էլ զիլ չեն 
հնչում, բայց կարող օգնել խուսափել 
հետաքննությունից շատ դեպքերում:\n\n"
 
 #: bridgedb/strings.py:101
 msgid "What are bridges?"
@@ -256,7 +256,7 @@ msgstr "Ի՞նչ են bridge-ները:"
 #: bridgedb/strings.py:102
 #, python-format
 msgid "%s Bridges %s are Tor relays that help you circumvent censorship."
-msgstr ""
+msgstr "%sBridge-ները%s Tor-ի «արգելակներ» են, որոնք 
կօգնեն Ձեր շրջանցել հետաքննումները:"
 
 #: bridgedb/strings.py:107
 msgid "I need an alternative way of getting bridges!"
@@ -268,11 +268,11 @@ msgid ""
 "Another way to get bridges is to send an email to %s. Please note that you 
must\n"
 "send the email using an address from one of the following email providers:\n"
 "%s, %s or %s."
-msgstr ""
+msgstr "Bridge-ներ ստանալու մեկ այլ եղանակ է 
էլեկտրոնային նամակ ուղարկելը %s-ին: Հաշվի 
առեք, որ Դուք\nպետք է ուղարկեք էլեկտրոնային 
նամակը հետևյալ էլ. փոստային ծառայություն 
մատուցողներից որևէ մեկի միջոցով.\n%s,%s կամ %s:"
 
 #: bridgedb/strings.py:115
 msgid "My bridges don't work! I need help!"
-msgstr ""
+msgstr "Իմ bridge-երը չե՛ն աշխատում: Օգնությո՛ւն:"
 
 #. TRANSLATORS: Please DO NOT translate "Tor".
 #: bridgedb/strings.py:117
@@ -288,7 +288,7 @@ msgid ""
 "Try including as much info about your case as you can, including the list 
of\n"
 "bridges and Pluggable Transports you tried to use, your Tor Browser 
version,\n"
 "and any messages which Tor gave out, etc."
-msgstr ""
+msgstr "Փորձեք ներառել որքան հնարավոր է շատ 
տվյալներ Ձեր դեպքի վերաբերյալ, ներառյալ 
այն bridge-ների\nև Pluggable Transport-ների ցանկը, որոնց 
փորձել եք օգտագործել, Ձեր Tor Browser-ի 
տարբերակը,\n ցանկացած Õ¡ÕµÕ

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

2017-06-21 Thread translation
commit c8735602a725a91b500991c8677d7702388e6c99
Author: Translation commit bot 
Date:   Wed Jun 21 19:45:04 2017 +

Update translations for bridgedb
---
 hy/LC_MESSAGES/bridgedb.po | 52 +++---
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po
index b9641e4..3120657 100644
--- a/hy/LC_MESSAGES/bridgedb.po
+++ b/hy/LC_MESSAGES/bridgedb.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2017-06-21 19:14+\n"
+"PO-Revision-Date: 2017-06-21 19:42+\n"
 "Last-Translator: Sarkis Andreyan \n"
 "Language-Team: Armenian 
(http://www.transifex.com/otf/torproject/language/hy/)\n"
 "MIME-Version: 1.0\n"
@@ -49,7 +49,7 @@ msgstr "Փոփոխությունների մատյան"
 
 #: bridgedb/https/templates/base.html:88
 msgid "Contact"
-msgstr ""
+msgstr "Ô¿Õ¡ÕºÕ¾Õ¥Õ¬"
 
 #: bridgedb/https/templates/bridges.html:35
 msgid "Select All"
@@ -61,7 +61,7 @@ msgstr "Ցուցադրել QRCode-ը"
 
 #: bridgedb/https/templates/bridges.html:52
 msgid "QRCode for your bridge lines"
-msgstr ""
+msgstr "QRCode՝ Ձեր bridge line-երի համար"
 
 #. TRANSLATORS: Please translate this into some silly way to say
 #. "There was a problem!" in your language. For example,
@@ -80,7 +80,7 @@ msgstr "Կարծես թե սխալ տեղի ունեցավ 
Ձեր QRCode-ը ստ
 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 "Այս QRCode-ը պարունակում է Ձեր bridge line-երը: 
Սկանավորե՛ք այն QRCode-ը կարդացող ծրագրով՝ 
պատճենելու համար Ձեր bridge line-երը շարժական և 
այլ սարքերում:"
 
 #: bridgedb/https/templates/bridges.html:131
 msgid "There currently aren't any bridges available..."
@@ -183,25 +183,25 @@ msgstr ""
 #. TRANSLATORS: Please DO NOT translate the word "BridgeDB".
 #: bridgedb/strings.py:53
 msgid "Welcome to BridgeDB!"
-msgstr ""
+msgstr "Բարի գալուստ «BridgeDB»:"
 
 #. TRANSLATORS: Please DO NOT translate the words "transport" or "TYPE".
 #: bridgedb/strings.py:55
 msgid "Currently supported transport TYPEs:"
-msgstr ""
+msgstr "Բոլոր սպասարկվող transport TYPE-երը."
 
 #: bridgedb/strings.py:56
 #, python-format
 msgid "Hey, %s!"
-msgstr ""
+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 ""
+msgstr "Public Key-եր"
 
 #. TRANSLATORS: This string will end up saying something like:
 #. "This email was generated with rainbows, unicorns, and sparkles
@@ -211,7 +211,7 @@ msgstr ""
 msgid ""
 "This email was generated with rainbows, unicorns, and sparkles\n"
 "for %s on %s at %s."
-msgstr ""
+msgstr "Այս էլ. նամակը ստեղծել ենք 
ծիածաններով, միաեղջյուրներով ու 
փայլերով\n%s-ի համար, %s-ին, ժամը %s-ին:"
 
 #. TRANSLATORS: Please DO NOT translate "BridgeDB".
 #. TRANSLATORS: Please DO NOT translate "Pluggable Transports".
@@ -251,7 +251,7 @@ msgstr ""
 
 #: bridgedb/strings.py:101
 msgid "What are bridges?"
-msgstr ""
+msgstr "Ի՞նչ են bridge-ները:"
 
 #: bridgedb/strings.py:102
 #, python-format
@@ -260,7 +260,7 @@ msgstr ""
 
 #: bridgedb/strings.py:107
 msgid "I need an alternative way of getting bridges!"
-msgstr ""
+msgstr "Ինձ պետք է bridge-ներ ստանալու ա՛յլ 
Õ¥Õ²Õ¡Õ¶Õ¡Õ¯:"
 
 #: bridgedb/strings.py:108
 #, python-format
@@ -278,7 +278,7 @@ msgstr ""
 #: bridgedb/strings.py:117
 #, python-format
 msgid "If your Tor doesn't work, you should email %s."
-msgstr ""
+msgstr "Եթե Ձեր Tor-ը չի աշխատում, պետք է 
էլեկտրոնային նամակ ուղարկել %s: "
 
 #. TRANSLATORS: Please DO NOT translate "Pluggable Transports".
 #. TRANSLATORS: Please DO NOT translate "Tor Browser".
@@ -292,36 +292,36 @@ msgstr ""
 
 #: bridgedb/strings.py:128
 msgid "Here are your bridge lines:"
-msgstr ""
+msgstr "Ահա Ձեր bridge line-երը."
 
 #: bridgedb/strings.py:129
 msgid "Get Bridges!"
-msgstr ""
+msgstr "Ստացե՛ք Bridge-ներ:"
 
 #: bridgedb/strings.py:133
 msgid "Please select options for bridge type:"
-msgstr ""
+msgstr "Խնդրում ենք ընտրել bridge-ի տեսակի 
տարբերակները."
 
 #: bridgedb/strings.py:134
 msgid "Do you need IPv6 addresses?"
-msgstr ""
+msgstr "Ձեզ պե՞տք են IPv6 հասցեներ:"
 
 #: bridgedb/strings.py:135
 #, python-format
 msgid "Do you need a %s?"
-msgstr ""
+msg

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

2017-06-21 Thread translation
commit 0cfa620d6c9e33b7e13f0107df8026ad8bc0c194
Author: Translation commit bot 
Date:   Wed Jun 21 19:18:26 2017 +

Update translations for exoneratorproperties
---
 hy/exonerator.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hy/exonerator.properties b/hy/exonerator.properties
index cc38b64..9a9a321 100644
--- a/hy/exonerator.properties
+++ b/hy/exonerator.properties
@@ -38,7 +38,7 @@ technicaldetails.colheader.exit=Exit relay
 technicaldetails.nickname.unknown=Unknown
 technicaldetails.exit.unknown=Unknown
 technicaldetails.exit.yes=Yes
-technicaldetails.exit.no=No
+technicaldetails.exit.no=Ոչ
 permanentlink.heading=Permanent link
 footer.abouttor.heading=About Tor
 footer.abouttor.body.text=Tor is an international software project to 
anonymize Internet traffic by %s.  Therefore, if you see traffic from a 
Tor relay, this traffic usually originates from someone using Tor, rather than 
from the relay operator.  The Tor Project and Tor relay operators have no 
records of the traffic that passes over the network and therefore cannot 
provide any information about its origin.  Be sure to %s, and don't 
hesitate to %s for more information.

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


[tor-commits] [translation/tor-messenger-authdtd] Update translations for tor-messenger-authdtd

2017-06-21 Thread translation
commit 6d7141b0f5a691c843cac75d0f21645c77a35143
Author: Translation commit bot 
Date:   Wed Jun 21 19:17:37 2017 +

Update translations for tor-messenger-authdtd
---
 hy/auth.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hy/auth.dtd b/hy/auth.dtd
index 8df5727..193ac7a 100644
--- a/hy/auth.dtd
+++ b/hy/auth.dtd
@@ -3,7 +3,7 @@
 
 
 
-
+
 
 
 

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


[tor-commits] [translation/tor-launcher-network-settings] Update translations for tor-launcher-network-settings

2017-06-21 Thread translation
commit 15d7cb941f50632c1b5ad2df19c714c812db0b7d
Author: Translation commit bot 
Date:   Wed Jun 21 19:16:14 2017 +

Update translations for tor-launcher-network-settings
---
 hy/network-settings.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hy/network-settings.dtd b/hy/network-settings.dtd
index 0d2e9dc..026b607 100644
--- a/hy/network-settings.dtd
+++ b/hy/network-settings.dtd
@@ -9,7 +9,7 @@
 
 
 
-
+
 
 
 

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


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

2017-06-21 Thread translation
commit 77561f32f364a8228d9ec0dfb4b82260d6b6
Author: Translation commit bot 
Date:   Wed Jun 21 19:15:25 2017 +

Update translations for https_everywhere
---
 hy/ssl-observatory.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hy/ssl-observatory.dtd b/hy/ssl-observatory.dtd
index 69f1cfd..a6016b9 100644
--- a/hy/ssl-observatory.dtd
+++ b/hy/ssl-observatory.dtd
@@ -1,7 +1,7 @@
 
 
 
-
+
 
 ___
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

2017-06-21 Thread translation
commit bf6a628af05806b510761bb031a5d7313ba774b2
Author: Translation commit bot 
Date:   Wed Jun 21 19:15:03 2017 +

Update translations for bridgedb
---
 hy/LC_MESSAGES/bridgedb.po | 49 +++---
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po
index 5d5ea4a..b9641e4 100644
--- a/hy/LC_MESSAGES/bridgedb.po
+++ b/hy/LC_MESSAGES/bridgedb.po
@@ -4,13 +4,14 @@
 # 
 # Translators:
 # Hrach Mkrtchyan , 2016
+# Sarkis Andreyan , 2017
 msgid ""
 msgstr ""
 "Project-Id-Version: The Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2016-07-20 13:28+\n"
-"Last-Translator: Hrach Mkrtchyan \n"
+"PO-Revision-Date: 2017-06-21 19:14+\n"
+"Last-Translator: Sarkis Andreyan \n"
 "Language-Team: Armenian 
(http://www.transifex.com/otf/torproject/language/hy/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -32,19 +33,19 @@ msgstr ""
 #. "Tor Browser"
 #: bridgedb/https/server.py:167
 msgid "Sorry! Something went wrong with your request."
-msgstr ""
+msgstr "Ներեցե՛ք, Ձեր հարցումը սխալ ընթացք 
ստացավ:"
 
 #: bridgedb/https/templates/base.html:79
 msgid "Report a Bug"
-msgstr ""
+msgstr "Հայտնել սխալի մասին"
 
 #: bridgedb/https/templates/base.html:82
 msgid "Source Code"
-msgstr ""
+msgstr "ÔµÕ¬Õ¡Õ¯Õ¥Õ¿Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤"
 
 #: bridgedb/https/templates/base.html:85
 msgid "Changelog"
-msgstr ""
+msgstr "Փոփոխությունների մատյան"
 
 #: bridgedb/https/templates/base.html:88
 msgid "Contact"
@@ -52,7 +53,7 @@ msgstr ""
 
 #: bridgedb/https/templates/bridges.html:35
 msgid "Select All"
-msgstr "Դիտել բոլորը"
+msgstr "Ընտրել բոլորը"
 
 #: bridgedb/https/templates/bridges.html:40
 msgid "Show QRCode"
@@ -69,11 +70,11 @@ msgstr ""
 #: 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."
-msgstr ""
+msgstr "Կարծես թե սխալ տեղի ունեցավ Ձեր QRCode-ը 
Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ«Õ½:"
 
 #: bridgedb/https/templates/bridges.html:73
 msgid ""
@@ -83,14 +84,14 @@ msgstr ""
 
 #: bridgedb/https/templates/bridges.html:131
 msgid "There currently aren't any bridges available..."
-msgstr ""
+msgstr "Ô±ÕµÕªÕ´ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¸Õ¹ Õ´Õ« bridge Õ¹Õ¯Õ¡..."
 
 #: bridgedb/https/templates/bridges.html:132
 #, python-format
 msgid ""
 " Perhaps you should try %s going back %s and choosing a different bridge "
 "type!"
-msgstr ""
+msgstr "Հավանաբար՝ փորձեք %sետ վերադառնալ%s և 
ընտրել ուրիշ bridge-ի տեսակ:"
 
 #: bridgedb/https/templates/index.html:11
 #, python-format
@@ -100,7 +101,7 @@ msgstr "Քայլ %s1%s"
 #: bridgedb/https/templates/index.html:13
 #, python-format
 msgid "Download %s Tor Browser %s"
-msgstr ""
+msgstr "Ներբեռնե՛ք %s«Tor Browser»-ը%s"
 
 #: bridgedb/https/templates/index.html:25
 #, python-format
@@ -110,17 +111,17 @@ msgstr "Քայլ %s2%s"
 #: bridgedb/https/templates/index.html:27
 #, python-format
 msgid "Get %s bridges %s"
-msgstr ""
+msgstr "Ստացե՛ք %sbridge-ներ%s"
 
 #: bridgedb/https/templates/index.html:36
 #, python-format
 msgid "Step %s3%s"
-msgstr ""
+msgstr "Քայլ %s3%s"
 
 #: bridgedb/https/templates/index.html:38
 #, python-format
 msgid "Now %s add the bridges to Tor Browser %s"
-msgstr ""
+msgstr "Այժմ %sավելացրե՛ք bridge-ները «Tor 
Browser»-ին%s:"
 
 #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the
 #. beginning of words are present in your final translation. Thanks!
@@ -129,19 +130,19 @@ msgstr ""
 #: bridgedb/https/templates/options.html:38
 #, python-format
 msgid "%sJ%sust give me bridges!"
-msgstr ""
+msgstr "%sԸ%sնդամենը ինձ bridge-նե՛ր տուր:"
 
 #: bridgedb/https/templates/options.html:51
 msgid "Advanced Options"
-msgstr ""
+msgstr "Ավելի շատ ընտրանքեր"
 
 #: bridgedb/https/templates/options.html:86
 msgid "No"
-msgstr ""
+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!
@@ -149,7 +150,7 @@ msgstr ""
 #: bridgedb/https/templates/options.html:124
 #, python-format
 msgid "%sY%ses!"
-msgstr ""
+msgstr "%sԱ%sյո՛, ինձ պետք են IPv6 հասցեներ:"
 
 #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the
 #. beginning of words are present in your fi

[tor-commits] [tor/master] Merge branch 'bug22356_029' into maint-0.3.1

2017-06-21 Thread nickm
commit 784b29a2bfc7b7ce5ef355629528a38c50b81908
Merge: e51e7bd e3efc07
Author: Nick Mathewson 
Date:   Wed Jun 21 13:54:02 2017 -0400

Merge branch 'bug22356_029' into maint-0.3.1

 changes/bug22356   | 5 +
 src/or/cpuworker.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)




___
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.1] Merge branch 'bug22356_029' into maint-0.3.1

2017-06-21 Thread nickm
commit 784b29a2bfc7b7ce5ef355629528a38c50b81908
Merge: e51e7bd e3efc07
Author: Nick Mathewson 
Date:   Wed Jun 21 13:54:02 2017 -0400

Merge branch 'bug22356_029' into maint-0.3.1

 changes/bug22356   | 5 +
 src/or/cpuworker.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

___
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.1] Downgrade "assign_to_cpuworker failed" to INFO.

2017-06-21 Thread nickm
commit e3efc076c53467be4785301b3f1872bcb52630b1
Author: Nick Mathewson 
Date:   Mon Jun 19 15:24:33 2017 -0400

Downgrade "assign_to_cpuworker failed" to INFO.

Closes ticket 22356
---
 changes/bug22356   | 5 +
 src/or/cpuworker.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/changes/bug22356 b/changes/bug22356
new file mode 100644
index 000..0082b54
--- /dev/null
+++ b/changes/bug22356
@@ -0,0 +1,5 @@
+  o Minor bugfixes (logging, relay):
+- Downgrade "assigned_to_cpuworker failed" message to INFO-level
+  severity. In every case that can reach it, either a better warning
+  has already been logged, or no warning is warranted. Fixes bug 22356;
+  bugfix on 0.2.6.3-alpha.
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index fd6de6e..884b2d0 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -475,7 +475,7 @@ queue_pending_tasks(void)
   return;
 
 if (assign_onionskin_to_cpuworker(circ, onionskin))
-  log_warn(LD_OR,"assign_to_cpuworker failed. Ignoring.");
+  log_info(LD_OR,"assign_to_cpuworker failed. Ignoring.");
   }
 }
 



___
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.1'

2017-06-21 Thread nickm
commit 5d3f484f4ac4f45c0404b1f8b998983636f2a693
Merge: 72b132e 784b29a
Author: Nick Mathewson 
Date:   Wed Jun 21 13:54:07 2017 -0400

Merge branch 'maint-0.3.1'

 changes/bug22356   | 5 +
 src/or/cpuworker.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

___
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.1] Downgrade "assign_to_cpuworker failed" to INFO.

2017-06-21 Thread nickm
commit e3efc076c53467be4785301b3f1872bcb52630b1
Author: Nick Mathewson 
Date:   Mon Jun 19 15:24:33 2017 -0400

Downgrade "assign_to_cpuworker failed" to INFO.

Closes ticket 22356
---
 changes/bug22356   | 5 +
 src/or/cpuworker.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/changes/bug22356 b/changes/bug22356
new file mode 100644
index 000..0082b54
--- /dev/null
+++ b/changes/bug22356
@@ -0,0 +1,5 @@
+  o Minor bugfixes (logging, relay):
+- Downgrade "assigned_to_cpuworker failed" message to INFO-level
+  severity. In every case that can reach it, either a better warning
+  has already been logged, or no warning is warranted. Fixes bug 22356;
+  bugfix on 0.2.6.3-alpha.
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index fd6de6e..884b2d0 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -475,7 +475,7 @@ queue_pending_tasks(void)
   return;
 
 if (assign_onionskin_to_cpuworker(circ, onionskin))
-  log_warn(LD_OR,"assign_to_cpuworker failed. Ignoring.");
+  log_info(LD_OR,"assign_to_cpuworker failed. Ignoring.");
   }
 }
 



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


[tor-commits] [tor/master] Downgrade "assign_to_cpuworker failed" to INFO.

2017-06-21 Thread nickm
commit e3efc076c53467be4785301b3f1872bcb52630b1
Author: Nick Mathewson 
Date:   Mon Jun 19 15:24:33 2017 -0400

Downgrade "assign_to_cpuworker failed" to INFO.

Closes ticket 22356
---
 changes/bug22356   | 5 +
 src/or/cpuworker.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/changes/bug22356 b/changes/bug22356
new file mode 100644
index 000..0082b54
--- /dev/null
+++ b/changes/bug22356
@@ -0,0 +1,5 @@
+  o Minor bugfixes (logging, relay):
+- Downgrade "assigned_to_cpuworker failed" message to INFO-level
+  severity. In every case that can reach it, either a better warning
+  has already been logged, or no warning is warranted. Fixes bug 22356;
+  bugfix on 0.2.6.3-alpha.
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index fd6de6e..884b2d0 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -475,7 +475,7 @@ queue_pending_tasks(void)
   return;
 
 if (assign_onionskin_to_cpuworker(circ, onionskin))
-  log_warn(LD_OR,"assign_to_cpuworker failed. Ignoring.");
+  log_info(LD_OR,"assign_to_cpuworker failed. Ignoring.");
   }
 }
 



___
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.1] Merge branch 'bug22356_029' into maint-0.3.1

2017-06-21 Thread nickm
commit 784b29a2bfc7b7ce5ef355629528a38c50b81908
Merge: e51e7bd e3efc07
Author: Nick Mathewson 
Date:   Wed Jun 21 13:54:02 2017 -0400

Merge branch 'bug22356_029' into maint-0.3.1

 changes/bug22356   | 5 +
 src/or/cpuworker.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

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


[tor-commits] [tor/master] changes file for ticket22311

2017-06-21 Thread nickm
commit 72b132e2a4e0f2ae5865b5a40e62ee139512adba
Author: Nick Mathewson 
Date:   Wed Jun 21 12:45:18 2017 -0400

changes file for ticket22311
---
 changes/ticket22311 | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/changes/ticket22311 b/changes/ticket22311
new file mode 100644
index 000..0bfd465
--- /dev/null
+++ b/changes/ticket22311
@@ -0,0 +1,3 @@
+  o Code simplification and refactoring:
+- Remove several now-obsolete functions for asking about old variants
+  directory authority status. Closes ticket 22311; patch from "huyvq".

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


[tor-commits] [tor/master] Remove obsolete authdir_mode_any_nonhidserv()

2017-06-21 Thread nickm
commit ad97714f22ace023bda9f334687239127a71413a
Author: huyvq 
Date:   Fri Jun 2 23:33:40 2017 +0700

Remove obsolete authdir_mode_any_nonhidserv()

- Replace it with authdir_mode()
---
 src/or/router.c | 12 ++--
 src/or/router.h |  1 -
 src/or/routerlist.c |  2 +-
 3 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/src/or/router.c b/src/or/router.c
index e12f138..f2052f4 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1596,14 +1596,6 @@ authdir_mode_v3(const or_options_t *options)
 {
   return authdir_mode(options) && options->V3AuthoritativeDir != 0;
 }
-/** Return true if we believe ourselves to be any kind of
- * authoritative directory beyond just a hidserv authority. */
-int
-authdir_mode_any_nonhidserv(const or_options_t *options)
-{
-  return options->BridgeAuthoritativeDir ||
- authdir_mode_any_main(options);
-}
 /** Return true iff we are an authoritative directory server that is
  * authoritative about receiving and serving descriptors of type
  * purpose on its dirport.  Use -1 for "any purpose". */
@@ -1611,7 +1603,7 @@ int
 authdir_mode_handles_descs(const or_options_t *options, int purpose)
 {
   if (purpose < 0)
-return authdir_mode_any_nonhidserv(options);
+return authdir_mode(options);
   else if (purpose == ROUTER_PURPOSE_GENERAL)
 return authdir_mode_v3(options);
   else if (purpose == ROUTER_PURPOSE_BRIDGE)
@@ -1627,7 +1619,7 @@ authdir_mode_publishes_statuses(const or_options_t 
*options)
 {
   if (authdir_mode_bridge(options))
 return 0;
-  return authdir_mode_any_nonhidserv(options);
+  return authdir_mode(options);
 }
 /** Return true iff we are an authoritative directory server that
  * tests reachability of the descriptors it learns about.
diff --git a/src/or/router.h b/src/or/router.h
index 2e62185..97f3317 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -54,7 +54,6 @@ int net_is_disabled(void);
 
 int authdir_mode(const or_options_t *options);
 int authdir_mode_v3(const or_options_t *options);
-int authdir_mode_any_nonhidserv(const or_options_t *options);
 int authdir_mode_handles_descs(const or_options_t *options, int purpose);
 int authdir_mode_publishes_statuses(const or_options_t *options);
 int authdir_mode_tests_reachability(const or_options_t *options);
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index da072be..8adaaf6 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -5033,7 +5033,7 @@ launch_descriptor_downloads(int purpose,
 }
   }
 
-  if (!authdir_mode_any_nonhidserv(options)) {
+  if (!authdir_mode(options)) {
 /* If we wind up going to the authorities, we want to only open one
  * connection to each authority at a time, so that we don't overload
  * them.  We do this by setting PDS_NO_EXISTING_SERVERDESC_FETCH



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


[tor-commits] [tor/master] Remove obsolete authdir_mode_any_main()

2017-06-21 Thread nickm
commit 0471c905a18760413a63f05f50535313c76ca0c4
Author: huyvq 
Date:   Fri Jun 2 23:23:39 2017 +0700

Remove obsolete authdir_mode_any_main()
---
 src/or/config.c | 2 +-
 src/or/router.c | 8 +---
 src/or/router.h | 1 -
 3 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/or/config.c b/src/or/config.c
index 3413442..e17ae86 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3161,7 +3161,7 @@ options_validate(or_options_t *old_options, or_options_t 
*options,
"UseEntryGuards. Disabling.");
   options->UseEntryGuards = 0;
 }
-if (!options->DownloadExtraInfo && authdir_mode_any_main(options)) {
+if (!options->DownloadExtraInfo && authdir_mode_v3(options)) {
   log_info(LD_CONFIG, "Authoritative directories always try to download "
"extra-info documents. Setting DownloadExtraInfo.");
   options->DownloadExtraInfo = 1;
diff --git a/src/or/router.c b/src/or/router.c
index 2187a76..849cffd 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1596,12 +1596,6 @@ authdir_mode_v3(const or_options_t *options)
 {
   return authdir_mode(options) && options->V3AuthoritativeDir != 0;
 }
-/** Return true iff we are a v3 directory authority. */
-int
-authdir_mode_any_main(const or_options_t *options)
-{
-  return options->V3AuthoritativeDir;
-}
 /** Return true if we believe ourselves to be any kind of
  * authoritative directory beyond just a hidserv authority. */
 int
@@ -1619,7 +1613,7 @@ authdir_mode_handles_descs(const or_options_t *options, 
int purpose)
   if (purpose < 0)
 return authdir_mode_any_nonhidserv(options);
   else if (purpose == ROUTER_PURPOSE_GENERAL)
-return authdir_mode_any_main(options);
+return authdir_mode_v3(options);
   else if (purpose == ROUTER_PURPOSE_BRIDGE)
 return (options->BridgeAuthoritativeDir);
   else
diff --git a/src/or/router.h b/src/or/router.h
index 9c5def5..2e62185 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -54,7 +54,6 @@ int net_is_disabled(void);
 
 int authdir_mode(const or_options_t *options);
 int authdir_mode_v3(const or_options_t *options);
-int authdir_mode_any_main(const or_options_t *options);
 int authdir_mode_any_nonhidserv(const or_options_t *options);
 int authdir_mode_handles_descs(const or_options_t *options, int purpose);
 int authdir_mode_publishes_statuses(const or_options_t *options);



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


[tor-commits] [tor/master] Convert authdir_mode_handles_descs(options, -1) with authdir_mode(options)

2017-06-21 Thread nickm
commit d92b999757336249bcff15c5c498e6e5353d38c4
Author: huyvq 
Date:   Fri Jun 2 23:26:53 2017 +0700

Convert authdir_mode_handles_descs(options, -1) with authdir_mode(options)
---
 src/or/directory.c | 2 +-
 src/or/main.c  | 4 ++--
 src/or/router.c| 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/or/directory.c b/src/or/directory.c
index b680b13..5e8e663 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -4850,7 +4850,7 @@ directory_handle_command_post,(dir_connection_t *conn, 
const char *headers,
 goto done;
   }
 
-  if (authdir_mode_handles_descs(options, -1) &&
+  if (authdir_mode(options) &&
   !strcmp(url,"/tor/")) { /* server descriptor post */
 const char *msg = "[None]";
 uint8_t purpose = authdir_mode_bridge(options) ?
diff --git a/src/or/main.c b/src/or/main.c
index 9699c8d..9709aeb 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -2355,7 +2355,7 @@ do_hup(void)
   tor_free(msg);
 }
   }
-  if (authdir_mode_handles_descs(options, -1)) {
+  if (authdir_mode(options)) {
 /* reload the approved-routers file */
 if (dirserv_load_fingerprint_file() < 0) {
   /* warnings are logged from dirserv_load_fingerprint_file() directly */
@@ -3478,7 +3478,7 @@ sandbox_init_filter(void)
   if (options->BridgeAuthoritativeDir)
 OPEN_DATADIR_SUFFIX("networkstatus-bridges", ".tmp");
 
-  if (authdir_mode_handles_descs(options, -1))
+  if (authdir_mode(options))
 OPEN_DATADIR("approved-routers");
 
   if (options->ServerDNSResolvConfFile)
diff --git a/src/or/router.c b/src/or/router.c
index 849cffd..a264af1 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1635,7 +1635,7 @@ authdir_mode_publishes_statuses(const or_options_t 
*options)
 int
 authdir_mode_tests_reachability(const or_options_t *options)
 {
-  return authdir_mode_handles_descs(options, -1);
+  return authdir_mode(options);
 }
 /** Return true iff we believe ourselves to be a bridge authoritative
  * directory server.



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


[tor-commits] [tor/master] Convert authdir_mode_handles_descs() to alternative wrappers

2017-06-21 Thread nickm
commit 18cd1993ca852b25a18b266ae7d8dcecf573525a
Author: huyvq 
Date:   Fri Jun 2 23:32:41 2017 +0700

Convert authdir_mode_handles_descs() to alternative wrappers

-authdir_mode_handles_descs(options, ROUTER_PURPOSE_BRIDGE) to 
authdir_mode_bridge(options).

- authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL) to 
authdir_mode_v3(options).
---
 src/or/router.c | 4 ++--
 src/or/routerlist.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/or/router.c b/src/or/router.c
index a264af1..e12f138 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1065,7 +1065,7 @@ init_keys(void)
   /* 4. Build our router descriptor. */
   /* Must be called after keys are initialized. */
   mydesc = router_get_my_descriptor();
-  if (authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)) {
+  if (authdir_mode_v3(options)) {
 const char *m = NULL;
 routerinfo_t *ri;
 /* We need to add our own fingerprint so it gets recognized. */
@@ -1615,7 +1615,7 @@ authdir_mode_handles_descs(const or_options_t *options, 
int purpose)
   else if (purpose == ROUTER_PURPOSE_GENERAL)
 return authdir_mode_v3(options);
   else if (purpose == ROUTER_PURPOSE_BRIDGE)
-return (options->BridgeAuthoritativeDir);
+return authdir_mode_bridge(options);
   else
 return 0;
 }
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 0e45f63..da072be 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -5164,7 +5164,7 @@ update_consensus_router_descriptor_downloads(time_t now, 
int is_vote,
   smartlist_add(downloadable, rs->descriptor_digest);
   } SMARTLIST_FOREACH_END(rsp);
 
-  if (!authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)
+  if (!authdir_mode_v3(options)
   && smartlist_len(no_longer_old)) {
 routerlist_t *rl = router_get_routerlist();
 log_info(LD_DIR, "%d router descriptors listed in consensus are "



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


[tor-commits] [tor/master] Call it a BUG to use -1 in authdir_mode_handles_descs

2017-06-21 Thread nickm
commit 35d6313500f3ea07a10b565515d5e9953fc7f1da
Author: Nick Mathewson 
Date:   Wed Jun 21 12:38:02 2017 -0400

Call it a BUG to use -1 in authdir_mode_handles_descs
---
 src/or/router.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/or/router.c b/src/or/router.c
index f2052f4..100c4cc 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1598,11 +1598,12 @@ authdir_mode_v3(const or_options_t *options)
 }
 /** Return true iff we are an authoritative directory server that is
  * authoritative about receiving and serving descriptors of type
- * purpose on its dirport.  Use -1 for "any purpose". */
+ * purpose on its dirport.
+ */
 int
 authdir_mode_handles_descs(const or_options_t *options, int purpose)
 {
-  if (purpose < 0)
+  if (BUG(purpose < 0)) /* Deprecated. */
 return authdir_mode(options);
   else if (purpose == ROUTER_PURPOSE_GENERAL)
 return authdir_mode_v3(options);



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


[tor-commits] [stem/master] Python3 support for server descriptor signing

2017-06-21 Thread atagar
commit 78eaa445c9344b878e55c3e114f73358faa8d008
Author: Damian Johnson 
Date:   Wed Jun 21 08:51:24 2017 -0700

Python3 support for server descriptor signing

While writing it I consciously didn't invest effort into making it 
compatible.
Now that we've got it working fixing that. Most interesting issue was...

  ==
  ERROR: test_descriptor_signing
  --
  Traceback (most recent call last):
File "/home/atagar/Desktop/stem/test/require.py", line 58, in wrapped
  return func(self, *args, **kwargs)
File 
"/home/atagar/Desktop/stem/test/unit/descriptor/server_descriptor.py", line 
260, in test_descriptor_signing
  RelayDescriptor.create(sign = True)
File "/home/atagar/Desktop/stem/stem/descriptor/server_descriptor.py", 
line 873, in create
  return cls(cls.content(attr, exclude, sign, private_signing_key), 
validate = validate, skip_crypto_validation = not sign)
File "/home/atagar/Desktop/stem/stem/descriptor/server_descriptor.py", 
line 865, in content
  signature = base64.b64encode(private_signing_key.sign(content, 
padding.PKCS1v15(), hashes.SHA1()))
File 
"/usr/local/lib/python3.2/dist-packages/cryptography/hazmat/backends/openssl/rsa.py",
 line 463, in sign
  algorithm, self, data
File 
"/usr/local/lib/python3.2/dist-packages/cryptography/hazmat/backends/openssl/rsa.py",
 line 199, in _rsa_sig_sign
  backend.openssl_assert(res > 0)
  TypeError: unorderable types: NoneType() > int()

  --

This was due to one of our no_op mocks.
---
 stem/descriptor/__init__.py  | 2 +-
 stem/descriptor/server_descriptor.py | 8 
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 96cf0b4..bf336fb 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -391,7 +391,7 @@ def _descriptor_content(attr = None, exclude = (), sign = 
False, header_template
   if keyword in exclude:
 continue
 
-  value = attr.pop(keyword, value)
+  value = stem.util.str_tools._to_unicode(attr.pop(keyword, value))
 
   if value is None:
 continue
diff --git a/stem/descriptor/server_descriptor.py 
b/stem/descriptor/server_descriptor.py
index 4e55ee2..2c7258a 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -847,7 +847,7 @@ class RelayDescriptor(ServerDescriptor):
 # ewww.
 
 def no_op(*args, **kwargs):
-  pass
+  return 1
 
 private_signing_key._backend._lib.EVP_PKEY_CTX_set_signature_md = no_op
 private_signing_key._backend.openssl_assert = no_op
@@ -855,15 +855,15 @@ class RelayDescriptor(ServerDescriptor):
   # create descriptor content without the router-signature, then
   # appending the content signature
 
-  attr['signing-key'] = '\n' + 
private_signing_key.public_key().public_bytes(
+  attr['signing-key'] = b'\n' + 
private_signing_key.public_key().public_bytes(
 encoding = serialization.Encoding.PEM,
 format = serialization.PublicFormat.PKCS1,
   ).strip()
 
-  content = _descriptor_content(attr, exclude, sign, RELAY_SERVER_HEADER) 
+ '\nrouter-signature\n'
+  content = _descriptor_content(attr, exclude, sign, RELAY_SERVER_HEADER) 
+ b'\nrouter-signature\n'
   signature = base64.b64encode(private_signing_key.sign(content, 
padding.PKCS1v15(), hashes.SHA1()))
 
-  return content + '\n'.join(['-BEGIN SIGNATURE-'] + 
stem.util.str_tools._split_by_length(signature, 64) + ['-END 
SIGNATURE-\n'])
+  return content + b'\n'.join([b'-BEGIN SIGNATURE-'] + 
stem.util.str_tools._split_by_length(signature, 64) + [b'-END 
SIGNATURE-\n'])
 else:
   return _descriptor_content(attr, exclude, sign, RELAY_SERVER_HEADER, 
RELAY_SERVER_FOOTER)
 



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


[tor-commits] [stem/master] Authentication failures could cause incorrect response

2017-06-21 Thread atagar
commit a275838663a716287110eec7250360a9ab14a670
Author: Damian Johnson 
Date:   Wed Jun 21 10:08:37 2017 -0700

Authentication failures could cause incorrect response

Oops. To best ensure we performed post-authentication activities I hacked it
directly into the BaseController, but these didn't take into account that
authentication could fail. The post-auth requests then failed because tor
closes the socket.

Caught thanks to daftaupe on...

  https://trac.torproject.org/projects/tor/ticket/22679

While troubleshooting this I ran into another bug that might be an issue 
with
tor. When authentication failed we called 'QUIT'. Tor will sometimes respond
with 'closing connection' and other times just hang. Reached out to Nick to 
see
if this is something we'd care to address, but on Stem's side now simply
omitting a QUIT call if unauthenticated.
---
 docs/change_log.rst |  1 +
 stem/connection.py  |  3 +++
 stem/control.py | 14 ++
 test/integ/connection/authentication.py | 19 +++
 4 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/docs/change_log.rst b/docs/change_log.rst
index 06341b4..96690ac 100644
--- a/docs/change_log.rst
+++ b/docs/change_log.rst
@@ -46,6 +46,7 @@ The following are only available within Stem's `git repository
  * **Controller**
 
   * :func:`~stem.process.launch_tor` raised a ValueError if invoked when 
outside the main thread
+  * Failure to authenticate could raise an improper response or hang 
(:trac:`22679`)
   * Renamed :class:`~stem.response.events.ConnectionBandwidthEvent` type 
attribute to conn_type to avoid conflict with parent class (:trac:`21774`)
   * Added the GUARD_WAIT :data:`~stem.CircStatus` (:spec:`6446210`)
   * Unable to use cookie auth when path includes wide characters (chinese, 
japanese, etc)
diff --git a/stem/connection.py b/stem/connection.py
index a3f27a0..db3f218 100644
--- a/stem/connection.py
+++ b/stem/connection.py
@@ -584,6 +584,9 @@ def authenticate(controller, password = None, chroot_path = 
None, protocolinfo_r
 else:
   authenticate_cookie(controller, cookie_path, False)
 
+  if isinstance(controller, stem.control.BaseController):
+controller._post_authentication()
+
   return  # success!
 except OpenAuthRejected as exc:
   auth_exceptions.append(exc)
diff --git a/stem/control.py b/stem/control.py
index 65e3401..8c01d94 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -633,13 +633,6 @@ class BaseController(object):
 if isinstance(response, stem.ControllerError):
   raise response
 else:
-  # I really, really don't like putting hooks into this method, but
-  # this is the most reliable method I can think of for taking actions
-  # immediately after successfully authenticating to a connection.
-
-  if message.upper().startswith('AUTHENTICATE'):
-self._post_authentication()
-
   return response
   except stem.SocketClosed:
 # If the recv() thread caused the SocketClosed then we could still be
@@ -693,10 +686,7 @@ class BaseController(object):
   and **False** otherwise
 """
 
-if self.is_alive():
-  return self._is_authenticated
-
-return False
+return self._is_authenticated if self.is_alive() else False
 
   def connect(self):
 """
@@ -1051,7 +1041,7 @@ class Controller(BaseController):
 
   def close(self):
 # making a best-effort attempt to quit before detaching the socket
-if self.is_alive():
+if self.is_authenticated():
   try:
 self.msg('QUIT')
   except:
diff --git a/test/integ/connection/authentication.py 
b/test/integ/connection/authentication.py
index 3a2fcb0..a8c0c82 100644
--- a/test/integ/connection/authentication.py
+++ b/test/integ/connection/authentication.py
@@ -268,6 +268,25 @@ class TestAuthenticate(unittest.TestCase):
 self.assertRaises(exc_type, self._check_auth, auth_type, auth_value)
 
   @test.require.controller
+  def test_wrong_password_with_controller(self):
+"""
+We ran into a race condition where providing the wrong password to the
+Controller caused inconsistent responses. Checking for that...
+
+https://trac.torproject.org/projects/tor/ticket/22679
+"""
+
+runner = test.runner.get_runner()
+
+if test.runner.Torrc.PASSWORD not in runner.get_options():
+  self.skipTest('(requires password auth)')
+  return
+
+for i in range(10):
+  with runner.get_tor_controller(False) as controller:
+self.assertRaises(stem.connection.IncorrectPassword, 
controller.authenticate, 'wrong_password')
+
+  @test.require.controller
   def test_authenticate_cookie(self):
 """
 Tests the authenticate_cookie function.

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://

[tor-commits] [stem/master] Python3 compatability for networkstatus unit test

2017-06-21 Thread atagar
commit 657a2b89b65c4b2c468d784e6ae2ac667ba84706
Author: Damian Johnson 
Date:   Wed Jun 21 08:43:09 2017 -0700

Python3 compatability for networkstatus unit test

Trivial fix. Just some missing unicode/bytes normalization.

  ==
  ERROR: test_signature_validation
  --
  Traceback (most recent call last):
File "/home/atagar/Desktop/stem/test/require.py", line 58, in wrapped
  return func(self, *args, **kwargs)
File 
"/home/atagar/Desktop/stem/test/unit/descriptor/networkstatus/document_v3.py", 
line 421, in test_signature_validation
  consensus = 
stem.descriptor.networkstatus.NetworkStatusDocumentV3(consensus_content.replace('test002r',
 'different_nickname'))
  TypeError: expected an object with the buffer interface

  --
---
 test/unit/descriptor/networkstatus/document_v3.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/unit/descriptor/networkstatus/document_v3.py 
b/test/unit/descriptor/networkstatus/document_v3.py
index efdf1bb..68d7270 100644
--- a/test/unit/descriptor/networkstatus/document_v3.py
+++ b/test/unit/descriptor/networkstatus/document_v3.py
@@ -418,7 +418,7 @@ DnN5aFtYKiTc19qIC7Nmo+afPdDEf0MlJvEOP5EWl3w=
 
 # change a relay's nickname in the consensus so it's no longer validly 
signed
 
-consensus = 
stem.descriptor.networkstatus.NetworkStatusDocumentV3(consensus_content.replace('test002r',
 'different_nickname'))
+consensus = 
stem.descriptor.networkstatus.NetworkStatusDocumentV3(consensus_content.replace(b'test002r',
 b'different_nickname'))
 self.assertRaisesRegexp(ValueError, 'Network Status Document has 0 valid 
signatures out of 2 total, needed 1', consensus.validate_signatures, certs)
 
   def test_handlers(self):



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


[tor-commits] [stem/master] Add blank lines after functions

2017-06-21 Thread atagar
commit 4ef767c9e07ac0d835355706625dafea19a57147
Author: Damian Johnson 
Date:   Tue Jun 20 13:44:25 2017 -0700

Add blank lines after functions

Evidently another new pycodestyle constraint.

  * /home/atagar/Desktop/stem/stem/connection.py
line 1301 - E305 expected 2 blank lines after class or function 
definition, found 1 | AUTHENTICATE_EXCEPTIONS = (

  * /home/atagar/Desktop/stem/stem/util/log.py
line 94   - E305 expected 2 blank lines after class or function 
definition, found 1 | if not LOGGER.handlers:

  * /home/atagar/Desktop/stem/stem/util/test_tools.py
line 622  - E305 expected 2 blank lines after class or function 
definition, found 1 | get_stylistic_issues = stylistic_issues

  * /home/atagar/Desktop/stem/stem/descriptor/hidden_service_descriptor.py
line 189  - E305 expected 2 blank lines after class or function 
definition, found 1 | _parse_rendezvous_service_descriptor_line = 
_parse_simple_line('rendezvous-service-descriptor', 'descriptor_id')

  * /home/atagar/Desktop/stem/stem/util/connection.py
line 757  - E305 expected 2 blank lines after class or function 
definition, found 1 | get_system_resolvers = system_resolvers

  * /home/atagar/Desktop/stem/stem/__init__.py
line 615  - E305 expected 2 blank lines after class or function 
definition, found 1 | Runlevel = stem.util.enum.UppercaseEnum(

  * /home/atagar/Desktop/stem/stem/version.py
line 335  - E305 expected 2 blank lines after class or function 
definition, found 1 | safecookie_req = _VersionRequirements()

  * /home/atagar/Desktop/stem/stem/util/proc.py
line 577  - E305 expected 2 blank lines after class or function 
definition, found 1 | get_system_start_time = system_start_time
---
 stem/__init__.py | 1 +
 stem/connection.py   | 2 ++
 stem/descriptor/__init__.py  | 1 +
 stem/descriptor/hidden_service_descriptor.py | 1 +
 stem/util/connection.py  | 1 +
 stem/util/log.py | 1 +
 stem/util/proc.py| 1 +
 stem/util/str_tools.py   | 1 +
 stem/util/test_tools.py  | 1 +
 stem/version.py  | 1 +
 10 files changed, 11 insertions(+)

diff --git a/stem/__init__.py b/stem/__init__.py
index e9e621c..a033745 100644
--- a/stem/__init__.py
+++ b/stem/__init__.py
@@ -612,6 +612,7 @@ class SocketError(ControllerError):
 class SocketClosed(SocketError):
   'Control socket was closed before completing the message.'
 
+
 Runlevel = stem.util.enum.UppercaseEnum(
   'DEBUG',
   'INFO',
diff --git a/stem/connection.py b/stem/connection.py
index 967b766..a3f27a0 100644
--- a/stem/connection.py
+++ b/stem/connection.py
@@ -1297,7 +1297,9 @@ class NoAuthCookie(MissingAuthInfo):
 super(NoAuthCookie, self).__init__(message)
 self.is_safecookie = is_safecookie
 
+
 # authentication exceptions ordered as per the authenticate function's pydocs
+
 AUTHENTICATE_EXCEPTIONS = (
   IncorrectSocketType,
   UnrecognizedAuthMethods,
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index be28c7a..96cf0b4 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -1050,6 +1050,7 @@ def _descriptor_components(raw_contents, validate, 
extra_keywords = (), non_asci
   else:
 return entries
 
+
 # importing at the end to avoid circular dependencies on our Descriptor class
 
 import stem.descriptor.server_descriptor
diff --git a/stem/descriptor/hidden_service_descriptor.py 
b/stem/descriptor/hidden_service_descriptor.py
index b188012..d752369 100644
--- a/stem/descriptor/hidden_service_descriptor.py
+++ b/stem/descriptor/hidden_service_descriptor.py
@@ -186,6 +186,7 @@ def _parse_introduction_points_line(descriptor, entries):
   except TypeError:
 raise ValueError("'introduction-points' isn't base64 encoded content:\n%s" 
% block_contents)
 
+
 _parse_rendezvous_service_descriptor_line = 
_parse_simple_line('rendezvous-service-descriptor', 'descriptor_id')
 _parse_permanent_key_line = _parse_key_block('permanent-key', 'permanent_key', 
'RSA PUBLIC KEY')
 _parse_secret_id_part_line = _parse_simple_line('secret-id-part', 
'secret_id_part')
diff --git a/stem/util/connection.py b/stem/util/connection.py
index a5d1edc..0925461 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -750,6 +750,7 @@ def _cryptovariables_equal(x, y):
 _hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, x) ==
 _hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, y))
 
+
 # TODO: drop with stem 2.x
 # We renamed our methods to drop a redundant 'get_*' prefix, so alias the old
 # names for backward compatability.
diff --git a/stem/util/log.py b/stem/util/log.py
index adcdc41..e157c7c 100644
--- a/stem/util/log.py
+++ b/stem/util/log.py
@@ -91,6 +91,7 @@ class _NullHandler(logg

[tor-commits] [stem/master] Replace no-op lambda with function

2017-06-21 Thread atagar
commit 785f28af5601149dc97bda4646444bde314db6e8
Author: Damian Johnson 
Date:   Tue Jun 20 13:43:48 2017 -0700

Replace no-op lambda with function

Forgot pycodestyle dislikes lambda assignment. Not sure why but meh, 
whatever.
---
 stem/descriptor/server_descriptor.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/stem/descriptor/server_descriptor.py 
b/stem/descriptor/server_descriptor.py
index 499b53e..4e55ee2 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -846,7 +846,8 @@ class RelayDescriptor(ServerDescriptor):
 # of excluding these so we need to mock out part of their internals...
 # ewww.
 
-no_op = lambda *args, **kwargs: None
+def no_op(*args, **kwargs):
+  pass
 
 private_signing_key._backend._lib.EVP_PKEY_CTX_set_signature_md = no_op
 private_signing_key._backend.openssl_assert = no_op



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


[tor-commits] [stem/master] Stylistic compatability with pycodestyle

2017-06-21 Thread atagar
commit 3c96963e4be26e1fd9126a4b610153633f8f2e7f
Merge: 9a947c6 4ef767c
Author: Damian Johnson 
Date:   Wed Jun 21 08:35:59 2017 -0700

Stylistic compatability with pycodestyle

Odd. I'm using pycodestyle 2.3.1 with both python 2.7 and 3.2 but these 
issues
only manifest with 3.2. Guess pycodestyle performs extra checks with newer
python versions?

Meh. Simple things to fix.

 stem/__init__.py | 1 +
 stem/connection.py   | 2 ++
 stem/descriptor/__init__.py  | 1 +
 stem/descriptor/hidden_service_descriptor.py | 1 +
 stem/descriptor/server_descriptor.py | 3 ++-
 stem/util/connection.py  | 1 +
 stem/util/log.py | 1 +
 stem/util/proc.py| 1 +
 stem/util/str_tools.py   | 1 +
 stem/util/test_tools.py  | 1 +
 stem/version.py  | 1 +
 test/settings.cfg| 9 +
 12 files changed, 22 insertions(+), 1 deletion(-)



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


[tor-commits] [stem/master] Ignore pycodestyle warnings about bare 'except:' clauses

2017-06-21 Thread atagar
commit 4ebb606dd121a1232aa2f3e24a904aacb8174839
Author: Damian Johnson 
Date:   Tue Jun 20 13:35:51 2017 -0700

Ignore pycodestyle warnings about bare 'except:' clauses

Odd this didn't manifest for me before. Seems to only come up when running
python3 so maybe a new check? I can see the reasoning around this but I'm a
shade more concerned about the alternative.
---
 test/settings.cfg | 9 +
 1 file changed, 9 insertions(+)

diff --git a/test/settings.cfg b/test/settings.cfg
index 128e987..7ccd733 100644
--- a/test/settings.cfg
+++ b/test/settings.cfg
@@ -119,6 +119,14 @@ target.torrc RUN_PTRACE   => PORT, PTRACE
 #
 #   Pycodestyle only works with this one if we have four space indents (its
 #   detection is based on multiples of four).
+#
+# * E722 do not use bare except
+#
+#   Iirc they advise against this because it catches KeyboardInterrups and
+#   interpreter termination. That's a fair concern, but on the other hand we
+#   don't have strong assurance that socket errors and the like will be caught
+#   without it. We've been doing this for years without issue but I'd be
+#   ameanable to a patch if this causes issues for someone.
 
 pycodestyle.ignore E111
 pycodestyle.ignore E114
@@ -127,6 +135,7 @@ pycodestyle.ignore E501
 pycodestyle.ignore E251
 pycodestyle.ignore E127
 pycodestyle.ignore E131
+pycodestyle.ignore E722
 
 pycodestyle.ignore stem/__init__.py => E402: import stem.util.enum
 pycodestyle.ignore stem/descriptor/__init__.py => E402: import 
stem.descriptor.server_descriptor



___
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 'Ryman-bug5847-squashed'

2017-06-21 Thread nickm
commit f0a5416f95e06ebfd27eb95436eb85cd66494b9a
Merge: 884c0ff 0a96d11
Author: Nick Mathewson 
Date:   Wed Jun 21 12:19:55 2017 -0400

Merge branch 'Ryman-bug5847-squashed'

 changes/bug5847  |  5 +
 src/or/control.c | 36 
 2 files changed, 33 insertions(+), 8 deletions(-)

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


[tor-commits] [tor/master] Better error message for GETINFO desc/(id|name) whenever microdescriptors are in use. Fixes #5847.

2017-06-21 Thread nickm
commit 0a96d11539e27f8ef0577cc8ee4e503f046e637b
Author: Kevin Butler 
Date:   Wed Sep 4 02:10:18 2013 +0100

Better error message for GETINFO desc/(id|name) whenever microdescriptors 
are in use. Fixes #5847.
---
 changes/bug5847  |  5 +
 src/or/control.c | 36 
 2 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/changes/bug5847 b/changes/bug5847
new file mode 100644
index 000..782fc7b
--- /dev/null
+++ b/changes/bug5847
@@ -0,0 +1,5 @@
+  o Minor features (control port):
+- Provide better error message for GETINFO desc/(id|name) when
+  microdescriptors are in use and router descriptors are not fetched.
+  Closes ticket 5847. Patch by Kevin Butler.
+
diff --git a/src/or/control.c b/src/or/control.c
index 9454a7a..b971725 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -60,6 +60,7 @@
 #include "hibernate.h"
 #include "hs_common.h"
 #include "main.h"
+#include "microdesc.h"
 #include "networkstatus.h"
 #include "nodelist.h"
 #include "policies.h"
@@ -1892,6 +1893,12 @@ getinfo_helper_dir(control_connection_t *control_conn,
   const char *body = signed_descriptor_get_body(&ri->cache_info);
   if (body)
 *answer = tor_strndup(body, ri->cache_info.signed_descriptor_len);
+} else if (! we_fetch_router_descriptors(get_options())) {
+  /* Descriptors won't be available, provide proper error */
+  *errmsg = "We fetch microdescriptors, not router "
+"descriptors. You'll need to use md/id/* "
+"instead of desc/id/*.";
+  return 0;
 }
   } else if (!strcmpstart(question, "desc/name/")) {
 const routerinfo_t *ri = NULL;
@@ -1905,6 +1912,12 @@ getinfo_helper_dir(control_connection_t *control_conn,
   const char *body = signed_descriptor_get_body(&ri->cache_info);
   if (body)
 *answer = tor_strndup(body, ri->cache_info.signed_descriptor_len);
+} else if (! we_fetch_router_descriptors(get_options())) {
+  /* Descriptors won't be available, provide proper error */
+  *errmsg = "We fetch microdescriptors, not router "
+"descriptors. You'll need to use md/name/* "
+"instead of desc/name/*.";
+  return 0;
 }
   } else if (!strcmp(question, "desc/all-recent")) {
 routerlist_t *routerlist = router_get_routerlist();
@@ -2907,7 +2920,8 @@ getinfo_helper_sr(control_connection_t *control_conn,
  * *a. If an internal error occurs, return -1 and optionally set
  * *error_out to point to an error message to be delivered to the
  * controller. On success, _or if the key is not recognized_, return 0. Do not
- * set a if the key is not recognized.
+ * set a if the key is not recognized but you may set error_out
+ * to improve the error message.
  */
 typedef int (*getinfo_helper_t)(control_connection_t *,
 const char *q, char **a,
@@ -3162,7 +3176,7 @@ handle_control_getinfo(control_connection_t *conn, 
uint32_t len,
   smartlist_t *questions = smartlist_new();
   smartlist_t *answers = smartlist_new();
   smartlist_t *unrecognized = smartlist_new();
-  char *msg = NULL, *ans = NULL;
+  char *ans = NULL;
   int i;
   (void) len; /* body is NUL-terminated, so it's safe to ignore the length. */
 
@@ -3177,20 +3191,26 @@ handle_control_getinfo(control_connection_t *conn, 
uint32_t len,
   goto done;
 }
 if (!ans) {
-  smartlist_add(unrecognized, (char*)q);
+  if (errmsg) /* use provided error message */
+smartlist_add_strdup(unrecognized, errmsg);
+  else /* use default error message */
+smartlist_add_asprintf(unrecognized, "Unrecognized key \"%s\"", q);
 } else {
   smartlist_add_strdup(answers, q);
   smartlist_add(answers, ans);
 }
   } SMARTLIST_FOREACH_END(q);
+
   if (smartlist_len(unrecognized)) {
+/* control-spec section 2.3, mid-reply '-' or end of reply ' ' */
 for (i=0; i < smartlist_len(unrecognized)-1; ++i)
   connection_printf_to_buf(conn,
-   "552-Unrecognized key \"%s\"\r\n",
-   (char*)smartlist_get(unrecognized, i));
+   "552-%s\r\n",
+   (char *)smartlist_get(unrecognized, i));
+
 connection_printf_to_buf(conn,
- "552 Unrecognized key \"%s\"\r\n",
- (char*)smartlist_get(unrecognized, i));
+ "552 %s\r\n",
+ (char *)smartlist_get(unrecognized, i));
 goto done;
   }
 
@@ -3217,8 +3237,8 @@ handle_control_getinfo(control_connection_t *conn, 
uint32_t len,
   smartlist_free(answers);
   SMARTLIST_FOREACH(questions, char *, cp, tor_free(cp));
   smartlist_free(questions);
+  SMARTLIST_FOREACH(unrecognized, char *, cp, tor_free(cp));
   smartlist_free(unrecognized);
-  tor_free(msg);
 
   return 0;
 }



___
tor-commits mailing list
tor-c

[tor-commits] [metrics-lib/release] Add a test for the encoding of microdescriptor digests in votes

2017-06-21 Thread karsten
commit 47a69b342faae83fcd70909c3f03129f7b133364
Author: Karsten Loesing 
Date:   Sat Jun 17 21:18:11 2017 +0200

Add a test for the encoding of microdescriptor digests in votes
---
 .../descriptor/impl/RelayNetworkStatusVoteImplTest.java   | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git 
a/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
 
b/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
index 1152626..8a85145 100644
--- 
a/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
+++ 
b/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
@@ -9,6 +9,7 @@ import static org.junit.Assert.assertTrue;
 
 import org.torproject.descriptor.DescriptorParseException;
 import org.torproject.descriptor.DirectorySignature;
+import org.torproject.descriptor.NetworkStatusEntry;
 import org.torproject.descriptor.RelayNetworkStatusVote;
 
 import org.junit.Rule;
@@ -717,9 +718,12 @@ public class RelayNetworkStatusVoteImplTest {
 assertTrue(vote.getKnownFlags().contains("Running"));
 assertEquals(3, (int) vote.getConsensusParams().get(
 "CircuitPriorityHalflifeMsec"));
+NetworkStatusEntry nse = vote.getStatusEntry(
+"00343A8024F70E214728F0C5AF7ACE0C1508F073");
 assertEquals("Tor 0.2.1.29 (r8e9b25e6c7a2e70c)",
-vote.getStatusEntry("00343A8024F70E214728F0C5AF7ACE0C1508F073")
-.getVersion());
+nse.getVersion());
+assertTrue(nse.getMicrodescriptorDigestsSha256Base64().contains(
+"9ciEx9t0McXk9A06I7qwN7pxuNOdpCP64RV/6cx2Zkc"));
 assertEquals(3, vote.getDirKeyCertificateVersion());
 assertEquals("80550987E1D626E3EBA5E5E75A458DE0626D088C",
 vote.getIdentity());



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


[tor-commits] [metrics-lib/master] Bump version to 1.9.0-dev.

2017-06-21 Thread karsten
commit cad14ead4c72744698ef013404f94dfe3842df0b
Author: Karsten Loesing 
Date:   Wed Jun 21 14:21:19 2017 +0200

Bump version to 1.9.0-dev.
---
 build.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.xml b/build.xml
index 18ba365..0de365c 100644
--- a/build.xml
+++ b/build.xml
@@ -6,7 +6,7 @@
 
 
 
-  
+  
   
   
   

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


[tor-commits] [metrics-lib/release] Prepare for 1.9.0 release.

2017-06-21 Thread karsten
commit 3c9845aa4d96b2e5da6cd640c2704dd42e9f
Author: Karsten Loesing 
Date:   Tue Jun 20 22:36:58 2017 +0200

Prepare for 1.9.0 release.
---
 CHANGELOG.md | 2 +-
 build.xml| 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95cd851..98728b1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-# Changes in version 1.9.0 - 2017-06-??
+# Changes in version 1.9.0 - 2017-06-21
 
  * Major changes
- Simplify DescriptorReader by returning Descriptor instances
diff --git a/build.xml b/build.xml
index d5aaa8f..18ba365 100644
--- a/build.xml
+++ b/build.xml
@@ -6,7 +6,7 @@
 
 
 
-  
+  
   
   
   

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


[tor-commits] [metrics-lib/release] Rename two parse* methods to verify*.

2017-06-21 Thread karsten
commit 0236dc77715c272e7201e6111b98fbe4af747a4b
Author: Karsten Loesing 
Date:   Mon Jun 19 11:42:18 2017 +0200

Rename two parse* methods to verify*.
---
 .../torproject/descriptor/impl/ExtraInfoDescriptorImpl.java |  2 +-
 .../org/torproject/descriptor/impl/MicrodescriptorImpl.java |  4 ++--
 .../torproject/descriptor/impl/NetworkStatusEntryImpl.java  |  6 +++---
 .../java/org/torproject/descriptor/impl/ParseHelper.java| 13 +++--
 .../torproject/descriptor/impl/ServerDescriptorImpl.java|  4 ++--
 5 files changed, 19 insertions(+), 10 deletions(-)

diff --git 
a/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java 
b/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
index 0d67af9..ca7d376 100644
--- a/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
@@ -828,7 +828,7 @@ public abstract class ExtraInfoDescriptorImpl extends 
DescriptorImpl
 if (partsNoOpt.length != 2) {
   throw new DescriptorParseException("Illegal line '" + line + "'.");
 }
-ParseHelper.parseThirtyTwoByteBase64String(line, partsNoOpt[1]);
+ParseHelper.verifyThirtyTwoByteBase64String(line, partsNoOpt[1]);
 this.setDigestSha256Base64(partsNoOpt[1]);
   }
 
diff --git 
a/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java 
b/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java
index 65c20d4..c436120 100644
--- a/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java
@@ -198,11 +198,11 @@ public class MicrodescriptorImpl extends DescriptorImpl
 } else {
   switch (parts[1]) {
 case "ed25519":
-  ParseHelper.parseThirtyTwoByteBase64String(line, parts[2]);
+  ParseHelper.verifyThirtyTwoByteBase64String(line, parts[2]);
   this.ed25519Identity = parts[2];
   break;
 case "rsa1024":
-  ParseHelper.parseTwentyByteBase64String(line, parts[2]);
+  ParseHelper.verifyTwentyByteBase64String(line, parts[2]);
   this.rsa1024Identity = parts[2];
   break;
 default:
diff --git 
a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java 
b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
index 337f0b2..64c688e 100644
--- a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
@@ -266,11 +266,11 @@ public class NetworkStatusEntryImpl implements 
NetworkStatusEntry {
   this.microdescriptorDigests = new HashSet<>();
 }
 if (parts.length == 2) {
-  ParseHelper.parseThirtyTwoByteBase64String(line, parts[1]);
+  ParseHelper.verifyThirtyTwoByteBase64String(line, parts[1]);
   this.microdescriptorDigests.add(parts[1]);
 } else if (parts.length == 3 && parts[2].length() > 7) {
   /* 7 == "sha256=".length() */
-  ParseHelper.parseThirtyTwoByteBase64String(line,
+  ParseHelper.verifyThirtyTwoByteBase64String(line,
   parts[2].substring(7));
   this.microdescriptorDigests.add(parts[2].substring(7));
 }
@@ -283,7 +283,7 @@ public class NetworkStatusEntryImpl implements 
NetworkStatusEntry {
 } else if ("none".equals(parts[2])) {
   this.masterKeyEd25519 = "none";
 } else {
-  ParseHelper.parseThirtyTwoByteBase64String(line, parts[2]);
+  ParseHelper.verifyThirtyTwoByteBase64String(line, parts[2]);
   this.masterKeyEd25519 = parts[2];
 }
   }
diff --git a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java 
b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java
index dec33f5..1c7aa93 100644
--- a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java
+++ b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java
@@ -21,6 +21,15 @@ import java.util.regex.Pattern;
 
 import javax.xml.bind.DatatypeConverter;
 
+/**
+ * Parse helper for descriptor contents.
+ *
+ * Naming convention: methods starting with {@code parse} return valid and
+ * sometimes changed data items (e.g. string to port int), methods starting 
with
+ * {@code verify} only check data items without returning them, and methods
+ * starting with {@code convert} return checked and explicitly changed data
+ * items (e.g. base64 to hex encoding).
+ */
 public class ParseHelper {
 
   private static Pattern keywordPattern = Pattern.compile("^[A-Za-z0-9-]+$");
@@ -281,7 +290,7 @@ public class ParseHelper {
   private static Pattern twentyByteBase64Pattern =
   Pattern.compile("^[0-9a-zA-Z+/]{27}$");
 
-  protected static void parseTwentyByteBase64String(String line,
+  protected static void verifyTwentyByteBase64String(String line,
   String base64String) throws DescriptorParseException {
 convertTwentyByteBase64StringToHex(line, base64String);
 

[tor-commits] [metrics-lib/release] Change encoding of microdescriptor digests in network status entries.

2017-06-21 Thread karsten
commit de9600a5dc937c4c453ed261266f38f21978f61e
Author: Karsten Loesing 
Date:   Sat Jun 17 21:20:01 2017 +0200

Change encoding of microdescriptor digests in network status entries.

Fixes #22640.
---
 CHANGELOG.md   |  8 
 .../java/org/torproject/descriptor/NetworkStatusEntry.java | 12 ++--
 .../torproject/descriptor/impl/NetworkStatusEntryImpl.java | 14 +++---
 .../java/org/torproject/descriptor/impl/ParseHelper.java   | 14 --
 4 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 409d0e8..e79811a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+# Changes in version 1.9.0 - 2017-06-??
+
+ * Minor changes
+   - Fix a bug where NetworkStatusEntry's getMicrodescriptorDigests()
+ and getMicrodescriptorDigestsSha256Base64() return hex strings
+ rather than base64 strings.
+
+
 # Changes in version 1.8.2 - 2017-06-16
 
  * Medium changes
diff --git a/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java 
b/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java
index c59eab9..9c5dae5 100644
--- a/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java
+++ b/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java
@@ -89,9 +89,9 @@ public interface NetworkStatusEntry {
   public int getDirPort();
 
   /**
-   * Return the (possibly empty) set of microdescriptor digests if the
-   * containing network status is a vote or microdesc consensus, or null
-   * otherwise.
+   * Return the (possibly empty) set of microdescriptor digests, encoded as 43
+   * base64 characters without padding characters, if the containing network
+   * status is a vote or microdesc consensus, or null otherwise.
*
* @deprecated Renamed to {@link #getMicrodescriptorDigestsSha256Base64()}.
*
@@ -100,9 +100,9 @@ public interface NetworkStatusEntry {
   public Set getMicrodescriptorDigests();
 
   /**
-   * Return the (possibly empty) set of microdescriptor digests if the
-   * containing network status is a vote or microdesc consensus, or null
-   * otherwise.
+   * Return the (possibly empty) set of microdescriptor digests, encoded as 43
+   * base64 characters without padding characters, if the containing network
+   * status is a vote or microdesc consensus, or null otherwise.
*
* @since 1.7.0
*/
diff --git 
a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java 
b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
index 987b530..337f0b2 100644
--- a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java
@@ -141,11 +141,11 @@ public class NetworkStatusEntryImpl implements 
NetworkStatusEntry {
   + "fewer space-separated elements than expected.");
 }
 this.nickname = ParseHelper.parseNickname(line, parts[1]);
-this.fingerprint = ParseHelper.parseTwentyByteBase64String(line,
+this.fingerprint = ParseHelper.convertTwentyByteBase64StringToHex(line,
 parts[2]);
 int descriptorOffset = 0;
 if (!this.microdescConsensus) {
-  this.descriptor = ParseHelper.parseTwentyByteBase64String(line,
+  this.descriptor = ParseHelper.convertTwentyByteBase64StringToHex(line,
   parts[3]);
   descriptorOffset = 1;
 }
@@ -266,13 +266,13 @@ public class NetworkStatusEntryImpl implements 
NetworkStatusEntry {
   this.microdescriptorDigests = new HashSet<>();
 }
 if (parts.length == 2) {
-  this.microdescriptorDigests.add(
-  ParseHelper.parseThirtyTwoByteBase64String(line, parts[1]));
+  ParseHelper.parseThirtyTwoByteBase64String(line, parts[1]);
+  this.microdescriptorDigests.add(parts[1]);
 } else if (parts.length == 3 && parts[2].length() > 7) {
   /* 7 == "sha256=".length() */
-  this.microdescriptorDigests.add(
-  ParseHelper.parseThirtyTwoByteBase64String(line,
-  parts[2].substring(7)));
+  ParseHelper.parseThirtyTwoByteBase64String(line,
+  parts[2].substring(7));
+  this.microdescriptorDigests.add(parts[2].substring(7));
 }
   }
 
diff --git a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java 
b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java
index 31454e5..dec33f5 100644
--- a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java
+++ b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java
@@ -281,7 +281,12 @@ public class ParseHelper {
   private static Pattern twentyByteBase64Pattern =
   Pattern.compile("^[0-9a-zA-Z+/]{27}$");
 
-  protected static String parseTwentyByteBase64String(String line,
+  protected static void parseTwentyByteBase64String(String line,
+  String base64String) throws DescriptorParseException {
+convertTwentyByteBase64StringToHex(line, base64String);
+  }
+
+  protected static String c

[tor-commits] [metrics-lib/release] Bump version to 1.8.2-dev.

2017-06-21 Thread karsten
commit 59dc55fbe1b3c8afa7174e8b6b5f868d92e5c921
Author: Karsten Loesing 
Date:   Fri Jun 16 17:03:41 2017 +0200

Bump version to 1.8.2-dev.
---
 build.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.xml b/build.xml
index d755932..d5aaa8f 100644
--- a/build.xml
+++ b/build.xml
@@ -6,7 +6,7 @@
 
 
 
-  
+  
   
   
   



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


[tor-commits] [metrics-lib/release] Make DescriptorFile obsolete.

2017-06-21 Thread karsten
commit 1062da637f6f55313f52191314f7fb939355af23
Author: Karsten Loesing 
Date:   Wed Jun 7 17:52:02 2017 +0200

Make DescriptorFile obsolete.

This change simplifies the DescriptorReader interface and allows for
shorter and more concise application code.  The result is that
DescriptorReader returns Descriptor instances rather than
DescriptorFile instances containing Descriptors and accepts a maximum
queue size in Descriptors, DescriptorFile is deprecated, and
Descriptor contains a File reference to the descriptor file.
Implements #22141.

Related to this change, this commit introduces a new
UnparseableDescriptor to be returned by DescriptorParser and
DescriptorReader if a descriptor cannot be parsed, as opposed to
throwing a DescriptorParseException or skipping the entire descriptor
file (fixes #22139), respectively.

Also related to this change, DescriptorParser now returns an Iterable
instead of a List, which prepares parsing large descriptor files
descriptor by descriptor (will be tackled in #20395).
---
 CHANGELOG.md   |  13 ++
 .../java/org/torproject/descriptor/Descriptor.java |  19 +++
 .../org/torproject/descriptor/DescriptorFile.java  |   7 +
 .../torproject/descriptor/DescriptorParser.java|  19 +++
 .../torproject/descriptor/DescriptorReader.java|  56 +--
 .../descriptor/UnparseableDescriptor.java  |  44 ++
 .../descriptor/impl/BlockingIteratorImpl.java  |  13 +-
 .../impl/BridgeExtraInfoDescriptorImpl.java|   9 +-
 .../descriptor/impl/BridgeNetworkStatusImpl.java   |   7 +-
 .../descriptor/impl/BridgePoolAssignmentImpl.java  |   9 +-
 .../impl/BridgeServerDescriptorImpl.java   |   9 +-
 .../torproject/descriptor/impl/DescriptorImpl.java |  23 ++-
 .../descriptor/impl/DescriptorParserImpl.java  | 130 ++--
 .../descriptor/impl/DescriptorReaderImpl.java  | 164 -
 .../impl/DirectoryKeyCertificateImpl.java  |   9 +-
 .../torproject/descriptor/impl/ExitListImpl.java   |   7 +-
 .../descriptor/impl/ExtraInfoDescriptorImpl.java   |   9 +-
 .../descriptor/impl/MicrodescriptorImpl.java   |   7 +-
 .../descriptor/impl/NetworkStatusImpl.java |   7 +-
 .../descriptor/impl/RelayDirectoryImpl.java|  10 +-
 .../impl/RelayExtraInfoDescriptorImpl.java |   9 +-
 .../impl/RelayNetworkStatusConsensusImpl.java  |   9 +-
 .../descriptor/impl/RelayNetworkStatusImpl.java|   7 +-
 .../impl/RelayNetworkStatusVoteImpl.java   |   7 +-
 .../descriptor/impl/RelayServerDescriptorImpl.java |   9 +-
 .../descriptor/impl/ServerDescriptorImpl.java  |   7 +-
 .../descriptor/impl/TorperfResultImpl.java |  11 +-
 .../descriptor/impl/UnparseableDescriptorImpl.java |  40 +
 .../descriptor/impl/BridgeNetworkStatusTest.java   |   2 +-
 .../descriptor/impl/ConsensusBuilder.java  |   2 +-
 .../descriptor/impl/DescriptorImplTest.java|   1 -
 .../descriptor/impl/DescriptorParserImplTest.java  |   9 +-
 .../descriptor/impl/ExitListImplTest.java  |  10 +-
 .../impl/ExtraInfoDescriptorImplTest.java  |   8 +-
 .../descriptor/impl/MicrodescriptorImplTest.java   |   2 +-
 .../impl/RelayNetworkStatusConsensusImplTest.java  |   4 +-
 .../impl/RelayNetworkStatusImplTest.java   |   4 +-
 .../impl/RelayNetworkStatusVoteImplTest.java   |   3 +-
 .../descriptor/impl/ServerDescriptorImplTest.java  |   6 +-
 .../torproject/descriptor/impl/TestDescriptor.java |   4 +-
 .../descriptor/impl/TestServerDescriptor.java  |   8 +-
 .../descriptor/impl/TorperfResultImplTest.java |  10 +-
 42 files changed, 586 insertions(+), 157 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e79811a..44f1130 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
 # Changes in version 1.9.0 - 2017-06-??
 
+ * Major changes
+   - Simplify DescriptorReader by returning Descriptor instances
+ rather than DescriptorFile instances containing Descriptors,
+ deprecate DescriptorFile, and add a File reference to Descriptor.
+   - Introduce a new UnparseableDescriptor to be returned by
+ DescriptorParser and DescriptorReader if a descriptor cannot be
+ parsed, as opposed to throwing a DescriptorParseException or
+ skipping the entire descriptor file, respectively.
+
+ * Medium changes
+   - Let DescriptorParser return an Iterable instead of a List, which
+ prepares parsing large descriptor files descriptor by descriptor.
+
  * Minor changes
- Fix a bug where NetworkStatusEntry's getMicrodescriptorDigests()
  and getMicrodescriptorDigestsSha256Base64() return hex strings
diff --git a/src/main/java/org/torproject/descriptor/Descriptor.java 
b/src/main/java/org/torproject/descriptor/Descriptor.java
index be6e02f..fb511bf 100644
--- a/src/main/java/org/torproject/descriptor/Descriptor.java
+++ b/src/main/java/org/torproject/descripto

[tor-commits] [metrics-lib/release] Add new method to retrieve raw descriptor length.

2017-06-21 Thread karsten
commit a113feb2c4f195dbc607e3da8c5fc2be19a6d475
Author: Karsten Loesing 
Date:   Thu Jun 15 14:25:29 2017 +0200

Add new method to retrieve raw descriptor length.

When we switched from storing copies of byte[] to storing byte[]
references, offset, and length, getRawDescriptor() suddenly became
more expensive than before.  (Before that, copying bytes in the first
place was always expensive.)  If an application only calls
Descriptor#getRawDescriptorBytes() to learn the array length, there's
now a more efficient way to provide that information.
---
 CHANGELOG.md  |  3 +++
 src/main/java/org/torproject/descriptor/Descriptor.java   | 15 +++
 .../org/torproject/descriptor/impl/DescriptorImpl.java|  5 +
 3 files changed, 23 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 44f1130..95cd851 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,9 @@
  * Medium changes
- Let DescriptorParser return an Iterable instead of a List, which
  prepares parsing large descriptor files descriptor by descriptor.
+   - Add new method to retrieve the raw descriptor length, rather than
+ forcing applications to request (a copy of) raw descriptor bytes
+ only to determine the raw descriptor length.
 
  * Minor changes
- Fix a bug where NetworkStatusEntry's getMicrodescriptorDigests()
diff --git a/src/main/java/org/torproject/descriptor/Descriptor.java 
b/src/main/java/org/torproject/descriptor/Descriptor.java
index fb511bf..ca2a4cf 100644
--- a/src/main/java/org/torproject/descriptor/Descriptor.java
+++ b/src/main/java/org/torproject/descriptor/Descriptor.java
@@ -17,11 +17,26 @@ public interface Descriptor {
   /**
* Return the raw descriptor bytes.
*
+   * This method creates a new copy of raw descriptor bytes from a
+   * potentially larger byte array containing multiple descriptors.
+   * Applications that only want to learn about raw descriptor length in bytes
+   * should instead use {@link #getRawDescriptorLength()}.
+   *
* @since 1.0.0
*/
   public byte[] getRawDescriptorBytes();
 
   /**
+   * Return the raw descriptor length in bytes.
+   *
+   * Returns the exact same result as {@code 
getRawDescriptorBytes().length},
+   * but much more efficiently.
+   *
+   * @since 1.9.0
+   */
+  public int getRawDescriptorLength();
+
+  /**
* Return the (possibly empty) list of annotations in the format
* {@code "@key( value)*"}.
*
diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java 
b/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java
index d88b542..e0f94f0 100644
--- a/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java
+++ b/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java
@@ -41,6 +41,11 @@ public abstract class DescriptorImpl implements Descriptor {
*/
   protected int length;
 
+  @Override
+  public int getRawDescriptorLength() {
+return this.length;
+  }
+
   /**
* Optional reference to the descriptor file, if this descriptor was read 
from
* a descriptor file.



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


[tor-commits] [metrics-lib/master] Prepare for 1.9.0 release.

2017-06-21 Thread karsten
commit 3c9845aa4d96b2e5da6cd640c2704dd42e9f
Author: Karsten Loesing 
Date:   Tue Jun 20 22:36:58 2017 +0200

Prepare for 1.9.0 release.
---
 CHANGELOG.md | 2 +-
 build.xml| 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95cd851..98728b1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-# Changes in version 1.9.0 - 2017-06-??
+# Changes in version 1.9.0 - 2017-06-21
 
  * Major changes
- Simplify DescriptorReader by returning Descriptor instances
diff --git a/build.xml b/build.xml
index d5aaa8f..18ba365 100644
--- a/build.xml
+++ b/build.xml
@@ -6,7 +6,7 @@
 
 
 
-  
+  
   
   
   

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